@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 14.9 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
import{a as z}from"./AZJW5LNO.js";import"./DNVOLHYG.js";import{a as v}from"./HXIMHC6U.js";import{a as I}from"./SQ6RHDDF.js";import{a as w}from"./3XLPUKLV.js";import{a as d}from"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{e as A,k as u,t as s}from"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{C as $,D as C,E as y,F as c,K as E,Q as k,g as b,h as o,l as S,p as l}from"./G7AHLVJ5.js";var h={actionsStart:"actions-start",actionsEnd:"actions-end",contentEnd:"content-end",contentStart:"content-start"},t={actionsEnd:"actions-end",actionsStart:"actions-start",content:"content",description:"description",expandIcon:"expand-icon",hasActions:"has-actions",header:"header",headerContainer:"header-container",headerContent:"header-content",headerText:"header-text",headerAppearance:r=>`header--${r}`,heading:"heading",icon:"icon",iconEnd:"icon--end",iconStart:"icon--start",iconPosition:r=>`icon-position--${r}`,iconType:r=>`icon-type--${r}`,item:"item",slotContentEnd:"slot-content-end",slotContentStart:"slot-content-start"},m={section:"section",sectionToggle:"section-toggle"},p={chevronDown:"chevronDown",caretDown:"caretDown",plus:"plus",minus:"minus"},R=b`.icon-position--end,.icon-position--start{--calcite-internal-accordion-item-icon-rotation: -90deg ;--calcite-internal-accordion-item-active-icon-rotation: 0deg;--calcite-internal-accordion-item-icon-rotation-rtl: 90deg;--calcite-internal-accordion-item-active-icon-rotation-rtl: 0deg}:host([scale=s]){--calcite-internal-accordion-item-action-slot-spacing: var(--calcite-spacing-xxs);--calcite-internal-accordion-item-description-font-size: var(--calcite-font-size--3)}:host([scale=m]){--calcite-internal-accordion-item-action-slot-spacing: var(--calcite-spacing-xxs);--calcite-internal-accordion-item-description-font-size: var(--calcite-font-size--2)}:host([scale=l]){--calcite-internal-accordion-item-action-slot-spacing: var(--calcite-spacing-xs);--calcite-internal-accordion-item-description-font-size: var(--calcite-font-size--1)}:host{position:relative;display:flex;flex-direction:column;text-decoration-line:none;color:var(--calcite-accordion-text-color, var(--calcite-accordion-item-text-color, var(--calcite-color-text-3)));background-color:var(--calcite-accordion-background-color, var(--calcite-accordion-item-background-color));border-width:0}:host .header{background-color:var(--calcite-accordion-item-header-background-color)}:host .header:hover{background-color:var(--calcite-internal-accordion-item-header-background-color-hover)}:host .header:active{background-color:var(--calcite-internal-accordion-item-header-background-color-press)}.header--solid{--calcite-internal-accordion-item-header-background-color-hover: var( --calcite-accordion-item-header-background-color-hover, var(--calcite-color-foreground-2) );--calcite-internal-accordion-item-header-background-color-press: var( --calcite-accordion-item-header-background-color-press, var(--calcite-color-foreground-3) )}.header--transparent{--calcite-internal-accordion-item-header-background-color-hover: var( --calcite-accordion-item-header-background-color-hover, var(--calcite-color-transparent-hover) );--calcite-internal-accordion-item-header-background-color-press: var( --calcite-accordion-item-header-background-color-press, var(--calcite-color-transparent-press) )}.icon-position--start{--calcite-internal-accordion-item-flex-direction: row-reverse;--calcite-internal-accordion-item-icon-spacing-start: 0;--calcite-internal-accordion-item-icon-spacing-end: var(--calcite-internal-accordion-icon-margin)}.icon-position--end{--calcite-internal-accordion-item-flex-direction: row;--calcite-internal-accordion-item-icon-spacing-start: var(--calcite-internal-accordion-icon-margin);--calcite-internal-accordion-item-icon-spacing-end: 0}.icon-position--end:not(.icon-type--plus-minus){--calcite-internal-accordion-item-icon-rotation: 0deg;--calcite-internal-accordion-item-active-icon-rotation: 180deg;--calcite-internal-accordion-item-icon-rotation-rtl: 0deg;--calcite-internal-accordion-item-active-icon-rotation-rtl: -180deg }.content,.header{border-block-end-width:var(--calcite-border-width-sm);border-block-end-style:solid;border-color:var(--calcite-accordion-border-color, var(--calcite-accordion-item-border-color, var(--calcite-color-border-2)))}.header-content{padding:var(--calcite-internal-accordion-item-padding, var(--calcite-internal-accordion-item-spacing-unit, .5rem .75rem));background:none;border:none;appearance:none;-webkit-appearance:none;box-shadow:none;outline:none;font-family:inherit}.content{padding:var(--calcite-accordion-item-content-space, var(--calcite-internal-accordion-item-padding, var(--calcite-internal-accordion-item-spacing-unit, .5rem .75rem)))}.header{display:flex;align-items:stretch}.header-content,.header-container,.header .actions-start,.header .actions-end{display:flex;align-items:center;transition-timing-function:cubic-bezier(.4,0,.2,1);word-wrap:break-word;word-break:break-word}.header .has-actions{gap:var(--calcite-internal-accordion-item-action-slot-spacing);padding-block:var(--calcite-internal-accordion-item-action-slot-spacing)}.header .actions-start.has-actions{padding-inline:var(--calcite-internal-accordion-item-action-slot-spacing) 0}.header .actions-end.has-actions{padding-inline:0 var(--calcite-internal-accordion-item-action-slot-spacing)}.header-content{flex-grow:1;cursor:pointer;outline-color:transparent;flex-direction:var(--calcite-internal-accordion-item-flex-direction);color:var(--calcite-accordion-item-heading-text-color, var(--calcite-accordion-text-color, inherit))}.header-content:focus{outline:var(--calcite-border-width-md) solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(calc(-1 * var(--calcite-spacing-base)) * calc(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))))}.header-content:focus,.header-content:hover,.header-content:active{color:var(--calcite-accordion-item-heading-text-color, var(--calcite-accordion-text-color-hover))}.header-content:focus .heading,.header-content:hover .heading,.header-content:active .heading{color:var(--calcite-accordion-item-heading-text-color, var(--calcite-accordion-text-color-press))}.header-container{inline-size:100%}.slot-content-end{margin-inline-start:var(--calcite-internal-accordion-icon-margin)}.slot-content-start{margin-inline-end:var(--calcite-internal-accordion-icon-margin)}.header-text{margin-block:0px;flex-grow:1;flex-direction:column;padding-block:0px;text-align:initial;margin-inline-end:auto}.heading,.description{display:flex;inline-size:100%;line-height:var(--calcite-font-line-height-relative-snug)}.heading{margin:0;padding:0;font-weight:var(--calcite-font-weight-medium)}:host([scale=s]) .heading{font-size:var(--calcite-font-size--2)}:host([scale=m]) .heading{font-size:var(--calcite-font-size--1)}:host([scale=l]) .heading{font-size:var(--calcite-font-size-0)}.icon{display:flex;align-items:center;transition-timing-function:cubic-bezier(.4,0,.2,1);margin-inline-end:var(--calcite-internal-accordion-item-icon-spacing-start);margin-inline-start:var(--calcite-internal-accordion-item-icon-spacing-end)}.icon--start{color:var(--calcite-accordion-item-icon-color-start, var(--calcite-accordion-item-start-icon-color, var(--calcite-accordion-item-icon-color, var(--calcite-ui-icon-color, currentColor))));margin-inline-end:var(--calcite-internal-accordion-icon-margin)}.icon--end{color:var(--calcite-accordion-item-icon-color-end, var(--calcite-accordion-item-end-icon-color, var(--calcite-accordion-item-icon-color, var(--calcite-ui-icon-color, currentColor))));margin-inline-end:var(--calcite-internal-accordion-icon-margin);margin-inline-start:var(--calcite-internal-accordion-icon-margin)}.expand-icon{color:var(--calcite-accordion-item-expand-icon-color, var(--calcite-accordion-text-color, var(--calcite-accordion-item-text-color, var(--calcite-color-text-3))));margin-inline-start:var(--calcite-internal-accordion-item-icon-spacing-start);margin-inline-end:var(--calcite-internal-accordion-item-icon-spacing-end);transform:rotate(var(--calcite-internal-accordion-item-icon-rotation))}.calcite--rtl .expand-icon{transform:rotate(var(--calcite-internal-accordion-item-icon-rotation-rtl))}.description{font-size:var(--calcite-internal-accordion-item-description-font-size)}.content{display:none;text-align:initial}:host(:not([expanded])) .heading{color:var(--calcite-accordion-item-heading-text-color, var(--calcite-accordion-text-color-hover, var(--calcite-accordion-item-text-color-hover, var(--calcite-color-text-1))));font-weight:var(--calcite-font-weight-normal)}:host([expanded]){color:var(--calcite-accordion-text-color-press, var(--calcite-accordion-text-color, var(--calcite-accordion-item-text-color, var(--calcite-color-text-1))))}:host([expanded]) .header{border-block-end-color:transparent}:host([expanded]) .expand-icon{color:var(--calcite-accordion-item-expand-icon-color, var(--calcite-accordion-text-color-hover, var(--calcite-accordion-text-color, var(--calcite-accordion-item-text-color, var(--calcite-accordion-item-text-color-hover, var(--calcite-color-text-2))))));transform:rotate(var(--calcite-internal-accordion-item-active-icon-rotation))}:host([expanded]) .calcite--rtl .expand-icon{transform:rotate(var(--calcite-internal-accordion-item-active-icon-rotation-rtl))}:host([expanded]) .description{color:var(--calcite-accordion-text-color-hover, var(--calcite-accordion-text-color, var(--calcite-accordion-item-text-color, var(--calcite-accordion-item-text-color-hover, var(--calcite-color-text-2)))))}:host([expanded]) .content{display:block}{:host([expanded]) .header{border-block-end:none}:host([expanded]) .heading{font-weight:bolder}.header-content:hover .heading,.header-content:focus .heading{text-decoration:underline}}:host([hidden]){display:none}[hidden]{display:none}`,f=class extends y{constructor(){super(),this.headerRef=$(),this.focusSetter=w()(this),this.messages=I(),this.hasActionsEnd=!1,this.hasActionsStart=!1,this.hasContentEnd=!1,this.hasContentStart=!1,this.expanded=!1,this.calciteAccordionItemCollapse=l({cancelable:!1}),this.calciteAccordionItemExpand=l({cancelable:!1}),this.calciteInternalAccordionItemClose=l({cancelable:!1}),this.calciteInternalAccordionItemSelect=l({cancelable:!1}),this.listen("keydown",this.keyDownHandler),this.listenOn(document.body,"calciteInternalAccordionChange",this.updateActiveItemOnChange),this.listenOn(document,"calciteInternalAccordionItemsSync",this.accordionItemSyncHandler)}static{this.properties={hasActionsEnd:[16,{},{state:!0}],hasActionsStart:[16,{},{state:!0}],hasContentEnd:[16,{},{state:!0}],hasContentStart:[16,{},{state:!0}],accordionParent:[0,{},{attribute:!1}],description:1,expanded:[7,{},{reflect:!0,type:Boolean}],heading:1,iconEnd:[3,{type:String},{reflect:!0}],iconFlipRtl:[3,{},{reflect:!0}],appearance:1,headingLevel:[11,{},{type:Number,reflect:!0}],iconPosition:1,iconStart:[3,{type:String},{reflect:!0}],iconType:1,scale:[3,{},{reflect:!0}],messageOverrides:[0,{},{attribute:!1}]}}static{this.styles=R}async setFocus(e){return this.focusSetter(()=>this.headerRef.value,e)}willUpdate(e){e.has("expanded")&&this.hasUpdated&&(this.expanded?this.calciteAccordionItemExpand.emit():this.calciteAccordionItemCollapse.emit())}keyDownHandler(e){if(e.target===this.el)switch(e.key){case" ":case"Enter":this.emitRequestedItem(),e.preventDefault();break}}updateActiveItemOnChange(e){let[n]=e.composedPath(),a=u(this.el,"calcite-accordion");n===a&&(this.determineActiveItem(a.selectionMode,e.detail.requestedAccordionItem),e.stopPropagation())}accordionItemSyncHandler(e){let[n]=e.composedPath(),a=this.el;if(a.parentElement===n)return;let i=u(a,"calcite-accordion");n===i&&(this.appearance=i.appearance,this.iconPosition=i.iconPosition,this.iconType=i.iconType,this.scale=i.scale,e.stopPropagation())}handleActionsStartSlotChange(e){this.hasActionsStart=s(e)}handleActionsEndSlotChange(e){this.hasActionsEnd=s(e)}handleContentEndSlotChange(e){this.hasContentEnd=s(e)}handleContentStartSlotChange(e){this.hasContentStart=s(e)}itemHeaderClickHandler(){this.emitRequestedItem()}determineActiveItem(e,n){switch(e){case"multiple":this.el===n&&(this.expanded=!this.expanded);break;case"single":this.expanded=this.el===n?!this.expanded:!1;break;case"single-persist":this.expanded=this.el===n;break}}emitRequestedItem(){this.calciteInternalAccordionItemSelect.emit({requestedAccordionItem:this.el})}renderActionsStart(){let{hasActionsStart:e}=this;return o`<div class=${c({[t.actionsStart]:!0,[t.hasActions]:e})} .hidden=${!e}><slot name=${h.actionsStart} =${this.handleActionsStartSlotChange}></slot></div>`}renderActionsEnd(){let{hasActionsEnd:e}=this;return o`<div class=${c({[t.actionsEnd]:!0,[t.hasActions]:e})} .hidden=${!e}><slot name=${h.actionsEnd} =${this.handleActionsEndSlotChange}></slot></div>`}renderContentEnd(){return o`<div class=${c(t.slotContentEnd)} .hidden=${!this.hasContentEnd}><slot name=${h.contentEnd} =${this.handleContentEndSlotChange}></slot></div>`}renderContentStart(){return o`<div class=${c(t.slotContentStart)} .hidden=${!this.hasContentStart}><slot name=${h.contentStart} =${this.handleContentStartSlotChange}></slot></div>`}render(){let{iconFlipRtl:e,heading:n,headingLevel:a,messages:g,expanded:i}=this,T=A(this.el),P=i?g.collapse:g.expand,D=this.iconStart?v("icon-start",o`<calcite-icon class=${c({[t.icon]:!0,[t.iconStart]:!0})} .flipRtl=${e==="both"||e==="start"} .icon=${this.iconStart} .scale=${d(this.scale)}></calcite-icon>`):null,H=this.iconEnd?v("icon-end",o`<calcite-icon class=${c({[t.iconEnd]:!0,[t.icon]:!0})} .flipRtl=${e==="both"||e==="end"} .icon=${this.iconEnd} .scale=${d(this.scale)}></calcite-icon>`):null,{description:x}=this;return o`<div class=${c({[t.iconPosition(this.iconPosition)]:!0,[t.iconType(this.iconType)]:!0})}><div class=${c({[t.header]:!0,[E.rtl]:T==="rtl",[t.headerAppearance(this.appearance)]:!0})}>${this.renderActionsStart()}<button aria-controls=${m.section} .ariaExpanded=${i} class=${c(t.headerContent)} id=${m.sectionToggle} =${this.itemHeaderClickHandler} type=button ${C(this.headerRef)}><div class=${c(t.headerContainer)}>${this.renderContentStart()}${D}<div class=${c(t.headerText)}>${z({class:t.heading,level:a,children:n})}${x?o`<span class=${c(t.description)}>${x}</span>`:null}</div>${H}${this.renderContentEnd()}</div><calcite-icon class=${c(t.expandIcon)} .icon=${this.iconType==="chevron"?p.chevronDown:this.iconType==="caret"?p.caretDown:i?p.minus:p.plus} .scale=${d(this.scale)} title=${P??S}></calcite-icon></button>${this.renderActionsEnd()}</div><section aria-labelledby=${m.sectionToggle} class=${c(t.content)} id=${m.section}><slot></slot></section></div>`}};k("calcite-accordion-item",f);export{f as AccordionItem};