UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) 7.5 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */ import{a as S}from"./D26KXFR4.js";import{a as I}from"./IJ3XVWSG.js";import{a as d}from"./H5BLSEZ3.js";import"./AP2LDRUV.js";import{a as D}from"./LHBACKJ5.js";import{a as T}from"./D7Q3AXKP.js";import"./RH6ZIP65.js";import"./YJF4NBEX.js";import"./TQRVWHPS.js";import"./KDWR7M23.js";import"./OAOQ5BXS.js";import{F as g,G as $,H as h,S as w,g as f,h as r,l as n,p as i}from"./C4ZX7VYR.js";var v={handle:"handle",dropdown:"dropdown"},y={drag:"drag",blank:"blank"},p={label:"{label}",position:"{position}",total:"{total}"},R=["top","up","down","bottom"],O={trigger:"trigger"},m={add:"add",move:"move",reorder:"reorder"},A=f`: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:flex}.dropdown{block-size:100%}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}:host([hidden]){display:none}[hidden]{display:none}`,u=class extends ${constructor(){super(...arguments),this.focusSetter=T()(this),this.interactiveContainer=I(this),this.disabled=!1,this.messages=D({blocking:!0}),this.addToItems=[],this.moveToItems=[],this.open=!1,this.overlayPositioning="absolute",this.placement=S,this.scale="m",this.sortDisabled=!1,this.topLayerDisabled=!1,this.calciteSortHandleAdd=i({cancelable:!0}),this.calciteSortHandleBeforeClose=i({cancelable:!1}),this.calciteSortHandleBeforeOpen=i({cancelable:!1}),this.calciteSortHandleClose=i({cancelable:!1}),this.calciteSortHandleMove=i({cancelable:!0}),this.calciteSortHandleOpen=i({cancelable:!1}),this.calciteSortHandleReorder=i({cancelable:!0})}static{this.properties={disabled:[7,{},{reflect:!0,type:Boolean}],flipPlacements:[0,{},{attribute:!1}],label:1,messageOverrides:[0,{},{attribute:!1}],messages:[0,{},{attribute:!1}],addToItems:[0,{},{attribute:!1}],moveToItems:[0,{},{attribute:!1}],open:[7,{},{reflect:!0,type:Boolean}],overlayPositioning:[3,{},{reflect:!0}],placement:[3,{},{reflect:!0}],scale:[3,{},{reflect:!0}],setPosition:[9,{},{type:Number}],setSize:[9,{},{type:Number}],sortDisabled:[7,{},{reflect:!0,type:Boolean}],topLayerDisabled:[7,{},{reflect:!0,type:Boolean}],widthScale:[3,{},{reflect:!0}]}}static{this.styles=A}get hasSetInfo(){return typeof this.setPosition=="number"&&typeof this.setSize=="number"}get hasValidSetInfo(){return this.hasSetInfo?this.setPosition>0&&this.setPosition<=this.setSize&&this.setSize>0:!0}get hasReorderItems(){return!this.sortDisabled&&this.hasValidSetInfo}get hasMoveToItems(){return this.moveToItems.length>0}get hasAddToItems(){return this.addToItems.length>0}get reorderGroupTitle(){return this.hasMoveToItems||this.hasAddToItems?this.messages.reorder:""}get hasNoItems(){return!this.hasReorderItems&&!this.hasMoveToItems&&!this.hasAddToItems}get hasAllReorderItemsDisabled(){return this.hasReorderItems&&this.isTopReorderDisabled&&this.isUpReorderDisabled&&this.isDownReorderDisabled&&this.isBottomReorderDisabled}get hasOnlyDisabledReorderItems(){return this.hasReorderItems&&!this.hasMoveToItems&&!this.hasAddToItems&&this.hasAllReorderItemsDisabled}get isTopReorderDisabled(){let{setPosition:e}=this;return e===1||e===2}get isUpReorderDisabled(){return this.setPosition===1}get isDownReorderDisabled(){return this.setPosition===this.setSize}get isBottomReorderDisabled(){let{setPosition:e,setSize:t}=this;return e===t||e===t-1}async setFocus(e){return this.focusSetter(()=>this.dropdownEl,e)}willUpdate(e){e.has("open")&&(this.hasUpdated||this.open!==!1)&&this.openHandler()}openHandler(){if(this.disabled){this.open=!1;return}this.dropdownEl&&(this.dropdownEl.open=this.open)}setDropdownEl(e){e&&(this.dropdownEl=e,this.openHandler())}getLabel(){let{label:e,messages:t,setPosition:s,setSize:o,hasSetInfo:a}=this;if(!a)return e??"";let l=e?t.repositionLabel.replace(p.label,e):t.reposition;return l=l.replace(p.position,s?s.toString():""),l.replace(p.total,o?o.toString():"")}handleBeforeOpen(e){e.stopPropagation(),this.calciteSortHandleBeforeOpen.emit()}handleOpen(e){e.stopPropagation(),this.calciteSortHandleOpen.emit(),this.open=!0}handleBeforeClose(e){e.stopPropagation(),this.calciteSortHandleBeforeClose.emit()}handleClose(e){e.stopPropagation(),this.calciteSortHandleClose.emit(),this.open=!1}handleReorder(e){this.calciteSortHandleReorder.emit({reorder:e.target.dataset.value})}handleMoveTo(e){let t=e.target.dataset.id,s=this.moveToItems.find(o=>o.id===t);this.calciteSortHandleMove.emit({moveTo:s})}handleAddTo(e){let t=e.target.dataset.id,s=this.addToItems.find(o=>o.id===t);this.calciteSortHandleAdd.emit({addTo:s})}render(){let{disabled:e,flipPlacements:t,hasOnlyDisabledReorderItems:s,open:o,overlayPositioning:a,placement:l,scale:b,widthScale:B,hasNoItems:P}=this,c=this.getLabel(),H=e||P||s;return this.interactiveContainer({disabled:e,children:r`<calcite-dropdown class=${h(v.dropdown)} .disabled=${H} .flipPlacements=${t} @calciteDropdownBeforeClose=${this.handleBeforeClose} @calciteDropdownBeforeOpen=${this.handleBeforeOpen} @calciteDropdownClose=${this.handleClose} @calciteDropdownOpen=${this.handleOpen} .overlayPositioning=${a} .placement=${l} .scale=${b} .topLayerDisabled=${this.topLayerDisabled} .widthScale=${B} ${g(this.setDropdownEl)}><calcite-action .active=${o} .aria=${{expanded:o}} class=${h(v.handle)} .dragHandle=${!0} .icon=${e?y.blank:y.drag} .label=${c} .scale=${b} slot=${O.trigger} .text=${c} title=${c??n}></calcite-action>${this.renderReorderGroup()}${this.renderMoveToGroup()}${this.renderAddToGroup()}</calcite-dropdown>`})}renderAddToItem(e){return d(e.id,r`<calcite-dropdown-item data-id=${e.id??n} .label=${e.label} @calciteDropdownItemSelect=${this.handleAddTo}>${e.label}</calcite-dropdown-item>`)}renderMoveToItem(e){return d(e.id,r`<calcite-dropdown-item data-id=${e.id??n} .label=${e.label} @calciteDropdownItemSelect=${this.handleMoveTo}>${e.label}</calcite-dropdown-item>`)}renderReorderGroup(){return this.hasReorderItems?d("reorder",r`<calcite-dropdown-group .groupTitle=${this.reorderGroupTitle} id=${m.reorder} .scale=${this.scale} selection-mode=none>${this.renderTop()}${this.renderUp()}${this.renderDown()}${this.renderBottom()}</calcite-dropdown-group>`):null}renderAddToGroup(){let{messages:e,addToItems:t,scale:s,hasAddToItems:o}=this;return o?d("add-to-items",r`<calcite-dropdown-group .groupTitle=${e.addTo} id=${m.add} .scale=${s} selection-mode=none>${t.map(a=>this.renderAddToItem(a))}</calcite-dropdown-group>`):null}renderMoveToGroup(){let{messages:e,moveToItems:t,scale:s,hasMoveToItems:o}=this;return o?d("move-to-items",r`<calcite-dropdown-group .groupTitle=${e.moveTo} id=${m.move} .scale=${s} selection-mode=none>${t.map(a=>this.renderMoveToItem(a))}</calcite-dropdown-group>`):null}renderDropdownItem(e,t,s=!1){return d(R[e],r`<calcite-dropdown-item data-value=${R[e]??n} .disabled=${s} .label=${t} @calciteDropdownItemSelect=${this.handleReorder}>${t}</calcite-dropdown-item>`)}renderTop(){return this.renderDropdownItem(0,this.messages.moveToTop,this.isTopReorderDisabled)}renderUp(){return this.renderDropdownItem(1,this.messages.moveUp,this.isUpReorderDisabled)}renderDown(){return this.renderDropdownItem(2,this.messages.moveDown,this.isDownReorderDisabled)}renderBottom(){return this.renderDropdownItem(3,this.messages.moveToBottom,this.isBottomReorderDisabled)}};w("calcite-sort-handle",u);export{u as SortHandle};