@mhmo91/schmancy 0.2.42 → 0.2.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{animated-text-DAIxzGoB.cjs → animated-text-CHKjskbo.cjs} +2 -2
- package/dist/{animated-text-DAIxzGoB.cjs.map → animated-text-CHKjskbo.cjs.map} +1 -1
- package/dist/{animated-text-D5czXLWn.js → animated-text-Y4ycrTGo.js} +3 -3
- package/dist/{animated-text-D5czXLWn.js.map → animated-text-Y4ycrTGo.js.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-BSCRps7h.js → area.component-CpltGFtZ.js} +3 -3
- package/dist/{area.component-BSCRps7h.js.map → area.component-CpltGFtZ.js.map} +1 -1
- package/dist/{area.component-CJlITW0a.cjs → area.component-PjmcLIgT.cjs} +2 -2
- package/dist/{area.component-CJlITW0a.cjs.map → area.component-PjmcLIgT.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/autocomplete-DlA7Zj8y.js +266 -0
- package/dist/autocomplete-DlA7Zj8y.js.map +1 -0
- package/dist/autocomplete-sjP09kRE.cjs +49 -0
- package/dist/autocomplete-sjP09kRE.cjs.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +2 -2
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-DSi2sG8X.js → checkbox-BUckVPbf.js} +2 -2
- package/dist/{checkbox-DSi2sG8X.js.map → checkbox-BUckVPbf.js.map} +1 -1
- package/dist/{checkbox-CYZ8DVr_.cjs → checkbox-BlyeBJaT.cjs} +2 -2
- package/dist/{checkbox-CYZ8DVr_.cjs.map → checkbox-BlyeBJaT.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-D0DqtIre.cjs → chips-B5s6nFCv.cjs} +2 -2
- package/dist/{chips-D0DqtIre.cjs.map → chips-B5s6nFCv.cjs.map} +1 -1
- package/dist/{chips-DHLvFgzm.js → chips-B_MkXiVt.js} +3 -3
- package/dist/{chips-DHLvFgzm.js.map → chips-B_MkXiVt.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-CiWMMHbW.js → date-range-BCS0HlLD.js} +3 -3
- package/dist/{date-range-CiWMMHbW.js.map → date-range-BCS0HlLD.js.map} +1 -1
- package/dist/{date-range-BarHKApD.cjs → date-range-DdwMl-RM.cjs} +2 -2
- package/dist/{date-range-BarHKApD.cjs.map → date-range-DdwMl-RM.cjs.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-C6SepD3P.cjs → delay-C7mn_Xn7.cjs} +2 -2
- package/dist/{delay-C6SepD3P.cjs.map → delay-C7mn_Xn7.cjs.map} +1 -1
- package/dist/{delay-BK67Hk_M.js → delay-O3A85T24.js} +2 -2
- package/dist/{delay-BK67Hk_M.js.map → delay-O3A85T24.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{divider-COtzJBn4.js → divider-3bWzZ4Rm.js} +3 -3
- package/dist/{divider-COtzJBn4.js.map → divider-3bWzZ4Rm.js.map} +1 -1
- package/dist/{divider-DX5e0m-H.cjs → divider-BCpoxMEa.cjs} +2 -2
- package/dist/{divider-DX5e0m-H.cjs.map → divider-BCpoxMEa.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/form-2b-1v-m1.cjs +8 -0
- package/dist/form-2b-1v-m1.cjs.map +1 -0
- package/dist/{form-B6BML4Gw.js → form-DqhBSlIk.js} +5 -5
- package/dist/form-DqhBSlIk.js.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-BkDy6f59.cjs → icon-C-Un0Yey.cjs} +2 -2
- package/dist/{icon-BkDy6f59.cjs.map → icon-C-Un0Yey.cjs.map} +1 -1
- package/dist/icon-button-C3lDDtmo.cjs +69 -0
- package/dist/icon-button-C3lDDtmo.cjs.map +1 -0
- package/dist/icon-button-mX6k_EOF.js +160 -0
- package/dist/icon-button-mX6k_EOF.js.map +1 -0
- package/dist/{icon-DE_mryLI.js → icon-yJxSVMJB.js} +3 -3
- package/dist/{icon-DE_mryLI.js.map → icon-yJxSVMJB.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +34 -34
- package/dist/{input-CdgeGV93.cjs → input-1mohwkxJ.cjs} +10 -10
- package/dist/input-1mohwkxJ.cjs.map +1 -0
- package/dist/{input-By2qm_Uq.js → input-RBly67_Q.js} +11 -11
- package/dist/input-RBly67_Q.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-DUV3tZ3A.cjs → list-DM_Y-zwH.cjs} +2 -2
- package/dist/{list-DUV3tZ3A.cjs.map → list-DM_Y-zwH.cjs.map} +1 -1
- package/dist/{list-Dc_EEdf-.js → list-Dyy-SpiA.js} +2 -2
- package/dist/{list-Dc_EEdf-.js.map → list-Dyy-SpiA.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BYMdyxuB.js → litElement.mixin-B7v8pDMc.js} +2 -2
- package/dist/{litElement.mixin-BYMdyxuB.js.map → litElement.mixin-B7v8pDMc.js.map} +1 -1
- package/dist/{litElement.mixin-Cw4_sB4P.cjs → litElement.mixin-BhS9oGuC.cjs} +2 -2
- package/dist/{litElement.mixin-Cw4_sB4P.cjs.map → litElement.mixin-BhS9oGuC.cjs.map} +1 -1
- package/dist/{menu-D5De6nkC.cjs → menu-1oIiQdXk.cjs} +2 -2
- package/dist/{menu-D5De6nkC.cjs.map → menu-1oIiQdXk.cjs.map} +1 -1
- package/dist/{menu-cDlpZG8h.js → menu-BPvSwS8i.js} +3 -3
- package/dist/{menu-cDlpZG8h.js.map → menu-BPvSwS8i.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins/tailwind.css +2 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-BHH_JwXm.js → option-BMdsMjZc.js} +5 -5
- package/dist/option-BMdsMjZc.js.map +1 -0
- package/dist/{option-D2uLD4HI.cjs → option-P1eP1gPa.cjs} +3 -3
- package/dist/option-P1eP1gPa.cjs.map +1 -0
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{outlet-gf5ui1xs.js → outlet-BJ6YjF7v.js} +2 -2
- package/dist/{outlet-gf5ui1xs.js.map → outlet-BJ6YjF7v.js.map} +1 -1
- package/dist/{outlet-DGwK90-g.cjs → outlet-grvppFfL.cjs} +2 -2
- package/dist/{outlet-DGwK90-g.cjs.map → outlet-grvppFfL.cjs.map} +1 -1
- package/dist/{payment-card-form-DSZz3XAw.cjs → payment-card-form-BC-KTuAM.cjs} +2 -2
- package/dist/{payment-card-form-DSZz3XAw.cjs.map → payment-card-form-BC-KTuAM.cjs.map} +1 -1
- package/dist/{payment-card-form-BEg1aL_V.js → payment-card-form-CkuozUmp.js} +3 -3
- package/dist/{payment-card-form-BEg1aL_V.js.map → payment-card-form-CkuozUmp.js.map} +1 -1
- package/dist/{radio-group-DeTqT89g.cjs → radio-group-DJ15xUxA.cjs} +2 -2
- package/dist/{radio-group-DeTqT89g.cjs.map → radio-group-DJ15xUxA.cjs.map} +1 -1
- package/dist/{radio-group-D5qSmAIk.js → radio-group-k4NlKFzF.js} +2 -2
- package/dist/{radio-group-D5qSmAIk.js.map → radio-group-k4NlKFzF.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{scroll-DJhZyWFl.js → scroll-DFMvmm21.js} +2 -2
- package/dist/{scroll-DJhZyWFl.js.map → scroll-DFMvmm21.js.map} +1 -1
- package/dist/{scroll-DbSG1gU1.cjs → scroll-DJQVW4VV.cjs} +2 -2
- package/dist/{scroll-DbSG1gU1.cjs.map → scroll-DJQVW4VV.cjs.map} +1 -1
- package/dist/select-CV5sua6X.cjs +54 -0
- package/dist/select-CV5sua6X.cjs.map +1 -0
- package/dist/{select-CZfw92Ty.js → select-DOuDb1OD.js} +35 -27
- package/dist/select-DOuDb1OD.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-BnwMNJKD.js → sheet-BNHSnKxu.js} +4 -5
- package/dist/sheet-BNHSnKxu.js.map +1 -0
- package/dist/{sheet-0256n1h7.cjs → sheet-DEi77u64.cjs} +5 -6
- package/dist/sheet-DEi77u64.cjs.map +1 -0
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-CVlX-GTS.js → slider-B1mWE8IL.js} +3 -3
- package/dist/{slider-CVlX-GTS.js.map → slider-B1mWE8IL.js.map} +1 -1
- package/dist/{slider-CtmVndmy.cjs → slider-BVqs9NxT.cjs} +2 -2
- package/dist/{slider-CtmVndmy.cjs.map → slider-BVqs9NxT.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-Aq68t0qW.cjs → spinner-BQV8GutW.cjs} +2 -2
- package/dist/{spinner-Aq68t0qW.cjs.map → spinner-BQV8GutW.cjs.map} +1 -1
- package/dist/{spinner-JGfRqdwd.js → spinner-CjCEXMhX.js} +3 -3
- package/dist/{spinner-JGfRqdwd.js.map → spinner-CjCEXMhX.js.map} +1 -1
- package/dist/{surface-DoAY0NAL.cjs → surface-DI0zgakM.cjs} +2 -2
- package/dist/{surface-DoAY0NAL.cjs.map → surface-DI0zgakM.cjs.map} +1 -1
- package/dist/{surface-3TH7Q60g.js → surface-Dr9ZU9gu.js} +2 -2
- package/dist/{surface-3TH7Q60g.js.map → surface-Dr9ZU9gu.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DgFcgs4M.js → table-BmH69A60.js} +2 -2
- package/dist/{table-DgFcgs4M.js.map → table-BmH69A60.js.map} +1 -1
- package/dist/{table-Cyx1_9fP.cjs → table-Dupu_sw5.cjs} +2 -2
- package/dist/{table-Cyx1_9fP.cjs.map → table-Dupu_sw5.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-group-CHJ1VE5L.cjs → tabs-group-C3A9t09Q.cjs} +2 -2
- package/dist/{tabs-group-CHJ1VE5L.cjs.map → tabs-group-C3A9t09Q.cjs.map} +1 -1
- package/dist/{tabs-group-6xcNqJVh.js → tabs-group-C8zeef3S.js} +2 -2
- package/dist/{tabs-group-6xcNqJVh.js.map → tabs-group-C8zeef3S.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{tailwind.mixin-dEqmlmEI.cjs → tailwind.mixin-C16PXbzn.cjs} +2 -2
- package/dist/{tailwind.mixin-dEqmlmEI.cjs.map → tailwind.mixin-C16PXbzn.cjs.map} +1 -1
- package/dist/{tailwind.mixin-D2ZmggHb.js → tailwind.mixin-DZPJ7kCh.js} +2 -2
- package/dist/{tailwind.mixin-D2ZmggHb.js.map → tailwind.mixin-DZPJ7kCh.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/{teleport.component-C5EPU5Hd.cjs → teleport.component-B_fXeDDQ.cjs} +2 -2
- package/dist/{teleport.component-C5EPU5Hd.cjs.map → teleport.component-B_fXeDDQ.cjs.map} +1 -1
- package/dist/{teleport.component-C0giJ7oR.js → teleport.component-CoGQ6xi-.js} +35 -35
- package/dist/{teleport.component-C0giJ7oR.js.map → teleport.component-CoGQ6xi-.js.map} +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-T7Ae6OQS.cjs → textarea-08CHLJIt.cjs} +2 -2
- package/dist/{textarea-T7Ae6OQS.cjs.map → textarea-08CHLJIt.cjs.map} +1 -1
- package/dist/{textarea-DznXY4XP.js → textarea-CJX8ufEk.js} +2 -2
- package/dist/{textarea-DznXY4XP.js.map → textarea-CJX8ufEk.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-rAhvYWSo.js → theme-button-C0189bng.js} +2 -2
- package/dist/{theme-button-rAhvYWSo.js.map → theme-button-C0189bng.js.map} +1 -1
- package/dist/{theme-button-FAUTvtnc.cjs → theme-button-DIq9Bwd6.cjs} +2 -2
- package/dist/{theme-button-FAUTvtnc.cjs.map → theme-button-DIq9Bwd6.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.component-DWs2jXQN.js → theme.component-BJ8UIA_A.js} +2 -2
- package/dist/{theme.component-DWs2jXQN.js.map → theme.component-BJ8UIA_A.js.map} +1 -1
- package/dist/{theme.component-BccS626x.cjs → theme.component-CQZlNAYr.cjs} +2 -2
- package/dist/{theme.component-BccS626x.cjs.map → theme.component-CQZlNAYr.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{tree-BbcH5gXF.cjs → tree-BeLMM0l5.cjs} +2 -2
- package/dist/{tree-BbcH5gXF.cjs.map → tree-BeLMM0l5.cjs.map} +1 -1
- package/dist/{tree-E21dLomQ.js → tree-Do6jY6lM.js} +2 -2
- package/dist/{tree-E21dLomQ.js.map → tree-Do6jY6lM.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-DS5Vx68F.cjs → typewriter-DPSbDZLc.cjs} +2 -2
- package/dist/{typewriter-DS5Vx68F.cjs.map → typewriter-DPSbDZLc.cjs.map} +1 -1
- package/dist/{typewriter-DKB-PEGO.js → typewriter-QBZimgx6.js} +4 -4
- package/dist/{typewriter-DKB-PEGO.js.map → typewriter-QBZimgx6.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-BX0GzBGU.cjs → typography-BbLaRssU.cjs} +2 -2
- package/dist/{typography-BX0GzBGU.cjs.map → typography-BbLaRssU.cjs.map} +1 -1
- package/dist/{typography-QSUB3lBd.js → typography-C4sugoW2.js} +2 -2
- package/dist/{typography-QSUB3lBd.js.map → typography-C4sugoW2.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/autocomplete/autocomplete.d.ts +29 -3
- package/types/src/button/button.d.ts +12 -9
- package/types/src/button/icon-button.d.ts +15 -11
- package/types/src/form/form.d.ts +0 -1
- package/types/src/select/select.d.ts +0 -19
- package/dist/autocomplete-CHpArsZC.cjs +0 -48
- package/dist/autocomplete-CHpArsZC.cjs.map +0 -1
- package/dist/autocomplete-CiCw7cWc.js +0 -225
- package/dist/autocomplete-CiCw7cWc.js.map +0 -1
- package/dist/form-B6BML4Gw.js.map +0 -1
- package/dist/form-o9voayRS.cjs +0 -8
- package/dist/form-o9voayRS.cjs.map +0 -1
- package/dist/icon-button-CIxJbF_T.cjs +0 -38
- package/dist/icon-button-CIxJbF_T.cjs.map +0 -1
- package/dist/icon-button-CYNjACmd.js +0 -123
- package/dist/icon-button-CYNjACmd.js.map +0 -1
- package/dist/input-By2qm_Uq.js.map +0 -1
- package/dist/input-CdgeGV93.cjs.map +0 -1
- package/dist/option-BHH_JwXm.js.map +0 -1
- package/dist/option-D2uLD4HI.cjs.map +0 -1
- package/dist/select-CZfw92Ty.js.map +0 -1
- package/dist/select-DYwm6zVU.cjs +0 -52
- package/dist/select-DYwm6zVU.cjs.map +0 -1
- package/dist/sheet-0256n1h7.cjs.map +0 -1
- package/dist/sheet-BnwMNJKD.js.map +0 -1
package/dist/form-o9voayRS.cjs
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";const c=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const m=require("./tailwind.mixin-dEqmlmEI.cjs"),h=require("lit"),l=require("lit/decorators.js");var d=Object.defineProperty,p=Object.getOwnPropertyDescriptor,u=(e,t,s,n)=>{for(var i,o=n>1?void 0:n?p(t,s):t,r=e.length-1;r>=0;r--)(i=e[r])&&(o=(n?i(t,s,o):i(o))||o);return n&&o&&d(t,s,o),o};let a=class extends m.TailwindElement(){constructor(){super(),this.$disconnecting=new c.Subject,this.tabIndex=0,this._controlsWithChecked=["input","radio","schmancy-radio","schmancy-switch","schmancy-checkbox","schmancy-radio-group","schmancy-autocomplete"],this._controlsWithValue=["input","schmancy-input","schmancy-mask-input","textarea","schmancy-rating","schmancy-select","schmancy-combo","schmancy-date-time-input","schmancy-autocomplete"],this._controlsThatSubmit=["button","schmancy-input","schmancy-button","schmancy-icon-button"],this.novalidate=!1,c.merge(c.fromEvent(this,"click").pipe(c.tap(e=>{var t;((t=e.target.type)==null?void 0:t.toLowerCase())==="submit"&&this.handleSubmitRequest(e)})),c.fromEvent(this,"keydown").pipe(c.tap(e=>{e.code!=="Enter"&&e.key!=="Enter"||this.handleSubmitRequest(e)}))).pipe(c.takeUntil(this.$disconnecting)).subscribe()}submit(){const e=this.getFormData();return!(!this.novalidate&&!this.reportValidity())&&(this.dispatchEvent(new CustomEvent("submit",{detail:e})),!0)}reset(){this.getFormElements().forEach(e=>{const t=e.tagName.toLowerCase();if(t==="select")for(let s=0;s<e.options.length;s++){const n=e.options[s];n.selected=n.defaultSelected}else t==="input"&&(e.type==="checkbox"||e.type=="radio")||t!=="input"&&this._controlsWithChecked.includes(t)?e.checked=e.hasAttribute("checked"):t==="schmancy-input"||t==="schmancy-rating"||t==="schmancy-mask-input"||t==="schmancy-date-time-input"?e.value=e.getAttribute("value"):this._controlsWithValue.includes(t)&&(e.value=e.defaultValue)}),this.dispatchEvent(new CustomEvent("reset"))}getFormElements(){var n;const e=(n=this.shadowRoot)==null?void 0:n.querySelector("slot"),t=e==null?void 0:e.assignedElements({flatten:!0}),s=[];return t==null||t.forEach(i=>{i.disabled||s.push(i);const o=Array.from(i.getElementsByTagName("*")).filter(r=>!r.disabled);s.push(...o)}),s}getFormData(){const e=new FormData;return this.getFormElements().forEach(t=>{const s=t.tagName.toLowerCase();if(s==="select")for(let n=0;n<t.options.length;n++){const i=t.options[n];i.selected&&e.append(t.name,i.value)}else this._controlsWithChecked.includes(s)&&t.checked?e.append(t.name,t.value||"on"):this._controlsWithValue.includes(s)&&t.type!=="checkbox"&&t.type!=="radio"&&t.type!=="submit"&&e.append(t.name,t.value)}),e}reportValidity(){return!this.getFormElements().some(e=>typeof e.reportValidity=="function"&&e.reportValidity()===!1)}handleSubmitRequest(e){var s;const t=e.target;return this._controlsThatSubmit.includes(t.tagName.toLowerCase())?this.submit():((s=t.type)==null?void 0:s.toLowerCase())==="reset"&&this.reset(),!0}render(){return h.html`<slot></slot>`}};a.tagName="schmancy-form",a.shadowRootOptions={...h.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!1},a.styles=h.css`
|
|
2
|
-
:host {
|
|
3
|
-
height: 100%;
|
|
4
|
-
width: 100%;
|
|
5
|
-
display: block;
|
|
6
|
-
}
|
|
7
|
-
`,u([l.property({type:Boolean,reflect:!0})],a.prototype,"novalidate",2),a=u([l.customElement("schmancy-form")],a);
|
|
8
|
-
//# sourceMappingURL=form-o9voayRS.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-o9voayRS.cjs","sources":["../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { LitElement, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element schmancy-form\n *\n * @slot - Default slot for the form.\n *\n * @fires submit - Emitted when the form is submitted.\n * @fires reset - Emitted when the form is reset.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'schmancy-form'\n\ttabIndex = 0\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t]\n\tprivate _controlsWithValue = [\n\t\t'input',\n\t\t'schmancy-input',\n\t\t'schmancy-mask-input',\n\t\t'textarea',\n\t\t'schmancy-rating',\n\t\t'schmancy-select',\n\t\t'schmancy-combo',\n\t\t'schmancy-date-time-input',\n\t\t'schmancy-autocomplete',\n\t]\n\tprivate _controlsThatSubmit = ['button', 'schmancy-input', 'schmancy-button', 'schmancy-icon-button']\n\n\t/** Specifies if form data validation should be skipped on submit.\n\t * @attr novalidate\n\t * @type {boolean}\n\t * @public\n\t */\n\t@property({ type: Boolean, reflect: true }) public novalidate = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tmerge(\n\t\t\tfromEvent<MouseEvent>(this, 'click').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif ((e.target as HTMLButtonElement).type?.toLowerCase() === 'submit') this.handleSubmitRequest(e)\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.code === 'Enter' || e.key === 'Enter') {\n\t\t\t\t\t\tthis.handleSubmitRequest(e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.$disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\t/** Submits the form. */\n\tpublic submit(): boolean {\n\t\tconst formData = this.getFormData()\n\t\tif (!this.novalidate && !this.reportValidity()) {\n\t\t\treturn false\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('submit', { detail: formData }))\n\t\treturn true\n\t}\n\n\t/** Resets the form. */\n\tpublic reset() {\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\toption.selected = option.defaultSelected\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\t(tagName === 'input' && (element.type === 'checkbox' || element.type == 'radio')) ||\n\t\t\t\t(tagName !== 'input' && this._controlsWithChecked.includes(tagName))\n\t\t\t) {\n\t\t\t\telement.checked = element.hasAttribute('checked')\n\t\t\t} else if (\n\t\t\t\ttagName === 'schmancy-input' ||\n\t\t\t\ttagName === 'schmancy-rating' ||\n\t\t\t\ttagName === 'schmancy-mask-input' ||\n\t\t\t\ttagName === 'schmancy-date-time-input'\n\t\t\t) {\n\t\t\t\telement.value = element.getAttribute('value')\n\t\t\t} else if (this._controlsWithValue.includes(tagName)) {\n\t\t\t\telement.value = element.defaultValue\n\t\t\t}\n\t\t})\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\tprivate getFormElements(): any[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: any[] = []\n\t\tassignedElements?.forEach((element: any) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter((element: any) => !element.disabled)\n\t\t\tformElements.push(...children)\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\tif (option.selected) {\n\t\t\t\t\t\tformData.append(element.name, option.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this._controlsWithChecked.includes(tagName) && element.checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tthis._controlsWithValue.includes(tagName) &&\n\t\t\t\telement.type !== 'checkbox' &&\n\t\t\t\telement.type !== 'radio' &&\n\t\t\t\telement.type !== 'submit'\n\t\t\t) {\n\t\t\t\tformData.append(element.name, element.value)\n\t\t\t}\n\t\t})\n\n\t\treturn formData\n\t}\n\n\t/** Checks for validity of the form. */\n\tpublic reportValidity(): boolean {\n\t\tconst formElements = this.getFormElements()\n\t\treturn !formElements.some(\n\t\t\telement => typeof element.reportValidity === 'function' && element.reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement: any = event.target as HTMLElement\n\t\tif (this._controlsThatSubmit.includes(targetElement.tagName.toLowerCase())) {\n\t\t\tthis.submit()\n\t\t} else if (targetElement.type?.toLowerCase() === 'reset') {\n\t\t\tthis.reset()\n\t\t}\n\n\t\treturn true\n\t}\n\n\tprotected override render() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n"],"names":["SchmancyForm","TailwindElement","constructor","super","this","$disconnecting","Subject","tabIndex","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","getFormElements","forEach","element","tagName","i","options","length","option","selected","defaultSelected","includes","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","push","children","Array","from","getElementsByTagName","filter","FormData","append","name","some","event","targetElement","submit","reset","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement"],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("./litElement.mixin-Cw4_sB4P.cjs");require("./tailwind.mixin-dEqmlmEI.cjs");const l=require("lit"),i=require("lit/decorators.js"),h=require("lit/directives/if-defined.js"),u=require("lit/directives/when.js");var y=Object.defineProperty,b=Object.getOwnPropertyDescriptor,s=(t,e,r,n)=>{for(var c,a=n>1?void 0:n?b(e,r):e,d=t.length-1;d>=0;d--)(c=t[d])&&(a=(n?c(e,r,a):c(a))||a);return n&&a&&y(e,r,a),a};exports.SchmnacyButton=class extends p.$LitElement(l.css`
|
|
2
|
-
:host {
|
|
3
|
-
display: block;
|
|
4
|
-
width: fit-content;
|
|
5
|
-
}
|
|
6
|
-
`){constructor(){super(...arguments),this.variant="text",this.disabled=!1}set ariaLabel(t){const e=this._ariaLabel;this._ariaLabel=t,this.hasAttribute("aria-label")&&this.removeAttribute("aria-label"),this.requestUpdate("ariaLabel",e)}get ariaLabel(){return this._ariaLabel}focus(t){this.nativeElement.focus(t)}blur(){this.nativeElement.blur()}get imgClasses(){return["max-h-[24px]","max-w-[24px]","object-contain"]}firstUpdated(){var t,e;(t=this.prefixImgs)==null||t.forEach(r=>{r.classList.add(...this.imgClasses)}),(e=this.suffixImgs)==null||e.forEach(r=>{r.classList.add(...this.imgClasses)})}click(){this.dispatchEvent(new Event("click",{bubbles:!0,composed:!0}))}render(){const t={"z-10 py-[8px] px-[16px] transition-all duration-200 relative rounded-full inline-flex justify-center items-center gap-[8px] outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-hidden":!0,"cursor-pointer":!this.disabled,"opacity-[0.38]":this.disabled,"hover:shadow-xs":!this.disabled&&(this.variant=="outlined"||this.variant=="text"||this.variant=="filled"||this.variant=="filled tonal"),"hover:shadow-sm":!this.disabled&&this.variant=="elevated","w-full tex-center":this.width=="full","bg-surface-low text-primary-default shadow-xs":this.variant=="elevated","bg-transparent text-primary-default border-1 border-solid border-outline":this.variant=="outlined","bg-primary-default text-primary-on":this.variant=="filled","bg-secondary-container text-secondary-onContainer":this.variant=="filled tonal","text-primary-default":this.variant=="text"},e={"absolute inset-0 hover:opacity-[0.08] z-0 rounded-full":!0,"hover:bg-primary-on":this.variant=="filled","hover:bg-primary-default":this.variant=="outlined"||this.variant=="elevated"||this.variant=="text","hover:bg-secondary-container":this.variant=="filled tonal"};return l.html`
|
|
7
|
-
<button
|
|
8
|
-
aria-label=${h.ifDefined(this.ariaLabel)}
|
|
9
|
-
?disabled=${this.disabled}
|
|
10
|
-
class="${this.classMap(t)}"
|
|
11
|
-
type=${h.ifDefined(this.type)}
|
|
12
|
-
tabindex=${h.ifDefined(this.disabled?"-1":void 0)}
|
|
13
|
-
>
|
|
14
|
-
${u.when(!this.disabled,()=>l.html` <div class="${this.classMap(e)}"></div> `)}
|
|
15
|
-
<slot name="prefix"></slot>
|
|
16
|
-
<slot> </slot>
|
|
17
|
-
<slot name="suffix"></slot>
|
|
18
|
-
</button>
|
|
19
|
-
`}},exports.SchmnacyButton.shadowRootOptions={...l.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!0},s([i.query('[part="base"]',!0)],exports.SchmnacyButton.prototype,"nativeElement",2),s([i.property({reflect:!0,type:String})],exports.SchmnacyButton.prototype,"variant",2),s([i.property()],exports.SchmnacyButton.prototype,"width",2),s([i.property({reflect:!0,type:String})],exports.SchmnacyButton.prototype,"type",2),s([i.property()],exports.SchmnacyButton.prototype,"href",2),s([i.property({type:Boolean,reflect:!0})],exports.SchmnacyButton.prototype,"disabled",2),s([i.property({attribute:"aria-label"})],exports.SchmnacyButton.prototype,"ariaLabel",1),s([i.queryAssignedElements({slot:"prefix",flatten:!0,selector:"img"})],exports.SchmnacyButton.prototype,"prefixImgs",2),s([i.queryAssignedElements({slot:"suffix",flatten:!0,selector:"img"})],exports.SchmnacyButton.prototype,"suffixImgs",2),exports.SchmnacyButton=s([i.customElement("schmancy-button")],exports.SchmnacyButton);var m=Object.defineProperty,f=Object.getOwnPropertyDescriptor,o=(t,e,r,n)=>{for(var c,a=n>1?void 0:n?f(e,r):e,d=t.length-1;d>=0;d--)(c=t[d])&&(a=(n?c(e,r,a):c(a))||a);return n&&a&&m(e,r,a),a};exports.SchmnacyIconButton=class extends p.$LitElement(l.css`
|
|
20
|
-
:host {
|
|
21
|
-
display: block;
|
|
22
|
-
}
|
|
23
|
-
`){constructor(){super(...arguments),this.size="md",this.variant="text",this.disabled=!1}set ariaLabel(t){const e=this._ariaLabel;this._ariaLabel=t,this.hasAttribute("aria-label")&&this.removeAttribute("aria-label"),this.requestUpdate("ariaLabel",e)}get ariaLabel(){return this._ariaLabel}focus(t){this.nativeElement.focus(t)}blur(){this.nativeElement.blur()}click(){this.dispatchEvent(new Event("click",{bubbles:!0,composed:!0}))}firstUpdated(t){}render(){const t={"h-full z-10 transition-all duration-200 relative rounded-full inline-flex justify-center items-center focus:outline-hidden":!0,"opacity-[0.38]":this.disabled,"cursor-pointer":!this.disabled,"hover:shadow-xs":!this.disabled&&(this.variant=="outlined"||this.variant=="text"||this.variant=="filled"||this.variant=="filled tonal"),"hover:shadow-sm":!this.disabled&&this.variant=="elevated","w-full tex-center":this.width=="full","bg-surface-low text-primary-default shadow-xs":this.variant=="elevated","bg-transparent text-primary-default border-1 border-outline":this.variant=="outlined","bg-primary-default text-primary-on":this.variant=="filled","bg-secondary-container text-secondary-onContainer":this.variant=="filled tonal","text-primary-default":this.variant=="text","px-[6px] py-[6px]":this.size=="sm","px-[8px] py-[8px]":this.size=="md","px-[12px] py-[12px]":this.size=="lg"},e={"hover:opacity-[0.08] rounded-full z-0":!0,"hover:bg-primary-on":this.variant=="filled","hover:bg-primary-default":this.variant=="outlined"||this.variant=="elevated"||this.variant=="text","hover:bg-secondary-container":this.variant=="filled tonal"};return l.html`
|
|
24
|
-
<button
|
|
25
|
-
part="base"
|
|
26
|
-
aria-label=${h.ifDefined(this.ariaLabel)}
|
|
27
|
-
?disabled=${this.disabled}
|
|
28
|
-
class="${this.classMap(t)}"
|
|
29
|
-
type=${h.ifDefined(this.type)}
|
|
30
|
-
tabindex=${h.ifDefined(this.disabled?"-1":void 0)}
|
|
31
|
-
>
|
|
32
|
-
${u.when(!this.disabled,()=>l.html` <div class="absolute inset-0 ${this.classMap(e)}"></div> `)}
|
|
33
|
-
<schmancy-icon size=${this.size==="sm"?"18px":this.size==="md"?"24px":"32px"}>
|
|
34
|
-
<slot> </slot
|
|
35
|
-
></schmancy-icon>
|
|
36
|
-
</button>
|
|
37
|
-
`}},exports.SchmnacyIconButton.shadowRootOptions={...l.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!0},o([i.query('[part="base"]',!0)],exports.SchmnacyIconButton.prototype,"nativeElement",2),o([i.property({type:String})],exports.SchmnacyIconButton.prototype,"size",2),o([i.property({reflect:!0,type:String})],exports.SchmnacyIconButton.prototype,"variant",2),o([i.property()],exports.SchmnacyIconButton.prototype,"width",2),o([i.property({reflect:!0,type:String})],exports.SchmnacyIconButton.prototype,"type",2),o([i.property()],exports.SchmnacyIconButton.prototype,"href",2),o([i.property({type:Boolean,reflect:!0})],exports.SchmnacyIconButton.prototype,"disabled",2),o([i.property({attribute:"aria-label"})],exports.SchmnacyIconButton.prototype,"ariaLabel",1),exports.SchmnacyIconButton=o([i.customElement("schmancy-icon-button")],exports.SchmnacyIconButton);
|
|
38
|
-
//# sourceMappingURL=icon-button-CIxJbF_T.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-button-CIxJbF_T.cjs","sources":["../src/button/button.ts","../src/button/icon-button.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nexport interface SchmancyButtonEventMap {\n\tSchmancyFocus: CustomEvent<void>\n\tSchmancyBlur: CustomEvent<void>\n}\n\nexport type ButtonVariant = 'elevated' | 'filled' | 'filled tonal' | 'outlined' | 'text'\n\n/**\n * A button component.\n * @element schmancy-button\n * @slot - The default slot.\n * @slot prefix - The prefix slot.\n * @slot suffix - The suffix slot.\n */\n@customElement('schmancy-button')\nexport class SchmnacyButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: fit-content;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t/**\n\t * The variant of the button. Defaults to undefined.\n\t * @attr\n\t * @default 'filled'\n\t * @public\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button. Defaults to 'auto'.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t * @public\n\t */\n\t@property()\n\tpublic width!: 'full' | 'auto'\n\n\t/**\n\t * The type of the button. Defaults to undefined.\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type!: 'button' | 'reset' | 'submit'\n\n\t/**\n\t * The URL the button points to.\n\t * @attr\n\t */\n\t@property()\n\tpublic href!: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t@queryAssignedElements({\n\t\tslot: 'prefix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate prefixImgs!: HTMLImageElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'suffix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate suffixImgs!: HTMLImageElement[]\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['max-h-[24px]', 'max-w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.prefixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.suffixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'z-10 py-[8px] px-[16px] transition-all duration-200 relative rounded-full inline-flex justify-center items-center gap-[8px] outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant == 'outlined' ||\n\t\t\t\t\tthis.variant == 'text' ||\n\t\t\t\t\tthis.variant == 'filled' ||\n\t\t\t\t\tthis.variant == 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant == 'elevated',\n\t\t\t'w-full tex-center': this.width == 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant == 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-solid border-outline': this.variant == 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant == 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant == 'filled tonal',\n\t\t\t'text-primary-default': this.variant == 'text',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 hover:opacity-[0.08] z-0 rounded-full': true,\n\t\t\t'hover:bg-primary-on': this.variant == 'filled',\n\t\t\t'hover:bg-primary-default': this.variant == 'outlined' || this.variant == 'elevated' || this.variant == 'text',\n\t\t\t'hover:bg-secondary-container': this.variant == 'filled tonal',\n\t\t}\n\t\treturn html`\n\t\t\t<button\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div> `)}\n\t\t\t\t<slot name=\"prefix\"></slot>\n\t\t\t\t<slot> </slot>\n\t\t\t\t<slot name=\"suffix\"></slot>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-button': SchmnacyButton\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { ButtonVariant } from './button'\n\n/**\n * A button component.\n * @element schmancy-icon-button\n * @slot - The default slot.\n * @slot prefix - The prefix slot.\n * @slot suffix - The suffix slot.\n */\n@customElement('schmancy-icon-button')\nexport class SchmnacyIconButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t@property({ type: String })\n\tpublic size: 'sm' | 'md' | 'lg' = 'md'\n\n\t/**\n\t * The variant of the button. Defaults to undefined.\n\t * @attr\n\t * @default 'filled'\n\t * @public\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button. Defaults to 'auto'.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t * @public\n\t */\n\t@property()\n\tpublic width!: 'full' | 'auto'\n\n\t/**\n\t * The type of the button. Defaults to undefined.\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type!: 'button' | 'reset' | 'submit'\n\n\t/**\n\t * The URL the button points to.\n\t * @attr\n\t */\n\t@property()\n\tpublic href!: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\tprotected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'h-full z-10 transition-all duration-200 relative rounded-full inline-flex justify-center items-center focus:outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant == 'outlined' ||\n\t\t\t\t\tthis.variant == 'text' ||\n\t\t\t\t\tthis.variant == 'filled' ||\n\t\t\t\t\tthis.variant == 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant == 'elevated',\n\t\t\t'w-full tex-center': this.width == 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant == 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-outline': this.variant == 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant == 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant == 'filled tonal',\n\t\t\t'text-primary-default': this.variant == 'text',\n\t\t\t'px-[6px] py-[6px]': this.size == 'sm',\n\t\t\t'px-[8px] py-[8px]': this.size == 'md',\n\t\t\t'px-[12px] py-[12px]': this.size == 'lg',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'hover:opacity-[0.08] rounded-full z-0': true,\n\t\t\t'hover:bg-primary-on': this.variant == 'filled',\n\t\t\t'hover:bg-primary-default': this.variant == 'outlined' || this.variant == 'elevated' || this.variant == 'text',\n\t\t\t'hover:bg-secondary-container': this.variant == 'filled tonal',\n\t\t}\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tpart=\"base\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html` <div class=\"absolute inset-0 ${this.classMap(stateLayerClasses)}\"></div> `)}\n\t\t\t\t<schmancy-icon size=${this.size === 'sm' ? '18px' : this.size === 'md' ? '24px' : '32px'}>\n\t\t\t\t\t<slot> </slot\n\t\t\t\t></schmancy-icon>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon-button': SchmnacyIconButton\n\t}\n}\n"],"names":["SchmnacyButton","$LitElement","css","super","arguments","this","variant","disabled","value","oldVal","_ariaLabel","hasAttribute","removeAttribute","requestUpdate","options","nativeElement","focus","blur","prefixImgs","forEach","img","classList","add","imgClasses","suffixImgs","dispatchEvent","Event","bubbles","composed","classes","width","stateLayerClasses","html","ifDefined","ariaLabel","classMap","type","undefined","when","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","query","prototype","property","reflect","String","Boolean","attribute","queryAssignedElements","slot","flatten","selector","customElement","SchmnacyIconButton","size","_changedProperties","render"],"mappings":"2gBAoBaA,QAAAA,eAAN,cAA6BC,EAAAA,YAAYC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAAzC,CAAA,CAAA,cAAAC,MAAAC,GAAAA,SAAAA,EAwBNC,KAAOC,QAAyB,OA+BhCD,KAAOE,SAAW,EAAA,CAElB,IAAA,UAA8BC,EAC7B,CAAA,MAAMC,EAASJ,KAAKK,WACpBL,KAAKK,WAAaF,EAEdH,KAAKM,aAAa,eACrBN,KAAKO,gBAAgB,cAEjBP,KAAAQ,cAAc,YAAaJ,CAAM,CAAA,CAIvC,eACC,CAAA,OAAOJ,KAAKK,UAAA,CAkBG,MAAMI,EAAAA,CAChBT,KAAAU,cAAcC,MAAMF,CAAO,CAAA,CAIjB,MACfT,CAAAA,KAAKU,cAAcE,KAAK,CAAA,CAGzB,gBACQ,CAAA,MAAA,CAAC,eAAgB,eAAgB,gBAAgB,CAAA,CAGzD,cACMZ,UAAAA,EAAAA,KAAAa,aAAAb,MAAAA,EAAYc,QAAeC,GAAAA,CAC/BA,EAAIC,UAAUC,OAAOjB,KAAKkB,UAAAA,CAAU,IAEhClB,EAAAA,KAAAmB,aAAAnB,MAAAA,EAAYc,QAAeC,GAC/BA,CAAAA,EAAIC,UAAUC,IAAOjB,GAAAA,KAAKkB,WAAU,EACpC,CAGF,OACMlB,CAAAA,KAAAoB,cAAc,IAAIC,MAAM,QAAS,CAAEC,WAAeC,SAAAA,KAAiB,CAGzE,SACC,MAAMC,EAAU,CACf,0PAAA,GAEA,iBAAmBxB,CAAAA,KAAKE,SACxB,iBAAkBF,KAAKE,SACvB,kBACEF,CAAAA,KAAKE,WACLF,KAAKC,SAAW,YAChBD,KAAKC,SAAW,QAChBD,KAAKC,SAAW,UAChBD,KAAKC,SAAW,gBAClB,kBAAA,CAAoBD,KAAKE,UAAYF,KAAKC,SAAW,WACrD,oBAAqBD,KAAKyB,OAAS,OACnC,gDAAiDzB,KAAKC,SAAW,WACjE,2EAA4ED,KAAKC,SAAW,WAC5F,qCAAsCD,KAAKC,SAAW,SACtD,oDAAqDD,KAAKC,SAAW,eACrE,uBAAwBD,KAAKC,SAAW,MAAXA,EAGxByB,EAAoB,CACzB,yDAAA,GACA,sBAAuB1B,KAAKC,SAAW,SACvC,2BAA4BD,KAAKC,SAAW,YAAcD,KAAKC,SAAW,YAAcD,KAAKC,SAAW,OACxG,+BAAgCD,KAAKC,SAAW,cAE1C,EAAA,OAAA0B,EAAAA;AAAAA;AAAAA,iBAEQC,EAAAA,UAAU5B,KAAK6B,SAAAA,CAAAA;AAAAA,gBAChB7B,KAAKE,QAAAA;AAAAA,aACRF,KAAK8B,SAASN,CAAAA,CAAAA;AAAAA,WAChBI,EAAAA,UAAU5B,KAAK+B,IAAAA,CAAAA;AAAAA,eACXH,EAAUA,UAAA5B,KAAKE,SAAW,KAAO8B,MAAAA,CAAAA;AAAAA;AAAAA,MAE1CC,QAAMjC,KAAKE,SAAU,IAAMyB,EAAoBA,oBAAA3B,KAAK8B,SAASJ,CAAAA,CAAAA,WAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAA8B,CApJpF/B,EAAAA,QAAAA,eAMKuC,kBAAoB,CAAA,GACjCC,EAAWA,WAAAD,kBACdE,KAAM,OACNC,eAAAA,IAIOC,EAAA,CADPC,EAAAA,MAAM,gBAAA,KAZK5C,uBAaJ6C,UAAA,gBAAA,CAAA,EAWDF,EAAA,CADNG,EAAAA,SAAS,CAAEC,QAAAA,GAAeX,KAAMY,MAAAA,CAAAA,CAAAA,EAvBrBhD,uBAwBL6C,UAAA,UAAA,CAUAF,EAAAA,EAAA,CADNG,EAASA,SAAAA,CAAAA,EAjCE9C,uBAkCL6C,UAAA,QAAA,CAAA,EAOAF,EAAA,CADNG,EAAAA,SAAS,CAAEC,WAAeX,KAAMY,UAxCrBhD,uBAyCL6C,UAAA,OAAA,CAAA,EAOAF,EAAA,CADNG,EAASA,YA/CE9C,uBAgDL6C,UAAA,OAAA,CAAA,EAOAF,EAAA,CADNG,EAAAA,SAAS,CAAEV,KAAMa,QAASF,UAtDf/C,CAAAA,CAAAA,EAAAA,uBAuDL6C,UAAA,WAAA,GAaaF,EAAA,CADnBG,WAAS,CAAEI,UAAW,YAnEXlD,CAAAA,CAAAA,EAAAA,uBAoEQ6C,UAAA,YAAA,CASZF,EAAAA,EAAA,CALPQ,wBAAsB,CACtBC,KAAM,SACNC,QAAS,GACTC,SAAU,KA3ECtD,CAAAA,CAAAA,EAAAA,uBA6EJ6C,UAAA,aAAA,GAOAF,EAAA,CALPQ,wBAAsB,CACtBC,KAAM,SACNC,QAAAA,GACAC,SAAU,KAAA,CAAA,CAAA,EAlFCtD,uBAoFJ6C,UAAA,aAAA,CApFI7C,EAAAA,QAANA,eAAA2C,EAAA,CADNY,EAAAA,cAAc,iBAAA,CAAA,EACFvD,wNCLAwD,QAAAA,mBAAN,cAAiCvD,EAAAA,YAAYC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA7C,CAAA,CAAA,cAAAC,MAAAC,GAAAA,SAAAA,EAiBNC,KAAOoD,KAA2B,KASlCpD,KAAOC,QAAyB,OA+BhCD,KAAOE,WAAW,CAElB,cAA8BC,EAAAA,CAC7B,MAAMC,EAASJ,KAAKK,WACpBL,KAAKK,WAAaF,EAEdH,KAAKM,aAAa,YAAA,GACrBN,KAAKO,gBAAgB,YAAA,EAEjBP,KAAAQ,cAAc,YAAaJ,CAAM,CAAA,CAIvC,eACC,CAAA,OAAOJ,KAAKK,UAAA,CAIG,MAAMI,GAChBT,KAAAU,cAAcC,MAAMF,CAAAA,CAAO,CAIjB,MAAAG,CACfZ,KAAKU,cAAcE,MAAK,CAGzB,QACMZ,KAAAoB,cAAc,IAAIC,MAAM,QAAS,CAAEC,QAAAA,GAAeC,SAAU,EAAA,CAAA,CAAA,CAAO,CAG/D,aAAa8B,EAA6E,CAAA,CAEpG,QAAAC,CACC,MAAM9B,EAAU,CACf,gIAEA,iBAAkBxB,KAAKE,SACvB,iBAAA,CAAmBF,KAAKE,SACxB,mBACEF,KAAKE,WACLF,KAAKC,SAAW,YAChBD,KAAKC,SAAW,QAChBD,KAAKC,SAAW,UAChBD,KAAKC,SAAW,gBAClB,kBAAA,CAAoBD,KAAKE,UAAYF,KAAKC,SAAW,WACrD,oBAAqBD,KAAKyB,OAAS,OACnC,gDAAiDzB,KAAKC,SAAW,WACjE,8DAA+DD,KAAKC,SAAW,WAC/E,qCAAsCD,KAAKC,SAAW,SACtD,oDAAqDD,KAAKC,SAAW,eACrE,uBAAwBD,KAAKC,SAAW,OACxC,oBAAqBD,KAAKoD,MAAQ,KAClC,oBAAqBpD,KAAKoD,MAAQ,KAClC,sBAAuBpD,KAAKoD,MAAQ,IAG/B1B,EAAAA,EAAoB,CACzB,wCAAyC,GACzC,sBAAuB1B,KAAKC,SAAW,SACvC,2BAA4BD,KAAKC,SAAW,YAAcD,KAAKC,SAAW,YAAcD,KAAKC,SAAW,OACxG,+BAAgCD,KAAKC,SAAW,cAE1C,EAAA,OAAA0B,EAAAA;AAAAA;AAAAA;AAAAA,iBAGQC,EAAAA,UAAU5B,KAAK6B,SAAAA,CAAAA;AAAAA,gBAChB7B,KAAKE,QAAAA;AAAAA,aACRF,KAAK8B,SAASN,CAAAA,CAAAA;AAAAA,WAChBI,EAAAA,UAAU5B,KAAK+B,IAAAA,CAAAA;AAAAA,eACXH,EAAUA,UAAA5B,KAAKE,SAAW,KAAO8B,MAAAA,CAAAA;AAAAA;AAAAA,MAE1CC,QAAMjC,KAAKE,SAAU,IAAMyB,EAAqCA,qCAAA3B,KAAK8B,SAASJ,CAAAA,CAAAA,WAAAA,CAAAA;AAAAA,0BAC1D1B,KAAKoD,OAAS,KAAO,OAASpD,KAAKoD,OAAS,KAAO,OAAS,MAAA;AAAA;AAAA;AAAA;AAAA,GAAM,CAlI/ED,EAAAA,QAAAA,mBAKKjB,kBAAoB,CACjCC,GAAAA,EAAWA,WAAAD,kBACdE,KAAM,OACNC,eAAAA,EAIOC,EAAAA,EAAA,CADPC,EAAAA,MAAM,gBAAiB,EAAA,CAAA,EAXZY,2BAYJX,UAAA,gBAAA,CAKDF,EAAAA,EAAA,CADNG,WAAS,CAAEV,KAAMY,MAhBNQ,CAAAA,CAAAA,EAAAA,2BAiBLX,UAAA,OAAA,CAAA,EASAF,EAAA,CADNG,EAAAA,SAAS,CAAEC,QAAS,GAAMX,KAAMY,MAzBrBQ,CAAAA,CAAAA,EAAAA,2BA0BLX,UAAA,UAAA,CAAA,EAUAF,EAAA,CADNG,EAASA,SAAAA,CAAAA,EAnCEU,2BAoCLX,UAAA,QAAA,GAOAF,EAAA,CADNG,EAAAA,SAAS,CAAEC,QAAAA,GAAeX,KAAMY,MAAAA,CAAAA,CAAAA,EA1CrBQ,2BA2CLX,UAAA,OAAA,GAOAF,EAAA,CADNG,EAASA,SAAAA,CAAAA,EAjDEU,2BAkDLX,UAAA,OAAA,CAOAF,EAAAA,EAAA,CADNG,EAAAA,SAAS,CAAEV,KAAMa,QAASF,QAAAA,EAxDfS,CAAAA,CAAAA,EAAAA,2BAyDLX,UAAA,WAAA,CAAA,EAaaF,EAAA,CADnBG,WAAS,CAAEI,UAAW,gBArEXM,2BAsEQX,UAAA,YAAA,CAtERW,EAAAA,QAANA,mBAAAb,EAAA,CADNY,EAAAA,cAAc,sBAAA,CAAA,EACFC"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import "rxjs";
|
|
2
|
-
import "lit/directives/class-map.js";
|
|
3
|
-
import "lit/directives/style-map.js";
|
|
4
|
-
import { $ as f } from "./litElement.mixin-BYMdyxuB.js";
|
|
5
|
-
import "./tailwind.mixin-D2ZmggHb.js";
|
|
6
|
-
import { css as v, html as c, LitElement as m } from "lit";
|
|
7
|
-
import { query as y, property as a, queryAssignedElements as u, customElement as x } from "lit/decorators.js";
|
|
8
|
-
import { ifDefined as b } from "lit/directives/if-defined.js";
|
|
9
|
-
import { when as g } from "lit/directives/when.js";
|
|
10
|
-
var w = Object.defineProperty, L = Object.getOwnPropertyDescriptor, l = (t, e, r, n) => {
|
|
11
|
-
for (var p, i = n > 1 ? void 0 : n ? L(e, r) : e, h = t.length - 1; h >= 0; h--) (p = t[h]) && (i = (n ? p(e, r, i) : p(i)) || i);
|
|
12
|
-
return n && i && w(e, r, i), i;
|
|
13
|
-
};
|
|
14
|
-
let s = class extends f(v`
|
|
15
|
-
:host {
|
|
16
|
-
display: block;
|
|
17
|
-
width: fit-content;
|
|
18
|
-
}
|
|
19
|
-
`) {
|
|
20
|
-
constructor() {
|
|
21
|
-
super(...arguments), this.variant = "text", this.disabled = !1;
|
|
22
|
-
}
|
|
23
|
-
set ariaLabel(t) {
|
|
24
|
-
const e = this._ariaLabel;
|
|
25
|
-
this._ariaLabel = t, this.hasAttribute("aria-label") && this.removeAttribute("aria-label"), this.requestUpdate("ariaLabel", e);
|
|
26
|
-
}
|
|
27
|
-
get ariaLabel() {
|
|
28
|
-
return this._ariaLabel;
|
|
29
|
-
}
|
|
30
|
-
focus(t) {
|
|
31
|
-
this.nativeElement.focus(t);
|
|
32
|
-
}
|
|
33
|
-
blur() {
|
|
34
|
-
this.nativeElement.blur();
|
|
35
|
-
}
|
|
36
|
-
get imgClasses() {
|
|
37
|
-
return ["max-h-[24px]", "max-w-[24px]", "object-contain"];
|
|
38
|
-
}
|
|
39
|
-
firstUpdated() {
|
|
40
|
-
var t, e;
|
|
41
|
-
(t = this.prefixImgs) == null || t.forEach((r) => {
|
|
42
|
-
r.classList.add(...this.imgClasses);
|
|
43
|
-
}), (e = this.suffixImgs) == null || e.forEach((r) => {
|
|
44
|
-
r.classList.add(...this.imgClasses);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
click() {
|
|
48
|
-
this.dispatchEvent(new Event("click", { bubbles: !0, composed: !0 }));
|
|
49
|
-
}
|
|
50
|
-
render() {
|
|
51
|
-
const t = { "z-10 py-[8px] px-[16px] transition-all duration-200 relative rounded-full inline-flex justify-center items-center gap-[8px] outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-hidden": !0, "cursor-pointer": !this.disabled, "opacity-[0.38]": this.disabled, "hover:shadow-xs": !this.disabled && (this.variant == "outlined" || this.variant == "text" || this.variant == "filled" || this.variant == "filled tonal"), "hover:shadow-sm": !this.disabled && this.variant == "elevated", "w-full tex-center": this.width == "full", "bg-surface-low text-primary-default shadow-xs": this.variant == "elevated", "bg-transparent text-primary-default border-1 border-solid border-outline": this.variant == "outlined", "bg-primary-default text-primary-on": this.variant == "filled", "bg-secondary-container text-secondary-onContainer": this.variant == "filled tonal", "text-primary-default": this.variant == "text" }, e = { "absolute inset-0 hover:opacity-[0.08] z-0 rounded-full": !0, "hover:bg-primary-on": this.variant == "filled", "hover:bg-primary-default": this.variant == "outlined" || this.variant == "elevated" || this.variant == "text", "hover:bg-secondary-container": this.variant == "filled tonal" };
|
|
52
|
-
return c`
|
|
53
|
-
<button
|
|
54
|
-
aria-label=${b(this.ariaLabel)}
|
|
55
|
-
?disabled=${this.disabled}
|
|
56
|
-
class="${this.classMap(t)}"
|
|
57
|
-
type=${b(this.type)}
|
|
58
|
-
tabindex=${b(this.disabled ? "-1" : void 0)}
|
|
59
|
-
>
|
|
60
|
-
${g(!this.disabled, () => c` <div class="${this.classMap(e)}"></div> `)}
|
|
61
|
-
<slot name="prefix"></slot>
|
|
62
|
-
<slot> </slot>
|
|
63
|
-
<slot name="suffix"></slot>
|
|
64
|
-
</button>
|
|
65
|
-
`;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
s.shadowRootOptions = { ...m.shadowRootOptions, mode: "open", delegatesFocus: !0 }, l([y('[part="base"]', !0)], s.prototype, "nativeElement", 2), l([a({ reflect: !0, type: String })], s.prototype, "variant", 2), l([a()], s.prototype, "width", 2), l([a({ reflect: !0, type: String })], s.prototype, "type", 2), l([a()], s.prototype, "href", 2), l([a({ type: Boolean, reflect: !0 })], s.prototype, "disabled", 2), l([a({ attribute: "aria-label" })], s.prototype, "ariaLabel", 1), l([u({ slot: "prefix", flatten: !0, selector: "img" })], s.prototype, "prefixImgs", 2), l([u({ slot: "suffix", flatten: !0, selector: "img" })], s.prototype, "suffixImgs", 2), s = l([x("schmancy-button")], s);
|
|
69
|
-
var $ = Object.defineProperty, E = Object.getOwnPropertyDescriptor, d = (t, e, r, n) => {
|
|
70
|
-
for (var p, i = n > 1 ? void 0 : n ? E(e, r) : e, h = t.length - 1; h >= 0; h--) (p = t[h]) && (i = (n ? p(e, r, i) : p(i)) || i);
|
|
71
|
-
return n && i && $(e, r, i), i;
|
|
72
|
-
};
|
|
73
|
-
let o = class extends f(v`
|
|
74
|
-
:host {
|
|
75
|
-
display: block;
|
|
76
|
-
}
|
|
77
|
-
`) {
|
|
78
|
-
constructor() {
|
|
79
|
-
super(...arguments), this.size = "md", this.variant = "text", this.disabled = !1;
|
|
80
|
-
}
|
|
81
|
-
set ariaLabel(t) {
|
|
82
|
-
const e = this._ariaLabel;
|
|
83
|
-
this._ariaLabel = t, this.hasAttribute("aria-label") && this.removeAttribute("aria-label"), this.requestUpdate("ariaLabel", e);
|
|
84
|
-
}
|
|
85
|
-
get ariaLabel() {
|
|
86
|
-
return this._ariaLabel;
|
|
87
|
-
}
|
|
88
|
-
focus(t) {
|
|
89
|
-
this.nativeElement.focus(t);
|
|
90
|
-
}
|
|
91
|
-
blur() {
|
|
92
|
-
this.nativeElement.blur();
|
|
93
|
-
}
|
|
94
|
-
click() {
|
|
95
|
-
this.dispatchEvent(new Event("click", { bubbles: !0, composed: !0 }));
|
|
96
|
-
}
|
|
97
|
-
firstUpdated(t) {
|
|
98
|
-
}
|
|
99
|
-
render() {
|
|
100
|
-
const t = { "h-full z-10 transition-all duration-200 relative rounded-full inline-flex justify-center items-center focus:outline-hidden": !0, "opacity-[0.38]": this.disabled, "cursor-pointer": !this.disabled, "hover:shadow-xs": !this.disabled && (this.variant == "outlined" || this.variant == "text" || this.variant == "filled" || this.variant == "filled tonal"), "hover:shadow-sm": !this.disabled && this.variant == "elevated", "w-full tex-center": this.width == "full", "bg-surface-low text-primary-default shadow-xs": this.variant == "elevated", "bg-transparent text-primary-default border-1 border-outline": this.variant == "outlined", "bg-primary-default text-primary-on": this.variant == "filled", "bg-secondary-container text-secondary-onContainer": this.variant == "filled tonal", "text-primary-default": this.variant == "text", "px-[6px] py-[6px]": this.size == "sm", "px-[8px] py-[8px]": this.size == "md", "px-[12px] py-[12px]": this.size == "lg" }, e = { "hover:opacity-[0.08] rounded-full z-0": !0, "hover:bg-primary-on": this.variant == "filled", "hover:bg-primary-default": this.variant == "outlined" || this.variant == "elevated" || this.variant == "text", "hover:bg-secondary-container": this.variant == "filled tonal" };
|
|
101
|
-
return c`
|
|
102
|
-
<button
|
|
103
|
-
part="base"
|
|
104
|
-
aria-label=${b(this.ariaLabel)}
|
|
105
|
-
?disabled=${this.disabled}
|
|
106
|
-
class="${this.classMap(t)}"
|
|
107
|
-
type=${b(this.type)}
|
|
108
|
-
tabindex=${b(this.disabled ? "-1" : void 0)}
|
|
109
|
-
>
|
|
110
|
-
${g(!this.disabled, () => c` <div class="absolute inset-0 ${this.classMap(e)}"></div> `)}
|
|
111
|
-
<schmancy-icon size=${this.size === "sm" ? "18px" : this.size === "md" ? "24px" : "32px"}>
|
|
112
|
-
<slot> </slot
|
|
113
|
-
></schmancy-icon>
|
|
114
|
-
</button>
|
|
115
|
-
`;
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
o.shadowRootOptions = { ...m.shadowRootOptions, mode: "open", delegatesFocus: !0 }, d([y('[part="base"]', !0)], o.prototype, "nativeElement", 2), d([a({ type: String })], o.prototype, "size", 2), d([a({ reflect: !0, type: String })], o.prototype, "variant", 2), d([a()], o.prototype, "width", 2), d([a({ reflect: !0, type: String })], o.prototype, "type", 2), d([a()], o.prototype, "href", 2), d([a({ type: Boolean, reflect: !0 })], o.prototype, "disabled", 2), d([a({ attribute: "aria-label" })], o.prototype, "ariaLabel", 1), o = d([x("schmancy-icon-button")], o);
|
|
119
|
-
export {
|
|
120
|
-
s as S,
|
|
121
|
-
o as a
|
|
122
|
-
};
|
|
123
|
-
//# sourceMappingURL=icon-button-CYNjACmd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-button-CYNjACmd.js","sources":["../src/button/button.ts","../src/button/icon-button.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nexport interface SchmancyButtonEventMap {\n\tSchmancyFocus: CustomEvent<void>\n\tSchmancyBlur: CustomEvent<void>\n}\n\nexport type ButtonVariant = 'elevated' | 'filled' | 'filled tonal' | 'outlined' | 'text'\n\n/**\n * A button component.\n * @element schmancy-button\n * @slot - The default slot.\n * @slot prefix - The prefix slot.\n * @slot suffix - The suffix slot.\n */\n@customElement('schmancy-button')\nexport class SchmnacyButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: fit-content;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t/**\n\t * The variant of the button. Defaults to undefined.\n\t * @attr\n\t * @default 'filled'\n\t * @public\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button. Defaults to 'auto'.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t * @public\n\t */\n\t@property()\n\tpublic width!: 'full' | 'auto'\n\n\t/**\n\t * The type of the button. Defaults to undefined.\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type!: 'button' | 'reset' | 'submit'\n\n\t/**\n\t * The URL the button points to.\n\t * @attr\n\t */\n\t@property()\n\tpublic href!: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t@queryAssignedElements({\n\t\tslot: 'prefix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate prefixImgs!: HTMLImageElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'suffix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate suffixImgs!: HTMLImageElement[]\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['max-h-[24px]', 'max-w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.prefixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.suffixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'z-10 py-[8px] px-[16px] transition-all duration-200 relative rounded-full inline-flex justify-center items-center gap-[8px] outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant == 'outlined' ||\n\t\t\t\t\tthis.variant == 'text' ||\n\t\t\t\t\tthis.variant == 'filled' ||\n\t\t\t\t\tthis.variant == 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant == 'elevated',\n\t\t\t'w-full tex-center': this.width == 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant == 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-solid border-outline': this.variant == 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant == 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant == 'filled tonal',\n\t\t\t'text-primary-default': this.variant == 'text',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 hover:opacity-[0.08] z-0 rounded-full': true,\n\t\t\t'hover:bg-primary-on': this.variant == 'filled',\n\t\t\t'hover:bg-primary-default': this.variant == 'outlined' || this.variant == 'elevated' || this.variant == 'text',\n\t\t\t'hover:bg-secondary-container': this.variant == 'filled tonal',\n\t\t}\n\t\treturn html`\n\t\t\t<button\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div> `)}\n\t\t\t\t<slot name=\"prefix\"></slot>\n\t\t\t\t<slot> </slot>\n\t\t\t\t<slot name=\"suffix\"></slot>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-button': SchmnacyButton\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { ButtonVariant } from './button'\n\n/**\n * A button component.\n * @element schmancy-icon-button\n * @slot - The default slot.\n * @slot prefix - The prefix slot.\n * @slot suffix - The suffix slot.\n */\n@customElement('schmancy-icon-button')\nexport class SchmnacyIconButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t@property({ type: String })\n\tpublic size: 'sm' | 'md' | 'lg' = 'md'\n\n\t/**\n\t * The variant of the button. Defaults to undefined.\n\t * @attr\n\t * @default 'filled'\n\t * @public\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button. Defaults to 'auto'.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t * @public\n\t */\n\t@property()\n\tpublic width!: 'full' | 'auto'\n\n\t/**\n\t * The type of the button. Defaults to undefined.\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type!: 'button' | 'reset' | 'submit'\n\n\t/**\n\t * The URL the button points to.\n\t * @attr\n\t */\n\t@property()\n\tpublic href!: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\tprotected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'h-full z-10 transition-all duration-200 relative rounded-full inline-flex justify-center items-center focus:outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant == 'outlined' ||\n\t\t\t\t\tthis.variant == 'text' ||\n\t\t\t\t\tthis.variant == 'filled' ||\n\t\t\t\t\tthis.variant == 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant == 'elevated',\n\t\t\t'w-full tex-center': this.width == 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant == 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-outline': this.variant == 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant == 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant == 'filled tonal',\n\t\t\t'text-primary-default': this.variant == 'text',\n\t\t\t'px-[6px] py-[6px]': this.size == 'sm',\n\t\t\t'px-[8px] py-[8px]': this.size == 'md',\n\t\t\t'px-[12px] py-[12px]': this.size == 'lg',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'hover:opacity-[0.08] rounded-full z-0': true,\n\t\t\t'hover:bg-primary-on': this.variant == 'filled',\n\t\t\t'hover:bg-primary-default': this.variant == 'outlined' || this.variant == 'elevated' || this.variant == 'text',\n\t\t\t'hover:bg-secondary-container': this.variant == 'filled tonal',\n\t\t}\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tpart=\"base\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html` <div class=\"absolute inset-0 ${this.classMap(stateLayerClasses)}\"></div> `)}\n\t\t\t\t<schmancy-icon size=${this.size === 'sm' ? '18px' : this.size === 'md' ? '24px' : '32px'}>\n\t\t\t\t\t<slot> </slot\n\t\t\t\t></schmancy-icon>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon-button': SchmnacyIconButton\n\t}\n}\n"],"names":["SchmnacyButton","$LitElement","css","super","arguments","this","variant","disabled","value","oldVal","_ariaLabel","hasAttribute","removeAttribute","requestUpdate","options","nativeElement","focus","blur","prefixImgs","forEach","img","classList","add","imgClasses","suffixImgs","dispatchEvent","Event","bubbles","composed","classes","width","stateLayerClasses","html","ifDefined","ariaLabel","classMap","type","undefined","when","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","query","prototype","property","reflect","String","Boolean","attribute","queryAssignedElements","slot","flatten","selector","customElement","SchmnacyIconButton","size","_changedProperties","render"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-By2qm_Uq.js","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n/** Common autocomplete/autofill hints. Extend as needed. */\ntype AutoFill =\n\t| 'on'\n\t| 'off'\n\t| 'name'\n\t| 'username'\n\t| 'email'\n\t| 'new-password'\n\t| 'current-password'\n\t| 'organization-title'\n\t| 'none'\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement() {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type:\n\t\t| 'email'\n\t\t| 'number'\n\t\t| 'password'\n\t\t| 'search'\n\t\t| 'tel'\n\t\t| 'text'\n\t\t| 'url'\n\t\t| 'date'\n\t\t| 'datetime-local'\n\t\t| 'time'\n\t\t| 'month'\n\t\t| 'week'\n\t\t| 'color'\n\t\t| 'file' = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String })\n\tpublic autocomplete: AutoFill = 'off'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-primary-default ring-outline focus:ring-primary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<form @submit=${(e: Event) => e.preventDefault()} .autocomplete=${this.autocomplete === 'off' ? 'off' : 'on'}>\n\t\t\t\t<input\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t\t})}\n\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\tid=${this.id}\n\t\t\t\t\tname=${this.name}\n\t\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t\t.value=${this.value}\n\t\t\t\t\t.type=${this.type}\n\t\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t\t?required=${this.required}\n\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t?readonly=${this.readonly}\n\t\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t\t/>\n\t\t\t</form>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[4px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"body\" token=\"sm\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","constructor","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","getValidity","validity","options","Event","click","blur","render","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","e","preventDefault","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-CdgeGV93.cjs","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n/** Common autocomplete/autofill hints. Extend as needed. */\ntype AutoFill =\n\t| 'on'\n\t| 'off'\n\t| 'name'\n\t| 'username'\n\t| 'email'\n\t| 'new-password'\n\t| 'current-password'\n\t| 'organization-title'\n\t| 'none'\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement() {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type:\n\t\t| 'email'\n\t\t| 'number'\n\t\t| 'password'\n\t\t| 'search'\n\t\t| 'tel'\n\t\t| 'text'\n\t\t| 'url'\n\t\t| 'date'\n\t\t| 'datetime-local'\n\t\t| 'time'\n\t\t| 'month'\n\t\t| 'week'\n\t\t| 'color'\n\t\t| 'file' = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String })\n\tpublic autocomplete: AutoFill = 'off'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-primary-default ring-outline focus:ring-primary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<form @submit=${(e: Event) => e.preventDefault()} .autocomplete=${this.autocomplete === 'off' ? 'off' : 'on'}>\n\t\t\t\t<input\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t\t})}\n\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\tid=${this.id}\n\t\t\t\t\tname=${this.name}\n\t\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t\t.value=${this.value}\n\t\t\t\t\t.type=${this.type}\n\t\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t\t?required=${this.required}\n\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t?readonly=${this.readonly}\n\t\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t\t/>\n\t\t\t</form>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[4px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"body\" token=\"sm\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","undefined","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","getValidity","validity","options","Event","click","blur","render","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","e","preventDefault","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"option-BHH_JwXm.js","sources":["../src/option/option.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nexport type SchmancyOptionChangeEvent = CustomEvent<{\n\tvalue: string\n\tlabel: string\n}>\n\n@customElement('schmancy-option')\nexport default class SchmancyOption extends TailwindElement() {\n\t@property({ type: String, reflect: true }) value: string = ''\n\t@property({ type: String, reflect: true }) label: string | undefined\n\t@property({ type: Boolean }) selected: boolean = false\n\n\tprivate handleOptionClick() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancyOptionChangeEvent['detail']>('click', {\n\t\t\t\tdetail: {\n\t\t\t\t\tvalue: this.value,\n\t\t\t\t\tlabel: this.label ?? this.textContent?.trim() ?? '',\n\t\t\t\t},\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t// override focus method to focus the native element\n\tfocus() {\n\t\tthis.shadowRoot?.querySelector('li')?.focus()\n\t}\n\n\tprotected render() {\n\t\t// Apply highlight styles if `this.selected` is true\n\t\tconst classes = {\n\t\t\t'outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:-outline-offset-2':\n\t\t\t\ttrue,\n\t\t\t'font-semibold relative cursor-pointer py-2 px-3': true,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\t\tconst stateLayerClasses = {\n\t\t\t'duration-500 transition-opacity': true,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<li\n\t\t\t\ttabindex=\"0\"\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\trole=\"option\"\n\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\tthis.handleOptionClick()\n\t\t\t\t}}\n\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.handleOptionClick()\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div class=\"${this.classMap(stateLayerClasses)}\"></div>\n\t\t\t\t<schmancy-flex class=\"text-start\" align=\"center\" justify=\"between\" flow=\"row\">\n\t\t\t\t\t<slot class=\"self-start\"></slot>\n\t\t\t\t\t<slot name=\"support\">\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t</slot>\n\t\t\t\t</schmancy-flex>\n\t\t\t</li>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-option': SchmancyOption\n\t}\n}\n"],"names":["SchmancyOption","TailwindElement","super","arguments","this","value","selected","handleOptionClick","dispatchEvent","CustomEvent","detail","label","textContent","trim","bubbles","composed","shadowRoot","querySelector","focus","classes","html","classMap","e","stopPropagation","preventDefault","key","__decorateClass","property","type","String","reflect","prototype","Boolean","customElement"],"mappings":";;;;;;;;;;AAUA,IAAqBA,IAArB,cAA4CC,EAA5C,EAAA;AAAA,EAAA,cAAAC;AAAAA,UAAAA,GAAAC,SAC4DC,GAAAA,KAAAC,QAAA,IAEVD,KAAAE,WAAAA;AAAAA,EAAA;AAAA,EAEzC,oBAAAC;;AACFH,SAAAI,cACJ,IAAIC,YAAiD,SAAS,EAC7DC,QAAQ,EACPL,OAAOD,KAAKC,OACZM,OAAOP,KAAKO,WAASP,IAAAA,KAAKQ,gBAALR,gBAAAA,EAAkBS,WAAU,GAAA,GAElDC,SAAS,IACTC,UAAU,GAAA,CAAA,CAAA;AAAA,EAEZ;AAAA,EAID,QACCX;;AAAAA,KAAAA,KAAAA,IAAAA,KAAKY,eAALZ,gBAAAA,EAAiBa,cAAc,UAA/Bb,QAAAA,EAAsCc;AAAAA,EAAM;AAAA,EAGnC,SAET;AAAA,UAAMC,IAAU,EACf,iHACC,IACD,mDAAmD,IACnD,qDAAqDf,KAAKE,SAOpD;AAAA,WAAAc;AAAAA;AAAAA;AAAAA,aAGIhB,KAAKiB,SAASF,CAAAA,CAAAA;AAAAA;AAAAA,aAEbG,OAAAA;AACTA,QAAEC,gBAAAA,GACFD,EAAEE,eAAAA,GACFpB,KAAKG,kBAAkB;AAAA,IAAA,CAAA;AAAA,eAEZe,OACG;AAAA,MAAVA,EAAEG,QAAQ,WAAWH,EAAEG,QAAQ,QAClCH,EAAEC,gBACFD,GAAAA,EAAEE,eACFpB,GAAAA,KAAKG,kBAAkB;AAAA,IAAA,CAAA;AAAA;AAAA,kBAIXH,KAAKiB,SAvBK,EACzB,mCAAmC,IACnC,sEAAsE,GAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBvB;AAAA;AArDNK,EAAA,CAA1CC,EAAS,EAAEC,MAAMC,QAAQC,SAAS,GAAA,CAAA,CAAA,GADf9B,EACuB+B,WAAA,SAAA,CACAL,GAAAA,EAAA,CAA1CC,EAAS,EAAEC,MAAMC,QAAQC,SAAAA,GAFN9B,CAAAA,CAAAA,GAAAA,EAEuB+B,WAAA,SAAA,CAAA,GACdL,EAAA,CAA5BC,EAAS,EAAEC,MAAMI,QAHEhC,CAAAA,CAAAA,GAAAA,EAGS+B,WAAA,YAAA,CAAA,GAHT/B,IAArB0B,EAAA,CADCO,EAAc,iBACMjC,CAAAA,GAAAA,CAAAA;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"option-D2uLD4HI.cjs","sources":["../src/option/option.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nexport type SchmancyOptionChangeEvent = CustomEvent<{\n\tvalue: string\n\tlabel: string\n}>\n\n@customElement('schmancy-option')\nexport default class SchmancyOption extends TailwindElement() {\n\t@property({ type: String, reflect: true }) value: string = ''\n\t@property({ type: String, reflect: true }) label: string | undefined\n\t@property({ type: Boolean }) selected: boolean = false\n\n\tprivate handleOptionClick() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancyOptionChangeEvent['detail']>('click', {\n\t\t\t\tdetail: {\n\t\t\t\t\tvalue: this.value,\n\t\t\t\t\tlabel: this.label ?? this.textContent?.trim() ?? '',\n\t\t\t\t},\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t// override focus method to focus the native element\n\tfocus() {\n\t\tthis.shadowRoot?.querySelector('li')?.focus()\n\t}\n\n\tprotected render() {\n\t\t// Apply highlight styles if `this.selected` is true\n\t\tconst classes = {\n\t\t\t'outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:-outline-offset-2':\n\t\t\t\ttrue,\n\t\t\t'font-semibold relative cursor-pointer py-2 px-3': true,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\t\tconst stateLayerClasses = {\n\t\t\t'duration-500 transition-opacity': true,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<li\n\t\t\t\ttabindex=\"0\"\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\trole=\"option\"\n\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\tthis.handleOptionClick()\n\t\t\t\t}}\n\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.handleOptionClick()\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div class=\"${this.classMap(stateLayerClasses)}\"></div>\n\t\t\t\t<schmancy-flex class=\"text-start\" align=\"center\" justify=\"between\" flow=\"row\">\n\t\t\t\t\t<slot class=\"self-start\"></slot>\n\t\t\t\t\t<slot name=\"support\">\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t</slot>\n\t\t\t\t</schmancy-flex>\n\t\t\t</li>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-option': SchmancyOption\n\t}\n}\n"],"names":["SchmancyOption","TailwindElement","constructor","super","arguments","this","value","selected","handleOptionClick","dispatchEvent","CustomEvent","detail","label","textContent","trim","bubbles","composed","focus","shadowRoot","querySelector","classes","html","classMap","e","stopPropagation","preventDefault","key","__decorateClass","property","type","String","reflect","prototype","Boolean","customElement"],"mappings":"4YAUA,IAAqBA,EAArB,cAA4CC,EAAAA,gBAAAA,CAAAA,CAA5C,aAAAC,CAAAC,MAAAC,GAAAA,SAAAA,EAC4DC,KAAAC,MAAA,GAEVD,KAAAE,SAAAA,EAAA,CAEzC,mBAAAC,OACFH,KAAAI,cACJ,IAAIC,YAAiD,QAAS,CAC7DC,OAAQ,CACPL,MAAOD,KAAKC,MACZM,MAAOP,KAAKO,SAASP,EAAAA,KAAKQ,cAALR,YAAAA,EAAkBS,SAAU,EAElDC,EAAAA,QAAAA,GACAC,SAAAA,EAEF,CAAA,CAAA,CAAA,CAID,OAAAC,UACCZ,GAAAA,EAAAA,KAAKa,aAALb,YAAAA,EAAiBc,cAAc,QAA/Bd,MAAAA,EAAsCY,OAAM,CAGnC,QAET,CAAA,MAAMG,EAAU,CACf,gHACC,GACD,kDAAmD,GACnD,oDAAqDf,KAAKE,QAOpD,EAAA,OAAAc,EAAAA;AAAAA;AAAAA;AAAAA,aAGIhB,KAAKiB,SAASF,CAAAA,CAAAA;AAAAA;AAAAA,aAEbG,GAAAA,CACTA,EAAEC,gBAAAA,EACFD,EAAEE,eAAAA,EACFpB,KAAKG,kBAAkB,CAAA,CAAA;AAAA,eAEZe,GACG,CAAVA,EAAEG,MAAQ,SAAWH,EAAEG,MAAQ,MAClCH,EAAEC,gBACFD,EAAAA,EAAEE,eACFpB,EAAAA,KAAKG,kBAAkB,EAAA,CAAA;AAAA;AAAA,kBAIXH,KAAKiB,SAvBK,CACzB,kCAAmC,GACnC,qEAAsE,EAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBvB,CAAA,EArDNK,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMC,OAAQC,QAAS,EAAA,CAAA,CAAA,EADf/B,EACuBgC,UAAA,QAAA,GACAL,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMC,OAAQC,QAAAA,EAFN/B,CAAAA,CAAAA,EAAAA,EAEuBgC,UAAA,QAAA,CAAA,EACdL,EAAA,CAA5BC,WAAS,CAAEC,KAAMI,WAHEjC,EAGSgC,UAAA,WAAA,CAHThC,EAAAA,EAArB2B,EAAA,CADCO,EAAAA,cAAc,iBACMlC,CAAAA,EAAAA,CAAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-CZfw92Ty.js","sources":["../src/select/select.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\n\nexport type SchmancySelectChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-select')\nexport class SchmancySelect extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t[role='listbox'] {\n\t\tmax-height: 25vh;\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t}\n`) {\n\t// API\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) value = '' // for single-select\n\t@property({ type: Array }) selectedValues: string[] = [] // for multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private valueLabel = ''\n\n\t@query('ul') private ul!: HTMLUListElement\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.addEventListener('keydown', this.handleKeyDown)\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.removeEventListener('keydown', this.handleKeyDown)\n\t\tthis.cleanupPositioner?.()\n\t}\n\n\tfirstUpdated() {\n\t\t// Initial sync\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\t/**\n\t * Whenever new <schmancy-option> children get slotted in,\n\t * or whenever properties change, ensure the correct .selected states\n\t * and display text are applied.\n\t */\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\t// For multi-select, figure out what's already marked selected in the DOM\n\t\t\tthis.selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.valueLabel =\n\t\t\t\tthis.selectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t.filter(o => this.selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\t// Single\n\t\t\tconst selectedOption = this.options.find(o => o.value === this.value)\n\t\t\tthis.valueLabel = selectedOption?.label || this.placeholder\n\t\t}\n\t}\n\n\t/**\n\t * We can also set up any ARIA attributes here.\n\t * Note that we’re toggling `aria-selected` for screen readers,\n\t * but the highlight in CSS is triggered by the option’s `selected` property.\n\t */\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options.forEach(option => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute(\n\t\t\t\t'aria-selected',\n\t\t\t\tString(this.multi ? this.selectedValues.includes(option.value) : option.value === this.value),\n\t\t\t)\n\t\t})\n\t}\n\n\t/**\n\t * Use @floating-ui/dom to position the <ul> under the \"trigger\" input.\n\t */\n\tprivate async positionDropdown() {\n\t\tconst reference = this.renderRoot.querySelector('.trigger') as HTMLElement\n\t\tif (!reference || !this.ul) return\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: 'bottom-start',\n\t\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t\t})\n\n\t\t\tObject.assign(this.ul.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t\tposition: 'absolute',\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Keydown logic for opening/closing the dropdown and navigating options.\n\t */\n\tprivate handleKeyDown(e: KeyboardEvent) {\n\t\t// If dropdown is closed, certain keys will open it:\n\t\tif (!this.isOpen) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.openDropdown()\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// If open, handle arrow up/down, enter, escape, etc.\n\t\tconst current = this.options.findIndex(o => o.matches(':focus')) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(this.options, Math.min(current + 1, this.options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(this.options, Math.max(current - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (current >= 0) this.handleOptionSelect(this.options[current].value)\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\toptions[index]?.focus()\n\t}\n\n\tprivate async openDropdown() {\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete // Wait for lit to render\n\n\t\tthis.positionDropdown()\n\t\tthis.setupOptionsAccessibility()\n\n\t\t// Optionally focus the currently selected item:\n\t\tconst options = Array.from(this.ul.querySelectorAll('[role=\"option\"]')) as HTMLElement[]\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.getAttribute('value') === this.value)\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis.isOpen = false\n\t\tthis.cleanupPositioner?.()\n\t\tthis.cleanupPositioner = undefined\n\t\t// Return focus to the trigger (optional):\n\t\tthis.renderRoot.querySelector<HTMLButtonElement>('.trigger')?.focus()\n\t}\n\n\t/**\n\t * Main method for toggling or setting selected items.\n\t */\n\tprivate handleOptionSelect(value: string) {\n\t\tif (this.multi) {\n\t\t\t// Multi-select: Toggle the .selected property on the clicked option\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (!option) return\n\n\t\t\toption.selected = !option.selected\n\t\t\t// Rebuild selectedValues\n\t\t\tif (option.selected) {\n\t\t\t\tthis.selectedValues = [...this.selectedValues, value]\n\t\t\t} else {\n\t\t\t\tthis.selectedValues = this.selectedValues.filter(v => v !== value)\n\t\t\t}\n\n\t\t\t// Update the visible label\n\t\t\tthis.valueLabel =\n\t\t\t\tthis.selectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t.filter(o => this.selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: this.placeholder\n\n\t\t\t// Dispatch \"change\" event\n\t\t\tthis.dispatchChange(this.selectedValues)\n\t\t} else {\n\t\t\t// Single select: unselect all, select the clicked one\n\t\t\tthis.options.forEach(o => (o.selected = o.value === value))\n\t\t\tthis.value = value\n\t\t\tthis.valueLabel = this.options.find(o => o.value === value)?.label || this.placeholder\n\t\t\tthis.dispatchChange(value)\n\t\t\t// Close after selecting\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\t// Also update aria-selected for accessibility\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancySelectChangeEvent['detail']>('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- Some trigger (schmancy-input) -->\n\t\t\t\t<schmancy-input\n\t\t\t\t\tclass=\"trigger\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t.value=${this.valueLabel}\n\t\t\t\t\treadonly\n\t\t\t\t\t@click=${() => (this.isOpen ? this.closeDropdown() : this.openDropdown())}\n\t\t\t\t></schmancy-input>\n\n\t\t\t\t<!-- Transparent overlay to close dropdown by clicking outside -->\n\t\t\t\t<div\n\t\t\t\t\tid=\"overlay\"\n\t\t\t\t\tclass=\"fixed inset-0\"\n\t\t\t\t\t?hidden=${!this.isOpen}\n\t\t\t\t\t@click=${this.closeDropdown}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t></div>\n\n\t\t\t\t<!-- The dropdown options container -->\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\t'absolute z-30 mt-1 w-full rounded-md shadow-sm': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// If a <schmancy-option> inside was clicked, it dispatches a 'click' event\n\t\t\t\t\t\t// with detail.value. We can read that here:\n\t\t\t\t\t\tconst customEvt = e as CustomEvent\n\t\t\t\t\t\tconst detailVal = customEvt.detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionSelect(detailVal)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<!-- The <schmancy-option> elements get slotted in here -->\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis.syncSelection()\n\t\t\t\t\t\t\tthis.setupOptionsAccessibility()\n\t\t\t\t\t\t}}\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n"],"names":["SchmancySelect","$LitElement","css","constructor","super","arguments","this","required","placeholder","value","selectedValues","multi","label","isOpen","valueLabel","connectedCallback","addEventListener","handleKeyDown","disconnectedCallback","removeEventListener","cleanupPositioner","firstUpdated","syncSelection","setupOptionsAccessibility","options","filter","o","selected","map","length","includes","join","selectedOption","find","forEach","option","setAttribute","tabIndex","String","reference","renderRoot","querySelector","ul","autoUpdate","async","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","style","left","top","position","e","key","preventDefault","openDropdown","current","findIndex","matches","closeDropdown","focusOption","Math","min","max","handleOptionSelect","index","focus","updateComplete","positionDropdown","Array","from","querySelectorAll","selectedIndex","getAttribute","v","dispatchChange","dispatchEvent","CustomEvent","detail","bubbles","composed","html","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","container","customEvt","detailVal","__decorateClass","property","type","Boolean","prototype","state","query","queryAssignedElements","flatten","customElement"],"mappings":";;;;;;;;;;;;;;AAca,IAAAA,IAAN,cAA6BC,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAAzC,cAAAC;AAAAC,UAAAC,GAAAA,SAAAA,GAakCC,KAAAC,WAAAA,IACED,KAAAE,cAAA,IACNF,KAAAG,QAAA,IACTH,KAAAI,iBAA2B,CAAA,GACjBJ,KAAAK,QAAAA,IACDL,KAAAM,QAAA,IAG3BN,KAAQO,SAAAA,IACRP,KAAQQ,aAAa;AAAA,EAAA;AAAA,EAM9B,oBAAAC;AACCX,UAAMW,kBAAAA,GACDT,KAAAU,iBAAiB,WAAWV,KAAKW,aAAAA;AAAAA,EAAa;AAAA,EAGpD,uBACCb;;AAAAA,UAAMc,wBACDZ,KAAAa,oBAAoB,WAAWb,KAAKW,aACzCX,IAAAA,IAAAA,KAAKc,sBAALd,QAAAA,EAAAA;AAAAA,EAAyB;AAAA,EAG1B,eAAAe;AAECf,SAAKgB,cAAAA,GACLhB,KAAKiB,0BAAAA;AAAAA,EAA0B;AAAA,EAQxB,gBAAAD;AACP,QAAIhB,KAAKK,MAEHL,MAAAI,iBAAiBJ,KAAKkB,QAAQC,OAAOC,CAAAA,MAAKA,EAAEC,QAAAA,EAAUC,IAASF,CAAAA,MAAAA,EAAEjB,KACjEH,GAAAA,KAAAQ,aACJR,KAAKI,eAAemB,SAAS,IAC1BvB,KAAKkB,QACJC,OAAYC,CAAAA,MAAApB,KAAKI,eAAeoB,SAASJ,EAAEjB,KAC3CmB,CAAAA,EAAAA,IAASF,CAAAA,MAAAA,EAAEd,KACXmB,EAAAA,KAAK,IACNzB,IAAAA,KAAKE;AAAAA,SACH;AAEA,YAAAwB,IAAiB1B,KAAKkB,QAAQS,YAAUP,EAAEjB,UAAUH,KAAKG,KAC1DH;AAAAA,WAAAQ,cAAakB,KAAAA,gBAAAA,EAAgBpB,UAASN,KAAKE;AAAAA,IAAA;AAAA,EACjD;AAAA,EAQO,4BAAAe;AACFjB,SAAAkB,QAAQU,QAAkBC,CAAAA,MAAAA;AACvBA,MAAAA,EAAAC,aAAa,QAAQ,QAC5BD,GAAAA,EAAOE,WAAW,IACXF,EAAAC,aACN,iBACAE,OAAOhC,KAAKK,QAAQL,KAAKI,eAAeoB,SAASK,EAAO1B,KAAAA,IAAS0B,EAAO1B,UAAUH,KAAKG,KAAAA,CAAAA;AAAAA,IACxF;EACA;AAAA,EAMF,MAAA,mBACC;AAAA,UAAM8B,IAAYjC,KAAKkC,WAAWC,cAAc,UAC3CF;AAAAA,IAAAA,KAAcjC,KAAKoC,OAExBpC,KAAKc,oBAAoBuB,EAAWJ,GAAWjC,KAAKoC,IAAIE,YAAAA;AACjD,YAAAC,EAAAA,GAAEA,MAAGC,EAAYC,IAAAA,MAAAA,EAAgBR,GAAWjC,KAAKoC,IAAI,EAC1DM,WAAW,gBACXC,YAAY,CAACC,EAAO,CAAIC,GAAAA,EAAAA,GAAQC,EAAM,EAAEC,SAAS,EAG3CC,CAAAA,CAAAA,EAAAA,CAAAA;AAAAA,aAAAC,OAAOjD,KAAKoC,GAAGc,OAAO,EAC5BC,MAAM,GAAGZ,CACTa,MAAAA,KAAK,GAAGZ,CAAAA,MACRa,UAAU,WAAA,CAAA;AAAA,IACV,CACD;AAAA,EAAA;AAAA,EAMM,cAAcC;AAEjB,QAACtD,CAAAA,KAAKO,OAKT,QAAA,MAJI,CAAC,SAAS,KAAK,WAAA,EAAaiB,SAAS8B,EAAEC,GAC1CD,MAAAA,EAAEE,eACFxD,GAAAA,KAAKyD;AAMD,UAAAC,IAAU1D,KAAKkB,QAAQyC,iBAAevC,EAAEwC,QAAQ,QAAc,CAAA,KAAA;AAEpE,YAAQN,EAAEC,KACT;AAAA,MAAA,KAAK;AAAA,MAgBL,KAAK;AACJvD,aAAK6D,cAAAA;AACL;AAAA,MAfD,KAAK;AACJP,QAAAA,EAAEE,eAAAA,GACGxD,KAAA8D,YAAY9D,KAAKkB,SAAS6C,KAAKC,IAAIN,IAAU,GAAG1D,KAAKkB,QAAQK,SAAS,CAC3E,CAAA;AAAA;AAAA,MACD,KAAK;AACJ+B,QAAAA,EAAEE,eAAAA,GACGxD,KAAA8D,YAAY9D,KAAKkB,SAAS6C,KAAKE,IAAIP,IAAU,GAAG,CAAA,CAAA;AACrD;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJJ,QAAAA,EAAEE,eACEE,GAAAA,KAAW,KAAQ1D,KAAAkE,mBAAmBlE,KAAKkB,QAAQwC,CAASvD,EAAAA,KAAAA;AAAAA,IAAAA;AAAAA,EAKlE;AAAA,EAGO,YAAYe,GAAwBiD,GACnCjD;;AAAAA,KAAAA,IAAAA,EAAAiD,CAAQC,MAARlD,QAAAA,EAAQkD;AAAAA,EAAM;AAAA,EAGvB,MAAcX,eAAAA;AACbzD,SAAKO,SAAAA,IACCP,MAAAA,KAAKqE,gBAEXrE,KAAKsE,iBAAAA,GACLtE,KAAKiB,0BAAAA;AAGL,UAAMC,IAAUqD,MAAMC,KAAKxE,KAAKoC,GAAGqC,iBAAiB,iBAC9CC,CAAAA,GAAAA,IAAgB1E,KAAKK,QAAQ,IAAIa,EAAQyC,UAAevC,CAAAA,MAAAA,EAAEuD,aAAa,aAAa3E,KAAKG,KAAAA;AAC/FH,SAAK8D,YAAY5C,GAAS6C,KAAKE,IAAIS,GAAe,CAAE,CAAA;AAAA,EAAA;AAAA,EAG7C,gBAAAb;;AACP7D,SAAKO,SAAAA,KACLP,IAAAA,KAAKc,sBAALd,QAAAA,EAAAA,YACAA,KAAKc,oBAAAA,SAELd,IAAAA,KAAKkC,WAAWC,cAAiC,UAAaiC,MAA9DpE,QAAAA,EAA8DoE;AAAAA,EAAM;AAAA,EAM7D,mBAAmBjE,GAAAA;;AAC1B,QAAIH,KAAKK,OAAO;AAEf,YAAMwB,IAAS7B,KAAKkB,QAAQS,KAAUP,OAAAA,EAAEjB,UAAUA,CAClD;AAAA,UAAA,CAAK0B,EAAQ;AAENA,MAAAA,EAAAR,WAAYQ,CAAAA,EAAOR,UAEtBQ,EAAOR,WACVrB,KAAKI,iBAAiB,CAAA,GAAIJ,KAAKI,gBAAgBD,CAE/CH,IAAAA,KAAKI,iBAAiBJ,KAAKI,eAAee,OAAOyD,OAAKA,MAAMzE,CAAAA,GAIxDH,KAAAQ,aACJR,KAAKI,eAAemB,SAAS,IAC1BvB,KAAKkB,QACJC,OAAYC,CAAAA,MAAApB,KAAKI,eAAeoB,SAASJ,EAAEjB,KAAAA,CAAAA,EAC3CmB,IAASF,CAAAA,MAAAA,EAAEd,KAAAA,EACXmB,KAAK,IAAA,IACNzB,KAAKE,aAGJF,KAAA6E,eAAe7E,KAAKI,cAAc;AAAA,IAAA,MAGvCJ,MAAKkB,QAAQU,QAAQR,CAAAA,MAAMA,EAAEC,WAAWD,EAAEjB,UAAUA,CAAAA,GACpDH,KAAKG,QAAQA,GACRH,KAAAQ,eAAaR,IAAAA,KAAKkB,QAAQS,KAAKP,CAAAA,MAAKA,EAAEjB,UAAUA,CAAQG,MAA3CN,gBAAAA,EAA2CM,UAASN,KAAKE,aAC3EF,KAAK6E,eAAe1E,CAAAA,GAEpBH,KAAK6D,cAAAA;AAIN7D,SAAKiB,0BAAAA;AAAAA,EAA0B;AAAA,EAGxB,eAAed,GAAAA;AACjBH,SAAA8E,cACJ,IAAIC,YAAiD,UAAU,EAC9DC,QAAQ,EAAE7E,OAAAA,EAAAA,GACV8E,SAAS,IACTC,UAAU,GAAA,CAAA,CAAA;AAAA,EAEZ;AAAA,EAGD,SACQ;AAAA,WAAAC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,qBAOYnF,KAAKO,MAAAA;AAAAA;AAAAA,cAEZP,KAAKM,KAAAA;AAAAA,oBACCN,KAAKE,WAAAA;AAAAA,cACXF,KAAKQ,UAAAA;AAAAA;AAAAA,cAEL,MAAOR,KAAKO,SAASP,KAAK6D,cAAAA,IAAkB7D,KAAKyD,aAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,gBAO/CzD,KAAKO,MAAAA;AAAAA,cACPP,KAAK6D,aAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,aAQNuB,EAAS,EAChB,kDAAA,IACAC,QAAAA,CAASrF,KAAKO,OAAAA,CAAAA,CAAAA;AAAAA,OAEb+E,EAAM,EAAEC,SAASC,EAAcC,IAAIH,MAAMI,QAAQC,UAAAA,CAAAA,CAAAA;AAAAA,cACzCrC,CAAAA,MAGT;;AAAA,YAAMsC,IAAYtC,GACZuC,KAAYD,IAAAA,EAAUZ,WAAVY,gBAAAA,EAAkBzF;AAChC0F,WACH7F,KAAKkE,mBAAmB2B,CAAS;AAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,oBAMpB,MACb7F;AAAAA,WAAKgB,cACLhB,GAAAA,KAAKiB,0BAA0B;AAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAC/B;AAlQuB6E;AAAAA,EAAA,CAA5BC,EAAS,EAAEC,MAAMC,QAbNvG,CAAAA,CAAAA,GAAAA,EAaiBwG,WAAA,YAAA,CAAA,GACDJ,EAAA,CAA3BC,EAAS,EAAEC,MAAMhE,OAAAA,CAAAA,CAAAA,GAdNtC,EAcgBwG,WAAA,eAAA,CACAJ,GAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAMhE,OAAAA,CAAAA,CAAAA,GAfNtC,EAegBwG,WAAA,SAAA,IACDJ,EAAA,CAA1BC,EAAS,EAAEC,MAAMzB,WAhBN7E,EAgBewG,WAAA,kBAAA,CACEJ,GAAAA,EAAA,CAA5BC,EAAS,EAAEC,MAAMC,QAAAA,CAAAA,CAAAA,GAjBNvG,EAiBiBwG,WAAA,SAAA,CACDJ,GAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAMhE,OAlBNtC,CAAAA,CAAAA,GAAAA,EAkBgBwG,WAAA,SAAA,CAAA,GAGXJ,EAAA,CAAhBK,EAAAA,CAAAA,GArBWzG,EAqBKwG,WAAA,UAAA,IACAJ,EAAA,CAAhBK,EAtBWzG,CAAAA,GAAAA,EAsBKwG,WAAA,cAAA,IAEIJ,EAAA,CAApBM,EAAM,IAxBK1G,CAAAA,GAAAA,EAwBSwG,WAAA,MAAA,CAAA,GAC6BJ,EAAA,CAAjDO,EAAsB,EAAEC,YAzBb5G,CAAAA,CAAAA,GAAAA,EAyBsCwG,WAAA,WAAA,CAAA,GAzBtCxG,IAANoG,EAAA,CADNS,EAAc,iBAAA,CAAA,GACF7G;"}
|
package/dist/select-DYwm6zVU.cjs
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";const a=require("@floating-ui/dom");require("rxjs");const p=require("lit/directives/class-map.js");require("lit/directives/style-map.js");const u=require("./litElement.mixin-Cw4_sB4P.cjs");require("./tailwind.mixin-dEqmlmEI.cjs");const d=require("./ripple-C2BHbhcS.cjs"),y=require("./theme.interface-Xg5Zi46a.cjs"),h=require("lit"),o=require("lit/decorators.js");var m=Object.defineProperty,v=Object.getOwnPropertyDescriptor,l=(e,t,s,i)=>{for(var c,n=i>1?void 0:i?v(t,s):t,r=e.length-1;r>=0;r--)(c=e[r])&&(n=(i?c(t,s,n):c(n))||n);return i&&n&&m(t,s,n),n};exports.SchmancySelect=class extends u.$LitElement(h.css`
|
|
2
|
-
:host {
|
|
3
|
-
display: block;
|
|
4
|
-
position: relative;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
[role='listbox'] {
|
|
8
|
-
max-height: 25vh;
|
|
9
|
-
overflow-y: auto;
|
|
10
|
-
outline: none;
|
|
11
|
-
}
|
|
12
|
-
`){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.selectedValues=[],this.multi=!1,this.label="",this.isOpen=!1,this.valueLabel=""}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this.handleKeyDown)}disconnectedCallback(){var e;super.disconnectedCallback(),this.removeEventListener("keydown",this.handleKeyDown),(e=this.cleanupPositioner)==null||e.call(this)}firstUpdated(){this.syncSelection(),this.setupOptionsAccessibility()}syncSelection(){if(this.multi)this.selectedValues=this.options.filter(e=>e.selected).map(e=>e.value),this.valueLabel=this.selectedValues.length>0?this.options.filter(e=>this.selectedValues.includes(e.value)).map(e=>e.label).join(", "):this.placeholder;else{const e=this.options.find(t=>t.value===this.value);this.valueLabel=(e==null?void 0:e.label)||this.placeholder}}setupOptionsAccessibility(){this.options.forEach(e=>{e.setAttribute("role","option"),e.tabIndex=-1,e.setAttribute("aria-selected",String(this.multi?this.selectedValues.includes(e.value):e.value===this.value))})}async positionDropdown(){const e=this.renderRoot.querySelector(".trigger");e&&this.ul&&(this.cleanupPositioner=a.autoUpdate(e,this.ul,async()=>{const{x:t,y:s}=await a.computePosition(e,this.ul,{placement:"bottom-start",middleware:[a.offset(5),a.flip(),a.shift({padding:5})]});Object.assign(this.ul.style,{left:`${t}px`,top:`${s}px`,position:"absolute"})}))}handleKeyDown(e){if(!this.isOpen)return void(["Enter"," ","ArrowDown"].includes(e.key)&&(e.preventDefault(),this.openDropdown()));const t=this.options.findIndex(s=>s.matches(":focus"))??-1;switch(e.key){case"Escape":case"Tab":this.closeDropdown();break;case"ArrowDown":e.preventDefault(),this.focusOption(this.options,Math.min(t+1,this.options.length-1));break;case"ArrowUp":e.preventDefault(),this.focusOption(this.options,Math.max(t-1,0));break;case"Enter":case" ":e.preventDefault(),t>=0&&this.handleOptionSelect(this.options[t].value)}}focusOption(e,t){var s;(s=e[t])==null||s.focus()}async openDropdown(){this.isOpen=!0,await this.updateComplete,this.positionDropdown(),this.setupOptionsAccessibility();const e=Array.from(this.ul.querySelectorAll('[role="option"]')),t=this.multi?0:e.findIndex(s=>s.getAttribute("value")===this.value);this.focusOption(e,Math.max(t,0))}closeDropdown(){var e,t;this.isOpen=!1,(e=this.cleanupPositioner)==null||e.call(this),this.cleanupPositioner=void 0,(t=this.renderRoot.querySelector(".trigger"))==null||t.focus()}handleOptionSelect(e){var t;if(this.multi){const s=this.options.find(i=>i.value===e);if(!s)return;s.selected=!s.selected,s.selected?this.selectedValues=[...this.selectedValues,e]:this.selectedValues=this.selectedValues.filter(i=>i!==e),this.valueLabel=this.selectedValues.length>0?this.options.filter(i=>this.selectedValues.includes(i.value)).map(i=>i.label).join(", "):this.placeholder,this.dispatchChange(this.selectedValues)}else this.options.forEach(s=>s.selected=s.value===e),this.value=e,this.valueLabel=((t=this.options.find(s=>s.value===e))==null?void 0:t.label)||this.placeholder,this.dispatchChange(e),this.closeDropdown();this.setupOptionsAccessibility()}dispatchChange(e){this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0,composed:!0}))}render(){return h.html`
|
|
13
|
-
<div class="relative">
|
|
14
|
-
<!-- Some trigger (schmancy-input) -->
|
|
15
|
-
<schmancy-input
|
|
16
|
-
class="trigger"
|
|
17
|
-
role="combobox"
|
|
18
|
-
aria-haspopup="listbox"
|
|
19
|
-
aria-expanded=${this.isOpen}
|
|
20
|
-
aria-controls="options"
|
|
21
|
-
.label=${this.label}
|
|
22
|
-
.placeholder=${this.placeholder}
|
|
23
|
-
.value=${this.valueLabel}
|
|
24
|
-
readonly
|
|
25
|
-
@click=${()=>this.isOpen?this.closeDropdown():this.openDropdown()}
|
|
26
|
-
></schmancy-input>
|
|
27
|
-
|
|
28
|
-
<!-- Transparent overlay to close dropdown by clicking outside -->
|
|
29
|
-
<div
|
|
30
|
-
id="overlay"
|
|
31
|
-
class="fixed inset-0"
|
|
32
|
-
?hidden=${!this.isOpen}
|
|
33
|
-
@click=${this.closeDropdown}
|
|
34
|
-
tabindex="-1"
|
|
35
|
-
></div>
|
|
36
|
-
|
|
37
|
-
<!-- The dropdown options container -->
|
|
38
|
-
<ul
|
|
39
|
-
id="options"
|
|
40
|
-
role="listbox"
|
|
41
|
-
class=${p.classMap({"absolute z-30 mt-1 w-full rounded-md shadow-sm":!0,hidden:!this.isOpen})}
|
|
42
|
-
${d.color({bgColor:y.SchmancyTheme.sys.color.surface.container})}
|
|
43
|
-
@click=${e=>{var i;const t=e,s=(i=t.detail)==null?void 0:i.value;s&&this.handleOptionSelect(s)}}
|
|
44
|
-
>
|
|
45
|
-
<!-- The <schmancy-option> elements get slotted in here -->
|
|
46
|
-
<slot
|
|
47
|
-
@slotchange=${()=>{this.syncSelection(),this.setupOptionsAccessibility()}}
|
|
48
|
-
></slot>
|
|
49
|
-
</ul>
|
|
50
|
-
</div>
|
|
51
|
-
`}},l([o.property({type:Boolean})],exports.SchmancySelect.prototype,"required",2),l([o.property({type:String})],exports.SchmancySelect.prototype,"placeholder",2),l([o.property({type:String})],exports.SchmancySelect.prototype,"value",2),l([o.property({type:Array})],exports.SchmancySelect.prototype,"selectedValues",2),l([o.property({type:Boolean})],exports.SchmancySelect.prototype,"multi",2),l([o.property({type:String})],exports.SchmancySelect.prototype,"label",2),l([o.state()],exports.SchmancySelect.prototype,"isOpen",2),l([o.state()],exports.SchmancySelect.prototype,"valueLabel",2),l([o.query("ul")],exports.SchmancySelect.prototype,"ul",2),l([o.queryAssignedElements({flatten:!0})],exports.SchmancySelect.prototype,"options",2),exports.SchmancySelect=l([o.customElement("schmancy-select")],exports.SchmancySelect);
|
|
52
|
-
//# sourceMappingURL=select-DYwm6zVU.cjs.map
|