Skip to content

Commit

Permalink
Merge pull request #10 in BUDC/concorel-frontend from feature/CONCORE…
Browse files Browse the repository at this point in the history
…L-95-c_09-tab-tasks-frontend to develop

* commit 'dc7ae10bb4c7c8025fa4893ef94bd4229f2699f2':
  CONCOREL-95: Make sure that active collapsible can be closed.
  CONCOREL-95: Add tabs-to-collapsible functionality with styles
  CONCOREL-95: Refactor accordion styles and structure to make it more reusable
  • Loading branch information
Marta Pieczyńska committed Jan 9, 2017
2 parents 13c95e7 + dc7ae10 commit 23a628a
Show file tree
Hide file tree
Showing 13 changed files with 424 additions and 64 deletions.
68 changes: 68 additions & 0 deletions source/assets/css/globals/_accordion_mixins.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
@mixin accordion-wrapper($radius: 5px, $marginBottom: 40px) {
border-radius: $radius;
overflow: hidden;
margin-bottom: $marginBottom;
}

@mixin accordion-trigger($padding: 15px) {
box-sizing: border-box;
color: $colorMetallicBlue;
background-color: $colorPaleGrey;
margin-bottom: 2px;
padding: $padding ($padding + 10px + 5px) $padding;
position: relative;
line-height: 1;
font-weight: $fontWeightBlack;
cursor: pointer;
transition: all 0.25s ease-in-out;

&:after {
content: ' ';
display: block;
position: absolute;
top: $padding + 3px;
right: $padding;
// transition: transform 0.4s ease; // Pie: temporarily off by designers request
@include iconDataurlStyles('triangle-arrow');
width: 10px;
}

&:hover,
&:focus {
color: $colorMetallicBlue;
background-color: $colorPaleGreyTwo;
}
}

@mixin accordion-trigger-active {
&,
&:hover,
&:focus {
background-color: $colorTangerine;
color: $colorWhite;
margin-bottom: 0;
}

&:after {
@include iconDataurlStyles('triangle-arrow', 'secondary');
width: 10px;
transform: rotate(-.5turn);
}
}

@mixin accordion-panel($innerMargin: 30px) {
max-height: 0;
overflow: hidden;
transition: max-height 0.6s cubic-bezier(0, 1, 0, 1);
box-sizing: border-box;
background-color: $colorWhite;

&-inner {
margin: $innerMargin;
}
}

@mixin accordion-panel-active {
max-height: 1000px;
transition: max-height 0.6s ease-in-out;
}
2 changes: 2 additions & 0 deletions source/assets/css/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@

// Basic styles
@import "../../modules/generalstyles/generalstyles";
@import "globals/accordion_mixins";

// Modules
@import "../../modules/button/button";
@import "../../modules/accordion/accordion";
@import "../../modules/tabs/tabs";
//*autoinsertmodule*

