@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 14.8 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
import{a as z}from"./77EQHO2G.js";import{a as u}from"./HXIMHC6U.js";import{a as d}from"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{e as E,n as $,q as p,t as T,u as A}from"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{C as k,D as C,E as y,F as i,I as S,K as s,Q as I,g,h as o,l as x,p as r}from"./G7AHLVJ5.js";var n={actionsEnd:"actions-end",checkbox:"checkbox",checkboxContainer:"checkbox-container",checkboxLabel:"checkbox-label",chevron:"chevron",childrenContainer:"children-container",iconStart:"icon-start",itemExpanded:"item--expanded",nodeAndActionsContainer:"node-actions-container",nodeContainer:"node-container",selectionIcon:"selection-icon"},M={actionsEnd:"actions-end",children:"children"},l={blank:"blank",bulletPoint:"bullet-point",checkmark:"check",checkSquareF:"check-square-f",chevronRight:"chevron-right",minusSquareF:"minus-square-f",square:"square"},P=g`:host([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host([scale=s]){--calcite-internal-tree-item-spacing-unit: .25rem;--calcite-internal-tree-item-padding-block: .25rem;--calcite-internal-tree-item-children-container-padding: 1.25rem;--calcite-internal-tree-item-line-left-position: .75rem;font-size:var(--calcite-font-size-relative-sm);line-height:var(--calcite-font-line-height-sm)}:host(:is([scale=s],[scale=m])){--calcite-internal-tree-item-action-spacing: var(--calcite-spacing-xxs)}:host([scale=m]){--calcite-internal-tree-item-spacing-unit: .5rem;--calcite-internal-tree-item-padding-block: .5rem;--calcite-internal-tree-item-children-container-padding: 1.5rem;--calcite-internal-tree-item-line-left-position: 1rem;font-size:var(--calcite-font-size-relative-base);line-height:var(--calcite-font-line-height-base)}:host([scale=l]){--calcite-internal-tree-item-action-spacing: var(--calcite-spacing-xs);--calcite-internal-tree-item-spacing-unit: .75rem;--calcite-internal-tree-item-padding-block: .625rem;--calcite-internal-tree-item-children-container-padding: 2.25rem;--calcite-internal-tree-item-line-left-position: 1.5rem;font-size:var(--calcite-font-size-relative-md);line-height:var(--calcite-font-line-height-md)}:host{display:block;max-inline-size:100%;cursor:pointer}:host .children-container ::slotted(*){padding-inline-start:var(--calcite-internal-tree-item-children-container-padding)}.node-actions-container{display:flex}.node-actions-container .node-container,.node-actions-container .checkbox-container{gap:var(--calcite-internal-tree-item-spacing-unit)}.node-actions-container .node-container{padding-inline:var(--calcite-internal-tree-item-spacing-unit);padding-block:var(--calcite-internal-tree-item-padding-block)}.node-actions-container{color:var(--calcite-tree-text-color, var(--calcite-color-text-1))}.icon-start{--calcite-icon-color: var(--calcite-color-text-3)}:host([calcite-hydrated-hidden]){visibility:hidden!important;pointer-events:none}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}:host([lines]) .children-container:after{position:absolute;inset-block-start:0px;z-index:var(--calcite-z-index);inline-size:1px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:background-color,block-size,border-color,box-shadow,color,inset-block-end,inset-block-start,inset-inline-end,inset-inline-start,inset-size,opacity,outline-color,transform;transition-duration:var(--calcite-animation-timing);transition-timing-function:ease-in-out;block-size:100%;inset-inline-start:var(--calcite-internal-tree-item-line-left-position);content:"";background-color:var(--calcite-color-border-2)}:host(:not([lines])) .node-container:after{display:none}::slotted(*){min-inline-size:0px;max-inline-size:100%;overflow-wrap:break-word;color:inherit;text-decoration:none!important}::slotted(*):hover{text-decoration:none!important}::slotted(a){inline-size:100%;text-decoration-line:none}:host{outline:2px solid transparent;outline-offset:2px}:host .node-container{outline-color:transparent}:host:focus .node-container,:host:active .node-container{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))))}:host(:focus:not([disabled])) .node-container{outline:2px solid transparent;outline-offset:2px;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))))}:host(:focus:not([disabled])) .checkbox{outline:2px solid transparent;outline-offset:2px}.actions-end{display:flex;flex-direction:row;align-items:center;align-self:stretch;gap:var(--calcite-internal-tree-item-action-spacing)}.checkbox-container{display:flex;align-items:center}.checkbox{line-height:0;color:var(--calcite-tree-selected-icon-color, var(--calcite-color-border-input))}.checkbox-label{pointer-events:none;display:flex;align-items:center}.children-container{position:relative;block-size:0px;transform-origin:top;overflow:hidden;opacity:0;transform:scaleY(0);transition:var(--calcite-animation-timing) cubic-bezier(.215,.44,.42,.88),opacity var(--calcite-animation-timing) cubic-bezier(.215,.44,.42,.88),all var(--calcite-animation-timing) ease-in-out}.item--expanded>.children-container{overflow:visible;opacity:1;transform:none;block-size:auto}.node-container{position:relative;display:flex;min-inline-size:0px;flex-grow:1;align-items:center}.node-container .selection-icon{opacity:0;transition-property:background-color,block-size,border-color,box-shadow,color,inset-block-end,inset-block-start,inset-inline-end,inset-inline-start,inset-size,opacity,outline-color,transform;transition-duration:var(--calcite-animation-timing);transition-timing-function:ease-in-out;color:var(--calcite-color-border-1)}.node-container:hover .selection-icon,:host([selected]) .node-container:hover .selection-icon,:host(:focus:not([disabled])) .node-container .selection-icon{opacity:1}:host([selected]) .node-container,:host([selected]) .node-container:hover{--calcite-internal-tree-item-text-color: var(--calcite-tree-text-color-selected, var(--calcite-color-text-1));font-weight:var(--calcite-font-weight-medium);color:var(--calcite-internal-tree-item-text-color)}:host([selected]) .node-container .icon-start,:host([selected]) .node-container:hover .icon-start{--calcite-icon-color: var(--calcite-internal-tree-item-text-color)}:host([selected]) .node-container .selection-icon,:host([selected]) .node-container:hover .selection-icon{opacity:1;color:var(--calcite-tree-selected-icon-color, var(--calcite-color-brand))}:host([has-children]) .node-container .selection-icon{display:none}.chevron{position:relative;align-self:center;color:var(--calcite-color-text-3);transition-property:background-color,block-size,border-color,box-shadow,color,inset-block-end,inset-block-start,inset-inline-end,inset-inline-start,inset-size,opacity,outline-color,transform;transition-duration:var(--calcite-animation-timing);transition-timing-function:ease-in-out;flex:0 0 auto;transform:rotate(0)}.calcite--rtl .chevron{transform:rotate(180deg)}.item--expanded .node-container>.chevron{transform:rotate(90deg)}:host([selected]) .selection-icon{color:var(--calcite-tree-selected-icon-color, var(--calcite-color-brand))}:host([selected]) .checkbox{color:var(--calcite-tree-selected-icon-color, var(--calcite-color-brand))}:host([has-children][indeterminate]) .checkbox{color:var(--calcite-tree-selected-icon-color, var(--calcite-color-brand))}:host([hidden]){display:none}[hidden]{display:none}`,f=class extends y{constructor(){super(),this.actionSlotWrapperRef=k(),this.userChangedValue=!1,this.interactiveContainer=z(this),this.hasEndActions=!1,this.updateAfterInitialRender=!1,this.depth=-1,this.disabled=!1,this.expanded=!1,this.indeterminate=!1,this.parentExpanded=!1,this.selected=!1,this.calciteInternalTreeItemSelect=r({cancelable:!1}),this.calciteTreeItemCollapse=r({cancelable:!1}),this.calciteTreeItemExpand=r({cancelable:!1}),this.calciteTreeItemSelect=r({cancelable:!1}),this.listen("click",this.onClick),this.listen("keydown",this.keyDownHandler)}static{this.properties={hasEndActions:[16,{},{state:!0}],updateAfterInitialRender:[16,{},{state:!0}],depth:[11,{},{reflect:!0,type:Number}],disabled:[7,{},{reflect:!0,type:Boolean}],expanded:[7,{},{reflect:!0,type:Boolean}],hasChildren:[39,{},{reflect:!0,readOnly:!0,type:Boolean}],iconFlipRtl:[3,{},{reflect:!0}],iconStart:[3,{type:String},{reflect:!0}],indeterminate:[7,{},{reflect:!0,type:Boolean}],label:1,lines:[7,{},{reflect:!0,type:Boolean}],parentExpanded:[5,{},{type:Boolean}],scale:[3,{},{reflect:!0}],selected:[7,{},{reflect:!0,type:Boolean}],selectionMode:[3,{},{reflect:!0}]}}static{this.styles=P}get hasChildren(){return!!this.childTree}connectedCallback(){super.connectedCallback(),this.parentTreeItem=this.el.parentElement?.closest("calcite-tree-item")}load(){requestAnimationFrame(()=>this.updateAfterInitialRender=!0)}willUpdate(e){this.preWillUpdate(),e.has("expanded")&&((this.hasUpdated||this.expanded!==!1)&&this.updateChildTree(),this.hasUpdated&&(this.expanded?this.calciteTreeItemExpand.emit():this.calciteTreeItemCollapse.emit())),e.has("selected")&&(this.hasUpdated||this.selected!==!1)&&this.handleSelectedChange(this.selected),e.has("selectionMode")&&this.getSelectionMode()}loaded(){this.updateAncestorTree()}handleSelectedChange(e){this.selectionMode==="ancestors"&&!this.userChangedValue&&(e&&(this.indeterminate=!1),this.calciteInternalTreeItemSelect.emit({modifyCurrentSelection:!0,updateItem:!1})),this.userChangedValue&&(this.calciteTreeItemSelect.emit(),this.userChangedValue=!1)}getSelectionMode(){this.isSelectionMultiLike=this.selectionMode==="multiple"||this.selectionMode==="multichildren"}onClick(e){if(this.disabled||this.isActionEndEvent(e))return;let[t]=$(this.el,"a");if(t&&e.composedPath()[0].tagName.toLowerCase()!=="a"){let c=t.target===""?"_self":t.target;window.open(t.href,c)}this.calciteInternalTreeItemSelect.emit({modifyCurrentSelection:this.selectionMode==="ancestors"||this.isSelectionMultiLike,updateItem:!0}),this.userChangedValue=!0}iconClickHandler(e){e.stopPropagation(),this.expanded=!this.expanded}childrenClickHandler(e){e.stopPropagation()}keyDownHandler(e){if(!(this.isActionEndEvent(e)||e.defaultPrevented))switch(e.key){case" ":this.userChangedValue=!0,this.calciteInternalTreeItemSelect.emit({modifyCurrentSelection:this.isSelectionMultiLike,updateItem:!0}),e.preventDefault();break;case"Enter":{let t=Array.from(this.el.children).find(c=>c.matches("a"));this.userChangedValue=!0,t?(t.click(),this.selected=!0):this.calciteInternalTreeItemSelect.emit({modifyCurrentSelection:this.isSelectionMultiLike,updateItem:!0}),e.preventDefault()}}}updateChildTree(){let{childTree:e}=this;e&&(e.parentExpanded=this.expanded)}handleChildrenSlotChange(e){let t=A(e).filter(c=>c.matches("calcite-tree"))[0];this.childTree=t,this.requestUpdate("hasChildren"),this.updateChildTree()}isActionEndEvent(e){return e.composedPath().includes(this.actionSlotWrapperRef.value)}updateAncestorTree(){let e=this.parentTreeItem;if(!(this.selectionMode!=="ancestors"||!e)){if(this.selected){let t=this.el.parentElement,c=Array.from(t?.children),h=c.filter(a=>a.selected);c.length===h.length?(e.selected=!0,e.indeterminate=!1):h.length>0&&(e.indeterminate=!0),Array.from(this.el.querySelectorAll("calcite-tree-item:not([disabled])")).forEach(a=>{a.selected=!0,a.indeterminate=!1})}else if(this.indeterminate){let t=this.parentTreeItem;t.indeterminate=!0}}}actionsEndSlotChangeHandler(e){this.hasEndActions=T(e)}preWillUpdate(){this.depth=0;let e=this.el.closest("calcite-tree");if(!e)return;this.selectionMode=e.selectionMode,this.scale=e.scale||"m",this.lines=e.lines;let t;for(;e&&(t=e.parentElement?.closest("calcite-tree"),t!==e);)e=t,this.depth=this.depth+1}getSelectionIcon(){let{selectionMode:e,hasChildren:t}=this;return e==="single"||e==="children"||e==="single-persist"?l.bulletPoint:e==="multiple"||e==="multichildren"?l.checkmark:e==="none"&&!t?l.blank:null}render(){let e=E(this.el)==="rtl",t=this.getSelectionIcon(),c=this.hasChildren&&this.indeterminate,h=this.hasChildren||this.selectionMode==="ancestors"?o`<calcite-icon class=${i({[n.chevron]:!0,[s.rtl]:e})} .icon=${this.hasChildren?l.chevronRight:l.blank} =${this.iconClickHandler} .scale=${d(this.scale)}></calcite-icon>`:null,m=u("default-slot",o`<slot></slot>`),a=this.selectionMode==="ancestors"?o`<div class=${i(n.checkboxContainer)}><calcite-icon class=${i(n.checkbox)} .icon=${this.selected?l.checkSquareF:c?l.minusSquareF:l.square} .scale=${d(this.scale)}></calcite-icon></div>`:null,w=t?o`<calcite-icon class=${i({[n.selectionIcon]:!0,[s.rtl]:e})} .icon=${t} .scale=${d(this.scale)}></calcite-icon>`:null,b=!(this.parentExpanded||this.depth===1),v=this.updateAfterInitialRender&&this.expanded,{hasEndActions:R}=this,q=u("actionsEndSlot",o`<slot name=${M.actionsEnd} =${this.actionsEndSlotChangeHandler}></slot>`),L=o`<calcite-icon class=${i(n.iconStart)} .flipRtl=${this.iconFlipRtl==="start"||this.iconFlipRtl==="both"} .icon=${this.iconStart} .scale=${d(this.scale)}></calcite-icon>`;return this.el.ariaChecked=this.selectionMode==="multiple"||this.selectionMode==="multichildren"||this.selectionMode==="ancestors"?p(this.selected):void 0,this.el.ariaExpanded=this.hasChildren?p(v):void 0,this.el.inert=b,this.el.ariaLive="polite",this.el.ariaSelected=this.selectionMode==="single"||this.selectionMode==="children"||this.selectionMode==="single-persist"?p(this.selected):void 0,this.el.toggleAttribute("calcite-hydrated-hidden",b),this.el.role="treeitem",S(this.el,"tabIndex",this.disabled?-1:0),this.interactiveContainer({disabled:this.disabled,children:o`<div class=${i({[n.itemExpanded]:v})}><div class=${i(n.nodeAndActionsContainer)}><div class=${i({[n.nodeContainer]:!0,[s.rtl]:e})} data-selection-mode=${this.selectionMode??x}>${h}${w}${a||null}${this.iconStart?L:null}${a?o`<label class=${i(n.checkboxLabel)}>${m}</label>`:m}</div><div class=${i(n.actionsEnd)} .hidden=${!R} ${C(this.actionSlotWrapperRef)}>${q}</div></div><div class=${i({[n.childrenContainer]:!0,[s.rtl]:e})} =${this.childrenClickHandler} .role=${this.hasChildren?"group":void 0}><slot name=${M.children} =${this.handleChildrenSlotChange}></slot></div></div>`})}};I("calcite-tree-item",f);export{f as TreeItem};