@mhmo91/schmancy 0.10.15 → 0.10.16
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/custom-elements.json +2554 -3086
- package/dist/active-host-BP0zy_Y9.js +63 -0
- package/dist/{active-host-CvNYoprt.js.map → active-host-BP0zy_Y9.js.map} +1 -1
- package/dist/active-host-jH3iloCR.cjs +1 -0
- package/dist/{active-host-CcIa2tmW.cjs.map → active-host-jH3iloCR.cjs.map} +1 -1
- package/dist/agent/schmancy.agent.js +2579 -2385
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +971 -1189
- package/dist/{animation-CO_Csq84.cjs.map → animation-CCOIW4wJ.cjs.map} +1 -1
- package/dist/{animation-BK-8BwY8.js.map → animation-DCznELuT.js.map} +1 -1
- package/dist/{area-C_kgZZhN.js → area-ChxsDTu_.js} +2 -2
- package/dist/{area-C_kgZZhN.js.map → area-ChxsDTu_.js.map} +1 -1
- package/dist/{area-DFPtKzWy.cjs → area-Qt6yUnuA.cjs} +3 -3
- package/dist/{area-DFPtKzWy.cjs.map → area-Qt6yUnuA.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +2 -2
- package/dist/{audio-CluX8Qpq.cjs → audio-D-TZzpXF.cjs} +1 -1
- package/dist/{audio-CluX8Qpq.cjs.map → audio-D-TZzpXF.cjs.map} +1 -1
- package/dist/{audio-DcXphulJ.js → audio-DS43uoRA.js} +1 -1
- package/dist/{audio-DcXphulJ.js.map → audio-DS43uoRA.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-DWSuwSRS.js → autocomplete-CXvUjMD-.js} +46 -71
- package/dist/autocomplete-CXvUjMD-.js.map +1 -0
- package/dist/autocomplete-Ck2zbdF9.cjs +115 -0
- package/dist/autocomplete-Ck2zbdF9.cjs.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +2 -2
- package/dist/avatar.cjs.map +1 -1
- package/dist/avatar.js +3 -3
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-CZma2ojF.js → boat-Bj0wVcZi.js} +5 -5
- package/dist/{boat-CZma2ojF.js.map → boat-Bj0wVcZi.js.map} +1 -1
- package/dist/{boat-Dy6cc3hB.cjs → boat-DpFkILFF.cjs} +2 -2
- package/dist/{boat-Dy6cc3hB.cjs.map → boat-DpFkILFF.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +3 -3
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +2 -2
- package/dist/{busy-DCsqryvq.cjs → busy-CtcnclA3.cjs} +3 -3
- package/dist/{busy-DCsqryvq.cjs.map → busy-CtcnclA3.cjs.map} +1 -1
- package/dist/{busy-DeV2ByMw.js → busy-CyZSBnZP.js} +2 -2
- package/dist/{busy-DeV2ByMw.js.map → busy-CyZSBnZP.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +4 -4
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +19 -4
- package/dist/button.js.map +1 -1
- package/dist/{card--GgSX4X5.cjs → card-Cl6jp1yX.cjs} +5 -5
- package/dist/{card--GgSX4X5.cjs.map → card-Cl6jp1yX.cjs.map} +1 -1
- package/dist/{card-BTTsHzJJ.js → card-nYZCKmOO.js} +3 -3
- package/dist/{card-BTTsHzJJ.js.map → card-nYZCKmOO.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-NNReP9s_.cjs → checkbox-BeNo0ZGt.cjs} +4 -4
- package/dist/{checkbox-Cj5j-ppk.js.map → checkbox-BeNo0ZGt.cjs.map} +1 -1
- package/dist/{checkbox-Cj5j-ppk.js → checkbox-DiUrZiyc.js} +17 -30
- package/dist/checkbox-DiUrZiyc.js.map +1 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-CP-CbfoZ.js → chips-CfPFXv7Z.js} +5 -5
- package/dist/{chips-CP-CbfoZ.js.map → chips-CfPFXv7Z.js.map} +1 -1
- package/dist/{chips-iporOXxK.cjs → chips-DK6m-VCM.cjs} +5 -5
- package/dist/{chips-iporOXxK.cjs.map → chips-DK6m-VCM.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +2 -2
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +3 -3
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-DJTJnSK4.js.map → context-6oXCZmZN.js.map} +1 -1
- package/dist/{context-BpCETidA.cjs.map → context-CRZeiCqq.cjs.map} +1 -1
- package/dist/{cursor-glow-Bulq-38P.cjs → cursor-glow-C8LgCxpI.cjs} +1 -1
- package/dist/{cursor-glow-Bulq-38P.cjs.map → cursor-glow-C8LgCxpI.cjs.map} +1 -1
- package/dist/{cursor-glow-Ah7VXSj7.js → cursor-glow-Cs2XLDB9.js} +1 -1
- package/dist/{cursor-glow-Ah7VXSj7.js.map → cursor-glow-Cs2XLDB9.js.map} +1 -1
- package/dist/date-range-DA6anfcF.cjs +131 -0
- package/dist/date-range-DA6anfcF.cjs.map +1 -0
- package/dist/{date-range-CgNujP8r.js → date-range-DjlF2u7o.js} +124 -89
- package/dist/date-range-DjlF2u7o.js.map +1 -0
- package/dist/date-range-inline-BfYK795W.cjs +43 -0
- package/dist/{date-range-inline-D4IjOOO0.cjs.map → date-range-inline-BfYK795W.cjs.map} +1 -1
- package/dist/{date-range-inline-C2PXX_GY.js → date-range-inline-n7y_H6PJ.js} +2 -2
- package/dist/{date-range-inline-C2PXX_GY.js.map → date-range-inline-n7y_H6PJ.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +2 -2
- package/dist/delay.cjs.map +1 -1
- package/dist/delay.js +3 -3
- package/dist/{details-DT2b3xOn.cjs → details-BdAVsLl-.cjs} +2 -2
- package/dist/{details-DT2b3xOn.cjs.map → details-BdAVsLl-.cjs.map} +1 -1
- package/dist/{details-VjaNwtfd.js → details-CS_ToAOj.js} +6 -6
- package/dist/{details-VjaNwtfd.js.map → details-CS_ToAOj.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +5 -5
- package/dist/{divider-BMO8pzEO.js → divider-COLK0RbT.js} +2 -2
- package/dist/{divider-BMO8pzEO.js.map → divider-COLK0RbT.js.map} +1 -1
- package/dist/{divider-BW33TZ-X.cjs → divider-CvWAnvdO.cjs} +2 -2
- package/dist/{divider-BW33TZ-X.cjs.map → divider-CvWAnvdO.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +3 -3
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/{expand-DbELKKOt.js → expand-D9LzmpoV.js} +5 -5
- package/dist/{expand-DbELKKOt.js.map → expand-D9LzmpoV.js.map} +1 -1
- package/dist/{expand-_f5EUKWB.cjs → expand-r2sATPUJ.cjs} +3 -3
- package/dist/{expand-_f5EUKWB.cjs.map → expand-r2sATPUJ.cjs.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/float-2nHYuBx-.cjs +1 -0
- package/dist/{float-CKmd-0-t.cjs.map → float-2nHYuBx-.cjs.map} +1 -1
- package/dist/{float-B6RBb2dN.js → float-BWy39CXr.js} +2 -2
- package/dist/{float-B6RBb2dN.js.map → float-BWy39CXr.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/form-DhjedCWm.js +258 -0
- package/dist/form-DhjedCWm.js.map +1 -0
- package/dist/form-g5c70rac.cjs +42 -0
- package/dist/form-g5c70rac.cjs.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +2 -2
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{hashContent-Bobsobip.cjs.map → hashContent-Ck6laKlk.cjs.map} +1 -1
- package/dist/{hashContent-BU6jl5ih.js.map → hashContent-dJrI-9sc.js.map} +1 -1
- package/dist/{icons-r-S17M8U.cjs → icons-1HIENBco.cjs} +2 -2
- package/dist/{icons-r-S17M8U.cjs.map → icons-1HIENBco.cjs.map} +1 -1
- package/dist/{icons-CoDo95Cu.js → icons-3y0kr1aB.js} +3 -3
- package/dist/{icons-CoDo95Cu.js.map → icons-3y0kr1aB.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-P9c_qg1-.cjs → iframe-CjqYuZG5.cjs} +2 -2
- package/dist/{iframe-P9c_qg1-.cjs.map → iframe-CjqYuZG5.cjs.map} +1 -1
- package/dist/{iframe-k4oI-TIj.js → iframe-Z5gTK-gd.js} +2 -2
- package/dist/{iframe-k4oI-TIj.js.map → iframe-Z5gTK-gd.js.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +60 -60
- package/dist/{input-D95GjINh.js → input-B-fw6f_r.js} +103 -104
- package/dist/input-B-fw6f_r.js.map +1 -0
- package/dist/input-BtcIhu0Q.cjs +52 -0
- package/dist/input-BtcIhu0Q.cjs.map +1 -0
- package/dist/{input-chip-DpC_XEKN.js → input-chip-CtQ0pH5b.js} +2 -2
- package/dist/{input-chip-DpC_XEKN.js.map → input-chip-CtQ0pH5b.js.map} +1 -1
- package/dist/{input-chip-D0ZXqTt5.cjs → input-chip-DZktYohr.cjs} +2 -2
- package/dist/{input-chip-D0ZXqTt5.cjs.map → input-chip-DZktYohr.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +2 -2
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +3 -3
- package/dist/kbd.cjs +2 -2
- package/dist/kbd.cjs.map +1 -1
- package/dist/kbd.js +2 -2
- package/dist/{layout-CXPNsUIo.js → layout-BH28sKGc.js} +1 -1
- package/dist/{layout-CXPNsUIo.js.map → layout-BH28sKGc.js.map} +1 -1
- package/dist/{layout-Zhe7wSZ_.cjs → layout-Delq-QvR.cjs} +1 -1
- package/dist/{layout-Zhe7wSZ_.cjs.map → layout-Delq-QvR.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lazy-Dq9mRRjT.cjs.map → lazy-CayEFyC3.cjs.map} +1 -1
- package/dist/{lazy-B0ia54tT.js.map → lazy-D-bO2r4m.js.map} +1 -1
- package/dist/{lightbox-C-yHeoK0.cjs → lightbox-BHTZOn8K.cjs} +3 -3
- package/dist/{lightbox-C-yHeoK0.cjs.map → lightbox-BHTZOn8K.cjs.map} +1 -1
- package/dist/{lightbox-CovQtmyn.js → lightbox-BL3LWp-P.js} +9 -9
- package/dist/{lightbox-CovQtmyn.js.map → lightbox-BL3LWp-P.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CAijuky4.cjs → list-CHYa5VGY.cjs} +3 -3
- package/dist/{list-CAijuky4.cjs.map → list-CHYa5VGY.cjs.map} +1 -1
- package/dist/{list-C1pR9vhu.js → list-DLJL1JQj.js} +2 -2
- package/dist/{list-C1pR9vhu.js.map → list-DLJL1JQj.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{magnetic-BJgB1dVi.cjs → magnetic-Bgh7aHHI.cjs} +1 -1
- package/dist/{magnetic-BJgB1dVi.cjs.map → magnetic-Bgh7aHHI.cjs.map} +1 -1
- package/dist/{magnetic-YwCNvtbB.js → magnetic-DxvoEz8_.js} +2 -2
- package/dist/{magnetic-YwCNvtbB.js.map → magnetic-DxvoEz8_.js.map} +1 -1
- package/dist/{menu-B59vZv9n.js → menu-BNq93w6X.js} +3 -3
- package/dist/{menu-B59vZv9n.js.map → menu-BNq93w6X.js.map} +1 -1
- package/dist/{menu-BaHO3Cip.cjs → menu-DAikvkeV.cjs} +3 -3
- package/dist/{menu-BaHO3Cip.cjs.map → menu-DAikvkeV.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-BOOu6q2n.cjs +298 -0
- package/dist/mixins-BOOu6q2n.cjs.map +1 -0
- package/dist/mixins-BWb9_e1s.js +680 -0
- package/dist/mixins-BWb9_e1s.js.map +1 -0
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +2 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +3 -3
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +2 -2
- package/dist/{notification-BeLoVa47.js → notification-CUmb9c3Y.js} +4 -4
- package/dist/{notification-BeLoVa47.js.map → notification-CUmb9c3Y.js.map} +1 -1
- package/dist/notification-Dy2azMyt.cjs +23 -0
- package/dist/{notification-BC9nG8Sr.cjs.map → notification-Dy2azMyt.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-BWF4GBp-.cjs → option-CDgIKifG.cjs} +2 -2
- package/dist/{option-BWF4GBp-.cjs.map → option-CDgIKifG.cjs.map} +1 -1
- package/dist/{option-UvlSAcC4.js → option-DFvQ551b.js} +2 -2
- package/dist/{option-UvlSAcC4.js.map → option-DFvQ551b.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-DCDS17uj.js.map → overlay-stack-BR4iYivO.js.map} +1 -1
- package/dist/{overlay-stack-DPIe_aYv.cjs.map → overlay-stack-Dk0xETTy.cjs.map} +1 -1
- package/dist/overlay.cjs +2 -2
- package/dist/overlay.cjs.map +1 -1
- package/dist/{overlay.confirm-body-URtE1gI3.cjs → overlay.confirm-body-BkhNvr0c.cjs} +2 -2
- package/dist/{overlay.confirm-body-URtE1gI3.cjs.map → overlay.confirm-body-BkhNvr0c.cjs.map} +1 -1
- package/dist/{overlay.confirm-body-9W0B5QGv.js → overlay.confirm-body-uFp-0Zfh.js} +2 -2
- package/dist/{overlay.confirm-body-9W0B5QGv.js.map → overlay.confirm-body-uFp-0Zfh.js.map} +1 -1
- package/dist/overlay.js +8 -8
- package/dist/{overlay.service-DnZTcKyJ.cjs → overlay.service-1YWfUD2S.cjs} +1 -1
- package/dist/{overlay.service-DnZTcKyJ.cjs.map → overlay.service-1YWfUD2S.cjs.map} +1 -1
- package/dist/{overlay.service-CVqs2Gu1.js → overlay.service-BcF12kGb.js} +2 -2
- package/dist/{overlay.service-CVqs2Gu1.js.map → overlay.service-BcF12kGb.js.map} +1 -1
- package/dist/page.cjs +2 -2
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +5 -5
- package/dist/{progress-CwzwY8Oe.cjs → progress-C02sWkmE.cjs} +2 -2
- package/dist/{progress-CwzwY8Oe.cjs.map → progress-C02sWkmE.cjs.map} +1 -1
- package/dist/{progress-C29Uw-WJ.js → progress-bLbGRuQ1.js} +2 -2
- package/dist/{progress-C29Uw-WJ.js.map → progress-bLbGRuQ1.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/radio-group-BA-jRct5.cjs +40 -0
- package/dist/radio-group-BA-jRct5.cjs.map +1 -0
- package/dist/{radio-group-CW8airhZ.js → radio-group-DA4eIGCj.js} +4 -4
- package/dist/radio-group-DA4eIGCj.js.map +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +6 -4
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +19 -15
- package/dist/range.js.map +1 -1
- package/dist/{reduced-motion-D-L12p7G.js.map → reduced-motion-D7LqTUMn.js.map} +1 -1
- package/dist/{reduced-motion-Ds-HjMzn.cjs.map → reduced-motion-Dzfp_w5x.cjs.map} +1 -1
- package/dist/{rxjs-utils-CVeJQ9KG.js.map → rxjs-utils-D9U4MW0Q.js.map} +1 -1
- package/dist/{rxjs-utils-DCUHg_Ml.cjs.map → rxjs-utils-kWPShgKu.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-BotoGcMU.js → scroll-CG5up5oy.js} +2 -2
- package/dist/{scroll-BotoGcMU.js.map → scroll-CG5up5oy.js.map} +1 -1
- package/dist/{scroll-CmhmUebp.cjs → scroll-D8vBF_gY.cjs} +2 -2
- package/dist/{scroll-CmhmUebp.cjs.map → scroll-D8vBF_gY.cjs.map} +1 -1
- package/dist/{search-BLCRsxIC.cjs.map → search-DPKoC-dT.cjs.map} +1 -1
- package/dist/{search-BTz7-Rev.js.map → search-MvIBA93K.js.map} +1 -1
- package/dist/{select-Dbn-CImU.js → select-BrK1BJoU.js} +52 -73
- package/dist/select-BrK1BJoU.js.map +1 -0
- package/dist/select-Dh2j7Qc-.cjs +56 -0
- package/dist/select-Dh2j7Qc-.cjs.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +2 -2
- package/dist/skeleton.cjs.map +1 -1
- package/dist/skeleton.js +2 -2
- package/dist/skills/autocomplete.md +16 -3
- package/dist/skills/button.md +19 -0
- package/dist/skills/checkbox.md +19 -0
- package/dist/skills/date-range.md +19 -0
- package/dist/skills/form-ux-rules.md +55 -0
- package/dist/skills/form.md +121 -25
- package/dist/skills/input.md +19 -4
- package/dist/skills/range.md +15 -1
- package/dist/skills/schmancy/autocomplete.md +16 -3
- package/dist/skills/schmancy/button.md +19 -0
- package/dist/skills/schmancy/checkbox.md +19 -0
- package/dist/skills/schmancy/date-range.md +19 -0
- package/dist/skills/schmancy/form-ux-rules.md +55 -0
- package/dist/skills/schmancy/form.md +121 -25
- package/dist/skills/schmancy/input.md +19 -4
- package/dist/skills/schmancy/range.md +15 -1
- package/dist/skills/schmancy/select.md +13 -1
- package/dist/skills/schmancy/switch.md +21 -2
- package/dist/skills/schmancy/textarea.md +13 -0
- package/dist/skills/select.md +13 -1
- package/dist/skills/switch.md +21 -2
- package/dist/skills/textarea.md +13 -0
- package/dist/slider.cjs +3 -3
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +2 -2
- package/dist/{sound.service-kKfsN0m-.js → sound.service-BIN2W7Rv.js} +1 -1
- package/dist/{sound.service-kKfsN0m-.js.map → sound.service-BIN2W7Rv.js.map} +1 -1
- package/dist/{sound.service-BGs6m0Cm.cjs → sound.service-DyY78ukR.cjs} +1 -1
- package/dist/{sound.service-BGs6m0Cm.cjs.map → sound.service-DyY78ukR.cjs.map} +1 -1
- package/dist/{splash-screen-DtkjCJYo.js → splash-screen-BcjjJSlK.js} +2 -2
- package/dist/{splash-screen-DtkjCJYo.js.map → splash-screen-BcjjJSlK.js.map} +1 -1
- package/dist/{splash-screen-DlQUv-kV.cjs → splash-screen-Kr1sPtME.cjs} +2 -2
- package/dist/{splash-screen-DlQUv-kV.cjs.map → splash-screen-Kr1sPtME.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-DEUjlTsX.cjs → src-B2-CU8fu.cjs} +11 -11
- package/dist/{src-DEUjlTsX.cjs.map → src-B2-CU8fu.cjs.map} +1 -1
- package/dist/{src-D6e0adHi.js → src-DvywUq7l.js} +38 -38
- package/dist/{src-D6e0adHi.js.map → src-DvywUq7l.js.map} +1 -1
- package/dist/state-avic94Ft.cjs +1 -0
- package/dist/{state-DNdCPITt.cjs.map → state-avic94Ft.cjs.map} +1 -1
- package/dist/{state-BusMG6sM.js → state-nm8yzMPp.js} +1 -2
- package/dist/{state-BusMG6sM.js.map → state-nm8yzMPp.js.map} +1 -1
- package/dist/state.cjs +1 -1
- package/dist/state.js +2 -2
- package/dist/steps.cjs +3 -3
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +2 -2
- package/dist/{surface-A82O1kgu.js → surface-BtMMHKol.js} +2 -2
- package/dist/{surface-A82O1kgu.js.map → surface-BtMMHKol.js.map} +1 -1
- package/dist/surface-CgXeKdGL.cjs +7 -0
- package/dist/{surface-BpppoNXN.cjs.map → surface-CgXeKdGL.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +3 -3
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.js +27 -43
- package/dist/switch.js.map +1 -1
- package/dist/table.cjs +3 -3
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +2 -2
- package/dist/{tabs-cVHHd1dY.js → tabs-CikPr7by.js} +2 -2
- package/dist/{tabs-cVHHd1dY.js.map → tabs-CikPr7by.js.map} +1 -1
- package/dist/{tabs-TO3UiBsm.cjs → tabs-CitVls3_.cjs} +2 -2
- package/dist/{tabs-TO3UiBsm.cjs.map → tabs-CitVls3_.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/textarea-CqV1wvmB.cjs +43 -0
- package/dist/textarea-CqV1wvmB.cjs.map +1 -0
- package/dist/textarea-DVkwQSis.js +186 -0
- package/dist/textarea-DVkwQSis.js.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-CT408FqH.js → theme-BIWS4TOW.js} +9 -9
- package/dist/{theme-CT408FqH.js.map → theme-BIWS4TOW.js.map} +1 -1
- package/dist/theme-DMgjiKda.cjs +181 -0
- package/dist/{theme-CpuF3D3q.cjs.map → theme-DMgjiKda.cjs.map} +1 -1
- package/dist/{theme-button-pTb5-Wxx.js → theme-button-DC_shZ_7.js} +2 -2
- package/dist/{theme-button-pTb5-Wxx.js.map → theme-button-DC_shZ_7.js.map} +1 -1
- package/dist/theme-button-ENKa3TPT.cjs +8 -0
- package/dist/{theme-button-B6Xf-EiH.cjs.map → theme-button-ENKa3TPT.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.interface-B9TjbSBF.js.map → theme.interface-C8OHheXg.js.map} +1 -1
- package/dist/{theme.interface-BujperTo.cjs.map → theme.interface-CYo4UpWK.cjs.map} +1 -1
- package/dist/theme.js +4 -4
- package/dist/{theme.service-DIUo1mBP.js → theme.service-BOWIT_5k.js} +1 -1
- package/dist/{theme.service-DIUo1mBP.js.map → theme.service-BOWIT_5k.js.map} +1 -1
- package/dist/{theme.service-Cfk88qHK.cjs → theme.service-DkdH1t60.cjs} +1 -1
- package/dist/{theme.service-Cfk88qHK.cjs.map → theme.service-DkdH1t60.cjs.map} +1 -1
- package/dist/tree.cjs +2 -2
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +2 -2
- package/dist/typography.cjs +2 -2
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +2 -2
- package/dist/{utils-kND2Z9Xg.js → utils-Cj_nRRyx.js} +2 -2
- package/dist/{utils-kND2Z9Xg.js.map → utils-Cj_nRRyx.js.map} +1 -1
- package/dist/{utils-Dt5PpmaQ.cjs → utils-D2QUu4-g.cjs} +1 -1
- package/dist/{utils-Dt5PpmaQ.cjs.map → utils-D2QUu4-g.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +4 -4
- package/dist/visually-hidden.cjs +2 -2
- package/dist/visually-hidden.cjs.map +1 -1
- package/dist/visually-hidden.js +2 -2
- package/dist/{window-CuBcOxbc.js → window-BTecgE_U.js} +7 -7
- package/dist/{window-CuBcOxbc.js.map → window-BTecgE_U.js.map} +1 -1
- package/dist/{window-CSKvv4Ts.cjs → window-DGydMS0g.cjs} +2 -2
- package/dist/{window-CSKvv4Ts.cjs.map → window-DGydMS0g.cjs.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/autocomplete.md +16 -3
- package/skills/schmancy/button.md +19 -0
- package/skills/schmancy/checkbox.md +19 -0
- package/skills/schmancy/date-range.md +19 -0
- package/skills/schmancy/form-ux-rules.md +55 -0
- package/skills/schmancy/form.md +121 -25
- package/skills/schmancy/input.md +19 -4
- package/skills/schmancy/range.md +15 -1
- package/skills/schmancy/select.md +13 -1
- package/skills/schmancy/switch.md +21 -2
- package/skills/schmancy/textarea.md +13 -0
- package/src/button/button.test.ts +122 -0
- package/src/button/button.ts +36 -0
- package/src/{autocomplete → form/fields/autocomplete}/autocomplete.ts +48 -75
- package/src/{checkbox → form/fields/checkbox}/checkbox.test.ts +1 -1
- package/src/form/fields/checkbox/checkbox.ts +126 -0
- package/src/form/fields/date-range/date-range.test.ts +102 -0
- package/src/{date-range → form/fields/date-range}/date-range.ts +90 -7
- package/src/form/fields/input/input.test.ts +201 -0
- package/src/{input → form/fields/input}/input.ts +153 -238
- package/src/{radio-group → form/fields/radio-group}/radio-button.ts +1 -1
- package/src/{radio-group → form/fields/radio-group}/radio-group.ts +1 -1
- package/src/form/fields/range/range.test.ts +90 -0
- package/src/{range → form/fields/range}/range.ts +34 -13
- package/src/{select → form/fields/select}/select.ts +77 -108
- package/src/{switch → form/fields/switch}/switch.test.ts +1 -1
- package/src/{switch → form/fields/switch}/switch.ts +71 -51
- package/src/form/fields/textarea/textarea.test.ts +54 -0
- package/src/{textarea → form/fields/textarea}/textarea.ts +33 -72
- package/src/form/form-state.ts +31 -0
- package/src/form/form-summary.test.ts +105 -0
- package/src/form/form-summary.ts +171 -0
- package/src/form/form.test.ts +218 -35
- package/src/form/form.ts +330 -99
- package/src/form/index.ts +2 -0
- package/src/index.ts +9 -9
- package/types/mixins/formField.mixin.d.ts +90 -0
- package/types/src/button/button.d.ts +9 -0
- package/types/src/button/button.test.d.ts +3 -0
- package/types/src/{autocomplete → form/fields/autocomplete}/autocomplete.d.ts +6 -15
- package/types/src/form/fields/checkbox/checkbox.d.ts +47 -0
- package/types/src/{date-range → form/fields/date-range}/date-range.d.ts +22 -4
- package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
- package/types/src/{input → form/fields/input}/input.d.ts +20 -45
- package/types/src/form/fields/input/input.test.d.ts +1 -0
- package/types/src/{radio-group → form/fields/radio-group}/radio-button.d.ts +1 -1
- package/types/src/{radio-group → form/fields/radio-group}/radio-group.d.ts +1 -1
- package/types/src/form/fields/range/range.d.ts +28 -0
- package/types/src/form/fields/range/range.test.d.ts +1 -0
- package/types/src/{select → form/fields/select}/select.d.ts +23 -24
- package/types/src/form/fields/switch/switch.d.ts +57 -0
- package/types/src/{textarea → form/fields/textarea}/textarea.d.ts +6 -39
- package/types/src/form/fields/textarea/textarea.test.d.ts +1 -0
- package/types/src/form/form-state.d.ts +22 -0
- package/types/src/form/form-summary.d.ts +42 -0
- package/types/src/form/form-summary.test.d.ts +4 -0
- package/types/src/form/form.d.ts +79 -34
- package/types/src/form/form.test.d.ts +2 -2
- package/types/src/form/index.d.ts +2 -0
- package/types/src/index.d.ts +9 -9
- package/dist/active-host-CcIa2tmW.cjs +0 -1
- package/dist/active-host-CvNYoprt.js +0 -57
- package/dist/autocomplete-DWSuwSRS.js.map +0 -1
- package/dist/autocomplete-iCJOia-q.cjs +0 -115
- package/dist/autocomplete-iCJOia-q.cjs.map +0 -1
- package/dist/checkbox-NNReP9s_.cjs.map +0 -1
- package/dist/date-range-CaOxwZDq.cjs +0 -131
- package/dist/date-range-CaOxwZDq.cjs.map +0 -1
- package/dist/date-range-CgNujP8r.js.map +0 -1
- package/dist/date-range-inline-D4IjOOO0.cjs +0 -43
- package/dist/decorate-23nYs4Le.js +0 -7
- package/dist/decorate-DpFmy0nm.cjs +0 -1
- package/dist/float-CKmd-0-t.cjs +0 -1
- package/dist/form-CFvwnfuJ.js +0 -68
- package/dist/form-CFvwnfuJ.js.map +0 -1
- package/dist/form-Ceijw1aA.cjs +0 -1
- package/dist/form-Ceijw1aA.cjs.map +0 -1
- package/dist/input-D95GjINh.js.map +0 -1
- package/dist/input-D9s4jDAb.cjs +0 -51
- package/dist/input-D9s4jDAb.cjs.map +0 -1
- package/dist/mixins-BV0w2yIE.js +0 -627
- package/dist/mixins-BV0w2yIE.js.map +0 -1
- package/dist/mixins-DvAYa-F7.cjs +0 -298
- package/dist/mixins-DvAYa-F7.cjs.map +0 -1
- package/dist/notification-BC9nG8Sr.cjs +0 -23
- package/dist/radio-group-ByMD6Lsj.cjs +0 -40
- package/dist/radio-group-ByMD6Lsj.cjs.map +0 -1
- package/dist/radio-group-CW8airhZ.js.map +0 -1
- package/dist/select-BdBThja4.cjs +0 -56
- package/dist/select-BdBThja4.cjs.map +0 -1
- package/dist/select-Dbn-CImU.js.map +0 -1
- package/dist/state-DNdCPITt.cjs +0 -1
- package/dist/surface-BpppoNXN.cjs +0 -7
- package/dist/textarea-B9dy-yec.js +0 -211
- package/dist/textarea-B9dy-yec.js.map +0 -1
- package/dist/textarea-DFY0Flgv.cjs +0 -39
- package/dist/textarea-DFY0Flgv.cjs.map +0 -1
- package/dist/theme-CpuF3D3q.cjs +0 -181
- package/dist/theme-button-B6Xf-EiH.cjs +0 -8
- package/src/checkbox/checkbox.ts +0 -162
- package/types/src/checkbox/checkbox.d.ts +0 -71
- package/types/src/range/range.d.ts +0 -25
- package/types/src/switch/switch.d.ts +0 -53
- /package/dist/{animation-CO_Csq84.cjs → animation-CCOIW4wJ.cjs} +0 -0
- /package/dist/{animation-BK-8BwY8.js → animation-DCznELuT.js} +0 -0
- /package/dist/{context-DJTJnSK4.js → context-6oXCZmZN.js} +0 -0
- /package/dist/{context-BpCETidA.cjs → context-CRZeiCqq.cjs} +0 -0
- /package/dist/{hashContent-Bobsobip.cjs → hashContent-Ck6laKlk.cjs} +0 -0
- /package/dist/{hashContent-BU6jl5ih.js → hashContent-dJrI-9sc.js} +0 -0
- /package/dist/{lazy-Dq9mRRjT.cjs → lazy-CayEFyC3.cjs} +0 -0
- /package/dist/{lazy-B0ia54tT.js → lazy-D-bO2r4m.js} +0 -0
- /package/dist/{overlay-stack-DCDS17uj.js → overlay-stack-BR4iYivO.js} +0 -0
- /package/dist/{overlay-stack-DPIe_aYv.cjs → overlay-stack-Dk0xETTy.cjs} +0 -0
- /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-D7LqTUMn.js} +0 -0
- /package/dist/{reduced-motion-Ds-HjMzn.cjs → reduced-motion-Dzfp_w5x.cjs} +0 -0
- /package/dist/{rxjs-utils-CVeJQ9KG.js → rxjs-utils-D9U4MW0Q.js} +0 -0
- /package/dist/{rxjs-utils-DCUHg_Ml.cjs → rxjs-utils-kWPShgKu.cjs} +0 -0
- /package/dist/{search-BLCRsxIC.cjs → search-DPKoC-dT.cjs} +0 -0
- /package/dist/{search-BTz7-Rev.js → search-MvIBA93K.js} +0 -0
- /package/dist/{theme.interface-B9TjbSBF.js → theme.interface-C8OHheXg.js} +0 -0
- /package/dist/{theme.interface-BujperTo.cjs → theme.interface-CYo4UpWK.cjs} +0 -0
- /package/src/{autocomplete → form/fields/autocomplete}/autocomplete.scss +0 -0
- /package/src/{autocomplete → form/fields/autocomplete}/index.ts +0 -0
- /package/src/{checkbox → form/fields/checkbox}/index.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-range-dialog.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-range-helpers.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-range-presets.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-utils.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/index.ts +0 -0
- /package/src/{input → form/fields/input}/index.ts +0 -0
- /package/src/{input → form/fields/input}/input.scss +0 -0
- /package/src/{radio-group → form/fields/radio-group}/index.ts +0 -0
- /package/src/{radio-group → form/fields/radio-group}/radio-group.scss +0 -0
- /package/src/{range → form/fields/range}/index.ts +0 -0
- /package/src/{select → form/fields/select}/index.ts +0 -0
- /package/src/{switch → form/fields/switch}/index.ts +0 -0
- /package/src/{textarea → form/fields/textarea}/index.ts +0 -0
- /package/src/{textarea → form/fields/textarea}/textarea.scss +0 -0
- /package/types/src/{autocomplete → form/fields/autocomplete}/index.d.ts +0 -0
- /package/types/src/{checkbox → form/fields/checkbox}/checkbox.test.d.ts +0 -0
- /package/types/src/{checkbox → form/fields/checkbox}/index.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-range-dialog.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-range-helpers.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-range-presets.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-utils.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/index.d.ts +0 -0
- /package/types/src/{input → form/fields/input}/index.d.ts +0 -0
- /package/types/src/{radio-group → form/fields/radio-group}/index.d.ts +0 -0
- /package/types/src/{range → form/fields/range}/index.d.ts +0 -0
- /package/types/src/{select → form/fields/select}/index.d.ts +0 -0
- /package/types/src/{switch → form/fields/switch}/index.d.ts +0 -0
- /package/types/src/{switch → form/fields/switch}/switch.test.d.ts +0 -0
- /package/types/src/{textarea → form/fields/textarea}/index.d.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-CaOxwZDq.cjs","names":[],"sources":["../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/quarterOfYear.js","../src/date-range/date-range-helpers.ts","../src/date-range/date-range-presets.ts","../src/date-range/date-utils.ts","../src/date-range/date-range-dialog.ts","../src/date-range/date-range.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","import dayjs from 'dayjs'\r\n\r\n/**\r\n * Format a date range into a human-readable string\r\n */\r\nexport function formatDateRange(\r\n\tfromValue: string,\r\n\ttoValue: string,\r\n\ttype: 'date' | 'datetime-local',\r\n\tplaceholder: string\r\n): string {\r\n\tif (!fromValue || !toValue) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\tconst fromDate = dayjs(fromValue)\r\n\tconst toDate = dayjs(toValue)\r\n\r\n\tif (!fromDate.isValid() || !toDate.isValid()) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\t// Format times if needed (for datetime-local)\r\n\tconst fromTime = type === 'datetime-local' ? fromDate.format(' h:mm A') : ''\r\n\tconst toTime = type === 'datetime-local' ? toDate.format(' h:mm A') : ''\r\n\r\n\t// Check if same day\r\n\tif (fromDate.isSame(toDate, 'day')) {\r\n\t\treturn `${fromDate.format('ddd, MMM D, YYYY')}${fromTime}`\r\n\t}\r\n\r\n\t// Check if same month and year\r\n\tif (fromDate.isSame(toDate, 'month') && fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('ddd MMM D')} - ${toDate.format('ddd D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Check if same year\r\n\tif (fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('ddd MMM D')} - ${toDate.format('ddd MMM D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Different years\r\n\treturn `${fromDate.format('ddd MMM D, YYYY')}${fromTime} - ${toDate.format('ddd MMM D, YYYY')}${toTime}`\r\n}\r\n\r\n/**\r\n * Detect the type of date range (full month, full quarter, etc.)\r\n */\r\nexport interface DateRangeType {\r\n\tisFullMonth: boolean\r\n\tisFullQuarter: boolean\r\n\tisFullYear: boolean\r\n\tisFullWeek: boolean\r\n}\r\n\r\nexport function detectDateRangeType(fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): DateRangeType {\r\n\treturn {\r\n\t\tisFullMonth: fromDate.date() === 1 && toDate.isSame(fromDate.endOf('month'), 'day'),\r\n\t\tisFullQuarter: fromDate.isSame(fromDate.startOf('quarter'), 'day') && toDate.isSame(toDate.endOf('quarter'), 'day'),\r\n\t\tisFullYear: fromDate.isSame(fromDate.startOf('year'), 'day') && toDate.isSame(toDate.endOf('year'), 'day'),\r\n\t\tisFullWeek: fromDate.day() === 0 && toDate.day() === 6 && toDate.diff(fromDate, 'days') === 6,\r\n\t}\r\n}\r\n\r\n","import dayjs from 'dayjs'\r\n\r\nexport type PresetUnit = dayjs.OpUnitType | 'quarter'\r\n\r\nexport interface DateRangePreset {\r\n\tlabel: string\r\n\trange: { dateFrom: string; dateTo: string }\r\n\tstep: PresetUnit\r\n}\r\n\r\nexport interface PresetCategory {\r\n\tname: string\r\n\tpresets: DateRangePreset[]\r\n}\r\n\r\n/**\r\n * Generate date range presets for different time periods\r\n */\r\nexport function generatePresetCategories(format: string, includeTime: boolean = false): PresetCategory[] {\r\n\tconst categories: PresetCategory[] = []\r\n\r\n\t// Hours category (only for datetime-local)\r\n\tif (includeTime) {\r\n\t\tcategories.push({\r\n\t\t\tname: 'Hours',\r\n\t\t\tpresets: [\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 24 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(24, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 12 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(12, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t})\r\n\t}\r\n\r\n\t// Days category\r\n\tcategories.push({\r\n\t\tname: 'Days',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Today',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Yesterday',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'days').startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'days').endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t...generateLastNDaysPresets([7, 14, 30, 60, 90], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Weeks category\r\n\tcategories.push({\r\n\t\tname: 'Weeks',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'weeks').startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'weeks').endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t...generateLastNWeeksPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Months category\r\n\tcategories.push({\r\n\t\tname: 'Months',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'month').startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'month').endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t...generateLastNMonthsPresets([3, 6], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Quarters category\r\n\tcategories.push({\r\n\t\tname: 'Quarters',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'quarter').startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'quarter').endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t...generateLastNQuartersPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Years category\r\n\tcategories.push({\r\n\t\tname: 'Years',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'year').startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'year').endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Year to Date',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t],\r\n\t})\r\n\r\n\treturn categories\r\n}\r\n\r\n// Helper functions to generate preset arrays\r\nfunction generateLastNDaysPresets(days: number[], format: string): DateRangePreset[] {\r\n\treturn days.map(n => ({\r\n\t\tlabel: `Last ${n} Days`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n - 1, 'days').startOf('day').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'day' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNWeeksPresets(weeks: number[], format: string): DateRangePreset[] {\r\n\treturn weeks.map(n => ({\r\n\t\tlabel: `Last ${n} Weeks`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'weeks').startOf('week').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'week' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNMonthsPresets(months: number[], format: string): DateRangePreset[] {\r\n\treturn months.map(n => ({\r\n\t\tlabel: `Last ${n} Months`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'months').startOf('month').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'month' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNQuartersPresets(quarters: number[], format: string): DateRangePreset[] {\r\n\treturn quarters.map(n => ({\r\n\t\tlabel: `Last ${n} Quarters`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'quarters').startOf('quarter').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'quarter' as PresetUnit,\r\n\t}))\r\n}","import dayjs from 'dayjs'\n\ntype DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\n/**\n * Ensures that a date string conforms to a specific format.\n * If the date is already in the correct format, it returns the original string.\n * If the date is in a different format, it attempts to convert it to the specified format.\n * If the date is invalid or cannot be converted, it returns null.\n *\n * @param dateString The date string to validate and format.\n * @param expectedFormat The expected date format (e.g., 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm').\n * @returns The formatted date string, or null if the date is invalid.\n */\nfunction enforceDateFormat(dateString: string | undefined, expectedFormat: DateFormat): string | null {\n\tif (!dateString) {\n\t\treturn null // Or handle the undefined case differently if needed\n\t}\n\n\tconst parsedDate = dayjs(dateString)\n\n\tif (!parsedDate.isValid()) {\n\t\treturn null // Date is invalid\n\t}\n\n\treturn parsedDate.format(expectedFormat)\n}\n\n/**\n * Validates if the initial date range values are in the expected format.\n *\n * @param dateFrom The dateFrom value to validate.\n * @param dateTo The dateTo value to validate.\n * @param expectedFormat The expected date format.\n * @returns An object indicating whether each date is valid, and the formatted date or null if invalid.\n */\nfunction validateInitialDateRange(\n\tdateFrom: string | undefined,\n\tdateTo: string | undefined,\n\texpectedFormat: DateFormat,\n): {\n\tdateFrom: string | null\n\tdateTo: string | null\n\tisValid: boolean\n} {\n\tconst formattedDateFrom = enforceDateFormat(dateFrom, expectedFormat)\n\tconst formattedDateTo = enforceDateFormat(dateTo, expectedFormat)\n\n\tconst isValid = formattedDateFrom !== null && formattedDateTo !== null\n\n\treturn {\n\t\tdateFrom: formattedDateFrom,\n\t\tdateTo: formattedDateTo,\n\t\tisValid,\n\t}\n}\n\nexport { validateInitialDateRange }\n","import { SchmancyElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { DateRangePreset, PresetCategory } from './date-range-presets'\n\ninterface PresetGroup {\n\tname: string\n\tpresets: DateRangePreset[]\n}\n\n/**\n * Dialog content component for date range selection\n *\n * Redesigned with chip-based horizontal flow layout:\n * - Quick Select: Today, Yesterday, This Week, This Month\n * - Days: Last 7/14/30/60/90 Days\n * - Periods: Last Week, Last Month, Last Quarter, Last Year\n * - Year to Date: This Week, This Month, This Quarter, This Year, YTD\n * - Custom Range: Manual date inputs at the bottom\n *\n * @element schmancy-date-range-dialog\n */\n@customElement('schmancy-date-range-dialog')\nexport class SchmancyDateRangeDialog extends SchmancyElement {\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\t@property({ type: String }) activePreset: string | null = null\n\t@property({ type: Array }) presetCategories: PresetCategory[] = []\n\n\t/**\n\t * Reorganizes presets into the new grouped layout\n\t */\n\tprivate getPresetGroups(): PresetGroup[] {\n\t\tconst allPresets = this.presetCategories.flatMap(c => c.presets)\n\n\t\t// Quick Select: Today, Yesterday, This Week, This Month\n\t\tconst quickSelectLabels = ['Today', 'Yesterday', 'This Week', 'This Month']\n\t\tconst quickSelect = quickSelectLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\t// Days: Last 7/14/30/60/90 Days\n\t\tconst daysLabels = ['Last 7 Days', 'Last 14 Days', 'Last 30 Days', 'Last 60 Days', 'Last 90 Days']\n\t\tconst days = daysLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\t// Periods: Last Week, Last Month, Last Quarter, Last Year\n\t\tconst periodsLabels = ['Last Week', 'Last Month', 'Last Quarter', 'Last Year']\n\t\tconst periods = periodsLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\t// Year to Date: This Week, This Month, This Quarter, This Year, YTD\n\t\tconst ytdLabels = ['This Week', 'This Month', 'This Quarter', 'This Year', 'Year to Date']\n\t\tconst yearToDate = ytdLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\tconst groups: PresetGroup[] = []\n\n\t\tif (quickSelect.length > 0) {\n\t\t\tgroups.push({ name: 'Quick Select', presets: quickSelect })\n\t\t}\n\t\tif (days.length > 0) {\n\t\t\tgroups.push({ name: 'Days', presets: days })\n\t\t}\n\t\tif (periods.length > 0) {\n\t\t\tgroups.push({ name: 'Periods', presets: periods })\n\t\t}\n\t\tif (yearToDate.length > 0) {\n\t\t\tgroups.push({ name: 'Year to Date', presets: yearToDate })\n\t\t}\n\n\t\treturn groups\n\t}\n\n\tprivate handleFromDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateFrom = { ...this.dateFrom, value: input.value }\n\n\t\t// If the new start date is after the current end date, adjust the end date\n\t\tif (this.dateTo.value && dayjs(this.dateFrom.value).isAfter(dayjs(this.dateTo.value))) {\n\t\t\tthis.dateTo = { ...this.dateTo, value: this.dateFrom.value }\n\t\t}\n\n\t\tthis.dispatchEvent(new CustomEvent('date-change', {\n\t\t\tdetail: { dateFrom: this.dateFrom.value, dateTo: this.dateTo.value },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate handleToDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateTo = { ...this.dateTo, value: input.value }\n\n\t\tthis.dispatchEvent(new CustomEvent('date-change', {\n\t\t\tdetail: { dateFrom: this.dateFrom.value, dateTo: this.dateTo.value },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate handlePresetSelection(preset: DateRangePreset, e: Event) {\n\t\te.stopPropagation()\n\t\t// Parent <schmancy-date-range> listens for `preset-select`, applies\n\t\t// the range, and dispatches 'close' on us — `show()` tears down.\n\t\tthis.dispatchEvent(new CustomEvent('preset-select', {\n\t\t\tdetail: { preset },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate applyManualDateSelection(e: Event) {\n\t\te.stopPropagation()\n\t\t// Validate dates before applying\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.dispatchEvent(new CustomEvent('announce', {\n\t\t\t\tdetail: { message: 'Invalid date format. Please check your input.' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true\n\t\t\t}))\n\t\t\treturn\n\t\t}\n\n\t\t// Parent <schmancy-date-range> listens for `apply-dates`, applies the\n\t\t// range, and dispatches 'close' on us — `show()` tears down.\n\t\tthis.dispatchEvent(new CustomEvent('apply-dates', {\n\t\t\tdetail: {\n\t\t\t\tdateFrom: this.dateFrom.value,\n\t\t\t\tdateTo: this.dateTo.value,\n\t\t\t\tswapIfNeeded: fromDate.isAfter(toDate)\n\t\t\t},\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\trender() {\n\t\tconst presetGroups = this.getPresetGroups()\n\n\t\treturn html`\n\t\t\t<div class=\"w-full min-h-[400px] max-h-[80vh] flex flex-col p-4\">\n\t\t\t\t<!-- Preset Groups Section -->\n\t\t\t\t<div class=\"flex-1 overflow-y-auto overflow-x-hidden min-h-0 space-y-4\">\n\t\t\t\t\t${repeat(\n\t\t\t\t\t\tpresetGroups,\n\t\t\t\t\t\tgroup => group.name,\n\t\t\t\t\t\tgroup => html`\n\t\t\t\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${group.name}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<div class=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t\t\t${repeat(\n\t\t\t\t\t\t\t\t\t\tgroup.presets,\n\t\t\t\t\t\t\t\t\t\tpreset => preset.label,\n\t\t\t\t\t\t\t\t\t\tpreset => html`\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-filter-chip\n\t\t\t\t\t\t\t\t\t\t\t\t.value=${preset.label}\n\t\t\t\t\t\t\t\t\t\t\t\t.selected=${this.activePreset === preset.label}\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => this.handlePresetSelection(preset, e)}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${preset.label}\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-filter-chip>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Divider -->\n\t\t\t\t<schmancy-divider class=\"my-4\"></schmancy-divider>\n\n\t\t\t\t<!-- Custom Range Section -->\n\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t<div class=\"flex items-end gap-3 flex-wrap\">\n\t\t\t\t\t\t<div class=\"flex-1 min-w-[140px]\">\n\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t.type=\"${this.type}\"\n\t\t\t\t\t\t\t\t.label=\"${this.dateFrom.label || 'From'}\"\n\t\t\t\t\t\t\t\t.value=\"${this.dateFrom.value}\"\n\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.minDate)}\"\n\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t@change=\"${this.handleFromDateChange}\"\n\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"flex-1 min-w-[140px]\">\n\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t.type=\"${this.type}\"\n\t\t\t\t\t\t\t\t.label=\"${this.dateTo.label || 'To'}\"\n\t\t\t\t\t\t\t\t.value=\"${this.dateTo.value}\"\n\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.dateFrom.value)}\"\n\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t@change=\"${this.handleToDateChange}\"\n\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\t\t@click=\"${(e: Event) => this.applyManualDateSelection(e)}\"\n\t\t\t\t\t\t\t?disabled=\"${!this.dateFrom.value || !this.dateTo.value}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tApply\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-date-range-dialog': SchmancyDateRangeDialog\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, Subscription, takeUntil, timer } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\nimport { detectDateRangeType, formatDateRange } from './date-range-helpers'\nimport { DateRangePreset, generatePresetCategories, PresetCategory } from './date-range-presets'\nimport { validateInitialDateRange } from './date-utils'\nimport './date-range-dialog'\n\n// Add quarter plugin to dayjs\ndayjs.extend(quarterOfYear)\n\n// Bridge the inner-content events used inside the overlay template down to a\n// `close` event on the same element. `show()` translates a bubbling 'close'\n// event into observable completion + an emission of `event.detail`.\nconst dispatchClose = (target: EventTarget | null): void => {\n\ttarget?.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n}\n\nexport type SchmancyDateRangeChangeEvent = CustomEvent<{\n\tdateFrom: string\n\tdateTo: string\n}>\n\n/**\n * A date range selector that supports presets and manual date input.\n *\n * @element schmancy-date-range\n * @fires change - Fired when the date range changes with dateFrom and dateTo values\n */\n@customElement('schmancy-date-range')\nexport class SchmancyDateRange extends SchmancyElement {\n\t// Core properties\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\n\t// Enhanced functionality\n\t@property({ type: Array }) customPresets: Array<{\n\t\tlabel: string\n\t\tdateFrom: string\n\t\tdateTo: string\n\t}> = []\n\t@property({ type: String }) format?: string\n\t@property({ type: Boolean }) disabled = false\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = 'Select date range'\n\t@property({ type: Boolean }) clearable = true\n\t@property() step?: 'day' | 'week' | 'month' | 'year' | number\n\t/** When true, collapses to just an icon button on mobile screens */\n\t@property({ type: Boolean }) collapse = false\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private selectedDateRange: string = ''\n\t@state() private activePreset: string | null = null\n\t@state() private announceMessage: string = ''\n\n\t// Default presets\n\tprivate presetRanges: DateRangePreset[] = []\n\n\t// Categorized presets\n\tprivate presetCategories: PresetCategory[] = []\n\n\t// Memoization cache\n\tprivate memoizedPresets = new Map<string, PresetCategory[]>()\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t\t// Reset open state when element is moved/removed to prevent stale state\n\t\tthis.isOpen = false\n\t}\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.initPresetRanges()\n\n\t\t// Validate initial date range\n\t\tconst dateFormat = this.getDateFormat() as 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\t\tconst validatedRange = validateInitialDateRange(this.dateFrom.value, this.dateTo.value, dateFormat)\n\n\t\tif (validatedRange.isValid) {\n\t\t\tthis.dateFrom.value = validatedRange.dateFrom!\n\t\t\tthis.dateTo.value = validatedRange.dateTo!\n\t\t\tthis.updateSelectedDateRange()\n\t\t} else {\n\t\t\tconst now = dayjs().format(dateFormat)\n\t\t\tthis.dateFrom.value = now\n\t\t\tthis.dateTo.value = now\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\n\t\t// Set up global event handlers using RxJS\n\t\tthis.setupEventHandlers()\n\t}\n\n\tprivate setupEventHandlers() {\n\t\t// Handle keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.handleKeyboardNavigation(event)\n\t\t\t})\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (\n\t\t\t(changedProps.has('dateFrom') || changedProps.has('dateTo')) &&\n\t\t\t(this.dateFrom?.value !== undefined || this.dateTo?.value !== undefined)\n\t\t) {\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\t}\n\n\tprivate initPresetRanges() {\n\t\tconst format = this.getDateFormat()\n\t\tconst cacheKey = `${this.type}-${format}-${JSON.stringify(this.customPresets)}`\n\t\t\n\t\t// Check memoization cache\n\t\tif (this.memoizedPresets.has(cacheKey)) {\n\t\t\tconst cached = this.memoizedPresets.get(cacheKey)!\n\t\t\tthis.presetCategories = cached\n\t\t\tthis.presetRanges = []\n\t\t\tcached.forEach(category => {\n\t\t\t\tthis.presetRanges.push(...category.presets)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Generate preset categories\n\t\tthis.presetCategories = generatePresetCategories(format, this.type === 'datetime-local')\n\n\t\t// Flatten presets for other methods that expect a flat list\n\t\tthis.presetRanges = []\n\t\tthis.presetCategories.forEach(category => {\n\t\t\tthis.presetRanges.push(...category.presets)\n\t\t})\n\n\t\t// Add custom presets if provided\n\t\tif (this.customPresets && this.customPresets.length > 0) {\n\t\t\tconst customCategory: PresetCategory = {\n\t\t\t\tname: 'Custom',\n\t\t\t\tpresets: this.customPresets.map(preset => ({\n\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\trange: {\n\t\t\t\t\t\tdateFrom: preset.dateFrom,\n\t\t\t\t\t\tdateTo: preset.dateTo,\n\t\t\t\t\t},\n\t\t\t\t\tstep: 'day' as const,\n\t\t\t\t})),\n\t\t\t}\n\n\t\t\tthis.presetCategories.push(customCategory)\n\t\t\tthis.presetRanges.push(...customCategory.presets)\n\t\t}\n\t\t\n\t\t// Cache the result\n\t\tthis.memoizedPresets.set(cacheKey, [...this.presetCategories])\n\t}\n\n\tprivate getDateFormat(): string {\n\t\treturn this.format || (this.type === 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DDTHH:mm')\n\t}\n\n\t/**\n\t * Creates a concise display format for the selected date range\n\t */\n\tprivate updateSelectedDateRange() {\n\t\t// Find matching preset\n\t\tconst preset = this.presetRanges.find(\n\t\t\tp => p.range.dateFrom === this.dateFrom.value && p.range.dateTo === this.dateTo.value,\n\t\t)\n\n\t\tif (preset) {\n\t\t\t// If matches a preset, just use the preset name\n\t\t\tthis.selectedDateRange = preset.label\n\t\t\tthis.activePreset = preset.label\n\t\t\treturn\n\t\t}\n\n\t\t// If we didn't find a preset match, check if we should update the active preset\n\t\tthis.checkAndUpdateActivePreset(this.dateFrom.value, this.dateTo.value)\n\n\t\t// Custom date range - create concise format\n\t\tthis.activePreset = null\n\t\tthis.selectedDateRange = formatDateRange(this.dateFrom.value, this.dateTo.value, this.type, this.placeholder)\n\t}\n\n\tprivate setDateRange(dateFrom: string, dateTo: string) {\n\t\tthis.dateFrom.value = dateFrom\n\t\tthis.dateTo.value = dateTo\n\t\tthis.updateSelectedDateRange()\n\n\t\t// Announce change to screen readers\n\t\tthis.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`)\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<{ dateFrom: string; dateTo: string }>('change', {\n\t\t\t\tdetail: { dateFrom, dateTo },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate toggleDropdown(e: MouseEvent) {\n\t\te.stopPropagation()\n\t\tif (this.disabled || this.step !== undefined) return\n\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown(e)\n\t\t}\n\t}\n\n\tprivate _overlaySubscription: Subscription | null = null\n\n\tprivate openDropdown(e?: MouseEvent) {\n\t\tif (this.disabled || this.step !== undefined) return\n\n\t\tthis.dispatchEvent(new CustomEvent('beforeopen', { bubbles: true, composed: true }))\n\t\tthis.isOpen = true\n\n\t\t// Inline-template overlay. Inner handlers dispatch a 'close' event\n\t\t// from the dialog itself (via the module-scoped `dispatchClose`),\n\t\t// which `show()` translates into observable completion + an emission.\n\t\t// Layout (centered vs sheet) is chosen by the overlay system based on\n\t\t// viewport / anchor presence.\n\t\tconst dialogContent = html`\n\t\t\t<schmancy-date-range-dialog\n\t\t\t\t.type=\"${this.type}\"\n\t\t\t\t.dateFrom=\"${this.dateFrom}\"\n\t\t\t\t.dateTo=\"${this.dateTo}\"\n\t\t\t\t.minDate=\"${this.minDate}\"\n\t\t\t\t.maxDate=\"${this.maxDate}\"\n\t\t\t\t.activePreset=\"${this.activePreset}\"\n\t\t\t\t.presetCategories=\"${this.presetCategories}\"\n\t\t\t\t@preset-select=\"${(ev: CustomEvent) => {\n\t\t\t\t\tthis.activePreset = ev.detail.preset.label\n\t\t\t\t\tthis.setDateRange(ev.detail.preset.range.dateFrom, ev.detail.preset.range.dateTo)\n\t\t\t\t\tdispatchClose(ev.currentTarget)\n\t\t\t\t}}\"\n\t\t\t\t@date-change=\"${() => this.updateSelectedDateRange()}\"\n\t\t\t\t@apply-dates=\"${(ev: CustomEvent) => {\n\t\t\t\t\tconst { dateFrom, dateTo, swapIfNeeded } = ev.detail\n\t\t\t\t\tif (swapIfNeeded) {\n\t\t\t\t\t\tthis.setDateRange(dateTo, dateFrom)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setDateRange(dateFrom, dateTo)\n\t\t\t\t\t}\n\t\t\t\t\tdispatchClose(ev.currentTarget)\n\t\t\t\t}}\"\n\t\t\t\t@announce=\"${(ev: CustomEvent) => this.announceToScreenReader(ev.detail.message)}\"\n\t\t\t></schmancy-date-range-dialog>\n\t\t`\n\n\t\tthis._overlaySubscription?.unsubscribe()\n\t\tthis._overlaySubscription = show(dialogContent, { anchor: e })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tthis.isOpen = false\n\t\t\t\t\tthis._overlaySubscription = null\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis._overlaySubscription?.unsubscribe()\n\t\tthis._overlaySubscription = null\n\t\tthis.isOpen = false\n\t}\n\n\t/**\n\t * Shifts the date range based on the step property\n\t */\n\tprivate shiftDateRange(direction: number, e: Event) {\n\t\te.stopPropagation()\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) return\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return\n\n\t\tconst format = this.getDateFormat()\n\t\tconst dir = direction > 0 ? 1 : -1\n\t\tconst daysDiff = toDate.diff(fromDate, 'day') + 1\n\n\t\t// Determine shift amount and unit\n\t\tlet amount: number\n\t\tlet unit: dayjs.ManipulateType\n\n\t\tif (this.step !== undefined) {\n\t\t\tif (typeof this.step === 'number') {\n\t\t\t\tamount = dir * this.step\n\t\t\t\tunit = 'day'\n\t\t\t} else if (this.step === 'day') {\n\t\t\t\tamount = dir * daysDiff\n\t\t\t\tunit = 'day'\n\t\t\t} else {\n\t\t\t\tamount = dir\n\t\t\t\tunit = this.step\n\t\t\t}\n\t\t} else {\n\t\t\t// Auto-detect based on date range\n\t\t\tconst rangeType = detectDateRangeType(fromDate, toDate)\n\t\t\tif (rangeType.isFullYear) {\n\t\t\t\tamount = dir\n\t\t\t\tunit = 'year'\n\t\t\t} else if (rangeType.isFullMonth) {\n\t\t\t\tamount = dir\n\t\t\t\tunit = 'month'\n\t\t\t} else if (rangeType.isFullWeek) {\n\t\t\t\tamount = dir\n\t\t\t\tunit = 'week'\n\t\t\t} else {\n\t\t\t\tamount = dir * daysDiff\n\t\t\t\tunit = 'day'\n\t\t\t}\n\t\t}\n\n\t\tconst newFromDate = fromDate.add(amount, unit)\n\t\tconst newToDate = toDate.add(amount, unit)\n\n\t\t// Validate against min/max dates\n\t\tif (this.minDate && newFromDate.isBefore(dayjs(this.minDate))) return\n\t\tif (this.maxDate && newToDate.isAfter(dayjs(this.maxDate))) return\n\n\t\t// Update the date range\n\t\tthis.setDateRange(newFromDate.format(format), newToDate.format(format))\n\t\tthis.checkAndUpdateActivePreset(newFromDate.format(format), newToDate.format(format))\n\t}\n\n\t/**\n\t * Handle keyboard navigation for accessibility\n\t */\n\tprivate handleKeyboardNavigation(event: KeyboardEvent) {\n\t\tconst key = event.key\n\t\t\n\t\t// Handle date navigation keys\n\t\tif (this.dateFrom.value && this.dateTo.value && !this.disabled) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'PageUp':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(-1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'PageDown':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'Home':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+Home: Jump to start of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst monthStart = currentFrom.startOf('month')\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthStart.format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthStart.add(daysDiff, 'day').format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'End':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+End: Jump to end of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\tconst monthEnd = currentTo.endOf('month')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthEnd.subtract(daysDiff, 'day').format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthEnd.format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date range matches any predefined preset,\n\t * and updates the activePreset accordingly\n\t */\n\tprivate checkAndUpdateActivePreset(fromDate: string, toDate: string) {\n\t\t// Find a preset that matches the current date range\n\t\tconst matchingPreset = this.presetRanges.find(\n\t\t\tpreset => preset.range.dateFrom === fromDate && preset.range.dateTo === toDate,\n\t\t)\n\n\t\tif (matchingPreset) {\n\t\t\tthis.activePreset = matchingPreset.label\n\t\t} else {\n\t\t\tthis.activePreset = null\n\t\t}\n\t}\n\n\t/**\n\t * Check if we can navigate backward\n\t */\n\tprivate canNavigateBackward(): boolean {\n\t\tif (!this.dateFrom.value || !this.minDate) return true\n\t\t\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst minDate = dayjs(this.minDate)\n\t\t\n\t\t// If current start date is already at or before min date, can't go back\n\t\treturn fromDate.isAfter(minDate)\n\t}\n\n\t/**\n\t * Check if we can navigate forward\n\t */\n\tprivate canNavigateForward(): boolean {\n\t\tif (!this.dateTo.value || !this.maxDate) return true\n\t\t\n\t\tconst toDate = dayjs(this.dateTo.value)\n\t\tconst maxDate = dayjs(this.maxDate)\n\t\t\n\t\t// If current end date is already at or after max date, can't go forward\n\t\treturn toDate.isBefore(maxDate)\n\t}\n\n\t/**\n\t * Announce messages to screen readers\n\t */\n\tprivate announceToScreenReader(message: string) {\n\t\tthis.announceMessage = message\n\t\t// Clear the message after announcement\n\t\ttimer(100)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.announceMessage = ''\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}\">\n\t\t\t\t<!-- Screen reader announcements -->\n\t\t\t\t<div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t\t${this.announceMessage}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Collapsed: icon-only on mobile when collapse=true -->\n\t\t\t\t<schmancy-icon-button\n\t\t\t\t\tclass=\"${this.collapse ? 'lg:hidden' : 'hidden'}\"\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t@click=${(e: MouseEvent) => this.toggleDropdown(e)}\n\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t>\n\t\t\t\t\tdate_range\n\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t<!-- Full UI: always visible when collapse=false, or lg+ when collapse=true -->\n\t\t\t\t<section @click=${(event: Event) => event.stopPropagation()} class=\"${this.collapse ? 'hidden lg:flex' : 'flex'}\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(-1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value || !this.canNavigateBackward()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_left\n\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\taria-readonly=\"${this.step !== undefined}\"\n\t\t\t\t\t\t\t@click=${(e: MouseEvent) => this.toggleDropdown(e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t\t\tstyle=\"${this.step !== undefined ? 'cursor: default;' : ''}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t</schmancy-button>\n\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Next ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value || !this.canNavigateForward()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_right\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t`\n\t}\n}"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-CgNujP8r.js","names":[],"sources":["../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/quarterOfYear.js","../src/date-range/date-range-helpers.ts","../src/date-range/date-range-presets.ts","../src/date-range/date-utils.ts","../src/date-range/date-range-dialog.ts","../src/date-range/date-range.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","import dayjs from 'dayjs'\r\n\r\n/**\r\n * Format a date range into a human-readable string\r\n */\r\nexport function formatDateRange(\r\n\tfromValue: string,\r\n\ttoValue: string,\r\n\ttype: 'date' | 'datetime-local',\r\n\tplaceholder: string\r\n): string {\r\n\tif (!fromValue || !toValue) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\tconst fromDate = dayjs(fromValue)\r\n\tconst toDate = dayjs(toValue)\r\n\r\n\tif (!fromDate.isValid() || !toDate.isValid()) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\t// Format times if needed (for datetime-local)\r\n\tconst fromTime = type === 'datetime-local' ? fromDate.format(' h:mm A') : ''\r\n\tconst toTime = type === 'datetime-local' ? toDate.format(' h:mm A') : ''\r\n\r\n\t// Check if same day\r\n\tif (fromDate.isSame(toDate, 'day')) {\r\n\t\treturn `${fromDate.format('ddd, MMM D, YYYY')}${fromTime}`\r\n\t}\r\n\r\n\t// Check if same month and year\r\n\tif (fromDate.isSame(toDate, 'month') && fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('ddd MMM D')} - ${toDate.format('ddd D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Check if same year\r\n\tif (fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('ddd MMM D')} - ${toDate.format('ddd MMM D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Different years\r\n\treturn `${fromDate.format('ddd MMM D, YYYY')}${fromTime} - ${toDate.format('ddd MMM D, YYYY')}${toTime}`\r\n}\r\n\r\n/**\r\n * Detect the type of date range (full month, full quarter, etc.)\r\n */\r\nexport interface DateRangeType {\r\n\tisFullMonth: boolean\r\n\tisFullQuarter: boolean\r\n\tisFullYear: boolean\r\n\tisFullWeek: boolean\r\n}\r\n\r\nexport function detectDateRangeType(fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): DateRangeType {\r\n\treturn {\r\n\t\tisFullMonth: fromDate.date() === 1 && toDate.isSame(fromDate.endOf('month'), 'day'),\r\n\t\tisFullQuarter: fromDate.isSame(fromDate.startOf('quarter'), 'day') && toDate.isSame(toDate.endOf('quarter'), 'day'),\r\n\t\tisFullYear: fromDate.isSame(fromDate.startOf('year'), 'day') && toDate.isSame(toDate.endOf('year'), 'day'),\r\n\t\tisFullWeek: fromDate.day() === 0 && toDate.day() === 6 && toDate.diff(fromDate, 'days') === 6,\r\n\t}\r\n}\r\n\r\n","import dayjs from 'dayjs'\r\n\r\nexport type PresetUnit = dayjs.OpUnitType | 'quarter'\r\n\r\nexport interface DateRangePreset {\r\n\tlabel: string\r\n\trange: { dateFrom: string; dateTo: string }\r\n\tstep: PresetUnit\r\n}\r\n\r\nexport interface PresetCategory {\r\n\tname: string\r\n\tpresets: DateRangePreset[]\r\n}\r\n\r\n/**\r\n * Generate date range presets for different time periods\r\n */\r\nexport function generatePresetCategories(format: string, includeTime: boolean = false): PresetCategory[] {\r\n\tconst categories: PresetCategory[] = []\r\n\r\n\t// Hours category (only for datetime-local)\r\n\tif (includeTime) {\r\n\t\tcategories.push({\r\n\t\t\tname: 'Hours',\r\n\t\t\tpresets: [\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 24 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(24, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 12 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(12, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t})\r\n\t}\r\n\r\n\t// Days category\r\n\tcategories.push({\r\n\t\tname: 'Days',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Today',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Yesterday',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'days').startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'days').endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t...generateLastNDaysPresets([7, 14, 30, 60, 90], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Weeks category\r\n\tcategories.push({\r\n\t\tname: 'Weeks',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'weeks').startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'weeks').endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t...generateLastNWeeksPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Months category\r\n\tcategories.push({\r\n\t\tname: 'Months',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'month').startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'month').endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t...generateLastNMonthsPresets([3, 6], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Quarters category\r\n\tcategories.push({\r\n\t\tname: 'Quarters',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'quarter').startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'quarter').endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t...generateLastNQuartersPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Years category\r\n\tcategories.push({\r\n\t\tname: 'Years',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'year').startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'year').endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Year to Date',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t],\r\n\t})\r\n\r\n\treturn categories\r\n}\r\n\r\n// Helper functions to generate preset arrays\r\nfunction generateLastNDaysPresets(days: number[], format: string): DateRangePreset[] {\r\n\treturn days.map(n => ({\r\n\t\tlabel: `Last ${n} Days`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n - 1, 'days').startOf('day').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'day' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNWeeksPresets(weeks: number[], format: string): DateRangePreset[] {\r\n\treturn weeks.map(n => ({\r\n\t\tlabel: `Last ${n} Weeks`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'weeks').startOf('week').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'week' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNMonthsPresets(months: number[], format: string): DateRangePreset[] {\r\n\treturn months.map(n => ({\r\n\t\tlabel: `Last ${n} Months`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'months').startOf('month').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'month' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNQuartersPresets(quarters: number[], format: string): DateRangePreset[] {\r\n\treturn quarters.map(n => ({\r\n\t\tlabel: `Last ${n} Quarters`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'quarters').startOf('quarter').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'quarter' as PresetUnit,\r\n\t}))\r\n}","import dayjs from 'dayjs'\n\ntype DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\n/**\n * Ensures that a date string conforms to a specific format.\n * If the date is already in the correct format, it returns the original string.\n * If the date is in a different format, it attempts to convert it to the specified format.\n * If the date is invalid or cannot be converted, it returns null.\n *\n * @param dateString The date string to validate and format.\n * @param expectedFormat The expected date format (e.g., 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm').\n * @returns The formatted date string, or null if the date is invalid.\n */\nfunction enforceDateFormat(dateString: string | undefined, expectedFormat: DateFormat): string | null {\n\tif (!dateString) {\n\t\treturn null // Or handle the undefined case differently if needed\n\t}\n\n\tconst parsedDate = dayjs(dateString)\n\n\tif (!parsedDate.isValid()) {\n\t\treturn null // Date is invalid\n\t}\n\n\treturn parsedDate.format(expectedFormat)\n}\n\n/**\n * Validates if the initial date range values are in the expected format.\n *\n * @param dateFrom The dateFrom value to validate.\n * @param dateTo The dateTo value to validate.\n * @param expectedFormat The expected date format.\n * @returns An object indicating whether each date is valid, and the formatted date or null if invalid.\n */\nfunction validateInitialDateRange(\n\tdateFrom: string | undefined,\n\tdateTo: string | undefined,\n\texpectedFormat: DateFormat,\n): {\n\tdateFrom: string | null\n\tdateTo: string | null\n\tisValid: boolean\n} {\n\tconst formattedDateFrom = enforceDateFormat(dateFrom, expectedFormat)\n\tconst formattedDateTo = enforceDateFormat(dateTo, expectedFormat)\n\n\tconst isValid = formattedDateFrom !== null && formattedDateTo !== null\n\n\treturn {\n\t\tdateFrom: formattedDateFrom,\n\t\tdateTo: formattedDateTo,\n\t\tisValid,\n\t}\n}\n\nexport { validateInitialDateRange }\n","import { SchmancyElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { DateRangePreset, PresetCategory } from './date-range-presets'\n\ninterface PresetGroup {\n\tname: string\n\tpresets: DateRangePreset[]\n}\n\n/**\n * Dialog content component for date range selection\n *\n * Redesigned with chip-based horizontal flow layout:\n * - Quick Select: Today, Yesterday, This Week, This Month\n * - Days: Last 7/14/30/60/90 Days\n * - Periods: Last Week, Last Month, Last Quarter, Last Year\n * - Year to Date: This Week, This Month, This Quarter, This Year, YTD\n * - Custom Range: Manual date inputs at the bottom\n *\n * @element schmancy-date-range-dialog\n */\n@customElement('schmancy-date-range-dialog')\nexport class SchmancyDateRangeDialog extends SchmancyElement {\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\t@property({ type: String }) activePreset: string | null = null\n\t@property({ type: Array }) presetCategories: PresetCategory[] = []\n\n\t/**\n\t * Reorganizes presets into the new grouped layout\n\t */\n\tprivate getPresetGroups(): PresetGroup[] {\n\t\tconst allPresets = this.presetCategories.flatMap(c => c.presets)\n\n\t\t// Quick Select: Today, Yesterday, This Week, This Month\n\t\tconst quickSelectLabels = ['Today', 'Yesterday', 'This Week', 'This Month']\n\t\tconst quickSelect = quickSelectLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\t// Days: Last 7/14/30/60/90 Days\n\t\tconst daysLabels = ['Last 7 Days', 'Last 14 Days', 'Last 30 Days', 'Last 60 Days', 'Last 90 Days']\n\t\tconst days = daysLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\t// Periods: Last Week, Last Month, Last Quarter, Last Year\n\t\tconst periodsLabels = ['Last Week', 'Last Month', 'Last Quarter', 'Last Year']\n\t\tconst periods = periodsLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\t// Year to Date: This Week, This Month, This Quarter, This Year, YTD\n\t\tconst ytdLabels = ['This Week', 'This Month', 'This Quarter', 'This Year', 'Year to Date']\n\t\tconst yearToDate = ytdLabels\n\t\t\t.map(label => allPresets.find(p => p.label === label))\n\t\t\t.filter((p): p is DateRangePreset => p !== undefined)\n\n\t\tconst groups: PresetGroup[] = []\n\n\t\tif (quickSelect.length > 0) {\n\t\t\tgroups.push({ name: 'Quick Select', presets: quickSelect })\n\t\t}\n\t\tif (days.length > 0) {\n\t\t\tgroups.push({ name: 'Days', presets: days })\n\t\t}\n\t\tif (periods.length > 0) {\n\t\t\tgroups.push({ name: 'Periods', presets: periods })\n\t\t}\n\t\tif (yearToDate.length > 0) {\n\t\t\tgroups.push({ name: 'Year to Date', presets: yearToDate })\n\t\t}\n\n\t\treturn groups\n\t}\n\n\tprivate handleFromDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateFrom = { ...this.dateFrom, value: input.value }\n\n\t\t// If the new start date is after the current end date, adjust the end date\n\t\tif (this.dateTo.value && dayjs(this.dateFrom.value).isAfter(dayjs(this.dateTo.value))) {\n\t\t\tthis.dateTo = { ...this.dateTo, value: this.dateFrom.value }\n\t\t}\n\n\t\tthis.dispatchEvent(new CustomEvent('date-change', {\n\t\t\tdetail: { dateFrom: this.dateFrom.value, dateTo: this.dateTo.value },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate handleToDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateTo = { ...this.dateTo, value: input.value }\n\n\t\tthis.dispatchEvent(new CustomEvent('date-change', {\n\t\t\tdetail: { dateFrom: this.dateFrom.value, dateTo: this.dateTo.value },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate handlePresetSelection(preset: DateRangePreset, e: Event) {\n\t\te.stopPropagation()\n\t\t// Parent <schmancy-date-range> listens for `preset-select`, applies\n\t\t// the range, and dispatches 'close' on us — `show()` tears down.\n\t\tthis.dispatchEvent(new CustomEvent('preset-select', {\n\t\t\tdetail: { preset },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate applyManualDateSelection(e: Event) {\n\t\te.stopPropagation()\n\t\t// Validate dates before applying\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.dispatchEvent(new CustomEvent('announce', {\n\t\t\t\tdetail: { message: 'Invalid date format. Please check your input.' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true\n\t\t\t}))\n\t\t\treturn\n\t\t}\n\n\t\t// Parent <schmancy-date-range> listens for `apply-dates`, applies the\n\t\t// range, and dispatches 'close' on us — `show()` tears down.\n\t\tthis.dispatchEvent(new CustomEvent('apply-dates', {\n\t\t\tdetail: {\n\t\t\t\tdateFrom: this.dateFrom.value,\n\t\t\t\tdateTo: this.dateTo.value,\n\t\t\t\tswapIfNeeded: fromDate.isAfter(toDate)\n\t\t\t},\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\trender() {\n\t\tconst presetGroups = this.getPresetGroups()\n\n\t\treturn html`\n\t\t\t<div class=\"w-full min-h-[400px] max-h-[80vh] flex flex-col p-4\">\n\t\t\t\t<!-- Preset Groups Section -->\n\t\t\t\t<div class=\"flex-1 overflow-y-auto overflow-x-hidden min-h-0 space-y-4\">\n\t\t\t\t\t${repeat(\n\t\t\t\t\t\tpresetGroups,\n\t\t\t\t\t\tgroup => group.name,\n\t\t\t\t\t\tgroup => html`\n\t\t\t\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${group.name}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<div class=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t\t\t${repeat(\n\t\t\t\t\t\t\t\t\t\tgroup.presets,\n\t\t\t\t\t\t\t\t\t\tpreset => preset.label,\n\t\t\t\t\t\t\t\t\t\tpreset => html`\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-filter-chip\n\t\t\t\t\t\t\t\t\t\t\t\t.value=${preset.label}\n\t\t\t\t\t\t\t\t\t\t\t\t.selected=${this.activePreset === preset.label}\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => this.handlePresetSelection(preset, e)}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${preset.label}\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-filter-chip>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Divider -->\n\t\t\t\t<schmancy-divider class=\"my-4\"></schmancy-divider>\n\n\t\t\t\t<!-- Custom Range Section -->\n\t\t\t\t<div class=\"space-y-2\">\n\t\t\t\t\t<div class=\"flex items-end gap-3 flex-wrap\">\n\t\t\t\t\t\t<div class=\"flex-1 min-w-[140px]\">\n\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t.type=\"${this.type}\"\n\t\t\t\t\t\t\t\t.label=\"${this.dateFrom.label || 'From'}\"\n\t\t\t\t\t\t\t\t.value=\"${this.dateFrom.value}\"\n\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.minDate)}\"\n\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t@change=\"${this.handleFromDateChange}\"\n\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"flex-1 min-w-[140px]\">\n\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t.type=\"${this.type}\"\n\t\t\t\t\t\t\t\t.label=\"${this.dateTo.label || 'To'}\"\n\t\t\t\t\t\t\t\t.value=\"${this.dateTo.value}\"\n\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.dateFrom.value)}\"\n\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t@change=\"${this.handleToDateChange}\"\n\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\t\t@click=\"${(e: Event) => this.applyManualDateSelection(e)}\"\n\t\t\t\t\t\t\t?disabled=\"${!this.dateFrom.value || !this.dateTo.value}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tApply\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-date-range-dialog': SchmancyDateRangeDialog\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, Subscription, takeUntil, timer } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\nimport { detectDateRangeType, formatDateRange } from './date-range-helpers'\nimport { DateRangePreset, generatePresetCategories, PresetCategory } from './date-range-presets'\nimport { validateInitialDateRange } from './date-utils'\nimport './date-range-dialog'\n\n// Add quarter plugin to dayjs\ndayjs.extend(quarterOfYear)\n\n// Bridge the inner-content events used inside the overlay template down to a\n// `close` event on the same element. `show()` translates a bubbling 'close'\n// event into observable completion + an emission of `event.detail`.\nconst dispatchClose = (target: EventTarget | null): void => {\n\ttarget?.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n}\n\nexport type SchmancyDateRangeChangeEvent = CustomEvent<{\n\tdateFrom: string\n\tdateTo: string\n}>\n\n/**\n * A date range selector that supports presets and manual date input.\n *\n * @element schmancy-date-range\n * @fires change - Fired when the date range changes with dateFrom and dateTo values\n */\n@customElement('schmancy-date-range')\nexport class SchmancyDateRange extends SchmancyElement {\n\t// Core properties\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\n\t// Enhanced functionality\n\t@property({ type: Array }) customPresets: Array<{\n\t\tlabel: string\n\t\tdateFrom: string\n\t\tdateTo: string\n\t}> = []\n\t@property({ type: String }) format?: string\n\t@property({ type: Boolean }) disabled = false\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = 'Select date range'\n\t@property({ type: Boolean }) clearable = true\n\t@property() step?: 'day' | 'week' | 'month' | 'year' | number\n\t/** When true, collapses to just an icon button on mobile screens */\n\t@property({ type: Boolean }) collapse = false\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private selectedDateRange: string = ''\n\t@state() private activePreset: string | null = null\n\t@state() private announceMessage: string = ''\n\n\t// Default presets\n\tprivate presetRanges: DateRangePreset[] = []\n\n\t// Categorized presets\n\tprivate presetCategories: PresetCategory[] = []\n\n\t// Memoization cache\n\tprivate memoizedPresets = new Map<string, PresetCategory[]>()\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t\t// Reset open state when element is moved/removed to prevent stale state\n\t\tthis.isOpen = false\n\t}\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.initPresetRanges()\n\n\t\t// Validate initial date range\n\t\tconst dateFormat = this.getDateFormat() as 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\t\tconst validatedRange = validateInitialDateRange(this.dateFrom.value, this.dateTo.value, dateFormat)\n\n\t\tif (validatedRange.isValid) {\n\t\t\tthis.dateFrom.value = validatedRange.dateFrom!\n\t\t\tthis.dateTo.value = validatedRange.dateTo!\n\t\t\tthis.updateSelectedDateRange()\n\t\t} else {\n\t\t\tconst now = dayjs().format(dateFormat)\n\t\t\tthis.dateFrom.value = now\n\t\t\tthis.dateTo.value = now\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\n\t\t// Set up global event handlers using RxJS\n\t\tthis.setupEventHandlers()\n\t}\n\n\tprivate setupEventHandlers() {\n\t\t// Handle keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.handleKeyboardNavigation(event)\n\t\t\t})\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (\n\t\t\t(changedProps.has('dateFrom') || changedProps.has('dateTo')) &&\n\t\t\t(this.dateFrom?.value !== undefined || this.dateTo?.value !== undefined)\n\t\t) {\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\t}\n\n\tprivate initPresetRanges() {\n\t\tconst format = this.getDateFormat()\n\t\tconst cacheKey = `${this.type}-${format}-${JSON.stringify(this.customPresets)}`\n\t\t\n\t\t// Check memoization cache\n\t\tif (this.memoizedPresets.has(cacheKey)) {\n\t\t\tconst cached = this.memoizedPresets.get(cacheKey)!\n\t\t\tthis.presetCategories = cached\n\t\t\tthis.presetRanges = []\n\t\t\tcached.forEach(category => {\n\t\t\t\tthis.presetRanges.push(...category.presets)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Generate preset categories\n\t\tthis.presetCategories = generatePresetCategories(format, this.type === 'datetime-local')\n\n\t\t// Flatten presets for other methods that expect a flat list\n\t\tthis.presetRanges = []\n\t\tthis.presetCategories.forEach(category => {\n\t\t\tthis.presetRanges.push(...category.presets)\n\t\t})\n\n\t\t// Add custom presets if provided\n\t\tif (this.customPresets && this.customPresets.length > 0) {\n\t\t\tconst customCategory: PresetCategory = {\n\t\t\t\tname: 'Custom',\n\t\t\t\tpresets: this.customPresets.map(preset => ({\n\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\trange: {\n\t\t\t\t\t\tdateFrom: preset.dateFrom,\n\t\t\t\t\t\tdateTo: preset.dateTo,\n\t\t\t\t\t},\n\t\t\t\t\tstep: 'day' as const,\n\t\t\t\t})),\n\t\t\t}\n\n\t\t\tthis.presetCategories.push(customCategory)\n\t\t\tthis.presetRanges.push(...customCategory.presets)\n\t\t}\n\t\t\n\t\t// Cache the result\n\t\tthis.memoizedPresets.set(cacheKey, [...this.presetCategories])\n\t}\n\n\tprivate getDateFormat(): string {\n\t\treturn this.format || (this.type === 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DDTHH:mm')\n\t}\n\n\t/**\n\t * Creates a concise display format for the selected date range\n\t */\n\tprivate updateSelectedDateRange() {\n\t\t// Find matching preset\n\t\tconst preset = this.presetRanges.find(\n\t\t\tp => p.range.dateFrom === this.dateFrom.value && p.range.dateTo === this.dateTo.value,\n\t\t)\n\n\t\tif (preset) {\n\t\t\t// If matches a preset, just use the preset name\n\t\t\tthis.selectedDateRange = preset.label\n\t\t\tthis.activePreset = preset.label\n\t\t\treturn\n\t\t}\n\n\t\t// If we didn't find a preset match, check if we should update the active preset\n\t\tthis.checkAndUpdateActivePreset(this.dateFrom.value, this.dateTo.value)\n\n\t\t// Custom date range - create concise format\n\t\tthis.activePreset = null\n\t\tthis.selectedDateRange = formatDateRange(this.dateFrom.value, this.dateTo.value, this.type, this.placeholder)\n\t}\n\n\tprivate setDateRange(dateFrom: string, dateTo: string) {\n\t\tthis.dateFrom.value = dateFrom\n\t\tthis.dateTo.value = dateTo\n\t\tthis.updateSelectedDateRange()\n\n\t\t// Announce change to screen readers\n\t\tthis.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`)\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<{ dateFrom: string; dateTo: string }>('change', {\n\t\t\t\tdetail: { dateFrom, dateTo },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate toggleDropdown(e: MouseEvent) {\n\t\te.stopPropagation()\n\t\tif (this.disabled || this.step !== undefined) return\n\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown(e)\n\t\t}\n\t}\n\n\tprivate _overlaySubscription: Subscription | null = null\n\n\tprivate openDropdown(e?: MouseEvent) {\n\t\tif (this.disabled || this.step !== undefined) return\n\n\t\tthis.dispatchEvent(new CustomEvent('beforeopen', { bubbles: true, composed: true }))\n\t\tthis.isOpen = true\n\n\t\t// Inline-template overlay. Inner handlers dispatch a 'close' event\n\t\t// from the dialog itself (via the module-scoped `dispatchClose`),\n\t\t// which `show()` translates into observable completion + an emission.\n\t\t// Layout (centered vs sheet) is chosen by the overlay system based on\n\t\t// viewport / anchor presence.\n\t\tconst dialogContent = html`\n\t\t\t<schmancy-date-range-dialog\n\t\t\t\t.type=\"${this.type}\"\n\t\t\t\t.dateFrom=\"${this.dateFrom}\"\n\t\t\t\t.dateTo=\"${this.dateTo}\"\n\t\t\t\t.minDate=\"${this.minDate}\"\n\t\t\t\t.maxDate=\"${this.maxDate}\"\n\t\t\t\t.activePreset=\"${this.activePreset}\"\n\t\t\t\t.presetCategories=\"${this.presetCategories}\"\n\t\t\t\t@preset-select=\"${(ev: CustomEvent) => {\n\t\t\t\t\tthis.activePreset = ev.detail.preset.label\n\t\t\t\t\tthis.setDateRange(ev.detail.preset.range.dateFrom, ev.detail.preset.range.dateTo)\n\t\t\t\t\tdispatchClose(ev.currentTarget)\n\t\t\t\t}}\"\n\t\t\t\t@date-change=\"${() => this.updateSelectedDateRange()}\"\n\t\t\t\t@apply-dates=\"${(ev: CustomEvent) => {\n\t\t\t\t\tconst { dateFrom, dateTo, swapIfNeeded } = ev.detail\n\t\t\t\t\tif (swapIfNeeded) {\n\t\t\t\t\t\tthis.setDateRange(dateTo, dateFrom)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setDateRange(dateFrom, dateTo)\n\t\t\t\t\t}\n\t\t\t\t\tdispatchClose(ev.currentTarget)\n\t\t\t\t}}\"\n\t\t\t\t@announce=\"${(ev: CustomEvent) => this.announceToScreenReader(ev.detail.message)}\"\n\t\t\t></schmancy-date-range-dialog>\n\t\t`\n\n\t\tthis._overlaySubscription?.unsubscribe()\n\t\tthis._overlaySubscription = show(dialogContent, { anchor: e })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tthis.isOpen = false\n\t\t\t\t\tthis._overlaySubscription = null\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis._overlaySubscription?.unsubscribe()\n\t\tthis._overlaySubscription = null\n\t\tthis.isOpen = false\n\t}\n\n\t/**\n\t * Shifts the date range based on the step property\n\t */\n\tprivate shiftDateRange(direction: number, e: Event) {\n\t\te.stopPropagation()\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) return\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return\n\n\t\tconst format = this.getDateFormat()\n\t\tconst dir = direction > 0 ? 1 : -1\n\t\tconst daysDiff = toDate.diff(fromDate, 'day') + 1\n\n\t\t// Determine shift amount and unit\n\t\tlet amount: number\n\t\tlet unit: dayjs.ManipulateType\n\n\t\tif (this.step !== undefined) {\n\t\t\tif (typeof this.step === 'number') {\n\t\t\t\tamount = dir * this.step\n\t\t\t\tunit = 'day'\n\t\t\t} else if (this.step === 'day') {\n\t\t\t\tamount = dir * daysDiff\n\t\t\t\tunit = 'day'\n\t\t\t} else {\n\t\t\t\tamount = dir\n\t\t\t\tunit = this.step\n\t\t\t}\n\t\t} else {\n\t\t\t// Auto-detect based on date range\n\t\t\tconst rangeType = detectDateRangeType(fromDate, toDate)\n\t\t\tif (rangeType.isFullYear) {\n\t\t\t\tamount = dir\n\t\t\t\tunit = 'year'\n\t\t\t} else if (rangeType.isFullMonth) {\n\t\t\t\tamount = dir\n\t\t\t\tunit = 'month'\n\t\t\t} else if (rangeType.isFullWeek) {\n\t\t\t\tamount = dir\n\t\t\t\tunit = 'week'\n\t\t\t} else {\n\t\t\t\tamount = dir * daysDiff\n\t\t\t\tunit = 'day'\n\t\t\t}\n\t\t}\n\n\t\tconst newFromDate = fromDate.add(amount, unit)\n\t\tconst newToDate = toDate.add(amount, unit)\n\n\t\t// Validate against min/max dates\n\t\tif (this.minDate && newFromDate.isBefore(dayjs(this.minDate))) return\n\t\tif (this.maxDate && newToDate.isAfter(dayjs(this.maxDate))) return\n\n\t\t// Update the date range\n\t\tthis.setDateRange(newFromDate.format(format), newToDate.format(format))\n\t\tthis.checkAndUpdateActivePreset(newFromDate.format(format), newToDate.format(format))\n\t}\n\n\t/**\n\t * Handle keyboard navigation for accessibility\n\t */\n\tprivate handleKeyboardNavigation(event: KeyboardEvent) {\n\t\tconst key = event.key\n\t\t\n\t\t// Handle date navigation keys\n\t\tif (this.dateFrom.value && this.dateTo.value && !this.disabled) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'PageUp':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(-1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'PageDown':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'Home':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+Home: Jump to start of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst monthStart = currentFrom.startOf('month')\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthStart.format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthStart.add(daysDiff, 'day').format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'End':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+End: Jump to end of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\tconst monthEnd = currentTo.endOf('month')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthEnd.subtract(daysDiff, 'day').format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthEnd.format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date range matches any predefined preset,\n\t * and updates the activePreset accordingly\n\t */\n\tprivate checkAndUpdateActivePreset(fromDate: string, toDate: string) {\n\t\t// Find a preset that matches the current date range\n\t\tconst matchingPreset = this.presetRanges.find(\n\t\t\tpreset => preset.range.dateFrom === fromDate && preset.range.dateTo === toDate,\n\t\t)\n\n\t\tif (matchingPreset) {\n\t\t\tthis.activePreset = matchingPreset.label\n\t\t} else {\n\t\t\tthis.activePreset = null\n\t\t}\n\t}\n\n\t/**\n\t * Check if we can navigate backward\n\t */\n\tprivate canNavigateBackward(): boolean {\n\t\tif (!this.dateFrom.value || !this.minDate) return true\n\t\t\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst minDate = dayjs(this.minDate)\n\t\t\n\t\t// If current start date is already at or before min date, can't go back\n\t\treturn fromDate.isAfter(minDate)\n\t}\n\n\t/**\n\t * Check if we can navigate forward\n\t */\n\tprivate canNavigateForward(): boolean {\n\t\tif (!this.dateTo.value || !this.maxDate) return true\n\t\t\n\t\tconst toDate = dayjs(this.dateTo.value)\n\t\tconst maxDate = dayjs(this.maxDate)\n\t\t\n\t\t// If current end date is already at or after max date, can't go forward\n\t\treturn toDate.isBefore(maxDate)\n\t}\n\n\t/**\n\t * Announce messages to screen readers\n\t */\n\tprivate announceToScreenReader(message: string) {\n\t\tthis.announceMessage = message\n\t\t// Clear the message after announcement\n\t\ttimer(100)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.announceMessage = ''\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}\">\n\t\t\t\t<!-- Screen reader announcements -->\n\t\t\t\t<div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t\t${this.announceMessage}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Collapsed: icon-only on mobile when collapse=true -->\n\t\t\t\t<schmancy-icon-button\n\t\t\t\t\tclass=\"${this.collapse ? 'lg:hidden' : 'hidden'}\"\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t@click=${(e: MouseEvent) => this.toggleDropdown(e)}\n\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t>\n\t\t\t\t\tdate_range\n\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t<!-- Full UI: always visible when collapse=false, or lg+ when collapse=true -->\n\t\t\t\t<section @click=${(event: Event) => event.stopPropagation()} class=\"${this.collapse ? 'hidden lg:flex' : 'flex'}\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(-1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value || !this.canNavigateBackward()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_left\n\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\taria-readonly=\"${this.step !== undefined}\"\n\t\t\t\t\t\t\t@click=${(e: MouseEvent) => this.toggleDropdown(e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t\t\tstyle=\"${this.step !== undefined ? 'cursor: default;' : ''}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t</schmancy-button>\n\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Next ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value || !this.canNavigateForward()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_right\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t`\n\t}\n}"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-DvAYa-F7.cjs`),t=require(`./decorate-DpFmy0nm.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.a(){constructor(...e){super(...e),this.type=`date`,this.dateFrom={label:`From`,value:``},this.dateTo={label:`To`,value:``},this.compact=!1,this.autoCorrect=!0,this.minGap=0,this.defaultGap=1,this.allowSameDate=!1,this.validationState={dateFromError:``,dateToError:``,rangeError:``}}connectedCallback(){super.connectedCallback(),this.dateFrom.value||this.dateTo.value?this.validateAndCorrect():this.setSmartDefaults()}setSmartDefaults(){let e=new Date,t=new Date(e);t.setDate(t.getDate()+this.defaultGap);let n=this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`;this.dateFrom={...this.dateFrom,value:this.formatDate(e,n)},this.dateTo={...this.dateTo,value:this.formatDate(t,n)}}formatDate(e,t){let n=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,`0`),i=String(e.getDate()).padStart(2,`0`);return t===`YYYY-MM-DD`?`${n}-${r}-${i}`:`${n}-${r}-${i}T${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}`}parseDate(e){if(!e)return null;let t=new Date(e);return isNaN(t.getTime())?null:t}getDaysBetween(e,t){return Math.floor((t.getTime()-e.getTime())/864e5)}handleDateFromChange(e){let t=e.target.value;if(this.dateFrom={...this.dateFrom,value:t},this.validationState={...this.validationState,dateFromError:``,rangeError:``},!t)return this.required?(this.validationState={...this.validationState,dateFromError:`Start date is required`},void(this.error=!0)):void this.emitChange();this.validateAndCorrect(`from`)}handleDateToChange(e){let t=e.target.value;if(this.dateTo={...this.dateTo,value:t},this.validationState={...this.validationState,dateToError:``,rangeError:``},!t)return this.required?(this.validationState={...this.validationState,dateToError:`End date is required`},void(this.error=!0)):void this.emitChange();this.validateAndCorrect(`to`)}validateAndCorrect(e){let t=this.parseDate(this.dateFrom.value),n=this.parseDate(this.dateTo.value),r=!1,i={dateFromError:``,dateToError:``,rangeError:``};if(this.dateFrom.value&&!t&&(i.dateFromError=`Invalid date format`,r=!0),this.dateTo.value&&!n&&(i.dateToError=`Invalid date format`,r=!0),t&&n){let a=this.getDaysBetween(t,n);if(t>n){if(this.autoCorrect){if(e===`from`){let e=new Date(t);e.setDate(e.getDate()+this.defaultGap),this.dateTo={...this.dateTo,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}else if(e===`to`){let e=new Date(n);e.setDate(e.getDate()-this.defaultGap),this.dateFrom={...this.dateFrom,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}else{let e=this.dateFrom.value;this.dateFrom={...this.dateFrom,value:this.dateTo.value},this.dateTo={...this.dateTo,value:e}}this.validateAndCorrect();return}i.rangeError=`End date must be after start date`,r=!0}if(!this.allowSameDate&&a===0){if(this.autoCorrect&&e){if(e===`from`){let e=new Date(t);e.setDate(e.getDate()+this.defaultGap),this.dateTo={...this.dateTo,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}else{let e=new Date(n);e.setDate(e.getDate()-this.defaultGap),this.dateFrom={...this.dateFrom,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}this.validateAndCorrect();return}i.rangeError=`Start and end dates cannot be the same`,r=!0}if(this.minGap>0&&a<this.minGap){if(this.autoCorrect&&e){if(e===`from`){let e=new Date(t);e.setDate(e.getDate()+this.minGap),this.dateTo={...this.dateTo,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}else{let e=new Date(n);e.setDate(e.getDate()-this.minGap),this.dateFrom={...this.dateFrom,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}this.validateAndCorrect();return}i.rangeError=`Minimum ${this.minGap} day${this.minGap>1?`s`:``} required between dates`,r=!0}if(this.maxGap!==void 0&&a>this.maxGap){if(this.autoCorrect&&e){if(e===`from`){let e=new Date(t);e.setDate(e.getDate()+this.maxGap),this.dateTo={...this.dateTo,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}else{let e=new Date(n);e.setDate(e.getDate()-this.maxGap),this.dateFrom={...this.dateFrom,value:this.formatDate(e,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}}this.validateAndCorrect();return}i.rangeError=`Maximum ${this.maxGap} day${this.maxGap>1?`s`:``} allowed between dates`,r=!0}if(this.minDate){let e=this.parseDate(this.minDate);e&&t<e&&(i.dateFromError=`Date is before minimum allowed date`,r=!0)}if(this.maxDate){let e=this.parseDate(this.maxDate);e&&n>e&&(i.dateToError=`Date is after maximum allowed date`,r=!0)}}this.validationState=i,this.error=r,this.emitChange()}getComputedMinDateTo(){if(!this.dateFrom.value)return this.minDate;let e=this.parseDate(this.dateFrom.value);if(!e)return this.minDate;let t=new Date(e);if(this.allowSameDate||t.setDate(t.getDate()+1),this.minGap>0&&t.setDate(e.getDate()+this.minGap),this.minDate){let e=this.parseDate(this.minDate);if(e&&e>t)return this.minDate}return this.formatDate(t,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}getComputedMaxDateFrom(){if(!this.dateTo.value)return this.maxDate;let e=this.parseDate(this.dateTo.value);if(!e)return this.maxDate;let t=new Date(e);if(this.allowSameDate||t.setDate(t.getDate()-1),this.minGap>0&&t.setDate(e.getDate()-this.minGap),this.maxDate){let e=this.parseDate(this.maxDate);if(e&&e<t)return this.maxDate}return this.formatDate(t,this.type===`datetime-local`?`YYYY-MM-DDTHH:mm`:`YYYY-MM-DD`)}emitChange(){let e=!(this.error||!this.dateFrom.value||!this.dateTo.value||this.validationState.dateFromError||this.validationState.dateToError||this.validationState.rangeError);this.dispatchEvent(new CustomEvent(`change`,{detail:{dateFrom:this.dateFrom.value,dateTo:this.dateTo.value,isValid:e},bubbles:!0,composed:!0}))}render(){let e=this.validationState.dateFromError||this.validationState.rangeError,t=this.validationState.dateToError||this.validationState.rangeError;return r.html`
|
|
2
|
-
<div class="w-full">
|
|
3
|
-
<div class="flex items-start gap-2 w-full">
|
|
4
|
-
<div class="flex-1">
|
|
5
|
-
<schmancy-input
|
|
6
|
-
.type=${this.type}
|
|
7
|
-
.label=${this.dateFrom.label}
|
|
8
|
-
.value=${this.dateFrom.value}
|
|
9
|
-
.min=${this.minDate}
|
|
10
|
-
.max=${this.getComputedMaxDateFrom()}
|
|
11
|
-
@change=${this.handleDateFromChange}
|
|
12
|
-
.error=${!!e}
|
|
13
|
-
.hint=${e||``}
|
|
14
|
-
.required=${this.required}
|
|
15
|
-
.disabled=${this.disabled}
|
|
16
|
-
size=${this.compact?`sm`:`md`}
|
|
17
|
-
></schmancy-input>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div class="flex items-center justify-center ${this.compact?`pt-8`:`pt-10`} px-1">
|
|
21
|
-
<schmancy-icon class="text-surface-onVariant opacity-50">
|
|
22
|
-
arrow_forward
|
|
23
|
-
</schmancy-icon>
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
<div class="flex-1">
|
|
27
|
-
<schmancy-input
|
|
28
|
-
.type=${this.type}
|
|
29
|
-
.label=${this.dateTo.label}
|
|
30
|
-
.value=${this.dateTo.value}
|
|
31
|
-
.min=${this.getComputedMinDateTo()}
|
|
32
|
-
.max=${this.maxDate}
|
|
33
|
-
@change=${this.handleDateToChange}
|
|
34
|
-
.error=${!!t}
|
|
35
|
-
.hint=${t||``}
|
|
36
|
-
.required=${this.required}
|
|
37
|
-
.disabled=${this.disabled}
|
|
38
|
-
size=${this.compact?`sm`:`md`}
|
|
39
|
-
></schmancy-input>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
`}};t.t([(0,n.property)({type:String})],i.prototype,`type`,void 0),t.t([(0,n.property)({type:Object})],i.prototype,`dateFrom`,void 0),t.t([(0,n.property)({type:Object})],i.prototype,`dateTo`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`minDate`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`maxDate`,void 0),t.t([(0,n.property)({type:Boolean})],i.prototype,`compact`,void 0),t.t([(0,n.property)({type:Boolean})],i.prototype,`autoCorrect`,void 0),t.t([(0,n.property)({type:Number})],i.prototype,`minGap`,void 0),t.t([(0,n.property)({type:Number})],i.prototype,`maxGap`,void 0),t.t([(0,n.property)({type:Number})],i.prototype,`defaultGap`,void 0),t.t([(0,n.property)({type:Boolean})],i.prototype,`allowSameDate`,void 0),t.t([(0,n.state)()],i.prototype,`validationState`,void 0);var a=i=t.t([(0,n.customElement)(`schmancy-date-range-inline`)],i);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
function e(e, t, n, r) {
|
|
2
|
-
var i, a = arguments.length, o = a < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r;
|
|
3
|
-
if (typeof Reflect == "object" && typeof Reflect.decorate == "function") o = Reflect.decorate(e, t, n, r);
|
|
4
|
-
else for (var s = e.length - 1; s >= 0; s--) (i = e[s]) && (o = (a < 3 ? i(o) : a > 3 ? i(t, n, o) : i(t, n)) || o);
|
|
5
|
-
return a > 3 && o && Object.defineProperty(t, n, o), o;
|
|
6
|
-
}
|
|
7
|
-
export { e as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
|
package/dist/float-CKmd-0-t.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-DpFmy0nm.cjs`),t=require(`./window-CSKvv4Ts.cjs`);let n=require(`lit/decorators.js`);var r=class extends t.t{},i=r=e.t([(0,n.customElement)(`schmancy-float`)],r);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
|
package/dist/form-CFvwnfuJ.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./decorate-23nYs4Le.js";
|
|
2
|
-
import { customElement as t } from "lit/decorators.js";
|
|
3
|
-
var n = class extends HTMLElement {
|
|
4
|
-
constructor(...e) {
|
|
5
|
-
super(...e), this._form = null, this._wrapped = !1, this._internals = (() => {
|
|
6
|
-
try {
|
|
7
|
-
return this.attachInternals();
|
|
8
|
-
} catch {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
})(), this._onSubmit = (e) => {
|
|
12
|
-
if (e.preventDefault(), e.stopPropagation(), this.novalidate || this._form.reportValidity()) {
|
|
13
|
-
this._internals?.states.delete("invalid"), this._internals?.states.add("submitting");
|
|
14
|
-
try {
|
|
15
|
-
this.dispatchEvent(new CustomEvent("submit", { detail: new FormData(this._form) }));
|
|
16
|
-
} finally {
|
|
17
|
-
this._internals?.states.delete("submitting");
|
|
18
|
-
}
|
|
19
|
-
} else this._internals?.states.add("invalid");
|
|
20
|
-
}, this._onReset = (e) => {
|
|
21
|
-
e.stopPropagation(), this._internals?.states.delete("invalid"), this.dispatchEvent(new CustomEvent("reset"));
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
static {
|
|
25
|
-
this.tagName = "schmancy-form";
|
|
26
|
-
}
|
|
27
|
-
get novalidate() {
|
|
28
|
-
return this.hasAttribute("novalidate");
|
|
29
|
-
}
|
|
30
|
-
set novalidate(e) {
|
|
31
|
-
e ? this.setAttribute("novalidate", "") : this.removeAttribute("novalidate");
|
|
32
|
-
}
|
|
33
|
-
connectedCallback() {
|
|
34
|
-
this.ensureForm();
|
|
35
|
-
}
|
|
36
|
-
disconnectedCallback() {
|
|
37
|
-
this._form && (this._form.removeEventListener("submit", this._onSubmit), this._form.removeEventListener("reset", this._onReset));
|
|
38
|
-
}
|
|
39
|
-
ensureForm() {
|
|
40
|
-
if (this._wrapped) return;
|
|
41
|
-
let e = Array.from(this.children).find((e) => e instanceof HTMLFormElement), t = e ?? document.createElement("form");
|
|
42
|
-
if (t.noValidate = !0, !e) {
|
|
43
|
-
let e = Array.from(this.childNodes);
|
|
44
|
-
for (let n of e) t.appendChild(n);
|
|
45
|
-
this.appendChild(t);
|
|
46
|
-
}
|
|
47
|
-
t.addEventListener("submit", this._onSubmit), t.addEventListener("reset", this._onReset), this._form = t, this._wrapped = !0;
|
|
48
|
-
}
|
|
49
|
-
submit() {
|
|
50
|
-
return !!this._form && !(!this.novalidate && !this._form.reportValidity()) && (this._form.requestSubmit(), !0);
|
|
51
|
-
}
|
|
52
|
-
reset() {
|
|
53
|
-
this._form?.reset();
|
|
54
|
-
}
|
|
55
|
-
reportValidity() {
|
|
56
|
-
return this._form?.reportValidity() ?? !0;
|
|
57
|
-
}
|
|
58
|
-
checkValidity() {
|
|
59
|
-
return this._form?.checkValidity() ?? !0;
|
|
60
|
-
}
|
|
61
|
-
getFormData() {
|
|
62
|
-
return this._form ? new FormData(this._form) : new FormData();
|
|
63
|
-
}
|
|
64
|
-
get form() {
|
|
65
|
-
return this._form;
|
|
66
|
-
}
|
|
67
|
-
}, r = n = e([t("schmancy-form")], n);
|
|
68
|
-
export { r as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-CFvwnfuJ.js","names":[],"sources":["../src/form/form.ts"],"sourcesContent":["import { customElement } from 'lit/decorators.js'\n\n/**\n * A thin ergonomic wrapper around a native `<form>` element. Its children are\n * reparented into a `<form>` element in light DOM on connection, so:\n *\n * - Form-associated custom elements (FACE) resolve their `internals.form`\n * correctly via native DOM ancestry.\n * - `new FormData(form)` collects values from every FACE + native control\n * without any manual walking.\n * - `form.reset()` triggers `formResetCallback()` on every FACE.\n * - `form.reportValidity()` runs native validation UI.\n * - `<button type=\"submit\">` and `<schmancy-button type=\"submit\">` both\n * submit the form via the native submitter pipeline.\n *\n * This component exists only to translate the native `submit` / `reset`\n * events into the Schmancy event shape (`detail: FormData`). All heavy\n * lifting is the platform's.\n *\n * @element schmancy-form\n * @fires submit - `CustomEvent<FormData>` emitted when the form is submitted.\n * @fires reset - Emitted after the underlying form resets.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends HTMLElement {\n\tpublic static readonly tagName: string = 'schmancy-form'\n\n\tprivate _form: HTMLFormElement | null = null\n\tprivate _wrapped = false\n\n\t/** ElementInternals for `:state(invalid)` / `:state(submitting)` broadcasting. */\n\tprivate readonly _internals: ElementInternals | undefined = (() => {\n\t\ttry { return this.attachInternals() } catch { return undefined }\n\t})()\n\n\t/** Skip built-in constraint validation on submit. Mirrors `<form novalidate>`. */\n\tget novalidate(): boolean {\n\t\treturn this.hasAttribute('novalidate')\n\t}\n\tset novalidate(value: boolean) {\n\t\tif (value) this.setAttribute('novalidate', '')\n\t\telse this.removeAttribute('novalidate')\n\t}\n\n\tconnectedCallback(): void {\n\t\tthis.ensureForm()\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tif (this._form) {\n\t\t\tthis._form.removeEventListener('submit', this._onSubmit)\n\t\t\tthis._form.removeEventListener('reset', this._onReset)\n\t\t}\n\t}\n\n\t/**\n\t * On first connection, create the internal light-DOM `<form>` and move\n\t * existing children into it. Re-entry is a no-op.\n\t */\n\tprivate ensureForm(): void {\n\t\tif (this._wrapped) return\n\n\t\t// Respect an explicit consumer-supplied wrapping <form>.\n\t\tconst existing = Array.from(this.children).find(c => c instanceof HTMLFormElement) as\n\t\t\t| HTMLFormElement\n\t\t\t| undefined\n\n\t\tconst form = existing ?? document.createElement('form')\n\t\tform.noValidate = true\n\n\t\tif (!existing) {\n\t\t\t// Snapshot children because appending mutates `this.childNodes`.\n\t\t\tconst children = Array.from(this.childNodes)\n\t\t\tfor (const node of children) form.appendChild(node)\n\t\t\tthis.appendChild(form)\n\t\t}\n\n\t\tform.addEventListener('submit', this._onSubmit)\n\t\tform.addEventListener('reset', this._onReset)\n\n\t\tthis._form = form\n\t\tthis._wrapped = true\n\t}\n\n\tprivate _onSubmit = (e: SubmitEvent): void => {\n\t\t// Prevent the default navigation AND stop the native submit from\n\t\t// bubbling past this wrapper — otherwise consumers listening for\n\t\t// `submit` on <schmancy-form> would see the native event plus our\n\t\t// CustomEvent (two fires per submission).\n\t\te.preventDefault()\n\t\te.stopPropagation()\n\t\tif (!this.novalidate && !this._form!.reportValidity()) {\n\t\t\tthis._internals?.states.add('invalid')\n\t\t\treturn\n\t\t}\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis._internals?.states.add('submitting')\n\t\ttry {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('submit', {\n\t\t\t\t\tdetail: new FormData(this._form!),\n\t\t\t\t}),\n\t\t\t)\n\t\t} finally {\n\t\t\tthis._internals?.states.delete('submitting')\n\t\t}\n\t}\n\n\tprivate _onReset = (e: Event): void => {\n\t\te.stopPropagation()\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\t/** Programmatically submit via the native submitter pipeline. */\n\tpublic submit(): boolean {\n\t\tif (!this._form) return false\n\t\tif (!this.novalidate && !this._form.reportValidity()) return false\n\t\tthis._form.requestSubmit()\n\t\treturn true\n\t}\n\n\t/** Programmatically reset via native `form.reset()`. */\n\tpublic reset(): void {\n\t\tthis._form?.reset()\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\treturn this._form?.reportValidity() ?? true\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\treturn this._form?.checkValidity() ?? true\n\t}\n\n\t/** Snapshot of current form values. Equivalent to `new FormData(this.form)`. */\n\tpublic getFormData(): FormData {\n\t\treturn this._form ? new FormData(this._form) : new FormData()\n\t}\n\n\t/** The underlying `<form>` element (escape hatch for advanced integration). */\n\tpublic get form(): HTMLFormElement | null {\n\t\treturn this._form\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n\n// === Retained type surface ===\n// These interfaces were part of the old collection-based engine. They're kept\n// exported because downstream code may still import them as documentation.\n// The new implementation no longer uses them internally.\n\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\tcheckValidity?: () => boolean\n}\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n"],"mappings":";;AAwBe,IAAA,IAAA,cAA2B,YAAA;CAAA,YAAA,GAAA,GAAA;AAAA,QAAA,GAAA,EAAA,EAAA,KAAA,QAGD,MAAA,KAAA,WAAA,CACrB,GAAA,KAAA,oBAAA;AAIlB,OAAA;AAAM,WAAO,KAAK,iBAAA;WAAA;AAA4B;;MAAA,EAAA,KAAA,aAoD1B,MAAA;AAOpB,OAFA,EAAE,gBAAA,EACF,EAAE,iBAAA,EACG,KAAK,cAAe,KAAK,MAAO,gBAAA,EAArC;AAIA,SAAK,YAAY,OAAO,OAAO,UAAA,EAC/B,KAAK,YAAY,OAAO,IAAI,aAAA;AAC5B,QAAA;AACC,UAAK,cACJ,IAAI,YAAY,UAAU,EACzB,QAAQ,IAAI,SAAS,KAAK,MAAA,EAAA,CAAA,CAAA;cAAA;AAI5B,UAAK,YAAY,OAAO,OAAO,aAAA;;SAZ/B,MAAK,YAAY,OAAO,IAAI,UAAA;KAAA,KAAA,YAgBV,MAAA;AACnB,KAAE,iBAAA,EACF,KAAK,YAAY,OAAO,OAAO,UAAA,EAC/B,KAAK,cAAc,IAAI,YAAY,QAAA,CAAA;;;CAAA;AAAA,OAAA,UAtFK;;CAWzC,IAAA,aAAI;AACH,SAAO,KAAK,aAAa,aAAA;;CAE1B,IAAA,WAAe,GAAA;AACV,MAAO,KAAK,aAAa,cAAc,GAAA,GACtC,KAAK,gBAAgB,aAAA;;CAG3B,oBAAA;AACC,OAAK,YAAA;;CAGN,uBAAA;AACK,OAAK,UACR,KAAK,MAAM,oBAAoB,UAAU,KAAK,UAAA,EAC9C,KAAK,MAAM,oBAAoB,SAAS,KAAK,SAAA;;CAQ/C,aAAA;AACC,MAAI,KAAK,SAAU;EAGnB,IAAM,IAAW,MAAM,KAAK,KAAK,SAAA,CAAU,MAAK,MAAK,aAAa,gBAAA,EAI5D,IAAO,KAAY,SAAS,cAAc,OAAA;AAGhD,MAFA,EAAK,aAAA,CAAa,GAAA,CAEb,GAAU;GAEd,IAAM,IAAW,MAAM,KAAK,KAAK,WAAA;AACjC,QAAK,IAAM,KAAQ,EAAU,GAAK,YAAY,EAAA;AAC9C,QAAK,YAAY,EAAA;;AAGlB,IAAK,iBAAiB,UAAU,KAAK,UAAA,EACrC,EAAK,iBAAiB,SAAS,KAAK,SAAA,EAEpC,KAAK,QAAQ,GACb,KAAK,WAAA,CAAW;;CAkCjB,SAAA;AACC,SAAA,CAAA,CAAK,KAAK,SAAA,EAAA,CACL,KAAK,cAAA,CAAe,KAAK,MAAM,gBAAA,MACpC,KAAK,MAAM,eAAA,EAAA,CACJ;;CAIR,QAAA;AACC,OAAK,OAAO,OAAA;;CAGb,iBAAA;AACC,SAAO,KAAK,OAAO,gBAAA,IAAA,CAAoB;;CAGxC,gBAAA;AACC,SAAO,KAAK,OAAO,eAAA,IAAA,CAAmB;;CAIvC,cAAA;AACC,SAAO,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAA,GAAS,IAAI,UAAA;;CAIpD,IAAA,OAAW;AACV,SAAO,KAAK;;GAAA,IAAA,IAAA,EAAA,CAvHb,EAAc,gBAAA,CAAA,EAAgB,EAAA;AAAA,SAAA,KAAA"}
|
package/dist/form-Ceijw1aA.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-DpFmy0nm.cjs`);let t=require(`lit/decorators.js`);var n=class extends HTMLElement{constructor(...e){super(...e),this._form=null,this._wrapped=!1,this._internals=(()=>{try{return this.attachInternals()}catch{return}})(),this._onSubmit=e=>{if(e.preventDefault(),e.stopPropagation(),this.novalidate||this._form.reportValidity()){this._internals?.states.delete(`invalid`),this._internals?.states.add(`submitting`);try{this.dispatchEvent(new CustomEvent(`submit`,{detail:new FormData(this._form)}))}finally{this._internals?.states.delete(`submitting`)}}else this._internals?.states.add(`invalid`)},this._onReset=e=>{e.stopPropagation(),this._internals?.states.delete(`invalid`),this.dispatchEvent(new CustomEvent(`reset`))}}static{this.tagName=`schmancy-form`}get novalidate(){return this.hasAttribute(`novalidate`)}set novalidate(e){e?this.setAttribute(`novalidate`,``):this.removeAttribute(`novalidate`)}connectedCallback(){this.ensureForm()}disconnectedCallback(){this._form&&(this._form.removeEventListener(`submit`,this._onSubmit),this._form.removeEventListener(`reset`,this._onReset))}ensureForm(){if(this._wrapped)return;let e=Array.from(this.children).find(e=>e instanceof HTMLFormElement),t=e??document.createElement(`form`);if(t.noValidate=!0,!e){let e=Array.from(this.childNodes);for(let n of e)t.appendChild(n);this.appendChild(t)}t.addEventListener(`submit`,this._onSubmit),t.addEventListener(`reset`,this._onReset),this._form=t,this._wrapped=!0}submit(){return!!this._form&&!(!this.novalidate&&!this._form.reportValidity())&&(this._form.requestSubmit(),!0)}reset(){this._form?.reset()}reportValidity(){return this._form?.reportValidity()??!0}checkValidity(){return this._form?.checkValidity()??!0}getFormData(){return this._form?new FormData(this._form):new FormData}get form(){return this._form}},r=n=e.t([(0,t.customElement)(`schmancy-form`)],n);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-Ceijw1aA.cjs","names":[],"sources":["../src/form/form.ts"],"sourcesContent":["import { customElement } from 'lit/decorators.js'\n\n/**\n * A thin ergonomic wrapper around a native `<form>` element. Its children are\n * reparented into a `<form>` element in light DOM on connection, so:\n *\n * - Form-associated custom elements (FACE) resolve their `internals.form`\n * correctly via native DOM ancestry.\n * - `new FormData(form)` collects values from every FACE + native control\n * without any manual walking.\n * - `form.reset()` triggers `formResetCallback()` on every FACE.\n * - `form.reportValidity()` runs native validation UI.\n * - `<button type=\"submit\">` and `<schmancy-button type=\"submit\">` both\n * submit the form via the native submitter pipeline.\n *\n * This component exists only to translate the native `submit` / `reset`\n * events into the Schmancy event shape (`detail: FormData`). All heavy\n * lifting is the platform's.\n *\n * @element schmancy-form\n * @fires submit - `CustomEvent<FormData>` emitted when the form is submitted.\n * @fires reset - Emitted after the underlying form resets.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends HTMLElement {\n\tpublic static readonly tagName: string = 'schmancy-form'\n\n\tprivate _form: HTMLFormElement | null = null\n\tprivate _wrapped = false\n\n\t/** ElementInternals for `:state(invalid)` / `:state(submitting)` broadcasting. */\n\tprivate readonly _internals: ElementInternals | undefined = (() => {\n\t\ttry { return this.attachInternals() } catch { return undefined }\n\t})()\n\n\t/** Skip built-in constraint validation on submit. Mirrors `<form novalidate>`. */\n\tget novalidate(): boolean {\n\t\treturn this.hasAttribute('novalidate')\n\t}\n\tset novalidate(value: boolean) {\n\t\tif (value) this.setAttribute('novalidate', '')\n\t\telse this.removeAttribute('novalidate')\n\t}\n\n\tconnectedCallback(): void {\n\t\tthis.ensureForm()\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tif (this._form) {\n\t\t\tthis._form.removeEventListener('submit', this._onSubmit)\n\t\t\tthis._form.removeEventListener('reset', this._onReset)\n\t\t}\n\t}\n\n\t/**\n\t * On first connection, create the internal light-DOM `<form>` and move\n\t * existing children into it. Re-entry is a no-op.\n\t */\n\tprivate ensureForm(): void {\n\t\tif (this._wrapped) return\n\n\t\t// Respect an explicit consumer-supplied wrapping <form>.\n\t\tconst existing = Array.from(this.children).find(c => c instanceof HTMLFormElement) as\n\t\t\t| HTMLFormElement\n\t\t\t| undefined\n\n\t\tconst form = existing ?? document.createElement('form')\n\t\tform.noValidate = true\n\n\t\tif (!existing) {\n\t\t\t// Snapshot children because appending mutates `this.childNodes`.\n\t\t\tconst children = Array.from(this.childNodes)\n\t\t\tfor (const node of children) form.appendChild(node)\n\t\t\tthis.appendChild(form)\n\t\t}\n\n\t\tform.addEventListener('submit', this._onSubmit)\n\t\tform.addEventListener('reset', this._onReset)\n\n\t\tthis._form = form\n\t\tthis._wrapped = true\n\t}\n\n\tprivate _onSubmit = (e: SubmitEvent): void => {\n\t\t// Prevent the default navigation AND stop the native submit from\n\t\t// bubbling past this wrapper — otherwise consumers listening for\n\t\t// `submit` on <schmancy-form> would see the native event plus our\n\t\t// CustomEvent (two fires per submission).\n\t\te.preventDefault()\n\t\te.stopPropagation()\n\t\tif (!this.novalidate && !this._form!.reportValidity()) {\n\t\t\tthis._internals?.states.add('invalid')\n\t\t\treturn\n\t\t}\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis._internals?.states.add('submitting')\n\t\ttry {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('submit', {\n\t\t\t\t\tdetail: new FormData(this._form!),\n\t\t\t\t}),\n\t\t\t)\n\t\t} finally {\n\t\t\tthis._internals?.states.delete('submitting')\n\t\t}\n\t}\n\n\tprivate _onReset = (e: Event): void => {\n\t\te.stopPropagation()\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\t/** Programmatically submit via the native submitter pipeline. */\n\tpublic submit(): boolean {\n\t\tif (!this._form) return false\n\t\tif (!this.novalidate && !this._form.reportValidity()) return false\n\t\tthis._form.requestSubmit()\n\t\treturn true\n\t}\n\n\t/** Programmatically reset via native `form.reset()`. */\n\tpublic reset(): void {\n\t\tthis._form?.reset()\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\treturn this._form?.reportValidity() ?? true\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\treturn this._form?.checkValidity() ?? true\n\t}\n\n\t/** Snapshot of current form values. Equivalent to `new FormData(this.form)`. */\n\tpublic getFormData(): FormData {\n\t\treturn this._form ? new FormData(this._form) : new FormData()\n\t}\n\n\t/** The underlying `<form>` element (escape hatch for advanced integration). */\n\tpublic get form(): HTMLFormElement | null {\n\t\treturn this._form\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n\n// === Retained type surface ===\n// These interfaces were part of the old collection-based engine. They're kept\n// exported because downstream code may still import them as documentation.\n// The new implementation no longer uses them internally.\n\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\tcheckValidity?: () => boolean\n}\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n"],"mappings":"8GAwBe,IAAA,EAAA,cAA2B,WAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,MAGD,KAAA,KAAA,SAAA,CACrB,EAAA,KAAA,gBAAA,CAIlB,GAAA,CAAM,OAAO,KAAK,iBAAA,MAAA,CAA4B,WAAA,CAAA,KAAA,UAoD1B,GAAA,CAOpB,GAFA,EAAE,gBAAA,CACF,EAAE,iBAAA,CACG,KAAK,YAAe,KAAK,MAAO,gBAAA,CAArC,CAIA,KAAK,YAAY,OAAO,OAAO,UAAA,CAC/B,KAAK,YAAY,OAAO,IAAI,aAAA,CAC5B,GAAA,CACC,KAAK,cACJ,IAAI,YAAY,SAAU,CACzB,OAAQ,IAAI,SAAS,KAAK,MAAA,CAAA,CAAA,CAAA,QAAA,CAI5B,KAAK,YAAY,OAAO,OAAO,aAAA,OAZ/B,KAAK,YAAY,OAAO,IAAI,UAAA,EAAA,KAAA,SAgBV,GAAA,CACnB,EAAE,iBAAA,CACF,KAAK,YAAY,OAAO,OAAO,UAAA,CAC/B,KAAK,cAAc,IAAI,YAAY,QAAA,CAAA,EAAA,OAAA,KAAA,QAtFK,gBAWzC,IAAA,YAAI,CACH,OAAO,KAAK,aAAa,aAAA,CAE1B,IAAA,WAAe,EAAA,CACV,EAAO,KAAK,aAAa,aAAc,GAAA,CACtC,KAAK,gBAAgB,aAAA,CAG3B,mBAAA,CACC,KAAK,YAAA,CAGN,sBAAA,CACK,KAAK,QACR,KAAK,MAAM,oBAAoB,SAAU,KAAK,UAAA,CAC9C,KAAK,MAAM,oBAAoB,QAAS,KAAK,SAAA,EAQ/C,YAAA,CACC,GAAI,KAAK,SAAU,OAGnB,IAAM,EAAW,MAAM,KAAK,KAAK,SAAA,CAAU,KAAK,GAAK,aAAa,gBAAA,CAI5D,EAAO,GAAY,SAAS,cAAc,OAAA,CAGhD,GAFA,EAAK,WAAA,CAAa,EAAA,CAEb,EAAU,CAEd,IAAM,EAAW,MAAM,KAAK,KAAK,WAAA,CACjC,IAAK,IAAM,KAAQ,EAAU,EAAK,YAAY,EAAA,CAC9C,KAAK,YAAY,EAAA,CAGlB,EAAK,iBAAiB,SAAU,KAAK,UAAA,CACrC,EAAK,iBAAiB,QAAS,KAAK,SAAA,CAEpC,KAAK,MAAQ,EACb,KAAK,SAAA,CAAW,EAkCjB,QAAA,CACC,MAAA,CAAA,CAAK,KAAK,OAAA,EAAA,CACL,KAAK,YAAA,CAAe,KAAK,MAAM,gBAAA,IACpC,KAAK,MAAM,eAAA,CAAA,CACJ,GAIR,OAAA,CACC,KAAK,OAAO,OAAA,CAGb,gBAAA,CACC,OAAO,KAAK,OAAO,gBAAA,EAAA,CAAoB,EAGxC,eAAA,CACC,OAAO,KAAK,OAAO,eAAA,EAAA,CAAmB,EAIvC,aAAA,CACC,OAAO,KAAK,MAAQ,IAAI,SAAS,KAAK,MAAA,CAAS,IAAI,SAIpD,IAAA,MAAW,CACV,OAAO,KAAK,QAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAvHC,gBAAA,CAAA,CAAgB,EAAA,CAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
|