@mhmo91/schmancy 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{animated-text-DBk95qoX.cjs → animated-text-5NJFGbRC.cjs} +2 -2
- package/dist/{animated-text-DBk95qoX.cjs.map → animated-text-5NJFGbRC.cjs.map} +1 -1
- package/dist/{animated-text-BhACpxZL.js → animated-text-C63wwL5H.js} +3 -3
- package/dist/{animated-text-BhACpxZL.js.map → animated-text-C63wwL5H.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-B78lu4GT.cjs +8 -0
- package/dist/{area.component-CbT_WCUv.cjs.map → area.component-B78lu4GT.cjs.map} +1 -1
- package/dist/{area.component-DX2Y6cAp.js → area.component-mDv3w12S.js} +85 -90
- package/dist/{area.component-DX2Y6cAp.js.map → area.component-mDv3w12S.js.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/autocomplete-BLtChct9.js +315 -0
- package/dist/{autocomplete-Qr_SNWus.js.map → autocomplete-BLtChct9.js.map} +1 -1
- package/dist/autocomplete-JjaB0OPh.cjs +73 -0
- package/dist/{autocomplete-ByVC8MLH.cjs.map → autocomplete-JjaB0OPh.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar-BuCRVCII.cjs +211 -0
- package/dist/avatar-BuCRVCII.cjs.map +1 -0
- package/dist/{avatar-BFxYkrCv.js → avatar-WaHuf8DW.js} +205 -322
- package/dist/avatar-WaHuf8DW.js.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-ZKuOCC1g.js → boat-BTnwHy3K.js} +2 -2
- package/dist/{boat-ZKuOCC1g.js.map → boat-BTnwHy3K.js.map} +1 -1
- package/dist/{boat-RaIwtGNW.cjs → boat-RjFQ6YHH.cjs} +2 -2
- package/dist/{boat-RaIwtGNW.cjs.map → boat-RjFQ6YHH.cjs.map} +1 -1
- 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 +7 -1
- package/dist/{checkbox-BZvRSKLj.cjs → checkbox-BdCbMFh6.cjs} +4 -4
- package/dist/{checkbox-BZvRSKLj.cjs.map → checkbox-BdCbMFh6.cjs.map} +1 -1
- package/dist/{checkbox-Cy3X3PGY.js → checkbox-C6B9Iii2.js} +34 -35
- package/dist/{checkbox-Cy3X3PGY.js.map → checkbox-C6B9Iii2.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-Y1qvw2Wa.js → chips-CLKkNCVv.js} +59 -61
- package/dist/{chips-Y1qvw2Wa.js.map → chips-CLKkNCVv.js.map} +1 -1
- package/dist/{chips-5IKm7m8x.cjs → chips-eAdPw08P.cjs} +25 -25
- package/dist/{chips-5IKm7m8x.cjs.map → chips-eAdPw08P.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-utG8iIPV.js → circular-progress-C246y_3U.js} +3 -3
- package/dist/{circular-progress-utG8iIPV.js.map → circular-progress-C246y_3U.js.map} +1 -1
- package/dist/{circular-progress-BZwI11v0.cjs → circular-progress-E9riM09J.cjs} +2 -2
- package/dist/{circular-progress-BZwI11v0.cjs.map → circular-progress-E9riM09J.cjs.map} +1 -1
- package/dist/circular-progress.cjs +1 -1
- package/dist/circular-progress.js +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-CN4mbrHE.cjs → code-preview-Cw3eINAz.cjs} +9 -9
- package/dist/{code-preview-CN4mbrHE.cjs.map → code-preview-Cw3eINAz.cjs.map} +1 -1
- package/dist/{code-preview-C_W44LD7.js → code-preview-CxDOJhpM.js} +166 -168
- package/dist/{code-preview-C_W44LD7.js.map → code-preview-CxDOJhpM.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/{consume-B05Dd6qy.js → consume-5D1qfVWM.js} +2 -2
- package/dist/{consume-B05Dd6qy.js.map → consume-5D1qfVWM.js.map} +1 -1
- package/dist/{consume-uKrSupzs.cjs → consume-edta5ng5.cjs} +2 -2
- package/dist/{consume-uKrSupzs.cjs.map → consume-edta5ng5.cjs.map} +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-object-CISes2bD.js → context-object-CDDP4bTk.js} +6 -8
- package/dist/{context-object-CISes2bD.js.map → context-object-CDDP4bTk.js.map} +1 -1
- package/dist/context-object-K_1gDFu-.cjs +2 -0
- package/dist/{context-object-CP7HbDFQ.cjs.map → context-object-K_1gDFu-.cjs.map} +1 -1
- package/dist/date-range-CYMv_xG-.cjs +121 -0
- package/dist/date-range-CYMv_xG-.cjs.map +1 -0
- package/dist/date-range-DStUXYx-.js +596 -0
- package/dist/date-range-DStUXYx-.js.map +1 -0
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-Cd-N6nxZ.js → delay-1MUDagyy.js} +57 -70
- package/dist/{delay-Cd-N6nxZ.js.map → delay-1MUDagyy.js.map} +1 -1
- package/dist/delay-DkQ3ZZuE.cjs +10 -0
- package/dist/{delay-CLGKeX0n.cjs.map → delay-DkQ3ZZuE.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-C835zQHB.js → dialog-content-CXBx9Bmp.js} +9 -11
- package/dist/{dialog-content-C835zQHB.js.map → dialog-content-CXBx9Bmp.js.map} +1 -1
- package/dist/{dialog-content-DWITDRHy.cjs → dialog-content-CjgsxN8I.cjs} +4 -4
- package/dist/{dialog-content-DWITDRHy.cjs.map → dialog-content-CjgsxN8I.cjs.map} +1 -1
- package/dist/dialog-service-BgqAlT7T.cjs +2 -0
- package/dist/{dialog-service-Di9NiBao.cjs.map → dialog-service-BgqAlT7T.cjs.map} +1 -1
- package/dist/dialog-service-CnjZCTMj.js +127 -0
- package/dist/{dialog-service-noGCuxg1.js.map → dialog-service-CnjZCTMj.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +2 -2
- package/dist/{divider-D7pxxtTI.js → divider-GhXZhIur.js} +3 -3
- package/dist/{divider-D7pxxtTI.js.map → divider-GhXZhIur.js.map} +1 -1
- package/dist/{divider-C7UzzgIj.cjs → divider-OSlBVpO-.cjs} +2 -2
- package/dist/{divider-C7UzzgIj.cjs.map → divider-OSlBVpO-.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-DJFDnoKm.js → dropdown-content-BcGSsDWz.js} +16 -20
- package/dist/{dropdown-content-DJFDnoKm.js.map → dropdown-content-BcGSsDWz.js.map} +1 -1
- package/dist/{dropdown-content-RMyyjS7G.cjs → dropdown-content-Cd1O_kVO.cjs} +4 -4
- package/dist/{dropdown-content-RMyyjS7G.cjs.map → dropdown-content-Cd1O_kVO.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-Bu7OqH-d.js → flex-BftnODFE.js} +63 -64
- package/dist/{flex-Bu7OqH-d.js.map → flex-BftnODFE.js.map} +1 -1
- package/dist/{flex-Cg_UtAIG.cjs → flex-DyHrvDQU.cjs} +10 -10
- package/dist/{flex-Cg_UtAIG.cjs.map → flex-DyHrvDQU.cjs.map} +1 -1
- package/dist/flow-D0e7hGXO.cjs +2 -0
- package/dist/{flow-CnJl1T1A.cjs.map → flow-D0e7hGXO.cjs.map} +1 -1
- package/dist/{flow-B1wMqea2.js → flow-DXYqC9OA.js} +50 -52
- package/dist/{flow-B1wMqea2.js.map → flow-DXYqC9OA.js.map} +1 -1
- package/dist/{form-WeCrsPmp.js → form-2QZDF5pF.js} +19 -28
- package/dist/{form-WeCrsPmp.js.map → form-2QZDF5pF.js.map} +1 -1
- package/dist/form-B0stbhfQ.cjs +14 -0
- package/dist/{form-DzfdidJO.cjs.map → form-B0stbhfQ.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-Be8aUtz9.js → icon-DWdq9YQM.js} +8 -9
- package/dist/{icon-Be8aUtz9.js.map → icon-DWdq9YQM.js.map} +1 -1
- package/dist/{icon-4c4f-QXa.cjs → icon-JitLog9X.cjs} +4 -4
- package/dist/{icon-4c4f-QXa.cjs.map → icon-JitLog9X.cjs.map} +1 -1
- package/dist/{icon-button-Mfs7C_ol.js → icon-button-BMkYjAl1.js} +40 -41
- package/dist/{icon-button-Mfs7C_ol.js.map → icon-button-BMkYjAl1.js.map} +1 -1
- package/dist/icon-button-em1NSoxk.cjs +69 -0
- package/dist/{icon-button-DNvGlOPI.cjs.map → icon-button-em1NSoxk.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +167 -162
- package/dist/index.js.map +1 -1
- package/dist/{input-CpYu_aUV.js → input-6XNB7MZP.js} +86 -113
- package/dist/{input-CpYu_aUV.js.map → input-6XNB7MZP.js.map} +1 -1
- package/dist/input-BlpSg5js.cjs +111 -0
- package/dist/{input-CD59n3y-.cjs.map → input-BlpSg5js.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-DNZhjJ-s.js → list-BxLFi3dU.js} +20 -21
- package/dist/{list-DNZhjJ-s.js.map → list-BxLFi3dU.js.map} +1 -1
- package/dist/{list-kvjz9d5N.cjs → list-CmbK_JyT.cjs} +4 -4
- package/dist/{list-kvjz9d5N.cjs.map → list-CmbK_JyT.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-DMTxmbnz.js → litElement.mixin-BC40ZfGG.js} +2 -2
- package/dist/{litElement.mixin-DMTxmbnz.js.map → litElement.mixin-BC40ZfGG.js.map} +1 -1
- package/dist/{litElement.mixin-CrXwM_fu.cjs → litElement.mixin-BDMVhBpu.cjs} +2 -2
- package/dist/{litElement.mixin-CrXwM_fu.cjs.map → litElement.mixin-BDMVhBpu.cjs.map} +1 -1
- package/dist/media-DR_teeoc.js +185 -0
- package/dist/media-DR_teeoc.js.map +1 -0
- package/dist/media-DSVZ83aB.cjs +128 -0
- package/dist/media-DSVZ83aB.cjs.map +1 -0
- package/dist/{menu-CzoGF0Jg.js → menu-CwKx1goz.js} +3 -3
- package/dist/{menu-CzoGF0Jg.js.map → menu-CwKx1goz.js.map} +1 -1
- package/dist/{menu-DSJGu_Le.cjs → menu-DRwYeROH.cjs} +2 -2
- package/dist/{menu-DSJGu_Le.cjs.map → menu-DRwYeROH.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{notification-service-dKoZweFH.cjs → notification-service-C6Bv3f71.cjs} +6 -6
- package/dist/{notification-service-dKoZweFH.cjs.map → notification-service-C6Bv3f71.cjs.map} +1 -1
- package/dist/{notification-service-BUZQ2nOZ.js → notification-service-ufUrNaq3.js} +4 -4
- package/dist/{notification-service-BUZQ2nOZ.js.map → notification-service-ufUrNaq3.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-dBiLTB_w.js → option-CayvURH3.js} +3 -4
- package/dist/{option-dBiLTB_w.js.map → option-CayvURH3.js.map} +1 -1
- package/dist/{option-BXU6HGLZ.cjs → option-Dt7pNR-a.cjs} +3 -3
- package/dist/{option-BXU6HGLZ.cjs.map → option-Dt7pNR-a.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-Bhy7PHzr.js → payment-card-form-DPf41TU3.js} +3 -3
- package/dist/{payment-card-form-Bhy7PHzr.js.map → payment-card-form-DPf41TU3.js.map} +1 -1
- package/dist/{payment-card-form-HSho3d5z.cjs → payment-card-form-xKlOCP9C.cjs} +2 -2
- package/dist/{payment-card-form-HSho3d5z.cjs.map → payment-card-form-xKlOCP9C.cjs.map} +1 -1
- package/dist/provide-BxZ2kn_p.cjs +2 -0
- package/dist/{provide-BGGp1Iks.cjs.map → provide-BxZ2kn_p.cjs.map} +1 -1
- package/dist/{provide-hwQSumt-.js → provide-tcktw8xB.js} +41 -42
- package/dist/{provide-hwQSumt-.js.map → provide-tcktw8xB.js.map} +1 -1
- package/dist/radio-button-BWJLsF3d.cjs +41 -0
- package/dist/{radio-button-dwmtJ2ef.cjs.map → radio-button-BWJLsF3d.cjs.map} +1 -1
- package/dist/radio-button-DouFDjcL.js +151 -0
- package/dist/{radio-button-DDbyvXw1.js.map → radio-button-DouFDjcL.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{redispatch-event-CF5ekzwZ.js → redispatch-event-BLom7yp4.js} +65 -68
- package/dist/{redispatch-event-CF5ekzwZ.js.map → redispatch-event-BLom7yp4.js.map} +1 -1
- package/dist/redispatch-event-DHcobAl6.cjs +4 -0
- package/dist/{redispatch-event-roczetCU.cjs.map → redispatch-event-DHcobAl6.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-COL9P7PV.cjs → schmancy-steps-container-3-Bd627o.cjs} +3 -3
- package/dist/{schmancy-steps-container-COL9P7PV.cjs.map → schmancy-steps-container-3-Bd627o.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-BrfKRYkI.js → schmancy-steps-container-CWBj3izf.js} +5 -6
- package/dist/{schmancy-steps-container-BrfKRYkI.js.map → schmancy-steps-container-CWBj3izf.js.map} +1 -1
- package/dist/{select-C6O6NRea.js → select-BjZUTKHm.js} +46 -56
- package/dist/{select-C6O6NRea.js.map → select-BjZUTKHm.js.map} +1 -1
- package/dist/select-Bv_TZZ-v.cjs +56 -0
- package/dist/{select-PrgXr6zf.cjs.map → select-Bv_TZZ-v.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{selector-hook-B6uqLA-J.js → selector-hook-BvXML7_4.js} +61 -64
- package/dist/{selector-hook-B6uqLA-J.js.map → selector-hook-BvXML7_4.js.map} +1 -1
- package/dist/selector-hook-CYMLsOvh.cjs +2 -0
- package/dist/{selector-hook-CyvD9WN9.cjs.map → selector-hook-CYMLsOvh.cjs.map} +1 -1
- package/dist/sheet-D8SmGguy.js +141 -0
- package/dist/{sheet-lcz-71nv.js.map → sheet-D8SmGguy.js.map} +1 -1
- package/dist/sheet-tx2jWxVd.cjs +47 -0
- package/dist/{sheet-CNvW8vrn.cjs.map → sheet-tx2jWxVd.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{slider-BNXI3Yj7.cjs → slider-Bo-4a-Ss.cjs} +8 -8
- package/dist/{slider-BNXI3Yj7.cjs.map → slider-Bo-4a-Ss.cjs.map} +1 -1
- package/dist/{slider-i-AZp4UF.js → slider-ytiEVvLJ.js} +36 -40
- package/dist/{slider-i-AZp4UF.js.map → slider-ytiEVvLJ.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-Df6JHzWX.js → spinner-BuH3Wf-1.js} +3 -3
- package/dist/{spinner-Df6JHzWX.js.map → spinner-BuH3Wf-1.js.map} +1 -1
- package/dist/{spinner-DItpvohq.cjs → spinner-RIkASBZt.cjs} +2 -2
- package/dist/{spinner-DItpvohq.cjs.map → spinner-RIkASBZt.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +2 -2
- package/dist/{surface-BaatMeqX.js → surface-Bkj3lZLo.js} +3 -3
- package/dist/{surface-BaatMeqX.js.map → surface-Bkj3lZLo.js.map} +1 -1
- package/dist/{surface-DiP3y6CA.cjs → surface-D-2akvnF.cjs} +2 -2
- package/dist/{surface-DiP3y6CA.cjs.map → surface-D-2akvnF.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-BY56H-_F.js → table-BNUCQw-a.js} +58 -68
- package/dist/{table-BY56H-_F.js.map → table-BNUCQw-a.js.map} +1 -1
- package/dist/table-BpeeUiM1.cjs +65 -0
- package/dist/{table-BRQDbCA8.cjs.map → table-BpeeUiM1.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-pq--kZ3e.cjs → tabs-compatibility-CIQWnzk8.cjs} +5 -5
- package/dist/{tabs-compatibility-pq--kZ3e.cjs.map → tabs-compatibility-CIQWnzk8.cjs.map} +1 -1
- package/dist/{tabs-compatibility-qFYA1HDl.js → tabs-compatibility-c-iBrBOK.js} +20 -21
- package/dist/{tabs-compatibility-qFYA1HDl.js.map → tabs-compatibility-c-iBrBOK.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-Ba46CZMW.js +43 -0
- package/dist/{tailwind.mixin-DbsxfE0U.js.map → tailwind.mixin-Ba46CZMW.js.map} +1 -1
- package/dist/tailwind.mixin-DJWjTKPc.cjs +2 -0
- package/dist/{tailwind.mixin-CPvz1Npj.cjs.map → tailwind.mixin-DJWjTKPc.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-DPD_F-N6.cjs → textarea-DL-qgeME.cjs} +12 -12
- package/dist/{textarea-DPD_F-N6.cjs.map → textarea-DL-qgeME.cjs.map} +1 -1
- package/dist/{textarea-D2m3usht.js → textarea-jbhUeEzu.js} +31 -45
- package/dist/{textarea-D2m3usht.js.map → textarea-jbhUeEzu.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-0dEQlWtO.cjs → theme-button-BcRuHUSa.cjs} +2 -2
- package/dist/{theme-button-0dEQlWtO.cjs.map → theme-button-BcRuHUSa.cjs.map} +1 -1
- package/dist/{theme-button-ucq2VrW0.js → theme-button-CBJXLV0Z.js} +2 -2
- package/dist/{theme-button-ucq2VrW0.js.map → theme-button-CBJXLV0Z.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.component-DOSuAou9.js → theme.component-DC3WGfcn.js} +24 -25
- package/dist/{theme.component-DOSuAou9.js.map → theme.component-DC3WGfcn.js.map} +1 -1
- package/dist/{theme.component-E4gA7t5r.cjs → theme.component-DFALHVCM.cjs} +2 -2
- package/dist/{theme.component-E4gA7t5r.cjs.map → theme.component-DFALHVCM.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-xOWMbSDV.js → timezone-CDz5qI2Z.js} +22 -28
- package/dist/{timezone-xOWMbSDV.js.map → timezone-CDz5qI2Z.js.map} +1 -1
- package/dist/{timezone-Bf4J_3By.cjs → timezone-IrGPq2tl.cjs} +6 -6
- package/dist/{timezone-Bf4J_3By.cjs.map → timezone-IrGPq2tl.cjs.map} +1 -1
- package/dist/{tooltip-zsp-xmPP.js → tooltip-BaX2Qoi8.js} +29 -31
- package/dist/{tooltip-zsp-xmPP.js.map → tooltip-BaX2Qoi8.js.map} +1 -1
- package/dist/tooltip-VUFi4Gjt.cjs +7 -0
- package/dist/{tooltip-6a1_bSeD.cjs.map → tooltip-VUFi4Gjt.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-DRa2127p.cjs → tree-Bz6GjWwf.cjs} +2 -2
- package/dist/{tree-DRa2127p.cjs.map → tree-Bz6GjWwf.cjs.map} +1 -1
- package/dist/{tree-D0FCXUWg.js → tree-DGUU6cQI.js} +2 -2
- package/dist/{tree-D0FCXUWg.js.map → tree-DGUU6cQI.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typewriter-9XKXLbKA.cjs +21 -0
- package/dist/{typewriter-XTltzkLy.cjs.map → typewriter-9XKXLbKA.cjs.map} +1 -1
- package/dist/typewriter-BdQEQLOW.js +437 -0
- package/dist/{typewriter-BNTzu9jY.js.map → typewriter-BdQEQLOW.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-DCP0jC-m.js → typography-B1KbZvto.js} +2 -2
- package/dist/{typography-DCP0jC-m.js.map → typography-B1KbZvto.js.map} +1 -1
- package/dist/{typography-nVG55_Y6.cjs → typography-RGPsRMJw.cjs} +2 -2
- package/dist/{typography-nVG55_Y6.cjs.map → typography-RGPsRMJw.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +14 -17
- package/dist/area.component-CbT_WCUv.cjs +0 -8
- package/dist/autocomplete-ByVC8MLH.cjs +0 -73
- package/dist/autocomplete-Qr_SNWus.js +0 -324
- package/dist/avatar-BFxYkrCv.js.map +0 -1
- package/dist/avatar-Bqohpa1o.cjs +0 -281
- package/dist/avatar-Bqohpa1o.cjs.map +0 -1
- package/dist/context-object-CP7HbDFQ.cjs +0 -2
- package/dist/date-range-CIn-HKuL.js +0 -637
- package/dist/date-range-CIn-HKuL.js.map +0 -1
- package/dist/date-range-Dff7Y8Ph.cjs +0 -139
- package/dist/date-range-Dff7Y8Ph.cjs.map +0 -1
- package/dist/delay-CLGKeX0n.cjs +0 -10
- package/dist/dialog-service-Di9NiBao.cjs +0 -2
- package/dist/dialog-service-noGCuxg1.js +0 -127
- package/dist/flow-CnJl1T1A.cjs +0 -2
- package/dist/form-DzfdidJO.cjs +0 -14
- package/dist/icon-button-DNvGlOPI.cjs +0 -69
- package/dist/input-CD59n3y-.cjs +0 -111
- package/dist/provide-BGGp1Iks.cjs +0 -2
- package/dist/radio-button-DDbyvXw1.js +0 -157
- package/dist/radio-button-dwmtJ2ef.cjs +0 -41
- package/dist/redispatch-event-roczetCU.cjs +0 -4
- package/dist/select-PrgXr6zf.cjs +0 -56
- package/dist/selector-hook-CyvD9WN9.cjs +0 -2
- package/dist/sheet-CNvW8vrn.cjs +0 -47
- package/dist/sheet-lcz-71nv.js +0 -146
- package/dist/table-BRQDbCA8.cjs +0 -65
- package/dist/tailwind.mixin-CPvz1Npj.cjs +0 -2
- package/dist/tailwind.mixin-DbsxfE0U.js +0 -43
- package/dist/tooltip-6a1_bSeD.cjs +0 -7
- package/dist/typewriter-BNTzu9jY.js +0 -436
- package/dist/typewriter-XTltzkLy.cjs +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-WeCrsPmp.js","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\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 { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t\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","super","this","$disconnecting","Subject","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","registerFormControl","config","existingIndex","formControlRegistry","findIndex","item","tagName","push","hasValue","find","hasChecked","canSubmit","disconnectedCallback","next","complete","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","submit","reset","render","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement","SchmancyForm","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-2QZDF5pF.js","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\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 { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t\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","super","this","$disconnecting","Subject","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","registerFormControl","config","existingIndex","formControlRegistry","findIndex","item","tagName","push","hasValue","find","hasChecked","canSubmit","disconnectedCallback","next","complete","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","submit","reset","render","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement","SchmancyForm","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","includes"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";const c=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("./tailwind.mixin-DJWjTKPc.cjs"),m=require("lit"),l=require("lit/decorators.js");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 m.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={...m.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!1},i.styles=m.css`
|
|
2
|
+
:host {
|
|
3
|
+
height: 100%;
|
|
4
|
+
width: 100%;
|
|
5
|
+
display: block;
|
|
6
|
+
}
|
|
7
|
+
`,u([l.property({type:Boolean,reflect:!0})],i.prototype,"novalidate",2),i=u([l.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 m.html`<slot></slot>`}};h.tagName="schmancy-form",h.shadowRootOptions={...m.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!1},h.styles=m.css`
|
|
8
|
+
:host {
|
|
9
|
+
height: 100%;
|
|
10
|
+
width: 100%;
|
|
11
|
+
display: block;
|
|
12
|
+
}
|
|
13
|
+
`,d([l.property({type:Boolean,reflect:!0})],h.prototype,"novalidate",2),h=d([l.customElement("schmancy-form")],h);
|
|
14
|
+
//# sourceMappingURL=form-B0stbhfQ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-DzfdidJO.cjs","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\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 { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t\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","registerFormControl","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","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement","SchmancyForm","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-B0stbhfQ.cjs","sources":["../src/form/form-v2.ts","../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\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 { css, 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\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t\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","registerFormControl","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","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__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-B0stbhfQ.cjs");
|
|
2
2
|
//# sourceMappingURL=form.cjs.map
|
package/dist/form.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./form-
|
|
1
|
+
import "./form-2QZDF5pF.js";
|
|
2
2
|
//# sourceMappingURL=form.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "rxjs";
|
|
2
2
|
import "lit/directives/class-map.js";
|
|
3
3
|
import "lit/directives/style-map.js";
|
|
4
|
-
import { T as c } from "./tailwind.mixin-
|
|
4
|
+
import { T as c } from "./tailwind.mixin-Ba46CZMW.js";
|
|
5
5
|
import { css as m, html as p } from "lit";
|
|
6
6
|
import { property as h, state as y, customElement as d } from "lit/decorators.js";
|
|
7
|
-
var f = Object.defineProperty, u = Object.getOwnPropertyDescriptor, a = (
|
|
8
|
-
for (var o,
|
|
9
|
-
return i &&
|
|
7
|
+
var f = Object.defineProperty, u = Object.getOwnPropertyDescriptor, a = (t, s, r, i) => {
|
|
8
|
+
for (var o, e = i > 1 ? void 0 : i ? u(s, r) : s, l = t.length - 1; l >= 0; l--) (o = t[l]) && (e = (i ? o(s, r, e) : o(e)) || e);
|
|
9
|
+
return i && e && f(s, r, e), e;
|
|
10
10
|
};
|
|
11
11
|
let n = class extends c(m`
|
|
12
12
|
.material-symbols-outlined {
|
|
@@ -37,20 +37,19 @@ let n = class extends c(m`
|
|
|
37
37
|
super(...arguments), this.size = "24px", this.busy = !1;
|
|
38
38
|
}
|
|
39
39
|
connectedCallback() {
|
|
40
|
-
var e;
|
|
41
40
|
if (super.connectedCallback(), !document.head.querySelector("#material-icons")) {
|
|
42
41
|
let t = document.createElement("link", { is: "material-icons" });
|
|
43
|
-
t.rel = "stylesheet", t.id = "material-icons", t.href = "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200",
|
|
42
|
+
t.rel = "stylesheet", t.id = "material-icons", t.href = "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200", document.querySelector("head")?.append(t), this.busy = !1;
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
render() {
|
|
47
|
-
const
|
|
46
|
+
const t = { fontSize: this.size, width: this.size, height: this.size, lineHeight: "1", display: "flex", alignItems: "center", justifyContent: "center" };
|
|
48
47
|
return p`
|
|
49
|
-
<span class="material-symbols-outlined w-fit" style=${this.styleMap(
|
|
48
|
+
<span class="material-symbols-outlined w-fit" style=${this.styleMap(t)}>
|
|
50
49
|
<slot .hidden=${this.busy}></slot>
|
|
51
50
|
</span>
|
|
52
51
|
`;
|
|
53
52
|
}
|
|
54
53
|
};
|
|
55
54
|
a([h({ type: String, reflect: !0 })], n.prototype, "size", 2), a([y()], n.prototype, "busy", 2), n = a([d("schmancy-icon")], n);
|
|
56
|
-
//# sourceMappingURL=icon-
|
|
55
|
+
//# sourceMappingURL=icon-DWdq9YQM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-
|
|
1
|
+
{"version":3,"file":"icon-DWdq9YQM.js","sources":["../src/icons/icon.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\n/**\n * @element schmancy-icon\n * Material Symbols icon component with configurable size\n */\n@customElement('schmancy-icon')\nexport default class SchmancyIcon extends TailwindElement(css`\n\t.material-symbols-outlined {\n\t\tfont-family: 'Material Symbols Outlined';\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tline-height: 1;\n\t\tletter-spacing: normal;\n\t\ttext-transform: none;\n\t\tdisplay: inline-block;\n\t\twhite-space: nowrap;\n\t\tword-wrap: normal;\n\t\tdirection: ltr;\n\t\t-webkit-font-smoothing: antialiased;\n\t\tfont-variation-settings:\n\t\t\t'FILL' 0,\n\t\t\t'wght' 400,\n\t\t\t'GRAD' 0,\n\t\t\t'opsz' 24;\n\t}\n\t:host {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n`) {\n\t/**\n\t * Icon size - can be specified in any CSS unit (px, rem, em, etc.)\n\t * Default is 24px\n\t */\n\t@property({ type: String, reflect: true })\n\tsize: string = '24px'\n\n\t@state() busy = false\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (!document.head.querySelector('#material-icons')) {\n\t\t\tlet link = document.createElement('link', {\n\t\t\t\tis: 'material-icons',\n\t\t\t})\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.id = 'material-icons'\n\t\t\tlink.href =\n\t\t\t\t'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200'\n\t\t\tdocument.querySelector('head')?.append(link)\n\t\t\tthis.busy = false\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\t// Ensure size is respected and properly applied\n\t\tconst style = {\n\t\t\tfontSize: this.size,\n\t\t\twidth: this.size,\n\t\t\theight: this.size,\n\t\t\tlineHeight: '1',\n\t\t\tdisplay: 'flex',\n\t\t\talignItems: 'center',\n\t\t\tjustifyContent: 'center',\n\t\t}\n\n\t\treturn html`\n\t\t\t<span class=\"material-symbols-outlined w-fit\" style=${this.styleMap(style)}>\n\t\t\t\t<slot .hidden=${this.busy}></slot>\n\t\t\t</span>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon': SchmancyIcon\n\t}\n}"],"names":["SchmancyIcon","TailwindElement","css","super","arguments","this","size","busy","connectedCallback","document","head","querySelector","link","createElement","is","rel","id","href","append","style","fontSize","width","height","lineHeight","display","alignItems","justifyContent","html","styleMap","__decorateClass","property","type","String","reflect","prototype","state","customElement"],"mappings":";;;;;;;;;;AASA,IAAqBA,IAArB,cAA0CC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA1D,EAAA;AAAA,EAAA,cAAAC;AAAAA,UAAAA,GAAAC,SA8BgBC,GAAAA,KAAAC,OAAA,QAECD,KAAAE,OAAA;AAAA,EAAA;AAAA,EAEhB,oBAEC;AAAA,QADAJ,MAAMK,kBACDC,GAAAA,CAAAA,SAASC,KAAKC,cAAc,iBAAoB,GAAA;AAChD,UAAAC,IAAOH,SAASI,cAAc,QAAQ,EACzCC,IAAI;AAELF,QAAKG,MAAM,cACXH,EAAKI,KAAK,kBACVJ,EAAKK,OACJ,wHACDR,SAASE,cAAc,MAASO,GAAAA,OAAON,IACvCP,KAAKE,OAAAA;AAAAA,IAAO;AAAA,EACb;AAAA,EAGS,SAET;AAAA,UAAMY,IAAQ,EACbC,UAAUf,KAAKC,MACfe,OAAOhB,KAAKC,MACZgB,QAAQjB,KAAKC,MACbiB,YAAY,KACZC,SAAS,QACTC,YAAY,UACZC,gBAAgB,SAAA;AAGV,WAAAC;AAAAA,yDACgDtB,KAAKuB,SAAST,CAAAA,CAAAA;AAAAA,oBACnDd,KAAKE,IAAAA;AAAAA;AAAAA;AAAAA,EAAI;AAjC5BsB;AAAAA,EAAA,CADCC,EAAS,EAAEC,MAAMC,QAAQC,SAAAA,GA7BNjC,CAAAA,CAAAA,GAAAA,EA8BpBkC,WAAA,QAAA,IAESL,EAAA,CAARM,EAhCmBnC,CAAAA,GAAAA,EAgCXkC,WAAA,QAAA,IAhCWlC,IAArB6B,EAAA,CADCO,EAAc,eACMpC,CAAAA,GAAAA,CAAAA;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const h=require("./tailwind.mixin-
|
|
1
|
+
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const h=require("./tailwind.mixin-DJWjTKPc.cjs"),m=require("lit"),a=require("lit/decorators.js");var p=Object.defineProperty,u=Object.getOwnPropertyDescriptor,c=(e,i,r,s)=>{for(var l,t=s>1?void 0:s?u(i,r):i,o=e.length-1;o>=0;o--)(l=e[o])&&(t=(s?l(i,r,t):l(t))||t);return s&&t&&p(i,r,t),t};let n=class extends h.TailwindElement(m.css`
|
|
2
2
|
.material-symbols-outlined {
|
|
3
3
|
font-family: 'Material Symbols Outlined';
|
|
4
4
|
font-weight: normal;
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
align-items: center;
|
|
23
23
|
justify-content: center;
|
|
24
24
|
}
|
|
25
|
-
`){constructor(){super(...arguments),this.size="24px",this.busy=!1}connectedCallback(){
|
|
26
|
-
<span class="material-symbols-outlined w-fit" style=${this.styleMap(
|
|
25
|
+
`){constructor(){super(...arguments),this.size="24px",this.busy=!1}connectedCallback(){if(super.connectedCallback(),!document.head.querySelector("#material-icons")){let e=document.createElement("link",{is:"material-icons"});e.rel="stylesheet",e.id="material-icons",e.href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200",document.querySelector("head")?.append(e),this.busy=!1}}render(){const e={fontSize:this.size,width:this.size,height:this.size,lineHeight:"1",display:"flex",alignItems:"center",justifyContent:"center"};return m.html`
|
|
26
|
+
<span class="material-symbols-outlined w-fit" style=${this.styleMap(e)}>
|
|
27
27
|
<slot .hidden=${this.busy}></slot>
|
|
28
28
|
</span>
|
|
29
29
|
`}};c([a.property({type:String,reflect:!0})],n.prototype,"size",2),c([a.state()],n.prototype,"busy",2),n=c([a.customElement("schmancy-icon")],n);
|
|
30
|
-
//# sourceMappingURL=icon-
|
|
30
|
+
//# sourceMappingURL=icon-JitLog9X.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-
|
|
1
|
+
{"version":3,"file":"icon-JitLog9X.cjs","sources":["../src/icons/icon.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\n/**\n * @element schmancy-icon\n * Material Symbols icon component with configurable size\n */\n@customElement('schmancy-icon')\nexport default class SchmancyIcon extends TailwindElement(css`\n\t.material-symbols-outlined {\n\t\tfont-family: 'Material Symbols Outlined';\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tline-height: 1;\n\t\tletter-spacing: normal;\n\t\ttext-transform: none;\n\t\tdisplay: inline-block;\n\t\twhite-space: nowrap;\n\t\tword-wrap: normal;\n\t\tdirection: ltr;\n\t\t-webkit-font-smoothing: antialiased;\n\t\tfont-variation-settings:\n\t\t\t'FILL' 0,\n\t\t\t'wght' 400,\n\t\t\t'GRAD' 0,\n\t\t\t'opsz' 24;\n\t}\n\t:host {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n`) {\n\t/**\n\t * Icon size - can be specified in any CSS unit (px, rem, em, etc.)\n\t * Default is 24px\n\t */\n\t@property({ type: String, reflect: true })\n\tsize: string = '24px'\n\n\t@state() busy = false\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (!document.head.querySelector('#material-icons')) {\n\t\t\tlet link = document.createElement('link', {\n\t\t\t\tis: 'material-icons',\n\t\t\t})\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.id = 'material-icons'\n\t\t\tlink.href =\n\t\t\t\t'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200'\n\t\t\tdocument.querySelector('head')?.append(link)\n\t\t\tthis.busy = false\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\t// Ensure size is respected and properly applied\n\t\tconst style = {\n\t\t\tfontSize: this.size,\n\t\t\twidth: this.size,\n\t\t\theight: this.size,\n\t\t\tlineHeight: '1',\n\t\t\tdisplay: 'flex',\n\t\t\talignItems: 'center',\n\t\t\tjustifyContent: 'center',\n\t\t}\n\n\t\treturn html`\n\t\t\t<span class=\"material-symbols-outlined w-fit\" style=${this.styleMap(style)}>\n\t\t\t\t<slot .hidden=${this.busy}></slot>\n\t\t\t</span>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon': SchmancyIcon\n\t}\n}"],"names":["SchmancyIcon","TailwindElement","css","super","arguments","this","size","busy","connectedCallback","document","head","querySelector","link","createElement","is","rel","id","href","append","render","style","fontSize","width","height","lineHeight","display","alignItems","justifyContent","html","styleMap","__decorateClass","property","type","String","reflect","prototype","state","customElement"],"mappings":"4YASA,IAAqBA,EAArB,cAA0CC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA1D,CAAA,CAAA,aAAAC,CAAAA,MAAAA,GAAAC,SA8BgBC,EAAAA,KAAAC,KAAA,OAECD,KAAAE,KAAA,EAAA,CAEhB,mBAEC,CAAA,GADAJ,MAAMK,kBACDC,EAAAA,CAAAA,SAASC,KAAKC,cAAc,iBAAoB,EAAA,CAChD,IAAAC,EAAOH,SAASI,cAAc,OAAQ,CACzCC,GAAI,mBAELF,EAAKG,IAAM,aACXH,EAAKI,GAAK,iBACVJ,EAAKK,KACJ,uHACDR,SAASE,cAAc,MAASO,GAAAA,OAAON,GACvCP,KAAKE,KAAAA,EAAO,CACb,CAGS,QAAAY,CAET,MAAMC,EAAQ,CACbC,SAAUhB,KAAKC,KACfgB,MAAOjB,KAAKC,KACZiB,OAAQlB,KAAKC,KACbkB,WAAY,IACZC,QAAS,OACTC,WAAY,SACZC,eAAgB,QAGV,EAAA,OAAAC,EAAAA;AAAAA,yDACgDvB,KAAKwB,SAAST,CAAAA,CAAAA;AAAAA,oBACnDf,KAAKE,IAAAA;AAAAA;AAAAA,GAAI,CAjC5BuB,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEC,KAAMC,OAAQC,QAAS,EAAA,CAAA,CAAA,EA7BflC,EA8BpBmC,UAAA,OAAA,CAAA,EAESL,EAAA,CAARM,EAAMA,MAhCapC,CAAAA,EAAAA,EAgCXmC,UAAA,OAAA,CAhCWnC,EAAAA,EAArB8B,EAAA,CADCO,EAAAA,cAAc,eACMrC,CAAAA,EAAAA,CAAAA"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import "rxjs";
|
|
2
2
|
import "lit/directives/class-map.js";
|
|
3
3
|
import "lit/directives/style-map.js";
|
|
4
|
-
import { $ as v } from "./litElement.mixin-
|
|
5
|
-
import "./tailwind.mixin-
|
|
6
|
-
import { css as m, html as
|
|
7
|
-
import { query as x, property as
|
|
8
|
-
import { ifDefined as
|
|
4
|
+
import { $ as v } from "./litElement.mixin-BC40ZfGG.js";
|
|
5
|
+
import "./tailwind.mixin-Ba46CZMW.js";
|
|
6
|
+
import { css as m, html as h, LitElement as y } from "lit";
|
|
7
|
+
import { query as x, property as a, queryAssignedElements as f, customElement as g } from "lit/decorators.js";
|
|
8
|
+
import { ifDefined as o } from "lit/directives/if-defined.js";
|
|
9
9
|
import { when as u } from "lit/directives/when.js";
|
|
10
|
-
var $ = Object.defineProperty, w = Object.getOwnPropertyDescriptor,
|
|
11
|
-
for (var b,
|
|
12
|
-
return
|
|
10
|
+
var $ = Object.defineProperty, w = Object.getOwnPropertyDescriptor, l = (t, e, p, n) => {
|
|
11
|
+
for (var b, i = n > 1 ? void 0 : n ? w(e, p) : e, c = t.length - 1; c >= 0; c--) (b = t[c]) && (i = (n ? b(e, p, i) : b(i)) || i);
|
|
12
|
+
return n && i && $(e, p, i), i;
|
|
13
13
|
};
|
|
14
|
-
let
|
|
14
|
+
let s = class extends v(m`
|
|
15
15
|
:host {
|
|
16
16
|
display: block;
|
|
17
17
|
width: fit-content;
|
|
@@ -37,11 +37,10 @@ let r = class extends v(m`
|
|
|
37
37
|
return ["max-h-[24px]", "max-w-[24px]", "object-contain"];
|
|
38
38
|
}
|
|
39
39
|
firstUpdated() {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
i.classList.add(...this.imgClasses), i.hasAttribute("alt") || i.setAttribute("alt", "");
|
|
40
|
+
this.prefixImgs?.forEach((t) => {
|
|
41
|
+
t.classList.add(...this.imgClasses), t.hasAttribute("alt") || t.setAttribute("alt", "");
|
|
42
|
+
}), this.suffixImgs?.forEach((t) => {
|
|
43
|
+
t.classList.add(...this.imgClasses), t.hasAttribute("alt") || t.setAttribute("alt", "");
|
|
45
44
|
});
|
|
46
45
|
}
|
|
47
46
|
click() {
|
|
@@ -52,31 +51,31 @@ let r = class extends v(m`
|
|
|
52
51
|
}
|
|
53
52
|
render() {
|
|
54
53
|
const t = { "z-0 py-[8px] px-[16px] transition-all duration-200 relative rounded-full inline-flex justify-center items-center gap-[8px] outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-hidden": !0, "cursor-pointer": !this.disabled, "opacity-[0.38]": this.disabled, "hover:shadow-xs": !this.disabled && (this.variant === "outlined" || this.variant === "text" || this.variant === "filled" || this.variant === "filled tonal"), "hover:shadow-sm": !this.disabled && this.variant === "elevated", "w-full tex-center": this.width === "full", "bg-surface-low text-primary-default shadow-xs": this.variant === "elevated", "bg-transparent text-primary-default border-1 border-solid border-outline": this.variant === "outlined", "bg-primary-default text-primary-on": this.variant === "filled", "bg-secondary-container text-secondary-onContainer": this.variant === "filled tonal", "text-primary-default": this.variant === "text" }, e = { "absolute inset-0 hover:opacity-[0.08] z-0 rounded-full": !0, "hover:bg-primary-on": this.variant === "filled", "hover:bg-primary-default": this.variant === "outlined" || this.variant === "elevated" || this.variant === "text", "hover:bg-secondary-container": this.variant === "filled tonal" };
|
|
55
|
-
return this.href ?
|
|
54
|
+
return this.href ? h`
|
|
56
55
|
<a
|
|
57
56
|
part="base"
|
|
58
|
-
href=${
|
|
59
|
-
aria-label=${
|
|
57
|
+
href=${o(this.disabled ? void 0 : this.href)}
|
|
58
|
+
aria-label=${o(this.ariaLabel)}
|
|
60
59
|
class="${this.classMap(t)}"
|
|
61
60
|
tabindex=${this.disabled ? "-1" : "0"}
|
|
62
61
|
aria-disabled=${this.disabled}
|
|
63
62
|
@click=${this.disabled ? this._preventDefault : void 0}
|
|
64
63
|
>
|
|
65
|
-
${u(!this.disabled, () =>
|
|
64
|
+
${u(!this.disabled, () => h`<div class="${this.classMap(e)}"></div>`)}
|
|
66
65
|
<slot name="prefix"></slot>
|
|
67
66
|
<slot></slot>
|
|
68
67
|
<slot name="suffix"></slot>
|
|
69
68
|
</a>
|
|
70
|
-
` :
|
|
69
|
+
` : h`
|
|
71
70
|
<button
|
|
72
71
|
part="base"
|
|
73
|
-
aria-label=${
|
|
72
|
+
aria-label=${o(this.ariaLabel)}
|
|
74
73
|
?disabled=${this.disabled}
|
|
75
74
|
class="${this.classMap(t)}"
|
|
76
|
-
type=${
|
|
77
|
-
tabindex=${
|
|
75
|
+
type=${o(this.type)}
|
|
76
|
+
tabindex=${o(this.disabled ? "-1" : void 0)}
|
|
78
77
|
>
|
|
79
|
-
${u(!this.disabled, () =>
|
|
78
|
+
${u(!this.disabled, () => h`<div class="${this.classMap(e)}"></div>`)}
|
|
80
79
|
<slot name="prefix"></slot>
|
|
81
80
|
<slot></slot>
|
|
82
81
|
<slot name="suffix"></slot>
|
|
@@ -84,12 +83,12 @@ let r = class extends v(m`
|
|
|
84
83
|
`;
|
|
85
84
|
}
|
|
86
85
|
};
|
|
87
|
-
|
|
88
|
-
var L = Object.defineProperty, z = Object.getOwnPropertyDescriptor,
|
|
89
|
-
for (var b,
|
|
90
|
-
return
|
|
86
|
+
s.shadowRootOptions = { ...y.shadowRootOptions, mode: "open", delegatesFocus: !0 }, l([x('[part="base"]', !0)], s.prototype, "nativeElement", 2), l([a({ reflect: !0, type: String })], s.prototype, "variant", 2), l([a()], s.prototype, "width", 2), l([a({ reflect: !0, type: String })], s.prototype, "type", 2), l([a()], s.prototype, "href", 2), l([a({ type: Boolean, reflect: !0 })], s.prototype, "disabled", 2), l([a({ attribute: "aria-label" })], s.prototype, "ariaLabel", 1), l([f({ slot: "prefix", flatten: !0, selector: "img" })], s.prototype, "prefixImgs", 2), l([f({ slot: "suffix", flatten: !0, selector: "img" })], s.prototype, "suffixImgs", 2), s = l([g("schmancy-button")], s);
|
|
87
|
+
var L = Object.defineProperty, z = Object.getOwnPropertyDescriptor, d = (t, e, p, n) => {
|
|
88
|
+
for (var b, i = n > 1 ? void 0 : n ? z(e, p) : e, c = t.length - 1; c >= 0; c--) (b = t[c]) && (i = (n ? b(e, p, i) : b(i)) || i);
|
|
89
|
+
return n && i && L(e, p, i), i;
|
|
91
90
|
};
|
|
92
|
-
let
|
|
91
|
+
let r = class extends v(m`
|
|
93
92
|
:host {
|
|
94
93
|
display: block;
|
|
95
94
|
}
|
|
@@ -120,31 +119,31 @@ let l = class extends v(m`
|
|
|
120
119
|
}
|
|
121
120
|
render() {
|
|
122
121
|
const t = { "z-0 h-full transition-all duration-200 relative rounded-full inline-flex justify-center items-center gap-[8px] outline-secondary-default focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-hidden": !0, "opacity-[0.38]": this.disabled, "cursor-pointer": !this.disabled, "hover:shadow-xs": !this.disabled && (this.variant === "outlined" || this.variant === "text" || this.variant === "filled" || this.variant === "filled tonal"), "hover:shadow-sm": !this.disabled && this.variant === "elevated", "w-full text-center": this.width === "full", "bg-surface-low text-primary-default shadow-xs": this.variant === "elevated", "bg-transparent text-primary-default border-1 border-outline": this.variant === "outlined", "bg-primary-default text-primary-on": this.variant === "filled", "bg-secondary-container text-secondary-onContainer": this.variant === "filled tonal", "text-primary-default": this.variant === "text", "px-[6px] py-[6px]": this.size === "sm", "px-[8px] py-[8px]": this.size === "md", "px-[12px] py-[12px]": this.size === "lg" }, e = { "hover:opacity-[0.08] rounded-full z-0": !0, "hover:bg-primary-on": this.variant === "filled", "hover:bg-primary-default": this.variant === "outlined" || this.variant === "elevated" || this.variant === "text", "hover:bg-secondary-container": this.variant === "filled tonal" };
|
|
123
|
-
return this.href ?
|
|
122
|
+
return this.href ? h`
|
|
124
123
|
<a
|
|
125
124
|
part="base"
|
|
126
|
-
href=${
|
|
127
|
-
aria-label=${
|
|
125
|
+
href=${o(this.disabled ? void 0 : this.href)}
|
|
126
|
+
aria-label=${o(this.ariaLabel)}
|
|
128
127
|
class="${this.classMap(t)}"
|
|
129
128
|
tabindex=${this.disabled ? "-1" : "0"}
|
|
130
129
|
aria-disabled=${this.disabled}
|
|
131
130
|
@click=${this.disabled ? this._preventDefault : void 0}
|
|
132
131
|
>
|
|
133
|
-
${u(!this.disabled, () =>
|
|
132
|
+
${u(!this.disabled, () => h`<div class="absolute inset-0 ${this.classMap(e)}"></div>`)}
|
|
134
133
|
<schmancy-icon size=${this.size === "sm" ? "18px" : this.size === "md" ? "24px" : "32px"}>
|
|
135
134
|
<slot></slot>
|
|
136
135
|
</schmancy-icon>
|
|
137
136
|
</a>
|
|
138
|
-
` :
|
|
137
|
+
` : h`
|
|
139
138
|
<button
|
|
140
139
|
part="base"
|
|
141
|
-
aria-label=${
|
|
140
|
+
aria-label=${o(this.ariaLabel)}
|
|
142
141
|
?disabled=${this.disabled}
|
|
143
142
|
class="${this.classMap(t)}"
|
|
144
|
-
type=${
|
|
145
|
-
tabindex=${
|
|
143
|
+
type=${o(this.type)}
|
|
144
|
+
tabindex=${o(this.disabled ? "-1" : void 0)}
|
|
146
145
|
>
|
|
147
|
-
${u(!this.disabled, () =>
|
|
146
|
+
${u(!this.disabled, () => h`<div class="absolute inset-0 ${this.classMap(e)}"></div>`)}
|
|
148
147
|
<schmancy-icon size=${this.size === "sm" ? "18px" : this.size === "md" ? "24px" : "32px"}>
|
|
149
148
|
<slot></slot>
|
|
150
149
|
</schmancy-icon>
|
|
@@ -152,9 +151,9 @@ let l = class extends v(m`
|
|
|
152
151
|
`;
|
|
153
152
|
}
|
|
154
153
|
};
|
|
155
|
-
|
|
154
|
+
r.shadowRootOptions = { ...y.shadowRootOptions, mode: "open", delegatesFocus: !0 }, d([x('[part="base"]', !0)], r.prototype, "nativeElement", 2), d([a({ type: String })], r.prototype, "size", 2), d([a({ reflect: !0, type: String })], r.prototype, "variant", 2), d([a()], r.prototype, "width", 2), d([a({ reflect: !0, type: String })], r.prototype, "type", 2), d([a()], r.prototype, "href", 2), d([a({ type: Boolean, reflect: !0 })], r.prototype, "disabled", 2), d([a({ attribute: "aria-label" })], r.prototype, "ariaLabel", 1), r = d([g("schmancy-icon-button")], r);
|
|
156
155
|
export {
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
s as S,
|
|
157
|
+
r as a
|
|
159
158
|
};
|
|
160
|
-
//# sourceMappingURL=icon-button-
|
|
159
|
+
//# sourceMappingURL=icon-button-BMkYjAl1.js.map
|