UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) 7.47 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */ import{c as m,d as k,e as y}from"./LCVNP3EO.js";import{a as E}from"./77EQHO2G.js";import{a as f}from"./SQ6RHDDF.js";import{a as g}from"./3XLPUKLV.js";import"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{u as p}from"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{C as c,D as o,E as b,F as i,H as s,Q as h,g as u,h as a,p as l}from"./G7AHLVJ5.js";var C=u`: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}:host([scale=s]) .controls-wrapper{block-size:1.5rem}:host([scale=m]) .controls-wrapper{block-size:2rem}:host([scale=l]) .controls-wrapper{block-size:2.75rem}.wrapper{box-sizing:border-box;display:flex;justify-content:space-between;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;background-color:var(--calcite-inline-editable-background-color, var(--calcite-color-foreground-1))}.wrapper .input-wrapper{flex:1 1 0%}:host(:not([editing-enabled]):not([disabled])) .wrapper:hover{background-color:var(--calcite-inline-editable-background-color-hover, var(--calcite-color-foreground-2))}.controls-wrapper{display:flex}.cancel-editing-button[appearance=transparent][kind=neutral]{--calcite-internal-button-text-color: var(--calcite-color-text-3);--calcite-internal-button-border-block-start-color: var(--calcite-color-border-input);--calcite-internal-button-border-block-end-color: var(--calcite-color-border-input)}.cancel-editing-button[appearance=transparent][kind=neutral]:hover{--calcite-internal-button-text-color: var(--calcite-color-text-1)}.enable-editing-button--hidden{pointer-events:none;opacity:0;inline-size:0}.enable-editing-button[appearance=transparent][kind=neutral]{--calcite-internal-button-background-color: transparent}calcite-button{--calcite-button-background-color: var(--calcite-inline-editable-button-background-color);--calcite-button-corner-radius: var(--calcite-inline-editable-button-corner-radius);--calcite-button-loader-color: var(--calcite-inline-editable-button-loader-color);--calcite-button-text-color: var(--calcite-inline-editable-button-text-color)}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}:host([hidden]){display:none}[hidden]{display:none}`,n={wrapper:"wrapper",confirmChangesButton:"confirm-changes-button",cancelEditingButton:"cancel-editing-button",inputWrapper:"input-wrapper",cancelEditingButtonWrapper:"cancel-editing-button-wrapper",enableEditingButton:"enable-editing-button",enableEditingButtonHidden:"enable-editing-button--hidden",controlsWrapper:"controls-wrapper"},r={check:"check",close:"x",pencil:"pencil"},d=class extends b{constructor(){super(),this.cancelEditingButtonRef=c(),this._editingEnabled=!1,this.enableEditingButtonRef=c(),this.messages=f(),this.focusSetter=g()(this),this.interactiveContainer=E(this),this.controls=!1,this.disabled=!1,this.loading=!1,this.scale="m",this.calciteInlineEditableEditCancel=l({cancelable:!1}),this.calciteInlineEditableEditConfirm=l({cancelable:!1}),this.calciteInternalInlineEditableEnableEditingChange=l({cancelable:!1}),this.listen("calciteInternalInputBlur",this.blurHandler)}static{this.properties={afterConfirm:[0,{},{attribute:!1}],controls:[7,{},{reflect:!0,type:Boolean}],disabled:[7,{},{reflect:!0,type:Boolean}],editingEnabled:[7,{},{reflect:!0,type:Boolean}],loading:[7,{},{reflect:!0,type:Boolean}],messageOverrides:[0,{},{attribute:!1}],scale:[3,{},{reflect:!0}]}}static{this.shadowRootOptions={mode:"open",delegatesFocus:!0}}static{this.styles=C}get shouldShowControls(){return this.editingEnabled&&this.controls}get editingEnabled(){return this._editingEnabled}set editingEnabled(t){let e=this._editingEnabled;t!==e&&(this._editingEnabled=t,this.editingEnabledWatcher(t,e))}async setFocus(t){return this.focusSetter(()=>this.inputEl,t)}connectedCallback(){super.connectedCallback(),m(this)}disconnectedCallback(){super.disconnectedCallback(),k(this)}editingEnabledWatcher(t,e){this.inputEl&&(this.inputEl.editingEnabled=t),!t&&e&&(this.shouldEmitCancel=!0)}blurHandler(){this.controls||this.disableEditing()}async handleDefaultSlotChange(t){let e=p(t).filter(v=>v.matches("calcite-input"))[0];this.inputEl=e,e&&(await e.componentOnReady(),e.editingEnabled=this.editingEnabled,e.label=e.label||y(this))}onLabelClick(){this.setFocus()}enableEditing(){this.valuePriorToEditing=this.inputEl?.value,this.editingEnabled=!0,this.inputEl?.setFocus(),this.calciteInternalInlineEditableEnableEditingChange.emit()}disableEditing(){this.editingEnabled=!1}cancelEditing(){this.inputEl&&(this.inputEl.value=this.valuePriorToEditing),this.disableEditing(),this.enableEditingButtonRef.value?.setFocus(),!this.editingEnabled&&this.shouldEmitCancel&&this.calciteInlineEditableEditCancel.emit()}escapeKeyHandler(t){t.defaultPrevented||(t.key==="Escape"&&(t.preventDefault(),this.cancelEditing()),t.key==="Tab"&&this.shouldShowControls&&(!t.shiftKey&&t.target===this.inputEl&&(t.preventDefault(),this.cancelEditingButtonRef.value.setFocus()),t.shiftKey&&t.target===this.cancelEditingButtonRef.value&&(t.preventDefault(),this.inputEl?.setFocus())))}async cancelEditingHandler(t){t.preventDefault(),this.cancelEditing()}enableEditingHandler(t){this.disabled||t.target!==this.enableEditingButtonRef.value&&t.target!==this.inputEl||(t.preventDefault(),this.editingEnabled||this.enableEditing())}async confirmChangesHandler(t){t.preventDefault(),this.calciteInlineEditableEditConfirm.emit();try{this.afterConfirm&&(this.loading=!0,await this.afterConfirm(),this.disableEditing(),this.enableEditingButtonRef.value?.setFocus())}catch{}finally{this.loading=!1}}render(){return this.interactiveContainer({disabled:this.disabled,children:a`<div class=${i(n.wrapper)} @click=${this.enableEditingHandler} @keydown=${this.escapeKeyHandler}><div class=${i(n.inputWrapper)}><slot @slotchange=${this.handleDefaultSlotChange}></slot></div><div class=${i(n.controlsWrapper)}><calcite-button appearance=transparent class=${i({[n.enableEditingButton]:!0,[n.enableEditingButtonHidden]:this.editingEnabled})} .iconStart=${r.pencil} kind=neutral .label=${this.messages.enableEditing} @click=${this.enableEditingHandler} .scale=${this.scale} title=${this.messages.enableEditing??s} type=button ${o(this.enableEditingButtonRef)}></calcite-button>${this.shouldShowControls&&[a`<div class=${i(n.cancelEditingButtonWrapper)}><calcite-button appearance=transparent class=${i(n.cancelEditingButton)} .iconStart=${r.close} kind=neutral .label=${this.messages.cancelEditing} @click=${this.cancelEditingHandler} .scale=${this.scale} title=${this.messages.cancelEditing??s} type=button ${o(this.cancelEditingButtonRef)}></calcite-button></div>`,a`<calcite-button appearance=solid class=${i(n.confirmChangesButton)} .iconStart=${r.check} kind=brand .label=${this.messages.confirmChanges} .loading=${this.loading} @click=${this.confirmChangesHandler} .scale=${this.scale} title=${this.messages.confirmChanges??s} type=button></calcite-button>`]||""}</div></div>`})}};h("calcite-inline-editable",d);export{d as InlineEditable};