@mhmo91/schmancy 0.10.23 → 0.10.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/{overlay.confirm-body-xfOh5Q28.js → overlay.confirm-body-DozUyDYx.js} +242 -242
- package/dist/agent/{overlay.confirm-body-xfOh5Q28.js.map → overlay.confirm-body-DozUyDYx.js.map} +1 -1
- package/dist/agent/schmancy.agent.js +5670 -2939
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/{area-Ddk7P5wD.js → area-1EG1LrkX.js} +1 -1
- package/dist/{area-Ddk7P5wD.js.map → area-1EG1LrkX.js.map} +1 -1
- package/dist/{area-Cbkt0NX4.cjs → area-DrVE5pXW.cjs} +1 -1
- package/dist/{area-Cbkt0NX4.cjs.map → area-DrVE5pXW.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-CfBFDSc3.cjs → autocomplete-6pdZxEab.cjs} +1 -1
- package/dist/{autocomplete-CfBFDSc3.cjs.map → autocomplete-6pdZxEab.cjs.map} +1 -1
- package/dist/{autocomplete-Ds3Q2cwR.js → autocomplete-nrIcCilw.js} +2 -2
- package/dist/{autocomplete-Ds3Q2cwR.js.map → autocomplete-nrIcCilw.js.map} +1 -1
- 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-BF5P6p_f.js → boat--fLgbDAE.js} +3 -3
- package/dist/{boat-BF5P6p_f.js.map → boat--fLgbDAE.js.map} +1 -1
- package/dist/{boat-BPN8HLzZ.cjs → boat-BIB-gPqy.cjs} +1 -1
- package/dist/{boat-BPN8HLzZ.cjs.map → boat-BIB-gPqy.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-C7ejPa-Q.cjs → busy-DVCIxBVf.cjs} +1 -1
- package/dist/{busy-C7ejPa-Q.cjs.map → busy-DVCIxBVf.cjs.map} +1 -1
- package/dist/{busy-BuACDJy6.js → busy-DshZcVZ4.js} +1 -1
- package/dist/{busy-BuACDJy6.js.map → busy-DshZcVZ4.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-C1IMGS6M.js → button-D9UJ7I6Z.js} +5 -5
- package/dist/{button-C1IMGS6M.js.map → button-D9UJ7I6Z.js.map} +1 -1
- package/dist/{button-CWNbPPq-.cjs → button-JrTMzwHY.cjs} +4 -4
- package/dist/{button-CWNbPPq-.cjs.map → button-JrTMzwHY.cjs.map} +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/{card-CgQwXO8L.js → card-BvCFuX3J.js} +2 -2
- package/dist/{card-CgQwXO8L.js.map → card-BvCFuX3J.js.map} +1 -1
- package/dist/{card-BIzaLuEg.cjs → card-CTotavhH.cjs} +1 -1
- package/dist/{card-BIzaLuEg.cjs.map → card-CTotavhH.cjs.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-BAqE3sTx.cjs → checkbox-By4fFmjt.cjs} +1 -1
- package/dist/{checkbox-BAqE3sTx.cjs.map → checkbox-By4fFmjt.cjs.map} +1 -1
- package/dist/{checkbox-BNdg57Om.js → checkbox-GPsdCUbs.js} +1 -1
- package/dist/{checkbox-BNdg57Om.js.map → checkbox-GPsdCUbs.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-DnqLaOb1.js → chips-27umqnat.js} +4 -4
- package/dist/{chips-DnqLaOb1.js.map → chips-27umqnat.js.map} +1 -1
- package/dist/{chips-DS3y4Lbn.cjs → chips-BZf9sGA8.cjs} +1 -1
- package/dist/{chips-DS3y4Lbn.cjs.map → chips-BZf9sGA8.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{cursor-glow-Cs2XLDB9.js → cursor-glow-Ah7VXSj7.js} +1 -1
- package/dist/{cursor-glow-Cs2XLDB9.js.map → cursor-glow-Ah7VXSj7.js.map} +1 -1
- package/dist/{cursor-glow-C8LgCxpI.cjs → cursor-glow-Bulq-38P.cjs} +1 -1
- package/dist/{cursor-glow-C8LgCxpI.cjs.map → cursor-glow-Bulq-38P.cjs.map} +1 -1
- package/dist/{date-range-VA1mi1N7.cjs → date-range-BJnLWCRF.cjs} +1 -1
- package/dist/{date-range-VA1mi1N7.cjs.map → date-range-BJnLWCRF.cjs.map} +1 -1
- package/dist/{date-range-inline-CAa0_4EI.cjs → date-range-inline-B6uKUliV.cjs} +1 -1
- package/dist/{date-range-inline-CAa0_4EI.cjs.map → date-range-inline-B6uKUliV.cjs.map} +1 -1
- package/dist/{date-range-inline-PeRt1iIF.js → date-range-inline-BNbbRfIA.js} +1 -1
- package/dist/{date-range-inline-PeRt1iIF.js.map → date-range-inline-BNbbRfIA.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/{date-range-CAqB-B0M.js → date-range-wDVHcr0u.js} +2 -2
- package/dist/{date-range-CAqB-B0M.js.map → date-range-wDVHcr0u.js.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +2 -2
- package/dist/{details-BpFjVclg.js → details-Ckxpwacj.js} +4 -4
- package/dist/{details-BpFjVclg.js.map → details-Ckxpwacj.js.map} +1 -1
- package/dist/{details-BnXbDpt7.cjs → details-DNrWIes6.cjs} +1 -1
- package/dist/{details-BnXbDpt7.cjs.map → details-DNrWIes6.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/directives-BBMqe8x3.js +4082 -0
- package/dist/directives-BBMqe8x3.js.map +1 -0
- package/dist/directives-F15SJZUR.cjs +348 -0
- package/dist/directives-F15SJZUR.cjs.map +1 -0
- package/dist/directives.cjs +1 -99
- package/dist/directives.js +6 -1363
- package/dist/discovery.cjs +1 -1
- package/dist/discovery.js +2 -61
- package/dist/discovery.service-COmbHaoI.js +61 -0
- package/dist/discovery.service-COmbHaoI.js.map +1 -0
- package/dist/discovery.service-CVDXO9rH.cjs +1 -0
- package/dist/discovery.service-CVDXO9rH.cjs.map +1 -0
- package/dist/{divider-D8cBBkdG.js → divider-BzcZGo4S.js} +1 -1
- package/dist/{divider-D8cBBkdG.js.map → divider-BzcZGo4S.js.map} +1 -1
- package/dist/{divider-B84lt1A3.cjs → divider-Cde33ivs.cjs} +1 -1
- package/dist/{divider-B84lt1A3.cjs.map → divider-Cde33ivs.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{expand-BJiKggfg.js → expand-DI144OzN.js} +3 -3
- package/dist/{expand-BJiKggfg.js.map → expand-DI144OzN.js.map} +1 -1
- package/dist/{expand-DK-O37-j.cjs → expand-Db4V0jj-.cjs} +1 -1
- package/dist/{expand-DK-O37-j.cjs.map → expand-Db4V0jj-.cjs.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{float-RWR6Q1Hh.cjs → float--RScf9BZ.cjs} +1 -1
- package/dist/{float-RWR6Q1Hh.cjs.map → float--RScf9BZ.cjs.map} +1 -1
- package/dist/{float-B4FDN40h.js → float-DIyzy1c2.js} +1 -1
- package/dist/{float-B4FDN40h.js.map → float-DIyzy1c2.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-ha3df3K7.cjs → form-DWNpOsIU.cjs} +1 -1
- package/dist/{form-ha3df3K7.cjs.map → form-DWNpOsIU.cjs.map} +1 -1
- package/dist/{form-B-Sm6u25.js → form-RtXH8UHQ.js} +8 -8
- package/dist/{form-B-Sm6u25.js.map → form-RtXH8UHQ.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +6 -6
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{hashContent-dJrI-9sc.js.map → hashContent-Dgmzc32o.js.map} +1 -1
- package/dist/{hashContent-Ck6laKlk.cjs.map → hashContent-Dh1VzIAb.cjs.map} +1 -1
- package/dist/icons-DXanGDZ_.js +52 -0
- package/dist/icons-DXanGDZ_.js.map +1 -0
- package/dist/icons-bNxlWLlk.cjs +24 -0
- package/dist/icons-bNxlWLlk.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-BXe1TPx1.cjs → iframe-B1XWRaLC.cjs} +1 -1
- package/dist/{iframe-BXe1TPx1.cjs.map → iframe-B1XWRaLC.cjs.map} +1 -1
- package/dist/{iframe-CByrVlZy.js → iframe-BlHK0cjy.js} +1 -1
- package/dist/{iframe-CByrVlZy.js.map → iframe-BlHK0cjy.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-BY9OCQWr.cjs → input-C-_XU9AX.cjs} +1 -1
- package/dist/{input-BY9OCQWr.cjs.map → input-C-_XU9AX.cjs.map} +1 -1
- package/dist/{input-Q0fm34Co.js → input-CiGa8Dkl.js} +1 -1
- package/dist/{input-Q0fm34Co.js.map → input-CiGa8Dkl.js.map} +1 -1
- package/dist/{input-chip-BwNf3GD0.cjs → input-chip-5aYnuRZ_.cjs} +1 -1
- package/dist/{input-chip-BwNf3GD0.cjs.map → input-chip-5aYnuRZ_.cjs.map} +1 -1
- package/dist/{input-chip-CytUirVS.js → input-chip-l--zCMGR.js} +1 -1
- package/dist/{input-chip-CytUirVS.js.map → input-chip-l--zCMGR.js.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/json.js.map +1 -1
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +1 -1
- package/dist/{layout-Dq2oeOTS.js → layout-DSAjo92m.js} +1 -1
- package/dist/{layout-Dq2oeOTS.js.map → layout-DSAjo92m.js.map} +1 -1
- package/dist/{layout-BbCIfIgo.cjs → layout-eXb9wjDh.cjs} +1 -1
- package/dist/{layout-BbCIfIgo.cjs.map → layout-eXb9wjDh.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-p2E0oVR0.cjs → lightbox-CfRDkeeb.cjs} +2 -2
- package/dist/{lightbox-p2E0oVR0.cjs.map → lightbox-CfRDkeeb.cjs.map} +1 -1
- package/dist/{lightbox-Ckvn5YNF.js → lightbox-D9oiu1Nv.js} +2 -2
- package/dist/{lightbox-Ckvn5YNF.js.map → lightbox-D9oiu1Nv.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CsrPVvmm.js → list-BOlRka4v.js} +1 -1
- package/dist/{list-CsrPVvmm.js.map → list-BOlRka4v.js.map} +1 -1
- package/dist/{list-r57UFHu3.cjs → list-CDJi3_Ut.cjs} +1 -1
- package/dist/{list-r57UFHu3.cjs.map → list-CDJi3_Ut.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{magnetic-Bgh7aHHI.cjs → magnetic-D-ph029G.cjs} +1 -1
- package/dist/{magnetic-Bgh7aHHI.cjs.map → magnetic-D-ph029G.cjs.map} +1 -1
- package/dist/{magnetic-DxvoEz8_.js → magnetic-mHXl54Z8.js} +1 -1
- package/dist/{magnetic-DxvoEz8_.js.map → magnetic-mHXl54Z8.js.map} +1 -1
- package/dist/{menu-DBuZiPyW.cjs → menu-CJaDL2cd.cjs} +1 -1
- package/dist/{menu-DBuZiPyW.cjs.map → menu-CJaDL2cd.cjs.map} +1 -1
- package/dist/{menu-Csm6Fg88.js → menu-XyrLmCi_.js} +2 -2
- package/dist/{menu-Csm6Fg88.js.map → menu-XyrLmCi_.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-CsYsIJOI.cjs +254 -0
- package/dist/mixins-CsYsIJOI.cjs.map +1 -0
- package/dist/mixins-DySzfmal.js +642 -0
- package/dist/mixins-DySzfmal.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 +5 -9
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +5 -11
- package/dist/navigation-rail.js.map +1 -1
- package/dist/{notification-CgTBiAdf.js → notification-CHrEY4u8.js} +2 -2
- package/dist/{notification-CgTBiAdf.js.map → notification-CHrEY4u8.js.map} +1 -1
- package/dist/{notification-58tkVys8.cjs → notification-DKp4tjaB.cjs} +1 -1
- package/dist/{notification-58tkVys8.cjs.map → notification-DKp4tjaB.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-Bicf6xpI.js → option-Vpy4UQ-D.js} +1 -1
- package/dist/{option-Bicf6xpI.js.map → option-Vpy4UQ-D.js.map} +1 -1
- package/dist/{option-61YE3gub.cjs → option-nRk4MuXH.cjs} +1 -1
- package/dist/{option-61YE3gub.cjs.map → option-nRk4MuXH.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-CpvmytrQ.cjs → overlay-HNrWZ4sB.cjs} +1 -1
- package/dist/{overlay-CpvmytrQ.cjs.map → overlay-HNrWZ4sB.cjs.map} +1 -1
- package/dist/{overlay-CAI2FAp7.js → overlay-jlkcrt8F.js} +5 -5
- package/dist/{overlay-CAI2FAp7.js.map → overlay-jlkcrt8F.js.map} +1 -1
- package/dist/{overlay-stack-Dk0xETTy.cjs.map → overlay-stack-Bdr9lOqi.cjs.map} +1 -1
- package/dist/{overlay-stack-BR4iYivO.js.map → overlay-stack-D2rgxQLh.js.map} +1 -1
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-QD-5cj3_.cjs → overlay.confirm-body-B8dFI3cj.cjs} +1 -1
- package/dist/{overlay.confirm-body-QD-5cj3_.cjs.map → overlay.confirm-body-B8dFI3cj.cjs.map} +1 -1
- package/dist/{overlay.confirm-body-Cq25CkTw.js → overlay.confirm-body-CYShkjI6.js} +1 -1
- package/dist/{overlay.confirm-body-Cq25CkTw.js.map → overlay.confirm-body-CYShkjI6.js.map} +1 -1
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-BG0bqPwJ.cjs → overlay.service-BTPn7Uv7.cjs} +1 -1
- package/dist/{overlay.service-BG0bqPwJ.cjs.map → overlay.service-BTPn7Uv7.cjs.map} +1 -1
- package/dist/{overlay.service-Bpjrhaxh.js → overlay.service-BqhhxVJp.js} +2 -2
- package/dist/{overlay.service-Bpjrhaxh.js.map → overlay.service-BqhhxVJp.js.map} +1 -1
- package/dist/{progress-Zqx-S9NZ.js → progress-8Bn88GK_.js} +1 -1
- package/dist/{progress-Zqx-S9NZ.js.map → progress-8Bn88GK_.js.map} +1 -1
- package/dist/{progress-D8XZJVl5.cjs → progress-CAp_4jtq.cjs} +1 -1
- package/dist/{progress-D8XZJVl5.cjs.map → progress-CAp_4jtq.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-bl8K4Gls.cjs → radio-group-CN44mAoc.cjs} +1 -1
- package/dist/{radio-group-bl8K4Gls.cjs.map → radio-group-CN44mAoc.cjs.map} +1 -1
- package/dist/{radio-group-D9MU1Mxz.js → radio-group-GNHA7qJR.js} +1 -1
- package/dist/{radio-group-D9MU1Mxz.js.map → radio-group-GNHA7qJR.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{reduced-motion-D7LqTUMn.js.map → reduced-motion-D-L12p7G.js.map} +1 -1
- package/dist/{reduced-motion-Dzfp_w5x.cjs.map → reduced-motion-Ds-HjMzn.cjs.map} +1 -1
- package/dist/{rxjs-utils-BK8VMe3K.js.map → rxjs-utils-BXpvHN4-.js.map} +1 -1
- package/dist/{rxjs-utils-DhOKenkS.cjs.map → rxjs-utils-CaC-tdot.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{select-CMwkl-D6.js → select-BnuXRHS4.js} +3 -3
- package/dist/{select-CMwkl-D6.js.map → select-BnuXRHS4.js.map} +1 -1
- package/dist/{select-COIfVtZl.cjs → select-DZNns5Pa.cjs} +2 -2
- package/dist/{select-COIfVtZl.cjs.map → select-DZNns5Pa.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/INDEX.md +2 -1
- package/dist/skills/SKILL.md +33 -23
- package/dist/skills/area.md +5 -4
- package/dist/skills/connectivity.md +1 -3
- package/dist/skills/directives.md +36 -0
- package/dist/skills/icons.md +95 -31
- package/dist/skills/layout.md +36 -53
- package/dist/skills/mixins.md +26 -5
- package/dist/skills/schmancy/INDEX.md +2 -1
- package/dist/skills/schmancy/SKILL.md +33 -23
- package/dist/skills/schmancy/area.md +5 -4
- package/dist/skills/schmancy/connectivity.md +1 -3
- package/dist/skills/schmancy/directives.md +36 -0
- package/dist/skills/schmancy/icons.md +95 -31
- package/dist/skills/schmancy/layout.md +36 -53
- package/dist/skills/schmancy/mixins.md +26 -5
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-xrMNpzkm.js → splash-screen-CUP_elaT.js} +1 -1
- package/dist/{splash-screen-xrMNpzkm.js.map → splash-screen-CUP_elaT.js.map} +1 -1
- package/dist/{splash-screen-2hxq8Sft.cjs → splash-screen-DeoPRrOu.cjs} +1 -1
- package/dist/{splash-screen-2hxq8Sft.cjs.map → splash-screen-DeoPRrOu.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-B15R32Sp.js → src-B1VkLX3l.js} +159 -159
- package/dist/src-B1VkLX3l.js.map +1 -0
- package/dist/{src-BWQvtOOf.cjs → src-DQ4wr0qq.cjs} +13 -13
- package/dist/src-DQ4wr0qq.cjs.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-BkQ44Wuo.cjs → surface-LkaZQXZn.cjs} +1 -1
- package/dist/{surface-BkQ44Wuo.cjs.map → surface-LkaZQXZn.cjs.map} +1 -1
- package/dist/{surface-3nnvlxeE.js → surface-hOvkrjGN.js} +1 -1
- package/dist/{surface-3nnvlxeE.js.map → surface-hOvkrjGN.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/table.cjs +2 -2
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +2 -2
- package/dist/table.js.map +1 -1
- package/dist/{tabs-CnLIe8nE.js → tabs-CfwIHhHo.js} +1 -1
- package/dist/{tabs-CnLIe8nE.js.map → tabs-CfwIHhHo.js.map} +1 -1
- package/dist/{tabs-Dql0rcqZ.cjs → tabs-bplzstz6.cjs} +1 -1
- package/dist/{tabs-Dql0rcqZ.cjs.map → tabs-bplzstz6.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-BAogS_Ff.js → textarea-C1A5xuw9.js} +1 -1
- package/dist/{textarea-BAogS_Ff.js.map → textarea-C1A5xuw9.js.map} +1 -1
- package/dist/{textarea-CGD6lAEe.cjs → textarea-hrDp5gQq.cjs} +1 -1
- package/dist/{textarea-CGD6lAEe.cjs.map → textarea-hrDp5gQq.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-CUK0HrS3.js → theme-BniFOMEo.js} +4 -4
- package/dist/{theme-CUK0HrS3.js.map → theme-BniFOMEo.js.map} +1 -1
- package/dist/{theme-DKrrQ-ic.cjs → theme-DmR6PKV8.cjs} +3 -3
- package/dist/{theme-DKrrQ-ic.cjs.map → theme-DmR6PKV8.cjs.map} +1 -1
- package/dist/{theme-button-Bb8qW2IH.js → theme-button--ruZIb0T.js} +1 -1
- package/dist/{theme-button-Bb8qW2IH.js.map → theme-button--ruZIb0T.js.map} +1 -1
- package/dist/{theme-button-CmTwFm3l.cjs → theme-button-a0LgZ7hQ.cjs} +1 -1
- package/dist/{theme-button-CmTwFm3l.cjs.map → theme-button-a0LgZ7hQ.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-D4NeufQA.cjs.map → theme.interface-B5xjEk74.cjs.map} +1 -1
- package/dist/{theme.interface-C2XNgsLB.js.map → theme.interface-DVEw3s8m.js.map} +1 -1
- package/dist/theme.js +4 -4
- package/dist/{theme.service-CSzNkqBB.js.map → theme.service-Bh08uOSJ.js.map} +1 -1
- package/dist/{theme.service-CnFUmUpc.cjs.map → theme.service-Y-e8b331.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-Cxg0Kfy5.js → utils-578eFTx4.js} +1 -1
- package/dist/{utils-Cxg0Kfy5.js.map → utils-578eFTx4.js.map} +1 -1
- package/dist/{utils-aCJYAGUr.cjs → utils-CVWUrECT.cjs} +1 -1
- package/dist/{utils-aCJYAGUr.cjs.map → utils-CVWUrECT.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +2 -2
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-DuDAQa6y.js → window-BT9JecWy.js} +5 -5
- package/dist/{window-DuDAQa6y.js.map → window-BT9JecWy.js.map} +1 -1
- package/dist/{window-BbWlaPZv.cjs → window-Bp7zWZpu.cjs} +1 -1
- package/dist/{window-BbWlaPZv.cjs.map → window-Bp7zWZpu.cjs.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/INDEX.md +2 -1
- package/skills/schmancy/SKILL.md +33 -23
- package/skills/schmancy/area.md +5 -4
- package/skills/schmancy/connectivity.md +1 -3
- package/skills/schmancy/directives.md +36 -0
- package/skills/schmancy/icons.md +95 -31
- package/skills/schmancy/layout.md +36 -53
- package/skills/schmancy/mixins.md +26 -5
- package/src/badge/badge.ts +7 -11
- package/src/button/icon-button.ts +3 -4
- package/src/directives/ai-badge.ts +95 -0
- package/src/directives/art/art.directive.ts +228 -0
- package/src/directives/art/effects/error.ts +192 -0
- package/src/directives/art/effects/funkhaus.ts +121 -0
- package/src/directives/art/effects/howl.ts +203 -0
- package/src/directives/art/effects/samwa.ts +228 -0
- package/src/directives/art/effects/snow.ts +207 -0
- package/src/directives/art/effects/starfield.ts +107 -0
- package/src/directives/art/index.ts +2 -0
- package/src/directives/art/particle-pool.ts +40 -0
- package/src/directives/art/types.ts +129 -0
- package/src/directives/art/utils.ts +35 -0
- package/src/directives/battery.ts +1014 -0
- package/src/directives/beta.ts +44 -0
- package/src/directives/fill.ts +32 -60
- package/src/directives/fyi.ts +551 -0
- package/src/directives/hummingbird.ts +1712 -0
- package/src/directives/index.ts +9 -0
- package/src/directives/missed-punch.ts +407 -0
- package/src/directives/urgent.ts +660 -0
- package/src/directives/working-snake.ts +294 -0
- package/src/icons/icon.ts +53 -30
- package/src/json/json.ts +1 -1
- package/src/navigation-rail/navigation-rail-item.ts +7 -12
- package/src/navigation-rail/navigation-rail.ts +0 -2
- package/src/table/table.ts +2 -2
- package/src/theme/theme-audio-player.ts +1 -1
- package/types/mixins/SchmancyElement.d.ts +31 -0
- package/types/src/badge/badge.d.ts +1 -1
- package/types/src/directives/ai-badge.d.ts +15 -0
- package/types/src/directives/art/art.directive.d.ts +19 -0
- package/types/src/directives/art/effects/error.d.ts +7 -0
- package/types/src/directives/art/effects/funkhaus.d.ts +7 -0
- package/types/src/directives/art/effects/howl.d.ts +7 -0
- package/types/src/directives/art/effects/samwa.d.ts +7 -0
- package/types/src/directives/art/effects/snow.d.ts +7 -0
- package/types/src/directives/art/effects/starfield.d.ts +10 -0
- package/types/src/directives/art/index.d.ts +2 -0
- package/types/src/directives/art/particle-pool.d.ts +16 -0
- package/types/src/directives/art/types.d.ts +126 -0
- package/types/src/directives/art/utils.d.ts +5 -0
- package/types/src/directives/battery.d.ts +96 -0
- package/types/src/directives/beta.d.ts +33 -0
- package/types/src/directives/fill.d.ts +4 -11
- package/types/src/directives/fyi.d.ts +76 -0
- package/types/src/directives/hummingbird.d.ts +180 -0
- package/types/src/directives/index.d.ts +9 -0
- package/types/src/directives/missed-punch.d.ts +28 -0
- package/types/src/directives/urgent.d.ts +88 -0
- package/types/src/directives/working-snake.d.ts +46 -0
- package/types/src/icons/icon.d.ts +22 -0
- package/dist/directives.cjs.map +0 -1
- package/dist/directives.js.map +0 -1
- package/dist/discovery.cjs.map +0 -1
- package/dist/discovery.js.map +0 -1
- package/dist/icons-DJuXwn8D.js +0 -48
- package/dist/icons-DJuXwn8D.js.map +0 -1
- package/dist/icons-oNRUCAEY.cjs +0 -33
- package/dist/icons-oNRUCAEY.cjs.map +0 -1
- package/dist/mixins-DTCHPEd4.cjs +0 -254
- package/dist/mixins-DTCHPEd4.cjs.map +0 -1
- package/dist/mixins-pU53qf6R.js +0 -636
- package/dist/mixins-pU53qf6R.js.map +0 -1
- package/dist/skills/page.md +0 -84
- package/dist/skills/schmancy/page.md +0 -84
- package/dist/src-B15R32Sp.js.map +0 -1
- package/dist/src-BWQvtOOf.cjs.map +0 -1
- package/skills/schmancy/page.md +0 -84
- /package/dist/{hashContent-dJrI-9sc.js → hashContent-Dgmzc32o.js} +0 -0
- /package/dist/{hashContent-Ck6laKlk.cjs → hashContent-Dh1VzIAb.cjs} +0 -0
- /package/dist/{overlay-stack-Dk0xETTy.cjs → overlay-stack-Bdr9lOqi.cjs} +0 -0
- /package/dist/{overlay-stack-BR4iYivO.js → overlay-stack-D2rgxQLh.js} +0 -0
- /package/dist/{reduced-motion-D7LqTUMn.js → reduced-motion-D-L12p7G.js} +0 -0
- /package/dist/{reduced-motion-Dzfp_w5x.cjs → reduced-motion-Ds-HjMzn.cjs} +0 -0
- /package/dist/{rxjs-utils-BK8VMe3K.js → rxjs-utils-BXpvHN4-.js} +0 -0
- /package/dist/{rxjs-utils-DhOKenkS.cjs → rxjs-utils-CaC-tdot.cjs} +0 -0
- /package/dist/{theme.interface-D4NeufQA.cjs → theme.interface-B5xjEk74.cjs} +0 -0
- /package/dist/{theme.interface-C2XNgsLB.js → theme.interface-DVEw3s8m.js} +0 -0
- /package/dist/{theme.service-CSzNkqBB.js → theme.service-Bh08uOSJ.js} +0 -0
- /package/dist/{theme.service-CnFUmUpc.cjs → theme.service-Y-e8b331.cjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-CAqB-B0M.js","names":[],"sources":["../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/quarterOfYear.js","../src/form/fields/date-range/date-range-helpers.ts","../src/form/fields/date-range/date-range-presets.ts","../src/form/fields/date-range/date-utils.ts","../src/form/fields/date-range/date-range-dialog.ts","../src/form/fields/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 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 { SchmancyFormField } from '@mixins/index'\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 SchmancyFormField() {\n\t// `name`, `disabled`, `required`, `error`, `validationMessage`, `id`,\n\t// `validateOn`, `touched`, `submitted`, `markTouched`, `markSubmitted`,\n\t// FACE wiring, FIELD_CONNECT_EVENT dispatch — all from the mixin.\n\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@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: 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\toverride willUpdate(changed: PropertyValues): void {\n\t\tsuper.willUpdate(changed)\n\t\tif (changed.has('dateFrom') || changed.has('dateTo') || changed.has('name')) {\n\t\t\t// Multi-entry FACE submission: setFormValue accepts a FormData\n\t\t\t// object whose entries are appended to the owning form's FormData.\n\t\t\t// native `new FormData(form)` then sees both `${name}From` and\n\t\t\t// `${name}To` without any consumer-side parsing.\n\t\t\tif (this.name && !this.disabled) {\n\t\t\t\tconst fd = new FormData()\n\t\t\t\tif (this.dateFrom?.value) fd.append(`${this.name}From`, this.dateFrom.value)\n\t\t\t\tif (this.dateTo?.value) fd.append(`${this.name}To`, this.dateTo.value)\n\t\t\t\tthis.internals?.setFormValue(fd)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setFormValue(null)\n\t\t\t}\n\t\t\tthis.checkValidity()\n\t\t}\n\t\tif (changed.has('required') || changed.has('disabled')) {\n\t\t\tthis.checkValidity()\n\t\t}\n\t}\n\n\t/**\n\t * Date-range validity is `both dates non-empty` when required.\n\t * (Order/range constraints are out of scope here — they belong to a\n\t * domain-specific schema layer.)\n\t */\n\toverride checkValidity(): boolean {\n\t\tif (this.disabled) {\n\t\t\tthis.internals?.setValidity({})\n\t\t\treturn true\n\t\t}\n\t\tconst fromEmpty = !this.dateFrom?.value\n\t\tconst toEmpty = !this.dateTo?.value\n\t\tconst isValid = !this.required || (!fromEmpty && !toEmpty)\n\t\tconst message = isValid ? '' : 'Please select a date range.'\n\n\t\tthis.internals?.setValidity(\n\t\t\tisValid ? {} : { valueMissing: true },\n\t\t\tisValid ? undefined : message,\n\t\t)\n\n\t\tif (this._shouldShowError()) {\n\t\t\tthis.error = !isValid\n\t\t\tthis.validationMessage = message\n\t\t}\n\t\treturn isValid\n\t}\n\n\t/**\n\t * Override — emit `${name}From` and `${name}To` flat-suffix entries (the\n\t * plan's chosen multi-entry encoding; native to JS consumers without\n\t * server-side bracket parsing).\n\t */\n\toverride toFormEntries(): Array<[string, FormDataEntryValue]> {\n\t\tif (!this.name || this.disabled) return []\n\t\tconst entries: Array<[string, FormDataEntryValue]> = []\n\t\tif (this.dateFrom?.value) entries.push([`${this.name}From`, this.dateFrom.value])\n\t\tif (this.dateTo?.value) entries.push([`${this.name}To`, this.dateTo.value])\n\t\treturn entries\n\t}\n\n\t/** `dirty` tracks the underlying date strings, not the wide-union value. */\n\tprivate _dateFromDefault: string = ''\n\tprivate _dateToDefault: string = ''\n\toverride firstUpdated(changed: PropertyValues): void {\n\t\tsuper.firstUpdated(changed)\n\t\tthis._dateFromDefault = this.dateFrom?.value ?? ''\n\t\tthis._dateToDefault = this.dateTo?.value ?? ''\n\t}\n\toverride get dirty(): boolean {\n\t\treturn (\n\t\t\t(this.dateFrom?.value ?? '') !== this._dateFromDefault ||\n\t\t\t(this.dateTo?.value ?? '') !== this._dateToDefault\n\t\t)\n\t}\n\n\toverride resetForm(): void {\n\t\tthis.dateFrom = { ...this.dateFrom, value: this._dateFromDefault }\n\t\tthis.dateTo = { ...this.dateTo, value: this._dateToDefault }\n\t\tsuper.resetForm()\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
|
+
{"version":3,"file":"date-range-wDVHcr0u.js","names":[],"sources":["../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/quarterOfYear.js","../src/form/fields/date-range/date-range-helpers.ts","../src/form/fields/date-range/date-range-presets.ts","../src/form/fields/date-range/date-utils.ts","../src/form/fields/date-range/date-range-dialog.ts","../src/form/fields/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 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 { SchmancyFormField } from '@mixins/index'\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 SchmancyFormField() {\n\t// `name`, `disabled`, `required`, `error`, `validationMessage`, `id`,\n\t// `validateOn`, `touched`, `submitted`, `markTouched`, `markSubmitted`,\n\t// FACE wiring, FIELD_CONNECT_EVENT dispatch — all from the mixin.\n\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@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: 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\toverride willUpdate(changed: PropertyValues): void {\n\t\tsuper.willUpdate(changed)\n\t\tif (changed.has('dateFrom') || changed.has('dateTo') || changed.has('name')) {\n\t\t\t// Multi-entry FACE submission: setFormValue accepts a FormData\n\t\t\t// object whose entries are appended to the owning form's FormData.\n\t\t\t// native `new FormData(form)` then sees both `${name}From` and\n\t\t\t// `${name}To` without any consumer-side parsing.\n\t\t\tif (this.name && !this.disabled) {\n\t\t\t\tconst fd = new FormData()\n\t\t\t\tif (this.dateFrom?.value) fd.append(`${this.name}From`, this.dateFrom.value)\n\t\t\t\tif (this.dateTo?.value) fd.append(`${this.name}To`, this.dateTo.value)\n\t\t\t\tthis.internals?.setFormValue(fd)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setFormValue(null)\n\t\t\t}\n\t\t\tthis.checkValidity()\n\t\t}\n\t\tif (changed.has('required') || changed.has('disabled')) {\n\t\t\tthis.checkValidity()\n\t\t}\n\t}\n\n\t/**\n\t * Date-range validity is `both dates non-empty` when required.\n\t * (Order/range constraints are out of scope here — they belong to a\n\t * domain-specific schema layer.)\n\t */\n\toverride checkValidity(): boolean {\n\t\tif (this.disabled) {\n\t\t\tthis.internals?.setValidity({})\n\t\t\treturn true\n\t\t}\n\t\tconst fromEmpty = !this.dateFrom?.value\n\t\tconst toEmpty = !this.dateTo?.value\n\t\tconst isValid = !this.required || (!fromEmpty && !toEmpty)\n\t\tconst message = isValid ? '' : 'Please select a date range.'\n\n\t\tthis.internals?.setValidity(\n\t\t\tisValid ? {} : { valueMissing: true },\n\t\t\tisValid ? undefined : message,\n\t\t)\n\n\t\tif (this._shouldShowError()) {\n\t\t\tthis.error = !isValid\n\t\t\tthis.validationMessage = message\n\t\t}\n\t\treturn isValid\n\t}\n\n\t/**\n\t * Override — emit `${name}From` and `${name}To` flat-suffix entries (the\n\t * plan's chosen multi-entry encoding; native to JS consumers without\n\t * server-side bracket parsing).\n\t */\n\toverride toFormEntries(): Array<[string, FormDataEntryValue]> {\n\t\tif (!this.name || this.disabled) return []\n\t\tconst entries: Array<[string, FormDataEntryValue]> = []\n\t\tif (this.dateFrom?.value) entries.push([`${this.name}From`, this.dateFrom.value])\n\t\tif (this.dateTo?.value) entries.push([`${this.name}To`, this.dateTo.value])\n\t\treturn entries\n\t}\n\n\t/** `dirty` tracks the underlying date strings, not the wide-union value. */\n\tprivate _dateFromDefault: string = ''\n\tprivate _dateToDefault: string = ''\n\toverride firstUpdated(changed: PropertyValues): void {\n\t\tsuper.firstUpdated(changed)\n\t\tthis._dateFromDefault = this.dateFrom?.value ?? ''\n\t\tthis._dateToDefault = this.dateTo?.value ?? ''\n\t}\n\toverride get dirty(): boolean {\n\t\treturn (\n\t\t\t(this.dateFrom?.value ?? '') !== this._dateFromDefault ||\n\t\t\t(this.dateTo?.value ?? '') !== this._dateToDefault\n\t\t)\n\t}\n\n\toverride resetForm(): void {\n\t\tthis.dateFrom = { ...this.dateFrom, value: this._dateFromDefault }\n\t\tthis.dateTo = { ...this.dateTo, value: this._dateToDefault }\n\t\tsuper.resetForm()\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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"}
|
package/dist/date-range.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-range-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-range-BJnLWCRF.cjs`);Object.defineProperty(exports,`SchmancyDateRange`,{enumerable:!0,get:function(){return e.t}}),exports.validateInitialDateRange=e.n;
|
package/dist/date-range.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./date-range-
|
|
1
|
+
import { n as e, t } from "./date-range-wDVHcr0u.js";
|
|
2
2
|
export { t as SchmancyDateRange, e as validateInitialDateRange };
|
package/dist/delay.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-CsYsIJOI.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./hashContent-Dh1VzIAb.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`@lit/context`),o=require(`lit/decorators.js`),s=require(`lit`),c=require(`@lit-labs/motion`),l=require(`lit/directives/cache.js`);var u,d=(0,a.createContext)(`delay-context`),f=u=class extends e.c{constructor(...e){super(...e),this.delay=0,this.motion=`flyBelow`,this.rendered=!1,this.parentDelay=0,this.effectiveDelay=0,this.once=!0,this.sessionKey=``}firstUpdated(){this.observeSlotChanges(),this.updateRenderState()}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect()}observeSlotChanges(){let e=this.shadowRoot?.querySelector(`slot`);e&&(this.mutationObserver=new MutationObserver(()=>{this.sessionKey=this.generateSessionKey()}),this.mutationObserver.observe(e,{childList:!0,subtree:!0}))}getTotalSiblingDelay(e){if(!(e&&e instanceof HTMLElement))return 0;let t=0,n=e.previousElementSibling;for(;n;)n instanceof u&&(t+=n.delay),n=n.previousElementSibling;return e.parentElement&&(t+=this.getTotalSiblingDelay(e.parentElement)),t}updateRenderState(){if(this.sessionKey=this.generateSessionKey(),this.once&&sessionStorage.getItem(this.sessionKey)===`true`)return void(this.rendered=!0);let e=this.getTotalSiblingDelay(this);this.effectiveDelay=this.delay+this.parentDelay+e,(0,r.timer)(this.effectiveDelay).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(()=>{if(this.rendered=!0,this.once)try{sessionStorage.setItem(this.sessionKey,`true`)}catch{}})}generateSessionKey(){let e=this.assignedElements.map(e=>e.outerHTML).join(``);return this.once?n.t(e):``}get motionLit(){return this.motion===`flyBelow`?c.flyBelow:this.motion===`flyAbove`?c.flyAbove:c.fadeIn}render(){return(0,l.cache)(this.rendered?s.html`<div
|
|
2
2
|
${(0,c.animate)({in:this.motionLit,keyframeOptions:{duration:300,easing:`ease-out`}})}
|
|
3
3
|
>
|
|
4
4
|
<slot></slot>
|
package/dist/delay.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as e } from "./mixins-
|
|
1
|
+
import { c as e } from "./mixins-DySzfmal.js";
|
|
2
2
|
import { a as t } from "./active-host-BP0zy_Y9.js";
|
|
3
|
-
import { t as n } from "./hashContent-
|
|
3
|
+
import { t as n } from "./hashContent-Dgmzc32o.js";
|
|
4
4
|
import { timer as r } from "rxjs";
|
|
5
5
|
import { takeUntil as i } from "rxjs/operators";
|
|
6
6
|
import { consume as a, createContext as o, provide as s } from "@lit/context";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { c as e, t } from "./mixins-
|
|
1
|
+
import { c as e, t } from "./mixins-DySzfmal.js";
|
|
2
2
|
import { a as n } from "./active-host-BP0zy_Y9.js";
|
|
3
3
|
import { f as r } from "./animation-DCznELuT.js";
|
|
4
|
-
import { t as i } from "./reduced-motion-
|
|
5
|
-
import { t as a } from "./cursor-glow-
|
|
6
|
-
import { t as o } from "./magnetic-
|
|
4
|
+
import { t as i } from "./reduced-motion-D-L12p7G.js";
|
|
5
|
+
import { t as a } from "./cursor-glow-Ah7VXSj7.js";
|
|
6
|
+
import { t as o } from "./magnetic-mHXl54Z8.js";
|
|
7
7
|
import { BehaviorSubject as s, fromEvent as c } from "rxjs";
|
|
8
8
|
import { distinctUntilChanged as l, filter as u, take as d, takeUntil as f, tap as p } from "rxjs/operators";
|
|
9
9
|
import { customElement as m, property as h, state as g } from "lit/decorators.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"details-BpFjVclg.js","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"details-Ckxpwacj.js","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-visible': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-
|
|
1
|
+
require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-CsYsIJOI.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./animation-CCOIW4wJ.cjs`),r=require(`./reduced-motion-Ds-HjMzn.cjs`),i=require(`./cursor-glow-Bulq-38P.cjs`),a=require(`./magnetic-D-ph029G.cjs`);let o=require(`rxjs`),s=require(`rxjs/operators`),c=require(`lit/decorators.js`),l=require(`lit`),u=require(`lit/directives/ref.js`);var d=class extends e.t(e.c){static{this.styles=[l.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
}
|