UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

351 lines (312 loc) • 7.96 kB
/* mixins & extensions */ @keyframes in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes in-down { 0% { opacity: 0; transform: translate3D(0, -5px, 0); } 100% { opacity: 1; transform: translate3D(0, 0, 0); } } @keyframes in-up { 0% { opacity: 0; transform: translate3D(0, 5px, 0); } 100% { opacity: 1; transform: translate3D(0, 0, 0); } } @keyframes in-right { 0% { opacity: 0; transform: translate3D(-5px, 0, 0); } 100% { opacity: 1; transform: translate3D(0, 0, 0); } } @keyframes in-left { 0% { opacity: 0; transform: translate3D(5px, 0, 0); } 100% { opacity: 1; transform: translate3D(0, 0, 0); } } @keyframes in-scale { 0% { opacity: 0; transform: scale3D(0.95, 0.95, 1); } 100% { opacity: 1; transform: scale3D(1, 1, 1); } } :root { --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor)); --calcite-internal-duration-factor: var(--calcite-duration-factor, 1); --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor)); --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor)); --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor)); } .calcite-animate { opacity: 0; animation-fill-mode: both; animation-duration: var(--calcite-animation-timing); } .calcite-animate__in { animation-name: in; } .calcite-animate__in-down { animation-name: in-down; } .calcite-animate__in-up { animation-name: in-up; } .calcite-animate__in-right { animation-name: in-right; } .calcite-animate__in-left { animation-name: in-left; } .calcite-animate__in-scale { animation-name: in-scale; } @media (prefers-reduced-motion: reduce) { :root { --calcite-internal-duration-factor: 0.01; } } /* helper to properly scale internal durations */ /** * Currently only used in Checkbox. */ :root { --calcite-floating-ui-transition: var(--calcite-animation-timing); --calcite-floating-ui-z-index: var(--calcite-app-z-index-dropdown); } :host([hidden]) { display: none; } .icon-position--end, .icon-position--start { /* icon rotation variables */ --calcite-accordion-item-icon-rotation: calc(90deg * -1); --calcite-accordion-item-active-icon-rotation: 0deg; --calcite-accordion-item-icon-rotation-rtl: 90deg; --calcite-accordion-item-active-icon-rotation-rtl: 0deg; } .icon-position--start { --calcite-accordion-item-flex-direction: row-reverse; --calcite-accordion-item-icon-spacing-start: 0; --calcite-accordion-item-icon-spacing-end: var(--calcite-accordion-icon-margin); } .icon-position--end { --calcite-accordion-item-flex-direction: row; --calcite-accordion-item-icon-spacing-start: var(--calcite-accordion-icon-margin); --calcite-accordion-item-icon-spacing-end: 0; } .icon-position--end:not(.icon-type--plus-minus) { --calcite-accordion-item-icon-rotation: 0deg; --calcite-accordion-item-active-icon-rotation: 180deg; --calcite-accordion-item-icon-rotation-rtl: 0deg; --calcite-accordion-item-active-icon-rotation-rtl: calc(180deg * -1); } :host { position: relative; display: flex; flex-direction: column; color: var(--calcite-ui-text-3); text-decoration-line: none; background-color: var(--calcite-accordion-item-background, var(--calcite-ui-foreground-1)); } :host .header-content { outline-color: transparent; } :host(:focus) .header-content { outline: 2px solid transparent; outline-offset: 2px; outline: 2px solid var(--calcite-ui-focus-color, var(--calcite-ui-brand)); outline-offset: calc( -2px * calc( 1 - 2 * clamp( 0, var(--calcite-ui-focus-offset-invert), 1 ) ) ); } :host([expanded]) { color: var(--calcite-ui-text-1); } :host([expanded]) .content { display: block; color: var(--calcite-ui-text-1); } :host([expanded]) .header { border-block-end-color: transparent; } :host .header { display: flex; align-items: stretch; } :host .icon { position: relative; margin: 0px; display: inline-flex; color: var(--calcite-ui-text-3); transition-duration: 150ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); margin-inline-end: var(--calcite-accordion-item-icon-spacing-start); margin-inline-start: var(--calcite-accordion-item-icon-spacing-end); } .icon--start { display: flex; align-items: center; margin-inline-end: var(--calcite-accordion-icon-margin); } .icon--end { display: flex; align-items: center; margin-inline-end: var(--calcite-accordion-icon-margin); margin-inline-start: var(--calcite-accordion-icon-margin); } .header-container { inline-size: 100%; } .content { padding: var(--calcite-accordion-item-padding); } :host .content, :host .header { border-block-end: 1px solid var(--calcite-accordion-item-border, var(--calcite-ui-border-2)); } :host .header * { display: inline-flex; align-items: center; transition-duration: 150ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); word-wrap: break-word; word-break: break-word; } :host .content { display: none; padding-block-start: 0px; color: var(--calcite-ui-text-3); text-align: initial; } :host .expand-icon { color: var(--calcite-ui-text-3); margin-inline-start: var(--calcite-accordion-item-icon-spacing-start); margin-inline-end: var(--calcite-accordion-item-icon-spacing-end); transform: rotate(var(--calcite-accordion-item-icon-rotation)); } .calcite--rtl .expand-icon { transform: rotate(var(--calcite-accordion-item-icon-rotation-rtl)); } :host([expanded]) .expand-icon { color: var(--calcite-ui-text-1); transform: rotate(var(--calcite-accordion-item-active-icon-rotation)); } :host([expanded]) .calcite--rtl .expand-icon { transform: rotate(var(--calcite-accordion-item-active-icon-rotation-rtl)); } :host .header-text { margin-block: 0px; flex-grow: 1; flex-direction: column; padding-block: 0px; text-align: initial; margin-inline-end: auto; } :host .heading, :host .description { display: flex; inline-size: 100%; } :host .heading { font-weight: var(--calcite-font-weight-medium); color: var(--calcite-ui-text-2); } :host .description { margin-block-start: 0.25rem; color: var(--calcite-ui-text-3); } :host(:focus) .heading, :host(:hover) .heading { color: var(--calcite-ui-text-1); } :host(:focus) .icon, :host(:hover) .icon { color: var(--calcite-ui-text-1); } :host(:focus) .expand-icon, :host(:hover) .expand-icon { color: var(--calcite-ui-text-1); } :host(:focus) .description, :host(:hover) .description { color: var(--calcite-ui-text-2); } :host(:focus) .heading, :host(:active) .heading, :host([expanded]) .heading { color: var(--calcite-ui-text-1); } :host(:focus) .icon, :host(:active) .icon, :host([expanded]) .icon { color: var(--calcite-ui-text-1); } :host(:focus) .expand-icon, :host(:active) .expand-icon, :host([expanded]) .expand-icon { color: var(--calcite-ui-text-1); } :host(:focus) .description, :host(:active) .description, :host([expanded]) .description { color: var(--calcite-ui-text-2); } .header-content { flex-grow: 1; cursor: pointer; padding: var(--calcite-accordion-item-padding); flex-direction: var(--calcite-accordion-item-flex-direction); } .actions-start, .actions-end { display: flex; align-items: center; } @media (forced-colors: active) { :host([expanded]) .header { border-block-end: none; } :host([expanded]) .heading { /** give visual indicator of expanded state since subtle color changes can't be done **/ font-weight: bolder; } :host(:hover) .heading, :host(:focus) .heading { /** give visual indicator of expandability/click-ability since subtle color changes can't be done **/ text-decoration: underline; } }