UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

283 lines 9.97 kB
/* * Accordion component * */ /* * Utilities */ .dnb-accordion { --accordion-color-text: var(--accordion-color-text--default); --accordion-color-description: var( --accordion-color-description--default ); --accordion-color-bg: var(--accordion-color-bg--default); --accordion-color-border: var(--accordion-color-border--default); --accordion-border-width: var( --accordion-border-width--default, 0.0625rem ); --accordion-border-radius: 0.5rem; --accordion-easing: var(--easing-default); --accordion-border-inset: var(--accordion-border-inset--default, inset); --accordion-header-margin-vertical: 1.25rem; --accordion-header-margin-vertical--description: 0.75rem; --accordion-header-wrapper-margin: 1rem; --accordion-header-wrapper-margin--icon-right: 1rem; --accordion-header-icon-gutter: 1rem; --accordion-header-icon-margin: 1rem; --accordion-header-icon-alignment: flex-start; --accordion-title-font-weight: var(--font-weight-basis); --accordion-title-font-weight--expanded: var(--font-weight-medium); --accordion-content-margin: 1rem 0 0 0; --accordion-content-padding: 0; position: relative; display: flex; flex-direction: column; font-size: var(--font-size-small); line-height: var(--line-height-basis); } .dnb-accordion__header { display: flex; align-items: center; cursor: pointer; outline: none; color: var(--accordion-color-text, var(--accordion-color-text--default)); background-color: var(--accordion-color-bg); box-shadow: var(--ui-accordion-box-shadow); border: none; border-radius: var(--accordion-border-radius); } html:not([data-whatintent=touch]) .dnb-accordion__header:hover[disabled] { cursor: not-allowed; } html:not([data-whatintent=touch]) .dnb-accordion__header:hover:not([disabled]) { --accordion-color-text: var(--accordion-color-text--hover); --accordion-color-description: var( --accordion-color-description--hover ); --accordion-color-bg: var(--accordion-color-bg--hover); --accordion-color-border: var(--accordion-color-border--hover); --accordion-border-width: var(--accordion-border-width--hover); --accordion-border-inset: var(--accordion-border-inset--hover); } html:not([data-whatintent=touch]) .dnb-accordion__header--after-click:hover[disabled] { cursor: not-allowed; } html:not([data-whatintent=touch]) .dnb-accordion__header--after-click:hover:not([disabled]) { --accordion-color-text: var(--accordion-color-text--after-click); --accordion-color-description: var( --accordion-color-description--after-click ); --accordion-color-bg: var(--accordion-color-bg--after-click); --accordion-color-border: var( --accordion-color-border--after-click ); } .dnb-accordion__header:active[disabled], html:not([data-whatintent=touch]) .dnb-accordion__header:active[disabled] { cursor: not-allowed; } .dnb-accordion__header:active:not([disabled]), html:not([data-whatintent=touch]) .dnb-accordion__header:active:not([disabled]) { --accordion-color-text: var(--accordion-color-text--active); --accordion-color-description: var( --accordion-color-description--active ); --accordion-color-bg: var(--accordion-color-bg--active); --accordion-color-border: var(--accordion-color-border--active); --accordion-border-width: var(--accordion-border-width--active); --accordion-border-inset: var(--accordion-border-inset--active); } html:not([data-whatinput=touch]) .dnb-accordion__header:focus-visible[disabled] { cursor: not-allowed; } html:not([data-whatinput=touch]) .dnb-accordion__header:focus-visible:not([disabled]) { --accordion-color-text: var(--accordion-color-text--focus); --accordion-color-description: var( --accordion-color-description--focus ); --accordion-color-bg: var(--accordion-color-bg--focus); --accordion-color-border: var(--accordion-color-border--focus); --accordion-border-width: var(--accordion-border-width--focus); --accordion-border-inset: var(--accordion-border-inset--focus); } .dnb-accordion__header[disabled] { --accordion-color-text: var(--accordion-color-text--disabled); --accordion-color-bg: var(--accordion-color-bg--disabled); --accordion-color-border: var(--accordion-color-border--disabled); --accordion-color-description: var( --accordion-color-description--disabled ); } .dnb-accordion__header * { pointer-events: none; } .dnb-accordion__header--prevent-click { pointer-events: none; } .dnb-accordion__header__wrapper { display: flex; flex-direction: column; width: 100%; margin: var(--accordion-header-margin-vertical) var(--accordion-header-wrapper-margin) var(--accordion-header-margin-vertical) 0; } .dnb-accordion__header--description .dnb-accordion__header__wrapper { margin-top: var(--accordion-header-margin-vertical--description); margin-bottom: var(--accordion-header-margin-vertical--description); } .dnb-accordion__header__container { margin: 0 1rem; } .dnb-accordion__header__icon { align-self: var(--accordion-header-icon-alignment); margin: var(--accordion-header-margin-vertical) var(--accordion-header-icon-gutter) var(--accordion-header-margin-vertical) var(--accordion-header-icon-margin); font-size: var(--font-size-small); line-height: var(--line-height-small); transition: transform 400ms var(--accordion-easing); } @media (prefers-reduced-motion: reduce) { .dnb-accordion__header__icon { transition-duration: 0.01ms; } } .dnb-accordion__header--description .dnb-accordion__header__icon { margin-top: var(--accordion-header-margin-vertical--description); } .dnb-accordion__header--icon-right { justify-content: space-between; } .dnb-accordion__header--icon-right .dnb-accordion__header__icon { margin-right: var(--accordion-header-icon-margin); margin-left: var(--accordion-header-icon-gutter); order: 3; } .dnb-accordion__header--icon-right .dnb-accordion__header__container { order: 1; } .dnb-accordion__header--icon-right .dnb-accordion__header__wrapper { order: 2; margin-right: 0; margin-left: var(--accordion-header-wrapper-margin--icon-right); } .dnb-accordion__header--icon-right .dnb-accordion__header__wrapper + .dnb-accordion__header__container { margin-right: 0; } .dnb-accordion__header--icon-right .dnb-accordion__header__container + .dnb-accordion__header__wrapper { margin-left: 0; } html:not([data-whatintent=touch]) .dnb-accordion__header--outlined:hover[disabled] { cursor: not-allowed; } html:not([data-whatintent=touch]) .dnb-accordion__header--outlined:hover:not([disabled]) { z-index: 1; } .dnb-accordion__header--outlined, .dnb-accordion__header--filled { --ui-accordion-box-shadow: var( --accordion-border-inset, var(--accordion-border-inset--default) ) 0 0 0 var( --accordion-border-width, var(--accordion-border-width--default) ) var( --accordion-color-border, var(--accordion-color-border--default) ); } .dnb-accordion__header--expanded { --accordion-title-font-weight: var( --accordion-title-font-weight--expanded ); } .dnb-accordion__header__title { font-size: var(--font-size-basis); line-height: var(--line-height-basis); font-weight: var(--accordion-title-font-weight); } .dnb-accordion__header__description { color: var(--accordion-color-description, var(--accordion-color-description--default)); font-size: var(--font-size-small); line-height: var(--line-height-small); font-weight: var(--font-weight-basis); } .dnb-accordion__header__title + .dnb-accordion__header__description { margin-top: 0.25rem; } .dnb-accordion__header__description + .dnb-accordion__header__title { margin-top: 0.25rem; } .dnb-accordion--expanded > .dnb-accordion__header .dnb-accordion__header__icon { transform: rotate(-180deg); } .dnb-accordion__content { display: flex; width: 100%; will-change: height; transition: height 400ms var(--accordion-easing), opacity 600ms var(--accordion-easing); } @media (prefers-reduced-motion: reduce) { .dnb-accordion__content { transition-duration: 0.01ms; } } .dnb-accordion__content__inner { width: 100%; margin: var(--accordion-content-margin); padding: var(--accordion-content-padding); } .dnb-accordion-group--single-container { transition: min-height 1s var(--accordion-easing); } @media (prefers-reduced-motion: reduce) { .dnb-accordion-group--single-container { transition-duration: 0.01ms; } } .dnb-accordion-group--single-container .dnb-accordion { position: static; max-width: 60rem; } @media screen and (min-width: 40.00625em) { .dnb-accordion-group--single-container .dnb-accordion__header { width: 40%; } .dnb-accordion-group--single-container .dnb-accordion__content { margin-left: 1rem; transition: opacity 1s var(--accordion-easing); } } @media screen and (min-width: 40.00625em) and (prefers-reduced-motion: reduce) { .dnb-accordion-group--single-container .dnb-accordion__content { transition-duration: 0.01ms; } } @media screen and (min-width: 40.00625em) { .dnb-accordion-group--single-container .dnb-accordion__content__inner { margin-top: 0; } } @media screen and (min-width: 40.00625em) { .dnb-accordion-group--single-container .dnb-accordion > .dnb-accordion__header .dnb-accordion__header__icon { transform: rotate(-90deg); } } .dnb-accordion-group--single-container .dnb-accordion-group__children { max-width: 60rem; } @media screen and (min-width: 40.00625em) { .dnb-accordion-group--single-container .dnb-accordion-group__children { position: relative; display: flex; flex-direction: column; } .dnb-accordion-group--single-container .dnb-accordion-group__children .dnb-accordion__content { position: absolute; z-index: 10; top: 0; right: 0; width: 60%; } } .dnb-accordion > .dnb-accordion__header--no-animation .dnb-accordion__header__icon, html[data-visual-test] .dnb-accordion .dnb-accordion__header .dnb-accordion__header__icon { transition: none; }