@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
5 lines (4 loc) • 7.85 kB
JavaScript
/*! 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{c as y,d as k,e as v}from"./JSDTVKI3.js";import{a as E,b as f}from"./BVJFCLMH.js";import{d as m}from"./CKRTMNFR.js";import{a as c,b as o}from"./5RDOSP2E.js";import{v as p}from"./3ADX47DD.js";import{d as g}from"./HPN2C7M6.js";import"./JOSABGK6.js";import"./NNVH7JUI.js";import{E as h,F as i,G as b,R as u,c as d,d as a,h as l,q as s}from"./BJZTU5BQ.js";var $=d`: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[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-shadow-color: var(--calcite-inline-editable-button-shadow-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",controlsWrapper:"controls-wrapper"},r=class extends h{constructor(){super(),this.cancelEditingButton=c(),this.confirmEditingButton=c(),this._editingEnabled=!1,this.enableEditingButton=c(),this.messages=m(),this.controls=!1,this.disabled=!1,this.loading=!1,this.calciteInlineEditableEditCancel=s({cancelable:!1}),this.calciteInlineEditableEditConfirm=s({cancelable:!1}),this.calciteInternalInlineEditableEnableEditingChange=s({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=$}get editingEnabled(){return this._editingEnabled}set editingEnabled(t){let e=this._editingEnabled;t!==e&&(this._editingEnabled=t,this.editingEnabledWatcher(t,e))}async setFocus(){await g(this),this.inputElement?.setFocus()}connectedCallback(){super.connectedCallback(),y(this)}willUpdate(t){t.has("disabled")&&(this.hasUpdated||this.disabled!==!1)&&this.disabledWatcher(this.disabled)}updated(){E(this)}disconnectedCallback(){super.disconnectedCallback(),k(this)}get shouldShowControls(){return this.editingEnabled&&this.controls}disabledWatcher(t){this.inputElement&&(this.inputElement.disabled=t)}editingEnabledWatcher(t,e){this.inputElement&&(this.inputElement.editingEnabled=t),!t&&e&&(this.shouldEmitCancel=!0)}blurHandler(){this.controls||this.disableEditing()}async handleDefaultSlotChange(t){let e=p(t).filter(C=>C.matches("calcite-input"))[0];this.inputElement=e,e&&(await e.componentOnReady(),e.editingEnabled=this.editingEnabled,e.disabled=this.disabled,e.label=e.label||v(this),this.scale=this.scale||this.inputElement?.scale||"m")}onLabelClick(){this.setFocus()}enableEditing(){this.valuePriorToEditing=this.inputElement?.value,this.editingEnabled=!0,this.inputElement?.setFocus(),this.calciteInternalInlineEditableEnableEditingChange.emit()}disableEditing(){this.editingEnabled=!1}cancelEditing(){this.inputElement&&(this.inputElement.value=this.valuePriorToEditing),this.disableEditing(),this.enableEditingButton.value?.setFocus(),!this.editingEnabled&&this.shouldEmitCancel&&this.calciteInlineEditableEditCancel.emit()}async escapeKeyHandler(t){t.defaultPrevented||(t.key==="Escape"&&(t.preventDefault(),this.cancelEditing()),t.key==="Tab"&&this.shouldShowControls&&(!t.shiftKey&&t.target===this.inputElement&&(t.preventDefault(),this.cancelEditingButton.value.setFocus()),t.shiftKey&&t.target===this.cancelEditingButton.value&&(t.preventDefault(),this.inputElement?.setFocus())))}async cancelEditingHandler(t){t.preventDefault(),this.cancelEditing()}async enableEditingHandler(t){this.disabled||t.target!==this.enableEditingButton.value&&t.target!==this.inputElement||(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.enableEditingButton.value.setFocus())}catch{}finally{this.loading=!1}}render(){return f({disabled:this.disabled,children:a`<div class=${i(n.wrapper)} =${this.enableEditingHandler} =${this.escapeKeyHandler}><div class=${i(n.inputWrapper)}><slot =${this.handleDefaultSlotChange}></slot></div><div class=${i(n.controlsWrapper)}><calcite-button appearance=transparent class=${i(n.enableEditingButton)} .disabled=${this.disabled} icon-start=pencil kind=neutral .label=${this.messages.enableEditing} =${this.enableEditingHandler} .scale=${this.scale} style=${b({opacity:this.editingEnabled?"0":"1",width:this.editingEnabled?"0":"inherit"})} title=${this.messages.enableEditing??l} type=button ${o(this.enableEditingButton)}></calcite-button>${this.shouldShowControls&&[a`<div class=${i(n.cancelEditingButtonWrapper)}><calcite-button appearance=transparent class=${i(n.cancelEditingButton)} .disabled=${this.disabled} icon-start=x kind=neutral .label=${this.messages.cancelEditing} =${this.cancelEditingHandler} .scale=${this.scale} title=${this.messages.cancelEditing??l} type=button ${o(this.cancelEditingButton)}></calcite-button></div>`,a`<calcite-button appearance=solid class=${i(n.confirmChangesButton)} .disabled=${this.disabled} icon-start=check kind=brand .label=${this.messages.confirmChanges} .loading=${this.loading} =${this.confirmChangesHandler} .scale=${this.scale} title=${this.messages.confirmChanges??l} type=button ${o(this.confirmEditingButton)}></calcite-button>`]||""}</div></div>`})}};u("calcite-inline-editable",r);export{r as InlineEditable};