@scania/tegel
Version:
Tegel Design System
1 lines • 3.65 kB
JavaScript
import{t,p as e,H as o,h as s,a as n}from"./index.js";import{d as i}from"./p-CIt4YhvL.js";const r=["compactDesign"],a=e(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.showIcon=!0,this.renderSlot=!0,this.inputFocused=!1,this.compactDesign=!1,this.tableId=""}internalTdsPropChangeListener(t){this.tableId===t.detail.tableId&&t.detail.changed.filter((t=>r.includes(t))).forEach((e=>{if(void 0===this[e])throw console.error("Table prop is not supported: "+e),Error("Table prop is not supported: "+e);this[e]=t.detail[e]}))}connectedCallback(){const t=this.host.closest("tds-table");t?this.tableId=t.getAttribute("table-id"):console.error("Failed to find parent tds-table element.")}componentWillLoad(){const t=this.host.closest("tds-table");t?r.forEach((e=>{this[e]=t[e]})):console.error("Failed to find parent tds-table element.")}handleSlotChange(){this.validateSlot()}validateSlot(){const t=Array.from(this.host.children).filter((t=>"INPUT"===t.tagName));if(1!==t.length)console.warn("TABLE-BODY-INPUT-WRAPPER: Wrapper only accepts input as children."),this.renderSlot=!1;else{this.renderSlot||(this.renderSlot=!0);const e=t[0];e.addEventListener("focus",(()=>{this.inputFocused=!0})),e.addEventListener("blur",(()=>{this.inputFocused=!1})),e.addEventListener("keydown",(t=>{"Enter"===t.key&&(t.preventDefault(),this.moveToNextEditableCell())}))}}moveToNextEditableCell(){const t=Array.from(document.querySelectorAll("tds-table-body-input-wrapper")),e=t.indexOf(this.host);if(-1!==e&&e<t.length-1){const o=t[e+1].querySelector("input");o&&o.focus()}}render(){return s(n,{key:"55c8cd1004779a0a3a963c33b8466cc913ca287f",class:{"focused-input-wrapper":this.inputFocused,"show-icon":this.showIcon,"tds-table__compact":this.compactDesign}},this.renderSlot?s("slot",{onSlotchange:()=>this.handleSlotChange()}):null,this.showIcon?s("tds-icon",{class:"edit-icon",slot:"icon",size:"16px",name:"edit"}):null)}get host(){return this}static get style(){return":host{position:relative}:host(.focused-input-wrapper) tds-icon{display:inline-block}:host(.show-icon) ::slotted(input){padding-right:var(--tds-spacing-element-24)}:host(:hover) tds-icon{display:inline-block}:host(:hover) ::slotted(input:not(:focus)){background-color:var(--tds-table-input-background-hover)}tds-icon.edit-icon{display:none;position:absolute;right:10px;top:1px;pointer-events:none;cursor:pointer}::slotted(input){box-sizing:border-box;font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);padding-left:var(--tds-spacing-element-16);padding-right:var(--tds-spacing-element-16);color:var(--tds-table-color);background-color:transparent;height:48px;border-radius:0;border:0;border-bottom:2px solid transparent;width:100%;cursor:pointer}::slotted(input)::placeholder{color:var(--tds-table-color)}::slotted(input:disabled){background-color:var(--tds-table-input-background-disabled)}::slotted(input:focus){outline:none;background-color:var(--tds-table-input-background-focus);border-bottom:2px solid var(--tds-text-field-bar)}:host(.tds-table__compact) ::slotted(input){height:32px;}"}},[257,"tds-table-body-input-wrapper",{showIcon:[4,"show-icon"],renderSlot:[32],inputFocused:[32],compactDesign:[32],tableId:[32]},[[16,"internalTdsTablePropChange","internalTdsPropChangeListener"]]]);function d(){"undefined"!=typeof customElements&&["tds-table-body-input-wrapper","tds-icon"].forEach((e=>{switch(e){case"tds-table-body-input-wrapper":customElements.get(t(e))||customElements.define(t(e),a);break;case"tds-icon":customElements.get(t(e))||i()}}))}d();const l=a,c=d;export{l as TdsTableBodyInputWrapper,c as defineCustomElement}