Skip to content
This repository was archived by the owner on Feb 5, 2025. It is now read-only.

Commit 3f7b7b8

Browse files
jeff-phillips-18dgutride
authored andcommitted
feat(fixed-accordion): Add a Flexbox version of Fixed Height Accordion (#1123)
1 parent a35753f commit 3f7b7b8

File tree

8 files changed

+196
-0
lines changed

8 files changed

+196
-0
lines changed

src/js/patternfly-functions-fixed-heights.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,26 @@
8484
$(window).on('resize', setCollapseHeights);
8585

8686
};
87+
88+
$.fn.initFixedAccordion = function () {
89+
var fixedAccordion = this, initOpen;
90+
91+
fixedAccordion.on('show.bs.collapse','.collapse', function (event) {
92+
$(event.target.parentNode).addClass('panel-open');
93+
});
94+
95+
fixedAccordion.on('hide.bs.collapse','.collapse', function (event) {
96+
$(event.target.parentNode).removeClass('panel-open');
97+
});
98+
99+
fixedAccordion.find('.panel').each(function (index, item) {
100+
$(item).removeClass('panel-open');
101+
});
102+
103+
initOpen = $(fixedAccordion.find('.collapse.in'))[0];
104+
if (initOpen) {
105+
$(initOpen.parentNode).addClass('panel-open');
106+
}
107+
};
108+
87109
}(jQuery));

src/less/accordion.less

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.fixed-height-accordion-pf {
2+
display: flex;
3+
flex-direction: column;
4+
5+
.panel {
6+
display: flex;
7+
flex-direction: column;
8+
9+
&.panel-open {
10+
flex: 1;
11+
}
12+
13+
.collapse.in {
14+
flex: 1;
15+
overflow-y: auto;
16+
}
17+
}
18+
}

