UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

5 lines (4 loc) 4.91 kB
/*! All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://github.com/Esri/calcite-design-system/blob/dev/LICENSE.md for details. v3.2.1 */ import{a as i}from"./NZJMPPJZ.js";import{a as b,b as v}from"./BVJFCLMH.js";import{a as g}from"./OQOKN4KP.js";import{d as m}from"./CKRTMNFR.js";import{a as p,b as h}from"./5RDOSP2E.js";import{d as f}from"./HPN2C7M6.js";import"./JOSABGK6.js";import{E as o,F as n,L as d,R as u,c as l,d as s,q as r}from"./BJZTU5BQ.js";var y={container:"container"},x={search:"search"},k=l`:host{box-sizing:border-box;background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-2);font-size:var(--calcite-font-size--1)}:host *{box-sizing:border-box}: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;inline-size:100%}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}.container{display:flex;inline-size:100%}:host([scale=s]) .container{padding:var(--calcite-filter-content-space, var(--calcite-spacing-sm))}:host([scale=m]) .container{padding:var(--calcite-filter-content-space, var(--calcite-spacing-md))}:host([scale=l]) .container{padding:var(--calcite-filter-content-space, var(--calcite-spacing-lg))}label{position:relative;margin-block:0px;display:flex;inline-size:100%;align-items:center;overflow:hidden}calcite-input{inline-size:100%;--calcite-input-background-color: var(--calcite-filter-input-background-color);--calcite-input-border-color: var(--calcite-filter-input-border-color);--calcite-input-corner-radius: var(--calcite-filter-input-corner-radius);--calcite-input-shadow: var(--calcite-filter-input-shadow);--calcite-input-icon-color: var(--calcite-filter-input-icon-color);--calcite-input-text-color: var(--calcite-filter-input-text-color);--calcite-input-placeholder-text-color: var(--calcite-filter-input-placeholder-text-color);--calcite-input-actions-background-color: var(--calcite-filter-input-actions-background-color);--calcite-input-actions-background-color-hover: var(--calcite-filter-input-actions-background-color-hover);--calcite-input-actions-background-color-press: var(--calcite-filter-input-actions-background-color-press);--calcite-input-actions-icon-color: var(--calcite-filter-input-actions-icon-color);--calcite-input-actions-icon-color-hover: var(--calcite-filter-input-actions-icon-color-hover);--calcite-input-actions-icon-color-press: var(--calcite-filter-input-actions-icon-color-press)}:host([hidden]){display:none}[hidden]{display:none}`,c=class extends o{constructor(){super(...arguments),this.filterDebounced=g((e,t=!1,a)=>this.updateFiltered(i(this.items??[],e,this.filterProps),t,a),d.filter),this.textInput=p(),this._value="",this.messages=m(),this.disabled=!1,this.filteredItems=[],this.items=[],this.scale="m",this.calciteFilterChange=r({cancelable:!1})}static{this.properties={disabled:[7,{},{reflect:!0,type:Boolean}],filterProps:[0,{},{attribute:!1}],filteredItems:[0,{},{attribute:!1}],items:[0,{},{attribute:!1}],label:1,messageOverrides:[0,{},{attribute:!1}],placeholder:1,scale:[3,{},{reflect:!0}],value:1}}static{this.shadowRootOptions={mode:"open",delegatesFocus:!0}}static{this.styles=k}get value(){return this._value}set value(e){let t=this._value;e!==t&&(this._value=e,this.valueHandler(e))}async filter(e=this.value){return new Promise(t=>{this.value=e,this.updateFiltered(i(this.items??[],e,this.filterProps),!1,t)})}async setFocus(){return await f(this),this.textInput.value?.setFocus()}async load(){this.updateFiltered(i(this.items??[],this.value,this.filterProps))}willUpdate(e){(e.has("items")&&(this.hasUpdated||this.items?.length>0)||e.has("filterProps"))&&this.filterDebounced(this.value)}updated(){b(this)}disconnectedCallback(){super.disconnectedCallback(),this.filterDebounced.cancel()}valueHandler(e){this.filterDebounced(e)}inputHandler(e){let t=e.target;this.value=t.value,this.filterDebounced(t.value,!0)}keyDownHandler(e){e.defaultPrevented||(e.key==="Escape"&&(this.clear(),e.preventDefault()),e.key==="Enter"&&e.preventDefault())}clear(){this.value="",this.filterDebounced("",!0),this.setFocus()}updateFiltered(e,t=!1,a){this.filteredItems=e,t&&this.calciteFilterChange.emit(),a?.()}render(){let{disabled:e,scale:t}=this;return v({disabled:e,children:s`<div class=${n(y.container)}><label><calcite-input clearable .disabled=${e} .icon=${x.search} .label=${this.label??this.messages.label} .messageOverrides=${{clear:this.messages.clear}} @keydown=${this.keyDownHandler} @calciteInputInput=${this.inputHandler} .placeholder=${this.placeholder} .scale=${t} type=text .value=${this.value} ${h(this.textInput)}></calcite-input></label></div>`})}};u("calcite-filter",c);export{c as Filter};