@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 9.72 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import{a as S}from"./ENDXE7YY.js";import{a as x}from"./LHBACKJ5.js";import"./YJF4NBEX.js";import"./TQRVWHPS.js";import{u as A,y as o}from"./KDWR7M23.js";import{a as y}from"./OAOQ5BXS.js";import{E as f,F as v,G as g,H as a,S as I,g as u,h as r,i as b,l as h,p as d}from"./C4ZX7VYR.js";var p={actionIcon:"action-icon",actionContainer:"action-container",stepBarContainer:"step-bar-container",singleView:"single-view"},z={chevronLeft:"chevron-left",chevronRight:"chevron-right"},k="calcite-stepper-action",B={position:(c,e)=>`${k}-${c}-${e?"start":"end"}`},l={stepBar:"step-bar",stepBarActive:"step-bar--active",stepBarComplete:"step-bar--complete",stepBarDisabled:"step-bar--disabled",stepBarError:"step-bar--error",stepBarInActive:"step-bar--inactive"},R=({disabled:c,active:e,complete:t,error:i})=>r`<svg class=${a({[l.stepBar]:!0})}>${b`<rect class=${a({[l.stepBarActive]:e,[l.stepBarComplete]:t,[l.stepBarDisabled]:c,[l.stepBarError]:i,[l.stepBarInActive]:!0})} width=100% x=0 y=0 />`}</svg>`,T=u`:host([scale=s]){--calcite-internal-stepper-item-spacing-unit-s: .25rem;--calcite-internal-stepper-action-block-size: 2.75rem;--calcite-internal-stepper-action-inline-size: 2rem;--calcite-internal-step-bar-gap: .25rem}:host([scale=m]){--calcite-internal-stepper-item-spacing-unit-s: .5rem;--calcite-internal-stepper-action-block-size: 3.25rem;--calcite-internal-stepper-action-inline-size: 2.5rem}:host([scale=l]){--calcite-internal-stepper-item-spacing-unit-s: .75rem;--calcite-internal-stepper-action-block-size: 4rem;--calcite-internal-stepper-action-inline-size: 3rem;--calcite-internal-step-bar-gap: .75rem}:host{display:flex}.container{position:relative;display:flex;inline-size:100%;min-inline-size:fit-content;flex-direction:row;flex-wrap:wrap;align-items:stretch;justify-content:space-between}:host([layout=vertical]) .container{flex:1 1 auto;flex-direction:column}:host([layout=horizontal]) .container,:host([layout=horizontal-single]) .container{display:grid;grid-template-areas:"items" "content";gap:.5rem var(--calcite-stepper-bar-gap, var(--calcite-internal-stepper-item-spacing-unit-s));grid-template-rows:auto 1fr}:host([layout=horizontal][scale=s]) .container,:host([layout=horizontal-single][scale=s]) .container{gap:.25rem var(--calcite-stepper-bar-gap, var(--calcite-internal-stepper-item-spacing-unit-s))}:host([layout=horizontal][scale=l]) .container,:host([layout=horizontal-single][scale=l]) .container{gap:.75rem var(--calcite-stepper-bar-gap, var(--calcite-internal-stepper-item-spacing-unit-s))}:host([layout=horizontal]) .container.single-view{display:flex;grid-template-columns:none}.action-icon{position:relative;display:flex;flex-grow:0;block-size:var(--calcite-internal-stepper-action-block-size);inline-size:var(--calcite-internal-stepper-action-inline-size)}.action-container{position:absolute;display:flex;justify-content:space-between;padding-block:.25rem;inline-size:100%}.step-bar{display:flex;block-size:100%;inline-size:100%}.step-bar-container{position:absolute;display:flex;align-items:flex-start;justify-content:space-between;block-size:.125rem;inline-size:100%;gap:var(--calcite-stepper-bar-gap, var(--calcite-internal-step-bar-gap, .5rem))}.step-bar--inactive{fill:var(--calcite-stepper-bar-inactive-fill-color, var(--calcite-color-border-3, #dfdfdf));fill-opacity:1;block-size:100%}.step-bar--active{fill:var(--calcite-stepper-bar-active-fill-color, var(--calcite-color-brand))}.step-bar--complete{fill:var(--calcite-stepper-bar-complete-fill-color, var(--calcite-color-brand));fill-opacity:.5}.step-bar--error{fill:var(--calcite-stepper-bar-error-fill-color, var(--calcite-color-status-danger))}.step-bar--disabled{opacity:.5}:host([hidden]){display:none}[hidden]{display:none}`,m=class extends g{constructor(){super(),this.containerRef=f(),this.visibleItems=[],this.focusableItems=[],this.guid=y(),this.items=[],this.multipleViewMode=!1,this.mutationObserver=S("mutation",()=>this.updateItems()),this.messages=x(),this.icon=!1,this.layout="horizontal",this.numbered=!1,this.scale="m",this.selectedItem=null,this.calciteInternalStepperItemChange=d({cancelable:!1}),this.calciteStepperChange=d({cancelable:!1}),this.listen("calciteInternalStepperItemKeyEvent",this.calciteInternalStepperItemKeyEvent),this.listen("calciteInternalStepperItemUpdate",e=>{e.stopPropagation(),this.updateItems()}),this.listen("calciteInternalStepperItemSelect",this.updateItem),this.listen("calciteStepperItemSelect",this.handleItemSelect)}static{this.properties={currentActivePosition:[16,{},{state:!0}],icon:[7,{},{reflect:!0,type:Boolean}],layout:[3,{},{reflect:!0}],messageOverrides:[0,{},{attribute:!1}],numbered:[7,{},{reflect:!0,type:Boolean}],numberingSystem:[3,{},{reflect:!0}],scale:[3,{},{reflect:!0}],selectedItem:[0,{},{attribute:!1}]}}static{this.styles=T}async endStep(){let e=this.getEnabledStepIndex(this.visibleItems.length-1,"previous");typeof e=="number"&&this.updateStep(e)}async goToStep(e){let t=e-1;this.currentActivePosition!==t&&this.updateStep(t)}async nextStep(){let e=this.getEnabledStepIndex(this.currentActivePosition+1,"next");typeof e=="number"&&this.updateStep(e)}async prevStep(){let e=this.getEnabledStepIndex(this.currentActivePosition-1,"previous");typeof e=="number"&&this.updateStep(e)}async startStep(){let e=this.getEnabledStepIndex(0,"next");typeof e=="number"&&this.updateStep(e)}connectedCallback(){super.connectedCallback(),this.mutationObserver?.observe(this.el,{childList:!0}),this.updateItems()}willUpdate(e){(e.has("layout")&&(this.hasUpdated||this.layout!=="horizontal")||e.has("icon")&&(this.hasUpdated||this.icon!==!1)||e.has("numbered")&&(this.hasUpdated||this.numbered!==!1)||e.has("scale")&&(this.hasUpdated||this.scale!=="m")||e.has("numberingSystem")&&(this.hasUpdated||this.numberingSystem!==void 0))&&this.updateItems(),e.has("currentActivePosition")&&requestAnimationFrame(()=>{this.determineActiveStepper()})}loaded(){if(typeof this.currentActivePosition!="number"){let e=this.getFirstEnabledStepperPosition();e===0&&(this.currentActivePosition=e),this.calciteInternalStepperItemChange.emit({position:e})}}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect()}calciteInternalStepperItemKeyEvent(e){let t=e.detail.item,i=e.target;switch(t.key){case"ArrowDown":case"ArrowRight":o(this.focusableItems,i,"next");break;case"ArrowUp":case"ArrowLeft":o(this.focusableItems,i,"previous");break;case"Home":o(this.focusableItems,i,"first");break;case"End":o(this.focusableItems,i,"last");break}e.stopPropagation()}updateItem(e){let{position:t}=e.detail;typeof t=="number"&&(this.currentActivePosition=t,this.selectedItem=e.target),this.calciteInternalStepperItemChange.emit({position:t})}handleItemSelect(){this.emitItemSelect()}emitItemSelect(){this.calciteStepperChange.emit()}updateItems(){this.visibleItems=this.items.filter(e=>!e.hidden),this.determineActiveStepper(),this.focusableItems=this.visibleItems.filter(e=>!e.disabled&&!e.itemHidden),this.items.forEach(e=>{e.icon=this.icon,e.numbered=this.numbered,e.layout=this.layout,e.scale=this.scale,e.numberingSystem=this.numberingSystem})}determineActiveStepper(){let{visibleItems:e}=this;if(e.length<2)return;let{currentActivePosition:t,layout:i}=this;this.multipleViewMode=i!=="horizontal-single",e.forEach((n,s)=>{n.itemHidden=i==="horizontal-single"&&s!==(t||0)})}getEnabledStepIndex(e,t="next"){let{visibleItems:i,currentActivePosition:n}=this,s=e;for(;s>=0&&s<i.length&&i[s]?.disabled;)s=s+(t==="previous"?-1:1);return s!==n&&s<i.length&&s>=0?s:null}updateStep(e){this.currentActivePosition=e,this.calciteInternalStepperItemChange.emit({position:e})}handleActionClick(e){let t=this.currentActivePosition;e.target.getAttribute("data-position")==="start"?this.prevStep():this.nextStep(),typeof this.currentActivePosition=="number"&&t!==this.currentActivePosition&&this.visibleItems[this.currentActivePosition]&&!this.visibleItems[this.currentActivePosition].disabled&&this.emitItemSelect()}getFirstEnabledStepperPosition(){let e=this.visibleItems.findIndex(t=>!t.disabled);return e>-1?e:0}handleDefaultSlotChange(e){let t=A(e).filter(n=>n?.tagName==="CALCITE-STEPPER-ITEM");this.items=t,this.updateItems();let i=Array(this.visibleItems.length).fill("1fr").join(" ");this.containerRef.value.style.gridTemplateAreas=i,this.containerRef.value.style.gridTemplateColumns=i}render(){return this.el.ariaLabel=this.messages.label,this.el.role="region",r`<div class=${a({container:!0,[p.singleView]:this.layout==="horizontal-single"})} ${v(this.containerRef)}>${this.layout==="horizontal-single"&&r`<div class=${a({[p.stepBarContainer]:!0})}>${this.visibleItems.map((e,t)=>R({active:t===this.currentActivePosition,complete:e.complete&&t!==this.currentActivePosition&&!e.error,disabled:e.disabled&&t!==this.currentActivePosition,error:e.error&&t!==this.currentActivePosition}))}</div>`||""}${this.layout==="horizontal-single"&&r`<div class=${a({[p.actionContainer]:!0})}>${this.renderAction("start")}${this.renderAction("end")}</div>`||""}<slot =${this.handleDefaultSlotChange}></slot></div>`}renderAction(e){let t=e==="start",i=t?z.chevronLeft:z.chevronRight,{currentActivePosition:n,multipleViewMode:s,layout:P}=this,C=B.position(this.guid,t),w=t?-1:1,E=t?"previous":"next",$=this.getEnabledStepIndex(n+w,E)===null;return P==="horizontal-single"&&!s?r`<calcite-action alignment=center class=${a({[p.actionIcon]:!0})} compact data-position=${e??h} .disabled=${$} .icon=${i} icon-flip-rtl id=${C??h} =${this.handleActionClick} .scale=${this.scale} .text=${t?this.messages.previousStep:this.messages.nextStep}></calcite-action>`:null}};I("calcite-stepper",m);export{m as Stepper};