@mhmo91/schmancy 0.7.7 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/audio.md +241 -0
- package/ai/content-drawer.md +163 -70
- package/ai/lightbox.md +381 -0
- package/ai/typography.md +75 -49
- package/dist/ai/audio.md +241 -0
- package/dist/ai/content-drawer.md +163 -70
- package/dist/ai/lightbox.md +381 -0
- package/dist/ai/typography.md +75 -49
- package/dist/{animated-text-Be290e6l.cjs → animated-text-Bc3qyXjp.cjs} +2 -2
- package/dist/{animated-text-Be290e6l.cjs.map → animated-text-Bc3qyXjp.cjs.map} +1 -1
- package/dist/{animated-text-DuLrWJ6O.js → animated-text-CNx6Pmlo.js} +3 -3
- package/dist/{animated-text-DuLrWJ6O.js.map → animated-text-CNx6Pmlo.js.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-BzjJiNTJ.js → area.component-7mWxekxE.js} +104 -98
- package/dist/area.component-7mWxekxE.js.map +1 -0
- package/dist/area.component-CS_gSutH.cjs +12 -0
- package/dist/area.component-CS_gSutH.cjs.map +1 -0
- package/dist/area.js +1 -1
- package/dist/audio.cjs +2 -0
- package/dist/audio.cjs.map +1 -0
- package/dist/audio.js +9 -0
- package/dist/audio.js.map +1 -0
- package/dist/{autocomplete-FLkd9ju8.js → autocomplete-Ci4jo3Ur.js} +4 -4
- package/dist/{autocomplete-FLkd9ju8.js.map → autocomplete-Ci4jo3Ur.js.map} +1 -1
- package/dist/{autocomplete-CHmGhBNt.cjs → autocomplete-y-IyzH4r.cjs} +2 -2
- package/dist/{autocomplete-CHmGhBNt.cjs.map → autocomplete-y-IyzH4r.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-C8P4lVfa.js → avatar-BdyuuIk7.js} +243 -258
- package/dist/avatar-BdyuuIk7.js.map +1 -0
- package/dist/avatar-DBfJucB9.cjs +273 -0
- package/dist/avatar-DBfJucB9.cjs.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-Ma6LW-ny.js → boat-CowHieO2.js} +6 -6
- package/dist/{boat-Ma6LW-ny.js.map → boat-CowHieO2.js.map} +1 -1
- package/dist/{boat-kYOUec8f.cjs → boat-DkNUc1UO.cjs} +5 -5
- package/dist/{boat-kYOUec8f.cjs.map → boat-DkNUc1UO.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +2 -0
- package/dist/charts.cjs.map +1 -0
- package/dist/charts.js +9 -0
- package/dist/charts.js.map +1 -0
- package/dist/{checkbox-x46L-XTG.js → checkbox-BY4Sn8F2.js} +6 -6
- package/dist/{checkbox-x46L-XTG.js.map → checkbox-BY4Sn8F2.js.map} +1 -1
- package/dist/{checkbox-DLZkKaon.cjs → checkbox-BvWcABPr.cjs} +2 -2
- package/dist/{checkbox-DLZkKaon.cjs.map → checkbox-BvWcABPr.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-BsQq77nu.cjs → code-preview-BIFIJigy.cjs} +2 -2
- package/dist/{code-preview-BsQq77nu.cjs.map → code-preview-BIFIJigy.cjs.map} +1 -1
- package/dist/{code-preview-C3DLglSl.js → code-preview-CYjmAxfs.js} +3 -3
- package/dist/{code-preview-C3DLglSl.js.map → code-preview-CYjmAxfs.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-create-BvxbWTgj.js → context-create-B_S-sD5B.js} +69 -57
- package/dist/context-create-B_S-sD5B.js.map +1 -0
- package/dist/context-create-DTybDbZp.cjs +2 -0
- package/dist/context-create-DTybDbZp.cjs.map +1 -0
- package/dist/date-range-B80Ummtv.cjs +119 -0
- package/dist/date-range-B80Ummtv.cjs.map +1 -0
- package/dist/date-range-BdIqI7LC.js +639 -0
- package/dist/date-range-BdIqI7LC.js.map +1 -0
- package/dist/{date-range-inline-CfDu-lIo.js → date-range-inline-Cnhs9atd.js} +3 -3
- package/dist/{date-range-inline-CfDu-lIo.js.map → date-range-inline-Cnhs9atd.js.map} +1 -1
- package/dist/{date-range-inline-cGptw0hr.cjs → date-range-inline-Df8u6Ecy.cjs} +2 -2
- package/dist/{date-range-inline-cGptw0hr.cjs.map → date-range-inline-Df8u6Ecy.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-CXFIM6qK.cjs → delay-BWsVHQib.cjs} +2 -2
- package/dist/delay-BWsVHQib.cjs.map +1 -0
- package/dist/{delay-BINGOQ7f.js → delay-CCa9nN4A.js} +45 -45
- package/dist/delay-CCa9nN4A.js.map +1 -0
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/details-Bee5ya0L.js +100 -0
- package/dist/details-Bee5ya0L.js.map +1 -0
- package/dist/details-oaVHXU7U.cjs +55 -0
- package/dist/details-oaVHXU7U.cjs.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/dialog-service-C86xTS8q.cjs +2 -0
- package/dist/dialog-service-C86xTS8q.cjs.map +1 -0
- package/dist/dialog-service-D9E3jLAR.js +118 -0
- package/dist/dialog-service-D9E3jLAR.js.map +1 -0
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.component-BriB-kFi.cjs +48 -0
- package/dist/dialog.component-BriB-kFi.cjs.map +1 -0
- package/dist/dialog.component-CMUoCC7O.js +145 -0
- package/dist/dialog.component-CMUoCC7O.js.map +1 -0
- package/dist/dialog.js +7 -7
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +11 -10
- package/dist/directives.js.map +1 -1
- package/dist/{divider-Bu6tzwGl.js → divider-B7DBbYFI.js} +3 -3
- package/dist/{divider-Bu6tzwGl.js.map → divider-B7DBbYFI.js.map} +1 -1
- package/dist/{divider-8tk2mDbL.cjs → divider-Dl4TToQZ.cjs} +2 -2
- package/dist/{divider-8tk2mDbL.cjs.map → divider-Dl4TToQZ.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-DFb07S8x.cjs → dropdown-content-C2W7OttQ.cjs} +2 -2
- package/dist/{dropdown-content-DFb07S8x.cjs.map → dropdown-content-C2W7OttQ.cjs.map} +1 -1
- package/dist/{dropdown-content-fVhnEKdY.js → dropdown-content-DzhOtilY.js} +3 -3
- package/dist/{dropdown-content-fVhnEKdY.js.map → dropdown-content-DzhOtilY.js.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-OG52RGiH.js → email-recipients-BWqZKo3m.js} +8 -7
- package/dist/{email-recipients-OG52RGiH.js.map → email-recipients-BWqZKo3m.js.map} +1 -1
- package/dist/{email-recipients-BG3GxJvc.cjs → email-recipients-Bh5VC0rc.cjs} +2 -2
- package/dist/{email-recipients-BG3GxJvc.cjs.map → email-recipients-Bh5VC0rc.cjs.map} +1 -1
- package/dist/emotional-sounds-BRnFhww6.js +234 -0
- package/dist/emotional-sounds-BRnFhww6.js.map +1 -0
- package/dist/emotional-sounds-DVGhmoZf.cjs +2 -0
- package/dist/emotional-sounds-DVGhmoZf.cjs.map +1 -0
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/flex-53G-PJx7.js +183 -0
- package/dist/flex-53G-PJx7.js.map +1 -0
- package/dist/flex-DFSIy0t4.cjs +18 -0
- package/dist/flex-DFSIy0t4.cjs.map +1 -0
- package/dist/{form-tpyd1nsT.js → form-BtRK9bnp.js} +2 -2
- package/dist/{form-tpyd1nsT.js.map → form-BtRK9bnp.js.map} +1 -1
- package/dist/{form-cWJBcwc6.cjs → form-Zq7g2JS8.cjs} +2 -2
- package/dist/{form-cWJBcwc6.cjs.map → form-Zq7g2JS8.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-Mx5CwYUh.js → formField.mixin-2jSL7WF_.js} +2 -2
- package/dist/{formField.mixin-Mx5CwYUh.js.map → formField.mixin-2jSL7WF_.js.map} +1 -1
- package/dist/{formField.mixin-XlN2pAL0.cjs → formField.mixin-DkN2ufR_.cjs} +2 -2
- package/dist/{formField.mixin-XlN2pAL0.cjs.map → formField.mixin-DkN2ufR_.cjs.map} +1 -1
- package/dist/height-CfECBO2j.js +44 -0
- package/dist/height-CfECBO2j.js.map +1 -0
- package/dist/height-Z70qJYJK.cjs +2 -0
- package/dist/height-Z70qJYJK.cjs.map +1 -0
- package/dist/{icon-Y2qLOFqe.js → icon-B5qeYrDu.js} +17 -17
- package/dist/icon-B5qeYrDu.js.map +1 -0
- package/dist/icon-button-BpmGFjaR.cjs +70 -0
- package/dist/icon-button-BpmGFjaR.cjs.map +1 -0
- package/dist/icon-button-HSYaQBNF.js +164 -0
- package/dist/icon-button-HSYaQBNF.js.map +1 -0
- package/dist/icon-pU_cfmpD.cjs +49 -0
- package/dist/icon-pU_cfmpD.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +275 -250
- package/dist/index.js.map +1 -1
- package/dist/input-8G9YY9qv.cjs +51 -0
- package/dist/input-8G9YY9qv.cjs.map +1 -0
- package/dist/{input-DDCFZ3cr.js → input-BJMF5Fyk.js} +35 -31
- package/dist/input-BJMF5Fyk.js.map +1 -0
- package/dist/{input-chip-Bht9MU9G.cjs → input-chip-CocdqTzr.cjs} +2 -2
- package/dist/{input-chip-Bht9MU9G.cjs.map → input-chip-CocdqTzr.cjs.map} +1 -1
- package/dist/{input-chip-DVE4_1wn.js → input-chip-tbrw56ix.js} +2 -2
- package/dist/{input-chip-DVE4_1wn.js.map → input-chip-tbrw56ix.js.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json-CvcloKQv.js +51 -0
- package/dist/json-CvcloKQv.js.map +1 -0
- package/dist/json-DPnyOA3K.cjs +12 -0
- package/dist/json-DPnyOA3K.cjs.map +1 -0
- package/dist/json.cjs +2 -0
- package/dist/json.cjs.map +1 -0
- package/dist/json.js +5 -0
- package/dist/json.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +4 -3
- package/dist/layout.js.map +1 -1
- package/dist/lightbox-service-3mHqBKEh.cjs +202 -0
- package/dist/lightbox-service-3mHqBKEh.cjs.map +1 -0
- package/dist/lightbox-service-DxbYZAuv.js +458 -0
- package/dist/lightbox-service-DxbYZAuv.js.map +1 -0
- package/dist/lightbox.cjs +2 -0
- package/dist/lightbox.cjs.map +1 -0
- package/dist/lightbox.js +8 -0
- package/dist/lightbox.js.map +1 -0
- package/dist/{list-BO1gnjmc.js → list-FWXmY-eQ.js} +2 -2
- package/dist/{list-BO1gnjmc.js.map → list-FWXmY-eQ.js.map} +1 -1
- package/dist/{list-Bac329kq.cjs → list-JjR7WOrd.cjs} +2 -2
- package/dist/{list-Bac329kq.cjs.map → list-JjR7WOrd.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-B1WTI3WY.cjs → litElement.mixin-BVBdv0GP.cjs} +2 -2
- package/dist/{litElement.mixin-B1WTI3WY.cjs.map → litElement.mixin-BVBdv0GP.cjs.map} +1 -1
- package/dist/{litElement.mixin-CVje6z-M.js → litElement.mixin-Wcu4yIIs.js} +2 -2
- package/dist/{litElement.mixin-CVje6z-M.js.map → litElement.mixin-Wcu4yIIs.js.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-C1jVMhlF.js → map-Br6xJFxG.js} +2 -2
- package/dist/{map-C1jVMhlF.js.map → map-Br6xJFxG.js.map} +1 -1
- package/dist/{map-BlmS6Zfx.cjs → map-D9R3OCne.cjs} +2 -2
- package/dist/{map-BlmS6Zfx.cjs.map → map-D9R3OCne.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-CNMZbEJe.js → media-BV_1DfcW.js} +2 -2
- package/dist/{media-CNMZbEJe.js.map → media-BV_1DfcW.js.map} +1 -1
- package/dist/{media-CxfrOjie.cjs → media-DibPwAjJ.cjs} +2 -2
- package/dist/{media-CxfrOjie.cjs.map → media-DibPwAjJ.cjs.map} +1 -1
- package/dist/menu-HKqlq99V.js +60 -0
- package/dist/{menu-CUKV4pVJ.js.map → menu-HKqlq99V.js.map} +1 -1
- package/dist/{menu-DEa2K7Pk.cjs → menu-vNrV-Nuq.cjs} +4 -6
- package/dist/{menu-DEa2K7Pk.cjs.map → menu-vNrV-Nuq.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +3 -3
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/{navigation-rail-DXr4NJnN.cjs → navigation-rail-D1o3qDe_.cjs} +15 -17
- package/dist/navigation-rail-D1o3qDe_.cjs.map +1 -0
- package/dist/{navigation-rail-CYKfvZs9.js → navigation-rail-DKXumnmt.js} +30 -32
- package/dist/navigation-rail-DKXumnmt.js.map +1 -0
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/notification-service-B5ljba4P.js +155 -0
- package/dist/notification-service-B5ljba4P.js.map +1 -0
- package/dist/notification-service-ICRT05L0.cjs +19 -0
- package/dist/notification-service-ICRT05L0.cjs.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +6 -8
- package/dist/{notify-KvHZ-8z9.js → notify-B9CpO1Ru.js} +2 -2
- package/dist/notify-B9CpO1Ru.js.map +1 -0
- package/dist/{notify-VkDx6hMZ.cjs → notify-NX-dl60E.cjs} +2 -2
- package/dist/notify-NX-dl60E.cjs.map +1 -0
- package/dist/{option-DnRdbsTb.js → option-B4JKMrLg.js} +2 -2
- package/dist/{option-DnRdbsTb.js.map → option-B4JKMrLg.js.map} +1 -1
- package/dist/{option-Eh2AXe-Z.cjs → option-epyXLWoY.cjs} +2 -2
- package/dist/{option-Eh2AXe-Z.cjs.map → option-epyXLWoY.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/page-Bmi1QHtq.cjs +20 -0
- package/dist/page-Bmi1QHtq.cjs.map +1 -0
- package/dist/page-BpygEntU.js +48 -0
- package/dist/page-BpygEntU.js.map +1 -0
- package/dist/page.cjs +2 -0
- package/dist/page.cjs.map +1 -0
- package/dist/page.js +5 -0
- package/dist/page.js.map +1 -0
- package/dist/{payment-card-form-8a4Nqqhy.cjs → payment-card-form-3kAXDbXf.cjs} +2 -2
- package/dist/{payment-card-form-8a4Nqqhy.cjs.map → payment-card-form-3kAXDbXf.cjs.map} +1 -1
- package/dist/{payment-card-form-EVQEb5OX.js → payment-card-form-BxkHuSls.js} +3 -3
- package/dist/{payment-card-form-EVQEb5OX.js.map → payment-card-form-BxkHuSls.js.map} +1 -1
- package/dist/pills-C3fIvfn8.js +346 -0
- package/dist/pills-C3fIvfn8.js.map +1 -0
- package/dist/pills-MmHyBGQu.cjs +113 -0
- package/dist/pills-MmHyBGQu.cjs.map +1 -0
- package/dist/progress-0POmJs5o.js +59 -0
- package/dist/progress-0POmJs5o.js.map +1 -0
- package/dist/progress-qx8jtrOA.cjs +35 -0
- package/dist/progress-qx8jtrOA.cjs.map +1 -0
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/qr-scanner-DQq-WLyo.cjs +29 -0
- package/dist/qr-scanner-DQq-WLyo.cjs.map +1 -0
- package/dist/qr-scanner-jwOSrD0N.js +743 -0
- package/dist/qr-scanner-jwOSrD0N.js.map +1 -0
- package/dist/qr-scanner.cjs +2 -0
- package/dist/qr-scanner.cjs.map +1 -0
- package/dist/qr-scanner.js +5 -0
- package/dist/qr-scanner.js.map +1 -0
- package/dist/{radio-button-QCukBJLy.js → radio-button-B0EUK_wg.js} +3 -3
- package/dist/{radio-button-QCukBJLy.js.map → radio-button-B0EUK_wg.js.map} +1 -1
- package/dist/{radio-button-BTdqEOSJ.cjs → radio-button-DraEYR2R.cjs} +2 -2
- package/dist/{radio-button-BTdqEOSJ.cjs.map → radio-button-DraEYR2R.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/ripple-BgJXbNSP.js +124 -0
- package/dist/ripple-BgJXbNSP.js.map +1 -0
- package/dist/ripple-x6sTX02K.cjs +16 -0
- package/dist/ripple-x6sTX02K.cjs.map +1 -0
- package/dist/{schmancy-steps-container-CtwqkRBU.cjs → schmancy-steps-container-B5aiqgMA.cjs} +2 -2
- package/dist/{schmancy-steps-container-CtwqkRBU.cjs.map → schmancy-steps-container-B5aiqgMA.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-NZOamraF.js → schmancy-steps-container-C2StAA5K.js} +3 -3
- package/dist/{schmancy-steps-container-NZOamraF.js.map → schmancy-steps-container-C2StAA5K.js.map} +1 -1
- package/dist/scroll-BqT7bvhu.cjs +27 -0
- package/dist/scroll-BqT7bvhu.cjs.map +1 -0
- package/dist/scroll-Bu-vAg3d.js +87 -0
- package/dist/scroll-Bu-vAg3d.js.map +1 -0
- package/dist/{select-C-Kv7ey_.cjs → select-HiEGJvOX.cjs} +2 -2
- package/dist/select-HiEGJvOX.cjs.map +1 -0
- package/dist/{select-DSTQ-Zau.js → select-i-uKur-W.js} +5 -4
- package/dist/select-i-uKur-W.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{selector-hook-Cok22ifx.cjs → selector-hook-9w2auh2O.cjs} +2 -2
- package/dist/{selector-hook-Cok22ifx.cjs.map → selector-hook-9w2auh2O.cjs.map} +1 -1
- package/dist/{selector-hook-l2fe2UO5.js → selector-hook-CHV4kDMd.js} +3 -3
- package/dist/{selector-hook-l2fe2UO5.js.map → selector-hook-CHV4kDMd.js.map} +1 -1
- package/dist/{sheet-DY-z5_tm.js → sheet-B1g7E4dQ.js} +5 -5
- package/dist/{sheet-DY-z5_tm.js.map → sheet-B1g7E4dQ.js.map} +1 -1
- package/dist/{sheet-IzYy3H8n.cjs → sheet-BbrRW0S5.cjs} +2 -2
- package/dist/{sheet-IzYy3H8n.cjs.map → sheet-BbrRW0S5.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-DuVcXyOB.js → sheet.service-4etIM-p6.js} +20 -18
- package/dist/sheet.service-4etIM-p6.js.map +1 -0
- package/dist/sheet.service-BiRZjCdN.cjs +2 -0
- package/dist/sheet.service-BiRZjCdN.cjs.map +1 -0
- package/dist/{slider-CFtbSQ9Y.js → slider-8E3Wad0t.js} +3 -3
- package/dist/{slider-CFtbSQ9Y.js.map → slider-8E3Wad0t.js.map} +1 -1
- package/dist/{slider-CGE_Qeok.cjs → slider-VYnbIRH2.cjs} +2 -2
- package/dist/{slider-CGE_Qeok.cjs.map → slider-VYnbIRH2.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/sound.service-Nza4c6wv.js +102 -0
- package/dist/sound.service-Nza4c6wv.js.map +1 -0
- package/dist/sound.service-eRirZw59.cjs +2 -0
- package/dist/sound.service-eRirZw59.cjs.map +1 -0
- package/dist/{spinner-DAF-hCvQ.js → spinner-CKm13CKN.js} +15 -12
- package/dist/spinner-CKm13CKN.js.map +1 -0
- package/dist/{spinner-CSPJs8CL.cjs → spinner-DJgcI5wr.cjs} +9 -9
- package/dist/spinner-DJgcI5wr.cjs.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +2 -2
- package/dist/{suggestion-chip-CYu-4xrL.js → suggestion-chip-6njXvvHm.js} +50 -46
- package/dist/suggestion-chip-6njXvvHm.js.map +1 -0
- package/dist/{suggestion-chip-Cj8gwZqq.cjs → suggestion-chip-DdLfqk7o.cjs} +18 -23
- package/dist/suggestion-chip-DdLfqk7o.cjs.map +1 -0
- package/dist/{surface-DTOK-0E4.js → surface-BYU3l_Q2.js} +12 -11
- package/dist/surface-BYU3l_Q2.js.map +1 -0
- package/dist/{surface-VX_THUHv.cjs → surface-DcqbWGub.cjs} +5 -4
- package/dist/surface-DcqbWGub.cjs.map +1 -0
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-BV0-o9Wi.cjs → table-C9fzDjjk.cjs} +2 -2
- package/dist/{table-BV0-o9Wi.cjs.map → table-C9fzDjjk.cjs.map} +1 -1
- package/dist/{table-CkXbXqi9.js → table-Dq12ollZ.js} +3 -3
- package/dist/{table-CkXbXqi9.js.map → table-Dq12ollZ.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-DsfD60U_.cjs → tabs-compatibility-Dwtjfkcf.cjs} +2 -2
- package/dist/{tabs-compatibility-DsfD60U_.cjs.map → tabs-compatibility-Dwtjfkcf.cjs.map} +1 -1
- package/dist/{tabs-compatibility-D_BBW655.js → tabs-compatibility-wnzlHtln.js} +2 -2
- package/dist/{tabs-compatibility-D_BBW655.js.map → tabs-compatibility-wnzlHtln.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-Ddt05Frc.js +67 -0
- package/dist/{tailwind.mixin-wLaKUxf1.js.map → tailwind.mixin-Ddt05Frc.js.map} +1 -1
- package/dist/tailwind.mixin-UijsBrYW.cjs +2 -0
- package/dist/{tailwind.mixin-JFXu3GSo.cjs.map → tailwind.mixin-UijsBrYW.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/textarea-DGmsw1B_.cjs +44 -0
- package/dist/{textarea-B6LDhRed.cjs.map → textarea-DGmsw1B_.cjs.map} +1 -1
- package/dist/{textarea-TeVnUeIJ.js → textarea-Vd3zayJZ.js} +4 -3
- package/dist/{textarea-TeVnUeIJ.js.map → textarea-Vd3zayJZ.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-DxMbO3yP.cjs → theme-button-DG_Xwg9H.cjs} +2 -2
- package/dist/{theme-button-DxMbO3yP.cjs.map → theme-button-DG_Xwg9H.cjs.map} +1 -1
- package/dist/{theme-button-BXXqAu2Y.js → theme-button-rGpEW_xS.js} +2 -2
- package/dist/{theme-button-BXXqAu2Y.js.map → theme-button-rGpEW_xS.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/{theme-controller-boat-CVS77gnH.js → theme-controller-boat-B1fjcqJI.js} +420 -228
- package/dist/theme-controller-boat-B1fjcqJI.js.map +1 -0
- package/dist/theme-controller-boat-pLzK5zxL.cjs +178 -0
- package/dist/theme-controller-boat-pLzK5zxL.cjs.map +1 -0
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +13 -11
- package/dist/{timezone-D7YOMM8G.cjs → timezone-BhUaIAV7.cjs} +2 -2
- package/dist/{timezone-D7YOMM8G.cjs.map → timezone-BhUaIAV7.cjs.map} +1 -1
- package/dist/{timezone-RBV74f85.js → timezone-IQkwr6Oh.js} +3 -3
- package/dist/{timezone-RBV74f85.js.map → timezone-IQkwr6Oh.js.map} +1 -1
- package/dist/{tooltip-DssL6Qfx.js → tooltip-CwaiZC8f.js} +2 -2
- package/dist/{tooltip-DssL6Qfx.js.map → tooltip-CwaiZC8f.js.map} +1 -1
- package/dist/{tooltip-BH_RLoZI.cjs → tooltip-iEvxKg8g.cjs} +2 -2
- package/dist/{tooltip-BH_RLoZI.cjs.map → tooltip-iEvxKg8g.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-7Zz1sJKl.cjs → tree-Bclu6uvv.cjs} +2 -2
- package/dist/{tree-7Zz1sJKl.cjs.map → tree-Bclu6uvv.cjs.map} +1 -1
- package/dist/{tree-C33t9-0j.js → tree-D9EbEsxn.js} +2 -2
- package/dist/{tree-C33t9-0j.js.map → tree-D9EbEsxn.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-Dt1Js2lP.js → typewriter-BjDPgRlj.js} +5 -5
- package/dist/{typewriter-Dt1Js2lP.js.map → typewriter-BjDPgRlj.js.map} +1 -1
- package/dist/{typewriter-WbYqfXO7.cjs → typewriter-Bscwd-36.cjs} +4 -4
- package/dist/{typewriter-WbYqfXO7.cjs.map → typewriter-Bscwd-36.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-DdG9aEAg.js → typography-CConBBFH.js} +13 -53
- package/dist/typography-CConBBFH.js.map +1 -0
- package/dist/{typography-Ck-OdI83.cjs → typography-DLGT3DGz.cjs} +3 -46
- package/dist/typography-DLGT3DGz.cjs.map +1 -0
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/mixins/tailwind.css +37 -6
- package/package.json +21 -20
- package/types/src/area/area.service.d.ts +1 -1
- package/types/src/area/router.types.d.ts +1 -0
- package/types/src/audio/emotional-sounds.d.ts +122 -0
- package/types/src/audio/index.d.ts +30 -0
- package/types/src/audio/sound.service.d.ts +111 -0
- package/types/src/avatar.d.ts +10 -1
- package/types/src/busy/spinner.d.ts +6 -1
- package/types/src/button/button.d.ts +15 -2
- package/types/src/button/icon-button.d.ts +1 -1
- package/types/src/charts/area-chart.d.ts +58 -0
- package/types/src/charts/index.d.ts +4 -0
- package/types/src/charts/pills.d.ts +51 -0
- package/types/src/charts/types.d.ts +62 -0
- package/types/src/charts/utils.d.ts +28 -0
- package/types/src/checkbox/checkbox.d.ts +3 -2
- package/types/src/chips/chips.d.ts +2 -0
- package/types/src/content-drawer/drawer.service.d.ts +1 -7
- package/types/src/date-range/date-range-dialog.d.ts +16 -0
- package/types/src/date-range/date-range.d.ts +1 -1
- package/types/src/details/details.d.ts +3 -7
- package/types/src/dialog/dailog.d.ts +1 -5
- package/types/src/dialog/dialog-base.mixin.d.ts +26 -0
- package/types/src/dialog/dialog-service.d.ts +3 -66
- package/types/src/dialog/dialog.component.d.ts +63 -30
- package/types/src/dialog/index.d.ts +1 -3
- package/types/src/directives/height.d.ts +11 -6
- package/types/src/icons/icon.d.ts +17 -0
- package/types/src/index.d.ts +6 -0
- package/types/src/input/input.d.ts +13 -9
- package/types/src/json/index.d.ts +1 -0
- package/types/src/json/json.d.ts +15 -0
- package/types/src/lightbox/flip-directive.d.ts +29 -0
- package/types/src/lightbox/flip.directive.d.ts +22 -0
- package/types/src/lightbox/index.d.ts +4 -0
- package/types/src/lightbox/lightbox-service.d.ts +24 -0
- package/types/src/lightbox/lightbox.d.ts +34 -0
- package/types/src/lightbox/lightbox.directive.d.ts +30 -0
- package/types/src/nav-drawer/appbar.d.ts +0 -5
- package/types/src/nav-drawer/drawer.d.ts +1 -32
- package/types/src/notification/index.d.ts +1 -3
- package/types/src/notification/notification-service.d.ts +13 -1
- package/types/src/notification/notification.d.ts +13 -12
- package/types/src/notification/notify.d.ts +1 -1
- package/types/src/page/index.d.ts +1 -0
- package/types/src/page/page.d.ts +31 -0
- package/types/src/progress/progress.d.ts +2 -2
- package/types/src/qr-scanner/index.d.ts +1 -0
- package/types/src/qr-scanner/qr-scanner.d.ts +26 -0
- package/types/src/select/select.d.ts +1 -1
- package/types/src/theme/index.d.ts +1 -0
- package/types/src/theme/theme-audio-player.d.ts +100 -0
- package/types/src/theme/theme-controller-boat.d.ts +1 -0
- package/types/src/theme/theme.component.d.ts +1 -1
- package/types/src/types/index.d.ts +1 -0
- package/types/src/types/mood-audio.types.d.ts +173 -0
- package/types/src/typography/typography.d.ts +1 -0
- package/dist/area.component-BzjJiNTJ.js.map +0 -1
- package/dist/area.component-FL_IUylM.cjs +0 -12
- package/dist/area.component-FL_IUylM.cjs.map +0 -1
- package/dist/avatar-B_uJN9WV.cjs +0 -288
- package/dist/avatar-B_uJN9WV.cjs.map +0 -1
- package/dist/avatar-C8P4lVfa.js.map +0 -1
- package/dist/context-create-BJkkLr1D.cjs +0 -2
- package/dist/context-create-BJkkLr1D.cjs.map +0 -1
- package/dist/context-create-BvxbWTgj.js.map +0 -1
- package/dist/date-range-Cm0TCfwu.js +0 -664
- package/dist/date-range-Cm0TCfwu.js.map +0 -1
- package/dist/date-range-Cy97kOP_.cjs +0 -134
- package/dist/date-range-Cy97kOP_.cjs.map +0 -1
- package/dist/delay-BINGOQ7f.js.map +0 -1
- package/dist/delay-CXFIM6qK.cjs.map +0 -1
- package/dist/details-CLRikV4s.cjs +0 -64
- package/dist/details-CLRikV4s.cjs.map +0 -1
- package/dist/details-bgq2X_hO.js +0 -115
- package/dist/details-bgq2X_hO.js.map +0 -1
- package/dist/dialog-content-B59ekS_y.cjs +0 -85
- package/dist/dialog-content-B59ekS_y.cjs.map +0 -1
- package/dist/dialog-content-Cu7fqN8Y.js +0 -256
- package/dist/dialog-content-Cu7fqN8Y.js.map +0 -1
- package/dist/dialog-service-B4nR8Em5.cjs +0 -2
- package/dist/dialog-service-B4nR8Em5.cjs.map +0 -1
- package/dist/dialog-service-Bege4HF4.js +0 -140
- package/dist/dialog-service-Bege4HF4.js.map +0 -1
- package/dist/flex-CYQU6Pf8.js +0 -260
- package/dist/flex-CYQU6Pf8.js.map +0 -1
- package/dist/flex-DytMcHmq.cjs +0 -43
- package/dist/flex-DytMcHmq.cjs.map +0 -1
- package/dist/icon-C8Q_XMtJ.cjs +0 -49
- package/dist/icon-C8Q_XMtJ.cjs.map +0 -1
- package/dist/icon-Y2qLOFqe.js.map +0 -1
- package/dist/icon-button-CJ6AVTv9.js +0 -156
- package/dist/icon-button-CJ6AVTv9.js.map +0 -1
- package/dist/icon-button-IdG1NVgA.cjs +0 -65
- package/dist/icon-button-IdG1NVgA.cjs.map +0 -1
- package/dist/input-DDCFZ3cr.js.map +0 -1
- package/dist/input-UyknNHNr.cjs +0 -51
- package/dist/input-UyknNHNr.cjs.map +0 -1
- package/dist/menu-CUKV4pVJ.js +0 -61
- package/dist/navigation-rail-CYKfvZs9.js.map +0 -1
- package/dist/navigation-rail-DXr4NJnN.cjs.map +0 -1
- package/dist/notification-service-CZ56fXew.js +0 -532
- package/dist/notification-service-CZ56fXew.js.map +0 -1
- package/dist/notification-service-DQGs9O0f.cjs +0 -143
- package/dist/notification-service-DQGs9O0f.cjs.map +0 -1
- package/dist/notify-KvHZ-8z9.js.map +0 -1
- package/dist/notify-VkDx6hMZ.cjs.map +0 -1
- package/dist/progress-D5kgn2Fg.js +0 -58
- package/dist/progress-D5kgn2Fg.js.map +0 -1
- package/dist/progress-yFxoJDYf.cjs +0 -35
- package/dist/progress-yFxoJDYf.cjs.map +0 -1
- package/dist/ripple-QoNZUUw_.js +0 -148
- package/dist/ripple-QoNZUUw_.js.map +0 -1
- package/dist/ripple-Ujq_REH4.cjs +0 -16
- package/dist/ripple-Ujq_REH4.cjs.map +0 -1
- package/dist/select-C-Kv7ey_.cjs.map +0 -1
- package/dist/select-DSTQ-Zau.js.map +0 -1
- package/dist/sheet.service-BNz-ird-.cjs +0 -2
- package/dist/sheet.service-BNz-ird-.cjs.map +0 -1
- package/dist/sheet.service-DuVcXyOB.js.map +0 -1
- package/dist/spinner-CSPJs8CL.cjs.map +0 -1
- package/dist/spinner-DAF-hCvQ.js.map +0 -1
- package/dist/suggestion-chip-CYu-4xrL.js.map +0 -1
- package/dist/suggestion-chip-Cj8gwZqq.cjs.map +0 -1
- package/dist/surface-DTOK-0E4.js.map +0 -1
- package/dist/surface-VX_THUHv.cjs.map +0 -1
- package/dist/tailwind.mixin-JFXu3GSo.cjs +0 -2
- package/dist/tailwind.mixin-wLaKUxf1.js +0 -67
- package/dist/textarea-B6LDhRed.cjs +0 -44
- package/dist/theme-controller-boat-CCBNOGxF.cjs +0 -64
- package/dist/theme-controller-boat-CCBNOGxF.cjs.map +0 -1
- package/dist/theme-controller-boat-CVS77gnH.js.map +0 -1
- package/dist/typography-Ck-OdI83.cjs.map +0 -1
- package/dist/typography-DdG9aEAg.js.map +0 -1
- package/types/src/notification/notification-audio-generator.d.ts +0 -45
- package/types/src/notification/notification-audio.d.ts +0 -79
- package/types/src/notification/notification-container.d.ts +0 -48
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";const u=require("rxjs"),p=require("rxjs/operators");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const o=require("lit/decorators.js"),m=require("./tailwind.mixin-UijsBrYW.cjs"),n=require("lit"),d=require("lit/directives/ref.js"),h=require("lit/directives/when.js");var y=Object.defineProperty,f=Object.getOwnPropertyDescriptor,i=(e,t,s,a)=>{for(var l,r=a>1?void 0:a?f(t,s):t,c=e.length-1;c>=0;c--)(l=e[c])&&(r=(a?l(t,s,r):l(r))||r);return a&&r&&y(t,s,r),r};exports.SchmancyDetails=class extends m.TailwindElement(n.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: block;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
:host([overlay]) {
|
|
7
|
+
position: relative;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
summary::-webkit-details-marker {
|
|
11
|
+
display: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
summary {
|
|
15
|
+
list-style: none;
|
|
16
|
+
}
|
|
17
|
+
`){constructor(){super(...arguments),this.summary="",this.indicatorPlacement="end",this.hideIndicator=!1,this.locked=!1,this.overlay=!1,this._open$=new u.BehaviorSubject(!1),this._indicatorRef=d.createRef()}get open(){return this._open$.value}set open(e){this._open$.value!==e&&(this._open$.next(e),this._animateIndicator(e))}connectedCallback(){super.connectedCallback(),this._open$.pipe(p.takeUntil(this.disconnecting)).subscribe(()=>this.requestUpdate())}render(){const e=this._open$.value,t=this.classMap({"w-full rounded-xl border transition-all duration-200 ease-out":!0,"overflow-hidden":!this.overlay,"overflow-visible relative":this.overlay,"border-outline-variant":!e,"border-outline shadow-xl z-10":e}),s=this.classMap({"select-none relative flex items-center gap-2 rounded-xl text-surface-on transition-colors duration-200":!0,"cursor-pointer group hover:bg-surface-on/[0.08] focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1":!this.locked,"cursor-default":this.locked,"flex-row":this.indicatorPlacement==="start","flex-row-reverse":this.indicatorPlacement==="end"}),a=this.classMap({"text-surface-on-variant text-sm":!0,"absolute inset-x-0 bg-surface-container/80 backdrop-blur-2xl shadow-2xl rounded-b-xl z-20 border-x border-b border-outline-variant":this.overlay});return n.html`
|
|
18
|
+
<details
|
|
19
|
+
?open=${e}
|
|
20
|
+
@toggle=${this._handleToggle}
|
|
21
|
+
class=${t}
|
|
22
|
+
>
|
|
23
|
+
<summary
|
|
24
|
+
class=${s}
|
|
25
|
+
tabindex=${this.locked?-1:0}
|
|
26
|
+
@click=${this._handleSummaryClick}
|
|
27
|
+
>
|
|
28
|
+
${h.when(!this.hideIndicator,()=>n.html`
|
|
29
|
+
<span
|
|
30
|
+
${d.ref(this._indicatorRef)}
|
|
31
|
+
class="flex items-center justify-center w-5 h-5 rounded-full shrink-0 text-surface-on-variant group-hover:text-surface-on will-change-transform"
|
|
32
|
+
>
|
|
33
|
+
<slot name="indicator">
|
|
34
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" class="w-5 h-5" aria-hidden="true">
|
|
35
|
+
<path d="M9 6L15 12L9 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
36
|
+
</svg>
|
|
37
|
+
</slot>
|
|
38
|
+
</span>
|
|
39
|
+
`)}
|
|
40
|
+
|
|
41
|
+
<span class="flex-1 font-medium text-base">
|
|
42
|
+
<slot name="summary">${this.summary}</slot>
|
|
43
|
+
</span>
|
|
44
|
+
</summary>
|
|
45
|
+
|
|
46
|
+
${h.when(e,()=>n.html`
|
|
47
|
+
<div class=${a}>
|
|
48
|
+
<slot></slot>
|
|
49
|
+
<slot name="details"></slot>
|
|
50
|
+
|
|
51
|
+
</div>
|
|
52
|
+
`)}
|
|
53
|
+
</details>
|
|
54
|
+
`}_animateIndicator(e){const t=this._indicatorRef.value;t&&(this._currentAnimation?.cancel(),this._currentAnimation=t.animate([{transform:`rotate(${e?"0deg":"90deg"})`},{transform:`rotate(${e?"90deg":"0deg"})`}],{duration:200,easing:"ease-out",fill:"forwards"}))}_handleSummaryClick(e){this.locked&&e.preventDefault()}_handleToggle(e){const t=e.target.open;this._open$.value!==t&&(this._open$.next(t),this._animateIndicator(t),this.dispatchEvent(new CustomEvent("toggle",{detail:{open:t},bubbles:!0,composed:!0})))}},exports.SchmancyDetails.shadowRootOptions={...n.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!0},i([o.property()],exports.SchmancyDetails.prototype,"summary",2),i([o.property({type:Boolean,reflect:!0})],exports.SchmancyDetails.prototype,"open",1),i([o.property({attribute:"indicator-placement",reflect:!0})],exports.SchmancyDetails.prototype,"indicatorPlacement",2),i([o.property({type:Boolean,attribute:"hide-indicator"})],exports.SchmancyDetails.prototype,"hideIndicator",2),i([o.property({type:Boolean,reflect:!0})],exports.SchmancyDetails.prototype,"locked",2),i([o.property({type:Boolean,reflect:!0})],exports.SchmancyDetails.prototype,"overlay",2),exports.SchmancyDetails=i([o.customElement("schmancy-details")],exports.SchmancyDetails);
|
|
55
|
+
//# sourceMappingURL=details-oaVHXU7U.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"details-oaVHXU7U.cjs","sources":["../src/details/details.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { BehaviorSubject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\n\t:host([overlay]) {\n\t\tposition: relative;\n\t}\n\n\tsummary::-webkit-details-marker {\n\t\tdisplay: none;\n\t}\n\n\tsummary {\n\t\tlist-style: none;\n\t}\n`) {\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\tthis._animateIndicator(value)\n\t\t}\n\t}\n\n\t// Indicator control\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: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\t\n\t\tthis._open$\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\t// Neutral styling with subtle border - inherits from parent surface\n\t\t// Add elevation when open, relative positioning for overlay mode\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl border transition-all duration-200 ease-out': true,\n\t\t\t'overflow-hidden': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t\t'border-outline-variant': !isOpen,\n\t\t\t'border-outline shadow-xl z-10': isOpen,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl text-surface-on transition-colors duration-200': true,\n\t\t\t'cursor-pointer group hover:bg-surface-on/[0.08] focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !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'text-surface-on-variant text-sm': true,\n\t\t\t// Overlay mode: glass effect with absolute positioning (like HannahOrderTracking pattern)\n\t\t\t'absolute inset-x-0 bg-surface-container/80 backdrop-blur-2xl shadow-2xl rounded-b-xl z-20 border-x border-b border-outline-variant': this.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details\n\t\t\t\t?open=${isOpen}\n\t\t\t\t@toggle=${this._handleToggle}\n\t\t\t\tclass=${detailsClasses}\n\t\t\t>\n\t\t\t\t<summary\n\t\t\t\t\tclass=${summaryClasses}\n\t\t\t\t\ttabindex=${this.locked ? -1 : 0}\n\t\t\t\t\t@click=${this._handleSummaryClick}\n\t\t\t\t>\n\t\t\t\t\t${when(!this.hideIndicator, () => html`\n\t\t\t\t\t<span\n\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 text-surface-on-variant group-hover:text-surface-on will-change-transform\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<slot name=\"indicator\">\n\t\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" class=\"w-5 h-5\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<path d=\"M9 6L15 12L9 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</slot>\n\t\t\t\t\t</span>\n\t\t\t\t`)}\n\n\t\t\t\t\t<span class=\"flex-1 font-medium text-base\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\t\t\t\t</summary>\n\n\t\t\t\t${when(isOpen, () => html`\n\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t<slot name=\"details\"></slot>\n\n\t\t\t\t\t</div>\n\t\t\t\t`)}\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator) return\n\n\t\t// Cancel any existing animation\n\t\tthis._currentAnimation?.cancel()\n\n\t\t// Animate with Web Animations API\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : '90deg'})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? '90deg' : '0deg'})` }\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 200,\n\t\t\t\teasing: 'ease-out',\n\t\t\t\tfill: 'forwards'\n\t\t\t}\n\t\t)\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\t// Prevent toggle when locked\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\t// Locked state is handled by _handleSummaryClick preventing the event\n\t\tconst details = e.target as HTMLDetailsElement\n\t\tconst newState = details.open\n\n\t\tif (this._open$.value !== newState) {\n\t\t\tthis._open$.next(newState)\n\t\t\tthis._animateIndicator(newState)\n\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { detail: { open: newState }, bubbles: true, composed: true }))\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"names":["SchmancyDetails","TailwindElement","css","constructor","super","arguments","this","summary","indicatorPlacement","hideIndicator","locked","overlay","_open$","BehaviorSubject","_indicatorRef","createRef","open","value","next","_animateIndicator","connectedCallback","pipe","takeUntil","disconnecting","subscribe","requestUpdate","render","isOpen","detailsClasses","classMap","summaryClasses","contentClasses","html","_handleToggle","_handleSummaryClick","when","ref","indicator","_currentAnimation","cancel","animate","transform","duration","easing","fill","e","preventDefault","newState","target","dispatchEvent","CustomEvent","detail","bubbles","composed","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","prototype","type","Boolean","reflect","attribute","customElement"],"mappings":"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"}
|
package/dist/details.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./details-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./details-oaVHXU7U.cjs");Object.defineProperty(exports,"SchmancyDetails",{enumerable:!0,get:()=>e.SchmancyDetails});
|
|
2
2
|
//# sourceMappingURL=details.cjs.map
|
package/dist/details.js
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const d=require("lit"),n=require("rxjs"),m=require("./theme.events-Car6U_SQ.cjs"),g="are-you-there-dialog",h="yes-dialog-here",a=class a{constructor(){this.activeDialogs=[],this.dialogSubject=new n.Subject,this.dismissSubject=new n.Subject,this.setupDialogOpeningLogic(),this.setupDialogDismissLogic()}static getInstance(){return a.instance||(a.instance=new a),a.instance}setupDialogOpeningLogic(){this.dialogSubject.pipe(n.switchMap(e=>n.forkJoin([n.fromEvent(window,m.ThemeHereIAm).pipe(n.takeUntil(n.timer(50)),n.map(t=>t.detail.theme),n.defaultIfEmpty(void 0)),n.of(e).pipe(n.tap(()=>{const t=`dialog-${Date.now()}-${Math.random().toString(36).substring(2,9)}`;window.dispatchEvent(new CustomEvent(m.ThemeWhereAreYou,{bubbles:!0,composed:!0})),e.uid=t}))])),n.map(([e,t])=>{const o=e||t.options.targetContainer||document.querySelector("schmancy-theme")||document.body,i=t.uid,s=document.createElement("schmancy-dialog");return s.setAttribute("uid",i),o.appendChild(s),{dialog:s,target:t}}),n.tap(({dialog:e,target:t})=>{const o=t.options;if(t.type==="confirm"){if(e.title=o.title,e.subtitle=o.subtitle,e.message=o.message,e.confirmText=o.confirmText??"Confirm",e.cancelText=o.cancelText??"Cancel",e.variant=o.variant??"default",o.content){const i=document.createElement("div");if(i.slot="content",typeof o.content=="function"){const s=o.content();s instanceof HTMLElement?i.appendChild(s):d.render(s,i)}else o.content instanceof HTMLElement?i.appendChild(o.content):d.render(o.content,i);e.appendChild(i)}}else if(e.hideActions=!0,t.content){const i=document.createElement("div");if(i.style.height="100%",i.style.width="100%",i.classList.add("schmancy-dialog-content-container"),typeof t.content=="function"){const s=t.content();s instanceof HTMLElement?i.appendChild(s):d.render(s,i)}else t.content instanceof HTMLElement?i.appendChild(t.content):d.render(t.content,i);e.appendChild(i)}this.activeDialogs.push(e)}),n.tap(({dialog:e,target:t})=>{const o=t.options.position||this.getCenteredPosition();e.show(o).then(s=>{t.resolve?.(s);const p=this.activeDialogs.indexOf(e);p!==-1&&this.activeDialogs.splice(p,1);const u=e.querySelector('[slot="content"]');u&&e.removeChild(u);const l=e.querySelector(".schmancy-dialog-content-container");l?.parentNode&&l.parentNode.removeChild(l),e._eventSubscriptions?.forEach(f=>f.unsubscribe()),e.parentElement?.removeChild(e)}).catch(s=>{t.reject?.(s)});const i=[];if(t.options.onConfirm){const s=n.fromEvent(e,"confirm").subscribe(()=>{t.options.onConfirm(),s.unsubscribe()});i.push(s)}if(t.options.onCancel){const s=n.fromEvent(e,"cancel").subscribe(()=>{t.options.onCancel(),s.unsubscribe()});i.push(s)}e._eventSubscriptions=i})).subscribe()}setupDialogDismissLogic(){this.dismissSubject.pipe(n.switchMap(e=>n.forkJoin([n.fromEvent(window,h).pipe(n.takeUntil(n.timer(100)),n.map(t=>t.detail),n.defaultIfEmpty(void 0)),n.of(e).pipe(n.tap(()=>{window.dispatchEvent(new CustomEvent(g,{detail:{uid:e},bubbles:!0,composed:!0}))}))])),n.tap(([e])=>{if(e?.dialog){e.dialog.hide(!1),e.dialog._eventSubscriptions?.forEach(i=>i.unsubscribe());const o=this.activeDialogs.indexOf(e.dialog);o!==-1&&this.activeDialogs.splice(o,1),e.dialog.parentElement?.removeChild(e.dialog)}})).subscribe()}confirm(e){return new Promise((t,o)=>{const i={...a.DEFAULT_OPTIONS,...e};i.position||(i.position=this.getCenteredPosition()),this.dialogSubject.next({options:i,type:"confirm",content:i.content,resolve:t,reject:o})})}component(e,t={}){return new Promise((o,i)=>{t.position||(t.position=this.getCenteredPosition()),this.dialogSubject.next({options:t,type:"component",content:e,resolve:o,reject:i})})}dismiss(){if(this.activeDialogs.length>0){const e=this.activeDialogs[this.activeDialogs.length-1].getAttribute("uid");if(e)return this.dismissSubject.next(e),!0}return!1}close(){return this.dismiss()}ask(e,t){return this.confirm({message:e,confirmText:"Confirm",cancelText:"Cancel",position:t})}danger(e){return this.confirm({...e,variant:"danger"})}getCenteredPosition(){return{x:window.innerWidth/2,y:window.innerHeight/2}}};a.DEFAULT_OPTIONS={title:void 0,subtitle:void 0,confirmText:void 0,cancelText:void 0,variant:"default"};let c=a;const b={confirm:r=>c.getInstance().confirm(r),ask:(r,e)=>c.getInstance().ask(r,e),danger:r=>c.getInstance().danger(r),component:(r,e)=>c.getInstance().component(r,e),dismiss:()=>c.getInstance().dismiss(),close:()=>c.getInstance().close()};exports.$dialog=b,exports.DialogHereMorty=h,exports.DialogService=c,exports.DialogWhereAreYouRicky=g;
|
|
2
|
+
//# sourceMappingURL=dialog-service-C86xTS8q.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-service-C86xTS8q.cjs","sources":["../src/dialog/dialog-events.ts","../src/dialog/dialog-service.ts"],"sourcesContent":["// Dialog discovery event constants\r\nexport const DialogWhereAreYouRicky = 'are-you-there-dialog'\r\nexport const DialogHereMorty = 'yes-dialog-here'\r\n\r\n// Event interfaces\r\nexport interface DialogWhereAreYouRickyEvent extends CustomEvent {\r\n detail: {\r\n uid: string\r\n }\r\n}\r\n\r\nexport interface DialogHereMortyEvent extends CustomEvent {\r\n detail: {\r\n dialog: any // Will be schmancy-dialog instance\r\n theme?: any // Will be schmancy-theme instance\r\n }\r\n}","import { render, TemplateResult } from 'lit'\nimport { defaultIfEmpty, forkJoin, fromEvent, map, of, Subject, Subscription, switchMap, takeUntil, tap, timer } from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from '../theme/theme.events'\nimport { SchmancyDialog } from './dialog.component'\nimport { DialogHereMorty, DialogHereMortyEvent, DialogWhereAreYouRicky } from './dialog-events'\n\n/**\n * Dialog service options interface\n */\nexport interface DialogOptions {\n\ttitle?: string\n\tsubtitle?: string\n\tmessage?: string\n\tconfirmText?: string\n\tcancelText?: string\n\tvariant?: 'default' | 'danger'\n\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\tonConfirm?: () => void\n\tonCancel?: () => void\n\thideActions?: boolean\n\ttargetContainer?: HTMLElement\n}\n\ninterface DialogTarget {\n\toptions: DialogOptions\n\ttype: 'confirm' | 'component'\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\tresolve?: (value: boolean) => void\n\treject?: (reason?: unknown) => void\n}\n\n/**\n * Dialog service for centralized dialog management.\n * Uses a single unified SchmancyDialog component for all dialog types.\n */\nexport class DialogService {\n\tprivate static instance: DialogService\n\n\tprivate static DEFAULT_OPTIONS: Partial<DialogOptions> = {\n\t\ttitle: undefined,\n\t\tsubtitle: undefined,\n\t\tconfirmText: undefined,\n\t\tcancelText: undefined,\n\t\tvariant: 'default',\n\t}\n\n\t// Single array to track all dialogs\n\tprivate activeDialogs: SchmancyDialog[] = []\n\n\tprivate dialogSubject = new Subject<DialogTarget>()\n\tprivate dismissSubject = new Subject<string>()\n\n\tprivate constructor() {\n\t\tthis.setupDialogOpeningLogic()\n\t\tthis.setupDialogDismissLogic()\n\t}\n\n\tpublic static getInstance(): DialogService {\n\t\tif (!DialogService.instance) {\n\t\t\tDialogService.instance = new DialogService()\n\t\t}\n\t\treturn DialogService.instance\n\t}\n\n\tprivate setupDialogOpeningLogic() {\n\t\tthis.dialogSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail.theme),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tconst uid = `dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t;(target as { uid?: string }).uid = uid\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tmap(([theme, target]) => {\n\t\t\t\t\tconst targetContainer =\n\t\t\t\t\t\ttheme ||\n\t\t\t\t\t\ttarget.options.targetContainer ||\n\t\t\t\t\t\t(document.querySelector('schmancy-theme') as HTMLElement) ||\n\t\t\t\t\t\tdocument.body\n\n\t\t\t\t\tconst uid = (target as { uid?: string }).uid!\n\t\t\t\t\tconst dialog = document.createElement('schmancy-dialog') as SchmancyDialog\n\t\t\t\t\tdialog.setAttribute('uid', uid)\n\t\t\t\t\ttargetContainer.appendChild(dialog)\n\n\t\t\t\t\treturn { dialog, target }\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\tconst options = target.options\n\n\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t// Configure for confirm mode\n\t\t\t\t\t\tdialog.title = options.title\n\t\t\t\t\t\tdialog.subtitle = options.subtitle\n\t\t\t\t\t\tdialog.message = options.message\n\t\t\t\t\t\tdialog.confirmText = options.confirmText ?? 'Confirm'\n\t\t\t\t\t\tdialog.cancelText = options.cancelText ?? 'Cancel'\n\t\t\t\t\t\tdialog.variant = options.variant ?? 'default'\n\n\t\t\t\t\t\t// Handle custom content slot\n\t\t\t\t\t\tif (options.content) {\n\t\t\t\t\t\t\tconst contentContainer = document.createElement('div')\n\t\t\t\t\t\t\tcontentContainer.slot = 'content'\n\n\t\t\t\t\t\t\tif (typeof options.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = options.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tcontentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, contentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (options.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tcontentContainer.appendChild(options.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(options.content, contentContainer)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdialog.appendChild(contentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Configure for content mode\n\t\t\t\t\t\tdialog.hideActions = true\n\n\t\t\t\t\t\tif (target.content) {\n\t\t\t\t\t\t\tconst contentContainer = document.createElement('div')\n\t\t\t\t\t\t\tcontentContainer.style.height = '100%'\n\t\t\t\t\t\t\tcontentContainer.style.width = '100%'\n\t\t\t\t\t\t\tcontentContainer.classList.add('schmancy-dialog-content-container')\n\n\t\t\t\t\t\t\tif (typeof target.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = target.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tcontentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, contentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tcontentContainer.appendChild(target.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(target.content, contentContainer)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdialog.appendChild(contentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.activeDialogs.push(dialog)\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\tconst position = target.options.position || this.getCenteredPosition()\n\n\t\t\t\t\tdialog\n\t\t\t\t\t\t.show(position)\n\t\t\t\t\t\t.then((result: boolean) => {\n\t\t\t\t\t\t\ttarget.resolve?.(result)\n\n\t\t\t\t\t\t\t// Cleanup\n\t\t\t\t\t\t\tconst index = this.activeDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentEl = dialog.querySelector('[slot=\"content\"]')\n\t\t\t\t\t\t\tif (contentEl) dialog.removeChild(contentEl)\n\n\t\t\t\t\t\t\tconst contentContainer = dialog.querySelector('.schmancy-dialog-content-container')\n\t\t\t\t\t\t\tif (contentContainer?.parentNode) {\n\t\t\t\t\t\t\t\tcontentContainer.parentNode.removeChild(contentContainer)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Clean up event subscriptions\n\t\t\t\t\t\t\tconst eventSubscriptions = (dialog as unknown as { _eventSubscriptions?: Subscription[] })\n\t\t\t\t\t\t\t\t._eventSubscriptions\n\t\t\t\t\t\t\teventSubscriptions?.forEach(sub => sub.unsubscribe())\n\n\t\t\t\t\t\t\t// Remove from DOM\n\t\t\t\t\t\t\tdialog.parentElement?.removeChild(dialog)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\t\t\ttarget.reject?.(error)\n\t\t\t\t\t\t})\n\n\t\t\t\t\t// Set up event listeners\n\t\t\t\t\tconst eventSubscriptions: Subscription[] = []\n\n\t\t\t\t\tif (target.options.onConfirm) {\n\t\t\t\t\t\tconst confirmSub = fromEvent(dialog, 'confirm').subscribe(() => {\n\t\t\t\t\t\t\ttarget.options.onConfirm!()\n\t\t\t\t\t\t\tconfirmSub.unsubscribe()\n\t\t\t\t\t\t})\n\t\t\t\t\t\teventSubscriptions.push(confirmSub)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target.options.onCancel) {\n\t\t\t\t\t\tconst cancelSub = fromEvent(dialog, 'cancel').subscribe(() => {\n\t\t\t\t\t\t\ttarget.options.onCancel!()\n\t\t\t\t\t\t\tcancelSub.unsubscribe()\n\t\t\t\t\t\t})\n\t\t\t\t\t\teventSubscriptions.push(cancelSub)\n\t\t\t\t\t}\n\n\t\t\t\t\t;(dialog as unknown as { _eventSubscriptions: Subscription[] })._eventSubscriptions = eventSubscriptions\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate setupDialogDismissLogic() {\n\t\tthis.dismissSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([response]) => {\n\t\t\t\t\tif (response?.dialog) {\n\t\t\t\t\t\tresponse.dialog.hide(false)\n\n\t\t\t\t\t\tconst eventSubscriptions = (response.dialog as unknown as { _eventSubscriptions?: Subscription[] })\n\t\t\t\t\t\t\t._eventSubscriptions\n\t\t\t\t\t\teventSubscriptions?.forEach(sub => sub.unsubscribe())\n\n\t\t\t\t\t\tconst index = this.activeDialogs.indexOf(response.dialog as SchmancyDialog)\n\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\tthis.activeDialogs.splice(index, 1)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponse.dialog.parentElement?.removeChild(response.dialog)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tpublic confirm(options: DialogOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst completeOptions = {\n\t\t\t\t...DialogService.DEFAULT_OPTIONS,\n\t\t\t\t...options,\n\t\t\t}\n\n\t\t\tif (!completeOptions.position) {\n\t\t\t\tcompleteOptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next({\n\t\t\t\toptions: completeOptions,\n\t\t\t\ttype: 'confirm',\n\t\t\t\tcontent: completeOptions.content,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic component(\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions: Omit<DialogOptions, 'content' | 'message'> = {},\n\t): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!options.position) {\n\t\t\t\toptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next({\n\t\t\t\toptions: options as DialogOptions,\n\t\t\t\ttype: 'component',\n\t\t\t\tcontent,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic dismiss(): boolean {\n\t\tif (this.activeDialogs.length > 0) {\n\t\t\tconst dialog = this.activeDialogs[this.activeDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\n\tpublic close(): boolean {\n\t\treturn this.dismiss()\n\t}\n\n\tpublic ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tconfirmText: 'Confirm',\n\t\t\tcancelText: 'Cancel',\n\t\t\tposition: event,\n\t\t})\n\t}\n\n\tpublic danger(options: Omit<DialogOptions, 'variant'>): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\t...options,\n\t\t\tvariant: 'danger',\n\t\t})\n\t}\n\n\tprivate getCenteredPosition(): { x: number; y: number } {\n\t\treturn {\n\t\t\tx: window.innerWidth / 2,\n\t\t\ty: window.innerHeight / 2,\n\t\t}\n\t}\n}\n\n/**\n * Global dialog utility\n */\nexport const $dialog = {\n\tconfirm: (options: DialogOptions): Promise<boolean> => {\n\t\treturn DialogService.getInstance().confirm(options)\n\t},\n\n\task: (message: string, event?: MouseEvent | TouchEvent): Promise<boolean> => {\n\t\treturn DialogService.getInstance().ask(message, event)\n\t},\n\n\tdanger: (options: Omit<DialogOptions, 'variant'>): Promise<boolean> => {\n\t\treturn DialogService.getInstance().danger(options)\n\t},\n\n\tcomponent: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\tdismiss: (): boolean => {\n\t\treturn DialogService.getInstance().dismiss()\n\t},\n\n\tclose: (): boolean => {\n\t\treturn DialogService.getInstance().close()\n\t},\n}\n\nexport default DialogService\n"],"names":["DialogWhereAreYouRicky","DialogHereMorty","DialogService","this","activeDialogs","dialogSubject","Subject","dismissSubject","setupDialogOpeningLogic","setupDialogDismissLogic","instance","pipe","switchMap","forkJoin","fromEvent","window","ThemeHereIAm","takeUntil","timer","map","e","detail","theme","defaultIfEmpty","of","target","tap","uid","Date","now","Math","random","toString","substring","dispatchEvent","CustomEvent","ThemeWhereAreYou","bubbles","composed","targetContainer","options","document","querySelector","body","dialog","createElement","setAttribute","appendChild","type","title","subtitle","message","confirmText","cancelText","variant","content","contentContainer","slot","result","HTMLElement","render","hideActions","style","height","width","classList","add","push","position","getCenteredPosition","show","then","resolve","index","indexOf","splice","contentEl","removeChild","parentNode","_eventSubscriptions","forEach","sub","unsubscribe","parentElement","catch","error","reject","eventSubscriptions","onConfirm","confirmSub","subscribe","onCancel","cancelSub","response","hide","Promise","completeOptions","DEFAULT_OPTIONS","next","dismiss","length","getAttribute","event","confirm","x","innerWidth","y","innerHeight","_s","$dialog","getInstance","ask","danger","component","close"],"mappings":"+FACaA,EAAyB,uBACzBC,EAAkB,kBCkClBC,EAAN,MAAMA,CAAAA,CAiBJ,cALRC,KAAQC,cAAkC,CAAA,EAE1CD,KAAQE,cAAgB,IAAIC,UAC5BH,KAAQI,eAAiB,IAAID,UAG5BH,KAAKK,wBAAAA,EACLL,KAAKM,yBACN,CAEA,OAAA,cAIC,OAHKP,EAAcQ,WAClBR,EAAcQ,SAAW,IAAIR,GAEvBA,EAAcQ,QACtB,CAEQ,yBAAAF,CACPL,KAAKE,cACHM,KACAC,EAAAA,aACCC,EAAAA,SAAS,CACRC,YAA6BC,OAAQC,EAAAA,YAAAA,EAAcL,KAClDM,YAAUC,EAAAA,MAAM,EAAA,CAAA,EAChBC,EAAAA,IAAIC,GAAKA,EAAEC,OAAOC,KAAAA,EAClBC,EAAAA,eAAAA,MAAe,CAAA,EAEhBC,EAAAA,GAAGC,CAAAA,EAAQd,KACVe,EAAAA,IAAI,IAAA,CACH,MAAMC,EAAM,UAAUC,KAAKC,SAASC,KAAKC,OAAAA,EAASC,SAAS,EAAA,EAAIC,UAAU,EAAG,CAAA,CAAA,GAC5ElB,OAAOmB,cACN,IAAIC,YAAYC,EAAAA,iBAAkB,CACjCC,QAAAA,GACAC,WAAU,CAAA,CAAA,EAGVb,EAA4BE,IAAMA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAKxCR,EAAAA,IAAI,CAAA,CAAEG,EAAOG,MACZ,MAAMc,EACLjB,GACAG,EAAOe,QAAQD,iBACdE,SAASC,cAAc,gBAAA,GACxBD,SAASE,KAEJhB,EAAOF,EAA4BE,IACnCiB,EAASH,SAASI,cAAc,iBAAA,EAItC,OAHAD,EAAOE,aAAa,MAAOnB,GAC3BY,EAAgBQ,YAAYH,CAAAA,EAErB,CAAEA,SAAQnB,OAAAA,CAAAA,CAAAA,CAAAA,EAElBC,EAAAA,IAAI,CAAA,CAAGkB,OAAAA,EAAQnB,aACd,MAAMe,EAAUf,EAAOe,QAEvB,GAAIf,EAAOuB,OAAS,WAUnB,GARAJ,EAAOK,MAAQT,EAAQS,MACvBL,EAAOM,SAAWV,EAAQU,SAC1BN,EAAOO,QAAUX,EAAQW,QACzBP,EAAOQ,YAAcZ,EAAQY,aAAe,UAC5CR,EAAOS,WAAab,EAAQa,YAAc,SAC1CT,EAAOU,QAAUd,EAAQc,SAAW,UAGhCd,EAAQe,QAAS,CACpB,MAAMC,EAAmBf,SAASI,cAAc,KAAA,EAGhD,GAFAW,EAAiBC,KAAO,UAEO,OAApBjB,EAAQe,SAAY,WAAY,CAC1C,MAAMG,EAASlB,EAAQe,QAAAA,EACnBG,aAAkBC,YACrBH,EAAiBT,YAAYW,CAAAA,EAE7BE,EAAAA,OAAOF,EAAQF,EAEjB,MAAWhB,EAAQe,mBAAmBI,YACrCH,EAAiBT,YAAYP,EAAQe,SAErCK,SAAOpB,EAAQe,QAASC,CAAAA,EAGzBZ,EAAOG,YAAYS,CAAAA,CACpB,UAGAZ,EAAOiB,YAAAA,GAEHpC,EAAO8B,QAAS,CACnB,MAAMC,EAAmBf,SAASI,cAAc,KAAA,EAKhD,GAJAW,EAAiBM,MAAMC,OAAS,OAChCP,EAAiBM,MAAME,MAAQ,OAC/BR,EAAiBS,UAAUC,IAAI,qCAED,OAAnBzC,EAAO8B,SAAY,WAAY,CACzC,MAAMG,EAASjC,EAAO8B,QAAAA,EAClBG,aAAkBC,YACrBH,EAAiBT,YAAYW,CAAAA,EAE7BE,EAAAA,OAAOF,EAAQF,EAEjB,MAAW/B,EAAO8B,mBAAmBI,YACpCH,EAAiBT,YAAYtB,EAAO8B,SAEpCK,SAAOnC,EAAO8B,QAASC,CAAAA,EAGxBZ,EAAOG,YAAYS,CAAAA,CACpB,CAGDrD,KAAKC,cAAc+D,KAAKvB,CAAAA,CAAAA,CAAAA,EAEzBlB,EAAAA,IAAI,CAAA,CAAGkB,OAAAA,EAAQnB,OAAAA,CAAAA,IAAAA,CACd,MAAM2C,EAAW3C,EAAOe,QAAQ4B,UAAYjE,KAAKkE,oBAAAA,EAEjDzB,EACE0B,KAAKF,CAAAA,EACLG,KAAMb,GAAAA,CACNjC,EAAO+C,UAAUd,CAAAA,EAGjB,MAAMe,EAAQtE,KAAKC,cAAcsE,QAAQ9B,CAAAA,EACrC6B,IADqC7B,IAExCzC,KAAKC,cAAcuE,OAAOF,EAAO,GAIlC,MAAMG,EAAYhC,EAAOF,cAAc,kBAAA,EACnCkC,GAAWhC,EAAOiC,YAAYD,GAElC,MAAMpB,EAAmBZ,EAAOF,cAAc,oCAAA,EAC1Cc,GAAkBsB,YACrBtB,EAAiBsB,WAAWD,YAAYrB,GAIbZ,EAC1BmC,qBACkBC,QAAQC,GAAOA,EAAIC,YAAAA,CAAAA,EAGvCtC,EAAOuC,eAAeN,YAAYjC,CAAAA,CAAAA,CAAAA,EAElCwC,MAAOC,GAAAA,CACP5D,EAAO6D,SAASD,CAAAA,CAAAA,CAAAA,EAIlB,MAAME,EAAqC,CAAA,EAE3C,GAAI9D,EAAOe,QAAQgD,UAAW,CAC7B,MAAMC,EAAa3E,EAAAA,UAAU8B,EAAQ,SAAA,EAAW8C,UAAU,KACzDjE,EAAOe,QAAQgD,YACfC,EAAWP,YAAAA,CAAAA,CAAAA,EAEZK,EAAmBpB,KAAKsB,CAAAA,CACzB,CAEA,GAAIhE,EAAOe,QAAQmD,SAAU,CAC5B,MAAMC,EAAY9E,EAAAA,UAAU8B,EAAQ,QAAA,EAAU8C,UAAU,KACvDjE,EAAOe,QAAQmD,WACfC,EAAUV,YAAAA,CAAAA,CAAAA,EAEXK,EAAmBpB,KAAKyB,CAAAA,CACzB,CAEEhD,EAA8DmC,oBAAsBQ,CAAAA,CAAAA,CAAAA,EAGvFG,UAAAA,CACH,CAEQ,yBAAAjF,CACPN,KAAKI,eACHI,KACAC,EAAAA,aACCC,EAAAA,SAAS,CACRC,YAAgCC,OAAQd,GAAiBU,KACxDM,YAAUC,EAAAA,MAAM,GAAA,CAAA,EAChBC,EAAAA,IAAIC,GAAKA,EAAEC,QACXE,EAAAA,eAAAA,MAAe,CAAA,EAEhBC,EAAAA,GAAGG,CAAAA,EAAKhB,KACPe,EAAAA,IAAI,IAAA,CACHX,OAAOmB,cACN,IAAIC,YAAYnC,EAAwB,CACvCqB,OAAQ,CAAEM,OACVU,QAAAA,GACAC,WAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAOhBZ,MAAI,CAAA,CAAEmE,CAAAA,IAAAA,CACL,GAAIA,GAAUjD,OAAQ,CACrBiD,EAASjD,OAAOkD,OAAK,EAEOD,EAASjD,OACnCmC,qBACkBC,QAAQC,GAAOA,EAAIC,eAEvC,MAAMT,EAAQtE,KAAKC,cAAcsE,QAAQmB,EAASjD,MAAAA,EAC9C6B,IAD8C7B,IAEjDzC,KAAKC,cAAcuE,OAAOF,EAAO,CAAA,EAGlCoB,EAASjD,OAAOuC,eAAeN,YAAYgB,EAASjD,OACrD,CAAA,CAAA,CAAA,EAGD8C,UAAAA,CACH,CAEO,QAAQlD,GACd,OAAO,IAAIuD,QAAQ,CAACvB,EAASc,KAC5B,MAAMU,EAAkB,IACpB9F,EAAc+F,gBAAAA,GACdzD,CAAAA,EAGCwD,EAAgB5B,WACpB4B,EAAgB5B,SAAWjE,KAAKkE,oBAAAA,GAGjClE,KAAKE,cAAc6F,KAAK,CACvB1D,QAASwD,EACThD,KAAM,UACNO,QAASyC,EAAgBzC,QACzBiB,QAAAA,EACAc,YAGH,CAEO,UACN/B,EACAf,EAAsD,IAEtD,OAAO,IAAIuD,QAAQ,CAACvB,EAASc,IAAAA,CACvB9C,EAAQ4B,WACZ5B,EAAQ4B,SAAWjE,KAAKkE,oBAAAA,GAGzBlE,KAAKE,cAAc6F,KAAK,CACvB1D,QAAAA,EACAQ,KAAM,YACNO,QAAAA,EACAiB,UACAc,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAGH,CAEO,SAAAa,CACN,GAAIhG,KAAKC,cAAcgG,OAAS,EAAG,CAClC,MACMzE,EADSxB,KAAKC,cAAcD,KAAKC,cAAcgG,OAAS,CAAA,EAC3CC,aAAa,KAAA,EAEhC,GAAI1E,EAEH,OADAxB,KAAKI,eAAe2F,KAAKvE,CAAAA,EAAAA,EAG3B,CACA,MAAA,EACD,CAEO,QACN,OAAOxB,KAAKgG,SACb,CAEO,IAAIhD,EAAiBmD,EAAAA,CAC3B,OAAOnG,KAAKoG,QAAQ,CACnBpD,QAAAA,EACAC,YAAa,UACbC,WAAY,SACZe,SAAUkC,CAAAA,CAAAA,CAEZ,CAEO,OAAO9D,EAAAA,CACb,OAAOrC,KAAKoG,QAAQ,CAAA,GAChB/D,EACHc,QAAS,QAAA,CAAA,CAEX,CAEQ,sBACP,MAAO,CACNkD,EAAGzF,OAAO0F,WAAa,EACvBC,EAAG3F,OAAO4F,YAAc,CAAA,CAE1B,CAAA,EAlTAxG,EAAe8F,gBAA0C,CACxDhD,MAAAA,OACAC,SAAAA,OACAE,YAAAA,OACAC,kBACAC,QAAS,WARJ,IAAMpD,EAAN0G,EA2TA,MAAMC,EAAU,CACtBN,QAAU/D,GACFtC,EAAc4G,cAAcP,QAAQ/D,CAAAA,EAG5CuE,IAAK,CAAC5D,EAAiBmD,IACfpG,EAAc4G,cAAcC,IAAI5D,EAASmD,GAGjDU,OAASxE,GACDtC,EAAc4G,YAAAA,EAAcE,OAAOxE,GAG3CyE,UAAW,CACV1D,EACAf,IAEOtC,EAAc4G,cAAcG,UAAU1D,EAASf,CAAAA,EAGvD2D,QAAS,IACDjG,EAAc4G,YAAAA,EAAcX,UAGpCe,MAAO,IACChH,EAAc4G,YAAAA,EAAcI,MAAAA,CAAAA"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { render as d } from "lit";
|
|
2
|
+
import { Subject as g, switchMap as f, forkJoin as b, fromEvent as l, of as v, takeUntil as C, timer as w, map as m, defaultIfEmpty as y, tap as r } from "rxjs";
|
|
3
|
+
import { a as E, T as S } from "./theme.events-CPSLaOlR.js";
|
|
4
|
+
const T = "are-you-there-dialog", x = "yes-dialog-here", c = class c {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.activeDialogs = [], this.dialogSubject = new g(), this.dismissSubject = new g(), this.setupDialogOpeningLogic(), this.setupDialogDismissLogic();
|
|
7
|
+
}
|
|
8
|
+
static getInstance() {
|
|
9
|
+
return c.instance || (c.instance = new c()), c.instance;
|
|
10
|
+
}
|
|
11
|
+
setupDialogOpeningLogic() {
|
|
12
|
+
this.dialogSubject.pipe(f((e) => b([l(window, E).pipe(C(w(50)), m((t) => t.detail.theme), y(void 0)), v(e).pipe(r(() => {
|
|
13
|
+
const t = `dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
14
|
+
window.dispatchEvent(new CustomEvent(S, { bubbles: !0, composed: !0 })), e.uid = t;
|
|
15
|
+
}))])), m(([e, t]) => {
|
|
16
|
+
const n = e || t.options.targetContainer || document.querySelector("schmancy-theme") || document.body, i = t.uid, o = document.createElement("schmancy-dialog");
|
|
17
|
+
return o.setAttribute("uid", i), n.appendChild(o), { dialog: o, target: t };
|
|
18
|
+
}), r(({ dialog: e, target: t }) => {
|
|
19
|
+
const n = t.options;
|
|
20
|
+
if (t.type === "confirm") {
|
|
21
|
+
if (e.title = n.title, e.subtitle = n.subtitle, e.message = n.message, e.confirmText = n.confirmText ?? "Confirm", e.cancelText = n.cancelText ?? "Cancel", e.variant = n.variant ?? "default", n.content) {
|
|
22
|
+
const i = document.createElement("div");
|
|
23
|
+
if (i.slot = "content", typeof n.content == "function") {
|
|
24
|
+
const o = n.content();
|
|
25
|
+
o instanceof HTMLElement ? i.appendChild(o) : d(o, i);
|
|
26
|
+
} else n.content instanceof HTMLElement ? i.appendChild(n.content) : d(n.content, i);
|
|
27
|
+
e.appendChild(i);
|
|
28
|
+
}
|
|
29
|
+
} else if (e.hideActions = !0, t.content) {
|
|
30
|
+
const i = document.createElement("div");
|
|
31
|
+
if (i.style.height = "100%", i.style.width = "100%", i.classList.add("schmancy-dialog-content-container"), typeof t.content == "function") {
|
|
32
|
+
const o = t.content();
|
|
33
|
+
o instanceof HTMLElement ? i.appendChild(o) : d(o, i);
|
|
34
|
+
} else t.content instanceof HTMLElement ? i.appendChild(t.content) : d(t.content, i);
|
|
35
|
+
e.appendChild(i);
|
|
36
|
+
}
|
|
37
|
+
this.activeDialogs.push(e);
|
|
38
|
+
}), r(({ dialog: e, target: t }) => {
|
|
39
|
+
const n = t.options.position || this.getCenteredPosition();
|
|
40
|
+
e.show(n).then((o) => {
|
|
41
|
+
t.resolve?.(o);
|
|
42
|
+
const u = this.activeDialogs.indexOf(e);
|
|
43
|
+
u !== -1 && this.activeDialogs.splice(u, 1);
|
|
44
|
+
const h = e.querySelector('[slot="content"]');
|
|
45
|
+
h && e.removeChild(h);
|
|
46
|
+
const p = e.querySelector(".schmancy-dialog-content-container");
|
|
47
|
+
p?.parentNode && p.parentNode.removeChild(p), e._eventSubscriptions?.forEach((D) => D.unsubscribe()), e.parentElement?.removeChild(e);
|
|
48
|
+
}).catch((o) => {
|
|
49
|
+
t.reject?.(o);
|
|
50
|
+
});
|
|
51
|
+
const i = [];
|
|
52
|
+
if (t.options.onConfirm) {
|
|
53
|
+
const o = l(e, "confirm").subscribe(() => {
|
|
54
|
+
t.options.onConfirm(), o.unsubscribe();
|
|
55
|
+
});
|
|
56
|
+
i.push(o);
|
|
57
|
+
}
|
|
58
|
+
if (t.options.onCancel) {
|
|
59
|
+
const o = l(e, "cancel").subscribe(() => {
|
|
60
|
+
t.options.onCancel(), o.unsubscribe();
|
|
61
|
+
});
|
|
62
|
+
i.push(o);
|
|
63
|
+
}
|
|
64
|
+
e._eventSubscriptions = i;
|
|
65
|
+
})).subscribe();
|
|
66
|
+
}
|
|
67
|
+
setupDialogDismissLogic() {
|
|
68
|
+
this.dismissSubject.pipe(f((e) => b([l(window, x).pipe(C(w(100)), m((t) => t.detail), y(void 0)), v(e).pipe(r(() => {
|
|
69
|
+
window.dispatchEvent(new CustomEvent(T, { detail: { uid: e }, bubbles: !0, composed: !0 }));
|
|
70
|
+
}))])), r(([e]) => {
|
|
71
|
+
if (e?.dialog) {
|
|
72
|
+
e.dialog.hide(!1), e.dialog._eventSubscriptions?.forEach((i) => i.unsubscribe());
|
|
73
|
+
const n = this.activeDialogs.indexOf(e.dialog);
|
|
74
|
+
n !== -1 && this.activeDialogs.splice(n, 1), e.dialog.parentElement?.removeChild(e.dialog);
|
|
75
|
+
}
|
|
76
|
+
})).subscribe();
|
|
77
|
+
}
|
|
78
|
+
confirm(e) {
|
|
79
|
+
return new Promise((t, n) => {
|
|
80
|
+
const i = { ...c.DEFAULT_OPTIONS, ...e };
|
|
81
|
+
i.position || (i.position = this.getCenteredPosition()), this.dialogSubject.next({ options: i, type: "confirm", content: i.content, resolve: t, reject: n });
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
component(e, t = {}) {
|
|
85
|
+
return new Promise((n, i) => {
|
|
86
|
+
t.position || (t.position = this.getCenteredPosition()), this.dialogSubject.next({ options: t, type: "component", content: e, resolve: n, reject: i });
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
dismiss() {
|
|
90
|
+
if (this.activeDialogs.length > 0) {
|
|
91
|
+
const e = this.activeDialogs[this.activeDialogs.length - 1].getAttribute("uid");
|
|
92
|
+
if (e) return this.dismissSubject.next(e), !0;
|
|
93
|
+
}
|
|
94
|
+
return !1;
|
|
95
|
+
}
|
|
96
|
+
close() {
|
|
97
|
+
return this.dismiss();
|
|
98
|
+
}
|
|
99
|
+
ask(e, t) {
|
|
100
|
+
return this.confirm({ message: e, confirmText: "Confirm", cancelText: "Cancel", position: t });
|
|
101
|
+
}
|
|
102
|
+
danger(e) {
|
|
103
|
+
return this.confirm({ ...e, variant: "danger" });
|
|
104
|
+
}
|
|
105
|
+
getCenteredPosition() {
|
|
106
|
+
return { x: window.innerWidth / 2, y: window.innerHeight / 2 };
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
c.DEFAULT_OPTIONS = { title: void 0, subtitle: void 0, confirmText: void 0, cancelText: void 0, variant: "default" };
|
|
110
|
+
let s = c;
|
|
111
|
+
const P = { confirm: (a) => s.getInstance().confirm(a), ask: (a, e) => s.getInstance().ask(a, e), danger: (a) => s.getInstance().danger(a), component: (a, e) => s.getInstance().component(a, e), dismiss: () => s.getInstance().dismiss(), close: () => s.getInstance().close() };
|
|
112
|
+
export {
|
|
113
|
+
P as $,
|
|
114
|
+
s as D,
|
|
115
|
+
T as a,
|
|
116
|
+
x as b
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=dialog-service-D9E3jLAR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-service-D9E3jLAR.js","sources":["../src/dialog/dialog-events.ts","../src/dialog/dialog-service.ts"],"sourcesContent":["// Dialog discovery event constants\r\nexport const DialogWhereAreYouRicky = 'are-you-there-dialog'\r\nexport const DialogHereMorty = 'yes-dialog-here'\r\n\r\n// Event interfaces\r\nexport interface DialogWhereAreYouRickyEvent extends CustomEvent {\r\n detail: {\r\n uid: string\r\n }\r\n}\r\n\r\nexport interface DialogHereMortyEvent extends CustomEvent {\r\n detail: {\r\n dialog: any // Will be schmancy-dialog instance\r\n theme?: any // Will be schmancy-theme instance\r\n }\r\n}","import { render, TemplateResult } from 'lit'\nimport { defaultIfEmpty, forkJoin, fromEvent, map, of, Subject, Subscription, switchMap, takeUntil, tap, timer } from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from '../theme/theme.events'\nimport { SchmancyDialog } from './dialog.component'\nimport { DialogHereMorty, DialogHereMortyEvent, DialogWhereAreYouRicky } from './dialog-events'\n\n/**\n * Dialog service options interface\n */\nexport interface DialogOptions {\n\ttitle?: string\n\tsubtitle?: string\n\tmessage?: string\n\tconfirmText?: string\n\tcancelText?: string\n\tvariant?: 'default' | 'danger'\n\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\tonConfirm?: () => void\n\tonCancel?: () => void\n\thideActions?: boolean\n\ttargetContainer?: HTMLElement\n}\n\ninterface DialogTarget {\n\toptions: DialogOptions\n\ttype: 'confirm' | 'component'\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\tresolve?: (value: boolean) => void\n\treject?: (reason?: unknown) => void\n}\n\n/**\n * Dialog service for centralized dialog management.\n * Uses a single unified SchmancyDialog component for all dialog types.\n */\nexport class DialogService {\n\tprivate static instance: DialogService\n\n\tprivate static DEFAULT_OPTIONS: Partial<DialogOptions> = {\n\t\ttitle: undefined,\n\t\tsubtitle: undefined,\n\t\tconfirmText: undefined,\n\t\tcancelText: undefined,\n\t\tvariant: 'default',\n\t}\n\n\t// Single array to track all dialogs\n\tprivate activeDialogs: SchmancyDialog[] = []\n\n\tprivate dialogSubject = new Subject<DialogTarget>()\n\tprivate dismissSubject = new Subject<string>()\n\n\tprivate constructor() {\n\t\tthis.setupDialogOpeningLogic()\n\t\tthis.setupDialogDismissLogic()\n\t}\n\n\tpublic static getInstance(): DialogService {\n\t\tif (!DialogService.instance) {\n\t\t\tDialogService.instance = new DialogService()\n\t\t}\n\t\treturn DialogService.instance\n\t}\n\n\tprivate setupDialogOpeningLogic() {\n\t\tthis.dialogSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail.theme),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tconst uid = `dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t;(target as { uid?: string }).uid = uid\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tmap(([theme, target]) => {\n\t\t\t\t\tconst targetContainer =\n\t\t\t\t\t\ttheme ||\n\t\t\t\t\t\ttarget.options.targetContainer ||\n\t\t\t\t\t\t(document.querySelector('schmancy-theme') as HTMLElement) ||\n\t\t\t\t\t\tdocument.body\n\n\t\t\t\t\tconst uid = (target as { uid?: string }).uid!\n\t\t\t\t\tconst dialog = document.createElement('schmancy-dialog') as SchmancyDialog\n\t\t\t\t\tdialog.setAttribute('uid', uid)\n\t\t\t\t\ttargetContainer.appendChild(dialog)\n\n\t\t\t\t\treturn { dialog, target }\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\tconst options = target.options\n\n\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t// Configure for confirm mode\n\t\t\t\t\t\tdialog.title = options.title\n\t\t\t\t\t\tdialog.subtitle = options.subtitle\n\t\t\t\t\t\tdialog.message = options.message\n\t\t\t\t\t\tdialog.confirmText = options.confirmText ?? 'Confirm'\n\t\t\t\t\t\tdialog.cancelText = options.cancelText ?? 'Cancel'\n\t\t\t\t\t\tdialog.variant = options.variant ?? 'default'\n\n\t\t\t\t\t\t// Handle custom content slot\n\t\t\t\t\t\tif (options.content) {\n\t\t\t\t\t\t\tconst contentContainer = document.createElement('div')\n\t\t\t\t\t\t\tcontentContainer.slot = 'content'\n\n\t\t\t\t\t\t\tif (typeof options.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = options.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tcontentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, contentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (options.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tcontentContainer.appendChild(options.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(options.content, contentContainer)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdialog.appendChild(contentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Configure for content mode\n\t\t\t\t\t\tdialog.hideActions = true\n\n\t\t\t\t\t\tif (target.content) {\n\t\t\t\t\t\t\tconst contentContainer = document.createElement('div')\n\t\t\t\t\t\t\tcontentContainer.style.height = '100%'\n\t\t\t\t\t\t\tcontentContainer.style.width = '100%'\n\t\t\t\t\t\t\tcontentContainer.classList.add('schmancy-dialog-content-container')\n\n\t\t\t\t\t\t\tif (typeof target.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = target.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tcontentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, contentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tcontentContainer.appendChild(target.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(target.content, contentContainer)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdialog.appendChild(contentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.activeDialogs.push(dialog)\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\tconst position = target.options.position || this.getCenteredPosition()\n\n\t\t\t\t\tdialog\n\t\t\t\t\t\t.show(position)\n\t\t\t\t\t\t.then((result: boolean) => {\n\t\t\t\t\t\t\ttarget.resolve?.(result)\n\n\t\t\t\t\t\t\t// Cleanup\n\t\t\t\t\t\t\tconst index = this.activeDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentEl = dialog.querySelector('[slot=\"content\"]')\n\t\t\t\t\t\t\tif (contentEl) dialog.removeChild(contentEl)\n\n\t\t\t\t\t\t\tconst contentContainer = dialog.querySelector('.schmancy-dialog-content-container')\n\t\t\t\t\t\t\tif (contentContainer?.parentNode) {\n\t\t\t\t\t\t\t\tcontentContainer.parentNode.removeChild(contentContainer)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Clean up event subscriptions\n\t\t\t\t\t\t\tconst eventSubscriptions = (dialog as unknown as { _eventSubscriptions?: Subscription[] })\n\t\t\t\t\t\t\t\t._eventSubscriptions\n\t\t\t\t\t\t\teventSubscriptions?.forEach(sub => sub.unsubscribe())\n\n\t\t\t\t\t\t\t// Remove from DOM\n\t\t\t\t\t\t\tdialog.parentElement?.removeChild(dialog)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\t\t\ttarget.reject?.(error)\n\t\t\t\t\t\t})\n\n\t\t\t\t\t// Set up event listeners\n\t\t\t\t\tconst eventSubscriptions: Subscription[] = []\n\n\t\t\t\t\tif (target.options.onConfirm) {\n\t\t\t\t\t\tconst confirmSub = fromEvent(dialog, 'confirm').subscribe(() => {\n\t\t\t\t\t\t\ttarget.options.onConfirm!()\n\t\t\t\t\t\t\tconfirmSub.unsubscribe()\n\t\t\t\t\t\t})\n\t\t\t\t\t\teventSubscriptions.push(confirmSub)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target.options.onCancel) {\n\t\t\t\t\t\tconst cancelSub = fromEvent(dialog, 'cancel').subscribe(() => {\n\t\t\t\t\t\t\ttarget.options.onCancel!()\n\t\t\t\t\t\t\tcancelSub.unsubscribe()\n\t\t\t\t\t\t})\n\t\t\t\t\t\teventSubscriptions.push(cancelSub)\n\t\t\t\t\t}\n\n\t\t\t\t\t;(dialog as unknown as { _eventSubscriptions: Subscription[] })._eventSubscriptions = eventSubscriptions\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate setupDialogDismissLogic() {\n\t\tthis.dismissSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([response]) => {\n\t\t\t\t\tif (response?.dialog) {\n\t\t\t\t\t\tresponse.dialog.hide(false)\n\n\t\t\t\t\t\tconst eventSubscriptions = (response.dialog as unknown as { _eventSubscriptions?: Subscription[] })\n\t\t\t\t\t\t\t._eventSubscriptions\n\t\t\t\t\t\teventSubscriptions?.forEach(sub => sub.unsubscribe())\n\n\t\t\t\t\t\tconst index = this.activeDialogs.indexOf(response.dialog as SchmancyDialog)\n\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\tthis.activeDialogs.splice(index, 1)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponse.dialog.parentElement?.removeChild(response.dialog)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tpublic confirm(options: DialogOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst completeOptions = {\n\t\t\t\t...DialogService.DEFAULT_OPTIONS,\n\t\t\t\t...options,\n\t\t\t}\n\n\t\t\tif (!completeOptions.position) {\n\t\t\t\tcompleteOptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next({\n\t\t\t\toptions: completeOptions,\n\t\t\t\ttype: 'confirm',\n\t\t\t\tcontent: completeOptions.content,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic component(\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions: Omit<DialogOptions, 'content' | 'message'> = {},\n\t): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!options.position) {\n\t\t\t\toptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next({\n\t\t\t\toptions: options as DialogOptions,\n\t\t\t\ttype: 'component',\n\t\t\t\tcontent,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic dismiss(): boolean {\n\t\tif (this.activeDialogs.length > 0) {\n\t\t\tconst dialog = this.activeDialogs[this.activeDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\n\tpublic close(): boolean {\n\t\treturn this.dismiss()\n\t}\n\n\tpublic ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tconfirmText: 'Confirm',\n\t\t\tcancelText: 'Cancel',\n\t\t\tposition: event,\n\t\t})\n\t}\n\n\tpublic danger(options: Omit<DialogOptions, 'variant'>): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\t...options,\n\t\t\tvariant: 'danger',\n\t\t})\n\t}\n\n\tprivate getCenteredPosition(): { x: number; y: number } {\n\t\treturn {\n\t\t\tx: window.innerWidth / 2,\n\t\t\ty: window.innerHeight / 2,\n\t\t}\n\t}\n}\n\n/**\n * Global dialog utility\n */\nexport const $dialog = {\n\tconfirm: (options: DialogOptions): Promise<boolean> => {\n\t\treturn DialogService.getInstance().confirm(options)\n\t},\n\n\task: (message: string, event?: MouseEvent | TouchEvent): Promise<boolean> => {\n\t\treturn DialogService.getInstance().ask(message, event)\n\t},\n\n\tdanger: (options: Omit<DialogOptions, 'variant'>): Promise<boolean> => {\n\t\treturn DialogService.getInstance().danger(options)\n\t},\n\n\tcomponent: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\tdismiss: (): boolean => {\n\t\treturn DialogService.getInstance().dismiss()\n\t},\n\n\tclose: (): boolean => {\n\t\treturn DialogService.getInstance().close()\n\t},\n}\n\nexport default DialogService\n"],"names":["DialogWhereAreYouRicky","DialogHereMorty","DialogService","constructor","this","activeDialogs","dialogSubject","Subject","dismissSubject","setupDialogOpeningLogic","setupDialogDismissLogic","getInstance","instance","pipe","switchMap","forkJoin","fromEvent","window","ThemeHereIAm","takeUntil","timer","map","e","detail","theme","defaultIfEmpty","of","target","tap","uid","Date","now","Math","random","toString","substring","dispatchEvent","CustomEvent","ThemeWhereAreYou","bubbles","composed","targetContainer","options","document","querySelector","body","dialog","createElement","setAttribute","appendChild","type","title","subtitle","message","confirmText","cancelText","variant","content","contentContainer","slot","result","HTMLElement","render","hideActions","style","height","width","classList","add","push","position","getCenteredPosition","show","then","resolve","index","indexOf","splice","contentEl","removeChild","parentNode","_eventSubscriptions","forEach","sub","unsubscribe","parentElement","catch","error","reject","eventSubscriptions","onConfirm","confirmSub","subscribe","onCancel","cancelSub","response","hide","Promise","completeOptions","DEFAULT_OPTIONS","next","dismiss","length","getAttribute","close","event","confirm","x","innerWidth","y","innerHeight","_g","$dialog","ask","danger","component"],"mappings":"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"}
|
package/dist/dialog.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./dialog-service-C86xTS8q.cjs"),e=require("./dialog.component-BriB-kFi.cjs");exports.$dialog=i.$dialog,exports.DialogService=i.DialogService,Object.defineProperty(exports,"ConfirmDialog",{enumerable:!0,get:()=>e.SchmancyDialog}),exports.DialogBase=e.DialogBase,Object.defineProperty(exports,"SchmancyDialog",{enumerable:!0,get:()=>e.SchmancyDialog});
|
|
2
2
|
//# sourceMappingURL=dialog.cjs.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";const p=require("rxjs"),y=require("rxjs/operators");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const a=require("lit/decorators.js");require("./tailwind.mixin-UijsBrYW.cjs");const g=require("./litElement.mixin-BVBdv0GP.cjs"),r=require("lit"),d=require("lit/directives/when.js"),l=require("@floating-ui/dom"),u=require("./dialog-service-C86xTS8q.cjs"),m=e=>class extends e{constructor(){super(...arguments),this.position={x:0,y:0}}getDialogElement(){return null}async show(t){let i,s;if(this.cleanupAutoUpdate&&(this.cleanupAutoUpdate(),this.cleanupAutoUpdate=void 0),t)if("clientX"in t)i=t.clientX,s=t.clientY;else if("touches"in t&&t.touches.length)i=t.touches[0].clientX,s=t.touches[0].clientY;else{const n=t;i=n.x,s=n.y}else i=window.innerWidth/2,s=window.innerHeight/2;return this.position={x:i,y:s},this.virtualReference={getBoundingClientRect:()=>new DOMRect(i,s,0,0)},this.requestUpdate(),await this.updateComplete,this.setAttribute("active",""),this.setupPositioning(),new Promise(n=>{this.resolvePromise=n})}hide(t=!1){this.removeAttribute("active"),this.cleanupAutoUpdate&&(this.cleanupAutoUpdate(),this.cleanupAutoUpdate=void 0),this.resolvePromise&&(this.resolvePromise(t),this.resolvePromise=void 0)}isCentered(){const t=.3*window.innerWidth,i=.3*window.innerHeight;return Math.abs(this.position.x-window.innerWidth/2)<t&&Math.abs(this.position.y-window.innerHeight/2)<i}setupPositioning(){const t=this.getDialogElement();t&&(this.isCentered()||this.virtualReference&&(this.cleanupAutoUpdate=l.autoUpdate(this.virtualReference,t,()=>this.updatePosition(t),{ancestorScroll:!0,ancestorResize:!0,elementResize:!0}),this.updatePosition(t)))}async updatePosition(t){if(!this.virtualReference)return;const{x:i,y:s}=await l.computePosition(this.virtualReference,t,{strategy:"fixed",middleware:[l.offset(8),l.autoPlacement({padding:16,allowedPlacements:["top-start","top-end","bottom-start","bottom-end","left-start","left-end","right-start","right-end"]}),l.shift({padding:16}),l.size({padding:16,apply({availableWidth:n,elements:o}){o.floating.style.maxWidth=`${n}px`}})]});Object.assign(t.style,{position:"fixed",left:`${Math.round(i)}px`,top:`${Math.round(s)}px`,transform:"none"})}disconnectedCallback(){this.cleanupAutoUpdate&&(this.cleanupAutoUpdate(),this.cleanupAutoUpdate=void 0),super.disconnectedCallback()}};var f=Object.defineProperty,v=Object.getOwnPropertyDescriptor,c=(e,t,i,s)=>{for(var n,o=s>1?void 0:s?v(t,i):t,h=e.length-1;h>=0;h--)(n=e[h])&&(o=(s?n(t,i,o):n(o))||o);return s&&o&&f(t,i,o),o};exports.SchmancyDialog=class extends m(g.$LitElement(r.css`
|
|
2
|
+
:host {
|
|
3
|
+
position: fixed;
|
|
4
|
+
z-index: 10000;
|
|
5
|
+
inset: 0;
|
|
6
|
+
display: none;
|
|
7
|
+
--dialog-width: fit-content;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:host([active]) {
|
|
11
|
+
display: block;
|
|
12
|
+
}
|
|
13
|
+
`)){constructor(){super(...arguments),this.title=void 0,this.subtitle=void 0,this.message=void 0,this.confirmText=void 0,this.cancelText=void 0,this.variant="default",this.hideActions=!1}getDialogElement(){return this.shadowRoot?.querySelector('[role="dialog"], [role="alertdialog"]')}get isConfirmMode(){return!this.hideActions&&!(!this.confirmText?.trim()||!this.cancelText?.trim())}connectedCallback(){super.connectedCallback(),p.fromEvent(window,u.DialogWhereAreYouRicky).pipe(p.tap(e=>{e.detail.uid===this.uid&&this.announcePresence()}),y.takeUntil(this.disconnecting)).subscribe()}announcePresence(){this.dispatchEvent(new CustomEvent(u.DialogHereMorty,{detail:{dialog:this},bubbles:!0,composed:!0}))}handleConfirm(){this.hide(!0),this.dispatchEvent(new CustomEvent("confirm",{bubbles:!0,composed:!0}))}handleClose(){this.hide(!1),this.dispatchEvent(new CustomEvent(this.isConfirmMode?"cancel":"close",{bubbles:!0,composed:!0}))}render(){const e=this.isCentered(),t=this.querySelectorAll('[slot="content"]').length>0,i={dialog:!0,fixed:!0,"w-[var(--dialog-width)]":!0,"max-w-[calc(100vw-2rem)]":!0,"max-h-[90dvh]":!0,"overflow-hidden":!0,"top-1/2":e,"left-1/2":e,"-translate-x-1/2":e,"-translate-y-1/2":e};return this.isConfirmMode?r.html`
|
|
14
|
+
<div class="fixed inset-0 bg-scrim/40" @click=${this.handleClose}></div>
|
|
15
|
+
|
|
16
|
+
<div class=${this.classMap(i)} role="alertdialog" aria-modal="true">
|
|
17
|
+
<schmancy-surface rounded="all" elevation="3" type="containerHigh" fill="all" class="overflow-hidden">
|
|
18
|
+
<schmancy-scroll direction="vertical" hide class="p-4">
|
|
19
|
+
<schmancy-form @submit=${this.handleConfirm}>
|
|
20
|
+
${d.when(this.title?.trim(),()=>r.html`
|
|
21
|
+
<schmancy-typography type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
|
|
22
|
+
${d.when(this.subtitle?.trim(),()=>r.html`
|
|
23
|
+
<schmancy-typography type="subtitle" token="xs" class="mb-2">
|
|
24
|
+
${this.subtitle}
|
|
25
|
+
</schmancy-typography>
|
|
26
|
+
`)}
|
|
27
|
+
`)}
|
|
28
|
+
${t?r.html`<div class="mb-4"><slot name="content"></slot></div>`:d.when(this.message?.trim(),()=>r.html`<schmancy-typography type="body" class="mb-4">${this.message}</schmancy-typography>`)}
|
|
29
|
+
<div class="flex justify-end gap-3">
|
|
30
|
+
<schmancy-button variant="outlined" @click=${this.handleClose}>${this.cancelText}</schmancy-button>
|
|
31
|
+
<schmancy-button type="submit" variant="filled">${this.confirmText}</schmancy-button>
|
|
32
|
+
</div>
|
|
33
|
+
</schmancy-form>
|
|
34
|
+
</schmancy-scroll>
|
|
35
|
+
</schmancy-surface>
|
|
36
|
+
</div>
|
|
37
|
+
`:r.html`
|
|
38
|
+
<div class="fixed inset-0 bg-surface-container/10 backdrop-blur-xs" @click=${this.handleClose}></div>
|
|
39
|
+
|
|
40
|
+
<section class=${this.classMap(i)} role="dialog" aria-modal="true">
|
|
41
|
+
<schmancy-surface rounded="all" type="surface" elevation="2" fill="all" class="overflow-hidden">
|
|
42
|
+
<schmancy-scroll direction="vertical" hide class="p-2 md:p-4 max-h-[90dvh]">
|
|
43
|
+
<slot></slot>
|
|
44
|
+
</schmancy-scroll>
|
|
45
|
+
</schmancy-surface>
|
|
46
|
+
</section>
|
|
47
|
+
`}static async confirm(e){let t=document.querySelector("schmancy-dialog[data-static-confirm]");return t||(t=document.createElement("schmancy-dialog"),t.setAttribute("data-static-confirm",""),document.body.appendChild(t)),t.title=e.title,t.subtitle=e.subtitle,t.message=e.message,t.confirmText=e.confirmText??"Confirm",t.cancelText=e.cancelText??"Cancel",t.variant=e.variant??"default",e.width&&t.style.setProperty("--dialog-width",e.width),t.show(e.position)}static async ask(e,t){return this.confirm({message:e,position:t})}},c([a.property({type:String,reflect:!0})],exports.SchmancyDialog.prototype,"uid",2),c([a.property({type:String})],exports.SchmancyDialog.prototype,"title",2),c([a.property({type:String})],exports.SchmancyDialog.prototype,"subtitle",2),c([a.property({type:String})],exports.SchmancyDialog.prototype,"message",2),c([a.property({type:String,attribute:"confirm-text"})],exports.SchmancyDialog.prototype,"confirmText",2),c([a.property({type:String,attribute:"cancel-text"})],exports.SchmancyDialog.prototype,"cancelText",2),c([a.property({type:String})],exports.SchmancyDialog.prototype,"variant",2),c([a.property({type:Boolean,attribute:"hide-actions"})],exports.SchmancyDialog.prototype,"hideActions",2),exports.SchmancyDialog=c([a.customElement("schmancy-dialog")],exports.SchmancyDialog),exports.DialogBase=m;
|
|
48
|
+
//# sourceMappingURL=dialog.component-BriB-kFi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.component-BriB-kFi.cjs","sources":["../src/dialog/dialog-base.mixin.ts","../src/dialog/dialog.component.ts"],"sourcesContent":["import { autoPlacement, autoUpdate, computePosition, offset, shift, size } from '@floating-ui/dom'\nimport { LitElement } from 'lit'\nimport type { Constructor } from '../../mixins/constructor'\nimport type { IBaseMixin } from '../../mixins/baseElement'\n\nexport interface DialogPosition {\n\tx: number\n\ty: number\n}\n\nexport interface VirtualReference {\n\tgetBoundingClientRect: () => DOMRect\n}\n\n/**\n * Interface for the DialogBase mixin methods\n */\nexport interface IDialogBaseMixin {\n\tposition: DialogPosition\n\tshow(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean>\n\thide(result?: boolean): void\n\tisCentered(): boolean\n}\n\n/**\n * Dialog mixin with smart positioning using Floating UI.\n *\n * Uses autoPlacement to find the position with MOST available space,\n * minimizing the need for content scrolling.\n */\nexport const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(superClass: T) => {\n\tclass DialogBaseClass extends superClass {\n\t\tposition: DialogPosition = { x: 0, y: 0 }\n\t\tprotected resolvePromise?: (value: boolean) => void\n\t\tprotected cleanupAutoUpdate?: () => void\n\t\tprotected virtualReference?: VirtualReference\n\n\t\t/**\n\t\t * Override in subclass to return the dialog element\n\t\t */\n\t\tprotected getDialogElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Show the dialog at a specific position\n\t\t */\n\t\tasync show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean> {\n\t\t\t// Cleanup previous positioning\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tlet x: number, y: number\n\n\t\t\tif (!positionOrEvent) {\n\t\t\t\tx = window.innerWidth / 2\n\t\t\t\ty = window.innerHeight / 2\n\t\t\t} else if ('clientX' in positionOrEvent) {\n\t\t\t\tx = positionOrEvent.clientX\n\t\t\t\ty = positionOrEvent.clientY\n\t\t\t} else if ('touches' in positionOrEvent && positionOrEvent.touches.length) {\n\t\t\t\tx = positionOrEvent.touches[0].clientX\n\t\t\t\ty = positionOrEvent.touches[0].clientY\n\t\t\t} else {\n\t\t\t\tconst pos = positionOrEvent as DialogPosition\n\t\t\t\tx = pos.x\n\t\t\t\ty = pos.y\n\t\t\t}\n\n\t\t\tthis.position = { x, y }\n\n\t\t\t// Virtual reference at click position\n\t\t\tthis.virtualReference = {\n\t\t\t\tgetBoundingClientRect: () => new DOMRect(x, y, 0, 0),\n\t\t\t}\n\n\t\t\t// Trigger re-render with new position (for correct isCentered() in render)\n\t\t\tthis.requestUpdate()\n\t\t\tawait this.updateComplete\n\n\t\t\tthis.setAttribute('active', '')\n\n\t\t\t// Setup Floating UI positioning for non-centered dialogs\n\t\t\tthis.setupPositioning()\n\n\t\t\treturn new Promise<boolean>(resolve => {\n\t\t\t\tthis.resolvePromise = resolve\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Hide the dialog\n\t\t */\n\t\thide(result = false): void {\n\t\t\tthis.removeAttribute('active')\n\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tif (this.resolvePromise) {\n\t\t\t\tthis.resolvePromise(result)\n\t\t\t\tthis.resolvePromise = undefined\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if position is near center\n\t\t */\n\t\tisCentered(): boolean {\n\t\t\tconst toleranceX = window.innerWidth * 0.3\n\t\t\tconst toleranceY = window.innerHeight * 0.3\n\n\t\t\treturn (\n\t\t\t\tMath.abs(this.position.x - window.innerWidth / 2) < toleranceX &&\n\t\t\t\tMath.abs(this.position.y - window.innerHeight / 2) < toleranceY\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * Setup positioning based on whether dialog is centered or positioned\n\t\t */\n\t\tprivate setupPositioning(): void {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tif (!dialog) return\n\n\t\t\t// Centered dialogs: CSS handles everything, no JS positioning needed\n\t\t\tif (this.isCentered()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Positioned dialogs: use Floating UI with autoPlacement\n\t\t\tif (this.virtualReference) {\n\t\t\t\tthis.cleanupAutoUpdate = autoUpdate(\n\t\t\t\t\tthis.virtualReference,\n\t\t\t\t\tdialog,\n\t\t\t\t\t() => this.updatePosition(dialog),\n\t\t\t\t\t{\n\t\t\t\t\t\tancestorScroll: true,\n\t\t\t\t\t\tancestorResize: true,\n\t\t\t\t\t\telementResize: true,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\tthis.updatePosition(dialog)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Update position using Floating UI.\n\t\t * autoPlacement finds the side with MOST space to minimize scrolling.\n\t\t */\n\t\tprivate async updatePosition(dialog: HTMLElement): Promise<void> {\n\t\t\tif (!this.virtualReference) return\n\n\t\t\tconst padding = 16\n\n\t\t\tconst { x, y } = await computePosition(this.virtualReference, dialog, {\n\t\t\t\tstrategy: 'fixed',\n\t\t\t\tmiddleware: [\n\t\t\t\t\t// Small offset from click point\n\t\t\t\t\toffset(8),\n\n\t\t\t\t\t// autoPlacement: picks placement with MOST available space\n\t\t\t\t\tautoPlacement({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tallowedPlacements: [\n\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t'left-start',\n\t\t\t\t\t\t\t'left-end',\n\t\t\t\t\t\t\t'right-start',\n\t\t\t\t\t\t\t'right-end',\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\n\t\t\t\t\t// Keep on screen\n\t\t\t\t\tshift({ padding }),\n\n\t\t\t\t\t// Constrain width to available space (CSS handles height via dvh)\n\t\t\t\t\tsize({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tapply({ availableWidth, elements }) {\n\t\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tleft: `${Math.round(x)}px`,\n\t\t\t\ttop: `${Math.round(y)}px`,\n\t\t\t\ttransform: 'none',\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Cleanup on disconnect\n\t\t */\n\t\tdisconnectedCallback(): void {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\n\treturn DialogBaseClass as Constructor<IDialogBaseMixin> & T\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, tap } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { DialogBase } from './dialog-base.mixin'\nimport { DialogHereMorty, DialogWhereAreYouRicky, DialogWhereAreYouRickyEvent } from './dialog-events'\n\n/**\n * Unified dialog component that handles both content-only and confirm modes.\n *\n * @element schmancy-dialog\n * @slot default - Content slot for dialog body (used in content mode)\n * @slot content - Named slot for custom content in confirm mode\n *\n * @example Content mode (no buttons):\n * ```html\n * <schmancy-dialog>\n * <my-custom-content></my-custom-content>\n * </schmancy-dialog>\n * ```\n *\n * @example Confirm mode (with buttons):\n * ```html\n * <schmancy-dialog\n * title=\"Confirm Action\"\n * message=\"Are you sure?\"\n * confirm-text=\"Yes\"\n * cancel-text=\"No\"\n * ></schmancy-dialog>\n * ```\n */\n@customElement('schmancy-dialog')\nexport class SchmancyDialog extends DialogBase(\n\t$LitElement(css`\n\t\t:host {\n\t\t\tposition: fixed;\n\t\t\tz-index: 10000;\n\t\t\tinset: 0;\n\t\t\tdisplay: none;\n\t\t\t--dialog-width: fit-content;\n\t\t}\n\n\t\t:host([active]) {\n\t\t\tdisplay: block;\n\t\t}\n\t`),\n) {\n\t/**\n\t * Unique identifier for the dialog instance\n\t */\n\t@property({ type: String, reflect: true }) uid!: string\n\n\t/**\n\t * Dialog title (enables confirm mode when set)\n\t */\n\t@property({ type: String }) title: string | undefined = undefined\n\n\t/**\n\t * Dialog subtitle\n\t */\n\t@property({ type: String }) subtitle: string | undefined = undefined\n\n\t/**\n\t * Dialog message\n\t */\n\t@property({ type: String }) message: string | undefined = undefined\n\n\t/**\n\t * Text for confirm button (enables confirm mode when set with cancelText)\n\t */\n\t@property({ type: String, attribute: 'confirm-text' }) confirmText: string | undefined = undefined\n\n\t/**\n\t * Text for cancel button\n\t */\n\t@property({ type: String, attribute: 'cancel-text' }) cancelText: string | undefined = undefined\n\n\t/**\n\t * Dialog variant (affects button colors in confirm mode)\n\t */\n\t@property({ type: String }) variant: 'default' | 'danger' = 'default'\n\n\t/**\n\t * Whether to hide action buttons (force content mode)\n\t */\n\t@property({ type: Boolean, attribute: 'hide-actions' }) hideActions = false\n\n\t/**\n\t * Return the dialog element for positioning\n\t */\n\tprotected getDialogElement(): HTMLElement | null {\n\t\treturn this.shadowRoot?.querySelector('[role=\"dialog\"], [role=\"alertdialog\"]') as HTMLElement\n\t}\n\n\t/**\n\t * Check if dialog is in confirm mode (has buttons)\n\t */\n\tprivate get isConfirmMode(): boolean {\n\t\tif (this.hideActions) return false\n\t\treturn !!(this.confirmText?.trim() && this.cancelText?.trim())\n\t}\n\n\t/**\n\t * Handle component connection to DOM\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\n\t\t// Listen for \"where are you ricky\" events\n\t\tfromEvent<DialogWhereAreYouRickyEvent>(window, DialogWhereAreYouRicky)\n\t\t\t.pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Announce this dialog's presence to the service\n\t */\n\tprivate announcePresence(): void {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(DialogHereMorty, {\n\t\t\t\tdetail: { dialog: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle confirm action\n\t */\n\tprivate handleConfirm(): void {\n\t\tthis.hide(true)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('confirm', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle cancel/close action\n\t */\n\tprivate handleClose(): void {\n\t\tthis.hide(false)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(this.isConfirmMode ? 'cancel' : 'close', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\trender() {\n\t\tconst isCentered = this.isCentered()\n\t\tconst hasCustomContent = this.querySelectorAll('[slot=\"content\"]').length > 0\n\n\t\tconst dialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'w-[var(--dialog-width)]': true,\n\t\t\t'max-w-[calc(100vw-2rem)]': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t'top-1/2': isCentered,\n\t\t\t'left-1/2': isCentered,\n\t\t\t'-translate-x-1/2': isCentered,\n\t\t\t'-translate-y-1/2': isCentered,\n\t\t}\n\n\t\t// Confirm mode: with title/buttons\n\t\tif (this.isConfirmMode) {\n\t\t\treturn html`\n\t\t\t\t<div class=\"fixed inset-0 bg-scrim/40\" @click=${this.handleClose}></div>\n\n\t\t\t\t<div class=${this.classMap(dialogClasses)} role=\"alertdialog\" aria-modal=\"true\">\n\t\t\t\t\t<schmancy-surface rounded=\"all\" elevation=\"3\" type=\"containerHigh\" fill=\"all\" class=\"overflow-hidden\">\n\t\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"p-4\">\n\t\t\t\t\t\t\t<schmancy-form @submit=${this.handleConfirm}>\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\tthis.title?.trim(),\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"mb-1\">${this.title}</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\t\tthis.subtitle?.trim(),\n\t\t\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"subtitle\" token=\"xs\" class=\"mb-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t${this.subtitle}\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t\t`,\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)}\n\t\t\t\t\t\t\t\t${hasCustomContent\n\t\t\t\t\t\t\t\t\t? html`<div class=\"mb-4\"><slot name=\"content\"></slot></div>`\n\t\t\t\t\t\t\t\t\t: when(\n\t\t\t\t\t\t\t\t\t\t\tthis.message?.trim(),\n\t\t\t\t\t\t\t\t\t\t\t() => html`<schmancy-typography type=\"body\" class=\"mb-4\">${this.message}</schmancy-typography>`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div class=\"flex justify-end gap-3\">\n\t\t\t\t\t\t\t\t\t<schmancy-button variant=\"outlined\" @click=${this.handleClose}>${this.cancelText}</schmancy-button>\n\t\t\t\t\t\t\t\t\t<schmancy-button type=\"submit\" variant=\"filled\">${this.confirmText}</schmancy-button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</schmancy-form>\n\t\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t`\n\t\t}\n\n\t\t// Content mode: minimal, just slot\n\t\treturn html`\n\t\t\t<div class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-xs\" @click=${this.handleClose}></div>\n\n\t\t\t<section class=${this.classMap(dialogClasses)} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<schmancy-surface rounded=\"all\" type=\"surface\" elevation=\"2\" fill=\"all\" class=\"overflow-hidden\">\n\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"p-2 md:p-4 max-h-[90dvh]\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t</schmancy-surface>\n\t\t\t</section>\n\t\t`\n\t}\n\n\t/**\n\t * Static helper for confirm dialogs\n\t */\n\tstatic async confirm(options: {\n\t\ttitle?: string\n\t\tsubtitle?: string\n\t\tmessage?: string\n\t\tconfirmText?: string\n\t\tcancelText?: string\n\t\tvariant?: 'default' | 'danger'\n\t\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\t\twidth?: string\n\t}): Promise<boolean> {\n\t\tlet dialog = document.querySelector('schmancy-dialog[data-static-confirm]') as SchmancyDialog\n\n\t\tif (!dialog) {\n\t\t\tdialog = document.createElement('schmancy-dialog') as SchmancyDialog\n\t\t\tdialog.setAttribute('data-static-confirm', '')\n\t\t\tdocument.body.appendChild(dialog)\n\t\t}\n\n\t\t// Set options\n\t\tdialog.title = options.title\n\t\tdialog.subtitle = options.subtitle\n\t\tdialog.message = options.message\n\t\tdialog.confirmText = options.confirmText ?? 'Confirm'\n\t\tdialog.cancelText = options.cancelText ?? 'Cancel'\n\t\tdialog.variant = options.variant ?? 'default'\n\t\tif (options.width) dialog.style.setProperty('--dialog-width', options.width)\n\n\t\treturn dialog.show(options.position)\n\t}\n\n\t/**\n\t * Simple shorthand - just pass message and optionally an event\n\t */\n\tstatic async ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n}\n\n// Alias for backward compatibility\nexport { SchmancyDialog as ConfirmDialog }\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dialog': SchmancyDialog\n\t}\n}\n"],"names":["DialogBase","superClass","constructor","super","arguments","this","position","x","y","positionOrEvent","cleanupAutoUpdate","clientX","clientY","touches","length","pos","window","innerWidth","innerHeight","virtualReference","getBoundingClientRect","DOMRect","requestUpdate","updateComplete","setAttribute","setupPositioning","Promise","resolve","resolvePromise","result","removeAttribute","isCentered","toleranceX","toleranceY","Math","abs","dialog","getDialogElement","autoUpdate","updatePosition","ancestorScroll","ancestorResize","elementResize","computePosition","strategy","middleware","offset","autoPlacement","padding","allowedPlacements","shift","size","availableWidth","elements","floating","style","maxWidth","Object","assign","left","round","top","transform","disconnectedCallback","SchmancyDialog","$LitElement","css","title","subtitle","message","confirmText","cancelText","variant","hideActions","shadowRoot","querySelector","isConfirmMode","trim","connectedCallback","fromEvent","DialogWhereAreYouRicky","pipe","tap","e","detail","uid","announcePresence","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","DialogHereMorty","bubbles","composed","handleConfirm","hide","handleClose","render","hasCustomContent","querySelectorAll","dialogClasses","fixed","html","classMap","when","options","document","createElement","body","appendChild","width","setProperty","show","event","confirm","__decorateClass","property","type","String","reflect","prototype","attribute","Boolean","customElement"],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { fromEvent as p, tap as m } from "rxjs";
|
|
2
|
+
import { takeUntil as u } from "rxjs/operators";
|
|
3
|
+
import "lit/directives/class-map.js";
|
|
4
|
+
import "lit/directives/style-map.js";
|
|
5
|
+
import { property as r, customElement as y } from "lit/decorators.js";
|
|
6
|
+
import "./tailwind.mixin-Ddt05Frc.js";
|
|
7
|
+
import { $ as f } from "./litElement.mixin-Wcu4yIIs.js";
|
|
8
|
+
import { css as g, html as l } from "lit";
|
|
9
|
+
import { when as h } from "lit/directives/when.js";
|
|
10
|
+
import { autoUpdate as v, computePosition as b, offset as x, autoPlacement as w, shift as C, size as P } from "@floating-ui/dom";
|
|
11
|
+
import { a as $, b as A } from "./dialog-service-D9E3jLAR.js";
|
|
12
|
+
const k = (e) => class extends e {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments), this.position = { x: 0, y: 0 };
|
|
15
|
+
}
|
|
16
|
+
getDialogElement() {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
async show(t) {
|
|
20
|
+
let i, s;
|
|
21
|
+
if (this.cleanupAutoUpdate && (this.cleanupAutoUpdate(), this.cleanupAutoUpdate = void 0), t) if ("clientX" in t) i = t.clientX, s = t.clientY;
|
|
22
|
+
else if ("touches" in t && t.touches.length) i = t.touches[0].clientX, s = t.touches[0].clientY;
|
|
23
|
+
else {
|
|
24
|
+
const o = t;
|
|
25
|
+
i = o.x, s = o.y;
|
|
26
|
+
}
|
|
27
|
+
else i = window.innerWidth / 2, s = window.innerHeight / 2;
|
|
28
|
+
return this.position = { x: i, y: s }, this.virtualReference = { getBoundingClientRect: () => new DOMRect(i, s, 0, 0) }, this.requestUpdate(), await this.updateComplete, this.setAttribute("active", ""), this.setupPositioning(), new Promise((o) => {
|
|
29
|
+
this.resolvePromise = o;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
hide(t = !1) {
|
|
33
|
+
this.removeAttribute("active"), this.cleanupAutoUpdate && (this.cleanupAutoUpdate(), this.cleanupAutoUpdate = void 0), this.resolvePromise && (this.resolvePromise(t), this.resolvePromise = void 0);
|
|
34
|
+
}
|
|
35
|
+
isCentered() {
|
|
36
|
+
const t = 0.3 * window.innerWidth, i = 0.3 * window.innerHeight;
|
|
37
|
+
return Math.abs(this.position.x - window.innerWidth / 2) < t && Math.abs(this.position.y - window.innerHeight / 2) < i;
|
|
38
|
+
}
|
|
39
|
+
setupPositioning() {
|
|
40
|
+
const t = this.getDialogElement();
|
|
41
|
+
t && (this.isCentered() || this.virtualReference && (this.cleanupAutoUpdate = v(this.virtualReference, t, () => this.updatePosition(t), { ancestorScroll: !0, ancestorResize: !0, elementResize: !0 }), this.updatePosition(t)));
|
|
42
|
+
}
|
|
43
|
+
async updatePosition(t) {
|
|
44
|
+
if (!this.virtualReference) return;
|
|
45
|
+
const { x: i, y: s } = await b(this.virtualReference, t, { strategy: "fixed", middleware: [x(8), w({ padding: 16, allowedPlacements: ["top-start", "top-end", "bottom-start", "bottom-end", "left-start", "left-end", "right-start", "right-end"] }), C({ padding: 16 }), P({ padding: 16, apply({ availableWidth: o, elements: a }) {
|
|
46
|
+
a.floating.style.maxWidth = `${o}px`;
|
|
47
|
+
} })] });
|
|
48
|
+
Object.assign(t.style, { position: "fixed", left: `${Math.round(i)}px`, top: `${Math.round(s)}px`, transform: "none" });
|
|
49
|
+
}
|
|
50
|
+
disconnectedCallback() {
|
|
51
|
+
this.cleanupAutoUpdate && (this.cleanupAutoUpdate(), this.cleanupAutoUpdate = void 0), super.disconnectedCallback();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var U = Object.defineProperty, E = Object.getOwnPropertyDescriptor, c = (e, t, i, s) => {
|
|
55
|
+
for (var o, a = s > 1 ? void 0 : s ? E(t, i) : t, d = e.length - 1; d >= 0; d--) (o = e[d]) && (a = (s ? o(t, i, a) : o(a)) || a);
|
|
56
|
+
return s && a && U(t, i, a), a;
|
|
57
|
+
};
|
|
58
|
+
let n = class extends k(f(g`
|
|
59
|
+
:host {
|
|
60
|
+
position: fixed;
|
|
61
|
+
z-index: 10000;
|
|
62
|
+
inset: 0;
|
|
63
|
+
display: none;
|
|
64
|
+
--dialog-width: fit-content;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
:host([active]) {
|
|
68
|
+
display: block;
|
|
69
|
+
}
|
|
70
|
+
`)) {
|
|
71
|
+
constructor() {
|
|
72
|
+
super(...arguments), this.title = void 0, this.subtitle = void 0, this.message = void 0, this.confirmText = void 0, this.cancelText = void 0, this.variant = "default", this.hideActions = !1;
|
|
73
|
+
}
|
|
74
|
+
getDialogElement() {
|
|
75
|
+
return this.shadowRoot?.querySelector('[role="dialog"], [role="alertdialog"]');
|
|
76
|
+
}
|
|
77
|
+
get isConfirmMode() {
|
|
78
|
+
return !this.hideActions && !(!this.confirmText?.trim() || !this.cancelText?.trim());
|
|
79
|
+
}
|
|
80
|
+
connectedCallback() {
|
|
81
|
+
super.connectedCallback(), p(window, $).pipe(m((e) => {
|
|
82
|
+
e.detail.uid === this.uid && this.announcePresence();
|
|
83
|
+
}), u(this.disconnecting)).subscribe();
|
|
84
|
+
}
|
|
85
|
+
announcePresence() {
|
|
86
|
+
this.dispatchEvent(new CustomEvent(A, { detail: { dialog: this }, bubbles: !0, composed: !0 }));
|
|
87
|
+
}
|
|
88
|
+
handleConfirm() {
|
|
89
|
+
this.hide(!0), this.dispatchEvent(new CustomEvent("confirm", { bubbles: !0, composed: !0 }));
|
|
90
|
+
}
|
|
91
|
+
handleClose() {
|
|
92
|
+
this.hide(!1), this.dispatchEvent(new CustomEvent(this.isConfirmMode ? "cancel" : "close", { bubbles: !0, composed: !0 }));
|
|
93
|
+
}
|
|
94
|
+
render() {
|
|
95
|
+
const e = this.isCentered(), t = this.querySelectorAll('[slot="content"]').length > 0, i = { dialog: !0, fixed: !0, "w-[var(--dialog-width)]": !0, "max-w-[calc(100vw-2rem)]": !0, "max-h-[90dvh]": !0, "overflow-hidden": !0, "top-1/2": e, "left-1/2": e, "-translate-x-1/2": e, "-translate-y-1/2": e };
|
|
96
|
+
return this.isConfirmMode ? l`
|
|
97
|
+
<div class="fixed inset-0 bg-scrim/40" @click=${this.handleClose}></div>
|
|
98
|
+
|
|
99
|
+
<div class=${this.classMap(i)} role="alertdialog" aria-modal="true">
|
|
100
|
+
<schmancy-surface rounded="all" elevation="3" type="containerHigh" fill="all" class="overflow-hidden">
|
|
101
|
+
<schmancy-scroll direction="vertical" hide class="p-4">
|
|
102
|
+
<schmancy-form @submit=${this.handleConfirm}>
|
|
103
|
+
${h(this.title?.trim(), () => l`
|
|
104
|
+
<schmancy-typography type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
|
|
105
|
+
${h(this.subtitle?.trim(), () => l`
|
|
106
|
+
<schmancy-typography type="subtitle" token="xs" class="mb-2">
|
|
107
|
+
${this.subtitle}
|
|
108
|
+
</schmancy-typography>
|
|
109
|
+
`)}
|
|
110
|
+
`)}
|
|
111
|
+
${t ? l`<div class="mb-4"><slot name="content"></slot></div>` : h(this.message?.trim(), () => l`<schmancy-typography type="body" class="mb-4">${this.message}</schmancy-typography>`)}
|
|
112
|
+
<div class="flex justify-end gap-3">
|
|
113
|
+
<schmancy-button variant="outlined" @click=${this.handleClose}>${this.cancelText}</schmancy-button>
|
|
114
|
+
<schmancy-button type="submit" variant="filled">${this.confirmText}</schmancy-button>
|
|
115
|
+
</div>
|
|
116
|
+
</schmancy-form>
|
|
117
|
+
</schmancy-scroll>
|
|
118
|
+
</schmancy-surface>
|
|
119
|
+
</div>
|
|
120
|
+
` : l`
|
|
121
|
+
<div class="fixed inset-0 bg-surface-container/10 backdrop-blur-xs" @click=${this.handleClose}></div>
|
|
122
|
+
|
|
123
|
+
<section class=${this.classMap(i)} role="dialog" aria-modal="true">
|
|
124
|
+
<schmancy-surface rounded="all" type="surface" elevation="2" fill="all" class="overflow-hidden">
|
|
125
|
+
<schmancy-scroll direction="vertical" hide class="p-2 md:p-4 max-h-[90dvh]">
|
|
126
|
+
<slot></slot>
|
|
127
|
+
</schmancy-scroll>
|
|
128
|
+
</schmancy-surface>
|
|
129
|
+
</section>
|
|
130
|
+
`;
|
|
131
|
+
}
|
|
132
|
+
static async confirm(e) {
|
|
133
|
+
let t = document.querySelector("schmancy-dialog[data-static-confirm]");
|
|
134
|
+
return t || (t = document.createElement("schmancy-dialog"), t.setAttribute("data-static-confirm", ""), document.body.appendChild(t)), t.title = e.title, t.subtitle = e.subtitle, t.message = e.message, t.confirmText = e.confirmText ?? "Confirm", t.cancelText = e.cancelText ?? "Cancel", t.variant = e.variant ?? "default", e.width && t.style.setProperty("--dialog-width", e.width), t.show(e.position);
|
|
135
|
+
}
|
|
136
|
+
static async ask(e, t) {
|
|
137
|
+
return this.confirm({ message: e, position: t });
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
c([r({ type: String, reflect: !0 })], n.prototype, "uid", 2), c([r({ type: String })], n.prototype, "title", 2), c([r({ type: String })], n.prototype, "subtitle", 2), c([r({ type: String })], n.prototype, "message", 2), c([r({ type: String, attribute: "confirm-text" })], n.prototype, "confirmText", 2), c([r({ type: String, attribute: "cancel-text" })], n.prototype, "cancelText", 2), c([r({ type: String })], n.prototype, "variant", 2), c([r({ type: Boolean, attribute: "hide-actions" })], n.prototype, "hideActions", 2), n = c([y("schmancy-dialog")], n);
|
|
141
|
+
export {
|
|
142
|
+
k as D,
|
|
143
|
+
n as S
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=dialog.component-CMUoCC7O.js.map
|