JSFiddle - React, Tailwind, and code Playground
by sheshu036
HTML
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">
Panel 1</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-minus"></i></span>
</div>
<div class="panel-body">
Panel content</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">
Panel 2</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-minus"></i></span>
</div>
<div class="panel-body">
Panel content</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
Panel 3</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-minus"></i></span>
</div>
<div class="panel-body">
Panel content</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-warning">
<div class="panel-heading">
<h3 class="panel-title">
Panel 4</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-minus"></i></span>
</div>
<div class="panel-body">
Panel content</div>
</div>
</div>
</div>
<h4>
Full Clickable Panel Heading</h4>
<div class="row">
<div class="col-md-6">
<div...
CSS
.clickable
{
cursor: pointer;
}
.clickable .glyphicon
{
background: rgba(0, 0, 0, 0.15);
display: inline-block;
padding: 6px 12px;
border-radius: 4px
}
.panel-heading span
{
margin-top: -23px;
font-size: 15px;
margin-right: -9px;
}
a.clickable { color: inherit; }
a.clickable:hover { text-decoration:none; }
JavaScript
$(document).on('click', '.panel-heading span.clickable', function (e) {
var $this = $(this);
if (!$this.hasClass('panel-collapsed')) {
$this.parents('.panel').find('.panel-body').slideUp();
$this.addClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-minus').addClass('glyphicon-plus');
} else {
$this.parents('.panel').find('.panel-body').slideDown();
$this.removeClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-plus').addClass('glyphicon-minus');
}
});
$(document).on('click', '.panel div.clickable', function (e) {
var $this = $(this);
if (!$this.hasClass('panel-collapsed')) {
$this.parents('.panel').find('.panel-body').slideUp();
$this.addClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-minus').addClass('glyphicon-plus');
} else {
$this.parents('.panel').find('.panel-body').slideDown();
$this.removeClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-plus').addClass('glyphicon-minus');
}
});
$(document).ready(function () {
$('.panel-heading span.clickable').click();
$('.panel div.clickable').click();
});