@media print {
Expand Down
2 changes: 2 additions & 0 deletions source/assets/js/helpers/estaticoapp.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import $ from '../../../../node_modules/jquery/dist/jquery';

import Accordion from '../../../modules/accordion/accordion';
import Tabs from '../../../modules/tabs/tabs';
/* autoinsertmodulereference */

class EstaticoApp {
Expand All @@ -19,6 +20,7 @@ class EstaticoApp {
// Module registry - mapping module name (used in data-init) to module Class
this.modules = {};
this.modules.accordion = Accordion;
this.modules.tabs = Tabs;
/* autoinsertmodule */

// expose initModule function
Expand Down
3 changes: 3 additions & 0 deletions source/assets/js/helpers/mediaqueries.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
*/

import $ from '../../../../node_modules/jquery/dist/jquery';
/*jshint ignore:start*/
import WindowEventListener from './events';
/*jshint ignore:end*/

class MediaQuery {
constructor() {
Expand Down
2 changes: 1 addition & 1 deletion source/modules/.scaffold/scaffold.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* @author
* @copyright
*/
import EstaticoModule from '../../../assets/js/helpers/module';
import EstaticoModule from '../../assets/js/helpers/module';

class {{className}} extends EstaticoModule {

Expand Down
8 changes: 4 additions & 4 deletions source/modules/accordion/accordion.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
{{/if}}
<ul class="accordion__wrapper">
{{#each sections}}
<li class="accordion__section{{#if open}} accordion__section--is-open{{/if}}" data-accordion="section">
<div class="accordion__title" data-accordion="section-title">{{title}} </div>
<div class="accordion__content">
<div class="accordion__content-wrap">{{{contents}}}</div>
<li class="accordion__section{{#if open}} accordion__section--is-active{{/if}}" data-accordion="section">
<div class="accordion__trigger" data-accordion="section-title">{{title}} </div>
<div class="accordion__panel">
<div class="accordion__panel-inner">{{{contents}}}</div>
</div>
</li>
{{/each}}
Expand Down
2 changes: 1 addition & 1 deletion source/modules/accordion/accordion.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Accordion extends EstaticoModule {
sectionTitle: '[data-' + Accordion.name + '="section-title"]'
},
stateClasses: {
isOpen: 'accordion__section--is-open'
isOpen: 'accordion__section--is-active'
}
};

Expand Down
72 changes: 14 additions & 58 deletions source/modules/accordion/accordion.scss
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ $accordionPaddingDesktop: 30px;

.accordion__wrapper {
@include resetList;
border-radius: 5px;
overflow: hidden;
margin-bottom: 40px;
@include accordion-wrapper;
}

.accordion__header {
Expand All @@ -14,36 +12,14 @@ $accordionPaddingDesktop: 30px;
@include fontsizeFluid($min: 22px, $max: 34px);
}

.accordion__title {
box-sizing: border-box;
color: $colorMetallicBlue;
background-color: $colorPaleGrey;
margin-bottom: 2px;
padding: $accordionPaddingMobile ($accordionPaddingMobile + 10px + 5px) $accordionPaddingMobile $accordionPaddingMobile;
position: relative;
line-height: 1;
font-weight: $fontWeightBlack;
cursor: pointer;
transition: all 0.25s ease-in-out;
.accordion__trigger{
@include accordion-trigger;

&:after {
content: ' ';
display: block;
position: absolute;
top: $accordionPaddingMobile + 3px;
right: $accordionPaddingMobile;
// transition: transform 0.4s ease; // Pie: temporarily off by designers request
@include iconDataurlStyles('triangle-arrow');
width: 10px;
}

&:hover {
background-color: $colorPaleGreyTwo;
.accordion__section--is-active & {
@include accordion-trigger-active;
}

.accordion__section:last-child &{
margin-bottom: 0;
}

@include mq($from: 'medium') {
padding: $accordionPaddingDesktop;
Expand All @@ -57,46 +33,26 @@ $accordionPaddingDesktop: 30px;
}
}

.accordion__content {
max-height: 0;
overflow: hidden;
transition: max-height 0.6s cubic-bezier(0, 1, 0, 1);
box-sizing: border-box;
background-color: $colorWhite;
}
.accordion__panel {
@include accordion-panel;

.accordion__content-wrap {
margin: 30px;
.accordion__section--is-active & {
@include accordion-panel-active;
}
}

// Variants

.accordion--dark {
.accordion__title {
.accordion__trigger {
background-color: $colorPaleGreyTwo;
}

.accordion__title:hover {
.accordion__trigger:hover {
background-color: $colorCloudyBlue;
}
}

.accordion__section--is-open {
.accordion__content {
max-height: 1000px;
transition: max-height 0.6s ease-in-out;
}

.accordion__title,
.accordion__title:hover {
background-color: $colorTangerine;
color: $colorWhite;
margin-bottom: 0;
}

.accordion__title:after {
@include iconDataurlStyles('triangle-arrow', 'secondary');
width: 10px;
transform: rotate(-.5turn);
.accordion__section--is-active .accordion__trigger {
@include accordion-trigger-active;
}
}
65 changes: 65 additions & 0 deletions source/modules/tabs/tabs.data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
'use strict';

var _ = require('lodash'),
requireNew = require('require-new'),
dataHelper = require('../../../helpers/data.js'),
defaultData = requireNew('../../data/default.data.js');

var data = _.merge(defaultData, {
meta: {
title: 'Tabs',
className: 'Tabs',
code: dataHelper.getTemplateCode('tabs.hbs'),
documentation: dataHelper.getDocumentation('tabs.md'),
centered: true
},
tabs: [
{
title: 'PRIVAT',
id: 'tab01',
panelId: '#panel01',
open: false
},
{
title: 'HALBPRIVAT',
id: 'tab02',
panelId: '#panel02',
open: true
},
{
title: 'Libero',
id: 'tab03',
panelId: '#panel03',
open: false
},
{
title: 'Allgemein',
id: 'tab04',
panelId: '#panel04',
open: false
}
],
panels: [
{
id: 'panel01',
contents: '</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. <a href="#">Vestibulum blandit</a>, enim quis faucibus luctus, erat arcu vestibulum odio, vitae efficitur nulla dui eu arcu. Pellentesque sagittis augue eget sem volutpat, ac porttitor velit aliquam. Donec placerat risus est, non facilisis ligula interdum ac. Curabitur et neque malesuada, porta sem ac, gravida enim. Vivamus in orci pharetra, porttitor ex nec, pellentesque nisl. Aliquam auctor faucibus congue. </p>'
},
{
id: 'panel02',
open: true,
contents: '<h5>Praesent a maximus tellus</h5> <p>Aenean sed massa mattis, eleifend massa non, aliquam justo. Cras ultrices metus id elit volutpat pellentesque.</p> <p>Cras nec euismod risus. Suspendisse risus purus, commodo eu lacus sed, porttitor dapibus nulla. Ut risus nibh, bibendum in rutrum sed, mollis ut nunc. Aliquam et metus placerat, vulputate mauris vel, dignissim tellus. Mauris mollis metus at lorem pellentesque suscipit.</p>'
},
{
id: 'panel03',
contents: '<p>Quisque ut rutrum nisi. Aliquam tincidunt malesuada lorem finibus aliquet. Sed pharetra neque sed eros sollicitudin fermentum. Nulla consectetur augue dolor, non tincidunt nisi convallis sed.</p>'
},
{
id: 'panel04',
contents: '<p>Pellentesque sagittis augue eget sem volutpat, ac porttitor velit aliquam. Donec placerat risus est, non facilisis ligula interdum ac. Curabitur et neque malesuada, porta sem ac, gravida enim. Vivamus in orci pharetra, porttitor ex nec, pellentesque nisl. Aliquam auctor faucibus congue. </p>'

}

]
});

module.exports = data;
25 changes: 25 additions & 0 deletions source/modules/tabs/tabs.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<div class="tabs" data-init="tabs">
{{#if header}}
<h4 class="tabs__header">
{{header}}
</h4>
{{/if}}

<ul class="tabs__controls" data-tabs="controls">
{{#each tabs}}
<li class="tabs__trigger-wrapper">
<a class="tabs__trigger{{#if open}} tabs__trigger--is-active{{/if}}" id={{id}} href={{panelId}} data-tabs="trigger">{{title}}</a>
</li>
{{/each}}
</ul>

<div class="tabs__panels" data-tabs="panels">
{{#each panels}}
<div class="tabs__panel" id={{id}}>
<div class="tabs__panel-inner">
{{{contents}}}
</div>
</div>
{{/each}}
</div>
</div>

0 comments on commit 23a628a

Please sign in to comment.