@mhmo91/schmancy 0.4.6 → 0.4.8
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-C14QnAsk.js → animated-text-BqZjMyzb.js} +3 -3
- package/dist/{animated-text-C14QnAsk.js.map → animated-text-BqZjMyzb.js.map} +1 -1
- package/dist/{animated-text-D-kAHVL-.cjs → animated-text-CgY-L1nI.cjs} +2 -2
- package/dist/{animated-text-D-kAHVL-.cjs.map → animated-text-CgY-L1nI.cjs.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-DD3k-3yp.js → area.component-B7U96CpD.js} +3 -3
- package/dist/{area.component-DD3k-3yp.js.map → area.component-B7U96CpD.js.map} +1 -1
- package/dist/{area.component-kvnRfth-.cjs → area.component-Zbs-bAJV.cjs} +2 -2
- package/dist/{area.component-kvnRfth-.cjs.map → area.component-Zbs-bAJV.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-DgrPHogj.js → autocomplete-DIUsdT73.js} +3 -3
- package/dist/{autocomplete-DgrPHogj.js.map → autocomplete-DIUsdT73.js.map} +1 -1
- package/dist/{autocomplete-Dez1_LQ_.cjs → autocomplete-qK00SJRP.cjs} +2 -2
- package/dist/{autocomplete-Dez1_LQ_.cjs.map → autocomplete-qK00SJRP.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-BttL2ygH.cjs → avatar-BMzBsIWs.cjs} +2 -2
- package/dist/{avatar-BttL2ygH.cjs.map → avatar-BMzBsIWs.cjs.map} +1 -1
- package/dist/{avatar-B6NwQXpL.js → avatar-DUPqOrZp.js} +44 -44
- package/dist/{avatar-B6NwQXpL.js.map → avatar-DUPqOrZp.js.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-QojjCx3K.js → boat-By-PBLw8.js} +2 -2
- package/dist/{boat-QojjCx3K.js.map → boat-By-PBLw8.js.map} +1 -1
- package/dist/{boat-Opr-JDiz.cjs → boat-DUU675NX.cjs} +2 -2
- package/dist/{boat-Opr-JDiz.cjs.map → boat-DUU675NX.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 +1 -1
- package/dist/{checkbox-ktMxUfeF.js → checkbox-_WevqQDR.js} +2 -2
- package/dist/{checkbox-ktMxUfeF.js.map → checkbox-_WevqQDR.js.map} +1 -1
- package/dist/{checkbox-D02qLg64.cjs → checkbox-f7BewP4u.cjs} +2 -2
- package/dist/{checkbox-D02qLg64.cjs.map → checkbox-f7BewP4u.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-nR84ClxC.cjs → chips-D1QElds4.cjs} +2 -2
- package/dist/{chips-nR84ClxC.cjs.map → chips-D1QElds4.cjs.map} +1 -1
- package/dist/{chips-xakYpmLk.js → chips-DiDm29N_.js} +3 -3
- package/dist/{chips-xakYpmLk.js.map → chips-DiDm29N_.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-DITkB69y.js → circular-progress-BAlic8HY.js} +3 -3
- package/dist/{circular-progress-DITkB69y.js.map → circular-progress-BAlic8HY.js.map} +1 -1
- package/dist/{circular-progress-C1VxqINu.cjs → circular-progress-CfPyDLX6.cjs} +2 -2
- package/dist/{circular-progress-C1VxqINu.cjs.map → circular-progress-CfPyDLX6.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-ct_lICzT.js → code-preview-BiVj9uxF.js} +2 -2
- package/dist/{code-preview-ct_lICzT.js.map → code-preview-BiVj9uxF.js.map} +1 -1
- package/dist/{code-preview-AaDZ25jE.cjs → code-preview-DtvCblTa.cjs} +2 -2
- package/dist/{code-preview-AaDZ25jE.cjs.map → code-preview-DtvCblTa.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/date-range-BPVaXilO.cjs +117 -0
- package/dist/date-range-BPVaXilO.cjs.map +1 -0
- package/dist/date-range-DN0v_ykN.js +609 -0
- package/dist/date-range-DN0v_ykN.js.map +1 -0
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-Dvg8k4NQ.js → delay-BdXEKapp.js} +2 -2
- package/dist/{delay-Dvg8k4NQ.js.map → delay-BdXEKapp.js.map} +1 -1
- package/dist/{delay-CBu7O627.cjs → delay-KEyQxDNp.cjs} +2 -2
- package/dist/{delay-CBu7O627.cjs.map → delay-KEyQxDNp.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-BUtwJ3HL.js → dialog-content-D3sFNuVs.js} +72 -91
- package/dist/dialog-content-D3sFNuVs.js.map +1 -0
- package/dist/{dialog-content-SX6qtxGj.cjs → dialog-content-D5YTttrK.cjs} +12 -29
- package/dist/dialog-content-D5YTttrK.cjs.map +1 -0
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-BBr_f7I9.cjs → divider-CDz3pUAy.cjs} +2 -2
- package/dist/{divider-BBr_f7I9.cjs.map → divider-CDz3pUAy.cjs.map} +1 -1
- package/dist/{divider-DexSqAwi.js → divider-CNXiMvWd.js} +3 -3
- package/dist/{divider-DexSqAwi.js.map → divider-CNXiMvWd.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-CBhrkLS9.js → dropdown-content-CVz6zPSO.js} +3 -3
- package/dist/{dropdown-content-CBhrkLS9.js.map → dropdown-content-CVz6zPSO.js.map} +1 -1
- package/dist/{dropdown-content-q5TJhsvd.cjs → dropdown-content-jlq_cqLS.cjs} +2 -2
- package/dist/{dropdown-content-q5TJhsvd.cjs.map → dropdown-content-jlq_cqLS.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-DcCOzqAb.cjs → flex-DFatBgot.cjs} +2 -2
- package/dist/{flex-DcCOzqAb.cjs.map → flex-DFatBgot.cjs.map} +1 -1
- package/dist/{flex-eb13QDmS.js → flex-TjhbDSMX.js} +2 -2
- package/dist/{flex-eb13QDmS.js.map → flex-TjhbDSMX.js.map} +1 -1
- package/dist/{form-BkVMKRp7.cjs → form-ClDdYqke.cjs} +2 -2
- package/dist/{form-BkVMKRp7.cjs.map → form-ClDdYqke.cjs.map} +1 -1
- package/dist/{form-DYqGyUi5.js → form-D-auKn-K.js} +2 -2
- package/dist/{form-DYqGyUi5.js.map → form-D-auKn-K.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-BfoeUvkX.js → icon-BfY2ZJUE.js} +2 -2
- package/dist/{icon-BfoeUvkX.js.map → icon-BfY2ZJUE.js.map} +1 -1
- package/dist/{icon-aeFENeVj.cjs → icon-D2xGQiZb.cjs} +2 -2
- package/dist/{icon-aeFENeVj.cjs.map → icon-D2xGQiZb.cjs.map} +1 -1
- package/dist/{icon-button-A1NFKFmq.cjs → icon-button-BUkdhu_-.cjs} +2 -2
- package/dist/{icon-button-A1NFKFmq.cjs.map → icon-button-BUkdhu_-.cjs.map} +1 -1
- package/dist/{icon-button-C10pky9Q.js → icon-button-yKwaljg0.js} +3 -3
- package/dist/{icon-button-C10pky9Q.js.map → icon-button-yKwaljg0.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +42 -42
- package/dist/{input-DcDi_noA.js → input-B3GMd-FZ.js} +2 -2
- package/dist/{input-DcDi_noA.js.map → input-B3GMd-FZ.js.map} +1 -1
- package/dist/{input-q8VOTI3J.cjs → input-By2O_8YL.cjs} +2 -2
- package/dist/{input-q8VOTI3J.cjs.map → input-By2O_8YL.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-YOtl6JRk.cjs → list-BO9C13wk.cjs} +2 -2
- package/dist/{list-YOtl6JRk.cjs.map → list-BO9C13wk.cjs.map} +1 -1
- package/dist/{list-BvW5Mhsb.js → list-CHZKII-L.js} +2 -2
- package/dist/{list-BvW5Mhsb.js.map → list-CHZKII-L.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-DJxjDwEr.js → litElement.mixin-5RC72TVS.js} +2 -2
- package/dist/{litElement.mixin-DJxjDwEr.js.map → litElement.mixin-5RC72TVS.js.map} +1 -1
- package/dist/{litElement.mixin-Do6OsQmn.cjs → litElement.mixin-CUibxXWX.cjs} +2 -2
- package/dist/{litElement.mixin-Do6OsQmn.cjs.map → litElement.mixin-CUibxXWX.cjs.map} +1 -1
- package/dist/{media-DchXWby1.js → media-4arP4Xi0.js} +2 -2
- package/dist/{media-DchXWby1.js.map → media-4arP4Xi0.js.map} +1 -1
- package/dist/{media-CxRMY7ct.cjs → media-v2LZA3zQ.cjs} +2 -2
- package/dist/{media-CxRMY7ct.cjs.map → media-v2LZA3zQ.cjs.map} +1 -1
- package/dist/{menu-D0Wv-94q.cjs → menu-C-ZpBMON.cjs} +2 -2
- package/dist/{menu-D0Wv-94q.cjs.map → menu-C-ZpBMON.cjs.map} +1 -1
- package/dist/{menu-DC81HpzC.js → menu-DvcxRQrY.js} +3 -3
- package/dist/{menu-DC81HpzC.js.map → menu-DvcxRQrY.js.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-fl9rTVO5.cjs → notification-service-BXTqvkWg.cjs} +2 -2
- package/dist/{notification-service-fl9rTVO5.cjs.map → notification-service-BXTqvkWg.cjs.map} +1 -1
- package/dist/{notification-service-DiZinzWu.js → notification-service-CcapAF2G.js} +3 -3
- package/dist/{notification-service-DiZinzWu.js.map → notification-service-CcapAF2G.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-BQ0PXMOa.cjs → option-Cj3xNzQG.cjs} +2 -2
- package/dist/{option-BQ0PXMOa.cjs.map → option-Cj3xNzQG.cjs.map} +1 -1
- package/dist/{option-BBcO5Pj5.js → option-xSW3D1j5.js} +2 -2
- package/dist/{option-BBcO5Pj5.js.map → option-xSW3D1j5.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-BTpnbZFg.js → payment-card-form-B-W0YXS5.js} +3 -3
- package/dist/{payment-card-form-BTpnbZFg.js.map → payment-card-form-B-W0YXS5.js.map} +1 -1
- package/dist/{payment-card-form-DbEZ8Js1.cjs → payment-card-form-CdNQkQa5.cjs} +2 -2
- package/dist/{payment-card-form-DbEZ8Js1.cjs.map → payment-card-form-CdNQkQa5.cjs.map} +1 -1
- package/dist/{radio-button-DE08d0Yl.js → radio-button-CNrcOMLm.js} +2 -2
- package/dist/{radio-button-DE08d0Yl.js.map → radio-button-CNrcOMLm.js.map} +1 -1
- package/dist/{radio-button-BkYPf2-q.cjs → radio-button-WeQklCIj.cjs} +2 -2
- package/dist/{radio-button-BkYPf2-q.cjs.map → radio-button-WeQklCIj.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-D6L7dAbO.js → schmancy-steps-container-DTR_ppqJ.js} +2 -2
- package/dist/{schmancy-steps-container-D6L7dAbO.js.map → schmancy-steps-container-DTR_ppqJ.js.map} +1 -1
- package/dist/{schmancy-steps-container-tKeAaFIY.cjs → schmancy-steps-container-kh5hz8Q8.cjs} +2 -2
- package/dist/{schmancy-steps-container-tKeAaFIY.cjs.map → schmancy-steps-container-kh5hz8Q8.cjs.map} +1 -1
- package/dist/{select-Dqr73662.js → select-BeStY5QU.js} +3 -3
- package/dist/{select-Dqr73662.js.map → select-BeStY5QU.js.map} +1 -1
- package/dist/{select-5yP3bof1.cjs → select-D6OdooZd.cjs} +2 -2
- package/dist/{select-5yP3bof1.cjs.map → select-D6OdooZd.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-BcN4mBoD.cjs → sheet-BHdCyBYA.cjs} +2 -2
- package/dist/{sheet-BcN4mBoD.cjs.map → sheet-BHdCyBYA.cjs.map} +1 -1
- package/dist/{sheet-x6OfY0Se.js → sheet-DurXVAka.js} +4 -4
- package/dist/{sheet-x6OfY0Se.js.map → sheet-DurXVAka.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{slider-ecFkp13d.js → slider-CcOPTwfV.js} +3 -3
- package/dist/{slider-ecFkp13d.js.map → slider-CcOPTwfV.js.map} +1 -1
- package/dist/{slider-BxT70Fsi.cjs → slider-eKHfEAqk.cjs} +2 -2
- package/dist/{slider-BxT70Fsi.cjs.map → slider-eKHfEAqk.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-BNAzXVjG.cjs → spinner-0BTyqnFH.cjs} +2 -2
- package/dist/{spinner-BNAzXVjG.cjs.map → spinner-0BTyqnFH.cjs.map} +1 -1
- package/dist/{spinner-WpaBY1JF.js → spinner-BcaOyZIW.js} +3 -3
- package/dist/{spinner-WpaBY1JF.js.map → spinner-BcaOyZIW.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-BWZ0Kqca.cjs → surface-DhTA5nKg.cjs} +2 -2
- package/dist/{surface-BWZ0Kqca.cjs.map → surface-DhTA5nKg.cjs.map} +1 -1
- package/dist/{surface-BA0AdJVV.js → surface-XqJoAcEI.js} +2 -2
- package/dist/{surface-BA0AdJVV.js.map → surface-XqJoAcEI.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-IXyFmT0L.cjs → table-DPfOXBUJ.cjs} +2 -2
- package/dist/{table-IXyFmT0L.cjs.map → table-DPfOXBUJ.cjs.map} +1 -1
- package/dist/{table-BLnwnQsA.js → table-Dy5Fqu4G.js} +2 -2
- package/dist/{table-BLnwnQsA.js.map → table-Dy5Fqu4G.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-DTWvzrPU.js → tabs-compatibility-BqSkFV08.js} +2 -2
- package/dist/{tabs-compatibility-DTWvzrPU.js.map → tabs-compatibility-BqSkFV08.js.map} +1 -1
- package/dist/{tabs-compatibility-D4J5od5-.cjs → tabs-compatibility-TPaYG7ev.cjs} +2 -2
- package/dist/{tabs-compatibility-D4J5od5-.cjs.map → tabs-compatibility-TPaYG7ev.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-C6mrbvH3.cjs +2 -0
- package/dist/{tailwind.mixin-BvJKKv72.cjs.map → tailwind.mixin-C6mrbvH3.cjs.map} +1 -1
- package/dist/tailwind.mixin-DpiTmETl.js +43 -0
- package/dist/{tailwind.mixin-DauVaFKt.js.map → tailwind.mixin-DpiTmETl.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-DH6PuHVg.js → textarea-Ba8gRDPS.js} +2 -2
- package/dist/{textarea-DH6PuHVg.js.map → textarea-Ba8gRDPS.js.map} +1 -1
- package/dist/{textarea-Dl8avXEo.cjs → textarea-Dy7B8B0d.cjs} +2 -2
- package/dist/{textarea-Dl8avXEo.cjs.map → textarea-Dy7B8B0d.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-rjXu-3em.cjs → theme-button-Bnm7IL1u.cjs} +2 -2
- package/dist/{theme-button-rjXu-3em.cjs.map → theme-button-Bnm7IL1u.cjs.map} +1 -1
- package/dist/{theme-button--p6t7qcD.js → theme-button-COwSZ83Y.js} +2 -2
- package/dist/{theme-button--p6t7qcD.js.map → theme-button-COwSZ83Y.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-D2KSl93u.js → theme.component-BV_e_mXY.js} +2 -2
- package/dist/{theme.component-D2KSl93u.js.map → theme.component-BV_e_mXY.js.map} +1 -1
- package/dist/{theme.component-CIsakuvd.cjs → theme.component-UBy29B7c.cjs} +2 -2
- package/dist/{theme.component-CIsakuvd.cjs.map → theme.component-UBy29B7c.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-BW4gugCz.cjs → timezone-DBxPtZan.cjs} +2 -2
- package/dist/{timezone-BW4gugCz.cjs.map → timezone-DBxPtZan.cjs.map} +1 -1
- package/dist/{timezone-CXXh8orD.js → timezone-DEhkif2j.js} +3 -3
- package/dist/{timezone-CXXh8orD.js.map → timezone-DEhkif2j.js.map} +1 -1
- package/dist/{tooltip-DUEo4iG2.cjs → tooltip-CTBMN8M6.cjs} +2 -2
- package/dist/{tooltip-DUEo4iG2.cjs.map → tooltip-CTBMN8M6.cjs.map} +1 -1
- package/dist/{tooltip-rWGtsCcJ.js → tooltip-D0coQKih.js} +2 -2
- package/dist/{tooltip-rWGtsCcJ.js.map → tooltip-D0coQKih.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-CSCSIz67.cjs → tree-Co4Ithrh.cjs} +2 -2
- package/dist/{tree-CSCSIz67.cjs.map → tree-Co4Ithrh.cjs.map} +1 -1
- package/dist/{tree-C1H2E_rA.js → tree-Zy0XMFKh.js} +2 -2
- package/dist/{tree-C1H2E_rA.js.map → tree-Zy0XMFKh.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-DtvMI0TT.js → typewriter-C0InniFB.js} +4 -4
- package/dist/{typewriter-DtvMI0TT.js.map → typewriter-C0InniFB.js.map} +1 -1
- package/dist/{typewriter-BuQA40J-.cjs → typewriter-soteXIt4.cjs} +2 -2
- package/dist/{typewriter-BuQA40J-.cjs.map → typewriter-soteXIt4.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-DjwFfw1O.cjs → typography-Bw9baiV3.cjs} +2 -2
- package/dist/{typography-DjwFfw1O.cjs.map → typography-Bw9baiV3.cjs.map} +1 -1
- package/dist/{typography-DT9N3Jtf.js → typography-CeTZ2VqE.js} +2 -2
- package/dist/{typography-DT9N3Jtf.js.map → typography-CeTZ2VqE.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/dist/date-range-C_01AThP.js +0 -594
- package/dist/date-range-C_01AThP.js.map +0 -1
- package/dist/date-range-DSVDY7Uj.cjs +0 -119
- package/dist/date-range-DSVDY7Uj.cjs.map +0 -1
- package/dist/dialog-content-BUtwJ3HL.js.map +0 -1
- package/dist/dialog-content-SX6qtxGj.cjs.map +0 -1
- package/dist/tailwind.mixin-BvJKKv72.cjs +0 -2
- package/dist/tailwind.mixin-DauVaFKt.js +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-BkVMKRp7.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-ClDdYqke.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,7 +1,7 @@
|
|
|
1
1
|
import { Subject as d, merge as p, fromEvent as h, tap as m, takeUntil as y } from "rxjs";
|
|
2
2
|
import "lit/directives/class-map.js";
|
|
3
3
|
import "lit/directives/style-map.js";
|
|
4
|
-
import { T as g } from "./tailwind.mixin-
|
|
4
|
+
import { T as g } from "./tailwind.mixin-DpiTmETl.js";
|
|
5
5
|
import { html as b, LitElement as f, css as k } from "lit";
|
|
6
6
|
import { property as C, customElement as v } from "lit/decorators.js";
|
|
7
7
|
var E = Object.defineProperty, N = Object.getOwnPropertyDescriptor, l = (e, t, s, a) => {
|
|
@@ -149,4 +149,4 @@ r.tagName = "schmancy-form", r.shadowRootOptions = { ...f.shadowRootOptions, mod
|
|
|
149
149
|
display: block;
|
|
150
150
|
}
|
|
151
151
|
`, u([C({ type: Boolean, reflect: !0 })], r.prototype, "novalidate", 2), r = u([v("schmancy-form")], r);
|
|
152
|
-
//# sourceMappingURL=form-
|
|
152
|
+
//# sourceMappingURL=form-D-auKn-K.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-DYqGyUi5.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-D-auKn-K.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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"}
|
package/dist/form.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./form-
|
|
1
|
+
"use strict";require("./form-ClDdYqke.cjs");
|
|
2
2
|
//# sourceMappingURL=form.cjs.map
|
package/dist/form.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./form-
|
|
1
|
+
import "./form-D-auKn-K.js";
|
|
2
2
|
//# sourceMappingURL=form.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
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-DpiTmETl.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
7
|
var f = Object.defineProperty, u = Object.getOwnPropertyDescriptor, a = (t, s, r, i) => {
|
|
@@ -52,4 +52,4 @@ let n = class extends c(m`
|
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
a([h({ type: String, reflect: !0 })], n.prototype, "size", 2), a([y()], n.prototype, "busy", 2), n = a([d("schmancy-icon")], n);
|
|
55
|
-
//# sourceMappingURL=icon-
|
|
55
|
+
//# sourceMappingURL=icon-BfY2ZJUE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-
|
|
1
|
+
{"version":3,"file":"icon-BfY2ZJUE.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-C6mrbvH3.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;
|
|
@@ -27,4 +27,4 @@
|
|
|
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-D2xGQiZb.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-
|
|
1
|
+
{"version":3,"file":"icon-D2xGQiZb.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,4 +1,4 @@
|
|
|
1
|
-
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const u=require("./litElement.mixin-
|
|
1
|
+
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const u=require("./litElement.mixin-CUibxXWX.cjs");require("./tailwind.mixin-C6mrbvH3.cjs");const s=require("lit"),i=require("lit/decorators.js"),n=require("lit/directives/if-defined.js"),p=require("lit/directives/when.js");var b=Object.defineProperty,f=Object.getOwnPropertyDescriptor,r=(t,e,h,o)=>{for(var d,a=o>1?void 0:o?f(e,h):e,c=t.length-1;c>=0;c--)(d=t[c])&&(a=(o?d(e,h,a):d(a))||a);return o&&a&&b(e,h,a),a};exports.SchmancyButton=class extends u.$LitElement(s.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
width: fit-content;
|
|
@@ -66,4 +66,4 @@
|
|
|
66
66
|
</schmancy-icon>
|
|
67
67
|
</button>
|
|
68
68
|
`}},exports.SchmnacyIconButton.shadowRootOptions={...s.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!0},l([i.query('[part="base"]',!0)],exports.SchmnacyIconButton.prototype,"nativeElement",2),l([i.property({type:String})],exports.SchmnacyIconButton.prototype,"size",2),l([i.property({reflect:!0,type:String})],exports.SchmnacyIconButton.prototype,"variant",2),l([i.property()],exports.SchmnacyIconButton.prototype,"width",2),l([i.property({reflect:!0,type:String})],exports.SchmnacyIconButton.prototype,"type",2),l([i.property()],exports.SchmnacyIconButton.prototype,"href",2),l([i.property({type:Boolean,reflect:!0})],exports.SchmnacyIconButton.prototype,"disabled",2),l([i.property({attribute:"aria-label"})],exports.SchmnacyIconButton.prototype,"ariaLabel",1),exports.SchmnacyIconButton=l([i.customElement("schmancy-icon-button")],exports.SchmnacyIconButton);
|
|
69
|
-
//# sourceMappingURL=icon-button-
|
|
69
|
+
//# sourceMappingURL=icon-button-BUkdhu_-.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-button-A1NFKFmq.cjs","sources":["../src/button/button.ts","../src/button/icon-button.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\n\nexport interface SchmancyButtonEventMap {\n\tSchmancyFocus: CustomEvent<void>\n\tSchmancyBlur: CustomEvent<void>\n}\n\nexport type ButtonVariant = 'elevated' | 'filled' | 'filled tonal' | 'outlined' | 'text'\n\n/**\n * A button component.\n * @element schmancy-button\n * @slot - The default slot.\n * @slot prefix - The prefix slot.\n * @slot suffix - The suffix slot.\n */\n@customElement('schmancy-button')\nexport class SchmancyButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: fit-content;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t/**\n\t * The variant of the button.\n\t * @attr\n\t * @default 'text'\n\t * @public\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t * @public\n\t */\n\t@property()\n\tpublic width: 'full' | 'auto' = 'auto'\n\n\t/**\n\t * The type of the button.\n\t * Defaults to 'button' (preventing accidental form submissions).\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type: 'button' | 'reset' | 'submit' = 'button'\n\n\t/**\n\t * The URL the button points to.\n\t * If provided, the component will render as an anchor element.\n\t * @attr\n\t */\n\t@property()\n\tpublic href?: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t@queryAssignedElements({\n\t\tslot: 'prefix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate prefixImgs!: HTMLImageElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'suffix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate suffixImgs!: HTMLImageElement[]\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['max-h-[24px]', 'max-w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\t// Add image classes and ensure decorative images have an empty alt.\n\t\tthis.prefixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t\tif (!img.hasAttribute('alt')) {\n\t\t\t\timg.setAttribute('alt', '')\n\t\t\t}\n\t\t})\n\t\tthis.suffixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t\tif (!img.hasAttribute('alt')) {\n\t\t\t\timg.setAttribute('alt', '')\n\t\t\t}\n\t\t})\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\t// Prevent default behavior when the component is disabled.\n\tprivate _preventDefault(event: Event) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t}\n\n\trender() {\n\t\t// Compute classes for the interactive element.\n\t\tconst classes = {\n\t\t\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':\n\t\t\t\ttrue,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant === 'outlined' ||\n\t\t\t\t\tthis.variant === 'text' ||\n\t\t\t\t\tthis.variant === 'filled' ||\n\t\t\t\t\tthis.variant === 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant === 'elevated',\n\t\t\t'w-full tex-center': this.width === 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant === 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-solid border-outline': this.variant === 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant === 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'filled tonal',\n\t\t\t'text-primary-default': this.variant === 'text',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 hover:opacity-[0.08] z-0 rounded-full': true,\n\t\t\t'hover:bg-primary-on': this.variant === 'filled',\n\t\t\t'hover:bg-primary-default': this.variant === 'outlined' || this.variant === 'elevated' || this.variant === 'text',\n\t\t\t'hover:bg-secondary-container': this.variant === 'filled tonal',\n\t\t}\n\n\t\t// If href is provided, render an anchor element.\n\t\tif (this.href) {\n\t\t\treturn html`\n\t\t\t\t<a\n\t\t\t\t\tpart=\"base\"\n\t\t\t\t\thref=${ifDefined(this.disabled ? undefined : this.href)}\n\t\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\t\ttabindex=${this.disabled ? '-1' : '0'}\n\t\t\t\t\taria-disabled=${this.disabled}\n\t\t\t\t\t@click=${this.disabled ? this._preventDefault : undefined}\n\t\t\t\t>\n\t\t\t\t\t${when(!this.disabled, () => html`<div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t\t<slot name=\"prefix\"></slot>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t\t<slot name=\"suffix\"></slot>\n\t\t\t\t</a>\n\t\t\t`\n\t\t}\n\n\t\t// Otherwise, render a native button element.\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tpart=\"base\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html`<div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t<slot name=\"prefix\"></slot>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"suffix\"></slot>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-button': SchmancyButton\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { ButtonVariant } from './button'\n\n/**\n * An icon button component.\n * @element schmancy-icon-button\n * @slot - The default slot.\n */\n@customElement('schmancy-icon-button')\nexport class SchmnacyIconButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t/**\n\t * The size of the icon.\n\t * @attr\n\t * @default 'md'\n\t */\n\t@property({ type: String })\n\tpublic size: 'sm' | 'md' | 'lg' = 'md'\n\n\t/**\n\t * The variant of the button.\n\t * @attr\n\t * @default 'text'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t */\n\t@property()\n\tpublic width: 'full' | 'auto' = 'auto'\n\n\t/**\n\t * The type of the button.\n\t * Defaults to 'button' (preventing accidental form submissions).\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type: 'button' | 'reset' | 'submit' = 'button'\n\n\t/**\n\t * The URL the button points to.\n\t * If provided, the component will render as an anchor element.\n\t * @attr\n\t */\n\t@property()\n\tpublic href?: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t// Manage aria-label manually so that we can always use our internal property.\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\t// Prevent default behavior when the component is disabled.\n\tprivate _preventDefault(event: Event) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t}\n\n\tprotected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\t\t// Add any first-update logic here if needed.\n\t}\n\n\trender() {\n\t\t// Compute classes for the interactive element.\n\t\tconst classes = {\n\t\t\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':\n\t\t\t\ttrue,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant === 'outlined' ||\n\t\t\t\t\tthis.variant === 'text' ||\n\t\t\t\t\tthis.variant === 'filled' ||\n\t\t\t\t\tthis.variant === 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant === 'elevated',\n\t\t\t'w-full text-center': this.width === 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant === 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-outline': this.variant === 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant === 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'filled tonal',\n\t\t\t'text-primary-default': this.variant === 'text',\n\t\t\t'px-[6px] py-[6px]': this.size === 'sm',\n\t\t\t'px-[8px] py-[8px]': this.size === 'md',\n\t\t\t'px-[12px] py-[12px]': this.size === 'lg',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'hover:opacity-[0.08] rounded-full z-0': true,\n\t\t\t'hover:bg-primary-on': this.variant === 'filled',\n\t\t\t'hover:bg-primary-default': this.variant === 'outlined' || this.variant === 'elevated' || this.variant === 'text',\n\t\t\t'hover:bg-secondary-container': this.variant === 'filled tonal',\n\t\t}\n\n\t\t// If href is provided, render an anchor element.\n\t\tif (this.href) {\n\t\t\treturn html`\n\t\t\t\t<a\n\t\t\t\t\tpart=\"base\"\n\t\t\t\t\thref=${ifDefined(this.disabled ? undefined : this.href)}\n\t\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\t\ttabindex=${this.disabled ? '-1' : '0'}\n\t\t\t\t\taria-disabled=${this.disabled}\n\t\t\t\t\t@click=${this.disabled ? this._preventDefault : undefined}\n\t\t\t\t>\n\t\t\t\t\t${when(!this.disabled, () => html`<div class=\"absolute inset-0 ${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t\t<schmancy-icon size=${this.size === 'sm' ? '18px' : this.size === 'md' ? '24px' : '32px'}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</schmancy-icon>\n\t\t\t\t</a>\n\t\t\t`\n\t\t}\n\n\t\t// Otherwise, render a native button element.\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tpart=\"base\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html`<div class=\"absolute inset-0 ${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t<schmancy-icon size=${this.size === 'sm' ? '18px' : this.size === 'md' ? '24px' : '32px'}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-icon>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon-button': SchmnacyIconButton\n\t}\n}\n"],"names":["SchmancyButton","$LitElement","css","constructor","super","arguments","this","variant","width","type","disabled","value","oldVal","_ariaLabel","hasAttribute","removeAttribute","requestUpdate","options","nativeElement","focus","blur","imgClasses","prefixImgs","forEach","img","classList","add","setAttribute","suffixImgs","dispatchEvent","Event","bubbles","composed","event","preventDefault","stopPropagation","render","classes","stateLayerClasses","href","html","ifDefined","ariaLabel","classMap","_preventDefault","when","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","query","prototype","property","reflect","String","Boolean","attribute","queryAssignedElements","slot","flatten","selector","customElement","SchmnacyIconButton","size","_changedProperties"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icon-button-BUkdhu_-.cjs","sources":["../src/button/button.ts","../src/button/icon-button.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\n\nexport interface SchmancyButtonEventMap {\n\tSchmancyFocus: CustomEvent<void>\n\tSchmancyBlur: CustomEvent<void>\n}\n\nexport type ButtonVariant = 'elevated' | 'filled' | 'filled tonal' | 'outlined' | 'text'\n\n/**\n * A button component.\n * @element schmancy-button\n * @slot - The default slot.\n * @slot prefix - The prefix slot.\n * @slot suffix - The suffix slot.\n */\n@customElement('schmancy-button')\nexport class SchmancyButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: fit-content;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t/**\n\t * The variant of the button.\n\t * @attr\n\t * @default 'text'\n\t * @public\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t * @public\n\t */\n\t@property()\n\tpublic width: 'full' | 'auto' = 'auto'\n\n\t/**\n\t * The type of the button.\n\t * Defaults to 'button' (preventing accidental form submissions).\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type: 'button' | 'reset' | 'submit' = 'button'\n\n\t/**\n\t * The URL the button points to.\n\t * If provided, the component will render as an anchor element.\n\t * @attr\n\t */\n\t@property()\n\tpublic href?: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t@queryAssignedElements({\n\t\tslot: 'prefix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate prefixImgs!: HTMLImageElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'suffix',\n\t\tflatten: true,\n\t\tselector: 'img',\n\t})\n\tprivate suffixImgs!: HTMLImageElement[]\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['max-h-[24px]', 'max-w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\t// Add image classes and ensure decorative images have an empty alt.\n\t\tthis.prefixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t\tif (!img.hasAttribute('alt')) {\n\t\t\t\timg.setAttribute('alt', '')\n\t\t\t}\n\t\t})\n\t\tthis.suffixImgs?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t\tif (!img.hasAttribute('alt')) {\n\t\t\t\timg.setAttribute('alt', '')\n\t\t\t}\n\t\t})\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\t// Prevent default behavior when the component is disabled.\n\tprivate _preventDefault(event: Event) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t}\n\n\trender() {\n\t\t// Compute classes for the interactive element.\n\t\tconst classes = {\n\t\t\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':\n\t\t\t\ttrue,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant === 'outlined' ||\n\t\t\t\t\tthis.variant === 'text' ||\n\t\t\t\t\tthis.variant === 'filled' ||\n\t\t\t\t\tthis.variant === 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant === 'elevated',\n\t\t\t'w-full tex-center': this.width === 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant === 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-solid border-outline': this.variant === 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant === 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'filled tonal',\n\t\t\t'text-primary-default': this.variant === 'text',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 hover:opacity-[0.08] z-0 rounded-full': true,\n\t\t\t'hover:bg-primary-on': this.variant === 'filled',\n\t\t\t'hover:bg-primary-default': this.variant === 'outlined' || this.variant === 'elevated' || this.variant === 'text',\n\t\t\t'hover:bg-secondary-container': this.variant === 'filled tonal',\n\t\t}\n\n\t\t// If href is provided, render an anchor element.\n\t\tif (this.href) {\n\t\t\treturn html`\n\t\t\t\t<a\n\t\t\t\t\tpart=\"base\"\n\t\t\t\t\thref=${ifDefined(this.disabled ? undefined : this.href)}\n\t\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\t\ttabindex=${this.disabled ? '-1' : '0'}\n\t\t\t\t\taria-disabled=${this.disabled}\n\t\t\t\t\t@click=${this.disabled ? this._preventDefault : undefined}\n\t\t\t\t>\n\t\t\t\t\t${when(!this.disabled, () => html`<div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t\t<slot name=\"prefix\"></slot>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t\t<slot name=\"suffix\"></slot>\n\t\t\t\t</a>\n\t\t\t`\n\t\t}\n\n\t\t// Otherwise, render a native button element.\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tpart=\"base\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html`<div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t<slot name=\"prefix\"></slot>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"suffix\"></slot>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-button': SchmancyButton\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, LitElement, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { ButtonVariant } from './button'\n\n/**\n * An icon button component.\n * @element schmancy-icon-button\n * @slot - The default slot.\n */\n@customElement('schmancy-icon-button')\nexport class SchmnacyIconButton extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate _ariaLabel!: string\n\n\t/**\n\t * The size of the icon.\n\t * @attr\n\t * @default 'md'\n\t */\n\t@property({ type: String })\n\tpublic size: 'sm' | 'md' | 'lg' = 'md'\n\n\t/**\n\t * The variant of the button.\n\t * @attr\n\t * @default 'text'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: ButtonVariant = 'text'\n\n\t/**\n\t * The width of the button.\n\t * @attr\n\t * @type {'full' | 'auto'}\n\t * @default 'auto'\n\t */\n\t@property()\n\tpublic width: 'full' | 'auto' = 'auto'\n\n\t/**\n\t * The type of the button.\n\t * Defaults to 'button' (preventing accidental form submissions).\n\t * @attr\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic type: 'button' | 'reset' | 'submit' = 'button'\n\n\t/**\n\t * The URL the button points to.\n\t * If provided, the component will render as an anchor element.\n\t * @attr\n\t */\n\t@property()\n\tpublic href?: string\n\n\t/**\n\t * Determines whether the button is disabled.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t// Manage aria-label manually so that we can always use our internal property.\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this._ariaLabel\n\t\tthis._ariaLabel = value\n\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this._ariaLabel\n\t}\n\n\t/** Sets focus in the button. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the button. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tclick(): void {\n\t\tthis.dispatchEvent(new Event('click', { bubbles: true, composed: true }))\n\t}\n\n\t// Prevent default behavior when the component is disabled.\n\tprivate _preventDefault(event: Event) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t}\n\n\tprotected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\t\t// Add any first-update logic here if needed.\n\t}\n\n\trender() {\n\t\t// Compute classes for the interactive element.\n\t\tconst classes = {\n\t\t\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':\n\t\t\t\ttrue,\n\t\t\t'opacity-[0.38]': this.disabled,\n\t\t\t'cursor-pointer': !this.disabled,\n\t\t\t'hover:shadow-xs':\n\t\t\t\t!this.disabled &&\n\t\t\t\t(this.variant === 'outlined' ||\n\t\t\t\t\tthis.variant === 'text' ||\n\t\t\t\t\tthis.variant === 'filled' ||\n\t\t\t\t\tthis.variant === 'filled tonal'),\n\t\t\t'hover:shadow-sm': !this.disabled && this.variant === 'elevated',\n\t\t\t'w-full text-center': this.width === 'full',\n\t\t\t'bg-surface-low text-primary-default shadow-xs': this.variant === 'elevated',\n\t\t\t'bg-transparent text-primary-default border-1 border-outline': this.variant === 'outlined',\n\t\t\t'bg-primary-default text-primary-on': this.variant === 'filled',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'filled tonal',\n\t\t\t'text-primary-default': this.variant === 'text',\n\t\t\t'px-[6px] py-[6px]': this.size === 'sm',\n\t\t\t'px-[8px] py-[8px]': this.size === 'md',\n\t\t\t'px-[12px] py-[12px]': this.size === 'lg',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'hover:opacity-[0.08] rounded-full z-0': true,\n\t\t\t'hover:bg-primary-on': this.variant === 'filled',\n\t\t\t'hover:bg-primary-default': this.variant === 'outlined' || this.variant === 'elevated' || this.variant === 'text',\n\t\t\t'hover:bg-secondary-container': this.variant === 'filled tonal',\n\t\t}\n\n\t\t// If href is provided, render an anchor element.\n\t\tif (this.href) {\n\t\t\treturn html`\n\t\t\t\t<a\n\t\t\t\t\tpart=\"base\"\n\t\t\t\t\thref=${ifDefined(this.disabled ? undefined : this.href)}\n\t\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\t\ttabindex=${this.disabled ? '-1' : '0'}\n\t\t\t\t\taria-disabled=${this.disabled}\n\t\t\t\t\t@click=${this.disabled ? this._preventDefault : undefined}\n\t\t\t\t>\n\t\t\t\t\t${when(!this.disabled, () => html`<div class=\"absolute inset-0 ${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t\t<schmancy-icon size=${this.size === 'sm' ? '18px' : this.size === 'md' ? '24px' : '32px'}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</schmancy-icon>\n\t\t\t\t</a>\n\t\t\t`\n\t\t}\n\n\t\t// Otherwise, render a native button element.\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tpart=\"base\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t\ttype=${ifDefined(this.type)}\n\t\t\t\ttabindex=${ifDefined(this.disabled ? '-1' : undefined)}\n\t\t\t>\n\t\t\t\t${when(!this.disabled, () => html`<div class=\"absolute inset-0 ${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t\t<schmancy-icon size=${this.size === 'sm' ? '18px' : this.size === 'md' ? '24px' : '32px'}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-icon>\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon-button': SchmnacyIconButton\n\t}\n}\n"],"names":["SchmancyButton","$LitElement","css","constructor","super","arguments","this","variant","width","type","disabled","value","oldVal","_ariaLabel","hasAttribute","removeAttribute","requestUpdate","options","nativeElement","focus","blur","imgClasses","prefixImgs","forEach","img","classList","add","setAttribute","suffixImgs","dispatchEvent","Event","bubbles","composed","event","preventDefault","stopPropagation","render","classes","stateLayerClasses","href","html","ifDefined","ariaLabel","classMap","_preventDefault","when","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","query","prototype","property","reflect","String","Boolean","attribute","queryAssignedElements","slot","flatten","selector","customElement","SchmnacyIconButton","size","_changedProperties"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
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-
|
|
4
|
+
import { $ as v } from "./litElement.mixin-5RC72TVS.js";
|
|
5
|
+
import "./tailwind.mixin-DpiTmETl.js";
|
|
6
6
|
import { css as m, html as h, LitElement as y } from "lit";
|
|
7
7
|
import { query as x, property as a, queryAssignedElements as f, customElement as g } from "lit/decorators.js";
|
|
8
8
|
import { ifDefined as o } from "lit/directives/if-defined.js";
|
|
@@ -156,4 +156,4 @@ export {
|
|
|
156
156
|
s as S,
|
|
157
157
|
r as a
|
|
158
158
|
};
|
|
159
|
-
//# sourceMappingURL=icon-button-
|
|
159
|
+
//# sourceMappingURL=icon-button-yKwaljg0.js.map
|