@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 6.66 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
import{a as T}from"./VNGNPJ2I.js";import{a as v}from"./77EQHO2G.js";import{a}from"./HXIMHC6U.js";import"./M6OXKYRM.js";import{a as S}from"./SQ6RHDDF.js";import{a as w}from"./3XLPUKLV.js";import"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{D as b,E as g,F as h,Q as $,g as f,h as r,l,p as i}from"./G7AHLVJ5.js";var I={handle:"handle",dropdown:"dropdown"},y={drag:"drag",blank:"blank"},p={label:"{label}",position:"{position}",total:"{total}"},D=["top","up","down","bottom"],C={trigger:"trigger"},m={add:"add",move:"move",reorder:"reorder"},O=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 g{constructor(){super(...arguments),this.focusSetter=w()(this),this.interactiveContainer=v(this),this.disabled=!1,this.messages=S({blocking:!0}),this.addToItems=[],this.moveToItems=[],this.open=!1,this.overlayPositioning="absolute",this.placement=T,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=O}get hasSetInfo(){return typeof this.setPosition=="number"&&typeof this.setSize=="number"}get hasValidSetInfo(){return this.hasSetInfo?this.setPosition>0&&this.setSize>1:!0}get hasReorderItems(){return!this.sortDisabled&&this.hasValidSetInfo}get hasNoItems(){return!this.hasReorderItems&&this.moveToItems.length<1&&this.addToItems.length<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:o,setSize:s,hasSetInfo:d}=this;if(!d)return e??"";let n=e?t.repositionLabel.replace(p.label,e):t.reposition;return n=n.replace(p.position,o?o.toString():""),n.replace(p.total,s?s.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,o=this.moveToItems.find(s=>s.id===t);this.calciteSortHandleMove.emit({moveTo:o})}handleAddTo(e){let t=e.target.dataset.id,o=this.addToItems.find(s=>s.id===t);this.calciteSortHandleAdd.emit({addTo:o})}render(){let{disabled:e,flipPlacements:t,open:o,overlayPositioning:s,placement:d,scale:n,widthScale:P,hasNoItems:B}=this,c=this.getLabel(),H=e||B;return this.interactiveContainer({disabled:e,children:r`<calcite-dropdown class=${h(I.dropdown)} .disabled=${H} .flipPlacements=${t} =${this.handleBeforeClose} =${this.handleBeforeOpen} =${this.handleClose} =${this.handleOpen} .overlayPositioning=${s} .placement=${d} .scale=${n} .topLayerDisabled=${this.topLayerDisabled} .widthScale=${P} ${b(this.setDropdownEl)}><calcite-action .active=${o} .aria=${{expanded:o}} class=${h(I.handle)} .dragHandle=${!0} .icon=${e?y.blank:y.drag} .label=${c} .scale=${n} slot=${C.trigger} .text=${c} title=${c??l}></calcite-action>${this.renderReorderGroup()}${this.renderMoveToGroup()}${this.renderAddToGroup()}</calcite-dropdown>`})}renderAddToItem(e){return a(e.id,r`<calcite-dropdown-item data-id=${e.id??l} .label=${e.label} =${this.handleAddTo}>${e.label}</calcite-dropdown-item>`)}renderMoveToItem(e){return a(e.id,r`<calcite-dropdown-item data-id=${e.id??l} .label=${e.label} =${this.handleMoveTo}>${e.label}</calcite-dropdown-item>`)}renderReorderGroup(){return this.hasReorderItems?a("reorder",r`<calcite-dropdown-group .groupTitle=${this.messages.reorder} 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:o}=this;return t.length?a("add-to-items",r`<calcite-dropdown-group .groupTitle=${e.addTo} id=${m.add} .scale=${o} selection-mode=none>${t.map(s=>this.renderAddToItem(s))}</calcite-dropdown-group>`):null}renderMoveToGroup(){let{messages:e,moveToItems:t,scale:o}=this;return t.length?a("move-to-items",r`<calcite-dropdown-group .groupTitle=${e.moveTo} id=${m.move} .scale=${o} selection-mode=none>${t.map(s=>this.renderMoveToItem(s))}</calcite-dropdown-group>`):null}renderDropdownItem(e,t){return a(D[e],r`<calcite-dropdown-item data-value=${D[e]??l} .label=${t} =${this.handleReorder}>${t}</calcite-dropdown-item>`)}renderTop(){let{setPosition:e}=this;return e!==1&&e!==2?this.renderDropdownItem(0,this.messages.moveToTop):null}renderUp(){return this.setPosition!==1?this.renderDropdownItem(1,this.messages.moveUp):null}renderDown(){return this.setPosition!==this.setSize?this.renderDropdownItem(2,this.messages.moveDown):null}renderBottom(){let{setPosition:e,setSize:t}=this;return e!==t&&e!==t-1?this.renderDropdownItem(3,this.messages.moveToBottom):null}};$("calcite-sort-handle",u);export{u as SortHandle};