src/less/patternfly-additions.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
@import "variables.less";
2929
@import "bootstrap-mixin-overrides.less";
3030
@import "mixins.less";
31+
@import "accordion.less";
3132
@import "about-modal.less";
3233
@import "application-launcher.less";
3334
@import "blank-slate.less";
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.fixed-height-accordion-pf {
2+
display: flex;
3+
flex-direction: column;
4+
5+
.panel {
6+
display: flex;
7+
flex-direction: column;
8+
9+
&.panel-open {
10+
flex: 1;
11+
}
12+
13+
.collapse.in {
14+
flex: 1;
15+
overflow-y: auto;
16+
}
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.fixed-height-accordion-pf {
2+
display: flex;
3+
flex-direction: column;
4+
5+
.panel {
6+
display: flex;
7+
flex-direction: column;
8+
9+
&.panel-open {
10+
flex: 1;
11+
}
12+
13+
.collapse.in {
14+
flex: 1;
15+
overflow-y: auto;
16+
}
17+
}
18+
}

src/sass/converted/rcue/_patternfly-additions.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
@import 'variables';
2929
@import 'bootstrap-mixin-overrides';
3030
@import 'mixins';
31+
@import 'accordion';
3132
@import 'about-modal';
3233
@import 'application-launcher';
3334
@import 'blank-slate';

src/sass/static/_patternfly.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282

8383
// PatternFly
8484
@import 'patternfly/mixins';
85+
@import "patternfly/accordion";
8586
@import "patternfly/alerts";
8687
@import "patternfly/badges";
8788
@import "patternfly/breadcrumbs";

tests/pages/accordions.html

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,126 @@ <h4 class="panel-title">
301301
</div>
302302
</div>
303303
</div>
304+
<div class="col-md-4 col-sm-6">
305+
<h2>FlexBox Fixed Height</h2>
306+
<div class="panel-group fixed-height-accordion-pf" id="flex-box-fixed-accordion" style="height: 350px;">
307+
<div class="panel panel-default">
308+
<div class="panel-heading" data-component="collapse-heading">
309+
<h4 class="panel-title">
310+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseOne">
311+
Lorem ipsum
312+
</a>
313+
</h4>
314+
</div>
315+
<div id="flexFixedCollapseOne" class="panel-collapse collapse in">
316+
<div class="panel-body">
317+
Praesent sagittis est et arcu fringilla placerat. Cras erat ante, dapibus non mauris ac, volutpat sollicitudin ligula. Morbi gravida nisl vel risus tempor, sit amet luctus erat tempus. Curabitur blandit sem non pretium bibendum. Donec eleifend non turpis vitae vestibulum. Vestibulum ut sem ac nunc posuere blandit sed porta lorem. Cras rutrum velit vel leo iaculis imperdiet.
318+
</div>
319+
</div>
320+
</div>
321+
<div class="panel panel-default">
322+
<div class="panel-heading" data-component="collapse-heading">
323+
<h4 class="panel-title">
324+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseTwo" class="collapsed">
325+
Dolor sit amet
326+
</a>
327+
</h4>
328+
</div>
329+
<div id="flexFixedCollapseTwo" class="panel-collapse collapse">
330+
<div class="panel-body">
331+
Donec consequat dignissim neque, sed suscipit quam egestas in. Fusce bibendum laoreet lectus commodo interdum. Vestibulum odio ipsum, tristique et ante vel, iaculis placerat nulla. Suspendisse iaculis urna feugiat lorem semper, ut iaculis risus tempus.
332+
</div>
333+
</div>
334+
</div>
335+
<div class="panel panel-default">
336+
<div class="panel-heading" data-component="collapse-heading">
337+
<h4 class="panel-title">
338+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseThree" class="collapsed">
339+
Consectetur
340+
</a>
341+
</h4>
342+
</div>
343+
<div id="flexFixedCollapseThree" class="panel-collapse collapse">
344+
<div class="panel-body">
345+
Curabitur nisl quam, interdum a venenatis a, consequat a ligula. Nunc nec lorem in erat rhoncus lacinia at ac orci. Sed nec augue congue, vehicula justo quis, venenatis turpis. Nunc quis consectetur purus. Nam vitae viverra lacus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu augue felis. Maecenas in dignissim purus, quis pulvinar lectus. Vivamus euismod ultrices diam, in mattis nibh.
346+
</div>
347+
</div>
348+
</div>
349+
<div class="panel panel-default">
350+
<div class="panel-heading" data-component="collapse-heading">
351+
<h4 class="panel-title">
352+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseFour" class="collapsed">
353+
Adipisicing elit
354+
</a>
355+
</h4>
356+
</div>
357+
<div id="flexFixedCollapseFour" class="panel-collapse collapse">
358+
<div class="panel-body">
359+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div>
360+
</div>
361+
</div>
362+
<div class="panel panel-default">
363+
<div class="panel-heading" data-component="collapse-heading">
364+
<h4 class="panel-title">
365+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseFive" class="collapsed">
366+
Suspendisse lectus tortor
367+
</a>
368+
</h4>
369+
</div>
370+
<div id="flexFixedCollapseFive" class="panel-collapse collapse">
371+
<div class="panel-body">
372+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit.
373+
</div>
374+
</div>
375+
</div>
376+
<div class="panel panel-default">
377+
<div class="panel-heading" data-component="collapse-heading">
378+
<h4 class="panel-title">
379+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseSix" class="collapsed">
380+
Velit mauris
381+
</a>
382+
</h4>
383+
</div>
384+
<div id="flexFixedCollapseSix" class="panel-collapse collapse">
385+
<div class="panel-body">
386+
Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna.
387+
</div>
388+
</div>
389+
</div>
390+
<div class="panel panel-default">
391+
<div class="panel-heading" data-component="collapse-heading">
392+
<h4 class="panel-title">
393+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseSeven" class="collapsed">
394+
Aliquam convallis
395+
</a>
396+
</h4>
397+
</div>
398+
<div id="flexFixedCollapseSeven" class="panel-collapse collapse">
399+
<div class="panel-body">
400+
Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus. Curabitur eu amet.
401+
</div>
402+
</div>
403+
</div>
404+
<div class="panel panel-default">
405+
<div class="panel-heading" data-component="collapse-heading">
406+
<h4 class="panel-title">
407+
<a data-toggle="collapse" data-parent="#flex-box-fixed-accordion" href="#flexFixedCollapseEight" class="collapsed">
408+
Vulputate dictum
409+
</a>
410+
</h4>
411+
</div>
412+
<div id="flexFixedCollapseEight" class="panel-collapse collapse">
413+
<div class="panel-body">
414+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at ante. Mauris eleifend, quam a vulputate dictum, massa quam dapibus leo, eget vulputate orci purus ut lorem. In fringilla mi in ligula. Pellentesque aliquam quam vel dolor. Nunc adipiscing. Sed quam odio, tempus ac, aliquam molestie, varius ac, tellus. Vestibulum ut nulla aliquam risus rutrum interdum. Pellentesque lorem. Curabitur sit amet erat quis risus feugiat viverra. Pellentesque augue justo, sagittis et, lacinia at, venenatis non, arcu. Nunc nec libero. In cursus dictum risus. Etiam tristique nisl a nulla. Ut a orci. Curabitur dolor nunc, egestas at, accumsan at, malesuada nec, magna.
415+
</div>
416+
</div>
417+
</div>
418+
</div>
419+
</div><!--/col-->
304420
</div>
305421
<script>
306422
$(document).ready(function() {
307423
$('#fixed-accordion').initCollapseHeights();
424+
$('#flex-box-fixed-accordion').initFixedAccordion();
308425
});
309426
</script>

0 commit comments

Comments
 (0)