@mhmo91/schmancy 0.7.5 → 0.7.6
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/ai/directives.md +214 -7
- package/ai/typewriter.md +151 -33
- package/dist/ai/directives.md +214 -7
- package/dist/ai/typewriter.md +151 -33
- package/dist/{animated-text-DnFenRS1.cjs → animated-text-1FDC-OTA.cjs} +2 -2
- package/dist/{animated-text-DnFenRS1.cjs.map → animated-text-1FDC-OTA.cjs.map} +1 -1
- package/dist/{animated-text-YBgWXuVJ.js → animated-text-1_latidd.js} +3 -3
- package/dist/{animated-text-YBgWXuVJ.js.map → animated-text-1_latidd.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-C_nUxyiY.js → area.component-CQq-Mh0Z.js} +47 -39
- package/dist/area.component-CQq-Mh0Z.js.map +1 -0
- package/dist/{area.component-BojFAcRk.cjs → area.component-Ciw7vGsx.cjs} +4 -4
- package/dist/area.component-Ciw7vGsx.cjs.map +1 -0
- package/dist/area.js +1 -1
- package/dist/{autocomplete-B-X_D8MC.js → autocomplete-DT9MFPEG.js} +5 -5
- package/dist/{autocomplete-B-X_D8MC.js.map → autocomplete-DT9MFPEG.js.map} +1 -1
- package/dist/{autocomplete-B8oOdRsV.cjs → autocomplete-auTO_M_w.cjs} +2 -2
- package/dist/{autocomplete-B8oOdRsV.cjs.map → autocomplete-auTO_M_w.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-DBdyON6Y.cjs → avatar-Bo8kRnA-.cjs} +2 -2
- package/dist/{avatar-DBdyON6Y.cjs.map → avatar-Bo8kRnA-.cjs.map} +1 -1
- package/dist/{avatar-Cro3M4Lw.js → avatar-Dm_qg-n1.js} +52 -52
- package/dist/{avatar-Cro3M4Lw.js.map → avatar-Dm_qg-n1.js.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/boat-98He5-K8.cjs +97 -0
- package/dist/boat-98He5-K8.cjs.map +1 -0
- package/dist/boat-RNCKlx8b.js +301 -0
- package/dist/boat-RNCKlx8b.js.map +1 -0
- package/dist/boat.cjs +1 -1
- package/dist/boat.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 +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-BOmazo-k.js → checkbox-Bdn1_WJg.js} +2 -2
- package/dist/{checkbox-BOmazo-k.js.map → checkbox-Bdn1_WJg.js.map} +1 -1
- package/dist/{checkbox-DMfwDgYx.cjs → checkbox-Dj06r6MD.cjs} +2 -2
- package/dist/{checkbox-DMfwDgYx.cjs.map → checkbox-Dj06r6MD.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-DgyY3Jlw.js → code-preview-Br7zBkyM.js} +2 -2
- package/dist/{code-preview-DgyY3Jlw.js.map → code-preview-Br7zBkyM.js.map} +1 -1
- package/dist/{code-preview-CbZzYTk2.cjs → code-preview-ByxcwPma.cjs} +2 -2
- package/dist/{code-preview-CbZzYTk2.cjs.map → code-preview-ByxcwPma.cjs.map} +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-BV0479CW.js → date-range-VkIMcQdT.js} +3 -3
- package/dist/{date-range-BV0479CW.js.map → date-range-VkIMcQdT.js.map} +1 -1
- package/dist/{date-range-inline-HNDLTnYi.cjs → date-range-inline-kbokz03Z.cjs} +2 -2
- package/dist/{date-range-inline-HNDLTnYi.cjs.map → date-range-inline-kbokz03Z.cjs.map} +1 -1
- package/dist/{date-range-inline-GfLao0NN.js → date-range-inline-l2G48xTX.js} +3 -3
- package/dist/{date-range-inline-GfLao0NN.js.map → date-range-inline-l2G48xTX.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/{date-range-47SnbVM6.cjs → date-range-xYUr_KKx.cjs} +2 -2
- package/dist/{date-range-47SnbVM6.cjs.map → date-range-xYUr_KKx.cjs.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-Dr3Fr5YB.cjs → delay-CCreUpYu.cjs} +2 -2
- package/dist/{delay-Dr3Fr5YB.cjs.map → delay-CCreUpYu.cjs.map} +1 -1
- package/dist/{delay-B40l99jW.js → delay-Nu7RVtYd.js} +2 -2
- package/dist/{delay-B40l99jW.js.map → delay-Nu7RVtYd.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/details-CjQrqBli.cjs +98 -0
- package/dist/details-CjQrqBli.cjs.map +1 -0
- package/dist/details-DVIWpEsI.js +137 -0
- package/dist/details-DVIWpEsI.js.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-B_amCfq7.js → dialog-content-BgxKi73O.js} +3 -3
- package/dist/{dialog-content-B_amCfq7.js.map → dialog-content-BgxKi73O.js.map} +1 -1
- package/dist/{dialog-content-Emd7BLQA.cjs → dialog-content-CM3-RXQQ.cjs} +2 -2
- package/dist/{dialog-content-Emd7BLQA.cjs.map → dialog-content-CM3-RXQQ.cjs.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +10 -6
- package/dist/divider-0yHQS8kR.cjs +58 -0
- package/dist/divider-0yHQS8kR.cjs.map +1 -0
- package/dist/divider-CqyzFfn1.js +84 -0
- package/dist/divider-CqyzFfn1.js.map +1 -0
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-BpJq8Q1u.cjs → dropdown-content-BmHQE5-P.cjs} +2 -2
- package/dist/{dropdown-content-BpJq8Q1u.cjs.map → dropdown-content-BmHQE5-P.cjs.map} +1 -1
- package/dist/{dropdown-content-Bw9jnfCR.js → dropdown-content-iFlLupVo.js} +3 -3
- package/dist/{dropdown-content-Bw9jnfCR.js.map → dropdown-content-iFlLupVo.js.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-Bxvu6zi9.cjs → email-recipients-Cioc3U0Z.cjs} +2 -2
- package/dist/{email-recipients-Bxvu6zi9.cjs.map → email-recipients-Cioc3U0Z.cjs.map} +1 -1
- package/dist/{email-recipients-DZGMhyg4.js → email-recipients-CmAEJDMC.js} +6 -6
- package/dist/{email-recipients-DZGMhyg4.js.map → email-recipients-CmAEJDMC.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-DakK9gco.cjs → flex-BEB1yuMF.cjs} +2 -2
- package/dist/{flex-DakK9gco.cjs.map → flex-BEB1yuMF.cjs.map} +1 -1
- package/dist/{flex-DUgMxT_9.js → flex-BgcbHlPo.js} +2 -2
- package/dist/{flex-DUgMxT_9.js.map → flex-BgcbHlPo.js.map} +1 -1
- package/dist/{form-yZ1fh3h9.js → form-CxrvY530.js} +2 -2
- package/dist/{form-yZ1fh3h9.js.map → form-CxrvY530.js.map} +1 -1
- package/dist/{form-CPmMvWvE.cjs → form-DFDTspmH.cjs} +2 -2
- package/dist/{form-CPmMvWvE.cjs.map → form-DFDTspmH.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-D51klHq7.cjs → formField.mixin-C7H5DaEl.cjs} +2 -2
- package/dist/{formField.mixin-D51klHq7.cjs.map → formField.mixin-C7H5DaEl.cjs.map} +1 -1
- package/dist/{formField.mixin-Cmb9YpmX.js → formField.mixin-hZ2qP4iG.js} +2 -2
- package/dist/{formField.mixin-Cmb9YpmX.js.map → formField.mixin-hZ2qP4iG.js.map} +1 -1
- package/dist/{icon-DHT8YsE3.js → icon-D0FAI5uJ.js} +2 -2
- package/dist/{icon-DHT8YsE3.js.map → icon-D0FAI5uJ.js.map} +1 -1
- package/dist/{icon-Dsa_BddL.cjs → icon-DJnGMAQ2.cjs} +2 -2
- package/dist/{icon-Dsa_BddL.cjs.map → icon-DJnGMAQ2.cjs.map} +1 -1
- package/dist/{icon-button-BRcfLsJL.cjs → icon-button-CSZtSmOy.cjs} +8 -8
- package/dist/icon-button-CSZtSmOy.cjs.map +1 -0
- package/dist/{icon-button-PpRHFLCj.js → icon-button-CbgQp3AL.js} +19 -19
- package/dist/icon-button-CbgQp3AL.js.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +196 -192
- package/dist/{input-CYGSlByl.js → input-DLnKAj3B.js} +4 -4
- package/dist/{input-CYGSlByl.js.map → input-DLnKAj3B.js.map} +1 -1
- package/dist/{input-chip-CKYO8Lww.cjs → input-chip-C3EPsHcP.cjs} +2 -2
- package/dist/{input-chip-CKYO8Lww.cjs.map → input-chip-C3EPsHcP.cjs.map} +1 -1
- package/dist/{input-chip-CTKPIRVA.js → input-chip-dmqYCExV.js} +2 -2
- package/dist/{input-chip-CTKPIRVA.js.map → input-chip-dmqYCExV.js.map} +1 -1
- package/dist/input-wZ6ORWru.cjs +51 -0
- package/dist/{input-DB269a2X.cjs.map → input-wZ6ORWru.cjs.map} +1 -1
- 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-BbzeVuby.js → list-BegNkhOn.js} +2 -2
- package/dist/{list-BbzeVuby.js.map → list-BegNkhOn.js.map} +1 -1
- package/dist/{list-BQVTFNkq.cjs → list-CLKiZ6lk.cjs} +2 -2
- package/dist/{list-BQVTFNkq.cjs.map → list-CLKiZ6lk.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-DzCpXwcY.cjs → litElement.mixin-CPQYJnK_.cjs} +2 -2
- package/dist/{litElement.mixin-DzCpXwcY.cjs.map → litElement.mixin-CPQYJnK_.cjs.map} +1 -1
- package/dist/{litElement.mixin-BzbZQbxa.js → litElement.mixin-DWDPaNoc.js} +2 -2
- package/dist/{litElement.mixin-BzbZQbxa.js.map → litElement.mixin-DWDPaNoc.js.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-CgwU5Px4.js → map-CUKZ6LrR.js} +2 -2
- package/dist/{map-CgwU5Px4.js.map → map-CUKZ6LrR.js.map} +1 -1
- package/dist/{map-DuTFI2lm.cjs → map-w4Kdtycx.cjs} +2 -2
- package/dist/{map-DuTFI2lm.cjs.map → map-w4Kdtycx.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-BnktmFRW.js → media-CjdCchz8.js} +2 -2
- package/dist/{media-BnktmFRW.js.map → media-CjdCchz8.js.map} +1 -1
- package/dist/{media-gtpSHRFx.cjs → media-DDNmuoV0.cjs} +2 -2
- package/dist/{media-gtpSHRFx.cjs.map → media-DDNmuoV0.cjs.map} +1 -1
- package/dist/menu-D9-9vipn.cjs +26 -0
- package/dist/menu-D9-9vipn.cjs.map +1 -0
- package/dist/menu-ofiPDY2a.js +61 -0
- package/dist/menu-ofiPDY2a.js.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +3 -3
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/{navigation-rail-D8otIR2P.cjs → navigation-rail-CEDLJTrH.cjs} +2 -2
- package/dist/{navigation-rail-D8otIR2P.cjs.map → navigation-rail-CEDLJTrH.cjs.map} +1 -1
- package/dist/{navigation-rail-CUMNSz0h.js → navigation-rail-weSW6BCv.js} +3 -3
- package/dist/{navigation-rail-CUMNSz0h.js.map → navigation-rail-weSW6BCv.js.map} +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-service-E16lPsiT.js → notification-service-B4nvP2Jc.js} +5 -5
- package/dist/{notification-service-E16lPsiT.js.map → notification-service-B4nvP2Jc.js.map} +1 -1
- package/dist/{notification-service-CP6kGXVL.cjs → notification-service-B_pa74hl.cjs} +2 -2
- package/dist/{notification-service-CP6kGXVL.cjs.map → notification-service-B_pa74hl.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-D865xIlu.js → notify-Ci0HrUIo.js} +2 -2
- package/dist/{notify-D865xIlu.js.map → notify-Ci0HrUIo.js.map} +1 -1
- package/dist/{notify-Czdp7BbG.cjs → notify-aasSKQGA.cjs} +2 -2
- package/dist/{notify-Czdp7BbG.cjs.map → notify-aasSKQGA.cjs.map} +1 -1
- package/dist/{option-cJ8fM5qJ.js → option-Cs4e3CzF.js} +2 -2
- package/dist/{option-cJ8fM5qJ.js.map → option-Cs4e3CzF.js.map} +1 -1
- package/dist/{option-B1r0hb3H.cjs → option-Uze_q9Ef.cjs} +2 -2
- package/dist/{option-B1r0hb3H.cjs.map → option-Uze_q9Ef.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-RBjpMc2m.js → payment-card-form-BLoUTYiB.js} +3 -3
- package/dist/{payment-card-form-RBjpMc2m.js.map → payment-card-form-BLoUTYiB.js.map} +1 -1
- package/dist/{payment-card-form-EO3auDS8.cjs → payment-card-form-rJCPUtWE.cjs} +2 -2
- package/dist/{payment-card-form-EO3auDS8.cjs.map → payment-card-form-rJCPUtWE.cjs.map} +1 -1
- package/dist/{progress-4v9FzvOT.js → progress-B1f3y-Mf.js} +2 -2
- package/dist/{progress-4v9FzvOT.js.map → progress-B1f3y-Mf.js.map} +1 -1
- package/dist/{progress-DnhvJMz_.cjs → progress-DdBHNIMT.cjs} +2 -2
- package/dist/{progress-DnhvJMz_.cjs.map → progress-DdBHNIMT.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-BVegeFKE.cjs → radio-button-BAS7gKmA.cjs} +2 -2
- package/dist/{radio-button-BVegeFKE.cjs.map → radio-button-BAS7gKmA.cjs.map} +1 -1
- package/dist/{radio-button-DDavzgCz.js → radio-button-CaDaw5VH.js} +3 -3
- package/dist/{radio-button-DDavzgCz.js.map → radio-button-CaDaw5VH.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/ripple-QoNZUUw_.js +148 -0
- package/dist/ripple-QoNZUUw_.js.map +1 -0
- package/dist/ripple-Ujq_REH4.cjs +16 -0
- package/dist/ripple-Ujq_REH4.cjs.map +1 -0
- package/dist/{schmancy-steps-container-DN9c-HeX.js → schmancy-steps-container-BInNput3.js} +2 -2
- package/dist/{schmancy-steps-container-DN9c-HeX.js.map → schmancy-steps-container-BInNput3.js.map} +1 -1
- package/dist/{schmancy-steps-container-s6kZWhcr.cjs → schmancy-steps-container-wQsksygx.cjs} +2 -2
- package/dist/{schmancy-steps-container-s6kZWhcr.cjs.map → schmancy-steps-container-wQsksygx.cjs.map} +1 -1
- package/dist/search-B1s7thB0.cjs +2 -0
- package/dist/search-B1s7thB0.cjs.map +1 -0
- package/dist/search-DxxnLa5u.js +95 -0
- package/dist/search-DxxnLa5u.js.map +1 -0
- package/dist/{select--D6l5ru7.js → select-ApLZefMf.js} +4 -4
- package/dist/{select--D6l5ru7.js.map → select-ApLZefMf.js.map} +1 -1
- package/dist/{select-DVT_kFNR.cjs → select-_2Ag_znm.cjs} +2 -2
- package/dist/{select-DVT_kFNR.cjs.map → select-_2Ag_znm.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/selector-hook-Cok22ifx.cjs +2 -0
- package/dist/selector-hook-Cok22ifx.cjs.map +1 -0
- package/dist/selector-hook-l2fe2UO5.js +319 -0
- package/dist/selector-hook-l2fe2UO5.js.map +1 -0
- package/dist/{sheet-CNn_huhz.js → sheet-DovyNsok.js} +14 -14
- package/dist/sheet-DovyNsok.js.map +1 -0
- package/dist/{sheet-Bza5jVS2.cjs → sheet-wjDOQ8Hs.cjs} +4 -4
- package/dist/sheet-wjDOQ8Hs.cjs.map +1 -0
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-CmNDL4f6.js → sheet.service-BvOiOFMm.js} +2 -2
- package/dist/{sheet.service-CmNDL4f6.js.map → sheet.service-BvOiOFMm.js.map} +1 -1
- package/dist/{sheet.service--zUgftN3.cjs → sheet.service-DfHrOxyc.cjs} +2 -2
- package/dist/{sheet.service--zUgftN3.cjs.map → sheet.service-DfHrOxyc.cjs.map} +1 -1
- package/dist/{slider-Cf0pED-U.cjs → slider-BgJccHrg.cjs} +2 -2
- package/dist/{slider-Cf0pED-U.cjs.map → slider-BgJccHrg.cjs.map} +1 -1
- package/dist/{slider-DPxBmmFD.js → slider-CeVgx4pL.js} +3 -3
- package/dist/{slider-DPxBmmFD.js.map → slider-CeVgx4pL.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-BDSDxr_W.cjs → spinner-BKeA2bdB.cjs} +3 -3
- package/dist/spinner-BKeA2bdB.cjs.map +1 -0
- package/dist/{spinner-Dyz6HBFa.js → spinner-Brq1TenP.js} +3 -3
- package/dist/spinner-Brq1TenP.js.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +1 -1
- package/dist/{suggestion-chip-CCW8g_3S.js → suggestion-chip-CWBSzu7C.js} +3 -3
- package/dist/{suggestion-chip-CCW8g_3S.js.map → suggestion-chip-CWBSzu7C.js.map} +1 -1
- package/dist/{suggestion-chip-B7COqb4l.cjs → suggestion-chip-dq20NKWy.cjs} +2 -2
- package/dist/{suggestion-chip-B7COqb4l.cjs.map → suggestion-chip-dq20NKWy.cjs.map} +1 -1
- package/dist/{surface-B4CxtF38.js → surface-Bf8pvmdG.js} +34 -10
- package/dist/{surface-B4CxtF38.js.map → surface-Bf8pvmdG.js.map} +1 -1
- package/dist/{surface-CkzbeSYN.cjs → surface-fEPJ-cuu.cjs} +27 -3
- package/dist/{surface-CkzbeSYN.cjs.map → surface-fEPJ-cuu.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-D-g4ZBys.cjs → table-DEnB9_Rf.cjs} +4 -3
- package/dist/{table-D-g4ZBys.cjs.map → table-DEnB9_Rf.cjs.map} +1 -1
- package/dist/{table-KPNVMJtn.js → table-MLd3oXm6.js} +14 -10
- package/dist/{table-KPNVMJtn.js.map → table-MLd3oXm6.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-sMoQP12I.cjs → tabs-compatibility-CXVHOR5X.cjs} +2 -2
- package/dist/{tabs-compatibility-sMoQP12I.cjs.map → tabs-compatibility-CXVHOR5X.cjs.map} +1 -1
- package/dist/{tabs-compatibility-xUK4vD1M.js → tabs-compatibility-KWKzYolX.js} +2 -2
- package/dist/{tabs-compatibility-xUK4vD1M.js.map → tabs-compatibility-KWKzYolX.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-3TPVvhYf.cjs +2 -0
- package/dist/{tailwind.mixin-scDxsqaX.cjs.map → tailwind.mixin-3TPVvhYf.cjs.map} +1 -1
- package/dist/tailwind.mixin-DIW0B_of.js +67 -0
- package/dist/{tailwind.mixin-xIIxrXd8.js.map → tailwind.mixin-DIW0B_of.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-BSBYVs99.cjs → textarea-B7arkA7y.cjs} +2 -2
- package/dist/{textarea-BSBYVs99.cjs.map → textarea-B7arkA7y.cjs.map} +1 -1
- package/dist/{textarea-CFrirT5y.js → textarea-BK1m_CFR.js} +3 -3
- package/dist/{textarea-CFrirT5y.js.map → textarea-BK1m_CFR.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-B8Xqrz1M.cjs → theme-button-BTKwL3oC.cjs} +2 -2
- package/dist/{theme-button-B8Xqrz1M.cjs.map → theme-button-BTKwL3oC.cjs.map} +1 -1
- package/dist/{theme-button-D-LTPh88.js → theme-button-C6kk8bay.js} +2 -2
- package/dist/{theme-button-D-LTPh88.js.map → theme-button-C6kk8bay.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/{theme-controller-boat-BOddzVdU.js → theme-controller-boat-BK59LqH9.js} +3 -3
- package/dist/{theme-controller-boat-BOddzVdU.js.map → theme-controller-boat-BK59LqH9.js.map} +1 -1
- package/dist/{theme-controller-boat-C2F-qRyu.cjs → theme-controller-boat-Y5QXwJxW.cjs} +2 -2
- package/dist/{theme-controller-boat-C2F-qRyu.cjs.map → theme-controller-boat-Y5QXwJxW.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-BvOWa9Nt.js → timezone-D_skWX6Z.js} +3 -3
- package/dist/{timezone-BvOWa9Nt.js.map → timezone-D_skWX6Z.js.map} +1 -1
- package/dist/{timezone-xHmnktrm.cjs → timezone-nbn0o5GC.cjs} +2 -2
- package/dist/{timezone-xHmnktrm.cjs.map → timezone-nbn0o5GC.cjs.map} +1 -1
- package/dist/{tooltip-D3ZZJEAk.js → tooltip-Btl0IKYC.js} +2 -2
- package/dist/{tooltip-D3ZZJEAk.js.map → tooltip-Btl0IKYC.js.map} +1 -1
- package/dist/{tooltip-D24v5bvM.cjs → tooltip-DyuMJEjL.cjs} +2 -2
- package/dist/{tooltip-D24v5bvM.cjs.map → tooltip-DyuMJEjL.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-CfVyhRIH.js → tree-B_2eIFQi.js} +2 -2
- package/dist/{tree-CfVyhRIH.js.map → tree-B_2eIFQi.js.map} +1 -1
- package/dist/{tree-DC_jbDRu.cjs → tree-N4Y6MoQe.cjs} +2 -2
- package/dist/{tree-DC_jbDRu.cjs.map → tree-N4Y6MoQe.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-By-3T0Jm.js → typewriter-Blyrk_4c.js} +247 -118
- package/dist/typewriter-Blyrk_4c.js.map +1 -0
- package/dist/typewriter-CFQAeOaw.cjs +124 -0
- package/dist/typewriter-CFQAeOaw.cjs.map +1 -0
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-B7kvO8iJ.js → typography-DjGWK58I.js} +2 -2
- package/dist/{typography-B7kvO8iJ.js.map → typography-DjGWK58I.js.map} +1 -1
- package/dist/{typography-9lVCjAbj.cjs → typography-DsIU0TGe.cjs} +2 -2
- package/dist/{typography-9lVCjAbj.cjs.map → typography-DsIU0TGe.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/types/src/area/router.types.d.ts +1 -0
- package/types/src/boat/boat.d.ts +0 -1
- package/types/src/button/button.d.ts +8 -0
- package/types/src/details/details.d.ts +3 -11
- package/types/src/directives/drag.d.ts +30 -0
- package/types/src/directives/index.d.ts +1 -0
- package/types/src/divider/divider.d.ts +6 -1
- package/types/src/menu/menu-item.d.ts +0 -1
- package/types/src/store/filter-directive.d.ts +1 -1
- package/types/src/surface/surface.d.ts +2 -1
- package/types/src/types/surface.d.ts +1 -1
- package/types/src/typewriter/typewriter.d.ts +15 -0
- package/types/src/utils/index.d.ts +4 -4
- package/types/src/utils/search.d.ts +39 -1
- package/dist/area.component-BojFAcRk.cjs.map +0 -1
- package/dist/area.component-C_nUxyiY.js.map +0 -1
- package/dist/boat-B7AKN6Ge.js +0 -276
- package/dist/boat-B7AKN6Ge.js.map +0 -1
- package/dist/boat-BhAuteUk.cjs +0 -93
- package/dist/boat-BhAuteUk.cjs.map +0 -1
- package/dist/details-CQPpI_la.js +0 -211
- package/dist/details-CQPpI_la.js.map +0 -1
- package/dist/details-DydvHvfw.cjs +0 -143
- package/dist/details-DydvHvfw.cjs.map +0 -1
- package/dist/divider-BF9xljgI.cjs +0 -2
- package/dist/divider-BF9xljgI.cjs.map +0 -1
- package/dist/divider-BHruVdsE.js +0 -23
- package/dist/divider-BHruVdsE.js.map +0 -1
- package/dist/icon-button-BRcfLsJL.cjs.map +0 -1
- package/dist/icon-button-PpRHFLCj.js.map +0 -1
- package/dist/input-DB269a2X.cjs +0 -51
- package/dist/menu-DA2pO48m.cjs +0 -26
- package/dist/menu-DA2pO48m.cjs.map +0 -1
- package/dist/menu-DwFriXTu.js +0 -63
- package/dist/menu-DwFriXTu.js.map +0 -1
- package/dist/ripple-Cy-nvO8W.js +0 -80
- package/dist/ripple-Cy-nvO8W.js.map +0 -1
- package/dist/ripple-DqQrvaTe.cjs +0 -16
- package/dist/ripple-DqQrvaTe.cjs.map +0 -1
- package/dist/search-BeEqIiuO.js +0 -53
- package/dist/search-BeEqIiuO.js.map +0 -1
- package/dist/search-bfOHCuHZ.cjs +0 -2
- package/dist/search-bfOHCuHZ.cjs.map +0 -1
- package/dist/selector-hook-BG6g_IEN.cjs +0 -2
- package/dist/selector-hook-BG6g_IEN.cjs.map +0 -1
- package/dist/selector-hook-CrwQCPxL.js +0 -313
- package/dist/selector-hook-CrwQCPxL.js.map +0 -1
- package/dist/sheet-Bza5jVS2.cjs.map +0 -1
- package/dist/sheet-CNn_huhz.js.map +0 -1
- package/dist/spinner-BDSDxr_W.cjs.map +0 -1
- package/dist/spinner-Dyz6HBFa.js.map +0 -1
- package/dist/tailwind.mixin-scDxsqaX.cjs +0 -2
- package/dist/tailwind.mixin-xIIxrXd8.js +0 -67
- package/dist/typewriter-By-3T0Jm.js.map +0 -1
- package/dist/typewriter-vit0P1N1.cjs +0 -9
- package/dist/typewriter-vit0P1N1.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flex-DUgMxT_9.js","sources":["../src/layout/layout.ts","../src/layout/flex/flex.ts","../src/layout/grid/grid.ts","../src/layout/scroll/scroll.ts","../src/layout/v2/flex.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { property } from 'lit/decorators.js'\n\n/**\n * @deprecated Use Tailwind CSS utility classes directly on HTML elements instead of this base class.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Use inline styles or Tailwind utility classes for layout properties\n * - Replace properties like padding, margin, width, etc. with their CSS equivalents\n * \n * @class Layout\n */\nexport default class Layout extends TailwindElement() {\n\tstatic styles = [this.styles]\n\tlayout = true\n\t@property({ type: Boolean }) center: boolean | undefined = undefined\n\t@property({ type: String }) padding: string | undefined\n\t@property({ type: String }) margin: string | undefined\n\t@property({ type: String }) width: string | undefined\n\t@property({ type: String }) height: string | undefined\n\t@property({ type: String }) minWidth: string | undefined\n\t@property({ type: String }) minHeight: string | undefined\n\t@property({ type: String }) maxWidth: string | undefined\n\t@property({ type: String }) maxHeight: string | undefined\n\t@property({ type: String }) display:\n\t\t| 'block'\n\t\t| 'inline-block'\n\t\t| 'inline'\n\t\t| 'flex'\n\t\t| 'inline-flex'\n\t\t| 'grid'\n\t\t| 'inline-grid'\n\t\t| 'table'\n\t\t| 'inline-table'\n\t\t| 'flow-root'\n\t\t| 'none'\n\t\t| undefined = undefined\n\t@property({ type: String }) overflow: 'visible' | 'hidden' | 'scroll' | 'auto' | undefined = undefined\n\t@property({ type: String }) overflowX: 'visible' | 'hidden' | 'scroll' | 'auto' | undefined = undefined\n\t@property({ type: String }) overflowY: 'visible' | 'hidden' | 'scroll' | 'auto' | undefined = undefined\n\t@property({ type: String }) position: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky' | undefined = undefined\n\t@property({ type: String }) top: string | undefined\n\t@property({ type: String }) right: string | undefined\n\t@property({ type: String }) bottom: string | undefined\n\t@property({ type: String }) left: string | undefined\n\t@property({ type: String }) inset: string | undefined\n\t@property({ type: String }) zIndex: string | undefined\n\n\t@property({ type: String }) border: string | undefined\n\t@property({ type: String }) borderTop: string | undefined\n\t@property({ type: String }) borderRight: string | undefined\n\t@property({ type: String }) borderBottom: string | undefined\n\t@property({ type: String }) borderLeft: string | undefined\n\t@property({ type: String }) borderColor: string | undefined\n\t@property({ type: String }) borderRadius: string | undefined\n\t@property({ type: String }) borderWidth: string | undefined\n\n\t@property({ type: String }) boxShadow: string | undefined\n\t@property({ type: String }) opacity: string | undefined\n\t@property({ type: String }) background: string | undefined\n\t@property({ type: String }) backgroundImage: string | undefined\n\t@property({ type: String }) backgroundPosition: string | undefined\n\t@property({ type: String }) backgroundSize: string | undefined\n\t@property({ type: String }) backgroundRepeat: string | undefined\n\t@property({ type: String }) backgroundAttachment: string | undefined\n\t@property({ type: String }) backgroundColor: string | undefined\n\t@property({ type: String }) backgroundClip: string | undefined\n\t@property({ type: String }) backgroundOrigin: string | undefined\n\t@property({ type: String }) backgroundBlendMode: string | undefined\n\t@property({ type: String }) filter: string | undefined\n\t@property({ type: String }) backdropFilter: string | undefined\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.style.setProperty('padding', this.padding ?? '')\n\t\tthis.style.setProperty('margin', this.margin ?? '')\n\t\tthis.style.setProperty('width', this.width ?? '')\n\t\tthis.style.setProperty('height', this.height ?? '')\n\t\tthis.style.setProperty('min-width', this.minWidth ?? '')\n\t\tthis.style.setProperty('min-height', this.minHeight ?? '')\n\t\tthis.style.setProperty('max-width', this.maxWidth ?? '')\n\t\tthis.style.setProperty('max-height', this.maxHeight ?? '')\n\t\tthis.style.setProperty('display', this.display ?? '')\n\t\tthis.style.setProperty('overflow', this.overflow ?? '')\n\t\tthis.style.setProperty('overflow-x', this.overflowX ?? '')\n\t\tthis.style.setProperty('overflow-y', this.overflowY ?? '')\n\t\tthis.style.setProperty('position', this.position ?? '')\n\t\tthis.style.setProperty('top', this.top ?? '')\n\t\tthis.style.setProperty('right', this.right ?? '')\n\t\tthis.style.setProperty('bottom', this.bottom ?? '')\n\t\tthis.style.setProperty('left', this.left ?? '')\n\t\tthis.style.setProperty('inset', this.inset ?? '')\n\t\tthis.style.setProperty('z-index', this.zIndex ?? '')\n\t\tthis.style.setProperty('border', this.border ?? '')\n\t\tthis.style.setProperty('border-top', this.borderTop ?? '')\n\t\tthis.style.setProperty('border-right', this.borderRight ?? '')\n\t\tthis.style.setProperty('border-bottom', this.borderBottom ?? '')\n\t\tthis.style.setProperty('border-left', this.borderLeft ?? '')\n\t\tthis.style.setProperty('border-color', this.borderColor ?? '')\n\t\tthis.style.setProperty('border-radius', this.borderRadius ?? '')\n\t\tthis.style.setProperty('border-width', this.borderWidth ?? '')\n\t\tthis.style.setProperty('box-shadow', this.boxShadow ?? '')\n\t\tthis.style.setProperty('opacity', this.opacity ?? '')\n\t\tthis.style.setProperty('background', this.background ?? '')\n\t\tthis.style.setProperty('background-image', this.backgroundImage ?? '')\n\t\tthis.style.setProperty('background-position', this.backgroundPosition ?? '')\n\t\tthis.style.setProperty('background-size', this.backgroundSize ?? '')\n\t\tthis.style.setProperty('background-repeat', this.backgroundRepeat ?? '')\n\t\tthis.style.setProperty('background-attachment', this.backgroundAttachment ?? '')\n\t\tthis.style.setProperty('background-color', this.backgroundColor ?? '')\n\t\tthis.style.setProperty('background-clip', this.backgroundClip ?? '')\n\t\tthis.style.setProperty('background-origin', this.backgroundOrigin ?? '')\n\t\tthis.style.setProperty('background-blend-mode', this.backgroundBlendMode ?? '')\n\t\tthis.style.setProperty('filter', this.filter ?? '')\n\t\tthis.style.setProperty('backdrop-filter', this.backdropFilter ?? '')\n\t\tif (this.center) {\n\t\t\tthis.style.setProperty('margin-left', 'auto')\n\t\t\tthis.style.setProperty('margin-right', 'auto')\n\t\t}\n\t}\n}\n","import { html, unsafeCSS } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport Layout from '../layout'\nimport style from './flex.scss?inline'\n\n/**\n * @deprecated Use Tailwind CSS flex classes directly instead of this component.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Replace <schmancy-flex> with <div class=\"flex ...\">\n * - Use Tailwind's flex utilities: flex-row, flex-col, gap-*, items-*, justify-*, etc.\n * \n * @element schmancy-flex\n */\n@customElement('schmancy-flex')\nexport class SchmancyFlex extends Layout {\n\tstatic styles = [Layout.styles, unsafeCSS(style)]\n\tlayout = true\n\t@property({ type: String, reflect: true }) flow: 'row' | 'row-reverse' | 'col' | 'col-reverse' = 'col'\n\t@property({ type: String, reflect: true }) wrap: 'wrap' | 'nowrap' | 'wrap-reverse' = 'wrap'\n\t@property({ type: String, reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'start'\n\t@property({ type: String, reflect: true }) justify: 'start' | 'center' | 'end' | 'stretch' | 'between' = 'start'\n\t@property({ type: String, reflect: true }) gap: 'none' | 'sm' | 'md' | 'lg' = 'none'\n\n\trender() {\n\t\tconst classes = {\n\t\t\tflex: true,\n\t\t\t// Direction\n\t\t\t'flex-col': this.flow === 'row',\n\t\t\t'flex-col-reverse': this.flow === 'row-reverse',\n\t\t\t'flex-row': this.flow === 'col',\n\t\t\t'flex-row-reverse': this.flow === 'col-reverse',\n\t\t\t// Wrap\n\t\t\t'flex-wrap': this.wrap === 'wrap',\n\t\t\t'flex-wrap-reverse': this.wrap === 'wrap-reverse',\n\t\t\t'flex-nowrap': this.wrap === 'nowrap',\n\t\t\t// Align\n\t\t\t'items-start': this.align === 'start',\n\t\t\t'items-center': this.align === 'center',\n\t\t\t'items-end': this.align === 'end',\n\t\t\t'items-stretch': this.align === 'stretch',\n\t\t\t'justify-baseline': this.align === 'baseline',\n\n\t\t\t// Justify\n\t\t\t'justify-center': this.justify === 'center',\n\t\t\t'justify-end': this.justify === 'end',\n\t\t\t'justify-start': this.justify === 'start',\n\t\t\t'justify-stretch': this.justify === 'stretch',\n\t\t\t'justify-between': this.justify === 'between',\n\n\t\t\t// Gap\n\t\t\t'gap-0': this.gap === 'none',\n\t\t\t'gap-2': this.gap === 'sm',\n\t\t\t'gap-4': this.gap === 'md',\n\t\t\t'gap-8': this.gap === 'lg',\n\t\t}\n\n\t\tconst styles = {}\n\t\treturn html`\n\t\t\t<section class=${classMap(classes)} style=${styleMap(styles)}>\n\t\t\t\t<slot></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-flex': SchmancyFlex\n\t}\n}\n","import { html, unsafeCSS } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, startWith, takeUntil } from 'rxjs'\nimport Layout from '../layout'\nimport style from './grid.scss?inline'\n\n/**\n * @deprecated Use Tailwind CSS grid classes directly instead of this component.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Replace <schmancy-grid> with <div class=\"grid ...\">\n * - Use Tailwind's grid utilities: grid-cols-*, gap-*, items-*, justify-items-*, etc.\n * \n * @element schmancy-grid\n */\n@customElement('schmancy-grid')\nexport class SchmancyGrid extends Layout {\n\tstatic styles = [Layout.styles, unsafeCSS(style)]\n\tlayout = true\n\t@property({ type: String }) flow: 'row' | 'col' | 'dense' | 'row-dense' | 'col-dense' = 'row'\n\t@property({ type: String }) align: 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'stretch'\n\t@property({ type: String }) justify: 'start' | 'center' | 'end' | 'stretch' = 'stretch'\n\t@property({ type: String }) content: 'start' | 'center' | 'end' | 'stretch' | 'around' | 'evenly' | 'between' =\n\t\t'stretch'\n\t@property({ type: String }) gap: 'none' | 'xs' | 'sm' | 'md' | 'lg' = 'none'\n\n\t@property({ type: String }) cols?: string\n\t@property({ type: String }) rows?: string\n\t@property({ type: Object }) rcols?: {\n\t\txs?: string | number\n\t\tsm?: string | number\n\t\tmd?: string | number\n\t\tlg?: string | number\n\t\txl?: string | number\n\t\t'2xl'?: string | number\n\t}\n\n\t@property({ type: Boolean }) wrap = false\n\n\t@queryAssignedElements() assignedElements!: HTMLElement[]\n\n\tfirstUpdated() {\n\t\tif (this.rcols)\n\t\t\tfromEvent<CustomEvent>(window, 'resize')\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(event => event.target as Window),\n\t\t\t\t\tstartWith(1),\n\t\t\t\t\tmap(() => (this.clientWidth ? this.clientWidth : window.innerWidth)),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\tdebounceTime(10),\n\t\t\t\t\tmap(w => {\n\t\t\t\t\t\tlet cols\n\t\t\t\t\t\tif (this.rcols?.['2xl'] && w >= 1536) cols = this.rcols?.['2xl']\n\t\t\t\t\t\telse if (this.rcols?.xl && w >= 1280) cols = this.rcols?.xl\n\t\t\t\t\t\telse if (this.rcols?.lg && w >= 1024) cols = this.rcols?.lg\n\t\t\t\t\t\telse if (this.rcols?.md && w >= 768) cols = this.rcols?.md\n\t\t\t\t\t\telse if (this.rcols?.sm && w >= 640) cols = this.rcols?.sm\n\t\t\t\t\t\telse if (this.rcols?.xs && w < 640) cols = this.rcols?.xs\n\t\t\t\t\t\treturn cols\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.subscribe(cols => {\n\t\t\t\t\tthis.cols = cols\n\t\t\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'h-full': true,\n\t\t\t'grid flex-1': true,\n\t\t\t// flow classes: https://tailwindcss.com/docs/grid-auto-flow\n\t\t\t'grid-flow-row auto-rows-max': this.flow === 'row',\n\t\t\t'grid-flow-col auto-cols-max': this.flow === 'col',\n\t\t\t'grid-flow-row-dense': this.flow === 'row-dense',\n\t\t\t'grid-flow-col-dense': this.flow === 'col-dense',\n\t\t\t'grid-flow-dense': this.flow === 'dense',\n\n\t\t\t'justify-center': this.content === 'center',\n\t\t\t'justify-end': this.content === 'end',\n\t\t\t'justify-start': this.content === 'start',\n\t\t\t'justify-stretch': this.content === 'stretch',\n\t\t\t'justify-between': this.content === 'between',\n\t\t\t'justify-around': this.content === 'around',\n\t\t\t'justify-evenly': this.content === 'evenly',\n\n\t\t\t'justify-items-center': this.justify === 'center',\n\t\t\t'justify-items-end': this.justify === 'end',\n\t\t\t'justify-items-start': this.justify === 'start',\n\t\t\t'justify-items-stretch': this.justify === 'stretch',\n\t\t\t'items-center': this.align === 'center',\n\t\t\t'items-end': this.align === 'end',\n\t\t\t'items-start': this.align === 'start',\n\t\t\t'items-stretch': this.align === 'stretch',\n\t\t\t'items-baseline': this.align === 'baseline',\n\t\t\t'gap-0': this.gap === 'none',\n\t\t\t'gap-1': this.gap === 'xs',\n\t\t\t'gap-2': this.gap === 'sm',\n\t\t\t'gap-4': this.gap === 'md',\n\t\t\t'gap-8': this.gap === 'lg',\n\t\t\t'flex-nowrap': this.wrap,\n\t\t\t'flex-wrap': !this.wrap,\n\t\t}\n\t\tconst style = {\n\t\t\tgridTemplateRows: this.rows ? this.rows : undefined,\n\t\t\tgridTemplateColumns: this.cols ? this.cols : undefined,\n\t\t}\n\t\treturn html`\n\t\t\t<section class=\"${this.classMap(classes)}\" style=${this.styleMap(style)}>\n\t\t\t\t<slot> </slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-grid': SchmancyGrid\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { debounceTime, filter, fromEvent, takeUntil } from 'rxjs'\n\n/**\n * Custom scroll event interface for the SchmancyScroll component.\n * Contains detailed information about the scroll state.\n */\nexport interface SchmancyScrollEvent\n\textends CustomEvent<{\n\t\t/** Current scroll position from the top */\n\t\tscrollTop: number\n\t\t/** Total scrollable height of the content */\n\t\tscrollHeight: number\n\t\t/** Visible height of the container */\n\t\tclientHeight: number\n\t\t/** Original scroll event */\n\t\te: Event\n\t\t/** Current scroll position from the left (for horizontal scrolling) */\n\t\tscrollLeft?: number\n\t\t/** Total scrollable width of the content (for horizontal scrolling) */\n\t\tscrollWidth?: number\n\t\t/** Visible width of the container (for horizontal scrolling) */\n\t\tclientWidth?: number\n\t}> {}\n\n/**\n * Command event interface for controlling SchmancyScroll components\n */\nexport interface SchmancyScrollCommandEvent\n\textends CustomEvent<{\n\t\t/** Target component name */\n\t\tname: string\n\t\t/** Command action to perform */\n\t\taction: 'scrollTo'\n\t\t/** Scroll position for scrollTo action */\n\t\ttop: number\n\t\t/** Horizontal scroll position for scrollTo action (optional) */\n\t\tleft?: number\n\t}> {}\n\n// Augment the HTMLElementEventMap to include our custom events\ndeclare global {\n\tinterface HTMLElementEventMap {\n\t\tscroll: SchmancyScrollEvent\n\t\t'schmancy-scroll-command': SchmancyScrollCommandEvent\n\t}\n}\n\n/**\n * A custom scrollable container with enhanced features.\n *\n * @fires {SchmancyScrollEvent} scroll - Fired when scrolling occurs (with a configurable debounce)\n * @slot - Default slot for content to be scrolled\n * @csspart scroller - The inner scrollable div element\n *\n * @example\n * ```html\n * <schmancy-scroll hide name=\"main-content\">\n * <div>Scrollable content goes here</div>\n * </schmancy-scroll>\n * ```\n *\n * @example\n * ```html\n * <schmancy-scroll direction=\"horizontal\" hide name=\"image-carousel\">\n * <div class=\"flex\">\n * <img src=\"image1.jpg\" alt=\"Image 1\">\n * <img src=\"image2.jpg\" alt=\"Image 2\">\n * </div>\n * </schmancy-scroll>\n * ```\n */\n@customElement('schmancy-scroll')\nexport class SchmancyScroll extends TailwindElement(css`\n\t:host {\n\t\t/* Flexible sizing for different layout contexts */\n\t\twidth: 100%;\n\t\tmin-height: 0; /* Allow flex shrinking */\n\t\tflex: 1; /* Grow in flex containers */\n\t\tbox-sizing: border-box; /* Ensures proper sizing */\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tscroll-behavior: smooth;\n\t\toverscroll-behavior-x: contain;\n\t\toverscroll-behavior-y: auto;\n\t}\n\t/* Fallback for non-flex contexts */\n\t:host(.explicit-height) {\n\t\theight: 100%;\n\t\tflex: none;\n\t}\n\t:host([hide]) {\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t:host([hide])::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, and Opera */\n\t}\n`) {\n\t/**\n\t * Determines whether the scrollbar is hidden.\n\t *\n\t * When `hide` is true, the host element's scrollbars are hidden\n\t * in supported browsers using CSS.\n\t *\n\t * @attr hide\n\t * @example <schmancy-scroll hide></schmancy-scroll>\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic hide = false\n\n\t/**\n\t * Optional name identifier for the component.\n\t * Used for targeting this specific component with global events.\n\t *\n\t * @attr name\n\t * @example <schmancy-scroll name=\"main-content\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic name?: string\n\n\t/**\n\t * Direction of scrolling: vertical, horizontal, or both.\n\t * - vertical: Only allows vertical scrolling\n\t * - horizontal: Only allows horizontal scrolling\n\t * - both: Allows both horizontal and vertical scrolling (default)\n\t *\n\t * @attr direction\n\t * @example <schmancy-scroll direction=\"horizontal\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic direction: 'vertical' | 'horizontal' | 'both' = 'both'\n\n\t/**\n\t * Reference to the scrollable element (the host element itself)\n\t * @public\n\t */\n\tget scroller(): HTMLElement {\n\t\treturn this\n\t}\n\n\t/**\n\t * Debounce time in milliseconds for the scroll event.\n\t * Higher values reduce the frequency of scroll events being dispatched.\n\t *\n\t * @attr debounce\n\t * @example <schmancy-scroll debounce=\"50\"></schmancy-scroll>\n\t */\n\t@property({ type: Number })\n\tpublic debounce = 10\n\n\t/**\n\t * Scrolls the container to the specified position\n\t * @param options - ScrollToOptions or a number representing the top position\n\t * @param top - For backward compatibility, if options is a number, this is treated as \"behavior\"\n\t */\n\tpublic override scrollTo(options?: ScrollToOptions | number, top?: number): void {\n\t\tif (!this.scroller) return\n\n\t\tif (typeof options === 'number') {\n\t\t\t// Legacy support for scrollTo(top, behavior)\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: options,\n\t\t\t\tbehavior: top ? 'smooth' : 'auto',\n\t\t\t})\n\t\t} else if (options) {\n\t\t\tthis.scroller.scrollTo(options)\n\t\t} else {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tbehavior: 'auto',\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls the container horizontally to the specified position\n\t * @param left - The horizontal position to scroll to (in pixels)\n\t * @param behavior - The scroll behavior ('auto' or 'smooth')\n\t */\n\tpublic scrollToLeft(left: number, behavior: ScrollBehavior = 'auto'): void {\n\t\tif (this.scroller) {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\tleft,\n\t\t\t\tbehavior,\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Called when the component is connected to the DOM\n\t * Applies scrolling styles directly to the host element\n\t * @protected\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.updateScrollingStyles()\n\t\tthis.updateLayoutContext()\n\t\t// Set the part attribute on the host element\n\t\tthis.setAttribute('part', 'scroller')\n\t}\n\n\t/**\n\t * Updates the overflow styles based on the direction property\n\t * @private\n\t */\n\tprivate updateScrollingStyles(): void {\n\t\t// Apply overflow styles based on direction\n\t\tif (this.direction === 'horizontal') {\n\t\t\tthis.style.setProperty('overflow-y', 'hidden')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t} else if (this.direction === 'vertical') {\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'hidden')\n\t\t} else {\n\t\t\t// both\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t}\n\t}\n\n\t/**\n\t * Updates the layout context based on parent container type\n\t * @private\n\t */\n\tprivate updateLayoutContext(): void {\n\t\t// Use requestAnimationFrame to ensure DOM is fully rendered\n\t\trequestAnimationFrame(() => {\n\t\t\t// Check if parent is a flex container\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tconst parentStyles = getComputedStyle(parent)\n\t\t\t\tconst isFlexParent = parentStyles.display === 'flex' || parentStyles.display === 'inline-flex'\n\n\t\t\t\t// For debugging - remove in production\n\t\t\t\tconsole.debug('schmancy-scroll parent detection:', {\n\t\t\t\t\tparent: parent.tagName,\n\t\t\t\t\tdisplay: parentStyles.display,\n\t\t\t\t\tisFlexParent,\n\t\t\t\t})\n\n\t\t\t\t// Apply appropriate class based on parent layout\n\t\t\t\tif (isFlexParent) {\n\t\t\t\t\tthis.classList.remove('explicit-height')\n\t\t\t\t} else {\n\t\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Default to explicit height if no parent\n\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Called when properties change\n\t * @protected\n\t */\n\tprotected updated(changedProperties: Map<string | number | symbol, unknown>): void {\n\t\tsuper.updated(changedProperties)\n\t\t// Update styles if direction changes\n\t\tif (changedProperties.has('direction')) {\n\t\t\tthis.updateScrollingStyles()\n\t\t}\n\t\t// Always update layout context in case parent layout changed\n\t\tthis.updateLayoutContext()\n\t}\n\n\t/**\n\t * Called after the component's first update\n\t * Sets up the scroll event listener with debouncing\n\t * @protected\n\t */\n\tprotected firstUpdated(): void {\n\t\t// Set up scroll event listening with debounce\n\t\tfromEvent(this.scroller, 'scroll', {\n\t\t\tpassive: true,\n\t\t})\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(this.debounce),\n\t\t\t\ttakeUntil(this.disconnecting), // Unsubscribe when the element is destroyed\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\t// Always include the original required properties for backward compatibility\n\t\t\t\tconst scrollTop = this.scroller.scrollTop\n\t\t\t\tconst scrollHeight = this.scroller.scrollHeight\n\t\t\t\tconst clientHeight = this.scroller.clientHeight\n\n\t\t\t\t// Include horizontal scroll information as optional properties\n\t\t\t\tconst scrollLeft = this.scroller.scrollLeft\n\t\t\t\tconst scrollWidth = this.scroller.scrollWidth\n\t\t\t\tconst clientWidth = this.scroller.clientWidth\n\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('scroll', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t// Original required properties first\n\t\t\t\t\t\t\tscrollTop,\n\t\t\t\t\t\t\tscrollHeight,\n\t\t\t\t\t\t\tclientHeight,\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t// New optional properties last\n\t\t\t\t\t\t\tscrollLeft,\n\t\t\t\t\t\t\tscrollWidth,\n\t\t\t\t\t\t\tclientWidth,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}) as SchmancyScrollEvent,\n\t\t\t\t)\n\t\t\t})\n\n\t\t// Set up global command event listener\n\t\tfromEvent<SchmancyScrollCommandEvent>(window, '@schmancy:scrollTo')\n\t\t\t.pipe(\n\t\t\t\t// Only process events targeting this component by name\n\t\t\t\tfilter(e => this.name !== undefined && e.detail.name === this.name),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\tif (e.detail.action === 'scrollTo' && typeof e.detail.top === 'number') {\n\t\t\t\t\tconst options: ScrollToOptions = {\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\ttop: e.detail.top, // Required for backward compatibility\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add optional left position if provided\n\t\t\t\t\tif (typeof e.detail.left === 'number') {\n\t\t\t\t\t\toptions.left = e.detail.left\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.scrollTo(options)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\t/**\n\t * Renders the component template\n\t * @returns {TemplateResult} The template to render\n\t * @protected\n\t */\n\tprotected render() {\n\t\t// Only render the slot, all styling is applied to the host\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-scroll': SchmancyScroll\n\t}\n}\n","import { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport Layout from '../layout'\n\n/**\n * @deprecated Use Tailwind CSS flex classes directly instead of this component.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Replace <sch-flex> with <div class=\"flex ...\">\n * - Use Tailwind's flex utilities: flex-row, flex-col, gap-*, items-*, justify-*, etc.\n * \n * Original documentation:\n * \n * SchmancyFlex exposes a flex container with all the Tailwind CSS 4 options:\n *\n * - **Display**: By default uses `flex` but can be set to inline using the `inline` property.\n * - **Flow**: Accepts 'row', 'row-reverse', 'col', 'col-reverse' as well as grid‐like dense variants:\n * - Dense variants (`row-dense`, `col-dense`) force wrapping.\n * - **Wrap**: 'wrap', 'nowrap', or 'wrap-reverse'\n * - **Align Items**: 'start', 'center', 'end', 'stretch', or 'baseline'\n * - **Justify Content**: 'start', 'center', 'end', 'between', 'around', or 'evenly'\n * - **Align Content** (for multi-line flex containers): 'start', 'center', 'end', 'between', 'around', or 'evenly'\n * - **Gap**: Supports Tailwind’s spacing scale (e.g. 'none', '0', '1', '2', …, '64')\n */\n@customElement('sch-flex')\nexport class SchmancyFlexV2 extends Layout {\n\tstatic styles = [\n\t\tLayout.styles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t`,\n\t]\n\t// If true, the container will use inline-flex instead of flex.\n\t@property({ type: Boolean, reflect: true })\n\tinline = false\n\n\t/**\n\t * Flow property that determines the flex direction.\n\t * Allowed values:\n\t * - Standard: 'row', 'row-reverse', 'col', 'col-reverse'\n\t * - Dense variants: 'row-dense', 'col-dense' (dense implies wrapping)\n\t */\n\t@property({ type: String, reflect: true })\n\tflow: 'row' | 'row-reverse' | 'col' | 'col-reverse' | 'row-dense' | 'col-dense' = 'row'\n\n\t/**\n\t * Flex-wrap options:\n\t * - 'wrap', 'nowrap', or 'wrap-reverse'\n\t */\n\t@property({ type: String, reflect: true })\n\twrap: 'wrap' | 'nowrap' | 'wrap-reverse' = 'wrap'\n\n\t/**\n\t * Align-items (vertical alignment of flex items):\n\t * - 'start', 'center', 'end', 'stretch', or 'baseline'\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'stretch'\n\n\t/**\n\t * Justify-content (horizontal distribution):\n\t * - 'start', 'center', 'end', 'between', 'around', or 'evenly'\n\t */\n\t@property({ type: String, reflect: true })\n\tjustify: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly' = 'start'\n\n\t/**\n\t * Align-content (spacing between rows when wrapping):\n\t * - 'start', 'center', 'end', 'between', 'around', or 'evenly'\n\t */\n\t@property({ type: String, reflect: true })\n\tcontent?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\n\n\t/**\n\t * Gap between flex items.\n\t * Options (based on Tailwind CSS 4 spacing scale):\n\t * - 'none', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '12', '16', '20', '24', '32', '40', '48', '56', or '64'\n\t */\n\t@property({ type: String, reflect: true })\n\tgap:\n\t\t| 'none'\n\t\t| '0'\n\t\t| '1'\n\t\t| '2'\n\t\t| '3'\n\t\t| '4'\n\t\t| '5'\n\t\t| '6'\n\t\t| '7'\n\t\t| '8'\n\t\t| '9'\n\t\t| '10'\n\t\t| '12'\n\t\t| '16'\n\t\t| '20'\n\t\t| '24'\n\t\t| '32'\n\t\t| '40'\n\t\t| '48'\n\t\t| '56'\n\t\t| '64' = 'none'\n\n\trender() {\n\t\t// Determine whether to use inline-flex or flex.\n\t\tconst baseDisplay = this.inline ? 'inline-flex' : 'flex'\n\n\t\t// Map the flow property to a flex-direction class.\n\t\t// (Dense variants use the same class as their standard counterparts.)\n\t\tlet directionClass = ''\n\t\tswitch (this.flow) {\n\t\t\tcase 'row':\n\t\t\tcase 'row-dense':\n\t\t\t\tdirectionClass = 'flex-row'\n\t\t\t\tbreak\n\t\t\tcase 'row-reverse':\n\t\t\t\tdirectionClass = 'flex-row-reverse'\n\t\t\t\tbreak\n\t\t\tcase 'col':\n\t\t\tcase 'col-dense':\n\t\t\t\tdirectionClass = 'flex-col'\n\t\t\t\tbreak\n\t\t\tcase 'col-reverse':\n\t\t\t\tdirectionClass = 'flex-col-reverse'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tdirectionClass = 'flex-row'\n\t\t}\n\n\t\t// Dense variants force wrapping regardless of the wrap property.\n\t\tconst isDense = this.flow === 'row-dense' || this.flow === 'col-dense'\n\t\tconst effectiveWrap = isDense ? 'wrap' : this.wrap\n\n\t\tlet wrapClass = ''\n\t\tswitch (effectiveWrap) {\n\t\t\tcase 'wrap':\n\t\t\t\twrapClass = 'flex-wrap'\n\t\t\t\tbreak\n\t\t\tcase 'nowrap':\n\t\t\t\twrapClass = 'flex-nowrap'\n\t\t\t\tbreak\n\t\t\tcase 'wrap-reverse':\n\t\t\t\twrapClass = 'flex-wrap-reverse'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\twrapClass = 'flex-wrap'\n\t\t}\n\n\t\t// Map align-items.\n\t\tlet alignClass = ''\n\t\tswitch (this.align) {\n\t\t\tcase 'start':\n\t\t\t\talignClass = 'items-start'\n\t\t\t\tbreak\n\t\t\tcase 'center':\n\t\t\t\talignClass = 'items-center'\n\t\t\t\tbreak\n\t\t\tcase 'end':\n\t\t\t\talignClass = 'items-end'\n\t\t\t\tbreak\n\t\t\tcase 'stretch':\n\t\t\t\talignClass = 'items-stretch'\n\t\t\t\tbreak\n\t\t\tcase 'baseline':\n\t\t\t\talignClass = 'items-baseline'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\talignClass = 'items-stretch'\n\t\t}\n\n\t\t// Map justify-content.\n\t\tlet justifyClass = ''\n\t\tswitch (this.justify) {\n\t\t\tcase 'start':\n\t\t\t\tjustifyClass = 'justify-start'\n\t\t\t\tbreak\n\t\t\tcase 'center':\n\t\t\t\tjustifyClass = 'justify-center'\n\t\t\t\tbreak\n\t\t\tcase 'end':\n\t\t\t\tjustifyClass = 'justify-end'\n\t\t\t\tbreak\n\t\t\tcase 'between':\n\t\t\t\tjustifyClass = 'justify-between'\n\t\t\t\tbreak\n\t\t\tcase 'around':\n\t\t\t\tjustifyClass = 'justify-around'\n\t\t\t\tbreak\n\t\t\tcase 'evenly':\n\t\t\t\tjustifyClass = 'justify-evenly'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tjustifyClass = 'justify-start'\n\t\t}\n\n\t\t// Map align-content (if provided).\n\t\tlet contentClass = ''\n\t\tif (this.content) {\n\t\t\tswitch (this.content) {\n\t\t\t\tcase 'start':\n\t\t\t\t\tcontentClass = 'content-start'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'center':\n\t\t\t\t\tcontentClass = 'content-center'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'end':\n\t\t\t\t\tcontentClass = 'content-end'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'between':\n\t\t\t\t\tcontentClass = 'content-between'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'around':\n\t\t\t\t\tcontentClass = 'content-around'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'evenly':\n\t\t\t\t\tcontentClass = 'content-evenly'\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Map gap value.\n\t\tconst gapClass = this.gap === 'none' ? 'gap-0' : `gap-${this.gap}`\n\n\t\t// Build the complete list of classes.\n\t\tconst classes = [baseDisplay, directionClass, wrapClass, alignClass, justifyClass, contentClass, gapClass]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ')\n\n\t\treturn html`\n\t\t\t<section class=${classes}>\n\t\t\t\t<slot></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-flex': SchmancyFlexV2\n\t}\n}\n"],"names":["Layout","TailwindElement","constructor","super","arguments","this","layout","center","display","overflow","overflowX","overflowY","position","connectedCallback","style","setProperty","padding","margin","width","height","minWidth","minHeight","maxWidth","maxHeight","top","right","bottom","left","inset","zIndex","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderRadius","borderWidth","boxShadow","opacity","background","backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundColor","backgroundClip","backgroundOrigin","backgroundBlendMode","filter","backdropFilter","styles","_w","__decorateClass","property","type","Boolean","prototype","String","SchmancyFlex","flow","wrap","align","justify","gap","render","classes","flex","html","classMap","styleMap","unsafeCSS","reflect","customElement","SchmancyGrid","content","firstUpdated","rcols","fromEvent","window","pipe","map","event","target","startWith","clientWidth","innerWidth","distinctUntilChanged","takeUntil","disconnecting","debounceTime","w","cols","xl","lg","md","sm","xs","subscribe","gridTemplateRows","rows","gridTemplateColumns","Object","queryAssignedElements","SchmancyScroll","css","hide","direction","debounce","options","scroller","scrollTo","behavior","updateScrollingStyles","updateLayoutContext","setAttribute","requestAnimationFrame","parent","parentElement","parentStyles","getComputedStyle","classList","remove","add","changedProperties","updated","has","passive","e","scrollTop","scrollHeight","clientHeight","scrollLeft","scrollWidth","dispatchEvent","CustomEvent","detail","bubbles","composed","name","action","Number","SchmancyFlexV2","inline","baseDisplay","directionClass","wrapClass","alignClass","justifyClass","contentClass","join"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flex-BgcbHlPo.js","sources":["../src/layout/layout.ts","../src/layout/flex/flex.ts","../src/layout/grid/grid.ts","../src/layout/scroll/scroll.ts","../src/layout/v2/flex.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { property } from 'lit/decorators.js'\n\n/**\n * @deprecated Use Tailwind CSS utility classes directly on HTML elements instead of this base class.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Use inline styles or Tailwind utility classes for layout properties\n * - Replace properties like padding, margin, width, etc. with their CSS equivalents\n * \n * @class Layout\n */\nexport default class Layout extends TailwindElement() {\n\tstatic styles = [this.styles]\n\tlayout = true\n\t@property({ type: Boolean }) center: boolean | undefined = undefined\n\t@property({ type: String }) padding: string | undefined\n\t@property({ type: String }) margin: string | undefined\n\t@property({ type: String }) width: string | undefined\n\t@property({ type: String }) height: string | undefined\n\t@property({ type: String }) minWidth: string | undefined\n\t@property({ type: String }) minHeight: string | undefined\n\t@property({ type: String }) maxWidth: string | undefined\n\t@property({ type: String }) maxHeight: string | undefined\n\t@property({ type: String }) display:\n\t\t| 'block'\n\t\t| 'inline-block'\n\t\t| 'inline'\n\t\t| 'flex'\n\t\t| 'inline-flex'\n\t\t| 'grid'\n\t\t| 'inline-grid'\n\t\t| 'table'\n\t\t| 'inline-table'\n\t\t| 'flow-root'\n\t\t| 'none'\n\t\t| undefined = undefined\n\t@property({ type: String }) overflow: 'visible' | 'hidden' | 'scroll' | 'auto' | undefined = undefined\n\t@property({ type: String }) overflowX: 'visible' | 'hidden' | 'scroll' | 'auto' | undefined = undefined\n\t@property({ type: String }) overflowY: 'visible' | 'hidden' | 'scroll' | 'auto' | undefined = undefined\n\t@property({ type: String }) position: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky' | undefined = undefined\n\t@property({ type: String }) top: string | undefined\n\t@property({ type: String }) right: string | undefined\n\t@property({ type: String }) bottom: string | undefined\n\t@property({ type: String }) left: string | undefined\n\t@property({ type: String }) inset: string | undefined\n\t@property({ type: String }) zIndex: string | undefined\n\n\t@property({ type: String }) border: string | undefined\n\t@property({ type: String }) borderTop: string | undefined\n\t@property({ type: String }) borderRight: string | undefined\n\t@property({ type: String }) borderBottom: string | undefined\n\t@property({ type: String }) borderLeft: string | undefined\n\t@property({ type: String }) borderColor: string | undefined\n\t@property({ type: String }) borderRadius: string | undefined\n\t@property({ type: String }) borderWidth: string | undefined\n\n\t@property({ type: String }) boxShadow: string | undefined\n\t@property({ type: String }) opacity: string | undefined\n\t@property({ type: String }) background: string | undefined\n\t@property({ type: String }) backgroundImage: string | undefined\n\t@property({ type: String }) backgroundPosition: string | undefined\n\t@property({ type: String }) backgroundSize: string | undefined\n\t@property({ type: String }) backgroundRepeat: string | undefined\n\t@property({ type: String }) backgroundAttachment: string | undefined\n\t@property({ type: String }) backgroundColor: string | undefined\n\t@property({ type: String }) backgroundClip: string | undefined\n\t@property({ type: String }) backgroundOrigin: string | undefined\n\t@property({ type: String }) backgroundBlendMode: string | undefined\n\t@property({ type: String }) filter: string | undefined\n\t@property({ type: String }) backdropFilter: string | undefined\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.style.setProperty('padding', this.padding ?? '')\n\t\tthis.style.setProperty('margin', this.margin ?? '')\n\t\tthis.style.setProperty('width', this.width ?? '')\n\t\tthis.style.setProperty('height', this.height ?? '')\n\t\tthis.style.setProperty('min-width', this.minWidth ?? '')\n\t\tthis.style.setProperty('min-height', this.minHeight ?? '')\n\t\tthis.style.setProperty('max-width', this.maxWidth ?? '')\n\t\tthis.style.setProperty('max-height', this.maxHeight ?? '')\n\t\tthis.style.setProperty('display', this.display ?? '')\n\t\tthis.style.setProperty('overflow', this.overflow ?? '')\n\t\tthis.style.setProperty('overflow-x', this.overflowX ?? '')\n\t\tthis.style.setProperty('overflow-y', this.overflowY ?? '')\n\t\tthis.style.setProperty('position', this.position ?? '')\n\t\tthis.style.setProperty('top', this.top ?? '')\n\t\tthis.style.setProperty('right', this.right ?? '')\n\t\tthis.style.setProperty('bottom', this.bottom ?? '')\n\t\tthis.style.setProperty('left', this.left ?? '')\n\t\tthis.style.setProperty('inset', this.inset ?? '')\n\t\tthis.style.setProperty('z-index', this.zIndex ?? '')\n\t\tthis.style.setProperty('border', this.border ?? '')\n\t\tthis.style.setProperty('border-top', this.borderTop ?? '')\n\t\tthis.style.setProperty('border-right', this.borderRight ?? '')\n\t\tthis.style.setProperty('border-bottom', this.borderBottom ?? '')\n\t\tthis.style.setProperty('border-left', this.borderLeft ?? '')\n\t\tthis.style.setProperty('border-color', this.borderColor ?? '')\n\t\tthis.style.setProperty('border-radius', this.borderRadius ?? '')\n\t\tthis.style.setProperty('border-width', this.borderWidth ?? '')\n\t\tthis.style.setProperty('box-shadow', this.boxShadow ?? '')\n\t\tthis.style.setProperty('opacity', this.opacity ?? '')\n\t\tthis.style.setProperty('background', this.background ?? '')\n\t\tthis.style.setProperty('background-image', this.backgroundImage ?? '')\n\t\tthis.style.setProperty('background-position', this.backgroundPosition ?? '')\n\t\tthis.style.setProperty('background-size', this.backgroundSize ?? '')\n\t\tthis.style.setProperty('background-repeat', this.backgroundRepeat ?? '')\n\t\tthis.style.setProperty('background-attachment', this.backgroundAttachment ?? '')\n\t\tthis.style.setProperty('background-color', this.backgroundColor ?? '')\n\t\tthis.style.setProperty('background-clip', this.backgroundClip ?? '')\n\t\tthis.style.setProperty('background-origin', this.backgroundOrigin ?? '')\n\t\tthis.style.setProperty('background-blend-mode', this.backgroundBlendMode ?? '')\n\t\tthis.style.setProperty('filter', this.filter ?? '')\n\t\tthis.style.setProperty('backdrop-filter', this.backdropFilter ?? '')\n\t\tif (this.center) {\n\t\t\tthis.style.setProperty('margin-left', 'auto')\n\t\t\tthis.style.setProperty('margin-right', 'auto')\n\t\t}\n\t}\n}\n","import { html, unsafeCSS } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport Layout from '../layout'\nimport style from './flex.scss?inline'\n\n/**\n * @deprecated Use Tailwind CSS flex classes directly instead of this component.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Replace <schmancy-flex> with <div class=\"flex ...\">\n * - Use Tailwind's flex utilities: flex-row, flex-col, gap-*, items-*, justify-*, etc.\n * \n * @element schmancy-flex\n */\n@customElement('schmancy-flex')\nexport class SchmancyFlex extends Layout {\n\tstatic styles = [Layout.styles, unsafeCSS(style)]\n\tlayout = true\n\t@property({ type: String, reflect: true }) flow: 'row' | 'row-reverse' | 'col' | 'col-reverse' = 'col'\n\t@property({ type: String, reflect: true }) wrap: 'wrap' | 'nowrap' | 'wrap-reverse' = 'wrap'\n\t@property({ type: String, reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'start'\n\t@property({ type: String, reflect: true }) justify: 'start' | 'center' | 'end' | 'stretch' | 'between' = 'start'\n\t@property({ type: String, reflect: true }) gap: 'none' | 'sm' | 'md' | 'lg' = 'none'\n\n\trender() {\n\t\tconst classes = {\n\t\t\tflex: true,\n\t\t\t// Direction\n\t\t\t'flex-col': this.flow === 'row',\n\t\t\t'flex-col-reverse': this.flow === 'row-reverse',\n\t\t\t'flex-row': this.flow === 'col',\n\t\t\t'flex-row-reverse': this.flow === 'col-reverse',\n\t\t\t// Wrap\n\t\t\t'flex-wrap': this.wrap === 'wrap',\n\t\t\t'flex-wrap-reverse': this.wrap === 'wrap-reverse',\n\t\t\t'flex-nowrap': this.wrap === 'nowrap',\n\t\t\t// Align\n\t\t\t'items-start': this.align === 'start',\n\t\t\t'items-center': this.align === 'center',\n\t\t\t'items-end': this.align === 'end',\n\t\t\t'items-stretch': this.align === 'stretch',\n\t\t\t'justify-baseline': this.align === 'baseline',\n\n\t\t\t// Justify\n\t\t\t'justify-center': this.justify === 'center',\n\t\t\t'justify-end': this.justify === 'end',\n\t\t\t'justify-start': this.justify === 'start',\n\t\t\t'justify-stretch': this.justify === 'stretch',\n\t\t\t'justify-between': this.justify === 'between',\n\n\t\t\t// Gap\n\t\t\t'gap-0': this.gap === 'none',\n\t\t\t'gap-2': this.gap === 'sm',\n\t\t\t'gap-4': this.gap === 'md',\n\t\t\t'gap-8': this.gap === 'lg',\n\t\t}\n\n\t\tconst styles = {}\n\t\treturn html`\n\t\t\t<section class=${classMap(classes)} style=${styleMap(styles)}>\n\t\t\t\t<slot></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-flex': SchmancyFlex\n\t}\n}\n","import { html, unsafeCSS } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, startWith, takeUntil } from 'rxjs'\nimport Layout from '../layout'\nimport style from './grid.scss?inline'\n\n/**\n * @deprecated Use Tailwind CSS grid classes directly instead of this component.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Replace <schmancy-grid> with <div class=\"grid ...\">\n * - Use Tailwind's grid utilities: grid-cols-*, gap-*, items-*, justify-items-*, etc.\n * \n * @element schmancy-grid\n */\n@customElement('schmancy-grid')\nexport class SchmancyGrid extends Layout {\n\tstatic styles = [Layout.styles, unsafeCSS(style)]\n\tlayout = true\n\t@property({ type: String }) flow: 'row' | 'col' | 'dense' | 'row-dense' | 'col-dense' = 'row'\n\t@property({ type: String }) align: 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'stretch'\n\t@property({ type: String }) justify: 'start' | 'center' | 'end' | 'stretch' = 'stretch'\n\t@property({ type: String }) content: 'start' | 'center' | 'end' | 'stretch' | 'around' | 'evenly' | 'between' =\n\t\t'stretch'\n\t@property({ type: String }) gap: 'none' | 'xs' | 'sm' | 'md' | 'lg' = 'none'\n\n\t@property({ type: String }) cols?: string\n\t@property({ type: String }) rows?: string\n\t@property({ type: Object }) rcols?: {\n\t\txs?: string | number\n\t\tsm?: string | number\n\t\tmd?: string | number\n\t\tlg?: string | number\n\t\txl?: string | number\n\t\t'2xl'?: string | number\n\t}\n\n\t@property({ type: Boolean }) wrap = false\n\n\t@queryAssignedElements() assignedElements!: HTMLElement[]\n\n\tfirstUpdated() {\n\t\tif (this.rcols)\n\t\t\tfromEvent<CustomEvent>(window, 'resize')\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(event => event.target as Window),\n\t\t\t\t\tstartWith(1),\n\t\t\t\t\tmap(() => (this.clientWidth ? this.clientWidth : window.innerWidth)),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\tdebounceTime(10),\n\t\t\t\t\tmap(w => {\n\t\t\t\t\t\tlet cols\n\t\t\t\t\t\tif (this.rcols?.['2xl'] && w >= 1536) cols = this.rcols?.['2xl']\n\t\t\t\t\t\telse if (this.rcols?.xl && w >= 1280) cols = this.rcols?.xl\n\t\t\t\t\t\telse if (this.rcols?.lg && w >= 1024) cols = this.rcols?.lg\n\t\t\t\t\t\telse if (this.rcols?.md && w >= 768) cols = this.rcols?.md\n\t\t\t\t\t\telse if (this.rcols?.sm && w >= 640) cols = this.rcols?.sm\n\t\t\t\t\t\telse if (this.rcols?.xs && w < 640) cols = this.rcols?.xs\n\t\t\t\t\t\treturn cols\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.subscribe(cols => {\n\t\t\t\t\tthis.cols = cols\n\t\t\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'h-full': true,\n\t\t\t'grid flex-1': true,\n\t\t\t// flow classes: https://tailwindcss.com/docs/grid-auto-flow\n\t\t\t'grid-flow-row auto-rows-max': this.flow === 'row',\n\t\t\t'grid-flow-col auto-cols-max': this.flow === 'col',\n\t\t\t'grid-flow-row-dense': this.flow === 'row-dense',\n\t\t\t'grid-flow-col-dense': this.flow === 'col-dense',\n\t\t\t'grid-flow-dense': this.flow === 'dense',\n\n\t\t\t'justify-center': this.content === 'center',\n\t\t\t'justify-end': this.content === 'end',\n\t\t\t'justify-start': this.content === 'start',\n\t\t\t'justify-stretch': this.content === 'stretch',\n\t\t\t'justify-between': this.content === 'between',\n\t\t\t'justify-around': this.content === 'around',\n\t\t\t'justify-evenly': this.content === 'evenly',\n\n\t\t\t'justify-items-center': this.justify === 'center',\n\t\t\t'justify-items-end': this.justify === 'end',\n\t\t\t'justify-items-start': this.justify === 'start',\n\t\t\t'justify-items-stretch': this.justify === 'stretch',\n\t\t\t'items-center': this.align === 'center',\n\t\t\t'items-end': this.align === 'end',\n\t\t\t'items-start': this.align === 'start',\n\t\t\t'items-stretch': this.align === 'stretch',\n\t\t\t'items-baseline': this.align === 'baseline',\n\t\t\t'gap-0': this.gap === 'none',\n\t\t\t'gap-1': this.gap === 'xs',\n\t\t\t'gap-2': this.gap === 'sm',\n\t\t\t'gap-4': this.gap === 'md',\n\t\t\t'gap-8': this.gap === 'lg',\n\t\t\t'flex-nowrap': this.wrap,\n\t\t\t'flex-wrap': !this.wrap,\n\t\t}\n\t\tconst style = {\n\t\t\tgridTemplateRows: this.rows ? this.rows : undefined,\n\t\t\tgridTemplateColumns: this.cols ? this.cols : undefined,\n\t\t}\n\t\treturn html`\n\t\t\t<section class=\"${this.classMap(classes)}\" style=${this.styleMap(style)}>\n\t\t\t\t<slot> </slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-grid': SchmancyGrid\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { debounceTime, filter, fromEvent, takeUntil } from 'rxjs'\n\n/**\n * Custom scroll event interface for the SchmancyScroll component.\n * Contains detailed information about the scroll state.\n */\nexport interface SchmancyScrollEvent\n\textends CustomEvent<{\n\t\t/** Current scroll position from the top */\n\t\tscrollTop: number\n\t\t/** Total scrollable height of the content */\n\t\tscrollHeight: number\n\t\t/** Visible height of the container */\n\t\tclientHeight: number\n\t\t/** Original scroll event */\n\t\te: Event\n\t\t/** Current scroll position from the left (for horizontal scrolling) */\n\t\tscrollLeft?: number\n\t\t/** Total scrollable width of the content (for horizontal scrolling) */\n\t\tscrollWidth?: number\n\t\t/** Visible width of the container (for horizontal scrolling) */\n\t\tclientWidth?: number\n\t}> {}\n\n/**\n * Command event interface for controlling SchmancyScroll components\n */\nexport interface SchmancyScrollCommandEvent\n\textends CustomEvent<{\n\t\t/** Target component name */\n\t\tname: string\n\t\t/** Command action to perform */\n\t\taction: 'scrollTo'\n\t\t/** Scroll position for scrollTo action */\n\t\ttop: number\n\t\t/** Horizontal scroll position for scrollTo action (optional) */\n\t\tleft?: number\n\t}> {}\n\n// Augment the HTMLElementEventMap to include our custom events\ndeclare global {\n\tinterface HTMLElementEventMap {\n\t\tscroll: SchmancyScrollEvent\n\t\t'schmancy-scroll-command': SchmancyScrollCommandEvent\n\t}\n}\n\n/**\n * A custom scrollable container with enhanced features.\n *\n * @fires {SchmancyScrollEvent} scroll - Fired when scrolling occurs (with a configurable debounce)\n * @slot - Default slot for content to be scrolled\n * @csspart scroller - The inner scrollable div element\n *\n * @example\n * ```html\n * <schmancy-scroll hide name=\"main-content\">\n * <div>Scrollable content goes here</div>\n * </schmancy-scroll>\n * ```\n *\n * @example\n * ```html\n * <schmancy-scroll direction=\"horizontal\" hide name=\"image-carousel\">\n * <div class=\"flex\">\n * <img src=\"image1.jpg\" alt=\"Image 1\">\n * <img src=\"image2.jpg\" alt=\"Image 2\">\n * </div>\n * </schmancy-scroll>\n * ```\n */\n@customElement('schmancy-scroll')\nexport class SchmancyScroll extends TailwindElement(css`\n\t:host {\n\t\t/* Flexible sizing for different layout contexts */\n\t\twidth: 100%;\n\t\tmin-height: 0; /* Allow flex shrinking */\n\t\tflex: 1; /* Grow in flex containers */\n\t\tbox-sizing: border-box; /* Ensures proper sizing */\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tscroll-behavior: smooth;\n\t\toverscroll-behavior-x: contain;\n\t\toverscroll-behavior-y: auto;\n\t}\n\t/* Fallback for non-flex contexts */\n\t:host(.explicit-height) {\n\t\theight: 100%;\n\t\tflex: none;\n\t}\n\t:host([hide]) {\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t:host([hide])::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, and Opera */\n\t}\n`) {\n\t/**\n\t * Determines whether the scrollbar is hidden.\n\t *\n\t * When `hide` is true, the host element's scrollbars are hidden\n\t * in supported browsers using CSS.\n\t *\n\t * @attr hide\n\t * @example <schmancy-scroll hide></schmancy-scroll>\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic hide = false\n\n\t/**\n\t * Optional name identifier for the component.\n\t * Used for targeting this specific component with global events.\n\t *\n\t * @attr name\n\t * @example <schmancy-scroll name=\"main-content\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic name?: string\n\n\t/**\n\t * Direction of scrolling: vertical, horizontal, or both.\n\t * - vertical: Only allows vertical scrolling\n\t * - horizontal: Only allows horizontal scrolling\n\t * - both: Allows both horizontal and vertical scrolling (default)\n\t *\n\t * @attr direction\n\t * @example <schmancy-scroll direction=\"horizontal\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic direction: 'vertical' | 'horizontal' | 'both' = 'both'\n\n\t/**\n\t * Reference to the scrollable element (the host element itself)\n\t * @public\n\t */\n\tget scroller(): HTMLElement {\n\t\treturn this\n\t}\n\n\t/**\n\t * Debounce time in milliseconds for the scroll event.\n\t * Higher values reduce the frequency of scroll events being dispatched.\n\t *\n\t * @attr debounce\n\t * @example <schmancy-scroll debounce=\"50\"></schmancy-scroll>\n\t */\n\t@property({ type: Number })\n\tpublic debounce = 10\n\n\t/**\n\t * Scrolls the container to the specified position\n\t * @param options - ScrollToOptions or a number representing the top position\n\t * @param top - For backward compatibility, if options is a number, this is treated as \"behavior\"\n\t */\n\tpublic override scrollTo(options?: ScrollToOptions | number, top?: number): void {\n\t\tif (!this.scroller) return\n\n\t\tif (typeof options === 'number') {\n\t\t\t// Legacy support for scrollTo(top, behavior)\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: options,\n\t\t\t\tbehavior: top ? 'smooth' : 'auto',\n\t\t\t})\n\t\t} else if (options) {\n\t\t\tthis.scroller.scrollTo(options)\n\t\t} else {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tbehavior: 'auto',\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls the container horizontally to the specified position\n\t * @param left - The horizontal position to scroll to (in pixels)\n\t * @param behavior - The scroll behavior ('auto' or 'smooth')\n\t */\n\tpublic scrollToLeft(left: number, behavior: ScrollBehavior = 'auto'): void {\n\t\tif (this.scroller) {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\tleft,\n\t\t\t\tbehavior,\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Called when the component is connected to the DOM\n\t * Applies scrolling styles directly to the host element\n\t * @protected\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.updateScrollingStyles()\n\t\tthis.updateLayoutContext()\n\t\t// Set the part attribute on the host element\n\t\tthis.setAttribute('part', 'scroller')\n\t}\n\n\t/**\n\t * Updates the overflow styles based on the direction property\n\t * @private\n\t */\n\tprivate updateScrollingStyles(): void {\n\t\t// Apply overflow styles based on direction\n\t\tif (this.direction === 'horizontal') {\n\t\t\tthis.style.setProperty('overflow-y', 'hidden')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t} else if (this.direction === 'vertical') {\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'hidden')\n\t\t} else {\n\t\t\t// both\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t}\n\t}\n\n\t/**\n\t * Updates the layout context based on parent container type\n\t * @private\n\t */\n\tprivate updateLayoutContext(): void {\n\t\t// Use requestAnimationFrame to ensure DOM is fully rendered\n\t\trequestAnimationFrame(() => {\n\t\t\t// Check if parent is a flex container\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tconst parentStyles = getComputedStyle(parent)\n\t\t\t\tconst isFlexParent = parentStyles.display === 'flex' || parentStyles.display === 'inline-flex'\n\n\t\t\t\t// For debugging - remove in production\n\t\t\t\tconsole.debug('schmancy-scroll parent detection:', {\n\t\t\t\t\tparent: parent.tagName,\n\t\t\t\t\tdisplay: parentStyles.display,\n\t\t\t\t\tisFlexParent,\n\t\t\t\t})\n\n\t\t\t\t// Apply appropriate class based on parent layout\n\t\t\t\tif (isFlexParent) {\n\t\t\t\t\tthis.classList.remove('explicit-height')\n\t\t\t\t} else {\n\t\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Default to explicit height if no parent\n\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Called when properties change\n\t * @protected\n\t */\n\tprotected updated(changedProperties: Map<string | number | symbol, unknown>): void {\n\t\tsuper.updated(changedProperties)\n\t\t// Update styles if direction changes\n\t\tif (changedProperties.has('direction')) {\n\t\t\tthis.updateScrollingStyles()\n\t\t}\n\t\t// Always update layout context in case parent layout changed\n\t\tthis.updateLayoutContext()\n\t}\n\n\t/**\n\t * Called after the component's first update\n\t * Sets up the scroll event listener with debouncing\n\t * @protected\n\t */\n\tprotected firstUpdated(): void {\n\t\t// Set up scroll event listening with debounce\n\t\tfromEvent(this.scroller, 'scroll', {\n\t\t\tpassive: true,\n\t\t})\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(this.debounce),\n\t\t\t\ttakeUntil(this.disconnecting), // Unsubscribe when the element is destroyed\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\t// Always include the original required properties for backward compatibility\n\t\t\t\tconst scrollTop = this.scroller.scrollTop\n\t\t\t\tconst scrollHeight = this.scroller.scrollHeight\n\t\t\t\tconst clientHeight = this.scroller.clientHeight\n\n\t\t\t\t// Include horizontal scroll information as optional properties\n\t\t\t\tconst scrollLeft = this.scroller.scrollLeft\n\t\t\t\tconst scrollWidth = this.scroller.scrollWidth\n\t\t\t\tconst clientWidth = this.scroller.clientWidth\n\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('scroll', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t// Original required properties first\n\t\t\t\t\t\t\tscrollTop,\n\t\t\t\t\t\t\tscrollHeight,\n\t\t\t\t\t\t\tclientHeight,\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t// New optional properties last\n\t\t\t\t\t\t\tscrollLeft,\n\t\t\t\t\t\t\tscrollWidth,\n\t\t\t\t\t\t\tclientWidth,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}) as SchmancyScrollEvent,\n\t\t\t\t)\n\t\t\t})\n\n\t\t// Set up global command event listener\n\t\tfromEvent<SchmancyScrollCommandEvent>(window, '@schmancy:scrollTo')\n\t\t\t.pipe(\n\t\t\t\t// Only process events targeting this component by name\n\t\t\t\tfilter(e => this.name !== undefined && e.detail.name === this.name),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\tif (e.detail.action === 'scrollTo' && typeof e.detail.top === 'number') {\n\t\t\t\t\tconst options: ScrollToOptions = {\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\ttop: e.detail.top, // Required for backward compatibility\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add optional left position if provided\n\t\t\t\t\tif (typeof e.detail.left === 'number') {\n\t\t\t\t\t\toptions.left = e.detail.left\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.scrollTo(options)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\t/**\n\t * Renders the component template\n\t * @returns {TemplateResult} The template to render\n\t * @protected\n\t */\n\tprotected render() {\n\t\t// Only render the slot, all styling is applied to the host\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-scroll': SchmancyScroll\n\t}\n}\n","import { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport Layout from '../layout'\n\n/**\n * @deprecated Use Tailwind CSS flex classes directly instead of this component.\n * This component will be removed in a future version.\n * \n * Migration guide:\n * - Replace <sch-flex> with <div class=\"flex ...\">\n * - Use Tailwind's flex utilities: flex-row, flex-col, gap-*, items-*, justify-*, etc.\n * \n * Original documentation:\n * \n * SchmancyFlex exposes a flex container with all the Tailwind CSS 4 options:\n *\n * - **Display**: By default uses `flex` but can be set to inline using the `inline` property.\n * - **Flow**: Accepts 'row', 'row-reverse', 'col', 'col-reverse' as well as grid‐like dense variants:\n * - Dense variants (`row-dense`, `col-dense`) force wrapping.\n * - **Wrap**: 'wrap', 'nowrap', or 'wrap-reverse'\n * - **Align Items**: 'start', 'center', 'end', 'stretch', or 'baseline'\n * - **Justify Content**: 'start', 'center', 'end', 'between', 'around', or 'evenly'\n * - **Align Content** (for multi-line flex containers): 'start', 'center', 'end', 'between', 'around', or 'evenly'\n * - **Gap**: Supports Tailwind’s spacing scale (e.g. 'none', '0', '1', '2', …, '64')\n */\n@customElement('sch-flex')\nexport class SchmancyFlexV2 extends Layout {\n\tstatic styles = [\n\t\tLayout.styles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t`,\n\t]\n\t// If true, the container will use inline-flex instead of flex.\n\t@property({ type: Boolean, reflect: true })\n\tinline = false\n\n\t/**\n\t * Flow property that determines the flex direction.\n\t * Allowed values:\n\t * - Standard: 'row', 'row-reverse', 'col', 'col-reverse'\n\t * - Dense variants: 'row-dense', 'col-dense' (dense implies wrapping)\n\t */\n\t@property({ type: String, reflect: true })\n\tflow: 'row' | 'row-reverse' | 'col' | 'col-reverse' | 'row-dense' | 'col-dense' = 'row'\n\n\t/**\n\t * Flex-wrap options:\n\t * - 'wrap', 'nowrap', or 'wrap-reverse'\n\t */\n\t@property({ type: String, reflect: true })\n\twrap: 'wrap' | 'nowrap' | 'wrap-reverse' = 'wrap'\n\n\t/**\n\t * Align-items (vertical alignment of flex items):\n\t * - 'start', 'center', 'end', 'stretch', or 'baseline'\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'stretch'\n\n\t/**\n\t * Justify-content (horizontal distribution):\n\t * - 'start', 'center', 'end', 'between', 'around', or 'evenly'\n\t */\n\t@property({ type: String, reflect: true })\n\tjustify: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly' = 'start'\n\n\t/**\n\t * Align-content (spacing between rows when wrapping):\n\t * - 'start', 'center', 'end', 'between', 'around', or 'evenly'\n\t */\n\t@property({ type: String, reflect: true })\n\tcontent?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\n\n\t/**\n\t * Gap between flex items.\n\t * Options (based on Tailwind CSS 4 spacing scale):\n\t * - 'none', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '12', '16', '20', '24', '32', '40', '48', '56', or '64'\n\t */\n\t@property({ type: String, reflect: true })\n\tgap:\n\t\t| 'none'\n\t\t| '0'\n\t\t| '1'\n\t\t| '2'\n\t\t| '3'\n\t\t| '4'\n\t\t| '5'\n\t\t| '6'\n\t\t| '7'\n\t\t| '8'\n\t\t| '9'\n\t\t| '10'\n\t\t| '12'\n\t\t| '16'\n\t\t| '20'\n\t\t| '24'\n\t\t| '32'\n\t\t| '40'\n\t\t| '48'\n\t\t| '56'\n\t\t| '64' = 'none'\n\n\trender() {\n\t\t// Determine whether to use inline-flex or flex.\n\t\tconst baseDisplay = this.inline ? 'inline-flex' : 'flex'\n\n\t\t// Map the flow property to a flex-direction class.\n\t\t// (Dense variants use the same class as their standard counterparts.)\n\t\tlet directionClass = ''\n\t\tswitch (this.flow) {\n\t\t\tcase 'row':\n\t\t\tcase 'row-dense':\n\t\t\t\tdirectionClass = 'flex-row'\n\t\t\t\tbreak\n\t\t\tcase 'row-reverse':\n\t\t\t\tdirectionClass = 'flex-row-reverse'\n\t\t\t\tbreak\n\t\t\tcase 'col':\n\t\t\tcase 'col-dense':\n\t\t\t\tdirectionClass = 'flex-col'\n\t\t\t\tbreak\n\t\t\tcase 'col-reverse':\n\t\t\t\tdirectionClass = 'flex-col-reverse'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tdirectionClass = 'flex-row'\n\t\t}\n\n\t\t// Dense variants force wrapping regardless of the wrap property.\n\t\tconst isDense = this.flow === 'row-dense' || this.flow === 'col-dense'\n\t\tconst effectiveWrap = isDense ? 'wrap' : this.wrap\n\n\t\tlet wrapClass = ''\n\t\tswitch (effectiveWrap) {\n\t\t\tcase 'wrap':\n\t\t\t\twrapClass = 'flex-wrap'\n\t\t\t\tbreak\n\t\t\tcase 'nowrap':\n\t\t\t\twrapClass = 'flex-nowrap'\n\t\t\t\tbreak\n\t\t\tcase 'wrap-reverse':\n\t\t\t\twrapClass = 'flex-wrap-reverse'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\twrapClass = 'flex-wrap'\n\t\t}\n\n\t\t// Map align-items.\n\t\tlet alignClass = ''\n\t\tswitch (this.align) {\n\t\t\tcase 'start':\n\t\t\t\talignClass = 'items-start'\n\t\t\t\tbreak\n\t\t\tcase 'center':\n\t\t\t\talignClass = 'items-center'\n\t\t\t\tbreak\n\t\t\tcase 'end':\n\t\t\t\talignClass = 'items-end'\n\t\t\t\tbreak\n\t\t\tcase 'stretch':\n\t\t\t\talignClass = 'items-stretch'\n\t\t\t\tbreak\n\t\t\tcase 'baseline':\n\t\t\t\talignClass = 'items-baseline'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\talignClass = 'items-stretch'\n\t\t}\n\n\t\t// Map justify-content.\n\t\tlet justifyClass = ''\n\t\tswitch (this.justify) {\n\t\t\tcase 'start':\n\t\t\t\tjustifyClass = 'justify-start'\n\t\t\t\tbreak\n\t\t\tcase 'center':\n\t\t\t\tjustifyClass = 'justify-center'\n\t\t\t\tbreak\n\t\t\tcase 'end':\n\t\t\t\tjustifyClass = 'justify-end'\n\t\t\t\tbreak\n\t\t\tcase 'between':\n\t\t\t\tjustifyClass = 'justify-between'\n\t\t\t\tbreak\n\t\t\tcase 'around':\n\t\t\t\tjustifyClass = 'justify-around'\n\t\t\t\tbreak\n\t\t\tcase 'evenly':\n\t\t\t\tjustifyClass = 'justify-evenly'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tjustifyClass = 'justify-start'\n\t\t}\n\n\t\t// Map align-content (if provided).\n\t\tlet contentClass = ''\n\t\tif (this.content) {\n\t\t\tswitch (this.content) {\n\t\t\t\tcase 'start':\n\t\t\t\t\tcontentClass = 'content-start'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'center':\n\t\t\t\t\tcontentClass = 'content-center'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'end':\n\t\t\t\t\tcontentClass = 'content-end'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'between':\n\t\t\t\t\tcontentClass = 'content-between'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'around':\n\t\t\t\t\tcontentClass = 'content-around'\n\t\t\t\t\tbreak\n\t\t\t\tcase 'evenly':\n\t\t\t\t\tcontentClass = 'content-evenly'\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Map gap value.\n\t\tconst gapClass = this.gap === 'none' ? 'gap-0' : `gap-${this.gap}`\n\n\t\t// Build the complete list of classes.\n\t\tconst classes = [baseDisplay, directionClass, wrapClass, alignClass, justifyClass, contentClass, gapClass]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ')\n\n\t\treturn html`\n\t\t\t<section class=${classes}>\n\t\t\t\t<slot></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-flex': SchmancyFlexV2\n\t}\n}\n"],"names":["Layout","TailwindElement","constructor","super","arguments","this","layout","center","display","overflow","overflowX","overflowY","position","connectedCallback","style","setProperty","padding","margin","width","height","minWidth","minHeight","maxWidth","maxHeight","top","right","bottom","left","inset","zIndex","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderRadius","borderWidth","boxShadow","opacity","background","backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundColor","backgroundClip","backgroundOrigin","backgroundBlendMode","filter","backdropFilter","styles","_w","__decorateClass","property","type","Boolean","prototype","String","SchmancyFlex","flow","wrap","align","justify","gap","render","classes","flex","html","classMap","styleMap","unsafeCSS","reflect","customElement","SchmancyGrid","content","firstUpdated","rcols","fromEvent","window","pipe","map","event","target","startWith","clientWidth","innerWidth","distinctUntilChanged","takeUntil","disconnecting","debounceTime","w","cols","xl","lg","md","sm","xs","subscribe","gridTemplateRows","rows","gridTemplateColumns","Object","queryAssignedElements","SchmancyScroll","css","hide","direction","debounce","options","scroller","scrollTo","behavior","updateScrollingStyles","updateLayoutContext","setAttribute","requestAnimationFrame","parent","parentElement","parentStyles","getComputedStyle","classList","remove","add","changedProperties","updated","has","passive","e","scrollTop","scrollHeight","clientHeight","scrollLeft","scrollWidth","dispatchEvent","CustomEvent","detail","bubbles","composed","name","action","Number","SchmancyFlexV2","inline","baseDisplay","directionClass","wrapClass","alignClass","justifyClass","contentClass","join"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import "rxjs/operators";
|
|
|
3
3
|
import "lit/directives/class-map.js";
|
|
4
4
|
import "lit/directives/style-map.js";
|
|
5
5
|
import { property as g, customElement as b } from "lit/decorators.js";
|
|
6
|
-
import { T as f } from "./tailwind.mixin-
|
|
6
|
+
import { T as f } from "./tailwind.mixin-DIW0B_of.js";
|
|
7
7
|
import { html as k, LitElement as C } from "lit";
|
|
8
8
|
var v = Object.defineProperty, E = Object.getOwnPropertyDescriptor, l = (e, t, s, a) => {
|
|
9
9
|
for (var o, n = a > 1 ? void 0 : a ? E(t, s) : t, i = e.length - 1; i >= 0; i--) (o = e[i]) && (n = (a ? o(t, s, n) : o(n)) || n);
|
|
@@ -138,4 +138,4 @@ let r = class extends f() {
|
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
140
|
r.tagName = "schmancy-form", r.shadowRootOptions = { ...C.shadowRootOptions, mode: "open", delegatesFocus: !1 }, u([g({ type: Boolean, reflect: !0 })], r.prototype, "novalidate", 2), r = u([b("schmancy-form")], r);
|
|
141
|
-
//# sourceMappingURL=form-
|
|
141
|
+
//# sourceMappingURL=form-CxrvY530.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-yZ1fh3h9.js","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\n// Define interfaces for form element capabilities\nexport interface FormElement extends HTMLElement {\n\tname?: string\n\tvalue?: string\n\tdisabled?: boolean\n\ttype?: string\n\tdefaultValue?: string\n}\n\nexport interface CheckableFormElement extends FormElement {\n\tchecked?: boolean\n}\n\nexport interface ValidatableFormElement extends FormElement {\n\treportValidity?: () => boolean\n}\n\n// Define interface for form control registry\nexport interface FormControlConfig {\n\ttagName: string\n\thasValue?: boolean\n\thasChecked?: boolean\n\tcanSubmit?: boolean\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element sch-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('sch-form')\nexport default class SchmancyFormV2 extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'sch-form'\n\n\t// Static registry of form controls\n\tprivate static formControlRegistry: FormControlConfig[] = [\n\t\t// Native elements\n\t\t{ tagName: 'input', hasValue: true, hasChecked: true, canSubmit: true },\n\t\t{ tagName: 'textarea', hasValue: true },\n\t\t{ tagName: 'select', hasValue: true },\n\t\t{ tagName: 'button', canSubmit: true },\n\t\t{ tagName: 'radio', hasChecked: true },\n\n\t\t// Custom elements\n\t\t{ tagName: 'schmancy-input', hasValue: true, canSubmit: true },\n\t\t{ tagName: 'schmancy-mask-input', hasValue: true },\n\t\t{ tagName: 'schmancy-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-icon-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-radio', hasChecked: true },\n\t\t{ tagName: 'schmancy-switch', hasChecked: true },\n\t\t{ tagName: 'schmancy-checkbox', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-radio-group', hasChecked: true },\n\t\t{ tagName: 'schmancy-autocomplete', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-select', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-combo', hasValue: true },\n\t\t{ tagName: 'schmancy-date-time-input', hasValue: true },\n\t\t{ tagName: 'schmancy-rating', hasValue: true },\n\t]\n\n\t// Static methods to register new form controls\n\tpublic static registerFormControl(config: FormControlConfig): void {\n\t\tconst existingIndex = this.formControlRegistry.findIndex(item => item.tagName === config.tagName)\n\n\t\tif (existingIndex >= 0) {\n\t\t\tthis.formControlRegistry[existingIndex] = {\n\t\t\t\t...this.formControlRegistry[existingIndex],\n\t\t\t\t...config,\n\t\t\t}\n\t\t} else {\n\t\t\tthis.formControlRegistry.push(config)\n\t\t}\n\t}\n\n\t// Helper methods to check control capabilities\n\tprivate static hasValue(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasValue || false\n\t}\n\n\tprivate static hasChecked(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasChecked || false\n\t}\n\n\tprivate static canSubmit(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.canSubmit || false\n\t}\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\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\tconst target = e.target as HTMLButtonElement\n\t\t\t\t\tif (target.type?.toLowerCase() === 'submit') {\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\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\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.$disconnecting.next(null)\n\t\tthis.$disconnecting.complete()\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\n\t\t\tif (tagName === 'select') {\n\t\t\t\tconst selectElement = element as HTMLSelectElement\n\t\t\t\tfor (let i = 0; i < selectElement.options.length; i++) {\n\t\t\t\t\tconst option = selectElement.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' && SchmancyFormV2.hasChecked(tagName))\n\t\t\t) {\n\t\t\t\t;(element as CheckableFormElement).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 (SchmancyFormV2.hasValue(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(): FormElement[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: FormElement[] = []\n\n\t\tassignedElements?.forEach((element: FormElement) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter(\n\t\t\t\t(childElement: FormElement) => !childElement.disabled,\n\t\t\t)\n\t\t\tformElements.push(...(children as FormElement[]))\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\t\tconst formElements = this.getFormElements()\n\n\t\tformElements.forEach(element => {\n\t\t\tif (!element.name) return\n\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < (element as HTMLSelectElement).options.length; i++) {\n\t\t\t\t\tconst option = (element as HTMLSelectElement).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 (SchmancyFormV2.hasChecked(tagName) && (element as CheckableFormElement).checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tSchmancyFormV2.hasValue(tagName) &&\n\t\t\t\t(element as HTMLInputElement).type !== 'checkbox' &&\n\t\t\t\t(element as HTMLInputElement).type !== 'radio' &&\n\t\t\t\t(element as HTMLInputElement).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 =>\n\t\t\t\ttypeof (element as ValidatableFormElement).reportValidity === 'function' &&\n\t\t\t\t(element as ValidatableFormElement).reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement = event.target as HTMLElement\n\t\tconst tagName = targetElement.tagName.toLowerCase()\n\n\t\tif (SchmancyFormV2.canSubmit(tagName)) {\n\t\t\tthis.submit()\n\t\t} else if ((targetElement as HTMLButtonElement).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'sch-form': SchmancyFormV2\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } 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\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\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\t'schmancy-select',\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\t'schmancy-checkbox',\n\t\t'schmancy-select',\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":["SchmancyFormV2","TailwindElement","constructor","super","this","$disconnecting","Subject","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","config","existingIndex","formControlRegistry","findIndex","item","tagName","push","find","hasValue","hasChecked","canSubmit","disconnectedCallback","next","complete","submit","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","reset","getFormElements","forEach","element","selectElement","i","options","length","option","selected","defaultSelected","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","children","Array","from","getElementsByTagName","filter","childElement","FormData","name","append","some","event","targetElement","render","html","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","Boolean","reflect","prototype","customElement","SchmancyForm","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-CxrvY530.js","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\n// Define interfaces for form element capabilities\nexport interface FormElement extends HTMLElement {\n\tname?: string\n\tvalue?: string\n\tdisabled?: boolean\n\ttype?: string\n\tdefaultValue?: string\n}\n\nexport interface CheckableFormElement extends FormElement {\n\tchecked?: boolean\n}\n\nexport interface ValidatableFormElement extends FormElement {\n\treportValidity?: () => boolean\n}\n\n// Define interface for form control registry\nexport interface FormControlConfig {\n\ttagName: string\n\thasValue?: boolean\n\thasChecked?: boolean\n\tcanSubmit?: boolean\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element sch-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('sch-form')\nexport default class SchmancyFormV2 extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'sch-form'\n\n\t// Static registry of form controls\n\tprivate static formControlRegistry: FormControlConfig[] = [\n\t\t// Native elements\n\t\t{ tagName: 'input', hasValue: true, hasChecked: true, canSubmit: true },\n\t\t{ tagName: 'textarea', hasValue: true },\n\t\t{ tagName: 'select', hasValue: true },\n\t\t{ tagName: 'button', canSubmit: true },\n\t\t{ tagName: 'radio', hasChecked: true },\n\n\t\t// Custom elements\n\t\t{ tagName: 'schmancy-input', hasValue: true, canSubmit: true },\n\t\t{ tagName: 'schmancy-mask-input', hasValue: true },\n\t\t{ tagName: 'schmancy-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-icon-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-radio', hasChecked: true },\n\t\t{ tagName: 'schmancy-switch', hasChecked: true },\n\t\t{ tagName: 'schmancy-checkbox', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-radio-group', hasChecked: true },\n\t\t{ tagName: 'schmancy-autocomplete', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-select', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-combo', hasValue: true },\n\t\t{ tagName: 'schmancy-date-time-input', hasValue: true },\n\t\t{ tagName: 'schmancy-rating', hasValue: true },\n\t]\n\n\t// Static methods to register new form controls\n\tpublic static registerFormControl(config: FormControlConfig): void {\n\t\tconst existingIndex = this.formControlRegistry.findIndex(item => item.tagName === config.tagName)\n\n\t\tif (existingIndex >= 0) {\n\t\t\tthis.formControlRegistry[existingIndex] = {\n\t\t\t\t...this.formControlRegistry[existingIndex],\n\t\t\t\t...config,\n\t\t\t}\n\t\t} else {\n\t\t\tthis.formControlRegistry.push(config)\n\t\t}\n\t}\n\n\t// Helper methods to check control capabilities\n\tprivate static hasValue(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasValue || false\n\t}\n\n\tprivate static hasChecked(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasChecked || false\n\t}\n\n\tprivate static canSubmit(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.canSubmit || false\n\t}\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\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\tconst target = e.target as HTMLButtonElement\n\t\t\t\t\tif (target.type?.toLowerCase() === 'submit') {\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\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\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.$disconnecting.next(null)\n\t\tthis.$disconnecting.complete()\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\n\t\t\tif (tagName === 'select') {\n\t\t\t\tconst selectElement = element as HTMLSelectElement\n\t\t\t\tfor (let i = 0; i < selectElement.options.length; i++) {\n\t\t\t\t\tconst option = selectElement.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' && SchmancyFormV2.hasChecked(tagName))\n\t\t\t) {\n\t\t\t\t;(element as CheckableFormElement).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 (SchmancyFormV2.hasValue(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(): FormElement[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: FormElement[] = []\n\n\t\tassignedElements?.forEach((element: FormElement) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter(\n\t\t\t\t(childElement: FormElement) => !childElement.disabled,\n\t\t\t)\n\t\t\tformElements.push(...(children as FormElement[]))\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\t\tconst formElements = this.getFormElements()\n\n\t\tformElements.forEach(element => {\n\t\t\tif (!element.name) return\n\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < (element as HTMLSelectElement).options.length; i++) {\n\t\t\t\t\tconst option = (element as HTMLSelectElement).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 (SchmancyFormV2.hasChecked(tagName) && (element as CheckableFormElement).checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tSchmancyFormV2.hasValue(tagName) &&\n\t\t\t\t(element as HTMLInputElement).type !== 'checkbox' &&\n\t\t\t\t(element as HTMLInputElement).type !== 'radio' &&\n\t\t\t\t(element as HTMLInputElement).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 =>\n\t\t\t\ttypeof (element as ValidatableFormElement).reportValidity === 'function' &&\n\t\t\t\t(element as ValidatableFormElement).reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement = event.target as HTMLElement\n\t\tconst tagName = targetElement.tagName.toLowerCase()\n\n\t\tif (SchmancyFormV2.canSubmit(tagName)) {\n\t\t\tthis.submit()\n\t\t} else if ((targetElement as HTMLButtonElement).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'sch-form': SchmancyFormV2\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } 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\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\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\t'schmancy-select',\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\t'schmancy-checkbox',\n\t\t'schmancy-select',\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":["SchmancyFormV2","TailwindElement","constructor","super","this","$disconnecting","Subject","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","config","existingIndex","formControlRegistry","findIndex","item","tagName","push","find","hasValue","hasChecked","canSubmit","disconnectedCallback","next","complete","submit","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","reset","getFormElements","forEach","element","selectElement","i","options","length","option","selected","defaultSelected","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","children","Array","from","getElementsByTagName","filter","childElement","FormData","name","append","some","event","targetElement","render","html","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","Boolean","reflect","prototype","customElement","SchmancyForm","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","includes"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const c=require("rxjs");require("rxjs/operators"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const m=require("lit/decorators.js"),p=require("./tailwind.mixin-
|
|
2
|
-
//# sourceMappingURL=form-
|
|
1
|
+
"use strict";const c=require("rxjs");require("rxjs/operators"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const m=require("lit/decorators.js"),p=require("./tailwind.mixin-3TPVvhYf.cjs"),l=require("lit");var y=Object.defineProperty,g=Object.getOwnPropertyDescriptor,u=(e,t,s,a)=>{for(var n,o=a>1?void 0:a?g(t,s):t,r=e.length-1;r>=0;r--)(n=e[r])&&(o=(a?n(t,s,o):n(o))||o);return a&&o&&y(t,s,o),o};let i=class extends p.TailwindElement(){constructor(){super(),this.$disconnecting=new c.Subject,this.novalidate=!1,c.merge(c.fromEvent(this,"click").pipe(c.tap(e=>{e.target.type?.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()}static registerFormControl(e){const t=this.formControlRegistry.findIndex(s=>s.tagName===e.tagName);t>=0?this.formControlRegistry[t]={...this.formControlRegistry[t],...e}:this.formControlRegistry.push(e)}static hasValue(e){return this.formControlRegistry.find(s=>s.tagName===e)?.hasValue||!1}static hasChecked(e){return this.formControlRegistry.find(s=>s.tagName===e)?.hasChecked||!1}static canSubmit(e){return this.formControlRegistry.find(s=>s.tagName===e)?.canSubmit||!1}disconnectedCallback(){super.disconnectedCallback(),this.$disconnecting.next(null),this.$disconnecting.complete()}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"){const s=e;for(let a=0;a<s.options.length;a++){const n=s.options[a];n.selected=n.defaultSelected}}else t==="input"&&(e.type==="checkbox"||e.type==="radio")||t!=="input"&&i.hasChecked(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"):i.hasValue(t)&&(e.value=e.defaultValue)}),this.dispatchEvent(new CustomEvent("reset"))}getFormElements(){const e=this.shadowRoot?.querySelector("slot"),t=e?.assignedElements({flatten:!0}),s=[];return t?.forEach(a=>{a.disabled||s.push(a);const n=Array.from(a.getElementsByTagName("*")).filter(o=>!o.disabled);s.push(...n)}),s}getFormData(){const e=new FormData;return this.getFormElements().forEach(t=>{if(!t.name)return;const s=t.tagName.toLowerCase();if(s==="select")for(let a=0;a<t.options.length;a++){const n=t.options[a];n.selected&&e.append(t.name,n.value)}else i.hasChecked(s)&&t.checked?e.append(t.name,t.value||"on"):i.hasValue(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){const t=e.target,s=t.tagName.toLowerCase();return i.canSubmit(s)?this.submit():t.type?.toLowerCase()==="reset"&&this.reset(),!0}render(){return l.html`<slot></slot>`}};i.tagName="sch-form",i.formControlRegistry=[{tagName:"input",hasValue:!0,hasChecked:!0,canSubmit:!0},{tagName:"textarea",hasValue:!0},{tagName:"select",hasValue:!0},{tagName:"button",canSubmit:!0},{tagName:"radio",hasChecked:!0},{tagName:"schmancy-input",hasValue:!0,canSubmit:!0},{tagName:"schmancy-mask-input",hasValue:!0},{tagName:"schmancy-button",canSubmit:!0},{tagName:"schmancy-icon-button",canSubmit:!0},{tagName:"schmancy-radio",hasChecked:!0},{tagName:"schmancy-switch",hasChecked:!0},{tagName:"schmancy-checkbox",hasValue:!0,hasChecked:!0},{tagName:"schmancy-radio-group",hasChecked:!0},{tagName:"schmancy-autocomplete",hasValue:!0,hasChecked:!0},{tagName:"schmancy-select",hasValue:!0,hasChecked:!0},{tagName:"schmancy-combo",hasValue:!0},{tagName:"schmancy-date-time-input",hasValue:!0},{tagName:"schmancy-rating",hasValue:!0}],i.shadowRootOptions={...l.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!1},u([m.property({type:Boolean,reflect:!0})],i.prototype,"novalidate",2),i=u([m.customElement("sch-form")],i);var b=Object.defineProperty,f=Object.getOwnPropertyDescriptor,d=(e,t,s,a)=>{for(var n,o=a>1?void 0:a?f(t,s):t,r=e.length-1;r>=0;r--)(n=e[r])&&(o=(a?n(t,s,o):n(o))||o);return a&&o&&b(t,s,o),o};let h=class extends p.TailwindElement(){constructor(){super(),this.$disconnecting=new c.Subject,this._controlsWithChecked=["input","radio","schmancy-radio","schmancy-switch","schmancy-checkbox","schmancy-radio-group","schmancy-autocomplete","schmancy-select"],this._controlsWithValue=["input","schmancy-input","schmancy-mask-input","textarea","schmancy-rating","schmancy-select","schmancy-combo","schmancy-date-time-input","schmancy-autocomplete","schmancy-checkbox","schmancy-select"],this._controlsThatSubmit=["button","schmancy-input","schmancy-button","schmancy-icon-button"],this.novalidate=!1,c.merge(c.fromEvent(this,"click").pipe(c.tap(e=>{e.target.type?.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 a=e.options[s];a.selected=a.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(){const e=this.shadowRoot?.querySelector("slot"),t=e?.assignedElements({flatten:!0}),s=[];return t?.forEach(a=>{a.disabled||s.push(a);const n=Array.from(a.getElementsByTagName("*")).filter(o=>!o.disabled);s.push(...n)}),s}getFormData(){const e=new FormData;return this.getFormElements().forEach(t=>{const s=t.tagName.toLowerCase();if(s==="select")for(let a=0;a<t.options.length;a++){const n=t.options[a];n.selected&&e.append(t.name,n.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){const t=e.target;return this._controlsThatSubmit.includes(t.tagName.toLowerCase())?this.submit():t.type?.toLowerCase()==="reset"&&this.reset(),!0}render(){return l.html`<slot></slot>`}};h.tagName="schmancy-form",h.shadowRootOptions={...l.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!1},d([m.property({type:Boolean,reflect:!0})],h.prototype,"novalidate",2),h=d([m.customElement("schmancy-form")],h);
|
|
2
|
+
//# sourceMappingURL=form-DFDTspmH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-CPmMvWvE.cjs","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\n// Define interfaces for form element capabilities\nexport interface FormElement extends HTMLElement {\n\tname?: string\n\tvalue?: string\n\tdisabled?: boolean\n\ttype?: string\n\tdefaultValue?: string\n}\n\nexport interface CheckableFormElement extends FormElement {\n\tchecked?: boolean\n}\n\nexport interface ValidatableFormElement extends FormElement {\n\treportValidity?: () => boolean\n}\n\n// Define interface for form control registry\nexport interface FormControlConfig {\n\ttagName: string\n\thasValue?: boolean\n\thasChecked?: boolean\n\tcanSubmit?: boolean\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element sch-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('sch-form')\nexport default class SchmancyFormV2 extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'sch-form'\n\n\t// Static registry of form controls\n\tprivate static formControlRegistry: FormControlConfig[] = [\n\t\t// Native elements\n\t\t{ tagName: 'input', hasValue: true, hasChecked: true, canSubmit: true },\n\t\t{ tagName: 'textarea', hasValue: true },\n\t\t{ tagName: 'select', hasValue: true },\n\t\t{ tagName: 'button', canSubmit: true },\n\t\t{ tagName: 'radio', hasChecked: true },\n\n\t\t// Custom elements\n\t\t{ tagName: 'schmancy-input', hasValue: true, canSubmit: true },\n\t\t{ tagName: 'schmancy-mask-input', hasValue: true },\n\t\t{ tagName: 'schmancy-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-icon-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-radio', hasChecked: true },\n\t\t{ tagName: 'schmancy-switch', hasChecked: true },\n\t\t{ tagName: 'schmancy-checkbox', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-radio-group', hasChecked: true },\n\t\t{ tagName: 'schmancy-autocomplete', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-select', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-combo', hasValue: true },\n\t\t{ tagName: 'schmancy-date-time-input', hasValue: true },\n\t\t{ tagName: 'schmancy-rating', hasValue: true },\n\t]\n\n\t// Static methods to register new form controls\n\tpublic static registerFormControl(config: FormControlConfig): void {\n\t\tconst existingIndex = this.formControlRegistry.findIndex(item => item.tagName === config.tagName)\n\n\t\tif (existingIndex >= 0) {\n\t\t\tthis.formControlRegistry[existingIndex] = {\n\t\t\t\t...this.formControlRegistry[existingIndex],\n\t\t\t\t...config,\n\t\t\t}\n\t\t} else {\n\t\t\tthis.formControlRegistry.push(config)\n\t\t}\n\t}\n\n\t// Helper methods to check control capabilities\n\tprivate static hasValue(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasValue || false\n\t}\n\n\tprivate static hasChecked(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasChecked || false\n\t}\n\n\tprivate static canSubmit(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.canSubmit || false\n\t}\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\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\tconst target = e.target as HTMLButtonElement\n\t\t\t\t\tif (target.type?.toLowerCase() === 'submit') {\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\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\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.$disconnecting.next(null)\n\t\tthis.$disconnecting.complete()\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\n\t\t\tif (tagName === 'select') {\n\t\t\t\tconst selectElement = element as HTMLSelectElement\n\t\t\t\tfor (let i = 0; i < selectElement.options.length; i++) {\n\t\t\t\t\tconst option = selectElement.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' && SchmancyFormV2.hasChecked(tagName))\n\t\t\t) {\n\t\t\t\t;(element as CheckableFormElement).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 (SchmancyFormV2.hasValue(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(): FormElement[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: FormElement[] = []\n\n\t\tassignedElements?.forEach((element: FormElement) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter(\n\t\t\t\t(childElement: FormElement) => !childElement.disabled,\n\t\t\t)\n\t\t\tformElements.push(...(children as FormElement[]))\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\t\tconst formElements = this.getFormElements()\n\n\t\tformElements.forEach(element => {\n\t\t\tif (!element.name) return\n\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < (element as HTMLSelectElement).options.length; i++) {\n\t\t\t\t\tconst option = (element as HTMLSelectElement).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 (SchmancyFormV2.hasChecked(tagName) && (element as CheckableFormElement).checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tSchmancyFormV2.hasValue(tagName) &&\n\t\t\t\t(element as HTMLInputElement).type !== 'checkbox' &&\n\t\t\t\t(element as HTMLInputElement).type !== 'radio' &&\n\t\t\t\t(element as HTMLInputElement).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 =>\n\t\t\t\ttypeof (element as ValidatableFormElement).reportValidity === 'function' &&\n\t\t\t\t(element as ValidatableFormElement).reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement = event.target as HTMLElement\n\t\tconst tagName = targetElement.tagName.toLowerCase()\n\n\t\tif (SchmancyFormV2.canSubmit(tagName)) {\n\t\t\tthis.submit()\n\t\t} else if ((targetElement as HTMLButtonElement).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'sch-form': SchmancyFormV2\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } 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\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\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\t'schmancy-select',\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\t'schmancy-checkbox',\n\t\t'schmancy-select',\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":["SchmancyFormV2","TailwindElement","constructor","super","this","$disconnecting","Subject","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","config","existingIndex","formControlRegistry","findIndex","item","tagName","push","find","hasValue","hasChecked","canSubmit","disconnectedCallback","next","complete","submit","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","getFormElements","forEach","element","selectElement","i","options","length","option","selected","defaultSelected","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","children","Array","from","getElementsByTagName","filter","childElement","FormData","name","append","some","event","targetElement","reset","render","html","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","Boolean","reflect","prototype","customElement","SchmancyForm","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-DFDTspmH.cjs","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\n// Define interfaces for form element capabilities\nexport interface FormElement extends HTMLElement {\n\tname?: string\n\tvalue?: string\n\tdisabled?: boolean\n\ttype?: string\n\tdefaultValue?: string\n}\n\nexport interface CheckableFormElement extends FormElement {\n\tchecked?: boolean\n}\n\nexport interface ValidatableFormElement extends FormElement {\n\treportValidity?: () => boolean\n}\n\n// Define interface for form control registry\nexport interface FormControlConfig {\n\ttagName: string\n\thasValue?: boolean\n\thasChecked?: boolean\n\tcanSubmit?: boolean\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element sch-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('sch-form')\nexport default class SchmancyFormV2 extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'sch-form'\n\n\t// Static registry of form controls\n\tprivate static formControlRegistry: FormControlConfig[] = [\n\t\t// Native elements\n\t\t{ tagName: 'input', hasValue: true, hasChecked: true, canSubmit: true },\n\t\t{ tagName: 'textarea', hasValue: true },\n\t\t{ tagName: 'select', hasValue: true },\n\t\t{ tagName: 'button', canSubmit: true },\n\t\t{ tagName: 'radio', hasChecked: true },\n\n\t\t// Custom elements\n\t\t{ tagName: 'schmancy-input', hasValue: true, canSubmit: true },\n\t\t{ tagName: 'schmancy-mask-input', hasValue: true },\n\t\t{ tagName: 'schmancy-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-icon-button', canSubmit: true },\n\t\t{ tagName: 'schmancy-radio', hasChecked: true },\n\t\t{ tagName: 'schmancy-switch', hasChecked: true },\n\t\t{ tagName: 'schmancy-checkbox', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-radio-group', hasChecked: true },\n\t\t{ tagName: 'schmancy-autocomplete', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-select', hasValue: true, hasChecked: true },\n\t\t{ tagName: 'schmancy-combo', hasValue: true },\n\t\t{ tagName: 'schmancy-date-time-input', hasValue: true },\n\t\t{ tagName: 'schmancy-rating', hasValue: true },\n\t]\n\n\t// Static methods to register new form controls\n\tpublic static registerFormControl(config: FormControlConfig): void {\n\t\tconst existingIndex = this.formControlRegistry.findIndex(item => item.tagName === config.tagName)\n\n\t\tif (existingIndex >= 0) {\n\t\t\tthis.formControlRegistry[existingIndex] = {\n\t\t\t\t...this.formControlRegistry[existingIndex],\n\t\t\t\t...config,\n\t\t\t}\n\t\t} else {\n\t\t\tthis.formControlRegistry.push(config)\n\t\t}\n\t}\n\n\t// Helper methods to check control capabilities\n\tprivate static hasValue(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasValue || false\n\t}\n\n\tprivate static hasChecked(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.hasChecked || false\n\t}\n\n\tprivate static canSubmit(tagName: string): boolean {\n\t\tconst config = this.formControlRegistry.find(item => item.tagName === tagName)\n\t\treturn config?.canSubmit || false\n\t}\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\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\tconst target = e.target as HTMLButtonElement\n\t\t\t\t\tif (target.type?.toLowerCase() === 'submit') {\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\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\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.$disconnecting.next(null)\n\t\tthis.$disconnecting.complete()\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\n\t\t\tif (tagName === 'select') {\n\t\t\t\tconst selectElement = element as HTMLSelectElement\n\t\t\t\tfor (let i = 0; i < selectElement.options.length; i++) {\n\t\t\t\t\tconst option = selectElement.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' && SchmancyFormV2.hasChecked(tagName))\n\t\t\t) {\n\t\t\t\t;(element as CheckableFormElement).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 (SchmancyFormV2.hasValue(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(): FormElement[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: FormElement[] = []\n\n\t\tassignedElements?.forEach((element: FormElement) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter(\n\t\t\t\t(childElement: FormElement) => !childElement.disabled,\n\t\t\t)\n\t\t\tformElements.push(...(children as FormElement[]))\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\t\tconst formElements = this.getFormElements()\n\n\t\tformElements.forEach(element => {\n\t\t\tif (!element.name) return\n\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < (element as HTMLSelectElement).options.length; i++) {\n\t\t\t\t\tconst option = (element as HTMLSelectElement).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 (SchmancyFormV2.hasChecked(tagName) && (element as CheckableFormElement).checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tSchmancyFormV2.hasValue(tagName) &&\n\t\t\t\t(element as HTMLInputElement).type !== 'checkbox' &&\n\t\t\t\t(element as HTMLInputElement).type !== 'radio' &&\n\t\t\t\t(element as HTMLInputElement).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 =>\n\t\t\t\ttypeof (element as ValidatableFormElement).reportValidity === 'function' &&\n\t\t\t\t(element as ValidatableFormElement).reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement = event.target as HTMLElement\n\t\tconst tagName = targetElement.tagName.toLowerCase()\n\n\t\tif (SchmancyFormV2.canSubmit(tagName)) {\n\t\t\tthis.submit()\n\t\t} else if ((targetElement as HTMLButtonElement).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'sch-form': SchmancyFormV2\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { html, LitElement } 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\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\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\t'schmancy-select',\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\t'schmancy-checkbox',\n\t\t'schmancy-select',\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":["SchmancyFormV2","TailwindElement","constructor","super","this","$disconnecting","Subject","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","config","existingIndex","formControlRegistry","findIndex","item","tagName","push","find","hasValue","hasChecked","canSubmit","disconnectedCallback","next","complete","submit","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","getFormElements","forEach","element","selectElement","i","options","length","option","selected","defaultSelected","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","children","Array","from","getElementsByTagName","filter","childElement","FormData","name","append","some","event","targetElement","reset","render","html","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","Boolean","reflect","prototype","customElement","SchmancyForm","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","includes"],"mappings":"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"}
|
package/dist/form.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./form-
|
|
1
|
+
"use strict";require("./form-DFDTspmH.cjs");
|
|
2
2
|
//# sourceMappingURL=form.cjs.map
|
package/dist/form.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./form-
|
|
1
|
+
import "./form-CxrvY530.js";
|
|
2
2
|
//# sourceMappingURL=form.js.map
|