UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) 7.9 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */ import{a as M,b as P}from"./LWJAXF3D.js";import{a as y}from"./77EQHO2G.js";import{a as A}from"./LF4YWM37.js";import{a as G}from"./M6OXKYRM.js";import{a as S}from"./WAA77FNZ.js";import{a as x}from"./3XLPUKLV.js";import"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{g as C,u as D}from"./ZQBZ5QPB.js";import{a as O}from"./CIYXQ5G6.js";import{E as I,F as h,L as E,Q as B,g as k,h as u,p as d}from"./G7AHLVJ5.js";function p(c){return c.tagName==="CALCITE-BLOCK"}var m={container:"container",groupContainer:"group-container",scrim:"scrim",assistiveText:"assistive-text"},b="calcite-block-group",f="calcite-block",H=k`: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{display:block}.container{position:relative}.assistive-text{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host([hidden]){display:none}[hidden]{display:none}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}`;function T(c){c.forEach(e=>{e.setPosition=c.indexOf(e)+1,e.setSize=c.length})}var g=class extends I{constructor(){super(),this.dragSelector=f,this.handleSelector="calcite-sort-handle",this.mutationObserver=S("mutation",()=>{this.updateBlockItemsDebounced()}),this.blockAndGroups=[],this.cancelable=A()(this),this.focusSetter=x()(this),this.updateBlockItemsDebounced=G(this.updateBlockItems,E.nextTick),this.interactiveContainer=y(this),this.sortHandleMenuItems=[],this.disabled=!1,this.dragEnabled=!1,this.loading=!1,this.scale="m",this.sortDisabled=!1,this.calciteBlockGroupDragEnd=d({cancelable:!1}),this.calciteBlockGroupDragStart=d({cancelable:!1}),this.calciteBlockGroupMoveHalt=d({cancelable:!1}),this.calciteBlockGroupOrderChange=d({cancelable:!1}),this.listen("calciteInternalAssistiveTextChange",this.handleCalciteInternalAssistiveTextChange),this.listen("calciteBlockSortHandleBeforeOpen",this.updateBlockItemsDebounced),this.listen("calciteSortHandleReorder",this.handleSortReorder),this.listen("calciteSortHandleMove",this.handleSortMove),this.listen("calciteSortHandleAdd",this.handleSortAdd)}static{this.properties={assistiveText:[16,{},{state:!0}],sortHandleMenuItems:[16,{},{state:!0}],canPull:[0,{},{attribute:!1}],canPut:[0,{},{attribute:!1}],disabled:[7,{},{reflect:!0,type:Boolean}],dragEnabled:[7,{},{reflect:!0,type:Boolean}],group:[3,{},{reflect:!0}],label:1,loading:[7,{},{reflect:!0,type:Boolean}],scale:[3,{},{reflect:!0}],sortDisabled:[7,{},{reflect:!0,type:Boolean}]}}static{this.styles=H}emitOrderChangeEvent(e){this.calciteBlockGroupOrderChange.emit(e)}async setFocus(e){return this.focusSetter(()=>this.el,e)}connectedCallback(){super.connectedCallback(),this.connectObserver(),this.updateBlockItemsDebounced(),this.setUpSorting(),this.setParentBlockGroup(),this.cancelable.add(this.updateBlockItemsDebounced)}willUpdate(e){(e.has("group")||e.has("canPull")&&this.hasUpdated||e.has("canPut")&&this.hasUpdated||e.has("dragEnabled")&&(this.hasUpdated||this.dragEnabled!==!1)||e.has("sortDisabled")&&(this.hasUpdated||this.sortDisabled!==!1))&&this.updateBlockItemsDebounced(),e.has("scale")&&this.hasUpdated&&this.updateBlockAndGroupScale()}disconnectedCallback(){super.disconnectedCallback(),this.disconnectObserver(),P(this)}updateBlockItems(){this.updateGroupItems();let{dragEnabled:e,el:a,sortDisabled:t,sortHandleMenuItems:o}=this,s=Array.from(this.el.querySelectorAll(f)),l=a,n=Array.from(l.children).filter(p);s.forEach(r=>{r.closest(b)===a&&(r.moveToItems=o.filter(i=>this.validateSortMenuItem({type:"move",fromEl:l,toEl:i.element,dragEl:r,newIndex:0,oldIndex:n.indexOf(r)})),r.addToItems=this.sortHandleMenuItems.filter(i=>this.validateSortMenuItem({type:"add",fromEl:l,toEl:i.element,dragEl:r,newIndex:0,oldIndex:n.indexOf(r)})),r.dragHandle=e,r.sortDisabled=t)}),this.setUpSorting()}updateGroupItems(){let{el:e,group:a}=this,t=C(e),o=a?Array.from(t.querySelectorAll(`${b}[group="${a}"]`)).filter(s=>!s.disabled&&s.dragEnabled):[];this.sortHandleMenuItems=o.map(s=>({element:s,label:s.label??s.id,id:O()}))}handleCalciteInternalAssistiveTextChange(e){this.assistiveText=e.detail.message,e.stopPropagation()}handleSortReorder(e){this.parentBlockGroupEl||e.defaultPrevented||(e.preventDefault(),this.handleReorder(e))}handleSortAdd(e){this.parentBlockGroupEl||e.defaultPrevented||(e.preventDefault(),this.handleAdd(e))}handleSortMove(e){this.parentBlockGroupEl||e.defaultPrevented||(e.preventDefault(),this.handleMove(e))}connectObserver(){this.mutationObserver?.observe(this.el,{childList:!0,subtree:!0})}disconnectObserver(){this.mutationObserver?.disconnect()}setUpSorting(){let{dragEnabled:e}=this;e&&M(this)}onGlobalDragStart(){this.disconnectObserver()}onGlobalDragEnd(){this.connectObserver()}onDragEnd(e){this.calciteBlockGroupDragEnd.emit(e)}onDragStart(e){e.dragEl.sortHandleOpen=!1,this.calciteBlockGroupDragStart.emit(e)}onDragSort(e){this.setParentBlockGroup(),this.updateBlockItemsDebounced(),this.calciteBlockGroupOrderChange.emit(e)}setParentBlockGroup(){this.parentBlockGroupEl=this.el.parentElement?.closest(b)}handleDefaultSlotChange(e){let a=[];this.blockAndGroups=D(e).filter(t=>(t.matches(f)&&a.push(t),t.matches(f)||t.matches(b))),T(a),this.updateBlockAndGroupScale()}updateBlockAndGroupScale(){this.blockAndGroups.forEach(e=>{e.scale=this.scale})}validateSortMenuItem({fromEl:e,toEl:a,dragEl:t,newIndex:o,oldIndex:s,type:l}){if(!e||!a||a===e||t.contains(a))return!1;let n=e.canPull?.({toEl:a,fromEl:e,dragEl:t,newIndex:o,oldIndex:s})??!0,r=a.canPut?.({toEl:a,fromEl:e,dragEl:t,newIndex:o,oldIndex:s})??!0;return(l==="add"?n==="clone":n===!0)&&r}handleAdd(e){let{addTo:a}=e.detail,t=e.target,o=t?.parentElement,s=a.element,n=Array.from(o.children).filter(p).indexOf(t),r=0;if(!this.validateSortMenuItem({type:"add",fromEl:o,toEl:s,dragEl:t,newIndex:r,oldIndex:n}))return;t.sortHandleOpen=!1,this.disconnectObserver();let i=t.cloneNode();s.prepend(i),this.updateBlockItemsDebounced(),this.connectObserver();let v={dragEl:t,fromEl:o,toEl:s,newIndex:r,oldIndex:n};this.calciteBlockGroupOrderChange.emit(v),s.emitOrderChangeEvent(v)}handleMove(e){let{moveTo:a}=e.detail,t=e.target,o=t?.parentElement,s=a.element,n=Array.from(o.children).filter(p).indexOf(t),r=0;if(!this.validateSortMenuItem({type:"move",fromEl:o,toEl:s,dragEl:t,newIndex:r,oldIndex:n}))return;t.sortHandleOpen=!1,this.disconnectObserver(),s.prepend(t),this.updateBlockItemsDebounced(),this.connectObserver();let i={dragEl:t,fromEl:o,toEl:s,newIndex:r,oldIndex:n};this.calciteBlockGroupOrderChange.emit(i),s.emitOrderChangeEvent(i)}handleReorder(e){let{reorder:a}=e.detail,t=e.target,o=t?.parentElement;if(!o)return;t.sortHandleOpen=!1;let s=Array.from(o.children).filter(p),l=s.length-1,n=s.indexOf(t),r=n;switch(a){case"top":r=0;break;case"bottom":r=l;break;case"up":r=n===0?0:n-1;break;case"down":r=n===l?l:n+1;break}this.disconnectObserver();let i=a==="up"||a==="top"?s[r]:s[r].nextSibling;o.insertBefore(t,i),this.updateBlockItemsDebounced(),this.connectObserver(),this.calciteBlockGroupOrderChange.emit({dragEl:t,fromEl:o,toEl:o,newIndex:r,oldIndex:n})}render(){let{loading:e,label:a}=this;return this.interactiveContainer({disabled:this.disabled,children:u`<div class=${h(m.container)}>${this.dragEnabled?u`<span aria-live=assertive class=${h(m.assistiveText)}>${this.assistiveText}</span>`:null}${e?u`<calcite-scrim class=${h(m.scrim)} .loading=${e}></calcite-scrim>`:null}<div .ariaBusy=${e} .ariaLabel=${a||""} class=${h(m.groupContainer)} role=group><slot @slotchange=${this.handleDefaultSlotChange}></slot></div></div>`})}};B("calcite-block-group",g);export{g as BlockGroup};