@mhmo91/schmancy 0.8.6 → 0.9.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/README.md +54 -1
- package/ai/INDEX.md +321 -0
- package/ai/animation.md +64 -0
- package/ai/area.md +170 -237
- package/ai/audio.md +50 -222
- package/ai/autocomplete.md +44 -162
- package/ai/avatar.md +47 -178
- package/ai/badge.md +41 -108
- package/ai/boat.md +35 -41
- package/ai/busy.md +25 -184
- package/ai/button.md +52 -150
- package/ai/card.md +42 -215
- package/ai/charts.md +93 -0
- package/ai/checkbox.md +32 -135
- package/ai/chips.md +73 -383
- package/ai/code-highlight.md +33 -226
- package/ai/connectivity.md +36 -0
- package/ai/content-drawer.md +65 -232
- package/ai/date-range-inline.md +40 -258
- package/ai/date-range.md +43 -198
- package/ai/delay.md +31 -139
- package/ai/details.md +48 -453
- package/ai/dialog.md +55 -164
- package/ai/directives.md +258 -405
- package/ai/discovery.md +67 -0
- package/ai/divider.md +15 -137
- package/ai/dropdown.md +44 -235
- package/ai/expand.md +63 -0
- package/ai/extra.md +59 -0
- package/ai/float.md +14 -0
- package/ai/form.md +41 -137
- package/ai/icons.md +31 -235
- package/ai/iframe.md +44 -0
- package/ai/input.md +50 -210
- package/ai/json.md +33 -0
- package/ai/layout.md +45 -169
- package/ai/lightbox.md +25 -370
- package/ai/list.md +51 -130
- package/ai/mailbox.md +80 -508
- package/ai/map.md +47 -226
- package/ai/menu.md +25 -134
- package/ai/mixins.md +201 -0
- package/ai/nav-drawer.md +30 -184
- package/ai/navigation-bar.md +27 -184
- package/ai/navigation-rail.md +62 -630
- package/ai/notification.md +49 -183
- package/ai/option.md +30 -160
- package/ai/page.md +42 -0
- package/ai/progress.md +26 -65
- package/ai/qr-scanner.md +51 -0
- package/ai/radio-group.md +45 -189
- package/ai/range.md +47 -0
- package/ai/rxjs-utils.md +60 -0
- package/ai/select.md +49 -209
- package/ai/sheet.md +74 -506
- package/ai/slider.md +30 -214
- package/ai/steps.md +30 -392
- package/ai/store.md +173 -251
- package/ai/surface.md +58 -245
- package/ai/table.md +56 -330
- package/ai/tabs.md +31 -176
- package/ai/teleport.md +35 -177
- package/ai/textarea.md +48 -232
- package/ai/theme-button.md +16 -163
- package/ai/theme.md +40 -1089
- package/ai/tooltip.md +35 -146
- package/ai/tree.md +45 -271
- package/ai/typewriter.md +28 -317
- package/ai/typography.md +43 -296
- package/ai/utils.md +95 -0
- package/ai/window.md +67 -0
- package/custom-elements.json +10955 -0
- package/dist/ai/INDEX.md +321 -0
- package/dist/ai/animation.md +64 -0
- package/dist/ai/area.md +170 -237
- package/dist/ai/audio.md +50 -222
- package/dist/ai/autocomplete.md +44 -162
- package/dist/ai/avatar.md +47 -178
- package/dist/ai/badge.md +41 -108
- package/dist/ai/boat.md +35 -41
- package/dist/ai/busy.md +25 -184
- package/dist/ai/button.md +52 -150
- package/dist/ai/card.md +42 -215
- package/dist/ai/charts.md +93 -0
- package/dist/ai/checkbox.md +32 -135
- package/dist/ai/chips.md +73 -383
- package/dist/ai/code-highlight.md +33 -226
- package/dist/ai/connectivity.md +36 -0
- package/dist/ai/content-drawer.md +65 -232
- package/dist/ai/date-range-inline.md +40 -258
- package/dist/ai/date-range.md +43 -198
- package/dist/ai/delay.md +31 -139
- package/dist/ai/details.md +48 -453
- package/dist/ai/dialog.md +55 -164
- package/dist/ai/directives.md +258 -405
- package/dist/ai/discovery.md +67 -0
- package/dist/ai/divider.md +15 -137
- package/dist/ai/dropdown.md +44 -235
- package/dist/ai/expand.md +63 -0
- package/dist/ai/extra.md +59 -0
- package/dist/ai/float.md +14 -0
- package/dist/ai/form.md +41 -137
- package/dist/ai/icons.md +31 -235
- package/dist/ai/iframe.md +44 -0
- package/dist/ai/input.md +50 -210
- package/dist/ai/json.md +33 -0
- package/dist/ai/layout.md +45 -169
- package/dist/ai/lightbox.md +25 -370
- package/dist/ai/list.md +51 -130
- package/dist/ai/mailbox.md +80 -508
- package/dist/ai/map.md +47 -226
- package/dist/ai/menu.md +25 -134
- package/dist/ai/mixins.md +201 -0
- package/dist/ai/nav-drawer.md +30 -184
- package/dist/ai/navigation-bar.md +27 -184
- package/dist/ai/navigation-rail.md +62 -630
- package/dist/ai/notification.md +49 -183
- package/dist/ai/option.md +30 -160
- package/dist/ai/page.md +42 -0
- package/dist/ai/progress.md +26 -65
- package/dist/ai/qr-scanner.md +51 -0
- package/dist/ai/radio-group.md +45 -189
- package/dist/ai/range.md +47 -0
- package/dist/ai/rxjs-utils.md +60 -0
- package/dist/ai/select.md +49 -209
- package/dist/ai/sheet.md +74 -506
- package/dist/ai/slider.md +30 -214
- package/dist/ai/steps.md +30 -392
- package/dist/ai/store.md +173 -251
- package/dist/ai/surface.md +58 -245
- package/dist/ai/table.md +56 -330
- package/dist/ai/tabs.md +31 -176
- package/dist/ai/teleport.md +35 -177
- package/dist/ai/textarea.md +48 -232
- package/dist/ai/theme-button.md +16 -163
- package/dist/ai/theme.md +40 -1089
- package/dist/ai/tooltip.md +35 -146
- package/dist/ai/tree.md +45 -271
- package/dist/ai/typewriter.md +28 -317
- package/dist/ai/typography.md +43 -296
- package/dist/ai/utils.md +95 -0
- package/dist/ai/window.md +67 -0
- package/dist/animation-BK-8BwY8.js +173 -0
- package/dist/animation-BK-8BwY8.js.map +1 -0
- package/dist/animation-CO_Csq84.cjs +16 -0
- package/dist/animation-CO_Csq84.cjs.map +1 -0
- package/dist/area-CC8fUnra.js +590 -0
- package/dist/area-CC8fUnra.js.map +1 -0
- package/dist/area-wnWUAHEn.cjs +12 -0
- package/dist/area-wnWUAHEn.cjs.map +1 -0
- package/dist/area.cjs +1 -2
- package/dist/area.js +2 -29
- package/dist/audio-DtYYgzYD.cjs +1 -0
- package/dist/audio-DtYYgzYD.cjs.map +1 -0
- package/dist/audio-kz8UgPTO.js +335 -0
- package/dist/audio-kz8UgPTO.js.map +1 -0
- package/dist/audio.cjs +1 -2
- package/dist/audio.js +3 -9
- package/dist/autocomplete-B2Z3WK_7.cjs +111 -0
- package/dist/autocomplete-B2Z3WK_7.cjs.map +1 -0
- package/dist/autocomplete-CJ7YgtKN.js +378 -0
- package/dist/autocomplete-CJ7YgtKN.js.map +1 -0
- package/dist/autocomplete.cjs +1 -2
- package/dist/autocomplete.js +1 -2
- package/dist/badge.cjs +1 -2
- package/dist/badge.js +2 -6
- package/dist/boat-B57_4TzJ.cjs +80 -0
- package/dist/boat-B57_4TzJ.cjs.map +1 -0
- package/dist/boat-C9eU6NO-.js +347 -0
- package/dist/boat-C9eU6NO-.js.map +1 -0
- package/dist/boat.cjs +1 -2
- package/dist/boat.js +2 -5
- package/dist/busy--6oimtop.cjs +134 -0
- package/dist/busy--6oimtop.cjs.map +1 -0
- package/dist/busy-CGZXy0h-.js +167 -0
- package/dist/busy-CGZXy0h-.js.map +1 -0
- package/dist/busy.cjs +1 -2
- package/dist/busy.js +1 -2
- package/dist/button.cjs +113 -2
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +398 -5
- package/dist/button.js.map +1 -1
- package/dist/card-BGJ0Hb1O.cjs +177 -0
- package/dist/card-BGJ0Hb1O.cjs.map +1 -0
- package/dist/card-C-ee-l5O.js +284 -0
- package/dist/card-C-ee-l5O.js.map +1 -0
- package/dist/card.cjs +1 -2
- package/dist/card.js +1 -2
- package/dist/charts.cjs +112 -2
- package/dist/charts.cjs.map +1 -1
- package/dist/charts.js +368 -8
- package/dist/charts.js.map +1 -1
- package/dist/checkbox-DuYaKoDZ.cjs +39 -0
- package/dist/checkbox-DuYaKoDZ.cjs.map +1 -0
- package/dist/checkbox-FRcorDrD.js +610 -0
- package/dist/checkbox-FRcorDrD.js.map +1 -0
- package/dist/checkbox.cjs +1 -2
- package/dist/checkbox.js +2 -5
- package/dist/chips-BpA0A-qr.cjs +253 -0
- package/dist/chips-BpA0A-qr.cjs.map +1 -0
- package/dist/chips-CyzNbKJD.js +645 -0
- package/dist/chips-CyzNbKJD.js.map +1 -0
- package/dist/chips.cjs +1 -2
- package/dist/chips.js +3 -10
- package/dist/chunk-BCfY8kxB.cjs +1 -0
- package/dist/chunk-C_1VqBVD.js +11 -0
- package/dist/code-highlight-C7O9ltXm.js +290 -0
- package/dist/code-highlight-C7O9ltXm.js.map +1 -0
- package/dist/code-highlight-DsBdSQBG.cjs +190 -0
- package/dist/code-highlight-DsBdSQBG.cjs.map +1 -0
- package/dist/code-highlight.cjs +1 -2
- package/dist/code-highlight.js +2 -7
- package/dist/components-CkMvOiTR.js +730 -0
- package/dist/components-CkMvOiTR.js.map +1 -0
- package/dist/components-dDI3xeIf.cjs +73 -0
- package/dist/components-dDI3xeIf.cjs.map +1 -0
- package/dist/components.cjs +1 -2
- package/dist/components.js +2 -5
- package/dist/connectivity.cjs +59 -0
- package/dist/connectivity.cjs.map +1 -0
- package/dist/connectivity.js +86 -0
- package/dist/connectivity.js.map +1 -0
- package/dist/content-drawer.cjs +1 -2
- package/dist/content-drawer.js +2 -13
- package/dist/cursor-glow-Ah7VXSj7.js +46 -0
- package/dist/cursor-glow-Ah7VXSj7.js.map +1 -0
- package/dist/cursor-glow-DtSy_PJd.cjs +1 -0
- package/dist/cursor-glow-DtSy_PJd.cjs.map +1 -0
- package/dist/date-range-70zhLUKE.cjs +131 -0
- package/dist/date-range-70zhLUKE.cjs.map +1 -0
- package/dist/date-range-BrN_Bs6_.js +946 -0
- package/dist/date-range-BrN_Bs6_.js.map +1 -0
- package/dist/date-range-inline-CPzD-tIv.cjs +43 -0
- package/dist/date-range-inline-CPzD-tIv.cjs.map +1 -0
- package/dist/date-range-inline-Cp294DxR.js +267 -0
- package/dist/date-range-inline-Cp294DxR.js.map +1 -0
- package/dist/date-range-inline.cjs +1 -2
- package/dist/date-range-inline.js +2 -5
- package/dist/date-range.cjs +1 -2
- package/dist/date-range.js +2 -6
- package/dist/delay-COcAkBqB.cjs +9 -0
- package/dist/delay-COcAkBqB.cjs.map +1 -0
- package/dist/delay-IV0Swce2.js +346 -0
- package/dist/delay-IV0Swce2.js.map +1 -0
- package/dist/delay.cjs +1 -2
- package/dist/delay.js +2 -6
- package/dist/details-CuKmr3Qw.js +293 -0
- package/dist/details-CuKmr3Qw.js.map +1 -0
- package/dist/details-DgWkPqmt.cjs +168 -0
- package/dist/details-DgWkPqmt.cjs.map +1 -0
- package/dist/details.cjs +1 -2
- package/dist/details.js +2 -5
- package/dist/dialog-service-NZEvyEK-.js +193 -0
- package/dist/dialog-service-NZEvyEK-.js.map +1 -0
- package/dist/dialog-service-VnW4gkmE.cjs +1 -0
- package/dist/dialog-service-VnW4gkmE.cjs.map +1 -0
- package/dist/dialog.cjs +82 -2
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +396 -9
- package/dist/dialog.js.map +1 -1
- package/dist/directives.cjs +108 -2
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.js +1362 -14
- package/dist/directives.js.map +1 -1
- package/dist/discovery.cjs +1 -2
- package/dist/discovery.cjs.map +1 -1
- package/dist/discovery.js +61 -6
- package/dist/discovery.js.map +1 -1
- package/dist/divider-BWoUbfgZ.js +87 -0
- package/dist/divider-BWoUbfgZ.js.map +1 -0
- package/dist/divider-BghtrMbn.cjs +57 -0
- package/dist/divider-BghtrMbn.cjs.map +1 -0
- package/dist/divider.cjs +1 -2
- package/dist/divider.js +1 -2
- package/dist/dropdown.cjs +57 -2
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +160 -5
- package/dist/dropdown.js.map +1 -1
- package/dist/expand-CJU9m4ga.js +336 -0
- package/dist/expand-CJU9m4ga.js.map +1 -0
- package/dist/expand-XyDE5SsO.cjs +141 -0
- package/dist/expand-XyDE5SsO.cjs.map +1 -0
- package/dist/expand.cjs +1 -0
- package/dist/expand.js +2 -0
- package/dist/extra-BxXFmW1w.js +3435 -0
- package/dist/extra-BxXFmW1w.js.map +1 -0
- package/dist/extra-CsrRKKqE.cjs +31 -0
- package/dist/extra-CsrRKKqE.cjs.map +1 -0
- package/dist/extra.cjs +1 -2
- package/dist/extra.js +2 -6
- package/dist/float-BD86t_NU.js +5 -0
- package/dist/float-BD86t_NU.js.map +1 -0
- package/dist/float-DBv1FINW.cjs +1 -0
- package/dist/float-DBv1FINW.cjs.map +1 -0
- package/dist/float.cjs +1 -0
- package/dist/float.js +2 -0
- package/dist/flow-Bbwn6dRN.cjs +1 -0
- package/dist/flow-Bbwn6dRN.cjs.map +1 -0
- package/dist/flow-CUj0fDT_.js +386 -0
- package/dist/flow-CUj0fDT_.js.map +1 -0
- package/dist/form-Cp5-I_ZV.js +270 -0
- package/dist/form-Cp5-I_ZV.js.map +1 -0
- package/dist/form-D0bIeDWT.cjs +1 -0
- package/dist/form-D0bIeDWT.cjs.map +1 -0
- package/dist/form.cjs +1 -2
- package/dist/form.js +1 -2
- package/dist/hashContent-DYM21p6t.js +6 -0
- package/dist/hashContent-DYM21p6t.js.map +1 -0
- package/dist/hashContent-DaeGmY-p.cjs +1 -0
- package/dist/hashContent-DaeGmY-p.cjs.map +1 -0
- package/dist/icons-BpU0_l92.js +161 -0
- package/dist/icons-BpU0_l92.js.map +1 -0
- package/dist/icons-D8w_20mO.cjs +52 -0
- package/dist/icons-D8w_20mO.cjs.map +1 -0
- package/dist/icons.cjs +1 -2
- package/dist/icons.js +1 -2
- package/dist/iframe-BjwxA2Pg.cjs +24 -0
- package/dist/iframe-BjwxA2Pg.cjs.map +1 -0
- package/dist/iframe-tY1GY5g1.js +44 -0
- package/dist/iframe-tY1GY5g1.js.map +1 -0
- package/dist/iframe.cjs +1 -0
- package/dist/iframe.js +2 -0
- package/dist/index.cjs +1 -2
- package/dist/index.js +69 -285
- package/dist/input-BnfTpRN9.js +364 -0
- package/dist/input-BnfTpRN9.js.map +1 -0
- package/dist/input-BwxwognS.cjs +51 -0
- package/dist/input-BwxwognS.cjs.map +1 -0
- package/dist/input-chip-CkM2aYmO.js +301 -0
- package/dist/input-chip-CkM2aYmO.js.map +1 -0
- package/dist/input-chip-MjOwX5EY.cjs +146 -0
- package/dist/input-chip-MjOwX5EY.cjs.map +1 -0
- package/dist/input.cjs +1 -2
- package/dist/input.js +2 -6
- package/dist/intersection-BPLpqYEd.js +12 -0
- package/dist/intersection-BPLpqYEd.js.map +1 -0
- package/dist/intersection-CZpaIHeT.cjs +1 -0
- package/dist/intersection-CZpaIHeT.cjs.map +1 -0
- package/dist/json.cjs +11 -2
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +40 -4
- package/dist/json.js.map +1 -1
- package/dist/layout-4C-6_cre.cjs +1 -0
- package/dist/layout-4C-6_cre.cjs.map +1 -0
- package/dist/layout-BV0EeyUS.cjs +17 -0
- package/dist/layout-BV0EeyUS.cjs.map +1 -0
- package/dist/layout-CJSlZlFL.js +267 -0
- package/dist/layout-CJSlZlFL.js.map +1 -0
- package/dist/layout-yxSlLybo.js +94 -0
- package/dist/layout-yxSlLybo.js.map +1 -0
- package/dist/layout.cjs +1 -2
- package/dist/layout.js +3 -9
- package/dist/lightbox-CpNMZHZW.cjs +202 -0
- package/dist/lightbox-CpNMZHZW.cjs.map +1 -0
- package/dist/lightbox-groqGmJH.js +678 -0
- package/dist/lightbox-groqGmJH.js.map +1 -0
- package/dist/lightbox.cjs +1 -2
- package/dist/lightbox.js +2 -8
- package/dist/list-CyHd0Zc2.cjs +40 -0
- package/dist/list-CyHd0Zc2.cjs.map +1 -0
- package/dist/list-DzkqT_r-.js +105 -0
- package/dist/list-DzkqT_r-.js.map +1 -0
- package/dist/list.cjs +1 -2
- package/dist/list.js +2 -7
- package/dist/litElement.mixin-BG6_-nYX.cjs +1 -0
- package/dist/litElement.mixin-BG6_-nYX.cjs.map +1 -0
- package/dist/litElement.mixin-Dm-4L8zL.js +12 -0
- package/dist/litElement.mixin-Dm-4L8zL.js.map +1 -0
- package/dist/magnetic-BZGFxAWG.js +47 -0
- package/dist/magnetic-BZGFxAWG.js.map +1 -0
- package/dist/magnetic-Dux4QwO4.cjs +1 -0
- package/dist/magnetic-Dux4QwO4.cjs.map +1 -0
- package/dist/mailbox-BcqnXYVP.js +1584 -0
- package/dist/mailbox-BcqnXYVP.js.map +1 -0
- package/dist/mailbox-C5eYTd7p.cjs +1142 -0
- package/dist/mailbox-C5eYTd7p.cjs.map +1 -0
- package/dist/mailbox.cjs +1 -2
- package/dist/mailbox.js +2 -9
- package/dist/map-BncheFt5.cjs +80 -0
- package/dist/map-BncheFt5.cjs.map +1 -0
- package/dist/map-C0o1PgLE.js +205 -0
- package/dist/map-C0o1PgLE.js.map +1 -0
- package/dist/map.cjs +1 -2
- package/dist/map.js +2 -5
- package/dist/menu-uwqlQbLd.js +51 -0
- package/dist/menu-uwqlQbLd.js.map +1 -0
- package/dist/menu-yXzwJZFf.cjs +23 -0
- package/dist/menu-yXzwJZFf.cjs.map +1 -0
- package/dist/menu.cjs +1 -2
- package/dist/menu.js +1 -2
- package/dist/mixins.cjs +1 -2
- package/dist/mixins.cjs.map +1 -1
- package/dist/mixins.js +59 -12
- package/dist/mixins.js.map +1 -1
- package/dist/nav-drawer.cjs +1 -2
- package/dist/nav-drawer.js +2 -12
- package/dist/navigation-bar.cjs +1 -2
- package/dist/navigation-bar.js +2 -6
- package/dist/navigation-rail.cjs +71 -2
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +363 -5
- package/dist/navigation-rail.js.map +1 -1
- package/dist/notification-BjwTfLAl.cjs +23 -0
- package/dist/notification-BjwTfLAl.cjs.map +1 -0
- package/dist/notification-DzYT4deA.js +304 -0
- package/dist/notification-DzYT4deA.js.map +1 -0
- package/dist/notification.cjs +1 -2
- package/dist/notification.js +2 -9
- package/dist/option-BJsD3u2D.cjs +43 -0
- package/dist/option-BJsD3u2D.cjs.map +1 -0
- package/dist/option-JFHxgiYl.js +97 -0
- package/dist/option-JFHxgiYl.js.map +1 -0
- package/dist/option.cjs +1 -2
- package/dist/option.js +1 -2
- package/dist/overlay-stack-DQey9Qph.cjs +1 -0
- package/dist/overlay-stack-DQey9Qph.cjs.map +1 -0
- package/dist/overlay-stack-DT1SdaGW.js +39 -0
- package/dist/overlay-stack-DT1SdaGW.js.map +1 -0
- package/dist/page.cjs +20 -2
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +71 -4
- package/dist/page.js.map +1 -1
- package/dist/progress-BUh5WBqx.js +128 -0
- package/dist/progress-BUh5WBqx.js.map +1 -0
- package/dist/progress-BoRmyGAa.cjs +51 -0
- package/dist/progress-BoRmyGAa.cjs.map +1 -0
- package/dist/progress.cjs +1 -2
- package/dist/progress.js +1 -2
- package/dist/provide-8MrDz_qX.js +107 -0
- package/dist/provide-8MrDz_qX.js.map +1 -0
- package/dist/provide-CDkxgjHb.cjs +1 -0
- package/dist/provide-CDkxgjHb.cjs.map +1 -0
- package/dist/qr-scanner.cjs +35 -2
- package/dist/qr-scanner.cjs.map +1 -1
- package/dist/qr-scanner.js +119 -4
- package/dist/qr-scanner.js.map +1 -1
- package/dist/radio-group-DbOWUPhi.js +105 -0
- package/dist/radio-group-DbOWUPhi.js.map +1 -0
- package/dist/radio-group-rhrvhB5X.cjs +40 -0
- package/dist/radio-group-rhrvhB5X.cjs.map +1 -0
- package/dist/radio-group.cjs +1 -2
- package/dist/radio-group.js +2 -6
- package/dist/range.cjs +62 -0
- package/dist/range.cjs.map +1 -0
- package/dist/range.js +85 -0
- package/dist/range.js.map +1 -0
- package/dist/reduced-motion-D-L12p7G.js +7 -0
- package/dist/reduced-motion-D-L12p7G.js.map +1 -0
- package/dist/reduced-motion-Ds05GPyz.cjs +1 -0
- package/dist/reduced-motion-Ds05GPyz.cjs.map +1 -0
- package/dist/rxjs-utils-BSjmI9-Q.js +32 -0
- package/dist/rxjs-utils-BSjmI9-Q.js.map +1 -0
- package/dist/rxjs-utils-DCsfzeap.cjs +1 -0
- package/dist/rxjs-utils-DCsfzeap.cjs.map +1 -0
- package/dist/rxjs-utils.cjs +1 -2
- package/dist/rxjs-utils.js +2 -14
- package/dist/scroll-BE9W9PF2.cjs +26 -0
- package/dist/scroll-BE9W9PF2.cjs.map +1 -0
- package/dist/scroll-qGks1R0k.js +112 -0
- package/dist/scroll-qGks1R0k.js.map +1 -0
- package/dist/search-C4dFHYbX.js +91 -0
- package/dist/search-C4dFHYbX.js.map +1 -0
- package/dist/search-Ds8tt7Et.cjs +1 -0
- package/dist/search-Ds8tt7Et.cjs.map +1 -0
- package/dist/select-D9sgBRjU.js +305 -0
- package/dist/select-D9sgBRjU.js.map +1 -0
- package/dist/select-DXU2kzg4.cjs +56 -0
- package/dist/select-DXU2kzg4.cjs.map +1 -0
- package/dist/select.cjs +1 -2
- package/dist/select.js +2 -5
- package/dist/sheet-CIxCCJ3H.js +168 -0
- package/dist/sheet-CIxCCJ3H.js.map +1 -0
- package/dist/sheet-CeX6BbNp.cjs +35 -0
- package/dist/sheet-CeX6BbNp.cjs.map +1 -0
- package/dist/sheet.cjs +1 -2
- package/dist/sheet.js +3 -7
- package/dist/sheet.service-CAB7weBc.js +86 -0
- package/dist/sheet.service-CAB7weBc.js.map +1 -0
- package/dist/sheet.service-DPAp7E3x.cjs +1 -0
- package/dist/sheet.service-DPAp7E3x.cjs.map +1 -0
- package/dist/slider.cjs +82 -2
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +143 -5
- package/dist/slider.js.map +1 -1
- package/dist/sound.service-Bu3EQLv2.cjs +1 -0
- package/dist/sound.service-Bu3EQLv2.cjs.map +1 -0
- package/dist/sound.service-m3BrSfuH.js +2353 -0
- package/dist/sound.service-m3BrSfuH.js.map +1 -0
- package/dist/src-CbO5kJ2O.js +1244 -0
- package/dist/src-CbO5kJ2O.js.map +1 -0
- package/dist/src-SraDxEeg.cjs +269 -0
- package/dist/src-SraDxEeg.cjs.map +1 -0
- package/dist/steps.cjs +70 -2
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +178 -7
- package/dist/steps.js.map +1 -1
- package/dist/store-CorvD3bT.cjs +1 -0
- package/dist/store-CorvD3bT.cjs.map +1 -0
- package/dist/store-DYqDLAvT.js +1654 -0
- package/dist/store-DYqDLAvT.js.map +1 -0
- package/dist/store.cjs +1 -2
- package/dist/store.js +2 -47
- package/dist/surface-DuH0pm2v.cjs +7 -0
- package/dist/surface-DuH0pm2v.cjs.map +1 -0
- package/dist/surface-eN_Jy2MJ.js +21 -0
- package/dist/surface-eN_Jy2MJ.js.map +1 -0
- package/dist/surface.cjs +1 -2
- package/dist/surface.js +2 -6
- package/dist/surface.mixin-CIXgN6iw.cjs +297 -0
- package/dist/surface.mixin-CIXgN6iw.cjs.map +1 -0
- package/dist/surface.mixin-D9jv1sKG.js +320 -0
- package/dist/surface.mixin-D9jv1sKG.js.map +1 -0
- package/dist/table-C9rRQJEB.cjs +63 -0
- package/dist/table-C9rRQJEB.cjs.map +1 -0
- package/dist/table-Dg_tUGB_.js +631 -0
- package/dist/table-Dg_tUGB_.js.map +1 -0
- package/dist/table.cjs +1 -2
- package/dist/table.js +2 -6
- package/dist/tabs-BbFC9omR.js +125 -0
- package/dist/tabs-BbFC9omR.js.map +1 -0
- package/dist/tabs-soTL-x4G.cjs +31 -0
- package/dist/tabs-soTL-x4G.cjs.map +1 -0
- package/dist/tabs.cjs +1 -2
- package/dist/tabs.js +1 -2
- package/dist/tailwind.mixin-BIVhjNvD.js +225 -0
- package/dist/tailwind.mixin-BIVhjNvD.js.map +1 -0
- package/dist/tailwind.mixin-DSuEu-y3.cjs +2 -0
- package/dist/tailwind.mixin-DSuEu-y3.cjs.map +1 -0
- package/dist/teleport.cjs +1 -2
- package/dist/teleport.js +2 -8
- package/dist/textarea-DaRUJ0ri.cjs +35 -0
- package/dist/textarea-DaRUJ0ri.cjs.map +1 -0
- package/dist/textarea-hChvHbNM.js +195 -0
- package/dist/textarea-hChvHbNM.js.map +1 -0
- package/dist/textarea.cjs +1 -2
- package/dist/textarea.js +1 -2
- package/dist/theme-B0M8Hlyo.js +4121 -0
- package/dist/theme-B0M8Hlyo.js.map +1 -0
- package/dist/theme-ZYH2MqX9.cjs +181 -0
- package/dist/theme-ZYH2MqX9.cjs.map +1 -0
- package/dist/theme-button-BtlX_Zgd.js +19 -0
- package/dist/theme-button-BtlX_Zgd.js.map +1 -0
- package/dist/theme-button-Dvqg-rE_.cjs +8 -0
- package/dist/theme-button-Dvqg-rE_.cjs.map +1 -0
- package/dist/theme-button.cjs +1 -2
- package/dist/theme-button.js +1 -2
- package/dist/theme.cjs +1 -2
- package/dist/theme.events-Cv7N4Toe.js +2 -0
- package/dist/theme.events-Cv7N4Toe.js.map +1 -0
- package/dist/theme.events-DM4H5F2d.cjs +1 -0
- package/dist/theme.events-DM4H5F2d.cjs.map +1 -0
- package/dist/theme.interface-CXloMUCw.js +276 -0
- package/dist/theme.interface-CXloMUCw.js.map +1 -0
- package/dist/theme.interface-Da23QAYb.cjs +1 -0
- package/dist/theme.interface-Da23QAYb.cjs.map +1 -0
- package/dist/theme.js +6 -21
- package/dist/theme.service-C_tjlqgy.cjs +1 -0
- package/dist/theme.service-C_tjlqgy.cjs.map +1 -0
- package/dist/theme.service-D9lEas89.js +108 -0
- package/dist/theme.service-D9lEas89.js.map +1 -0
- package/dist/tooltip.cjs +6 -2
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js +200 -5
- package/dist/tooltip.js.map +1 -1
- package/dist/tree.cjs +26 -2
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +64 -4
- package/dist/tree.js.map +1 -1
- package/dist/tslib.es6-D7BIeDVB.cjs +1 -0
- package/dist/tslib.es6-D7BIeDVB.cjs.map +1 -0
- package/dist/tslib.es6-ErZEp3OO.js +7 -0
- package/dist/tslib.es6-ErZEp3OO.js.map +1 -0
- package/dist/types.cjs +1 -2
- package/dist/types.cjs.map +1 -1
- package/dist/types.js +4 -5
- package/dist/types.js.map +1 -1
- package/dist/typewriter-CCel8Nta.js +700 -0
- package/dist/typewriter-CCel8Nta.js.map +1 -0
- package/dist/typewriter-Cf9f2bdx.cjs +123 -0
- package/dist/typewriter-Cf9f2bdx.cjs.map +1 -0
- package/dist/typewriter.cjs +1 -2
- package/dist/typewriter.js +2 -5
- package/dist/typography.cjs +282 -2
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +353 -4
- package/dist/typography.js.map +1 -1
- package/dist/utils-BcaKtQuA.cjs +1 -0
- package/dist/utils-BcaKtQuA.cjs.map +1 -0
- package/dist/utils-CoU7M2YS.js +259 -0
- package/dist/utils-CoU7M2YS.js.map +1 -0
- package/dist/utils.cjs +1 -2
- package/dist/utils.js +6 -9
- package/dist/window-B9_14c12.cjs +59 -0
- package/dist/window-B9_14c12.cjs.map +1 -0
- package/dist/window-CbgdwOZD.js +548 -0
- package/dist/window-CbgdwOZD.js.map +1 -0
- package/dist/window.cjs +1 -0
- package/dist/window.js +2 -0
- package/mixins/baseElement.ts +118 -1
- package/mixins/discovery.service.ts +162 -1
- package/mixins/formField.mixin.ts +13 -8
- package/mixins/index.ts +2 -0
- package/mixins/surface.mixin.ts +93 -0
- package/mixins/tailwind.css +331 -14
- package/package.json +32 -28
- package/src/CLAUDE.md +428 -0
- package/src/area/.excalidraw +357 -0
- package/src/area/area.component.ts +449 -0
- package/src/area/area.service.test.ts +1007 -0
- package/src/area/area.service.ts +748 -0
- package/src/area/ecrypt.ts +7 -0
- package/src/area/index.ts +7 -0
- package/src/area/lazy.ts +83 -0
- package/src/area/readme.md +338 -0
- package/src/area/route.component.ts +79 -0
- package/src/area/router-guide.md +360 -0
- package/src/area/router.types.ts +101 -0
- package/src/area/utils.ts +354 -0
- package/src/audio/emotional-sounds.ts +940 -0
- package/src/audio/index.ts +53 -0
- package/src/audio/sound.service.ts +1079 -0
- package/src/autocomplete/README.md +485 -0
- package/src/autocomplete/autocomplete.scss +24 -0
- package/src/autocomplete/autocomplete.ts +733 -0
- package/src/autocomplete/index.ts +1 -0
- package/src/avatar.ts +164 -0
- package/src/badge/badge.ts +286 -0
- package/src/badge/index.ts +1 -0
- package/src/boat/boat.ts +664 -0
- package/src/boat/index.ts +1 -0
- package/src/busy/busy.ts +39 -0
- package/src/busy/index.ts +2 -0
- package/src/busy/spinner.ts +165 -0
- package/src/button/button.ts +382 -0
- package/src/button/icon-button.ts +287 -0
- package/src/button/index.ts +2 -0
- package/src/card/actions.ts +28 -0
- package/src/card/card.ts +319 -0
- package/src/card/content.ts +24 -0
- package/src/card/index.ts +4 -0
- package/src/card/media.ts +77 -0
- package/src/charts/area-chart.ts +495 -0
- package/src/charts/index.ts +4 -0
- package/src/charts/pills.ts +350 -0
- package/src/charts/types.ts +66 -0
- package/src/charts/utils.ts +65 -0
- package/src/checkbox/checkbox.ts +122 -0
- package/src/checkbox/index.ts +1 -0
- package/src/chips/assist-chip.ts +261 -0
- package/src/chips/chips.ts +259 -0
- package/src/chips/filter-chip.ts +255 -0
- package/src/chips/index.ts +5 -0
- package/src/chips/input-chip.ts +408 -0
- package/src/chips/suggestion-chip.ts +266 -0
- package/src/code-highlight/code-highlight.ts +344 -0
- package/src/code-highlight/code-preview.ts +123 -0
- package/src/code-highlight/index.ts +3 -0
- package/src/components/form-elements/index.ts +1 -0
- package/src/components/form-elements/payment-card-form.ts +331 -0
- package/src/components/index.ts +1 -0
- package/src/connectivity/connectivity-status.ts +153 -0
- package/src/connectivity/index.ts +1 -0
- package/src/content-drawer/context.ts +13 -0
- package/src/content-drawer/drawer.service.ts +148 -0
- package/src/content-drawer/drawer.ts +183 -0
- package/src/content-drawer/index.ts +5 -0
- package/src/content-drawer/main.ts +83 -0
- package/src/content-drawer/readme.md +709 -0
- package/src/content-drawer/sheet.ts +180 -0
- package/src/date-range/date-range-dialog.ts +230 -0
- package/src/date-range/date-range-helpers.ts +135 -0
- package/src/date-range/date-range-presets.ts +220 -0
- package/src/date-range/date-range.ts +530 -0
- package/src/date-range/date-utils.ts +58 -0
- package/src/date-range/index.ts +2 -0
- package/src/date-range-inline/date-range-inline.ts +522 -0
- package/src/date-range-inline/index.ts +2 -0
- package/src/delay/delay.ts +136 -0
- package/src/delay/index.ts +1 -0
- package/src/details/details.ts +429 -0
- package/src/details/index.ts +1 -0
- package/src/dialog/dialog-base.mixin.ts +565 -0
- package/src/dialog/dialog-events.ts +17 -0
- package/src/dialog/dialog-service.ts +482 -0
- package/src/dialog/dialog.component.ts +394 -0
- package/src/dialog/index.ts +3 -0
- package/src/directives/animate-text.ts +551 -0
- package/src/directives/color.ts +41 -0
- package/src/directives/confirm-click.ts +350 -0
- package/src/directives/cursor-glow.ts +142 -0
- package/src/directives/cycle-text.ts +496 -0
- package/src/directives/depth-of-field.ts +83 -0
- package/src/directives/drag.ts +370 -0
- package/src/directives/gravity.ts +117 -0
- package/src/directives/index.ts +19 -0
- package/src/directives/intersect.ts +204 -0
- package/src/directives/layout.ts +261 -0
- package/src/directives/liquid.ts +150 -0
- package/src/directives/living-border.ts +166 -0
- package/src/directives/long-press.ts +150 -0
- package/src/directives/magnetic.ts +133 -0
- package/src/directives/nebula.ts +773 -0
- package/src/directives/reduced-motion.ts +30 -0
- package/src/directives/reveal.ts +158 -0
- package/src/directives/ripple.ts +102 -0
- package/src/directives/typewriter.ts +349 -0
- package/src/discovery/discovery.service.ts +210 -0
- package/src/discovery/index.ts +1 -0
- package/src/divider/divider.ts +100 -0
- package/src/divider/index.ts +1 -0
- package/src/dropdown/dropdown-component.ts +264 -0
- package/src/dropdown/dropdown-content.ts +108 -0
- package/src/dropdown/index.ts +2 -0
- package/src/expand/expand-root.component.ts +278 -0
- package/src/expand/expand.component.ts +287 -0
- package/src/expand/index.ts +2 -0
- package/src/extra/countries/countries.data.ts +196 -0
- package/src/extra/countries/countries.ts +107 -0
- package/src/extra/countries/index.ts +2 -0
- package/src/extra/index.ts +2 -0
- package/src/extra/timezone/index.ts +2 -0
- package/src/extra/timezone/timezone.ts +116 -0
- package/src/extra/timezone/timezones.data.ts +2546 -0
- package/src/float/float.ts +18 -0
- package/src/float/index.ts +1 -0
- package/src/form/form-v2.ts +268 -0
- package/src/form/form.ts +194 -0
- package/src/form/index.ts +2 -0
- package/src/icons/icon.ts +293 -0
- package/src/icons/index.ts +1 -0
- package/src/icons/readme.md +37 -0
- package/src/iframe/iframe.ts +98 -0
- package/src/iframe/index.ts +1 -0
- package/src/index.ts +69 -0
- package/src/input/index.ts +8 -0
- package/src/input/input.scss +211 -0
- package/src/input/input.ts +951 -0
- package/src/json/index.ts +1 -0
- package/src/json/json.ts +55 -0
- package/src/layout/flex/flex.scss +4 -0
- package/src/layout/flex/flex.ts +74 -0
- package/src/layout/flex/index.ts +1 -0
- package/src/layout/grid/.readme +79 -0
- package/src/layout/grid/grid.scss +5 -0
- package/src/layout/grid/grid.ts +121 -0
- package/src/layout/grid/index.ts +1 -0
- package/src/layout/index.ts +5 -0
- package/src/layout/layout.ts +122 -0
- package/src/layout/scroll/index.ts +1 -0
- package/src/layout/scroll/scroll.ts +351 -0
- package/src/layout/v2/flex.ts +243 -0
- package/src/layout/v2/grid.ts +93 -0
- package/src/layout/v2/index.ts +1 -0
- package/src/lightbox/flip-directive.ts +270 -0
- package/src/lightbox/index.ts +4 -0
- package/src/lightbox/lightbox-service.ts +378 -0
- package/src/lightbox/lightbox.directive.ts +256 -0
- package/src/lightbox/lightbox.ts +417 -0
- package/src/list/context.ts +3 -0
- package/src/list/index.ts +3 -0
- package/src/list/list-item.ts +94 -0
- package/src/list/list.ts +87 -0
- package/src/list/readme.md +62 -0
- package/src/mailbox/README.md +131 -0
- package/src/mailbox/email-editor.ts +1071 -0
- package/src/mailbox/email-layout-selector.ts +58 -0
- package/src/mailbox/email-recipients.ts +594 -0
- package/src/mailbox/email-template-picker.ts +296 -0
- package/src/mailbox/email-viewer.ts +715 -0
- package/src/mailbox/index.ts +31 -0
- package/src/mailbox/mailbox.ts +363 -0
- package/src/mailbox/types.ts +181 -0
- package/src/map/index.ts +1 -0
- package/src/map/map.ts +483 -0
- package/src/menu/index.ts +2 -0
- package/src/menu/menu-item.ts +26 -0
- package/src/menu/menu.ts +83 -0
- package/src/nav-drawer/$navbar.ts +51 -0
- package/src/nav-drawer/appbar.ts +26 -0
- package/src/nav-drawer/content.ts +32 -0
- package/src/nav-drawer/context.ts +6 -0
- package/src/nav-drawer/drawer.ts +128 -0
- package/src/nav-drawer/index.ts +6 -0
- package/src/nav-drawer/navbar.ts +191 -0
- package/src/navigation-bar/index.ts +2 -0
- package/src/navigation-bar/navigation-bar-item.ts +417 -0
- package/src/navigation-bar/navigation-bar.ts +482 -0
- package/src/navigation-rail/index.ts +2 -0
- package/src/navigation-rail/navigation-rail-item.ts +443 -0
- package/src/navigation-rail/navigation-rail.ts +492 -0
- package/src/notification/index.ts +6 -0
- package/src/notification/notification-service.ts +324 -0
- package/src/notification/notification.scss +117 -0
- package/src/notification/notification.ts +263 -0
- package/src/notification/notify.ts +207 -0
- package/src/notification/outlet.ts +16 -0
- package/src/option/index.ts +1 -0
- package/src/option/option.ts +180 -0
- package/src/page/index.ts +1 -0
- package/src/page/page.ts +135 -0
- package/src/progress/index.ts +1 -0
- package/src/progress/progress.ts +143 -0
- package/src/qr-scanner/index.ts +1 -0
- package/src/qr-scanner/qr-scanner.ts +240 -0
- package/src/radio-group/index.ts +2 -0
- package/src/radio-group/radio-button.ts +81 -0
- package/src/radio-group/radio-group.scss +4 -0
- package/src/radio-group/radio-group.ts +110 -0
- package/src/radio-group/readme.md +315 -0
- package/src/range/index.ts +1 -0
- package/src/range/range.ts +102 -0
- package/src/rxjs-utils/index.ts +6 -0
- package/src/rxjs-utils/mutation-observer.ts +22 -0
- package/src/rxjs-utils/waitForElement.ts +33 -0
- package/src/rxjs-utils/waitForElementAll.ts +34 -0
- package/src/rxjs-utils/waitForElements.ts +40 -0
- package/src/rxjs-utils/waitForElementsAll.ts +42 -0
- package/src/rxjs-utils/waitUntil.ts +16 -0
- package/src/select/README.md +405 -0
- package/src/select/index.ts +2 -0
- package/src/select/select.ts +766 -0
- package/src/sheet/hook.ts +40 -0
- package/src/sheet/index.ts +2 -0
- package/src/sheet/sheet.service.ts +235 -0
- package/src/sheet/sheet.ts +236 -0
- package/src/slider/index.ts +2 -0
- package/src/slider/slide.ts +107 -0
- package/src/slider/slider.ts +164 -0
- package/src/steps/index.ts +3 -0
- package/src/steps/schmancy-step.ts +213 -0
- package/src/steps/schmancy-steps-container.ts +109 -0
- package/src/steps/steps.context.ts +23 -0
- package/src/store/context-array.ts +358 -0
- package/src/store/context-collection.ts +218 -0
- package/src/store/context-create.ts +284 -0
- package/src/store/context-object.ts +298 -0
- package/src/store/filter-directive.ts +614 -0
- package/src/store/immer-integration.ts +99 -0
- package/src/store/index.ts +10 -0
- package/src/store/selector-hook.ts +259 -0
- package/src/store/selectors.ts +289 -0
- package/src/store/storage-manager.ts +269 -0
- package/src/store/store.class.ts +239 -0
- package/src/store/types.ts +327 -0
- package/src/surface/context.ts +3 -0
- package/src/surface/index.ts +1 -0
- package/src/surface/surface.styles.ts +334 -0
- package/src/surface/surface.ts +59 -0
- package/src/table/index.ts +2 -0
- package/src/table/row.ts +60 -0
- package/src/table/table.ts +266 -0
- package/src/tabs/Readme.md +397 -0
- package/src/tabs/context.ts +5 -0
- package/src/tabs/index.ts +4 -0
- package/src/tabs/tab.ts +39 -0
- package/src/tabs/tabs-compatibility.ts +20 -0
- package/src/tabs/tabs-group.ts +184 -0
- package/src/teleport/.excalidraw +2511 -0
- package/src/teleport/index.ts +2 -0
- package/src/teleport/readme.md +91 -0
- package/src/teleport/teleport.component.ts +132 -0
- package/src/teleport/teleport.service.ts +139 -0
- package/src/teleport/watcher.ts +20 -0
- package/src/textarea/index.ts +1 -0
- package/src/textarea/textarea.scss +54 -0
- package/src/textarea/textarea.ts +432 -0
- package/src/theme/context.ts +28 -0
- package/src/theme/index.ts +17 -0
- package/src/theme/theme-audio-player.ts +470 -0
- package/src/theme/theme-controller-boat.ts +49 -0
- package/src/theme/theme-controller-example.md +152 -0
- package/src/theme/theme-controller.ts +205 -0
- package/src/theme/theme.component.ts +305 -0
- package/src/theme/theme.events.ts +59 -0
- package/src/theme/theme.format.ts +417 -0
- package/src/theme/theme.interface.ts +399 -0
- package/src/theme/theme.service.ts +520 -0
- package/src/theme/theme.style.css +619 -0
- package/src/theme-button/index.ts +1 -0
- package/src/theme-button/theme-button.ts +35 -0
- package/src/tooltip/index.ts +2 -0
- package/src/tooltip/tooltip.directive.ts +277 -0
- package/src/tooltip/tooltip.ts +216 -0
- package/src/tree/README.md +59 -0
- package/src/tree/index.ts +1 -0
- package/src/tree/tree.ts +132 -0
- package/src/types/events.ts +5 -0
- package/src/types/index.ts +3 -0
- package/src/types/mood-audio.types.ts +220 -0
- package/src/types/surface.ts +52 -0
- package/src/typewriter/IMPROVEMENTS.md +174 -0
- package/src/typewriter/QUICK_REFERENCE.md +166 -0
- package/src/typewriter/index.ts +1 -0
- package/src/typewriter/test-typewriter.html +97 -0
- package/src/typewriter/typewriter.ts +376 -0
- package/src/typography/index.ts +1 -0
- package/src/typography/typography.ts +448 -0
- package/src/utils/animation.ts +418 -0
- package/src/utils/hashContent.ts +12 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/intersection.ts +22 -0
- package/src/utils/number.ts +529 -0
- package/src/utils/overlay-stack.ts +101 -0
- package/src/utils/search.ts +322 -0
- package/src/vite-env.d.ts +2 -0
- package/src/window/index.ts +10 -0
- package/src/window/window-manager.ts +204 -0
- package/src/window/window-position.ts +136 -0
- package/src/window/window-registry.ts +34 -0
- package/src/window/window.ts +724 -0
- package/types/mixins/baseElement.d.ts +12 -0
- package/types/mixins/discovery.service.d.ts +72 -0
- package/types/mixins/index.d.ts +2 -0
- package/types/mixins/surface.mixin.d.ts +39 -0
- package/types/src/area/area.service.d.ts +2 -0
- package/types/src/badge/badge.d.ts +1 -1
- package/types/src/boat/boat.d.ts +40 -33
- package/types/src/button/icon-button.d.ts +10 -0
- package/types/src/chips/filter-chip.d.ts +0 -12
- package/types/src/connectivity/connectivity-status.d.ts +25 -0
- package/types/src/connectivity/index.d.ts +1 -0
- package/types/src/content-drawer/drawer.service.d.ts +3 -0
- package/types/src/date-range/date-range.d.ts +2 -0
- package/types/src/details/details.d.ts +26 -2
- package/types/src/dialog/dialog-base.mixin.d.ts +7 -3
- package/types/src/dialog/dialog-service.d.ts +27 -1
- package/types/src/dialog/dialog.component.d.ts +35 -1
- package/types/src/directives/animate-text.d.ts +67 -0
- package/types/src/directives/color.d.ts +2 -3
- package/types/src/directives/confirm-click.d.ts +38 -0
- package/types/src/directives/cursor-glow.d.ts +38 -0
- package/types/src/directives/cycle-text.d.ts +44 -0
- package/types/src/directives/depth-of-field.d.ts +38 -0
- package/types/src/directives/drag.d.ts +8 -8
- package/types/src/directives/gravity.d.ts +40 -0
- package/types/src/directives/index.d.ts +16 -2
- package/types/src/directives/intersect.d.ts +60 -0
- package/types/src/directives/layout.d.ts +62 -0
- package/types/src/directives/liquid.d.ts +38 -0
- package/types/src/directives/living-border.d.ts +39 -0
- package/types/src/directives/long-press.d.ts +38 -0
- package/types/src/directives/magnetic.d.ts +35 -0
- package/types/src/directives/nebula.d.ts +80 -0
- package/types/src/directives/reduced-motion.d.ts +2 -0
- package/types/src/directives/reveal.d.ts +54 -0
- package/types/src/directives/ripple.d.ts +15 -5
- package/types/src/directives/typewriter.d.ts +50 -0
- package/types/src/discovery/discovery.service.d.ts +72 -0
- package/types/src/expand/expand-root.component.d.ts +30 -0
- package/types/src/expand/expand.component.d.ts +38 -0
- package/types/src/expand/index.d.ts +2 -0
- package/types/src/float/float.d.ts +14 -0
- package/types/src/float/index.d.ts +1 -0
- package/types/src/icons/icon.d.ts +14 -0
- package/types/src/iframe/iframe.d.ts +37 -0
- package/types/src/iframe/index.d.ts +1 -0
- package/types/src/index.d.ts +6 -1
- package/types/src/input/index.d.ts +1 -1
- package/types/src/layout/scroll/scroll.d.ts +11 -0
- package/types/src/lightbox/lightbox.d.ts +1 -0
- package/types/src/mailbox/email-recipients.d.ts +2 -2
- package/types/src/mailbox/types.d.ts +1 -1
- package/types/src/navigation-bar/navigation-bar.d.ts +17 -0
- package/types/src/notification/notification.d.ts +1 -0
- package/types/src/page/page.d.ts +6 -0
- package/types/src/range/index.d.ts +1 -0
- package/types/src/range/range.d.ts +25 -0
- package/types/src/sheet/sheet.d.ts +0 -1
- package/types/src/steps/schmancy-steps-container.d.ts +8 -6
- package/types/src/surface/surface.d.ts +4 -27
- package/types/src/surface/surface.styles.d.ts +31 -0
- package/types/src/tabs/tab.d.ts +1 -0
- package/types/src/textarea/textarea.d.ts +3 -2
- package/types/src/theme/context.d.ts +2 -282
- package/types/src/theme/theme.component.d.ts +9 -1
- package/types/src/theme/theme.format.d.ts +1 -1
- package/types/src/theme/theme.interface.d.ts +8 -1
- package/types/src/theme/theme.service.d.ts +20 -282
- package/types/src/types/surface.d.ts +27 -1
- package/types/src/typography/typography.d.ts +17 -3
- package/types/src/utils/animation.d.ts +254 -0
- package/types/src/utils/index.d.ts +2 -0
- package/types/src/utils/number.d.ts +18 -2
- package/types/src/utils/overlay-stack.d.ts +54 -0
- package/types/src/window/index.d.ts +3 -0
- package/types/src/window/window-manager.d.ts +49 -0
- package/types/src/window/window-position.d.ts +64 -0
- package/types/src/window/window-registry.d.ts +28 -0
- package/types/src/window/window.d.ts +67 -0
- package/ai/animated-text.md +0 -116
- package/ai/component-relationships.md +0 -93
- package/ai/context.md +0 -572
- package/ai/countries.md +0 -271
- package/ai/index.md +0 -112
- package/ai/navigation-bar-item.md +0 -259
- package/ai/payment-card-form.md +0 -242
- package/ai/spinner.md +0 -165
- package/ai/template.md +0 -144
- package/ai/timezone.md +0 -276
- package/dist/_commonjsHelpers-Dw9sPFZy.js +0 -7
- package/dist/_commonjsHelpers-Dw9sPFZy.js.map +0 -1
- package/dist/_commonjsHelpers-k2hpEU-q.cjs +0 -2
- package/dist/_commonjsHelpers-k2hpEU-q.cjs.map +0 -1
- package/dist/ai/animated-text.md +0 -116
- package/dist/ai/component-relationships.md +0 -93
- package/dist/ai/context.md +0 -572
- package/dist/ai/countries.md +0 -271
- package/dist/ai/index.md +0 -112
- package/dist/ai/navigation-bar-item.md +0 -259
- package/dist/ai/payment-card-form.md +0 -242
- package/dist/ai/spinner.md +0 -165
- package/dist/ai/template.md +0 -144
- package/dist/ai/timezone.md +0 -276
- package/dist/animated-text-B3DQRJBy.cjs +0 -37
- package/dist/animated-text-B3DQRJBy.cjs.map +0 -1
- package/dist/animated-text-BAj4-6hE.js +0 -76
- package/dist/animated-text-BAj4-6hE.js.map +0 -1
- package/dist/animated-text.cjs +0 -2
- package/dist/animated-text.cjs.map +0 -1
- package/dist/animated-text.js +0 -2
- package/dist/animated-text.js.map +0 -1
- package/dist/area.cjs.map +0 -1
- package/dist/area.component-CP4DZ0d8.js +0 -330
- package/dist/area.component-CP4DZ0d8.js.map +0 -1
- package/dist/area.component-ChxSLt16.cjs +0 -12
- package/dist/area.component-ChxSLt16.cjs.map +0 -1
- package/dist/area.js.map +0 -1
- package/dist/audio.cjs.map +0 -1
- package/dist/audio.js.map +0 -1
- package/dist/autocomplete-CAaVSg4g.cjs +0 -112
- package/dist/autocomplete-CAaVSg4g.cjs.map +0 -1
- package/dist/autocomplete-CGbACUYd.js +0 -333
- package/dist/autocomplete-CGbACUYd.js.map +0 -1
- package/dist/autocomplete.cjs.map +0 -1
- package/dist/autocomplete.js.map +0 -1
- package/dist/avatar-nWOZXEsW.cjs +0 -273
- package/dist/avatar-nWOZXEsW.cjs.map +0 -1
- package/dist/avatar-rLCF6MSI.js +0 -895
- package/dist/avatar-rLCF6MSI.js.map +0 -1
- package/dist/badge.cjs.map +0 -1
- package/dist/badge.js.map +0 -1
- package/dist/boat-Ckt9v__d.js +0 -301
- package/dist/boat-Ckt9v__d.js.map +0 -1
- package/dist/boat-yNAZ2LLB.cjs +0 -97
- package/dist/boat-yNAZ2LLB.cjs.map +0 -1
- package/dist/boat.cjs.map +0 -1
- package/dist/boat.js.map +0 -1
- package/dist/busy.cjs.map +0 -1
- package/dist/busy.js.map +0 -1
- package/dist/card.cjs.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/checkbox-BnAlpsJN.cjs +0 -40
- package/dist/checkbox-BnAlpsJN.cjs.map +0 -1
- package/dist/checkbox-D22yfGe3.js +0 -526
- package/dist/checkbox-D22yfGe3.js.map +0 -1
- package/dist/checkbox.cjs.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/chips.cjs.map +0 -1
- package/dist/chips.js.map +0 -1
- package/dist/code-highlight.cjs.map +0 -1
- package/dist/code-highlight.js.map +0 -1
- package/dist/code-preview-DPlQayFd.js +0 -967
- package/dist/code-preview-DPlQayFd.js.map +0 -1
- package/dist/code-preview-jPnX60FF.cjs +0 -193
- package/dist/code-preview-jPnX60FF.cjs.map +0 -1
- package/dist/components.cjs.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/consume-5D1qfVWM.js +0 -38
- package/dist/consume-5D1qfVWM.js.map +0 -1
- package/dist/consume-edta5ng5.cjs +0 -2
- package/dist/consume-edta5ng5.cjs.map +0 -1
- package/dist/content-drawer.cjs.map +0 -1
- package/dist/content-drawer.js.map +0 -1
- package/dist/context-create-B_S-sD5B.js +0 -1107
- package/dist/context-create-B_S-sD5B.js.map +0 -1
- package/dist/context-create-DTybDbZp.cjs +0 -2
- package/dist/context-create-DTybDbZp.cjs.map +0 -1
- package/dist/date-range-GFm5NG33.js +0 -639
- package/dist/date-range-GFm5NG33.js.map +0 -1
- package/dist/date-range-inline-CgX2o0FP.cjs +0 -44
- package/dist/date-range-inline-CgX2o0FP.cjs.map +0 -1
- package/dist/date-range-inline-DTQLESAZ.js +0 -197
- package/dist/date-range-inline-DTQLESAZ.js.map +0 -1
- package/dist/date-range-inline.cjs.map +0 -1
- package/dist/date-range-inline.js.map +0 -1
- package/dist/date-range-ug3B9CFT.cjs +0 -119
- package/dist/date-range-ug3B9CFT.cjs.map +0 -1
- package/dist/date-range.cjs.map +0 -1
- package/dist/date-range.js.map +0 -1
- package/dist/delay-CWtBL0VD.cjs +0 -10
- package/dist/delay-CWtBL0VD.cjs.map +0 -1
- package/dist/delay-DEe1CmHc.js +0 -288
- package/dist/delay-DEe1CmHc.js.map +0 -1
- package/dist/delay.cjs.map +0 -1
- package/dist/delay.js.map +0 -1
- package/dist/details-D-LXW23W.js +0 -100
- package/dist/details-D-LXW23W.js.map +0 -1
- package/dist/details-DVke77dU.cjs +0 -55
- package/dist/details-DVke77dU.cjs.map +0 -1
- package/dist/details.cjs.map +0 -1
- package/dist/details.js.map +0 -1
- package/dist/dialog-service-C86xTS8q.cjs +0 -2
- package/dist/dialog-service-C86xTS8q.cjs.map +0 -1
- package/dist/dialog-service-D9E3jLAR.js +0 -118
- package/dist/dialog-service-D9E3jLAR.js.map +0 -1
- package/dist/dialog.component-BM0D-hK9.cjs +0 -48
- package/dist/dialog.component-BM0D-hK9.cjs.map +0 -1
- package/dist/dialog.component-a7FlKhGD.js +0 -145
- package/dist/dialog.component-a7FlKhGD.js.map +0 -1
- package/dist/discovery.service-BbYjU5x8.js +0 -21
- package/dist/discovery.service-BbYjU5x8.js.map +0 -1
- package/dist/discovery.service-BpGCuXPd.cjs +0 -2
- package/dist/discovery.service-BpGCuXPd.cjs.map +0 -1
- package/dist/divider-CzTpxOqt.js +0 -84
- package/dist/divider-CzTpxOqt.js.map +0 -1
- package/dist/divider-D8KStUhN.cjs +0 -58
- package/dist/divider-D8KStUhN.cjs.map +0 -1
- package/dist/divider.cjs.map +0 -1
- package/dist/divider.js.map +0 -1
- package/dist/dropdown-content-CngZN3vv.cjs +0 -58
- package/dist/dropdown-content-CngZN3vv.cjs.map +0 -1
- package/dist/dropdown-content-DCn-g0-f.js +0 -147
- package/dist/dropdown-content-DCn-g0-f.js.map +0 -1
- package/dist/email-recipients-BhntMZMf.cjs +0 -1173
- package/dist/email-recipients-BhntMZMf.cjs.map +0 -1
- package/dist/email-recipients-BzjAKNJ0.js +0 -1733
- package/dist/email-recipients-BzjAKNJ0.js.map +0 -1
- package/dist/emotional-sounds-BRnFhww6.js +0 -234
- package/dist/emotional-sounds-BRnFhww6.js.map +0 -1
- package/dist/emotional-sounds-DVGhmoZf.cjs +0 -2
- package/dist/emotional-sounds-DVGhmoZf.cjs.map +0 -1
- package/dist/extra.cjs.map +0 -1
- package/dist/extra.js.map +0 -1
- package/dist/flex-5dR48zie.js +0 -183
- package/dist/flex-5dR48zie.js.map +0 -1
- package/dist/flex-oHl2EfYB.cjs +0 -18
- package/dist/flex-oHl2EfYB.cjs.map +0 -1
- package/dist/flow-D0e7hGXO.cjs +0 -2
- package/dist/flow-D0e7hGXO.cjs.map +0 -1
- package/dist/flow-DXYqC9OA.js +0 -340
- package/dist/flow-DXYqC9OA.js.map +0 -1
- package/dist/form-BlPiAPt7.cjs +0 -2
- package/dist/form-BlPiAPt7.cjs.map +0 -1
- package/dist/form-BxVM6JTn.js +0 -141
- package/dist/form-BxVM6JTn.js.map +0 -1
- package/dist/form.cjs.map +0 -1
- package/dist/form.js.map +0 -1
- package/dist/formField.mixin-BCGA7Ea3.js +0 -48
- package/dist/formField.mixin-BCGA7Ea3.js.map +0 -1
- package/dist/formField.mixin-BfJMifU9.cjs +0 -2
- package/dist/formField.mixin-BfJMifU9.cjs.map +0 -1
- package/dist/height-CfECBO2j.js +0 -44
- package/dist/height-CfECBO2j.js.map +0 -1
- package/dist/height-Z70qJYJK.cjs +0 -2
- package/dist/height-Z70qJYJK.cjs.map +0 -1
- package/dist/icon-DHEXr3c-.cjs +0 -49
- package/dist/icon-DHEXr3c-.cjs.map +0 -1
- package/dist/icon-DYpLoegR.js +0 -84
- package/dist/icon-DYpLoegR.js.map +0 -1
- package/dist/icon-button-CmZBLHWC.js +0 -164
- package/dist/icon-button-CmZBLHWC.js.map +0 -1
- package/dist/icon-button-IbSX8C98.cjs +0 -70
- package/dist/icon-button-IbSX8C98.cjs.map +0 -1
- package/dist/icons.cjs.map +0 -1
- package/dist/icons.js.map +0 -1
- package/dist/index-CCi1otmh.cjs +0 -2
- package/dist/index-CCi1otmh.cjs.map +0 -1
- package/dist/index-CW6PhEkx.js +0 -17
- package/dist/index-CW6PhEkx.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/input-BByjYlgl.cjs +0 -51
- package/dist/input-BByjYlgl.cjs.map +0 -1
- package/dist/input-D0cQ9DOY.js +0 -237
- package/dist/input-D0cQ9DOY.js.map +0 -1
- package/dist/input-chip-B5ErXgCB.js +0 -206
- package/dist/input-chip-B5ErXgCB.js.map +0 -1
- package/dist/input-chip-DkWaTciP.cjs +0 -147
- package/dist/input-chip-DkWaTciP.cjs.map +0 -1
- package/dist/input.cjs.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/intersection-CJxzz8c-.js +0 -15
- package/dist/intersection-CJxzz8c-.js.map +0 -1
- package/dist/intersection-CVvaDv96.cjs +0 -2
- package/dist/intersection-CVvaDv96.cjs.map +0 -1
- package/dist/json-BZVe74np.cjs +0 -12
- package/dist/json-BZVe74np.cjs.map +0 -1
- package/dist/json-PKewOWuJ.js +0 -51
- package/dist/json-PKewOWuJ.js.map +0 -1
- package/dist/layout.cjs.map +0 -1
- package/dist/layout.js.map +0 -1
- package/dist/lightbox-service-D-0JtxB1.cjs +0 -202
- package/dist/lightbox-service-D-0JtxB1.cjs.map +0 -1
- package/dist/lightbox-service-DZMnb1eU.js +0 -458
- package/dist/lightbox-service-DZMnb1eU.js.map +0 -1
- package/dist/lightbox.cjs.map +0 -1
- package/dist/lightbox.js.map +0 -1
- package/dist/list-B_2m7l3g.cjs +0 -17
- package/dist/list-B_2m7l3g.cjs.map +0 -1
- package/dist/list-CW56LV-v.js +0 -69
- package/dist/list-CW56LV-v.js.map +0 -1
- package/dist/list.cjs.map +0 -1
- package/dist/list.js.map +0 -1
- package/dist/litElement.mixin-CrpeGpZ7.cjs +0 -2
- package/dist/litElement.mixin-CrpeGpZ7.cjs.map +0 -1
- package/dist/litElement.mixin-DHZXtvYq.js +0 -15
- package/dist/litElement.mixin-DHZXtvYq.js.map +0 -1
- package/dist/mailbox.cjs.map +0 -1
- package/dist/mailbox.js.map +0 -1
- package/dist/map-2Hl60a0A.js +0 -175
- package/dist/map-2Hl60a0A.js.map +0 -1
- package/dist/map-DyPS9G7M.cjs +0 -81
- package/dist/map-DyPS9G7M.cjs.map +0 -1
- package/dist/map.cjs.map +0 -1
- package/dist/map.js.map +0 -1
- package/dist/media-CS8HpKnK.cjs +0 -152
- package/dist/media-CS8HpKnK.cjs.map +0 -1
- package/dist/media-DtWbcRxL.js +0 -244
- package/dist/media-DtWbcRxL.js.map +0 -1
- package/dist/menu-Caju5-zd.js +0 -60
- package/dist/menu-Caju5-zd.js.map +0 -1
- package/dist/menu-rX5RPAI2.cjs +0 -24
- package/dist/menu-rX5RPAI2.cjs.map +0 -1
- package/dist/menu.cjs.map +0 -1
- package/dist/menu.js.map +0 -1
- package/dist/nav-drawer.cjs.map +0 -1
- package/dist/nav-drawer.js.map +0 -1
- package/dist/navigation-bar.cjs.map +0 -1
- package/dist/navigation-bar.js.map +0 -1
- package/dist/navigation-rail-Ctketq5a.js +0 -256
- package/dist/navigation-rail-Ctketq5a.js.map +0 -1
- package/dist/navigation-rail-DC9_oSIM.cjs +0 -79
- package/dist/navigation-rail-DC9_oSIM.cjs.map +0 -1
- package/dist/notification-service-CUlfXqmj.js +0 -155
- package/dist/notification-service-CUlfXqmj.js.map +0 -1
- package/dist/notification-service-DknbpqTt.cjs +0 -19
- package/dist/notification-service-DknbpqTt.cjs.map +0 -1
- package/dist/notification.cjs.map +0 -1
- package/dist/notification.js.map +0 -1
- package/dist/notify-DJSOWTxv.js +0 -35
- package/dist/notify-DJSOWTxv.js.map +0 -1
- package/dist/notify-DickIEHW.cjs +0 -2
- package/dist/notify-DickIEHW.cjs.map +0 -1
- package/dist/number-B7aCRYnH.cjs +0 -2
- package/dist/number-B7aCRYnH.cjs.map +0 -1
- package/dist/number-BhTiptLA.js +0 -99
- package/dist/number-BhTiptLA.js.map +0 -1
- package/dist/option-Bng41-rY.js +0 -77
- package/dist/option-Bng41-rY.js.map +0 -1
- package/dist/option-DYT5Rkgy.cjs +0 -44
- package/dist/option-DYT5Rkgy.cjs.map +0 -1
- package/dist/option.cjs.map +0 -1
- package/dist/option.js.map +0 -1
- package/dist/page-BLn9gtSd.cjs +0 -20
- package/dist/page-BLn9gtSd.cjs.map +0 -1
- package/dist/page-D-ROcQDd.js +0 -48
- package/dist/page-D-ROcQDd.js.map +0 -1
- package/dist/payment-card-form-5UtfWzoW.cjs +0 -74
- package/dist/payment-card-form-5UtfWzoW.cjs.map +0 -1
- package/dist/payment-card-form-BJa4RgF2.js +0 -515
- package/dist/payment-card-form-BJa4RgF2.js.map +0 -1
- package/dist/pills-BS5rZ6C3.js +0 -346
- package/dist/pills-BS5rZ6C3.js.map +0 -1
- package/dist/pills-Blf7IAeq.cjs +0 -113
- package/dist/pills-Blf7IAeq.cjs.map +0 -1
- package/dist/progress-DlhYniW_.cjs +0 -35
- package/dist/progress-DlhYniW_.cjs.map +0 -1
- package/dist/progress-yTIX6EqC.js +0 -56
- package/dist/progress-yTIX6EqC.js.map +0 -1
- package/dist/progress.cjs.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/provide-BxZ2kn_p.cjs +0 -2
- package/dist/provide-BxZ2kn_p.cjs.map +0 -1
- package/dist/provide-tcktw8xB.js +0 -100
- package/dist/provide-tcktw8xB.js.map +0 -1
- package/dist/qr-scanner-DOs7uNS_.cjs +0 -29
- package/dist/qr-scanner-DOs7uNS_.cjs.map +0 -1
- package/dist/qr-scanner-DjZ8mgHV.js +0 -743
- package/dist/qr-scanner-DjZ8mgHV.js.map +0 -1
- package/dist/radio-button-N_PrrxKB.cjs +0 -41
- package/dist/radio-button-N_PrrxKB.cjs.map +0 -1
- package/dist/radio-button-me3SRHGu.js +0 -115
- package/dist/radio-button-me3SRHGu.js.map +0 -1
- package/dist/radio-group.cjs.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/ripple-BgJXbNSP.js +0 -124
- package/dist/ripple-BgJXbNSP.js.map +0 -1
- package/dist/ripple-x6sTX02K.cjs +0 -16
- package/dist/ripple-x6sTX02K.cjs.map +0 -1
- package/dist/rxjs-utils.cjs.map +0 -1
- package/dist/rxjs-utils.js.map +0 -1
- package/dist/schmancy-steps-container-J6P-NNNj.js +0 -156
- package/dist/schmancy-steps-container-J6P-NNNj.js.map +0 -1
- package/dist/schmancy-steps-container-T57BKMzi.cjs +0 -70
- package/dist/schmancy-steps-container-T57BKMzi.cjs.map +0 -1
- package/dist/scroll-C_gfUgjn.js +0 -87
- package/dist/scroll-C_gfUgjn.js.map +0 -1
- package/dist/scroll-CecsowP7.cjs +0 -27
- package/dist/scroll-CecsowP7.cjs.map +0 -1
- package/dist/search-B1s7thB0.cjs +0 -2
- package/dist/search-B1s7thB0.cjs.map +0 -1
- package/dist/search-DxxnLa5u.js +0 -95
- package/dist/search-DxxnLa5u.js.map +0 -1
- package/dist/select-BBA0gBHf.js +0 -280
- package/dist/select-BBA0gBHf.js.map +0 -1
- package/dist/select-D9oCjv7N.cjs +0 -57
- package/dist/select-D9oCjv7N.cjs.map +0 -1
- package/dist/select.cjs.map +0 -1
- package/dist/select.js.map +0 -1
- package/dist/selector-hook-9w2auh2O.cjs +0 -2
- package/dist/selector-hook-9w2auh2O.cjs.map +0 -1
- package/dist/selector-hook-CHV4kDMd.js +0 -319
- package/dist/selector-hook-CHV4kDMd.js.map +0 -1
- package/dist/sheet-0oUfBmXX.cjs +0 -15
- package/dist/sheet-0oUfBmXX.cjs.map +0 -1
- package/dist/sheet-CNcDT3VP.js +0 -97
- package/dist/sheet-CNcDT3VP.js.map +0 -1
- package/dist/sheet.cjs.map +0 -1
- package/dist/sheet.js.map +0 -1
- package/dist/sheet.service-2MobB-9z.js +0 -68
- package/dist/sheet.service-2MobB-9z.js.map +0 -1
- package/dist/sheet.service-su_7yDQ-.cjs +0 -2
- package/dist/sheet.service-su_7yDQ-.cjs.map +0 -1
- package/dist/slider-CV-Ehp_5.cjs +0 -83
- package/dist/slider-CV-Ehp_5.cjs.map +0 -1
- package/dist/slider-CkE-iFUy.js +0 -161
- package/dist/slider-CkE-iFUy.js.map +0 -1
- package/dist/sound.service-Nza4c6wv.js +0 -102
- package/dist/sound.service-Nza4c6wv.js.map +0 -1
- package/dist/sound.service-eRirZw59.cjs +0 -2
- package/dist/sound.service-eRirZw59.cjs.map +0 -1
- package/dist/spinner-Bfn8KC-9.cjs +0 -135
- package/dist/spinner-Bfn8KC-9.cjs.map +0 -1
- package/dist/spinner-DiMbWXp9.js +0 -168
- package/dist/spinner-DiMbWXp9.js.map +0 -1
- package/dist/store.cjs.map +0 -1
- package/dist/store.js.map +0 -1
- package/dist/suggestion-chip-CEDqUNoS.js +0 -481
- package/dist/suggestion-chip-CEDqUNoS.js.map +0 -1
- package/dist/suggestion-chip-HhsLtZXR.cjs +0 -271
- package/dist/suggestion-chip-HhsLtZXR.cjs.map +0 -1
- package/dist/surface-CW3H23Va.cjs +0 -199
- package/dist/surface-CW3H23Va.cjs.map +0 -1
- package/dist/surface-eBfnSwQS.js +0 -220
- package/dist/surface-eBfnSwQS.js.map +0 -1
- package/dist/surface.cjs.map +0 -1
- package/dist/surface.js.map +0 -1
- package/dist/table-D0tiSL_u.cjs +0 -64
- package/dist/table-D0tiSL_u.cjs.map +0 -1
- package/dist/table-Dmo4TvTx.js +0 -561
- package/dist/table-Dmo4TvTx.js.map +0 -1
- package/dist/table.cjs.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs-compatibility-Bit6y6en.js +0 -104
- package/dist/tabs-compatibility-Bit6y6en.js.map +0 -1
- package/dist/tabs-compatibility-Vq_2-ekz.cjs +0 -35
- package/dist/tabs-compatibility-Vq_2-ekz.cjs.map +0 -1
- package/dist/tabs.cjs.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tailwind.mixin-Bp_PR6yc.js +0 -67
- package/dist/tailwind.mixin-Bp_PR6yc.js.map +0 -1
- package/dist/tailwind.mixin-Cp4PyXok.cjs +0 -2
- package/dist/tailwind.mixin-Cp4PyXok.cjs.map +0 -1
- package/dist/teleport.cjs.map +0 -1
- package/dist/teleport.js.map +0 -1
- package/dist/textarea-B1d1QCqT.js +0 -134
- package/dist/textarea-B1d1QCqT.js.map +0 -1
- package/dist/textarea-DG8CHhZA.cjs +0 -44
- package/dist/textarea-DG8CHhZA.cjs.map +0 -1
- package/dist/textarea.cjs.map +0 -1
- package/dist/textarea.js.map +0 -1
- package/dist/theme-button-CPL6Eaqd.cjs +0 -9
- package/dist/theme-button-CPL6Eaqd.cjs.map +0 -1
- package/dist/theme-button-CrLuMQNe.js +0 -27
- package/dist/theme-button-CrLuMQNe.js.map +0 -1
- package/dist/theme-button.cjs.map +0 -1
- package/dist/theme-button.js.map +0 -1
- package/dist/theme-controller-boat-CXbNJSI3.cjs +0 -178
- package/dist/theme-controller-boat-CXbNJSI3.cjs.map +0 -1
- package/dist/theme-controller-boat-CzSmjyKq.js +0 -1159
- package/dist/theme-controller-boat-CzSmjyKq.js.map +0 -1
- package/dist/theme.cjs.map +0 -1
- package/dist/theme.events-CPSLaOlR.js +0 -6
- package/dist/theme.events-CPSLaOlR.js.map +0 -1
- package/dist/theme.events-Car6U_SQ.cjs +0 -2
- package/dist/theme.events-Car6U_SQ.cjs.map +0 -1
- package/dist/theme.interface-BLfE5J_1.js +0 -5
- package/dist/theme.interface-BLfE5J_1.js.map +0 -1
- package/dist/theme.interface-BMeNadVb.cjs +0 -2
- package/dist/theme.interface-BMeNadVb.cjs.map +0 -1
- package/dist/theme.js.map +0 -1
- package/dist/timezone-4vwX0BgA.js +0 -112
- package/dist/timezone-4vwX0BgA.js.map +0 -1
- package/dist/timezone-BxvQcqe1.cjs +0 -32
- package/dist/timezone-BxvQcqe1.cjs.map +0 -1
- package/dist/tooltip-CjdvBf4X.js +0 -119
- package/dist/tooltip-CjdvBf4X.js.map +0 -1
- package/dist/tooltip-ZtnGjoJd.cjs +0 -7
- package/dist/tooltip-ZtnGjoJd.cjs.map +0 -1
- package/dist/tree-CBEjV7jP.js +0 -65
- package/dist/tree-CBEjV7jP.js.map +0 -1
- package/dist/tree-DP5U00NA.cjs +0 -27
- package/dist/tree-DP5U00NA.cjs.map +0 -1
- package/dist/tslib.es6-DgOcxv4s.cjs +0 -2
- package/dist/tslib.es6-DgOcxv4s.cjs.map +0 -1
- package/dist/tslib.es6-ujVQHAQ4.js +0 -10
- package/dist/tslib.es6-ujVQHAQ4.js.map +0 -1
- package/dist/typewriter-C6kFjLcX.cjs +0 -124
- package/dist/typewriter-C6kFjLcX.cjs.map +0 -1
- package/dist/typewriter-Eo5qXoGC.js +0 -555
- package/dist/typewriter-Eo5qXoGC.js.map +0 -1
- package/dist/typewriter.cjs.map +0 -1
- package/dist/typewriter.js.map +0 -1
- package/dist/typography-C_1gdM2I.js +0 -264
- package/dist/typography-C_1gdM2I.js.map +0 -1
- package/dist/typography-DGyjlLCE.cjs +0 -243
- package/dist/typography-DGyjlLCE.cjs.map +0 -1
- package/dist/utils-C38P63L6.cjs +0 -2
- package/dist/utils-C38P63L6.cjs.map +0 -1
- package/dist/utils-CYOVFxSx.js +0 -150
- package/dist/utils-CYOVFxSx.js.map +0 -1
- package/dist/utils.cjs.map +0 -1
- package/dist/utils.js.map +0 -1
- package/types/src/animated-text/animated-text.d.ts +0 -30
- package/types/src/animated-text/index.d.ts +0 -1
- package/types/src/directives/height.d.ts +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-D9sgBRjU.js","names":[],"sources":["../src/select/select.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { css, html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { BehaviorSubject, combineLatest, fromEvent, Subject, takeUntil } from 'rxjs'\nimport { tap, withLatestFrom } from 'rxjs/operators'\n\nexport type SchmancySelectChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n/**\n * Select dropdown component with single and multi-select support.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} label - Label text displayed above the select\n * @prop {string} placeholder - Placeholder text when no value is selected\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} multi - Enable multi-select mode\n * @prop {string} value - Selected value (single select mode)\n * @prop {string[]} values - Selected values (multi-select mode)\n */\n@customElement('schmancy-select')\nexport class SchmancySelect extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t[role='listbox'] {\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t}\n`) {\n\t// Form association setup\n\tstatic formAssociated = true\n\tprivate internals?: ElementInternals\n\n\t// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean, reflect: true }) required = false\n\t@property({ type: Boolean, reflect: true }) disabled = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true })\n\tget value() {\n\t\treturn this.multi\n\t\t\t? this._selectedValues$.value // Return array for multi-select\n\t\t\t: this._selectedValue$.value // Return string for single-select\n\t}\n\tset value(val: string | string[]) {\n\t\tif (this.multi) {\n\t\t\tconst values = Array.isArray(val)\n\t\t\t\t? val\n\t\t\t\t: val ? String(val).split(',').map(v => v.trim()).filter(Boolean) : []\n\t\t\tthis._selectedValues$.next(values)\n\t\t} else {\n\t\t\tthis._selectedValue$.next(val == null ? '' : String(val))\n\t\t}\n\t}\n\n\t// Values property for multi-select mode\n\t@property({ type: Array })\n\tget values() {\n\t\treturn [...this._selectedValues$.value]\n\t}\n\tset values(vals: string[]) {\n\t\tthis._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n\t}\n\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\n\t@property({ type: String }) hint = ''\n\t@property({ type: String }) validateOn: 'always' | 'touched' | 'dirty' | 'submitted' = 'touched'\n\t// M3 aligned sizes: 24dp (xxs) → 32dp (xs) → 40dp (sm) → 48dp (md) → 56dp (lg)\n\t@property({ type: String }) size: 'xxs' | 'xs' | 'sm' | 'md' | 'lg' = 'md'\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private valueLabel = ''\n\t@state() private isValid = true\n\t@property({ type: String }) validationMessage = ''\n\n\t// Store the initial/default value for reset behavior\n\t@state() private defaultValue: string | string[] = ''\n\n\t@query('ul') private ul!: HTMLUListElement\n\t@query('sch-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\t// Reactive state management\n\tprivate _options$ = new BehaviorSubject<SchmancyOption[]>([])\n\tprivate _selectedValue$ = new BehaviorSubject<string>('')\n\tprivate _selectedValues$ = new BehaviorSubject<string[]>([])\n\tprivate _optionSelect$ = new Subject<SchmancyOption>()\n\t@state() _userInteracted = false\n\t@state() private _touched = false\n\t@state() private _dirty = false\n\t@state() private _submitted = false\n\n\t// Reference to current focused option (for keyboard navigation)\n\t@state() private _focusedOptionId = ''\n\n\t// Form event handlers\n\tprivate formSubmitHandler = () => {\n\t\tthis._submitted = true\n\t\tthis.checkValidity()\n\t}\n\n\tprivate formResetHandler = () => {\n\t\tthis.reset()\n\t}\n\n\tconstructor() {\n\t\tsuper()\n\t\t// Initialize ElementInternals for form association\n\t\ttry {\n\t\t\tthis.internals = this.attachInternals()\n\t\t} catch (e) {\n\t\t\tconsole.warn('FormAssociated elements not supported in this browser', e)\n\t\t}\n\t}\n\n\tget form() {\n\t\treturn this.internals?.form\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substring(2, 9)}`\n\t\t}\n\n\t\t// Store initial value for reset\n\t\tthis.defaultValue = this.value\n\n\t\t// Add keyboard handling to host element\n\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(takeUntil(this.disconnecting)).subscribe(this.handleKeyDown)\n\n\t\t// Setup reactive pipelines\n\t\tthis._setupReactivePipelines()\n\n\t\t// Listen for form submission events to mark field as submitted\n\t\tif (this.internals?.form) {\n\t\t\tfromEvent(this.internals.form, 'submit')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(this.formSubmitHandler)\n\n\t\t\t// Listen for form reset\n\t\t\tfromEvent(this.internals.form, 'reset')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(this.formResetHandler)\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.cleanupPositioner?.()\n\t\t// Form event listeners are automatically cleaned up via takeUntil(this.disconnecting)\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\n\t\t// Initially hide any validation errors until user interacts\n\t\tif (this.inputRef) {\n\t\t\tthis.inputRef.error = false\n\t\t}\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('value')) {\n\t\t\t// Update form value when component value changes\n\t\t\tconst formValue = this.multi\n\t\t\t\t? this._selectedValues$.value.join(',')\n\t\t\t\t: this._selectedValue$.value\n\t\t\tthis.internals?.setFormValue(formValue)\n\n\t\t\t// Mark as dirty if value changes from initial value\n\t\t\tif (this.hasUpdated) {\n\t\t\t\tthis._dirty = true\n\t\t\t}\n\n\t\t\t// Check validity based on validation strategy\n\t\t\tif (this.hasUpdated) {\n\t\t\t\tthis.checkValidity()\n\t\t\t}\n\t\t}\n\n\t\t// When open state changes, setup or cleanup the dropdown positioner\n\t\tif (changedProps.has('isOpen')) {\n\t\t\tif (this.isOpen) {\n\t\t\t\tthis.positionDropdown()\n\t\t\t} else {\n\t\t\t\tthis.cleanupPositioner?.()\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Determines if validation errors should be shown based on current state\n\t * and validation strategy\n\t */\n\tprivate shouldShowValidation(forceValidation = false): boolean {\n\t\tif (forceValidation) return true\n\n\t\tswitch (this.validateOn) {\n\t\t\tcase 'always':\n\t\t\t\treturn true\n\t\t\tcase 'touched':\n\t\t\t\treturn this._touched\n\t\t\tcase 'dirty':\n\t\t\t\treturn this._dirty\n\t\t\tcase 'submitted':\n\t\t\t\treturn this._submitted\n\t\t\tdefault:\n\t\t\t\treturn this._touched\n\t\t}\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\t// Read directly from the BehaviorSubject to avoid string conversion issues\n\t\t\tconst selectedValues = this._selectedValues$.value\n\t\t\tthis.options?.forEach(o => (o.selected = selectedValues.includes(o.value))) // Update option selected state\n\t\t\tthis.valueLabel =\n\t\t\t\tselectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t?.filter(o => selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label || o.textContent || '')\n\t\t\t\t\t\t\t.join(', ') || this.placeholder\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\t// Single select - read from BehaviorSubject\n\t\t\tconst currentValue = this._selectedValue$.value\n\t\t\tthis.options?.forEach(o => {\n\t\t\t\t// Set selected property on each option based on matching value\n\t\t\t\to.selected = o.value === currentValue\n\t\t\t})\n\t\t\tconst selectedOption = this.options?.find(o => o.value === currentValue)\n\t\t\tthis.valueLabel = selectedOption ? (selectedOption.label || selectedOption.textContent || '') : this.placeholder\n\t\t}\n\t}\n\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options?.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\n\t\t\t// Set tabindex to -1 so they're focusable programmatically but not in the tab order\n\t\t\toption.tabIndex = -1\n\n\t\t\toption.setAttribute(\n\t\t\t\t'aria-selected',\n\t\t\t\tString(this.multi ? this._selectedValues$.value.includes(option.value) : option.value === this._selectedValue$.value),\n\t\t\t)\n\t\t})\n\t}\n\n\tprivate async positionDropdown() {\n\t\tconst reference = this.renderRoot.querySelector('.trigger') as HTMLElement\n\t\tif (!reference || !this.ul) return\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\t// Get viewport dimensions\n\t\t\tconst viewportHeight = window.innerHeight\n\t\t\tconst triggerRect = reference.getBoundingClientRect()\n\n\t\t\t// Calculate available space below and above\n\t\t\tconst spaceBelow = viewportHeight - triggerRect.bottom\n\t\t\tconst spaceAbove = triggerRect.top\n\n\t\t\t// Calculate max height - use 75% of the largest available space, but at least 150px\n\t\t\tconst maxHeight = Math.max(Math.max(spaceBelow, spaceAbove) * 0.75, 150)\n\n\t\t\t// Determine if we should flip\n\t\t\tconst shouldFlip = spaceBelow < 200 && spaceAbove > spaceBelow\n\n\t\t\t// Apply max height\n\t\t\tthis.ul.style.maxHeight = `${maxHeight}px`\n\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: shouldFlip ? 'top-start' : 'bottom-start',\n\t\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t\t})\n\n\t\t\tObject.assign(this.ul.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t\tposition: 'absolute',\n\t\t\t\twidth: `${reference.offsetWidth}px`, // Match the width of the trigger\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Don't handle keyboard events when disabled\n\t\tif (this.disabled) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.isOpen) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.openDropdown(false)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Find current focused option\n\t\tconst options = Array.from(this.options || [])\n\t\tconst current = options.findIndex(o => o.id === this._focusedOptionId) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.min(current + 1, options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.max(current - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Home':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\tbreak\n\t\t\tcase 'End':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, options.length - 1)\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (this._focusedOptionId) {\n\t\t\t\t\tconst focusedOption = options.find(opt => opt.id === this._focusedOptionId)\n\t\t\t\t\tif (focusedOption) {\n\t\t\t\t\t\tthis.handleOptionSelect(focusedOption.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate focusOption(options: SchmancyOption[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tthis._focusedOptionId = option.id\n\n\t\t\t// Update aria-activedescendant on the combobox\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tif (combobox) {\n\t\t\t\tcombobox.setAttribute('aria-activedescendant', option.id)\n\t\t\t}\n\n\t\t\t// Ensure option is visible in the scrollable area\n\t\t\tif (this.ul && option.offsetTop !== undefined) {\n\t\t\t\t// Get position info\n\t\t\t\tconst optionTop = option.offsetTop\n\t\t\t\tconst optionHeight = option.offsetHeight\n\t\t\t\tconst scrollTop = this.ul.scrollTop\n\t\t\t\tconst ulHeight = this.ul.clientHeight\n\n\t\t\t\t// Scroll into view if needed\n\t\t\t\tif (optionTop < scrollTop) {\n\t\t\t\t\tthis.ul.scrollTop = optionTop\n\t\t\t\t} else if (optionTop + optionHeight > scrollTop + ulHeight) {\n\t\t\t\t\tthis.ul.scrollTop = optionTop + optionHeight - ulHeight\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\t// Don't open if disabled\n\t\tif (this.disabled) {\n\t\t\treturn\n\t\t}\n\n\t\t// Don't mark as touched on opening - we'll do that on closing\n\t\t// so errors only show after interaction is complete\n\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\t// Focus first or selected option\n\t\tconst options = Array.from(this.options || [])\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.value === this._selectedValue$.value)\n\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\n\t\t// Don't automatically validate when opening\n\t\t// Only validate if explicitly requested (like from a form submission)\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\t// Only mark as touched if the user actually interacted with the component\n\t\t// and made a selection or explicitly closed it without selecting\n\t\tif (this._userInteracted) {\n\t\t\tthis._touched = true\n\t\t}\n\n\t\tthis.isOpen = false\n\t\tthis._focusedOptionId = ''\n\n\t\t// Update combobox to remove aria-activedescendant\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tif (combobox) {\n\t\t\tcombobox.removeAttribute('aria-activedescendant')\n\t\t\tcombobox?.focus()\n\t\t}\n\n\t\t// Only check validity when closing if the user has actually interacted\n\t\t// with the component and validation should be shown\n\t\tif (this._userInteracted && this.shouldShowValidation()) {\n\t\t\tthis.checkValidity()\n\t\t}\n\t}\n\n\tprivate _setupReactivePipelines() {\n\t\t// Listen for option-select events from child options\n\t\tfromEvent<CustomEvent>(this, 'option-select')\n\t\t\t.pipe(\n\t\t\t\ttap((e) => {\n\t\t\t\t\te.stopPropagation() // Prevent event from bubbling further\n\t\t\t\t\tconst option = this.options.find(o => o.value === e.detail.value)\n\t\t\t\t\tif (option) {\n\t\t\t\t\t\tthis._optionSelect$.next(option)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Handle option selection through reactive pipeline\n\t\tthis._optionSelect$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(this._selectedValue$, this._selectedValues$),\n\t\t\t\ttap(([option, _, currentValues]) => {\n\t\t\t\t\tthis._userInteracted = true\n\t\t\t\t\tthis._touched = true\n\t\t\t\t\tthis._dirty = true\n\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst index = currentValues.indexOf(option.value)\n\t\t\t\t\t\tconst newValues = index > -1\n\t\t\t\t\t\t\t? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n\t\t\t\t\t\t\t: [...currentValues, option.value]\n\t\t\t\t\t\tthis._selectedValues$.next(newValues)\n\n\t\t\t\t\t\t// Update form value\n\t\t\t\t\t\tthis.internals?.setFormValue(newValues.join(','))\n\n\t\t\t\t\t\t// Update display label\n\t\t\t\t\t\tthis.valueLabel = newValues.length > 0\n\t\t\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t\t\t.filter(o => newValues.includes(o.value))\n\t\t\t\t\t\t\t\t\t.map(o => o.label || o.textContent || '')\n\t\t\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t\t\t: this.placeholder\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single select\n\t\t\t\t\t\tthis._selectedValue$.next(option.value)\n\n\t\t\t\t\t\t// Update form value\n\t\t\t\t\t\tthis.internals?.setFormValue(option.value)\n\n\t\t\t\t\t\tthis.valueLabel = option.label || option.textContent || this.placeholder\n\t\t\t\t\t\tthis.closeDropdown()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update the option's accessibility state\n\t\t\t\t\tthis.setupOptionsAccessibility()\n\n\t\t\t\t\t// Dispatch change event\n\t\t\t\t\tthis._fireChangeEvent()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Options management pipeline - bind pointerdown events exactly like autocomplete\n\t\tthis._options$\n\t\t\t.pipe(\n\t\t\t\ttap((options) => {\n\t\t\t\t\toptions.forEach((option, index) => {\n\t\t\t\t\t\toption.setAttribute('role', 'option')\n\t\t\t\t\t\toption.tabIndex = -1\n\t\t\t\t\t\tif (!option.id) {\n\t\t\t\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Use data-event-bound to prevent duplicate bindings\n\t\t\t\t\t\tif (!option.hasAttribute('data-event-bound')) {\n\t\t\t\t\t\t\t// Use click event instead of pointerdown for better mobile UX\n\t\t\t\t\t\t\t// This allows users to scroll through options without immediately selecting\n\t\t\t\t\t\t\tfromEvent(option, 'click').pipe(\n\t\t\t\t\t\t\t\ttap(e => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t\t\t\t\t).subscribe(() => this._optionSelect$.next(option))\n\t\t\t\t\t\t\toption.setAttribute('data-event-bound', 'true')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Selection sync pipeline - sync selected states with value changes\n\t\tcombineLatest([this._selectedValue$, this._selectedValues$, this._options$])\n\t\t\t.pipe(\n\t\t\t\ttap(([singleValue, multiValues, options]) => {\n\t\t\t\t\tif (options.length === 0) return\n\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\toptions.forEach(option => {\n\t\t\t\t\t\t\toption.selected = multiValues.includes(option.value)\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.forEach(option => {\n\t\t\t\t\t\t\toption.selected = option.value === singleValue\n\t\t\t\t\t\t})\n\t\t\t\t\t}\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\tprivate handleOptionSelect(value: string) {\n\t\t// This method is now called from keyboard navigation only\n\t\tconst option = this.options.find(o => o.value === value)\n\t\tif (option) {\n\t\t\tthis._optionSelect$.next(option)\n\t\t}\n\t}\n\n\tprivate _fireChangeEvent() {\n\t\t// Get the current value based on multi/single mode\n\t\tconst value = this.multi ? this._selectedValues$.value : this._selectedValue$.value\n\n\t\t// Dispatch only one change event with the value in detail\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancySelectChangeEvent['detail']>('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t\t// Then check validity (only show error if validation should be shown)\n\t\tthis.checkValidity()\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\t// Disabled fields are always valid\n\t\tif (this.disabled) {\n\t\t\treturn true\n\t\t}\n\n\t\t// Determine if the select is empty based on whether it's multi-select or single-select\n\t\tconst isEmpty = this.multi\n\t\t\t? this._selectedValues$.value.length === 0\n\t\t\t: !this._selectedValue$.value\n\n\t\t// Check if the value is valid (not empty when required)\n\t\tconst isValid = !(this.required && isEmpty)\n\n\t\t// Set the validity state\n\t\tthis.isValid = isValid\n\n\t\tif (!this.isValid) {\n\t\t\tthis.validationMessage = 'Please select an option.'\n\t\t\tthis.internals?.setValidity({ valueMissing: true }, 'Please select an option.', this.inputRef)\n\t\t} else {\n\t\t\t// Clear validation message\n\t\t\tthis.validationMessage = ''\n\t\t\tthis.internals?.setValidity({})\n\t\t}\n\n\t\t// Update the input component to reflect our validation state\n\t\tif (this.inputRef && this.hasUpdated) {\n\t\t\tconst showError = !this.isValid && this.shouldShowValidation()\n\t\t\tthis.inputRef.error = showError\n\t\t\tthis.inputRef.hint = showError ? this.validationMessage : this.hint\n\t\t}\n\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\t// Force validation display regardless of validation strategy\n\t\tconst valid = this.checkValidity()\n\n\t\t// Force the input to show validation errors\n\t\tif (this.inputRef) {\n\t\t\t// Set the input's error state\n\t\t\tthis.inputRef.error = !valid\n\t\t\tthis.inputRef.hint = !valid ? this.validationMessage : this.hint\n\n\t\t\t// If invalid and not already open, automatically open the dropdown to show options\n\t\t\tif (!valid && !this.isOpen) {\n\t\t\t\t// Open the dropdown but don't mark as user interaction yet\n\t\t\t\t// This helps users immediately see available options when validation fails\n\t\t\t\tthis.openDropdown(false)\n\t\t\t}\n\n\t\t\t// Only call reportValidity on the input if invalid to show the native popup\n\t\t\tif (!valid) {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t}\n\t\t}\n\n\t\treturn valid\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t\tif (message) {\n\t\t\tthis.isValid = false\n\t\t\tthis.internals?.setValidity({ customError: true }, message, this.inputRef)\n\t\t} else {\n\t\t\tthis.isValid = true\n\t\t\tthis.internals?.setValidity({})\n\t\t}\n\n\t\t// Update input if needed\n\t\tif (this.inputRef && this.shouldShowValidation()) {\n\t\t\tthis.inputRef.error = !this.isValid\n\t\t\tthis.inputRef.hint = !this.isValid ? this.validationMessage : this.hint\n\t\t}\n\t}\n\n\tpublic reset() {\n\t\t// Reset to initial value\n\t\tthis.value = this.defaultValue\n\t\tthis.valueLabel = this.placeholder\n\t\tthis.isValid = true\n\t\tthis.validationMessage = ''\n\t\tthis._touched = false\n\t\tthis._dirty = false\n\t\tthis._submitted = false\n\t\tthis._userInteracted = false\n\t\tthis.internals?.setValidity({})\n\n\t\tif (this.inputRef) {\n\t\t\tthis.inputRef.error = false\n\t\t\tthis.inputRef.hint = this.hint\n\t\t}\n\t}\n\n\trender(): TemplateResult {\n\t\t// Determine if we should show errors based on the validation strategy and interaction\n\t\t// Never show errors on initial render or if the dropdown is open\n\t\tconst showErrors = !this.isValid && this.shouldShowValidation() && !this.isOpen\n\n\t\t// Add caret icon based on open state\n\t\tconst caretIcon = this.isOpen\n\t\t\t? html`<span class=\"absolute right-3 top-1/2 transform -translate-y-1/2\">▲</span>`\n\t\t\t: html`<span class=\"absolute right-3 top-1/2 transform -translate-y-1/2\">▼</span>`\n\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 cursor-not-allowed' : ''}\">\n\t\t\t\t<sch-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=${this.disabled ? '-1' : '0'}\n\t\t\t\t\tclass=\"trigger\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\taria-required=${this.required}\n\t\t\t\t\taria-activedescendant=${this._focusedOptionId || undefined}\n\t\t\t\t\taria-disabled=${this.disabled}\n\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t.value=${this.valueLabel}\n\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t.disabled=${this.disabled}\n\t\t\t\t\t.hint=${showErrors ? this.validationMessage : this.hint}\n\t\t\t\t\t.error=${showErrors}\n\t\t\t\t\t.validateOn=${this.validateOn}\n\t\t\t\t\t.size=${this.size}\n\t\t\t\t\treadonly\n\t\t\t\t\tclickable\n\t\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\t\t// Don't process clicks if disabled\n\t\t\t\t\t\tif (this.disabled) {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// On first click, don't count this as user interaction yet\n\t\t\t\t\t\tif (!this.isOpen) {\n\t\t\t\t\t\t\t// Open without triggering validation - we'll validate when they close\n\t\t\t\t\t\t\tthis.openDropdown(false)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Mark as interacted when they close the dropdown\n\t\t\t\t\t\t\tthis._userInteracted = true\n\t\t\t\t\t\t\tthis.closeDropdown()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t${caretIcon}\n\t\t\t\t</sch-input>\n\n\t\t\t\t<!-- Overlay for capturing clicks outside when dropdown is open -->\n\t\t\t\t${this.isOpen\n\t\t\t\t\t? html` <div class=\"fixed inset-0 z-10\" @click=${this.closeDropdown} tabindex=\"-1\" aria-hidden=\"true\"></div> `\n\t\t\t\t\t: ''}\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi}\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\t'absolute min-w-full w-full z-20 mt-1 rounded-md shadow-lg': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.low,\n\t\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis._options$.next(this.options)\n\t\t\t\t\t\t\t// Sync selection state when options re-render\n\t\t\t\t\t\t\tthis.syncSelection()\n\t\t\t\t\t\t}}\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\n// Don't export 'select' here as it conflicts with the store's select decorator\n// export const select = SchmancySelect\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-select': SchmancySelect\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-DSuEu-y3.cjs`),t=require(`./litElement.mixin-BG6_-nYX.cjs`);require(`./mixins.cjs`);const n=require(`./directives.cjs`),r=require(`./theme.interface-Da23QAYb.cjs`);let i=require(`rxjs`),a=require(`rxjs/operators`),o=require(`lit/directives/class-map.js`),s=require(`lit/decorators.js`),c=require(`lit`),l=require(`@floating-ui/dom`);var u=class extends t.t(c.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: block;
|
|
4
|
+
position: relative;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
[role='listbox'] {
|
|
8
|
+
overflow-y: auto;
|
|
9
|
+
outline: none;
|
|
10
|
+
}
|
|
11
|
+
`){static{this.formAssociated=!0}get value(){return this.multi?this._selectedValues$.value:this._selectedValue$.value}set value(e){if(this.multi){let t=Array.isArray(e)?e:e?String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];this._selectedValues$.next(t)}else this._selectedValue$.next(e==null?``:String(e))}get values(){return[...this._selectedValues$.value]}set values(e){this._selectedValues$.next(Array.isArray(e)?[...e]:[])}constructor(){super(),this.required=!1,this.disabled=!1,this.placeholder=``,this.multi=!1,this.label=``,this.hint=``,this.validateOn=`touched`,this.size=`md`,this.isOpen=!1,this.valueLabel=``,this.isValid=!0,this.validationMessage=``,this.defaultValue=``,this._options$=new i.BehaviorSubject([]),this._selectedValue$=new i.BehaviorSubject(``),this._selectedValues$=new i.BehaviorSubject([]),this._optionSelect$=new i.Subject,this._userInteracted=!1,this._touched=!1,this._dirty=!1,this._submitted=!1,this._focusedOptionId=``,this.formSubmitHandler=()=>{this._submitted=!0,this.checkValidity()},this.formResetHandler=()=>{this.reset()},this.handleKeyDown=e=>{if(this.disabled)return;if(!this.isOpen)return void([`Enter`,` `,`ArrowDown`].includes(e.key)&&(e.preventDefault(),this.openDropdown(!1)));let t=Array.from(this.options||[]),n=t.findIndex(e=>e.id===this._focusedOptionId)??-1;switch(e.key){case`Escape`:e.preventDefault(),this.closeDropdown();break;case`ArrowDown`:e.preventDefault(),this.focusOption(t,Math.min(n+1,t.length-1));break;case`ArrowUp`:e.preventDefault(),this.focusOption(t,Math.max(n-1,0));break;case`Home`:e.preventDefault(),this.focusOption(t,0);break;case`End`:e.preventDefault(),this.focusOption(t,t.length-1);break;case`Enter`:case` `:if(e.preventDefault(),this._focusedOptionId){let e=t.find(e=>e.id===this._focusedOptionId);e&&this.handleOptionSelect(e.value)}break;case`Tab`:this.closeDropdown()}};try{this.internals=this.attachInternals()}catch{}}get form(){return this.internals?.form}connectedCallback(){super.connectedCallback(),this.id||=`schmancy-select-${Math.random().toString(36).substring(2,9)}`,this.defaultValue=this.value,(0,i.fromEvent)(this,`keydown`).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(this.handleKeyDown),this._setupReactivePipelines(),this.internals?.form&&((0,i.fromEvent)(this.internals.form,`submit`).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(this.formSubmitHandler),(0,i.fromEvent)(this.internals.form,`reset`).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(this.formResetHandler))}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.()}firstUpdated(){this.syncSelection(),this.setupOptionsAccessibility(),this.inputRef&&(this.inputRef.error=!1)}updated(e){if(super.updated(e),e.has(`value`)){let e=this.multi?this._selectedValues$.value.join(`,`):this._selectedValue$.value;this.internals?.setFormValue(e),this.hasUpdated&&(this._dirty=!0),this.hasUpdated&&this.checkValidity()}e.has(`isOpen`)&&(this.isOpen?this.positionDropdown():this.cleanupPositioner?.())}shouldShowValidation(e=!1){if(e)return!0;switch(this.validateOn){case`always`:return!0;case`touched`:default:return this._touched;case`dirty`:return this._dirty;case`submitted`:return this._submitted}}syncSelection(){if(this.multi){let e=this._selectedValues$.value;this.options?.forEach(t=>t.selected=e.includes(t.value)),this.valueLabel=e.length>0&&this.options?.filter(t=>e.includes(t.value)).map(e=>e.label||e.textContent||``).join(`, `)||this.placeholder}else{let e=this._selectedValue$.value;this.options?.forEach(t=>{t.selected=t.value===e});let t=this.options?.find(t=>t.value===e);this.valueLabel=t?t.label||t.textContent||``:this.placeholder}}setupOptionsAccessibility(){this.options?.forEach((e,t)=>{e.setAttribute(`role`,`option`),e.id||=`${this.id}-option-${t}`,e.tabIndex=-1,e.setAttribute(`aria-selected`,String(this.multi?this._selectedValues$.value.includes(e.value):e.value===this._selectedValue$.value))})}async positionDropdown(){let e=this.renderRoot.querySelector(`.trigger`);e&&this.ul&&(this.cleanupPositioner=(0,l.autoUpdate)(e,this.ul,async()=>{let t=window.innerHeight,n=e.getBoundingClientRect(),r=t-n.bottom,i=n.top,a=Math.max(.75*Math.max(r,i),150),o=r<200&&i>r;this.ul.style.maxHeight=`${a}px`;let{x:s,y:c}=await(0,l.computePosition)(e,this.ul,{placement:o?`top-start`:`bottom-start`,middleware:[(0,l.offset)(5),(0,l.flip)(),(0,l.shift)({padding:5})]});Object.assign(this.ul.style,{left:`${s}px`,top:`${c}px`,position:`absolute`,width:`${e.offsetWidth}px`})}))}focusOption(e,t){let n=e[t];if(n){n.focus(),this._focusedOptionId=n.id;let e=this.renderRoot.querySelector(`.trigger`);if(e&&e.setAttribute(`aria-activedescendant`,n.id),this.ul&&n.offsetTop!==void 0){let e=n.offsetTop,t=n.offsetHeight,r=this.ul.scrollTop,i=this.ul.clientHeight;e<r?this.ul.scrollTop=e:e+t>r+i&&(this.ul.scrollTop=e+t-i)}}}async openDropdown(e=!1){if(this.disabled)return;this.isOpen=!0,await this.updateComplete;let t=Array.from(this.options||[]),n=this.multi?0:t.findIndex(e=>e.value===this._selectedValue$.value);this.focusOption(t,Math.max(n,0)),e&&this.reportValidity()}closeDropdown(){this._userInteracted&&(this._touched=!0),this.isOpen=!1,this._focusedOptionId=``;let e=this.renderRoot.querySelector(`.trigger`);e&&(e.removeAttribute(`aria-activedescendant`),e?.focus()),this._userInteracted&&this.shouldShowValidation()&&this.checkValidity()}_setupReactivePipelines(){(0,i.fromEvent)(this,`option-select`).pipe((0,a.tap)(e=>{e.stopPropagation();let t=this.options.find(t=>t.value===e.detail.value);t&&this._optionSelect$.next(t)}),(0,i.takeUntil)(this.disconnecting)).subscribe(),this._optionSelect$.pipe((0,a.withLatestFrom)(this._selectedValue$,this._selectedValues$),(0,a.tap)(([e,t,n])=>{if(this._userInteracted=!0,this._touched=!0,this._dirty=!0,this.multi){let t=n.indexOf(e.value),r=t>-1?[...n.slice(0,t),...n.slice(t+1)]:[...n,e.value];this._selectedValues$.next(r),this.internals?.setFormValue(r.join(`,`)),this.valueLabel=r.length>0?this.options.filter(e=>r.includes(e.value)).map(e=>e.label||e.textContent||``).join(`, `):this.placeholder}else this._selectedValue$.next(e.value),this.internals?.setFormValue(e.value),this.valueLabel=e.label||e.textContent||this.placeholder,this.closeDropdown();this.setupOptionsAccessibility(),this._fireChangeEvent()}),(0,i.takeUntil)(this.disconnecting)).subscribe(),this._options$.pipe((0,a.tap)(e=>{e.forEach((e,t)=>{e.setAttribute(`role`,`option`),e.tabIndex=-1,e.id||=`${this.id}-option-${t}`,e.hasAttribute(`data-event-bound`)||((0,i.fromEvent)(e,`click`).pipe((0,a.tap)(e=>{e.stopPropagation()}),(0,i.takeUntil)(this.disconnecting)).subscribe(()=>this._optionSelect$.next(e)),e.setAttribute(`data-event-bound`,`true`))})}),(0,i.takeUntil)(this.disconnecting)).subscribe(),(0,i.combineLatest)([this._selectedValue$,this._selectedValues$,this._options$]).pipe((0,a.tap)(([e,t,n])=>{n.length!==0&&(this.multi?n.forEach(e=>{e.selected=t.includes(e.value)}):n.forEach(t=>{t.selected=t.value===e}))}),(0,i.takeUntil)(this.disconnecting)).subscribe()}handleOptionSelect(e){let t=this.options.find(t=>t.value===e);t&&this._optionSelect$.next(t)}_fireChangeEvent(){let e=this.multi?this._selectedValues$.value:this._selectedValue$.value;this.dispatchEvent(new CustomEvent(`change`,{detail:{value:e},bubbles:!0,composed:!0})),this.checkValidity()}checkValidity(){if(this.disabled)return!0;let e=this.multi?this._selectedValues$.value.length===0:!this._selectedValue$.value,t=!(this.required&&e);if(this.isValid=t,this.isValid?(this.validationMessage=``,this.internals?.setValidity({})):(this.validationMessage=`Please select an option.`,this.internals?.setValidity({valueMissing:!0},`Please select an option.`,this.inputRef)),this.inputRef&&this.hasUpdated){let e=!this.isValid&&this.shouldShowValidation();this.inputRef.error=e,this.inputRef.hint=e?this.validationMessage:this.hint}return this.isValid}reportValidity(){let e=this.checkValidity();return this.inputRef&&(this.inputRef.error=!e,this.inputRef.hint=e?this.hint:this.validationMessage,e||this.isOpen||this.openDropdown(!1),e||this.inputRef.reportValidity()),e}setCustomValidity(e){this.validationMessage=e,e?(this.isValid=!1,this.internals?.setValidity({customError:!0},e,this.inputRef)):(this.isValid=!0,this.internals?.setValidity({})),this.inputRef&&this.shouldShowValidation()&&(this.inputRef.error=!this.isValid,this.inputRef.hint=this.isValid?this.hint:this.validationMessage)}reset(){this.value=this.defaultValue,this.valueLabel=this.placeholder,this.isValid=!0,this.validationMessage=``,this._touched=!1,this._dirty=!1,this._submitted=!1,this._userInteracted=!1,this.internals?.setValidity({}),this.inputRef&&(this.inputRef.error=!1,this.inputRef.hint=this.hint)}render(){let e=!this.isValid&&this.shouldShowValidation()&&!this.isOpen,t=this.isOpen?c.html`<span class="absolute right-3 top-1/2 transform -translate-y-1/2">▲</span>`:c.html`<span class="absolute right-3 top-1/2 transform -translate-y-1/2">▼</span>`;return c.html`
|
|
12
|
+
<div class="relative ${this.disabled?`opacity-60 cursor-not-allowed`:``}">
|
|
13
|
+
<sch-input
|
|
14
|
+
.name=${this.name}
|
|
15
|
+
tabIndex=${this.disabled?`-1`:`0`}
|
|
16
|
+
class="trigger"
|
|
17
|
+
role="combobox"
|
|
18
|
+
aria-haspopup="listbox"
|
|
19
|
+
aria-expanded=${this.isOpen}
|
|
20
|
+
aria-controls="options"
|
|
21
|
+
aria-autocomplete="none"
|
|
22
|
+
aria-required=${this.required}
|
|
23
|
+
aria-activedescendant=${this._focusedOptionId||void 0}
|
|
24
|
+
aria-disabled=${this.disabled}
|
|
25
|
+
.label=${this.label}
|
|
26
|
+
.placeholder=${this.placeholder}
|
|
27
|
+
.value=${this.valueLabel}
|
|
28
|
+
.required=${this.required}
|
|
29
|
+
.disabled=${this.disabled}
|
|
30
|
+
.hint=${e?this.validationMessage:this.hint}
|
|
31
|
+
.error=${e}
|
|
32
|
+
.validateOn=${this.validateOn}
|
|
33
|
+
.size=${this.size}
|
|
34
|
+
readonly
|
|
35
|
+
clickable
|
|
36
|
+
@click=${e=>{if(this.disabled)return e.preventDefault(),void e.stopPropagation();this.isOpen?(this._userInteracted=!0,this.closeDropdown()):this.openDropdown(!1)}}
|
|
37
|
+
>
|
|
38
|
+
${t}
|
|
39
|
+
</sch-input>
|
|
40
|
+
|
|
41
|
+
<!-- Overlay for capturing clicks outside when dropdown is open -->
|
|
42
|
+
${this.isOpen?c.html` <div class="fixed inset-0 z-10" @click=${this.closeDropdown} tabindex="-1" aria-hidden="true"></div> `:``}
|
|
43
|
+
|
|
44
|
+
<ul
|
|
45
|
+
id="options"
|
|
46
|
+
role="listbox"
|
|
47
|
+
aria-multiselectable=${this.multi}
|
|
48
|
+
class=${(0,o.classMap)({"absolute min-w-full w-full z-20 mt-1 rounded-md shadow-lg":!0,hidden:!this.isOpen})}
|
|
49
|
+
${n.color({bgColor:r.t.sys.color.surface.low,color:r.t.sys.color.surface.on})}
|
|
50
|
+
>
|
|
51
|
+
<slot
|
|
52
|
+
@slotchange=${()=>{this._options$.next(this.options),this.syncSelection()}}
|
|
53
|
+
></slot>
|
|
54
|
+
</ul>
|
|
55
|
+
</div>
|
|
56
|
+
`}};e.i([(0,s.property)({type:String})],u.prototype,`name`,void 0),e.i([(0,s.property)({type:Boolean,reflect:!0})],u.prototype,`required`,void 0),e.i([(0,s.property)({type:Boolean,reflect:!0})],u.prototype,`disabled`,void 0),e.i([(0,s.property)({type:String})],u.prototype,`placeholder`,void 0),e.i([(0,s.property)({type:String,reflect:!0})],u.prototype,`value`,null),e.i([(0,s.property)({type:Array})],u.prototype,`values`,null),e.i([(0,s.property)({type:Boolean})],u.prototype,`multi`,void 0),e.i([(0,s.property)({type:String})],u.prototype,`label`,void 0),e.i([(0,s.property)({type:String})],u.prototype,`hint`,void 0),e.i([(0,s.property)({type:String})],u.prototype,`validateOn`,void 0),e.i([(0,s.property)({type:String})],u.prototype,`size`,void 0),e.i([(0,s.state)()],u.prototype,`isOpen`,void 0),e.i([(0,s.state)()],u.prototype,`valueLabel`,void 0),e.i([(0,s.state)()],u.prototype,`isValid`,void 0),e.i([(0,s.property)({type:String})],u.prototype,`validationMessage`,void 0),e.i([(0,s.state)()],u.prototype,`defaultValue`,void 0),e.i([(0,s.query)(`ul`)],u.prototype,`ul`,void 0),e.i([(0,s.query)(`sch-input`)],u.prototype,`inputRef`,void 0),e.i([(0,s.queryAssignedElements)({flatten:!0})],u.prototype,`options`,void 0),e.i([(0,s.state)()],u.prototype,`_userInteracted`,void 0),e.i([(0,s.state)()],u.prototype,`_touched`,void 0),e.i([(0,s.state)()],u.prototype,`_dirty`,void 0),e.i([(0,s.state)()],u.prototype,`_submitted`,void 0),e.i([(0,s.state)()],u.prototype,`_focusedOptionId`,void 0),u=e.i([(0,s.customElement)(`schmancy-select`)],u),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-DXU2kzg4.cjs","names":[],"sources":["../src/select/select.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { css, html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { BehaviorSubject, combineLatest, fromEvent, Subject, takeUntil } from 'rxjs'\nimport { tap, withLatestFrom } from 'rxjs/operators'\n\nexport type SchmancySelectChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n/**\n * Select dropdown component with single and multi-select support.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} label - Label text displayed above the select\n * @prop {string} placeholder - Placeholder text when no value is selected\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} multi - Enable multi-select mode\n * @prop {string} value - Selected value (single select mode)\n * @prop {string[]} values - Selected values (multi-select mode)\n */\n@customElement('schmancy-select')\nexport class SchmancySelect extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t[role='listbox'] {\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t}\n`) {\n\t// Form association setup\n\tstatic formAssociated = true\n\tprivate internals?: ElementInternals\n\n\t// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean, reflect: true }) required = false\n\t@property({ type: Boolean, reflect: true }) disabled = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true })\n\tget value() {\n\t\treturn this.multi\n\t\t\t? this._selectedValues$.value // Return array for multi-select\n\t\t\t: this._selectedValue$.value // Return string for single-select\n\t}\n\tset value(val: string | string[]) {\n\t\tif (this.multi) {\n\t\t\tconst values = Array.isArray(val)\n\t\t\t\t? val\n\t\t\t\t: val ? String(val).split(',').map(v => v.trim()).filter(Boolean) : []\n\t\t\tthis._selectedValues$.next(values)\n\t\t} else {\n\t\t\tthis._selectedValue$.next(val == null ? '' : String(val))\n\t\t}\n\t}\n\n\t// Values property for multi-select mode\n\t@property({ type: Array })\n\tget values() {\n\t\treturn [...this._selectedValues$.value]\n\t}\n\tset values(vals: string[]) {\n\t\tthis._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n\t}\n\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\n\t@property({ type: String }) hint = ''\n\t@property({ type: String }) validateOn: 'always' | 'touched' | 'dirty' | 'submitted' = 'touched'\n\t// M3 aligned sizes: 24dp (xxs) → 32dp (xs) → 40dp (sm) → 48dp (md) → 56dp (lg)\n\t@property({ type: String }) size: 'xxs' | 'xs' | 'sm' | 'md' | 'lg' = 'md'\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private valueLabel = ''\n\t@state() private isValid = true\n\t@property({ type: String }) validationMessage = ''\n\n\t// Store the initial/default value for reset behavior\n\t@state() private defaultValue: string | string[] = ''\n\n\t@query('ul') private ul!: HTMLUListElement\n\t@query('sch-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\t// Reactive state management\n\tprivate _options$ = new BehaviorSubject<SchmancyOption[]>([])\n\tprivate _selectedValue$ = new BehaviorSubject<string>('')\n\tprivate _selectedValues$ = new BehaviorSubject<string[]>([])\n\tprivate _optionSelect$ = new Subject<SchmancyOption>()\n\t@state() _userInteracted = false\n\t@state() private _touched = false\n\t@state() private _dirty = false\n\t@state() private _submitted = false\n\n\t// Reference to current focused option (for keyboard navigation)\n\t@state() private _focusedOptionId = ''\n\n\t// Form event handlers\n\tprivate formSubmitHandler = () => {\n\t\tthis._submitted = true\n\t\tthis.checkValidity()\n\t}\n\n\tprivate formResetHandler = () => {\n\t\tthis.reset()\n\t}\n\n\tconstructor() {\n\t\tsuper()\n\t\t// Initialize ElementInternals for form association\n\t\ttry {\n\t\t\tthis.internals = this.attachInternals()\n\t\t} catch (e) {\n\t\t\tconsole.warn('FormAssociated elements not supported in this browser', e)\n\t\t}\n\t}\n\n\tget form() {\n\t\treturn this.internals?.form\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substring(2, 9)}`\n\t\t}\n\n\t\t// Store initial value for reset\n\t\tthis.defaultValue = this.value\n\n\t\t// Add keyboard handling to host element\n\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(takeUntil(this.disconnecting)).subscribe(this.handleKeyDown)\n\n\t\t// Setup reactive pipelines\n\t\tthis._setupReactivePipelines()\n\n\t\t// Listen for form submission events to mark field as submitted\n\t\tif (this.internals?.form) {\n\t\t\tfromEvent(this.internals.form, 'submit')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(this.formSubmitHandler)\n\n\t\t\t// Listen for form reset\n\t\t\tfromEvent(this.internals.form, 'reset')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(this.formResetHandler)\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.cleanupPositioner?.()\n\t\t// Form event listeners are automatically cleaned up via takeUntil(this.disconnecting)\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\n\t\t// Initially hide any validation errors until user interacts\n\t\tif (this.inputRef) {\n\t\t\tthis.inputRef.error = false\n\t\t}\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('value')) {\n\t\t\t// Update form value when component value changes\n\t\t\tconst formValue = this.multi\n\t\t\t\t? this._selectedValues$.value.join(',')\n\t\t\t\t: this._selectedValue$.value\n\t\t\tthis.internals?.setFormValue(formValue)\n\n\t\t\t// Mark as dirty if value changes from initial value\n\t\t\tif (this.hasUpdated) {\n\t\t\t\tthis._dirty = true\n\t\t\t}\n\n\t\t\t// Check validity based on validation strategy\n\t\t\tif (this.hasUpdated) {\n\t\t\t\tthis.checkValidity()\n\t\t\t}\n\t\t}\n\n\t\t// When open state changes, setup or cleanup the dropdown positioner\n\t\tif (changedProps.has('isOpen')) {\n\t\t\tif (this.isOpen) {\n\t\t\t\tthis.positionDropdown()\n\t\t\t} else {\n\t\t\t\tthis.cleanupPositioner?.()\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Determines if validation errors should be shown based on current state\n\t * and validation strategy\n\t */\n\tprivate shouldShowValidation(forceValidation = false): boolean {\n\t\tif (forceValidation) return true\n\n\t\tswitch (this.validateOn) {\n\t\t\tcase 'always':\n\t\t\t\treturn true\n\t\t\tcase 'touched':\n\t\t\t\treturn this._touched\n\t\t\tcase 'dirty':\n\t\t\t\treturn this._dirty\n\t\t\tcase 'submitted':\n\t\t\t\treturn this._submitted\n\t\t\tdefault:\n\t\t\t\treturn this._touched\n\t\t}\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\t// Read directly from the BehaviorSubject to avoid string conversion issues\n\t\t\tconst selectedValues = this._selectedValues$.value\n\t\t\tthis.options?.forEach(o => (o.selected = selectedValues.includes(o.value))) // Update option selected state\n\t\t\tthis.valueLabel =\n\t\t\t\tselectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t?.filter(o => selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label || o.textContent || '')\n\t\t\t\t\t\t\t.join(', ') || this.placeholder\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\t// Single select - read from BehaviorSubject\n\t\t\tconst currentValue = this._selectedValue$.value\n\t\t\tthis.options?.forEach(o => {\n\t\t\t\t// Set selected property on each option based on matching value\n\t\t\t\to.selected = o.value === currentValue\n\t\t\t})\n\t\t\tconst selectedOption = this.options?.find(o => o.value === currentValue)\n\t\t\tthis.valueLabel = selectedOption ? (selectedOption.label || selectedOption.textContent || '') : this.placeholder\n\t\t}\n\t}\n\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options?.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\n\t\t\t// Set tabindex to -1 so they're focusable programmatically but not in the tab order\n\t\t\toption.tabIndex = -1\n\n\t\t\toption.setAttribute(\n\t\t\t\t'aria-selected',\n\t\t\t\tString(this.multi ? this._selectedValues$.value.includes(option.value) : option.value === this._selectedValue$.value),\n\t\t\t)\n\t\t})\n\t}\n\n\tprivate async positionDropdown() {\n\t\tconst reference = this.renderRoot.querySelector('.trigger') as HTMLElement\n\t\tif (!reference || !this.ul) return\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\t// Get viewport dimensions\n\t\t\tconst viewportHeight = window.innerHeight\n\t\t\tconst triggerRect = reference.getBoundingClientRect()\n\n\t\t\t// Calculate available space below and above\n\t\t\tconst spaceBelow = viewportHeight - triggerRect.bottom\n\t\t\tconst spaceAbove = triggerRect.top\n\n\t\t\t// Calculate max height - use 75% of the largest available space, but at least 150px\n\t\t\tconst maxHeight = Math.max(Math.max(spaceBelow, spaceAbove) * 0.75, 150)\n\n\t\t\t// Determine if we should flip\n\t\t\tconst shouldFlip = spaceBelow < 200 && spaceAbove > spaceBelow\n\n\t\t\t// Apply max height\n\t\t\tthis.ul.style.maxHeight = `${maxHeight}px`\n\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: shouldFlip ? 'top-start' : 'bottom-start',\n\t\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t\t})\n\n\t\t\tObject.assign(this.ul.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t\tposition: 'absolute',\n\t\t\t\twidth: `${reference.offsetWidth}px`, // Match the width of the trigger\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Don't handle keyboard events when disabled\n\t\tif (this.disabled) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.isOpen) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.openDropdown(false)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Find current focused option\n\t\tconst options = Array.from(this.options || [])\n\t\tconst current = options.findIndex(o => o.id === this._focusedOptionId) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.min(current + 1, options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.max(current - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Home':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\tbreak\n\t\t\tcase 'End':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, options.length - 1)\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (this._focusedOptionId) {\n\t\t\t\t\tconst focusedOption = options.find(opt => opt.id === this._focusedOptionId)\n\t\t\t\t\tif (focusedOption) {\n\t\t\t\t\t\tthis.handleOptionSelect(focusedOption.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate focusOption(options: SchmancyOption[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tthis._focusedOptionId = option.id\n\n\t\t\t// Update aria-activedescendant on the combobox\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tif (combobox) {\n\t\t\t\tcombobox.setAttribute('aria-activedescendant', option.id)\n\t\t\t}\n\n\t\t\t// Ensure option is visible in the scrollable area\n\t\t\tif (this.ul && option.offsetTop !== undefined) {\n\t\t\t\t// Get position info\n\t\t\t\tconst optionTop = option.offsetTop\n\t\t\t\tconst optionHeight = option.offsetHeight\n\t\t\t\tconst scrollTop = this.ul.scrollTop\n\t\t\t\tconst ulHeight = this.ul.clientHeight\n\n\t\t\t\t// Scroll into view if needed\n\t\t\t\tif (optionTop < scrollTop) {\n\t\t\t\t\tthis.ul.scrollTop = optionTop\n\t\t\t\t} else if (optionTop + optionHeight > scrollTop + ulHeight) {\n\t\t\t\t\tthis.ul.scrollTop = optionTop + optionHeight - ulHeight\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\t// Don't open if disabled\n\t\tif (this.disabled) {\n\t\t\treturn\n\t\t}\n\n\t\t// Don't mark as touched on opening - we'll do that on closing\n\t\t// so errors only show after interaction is complete\n\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\t// Focus first or selected option\n\t\tconst options = Array.from(this.options || [])\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.value === this._selectedValue$.value)\n\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\n\t\t// Don't automatically validate when opening\n\t\t// Only validate if explicitly requested (like from a form submission)\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\t// Only mark as touched if the user actually interacted with the component\n\t\t// and made a selection or explicitly closed it without selecting\n\t\tif (this._userInteracted) {\n\t\t\tthis._touched = true\n\t\t}\n\n\t\tthis.isOpen = false\n\t\tthis._focusedOptionId = ''\n\n\t\t// Update combobox to remove aria-activedescendant\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tif (combobox) {\n\t\t\tcombobox.removeAttribute('aria-activedescendant')\n\t\t\tcombobox?.focus()\n\t\t}\n\n\t\t// Only check validity when closing if the user has actually interacted\n\t\t// with the component and validation should be shown\n\t\tif (this._userInteracted && this.shouldShowValidation()) {\n\t\t\tthis.checkValidity()\n\t\t}\n\t}\n\n\tprivate _setupReactivePipelines() {\n\t\t// Listen for option-select events from child options\n\t\tfromEvent<CustomEvent>(this, 'option-select')\n\t\t\t.pipe(\n\t\t\t\ttap((e) => {\n\t\t\t\t\te.stopPropagation() // Prevent event from bubbling further\n\t\t\t\t\tconst option = this.options.find(o => o.value === e.detail.value)\n\t\t\t\t\tif (option) {\n\t\t\t\t\t\tthis._optionSelect$.next(option)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Handle option selection through reactive pipeline\n\t\tthis._optionSelect$\n\t\t\t.pipe(\n\t\t\t\twithLatestFrom(this._selectedValue$, this._selectedValues$),\n\t\t\t\ttap(([option, _, currentValues]) => {\n\t\t\t\t\tthis._userInteracted = true\n\t\t\t\t\tthis._touched = true\n\t\t\t\t\tthis._dirty = true\n\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst index = currentValues.indexOf(option.value)\n\t\t\t\t\t\tconst newValues = index > -1\n\t\t\t\t\t\t\t? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n\t\t\t\t\t\t\t: [...currentValues, option.value]\n\t\t\t\t\t\tthis._selectedValues$.next(newValues)\n\n\t\t\t\t\t\t// Update form value\n\t\t\t\t\t\tthis.internals?.setFormValue(newValues.join(','))\n\n\t\t\t\t\t\t// Update display label\n\t\t\t\t\t\tthis.valueLabel = newValues.length > 0\n\t\t\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t\t\t.filter(o => newValues.includes(o.value))\n\t\t\t\t\t\t\t\t\t.map(o => o.label || o.textContent || '')\n\t\t\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t\t\t: this.placeholder\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single select\n\t\t\t\t\t\tthis._selectedValue$.next(option.value)\n\n\t\t\t\t\t\t// Update form value\n\t\t\t\t\t\tthis.internals?.setFormValue(option.value)\n\n\t\t\t\t\t\tthis.valueLabel = option.label || option.textContent || this.placeholder\n\t\t\t\t\t\tthis.closeDropdown()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update the option's accessibility state\n\t\t\t\t\tthis.setupOptionsAccessibility()\n\n\t\t\t\t\t// Dispatch change event\n\t\t\t\t\tthis._fireChangeEvent()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Options management pipeline - bind pointerdown events exactly like autocomplete\n\t\tthis._options$\n\t\t\t.pipe(\n\t\t\t\ttap((options) => {\n\t\t\t\t\toptions.forEach((option, index) => {\n\t\t\t\t\t\toption.setAttribute('role', 'option')\n\t\t\t\t\t\toption.tabIndex = -1\n\t\t\t\t\t\tif (!option.id) {\n\t\t\t\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Use data-event-bound to prevent duplicate bindings\n\t\t\t\t\t\tif (!option.hasAttribute('data-event-bound')) {\n\t\t\t\t\t\t\t// Use click event instead of pointerdown for better mobile UX\n\t\t\t\t\t\t\t// This allows users to scroll through options without immediately selecting\n\t\t\t\t\t\t\tfromEvent(option, 'click').pipe(\n\t\t\t\t\t\t\t\ttap(e => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t\t\t\t\t).subscribe(() => this._optionSelect$.next(option))\n\t\t\t\t\t\t\toption.setAttribute('data-event-bound', 'true')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Selection sync pipeline - sync selected states with value changes\n\t\tcombineLatest([this._selectedValue$, this._selectedValues$, this._options$])\n\t\t\t.pipe(\n\t\t\t\ttap(([singleValue, multiValues, options]) => {\n\t\t\t\t\tif (options.length === 0) return\n\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\toptions.forEach(option => {\n\t\t\t\t\t\t\toption.selected = multiValues.includes(option.value)\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.forEach(option => {\n\t\t\t\t\t\t\toption.selected = option.value === singleValue\n\t\t\t\t\t\t})\n\t\t\t\t\t}\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\tprivate handleOptionSelect(value: string) {\n\t\t// This method is now called from keyboard navigation only\n\t\tconst option = this.options.find(o => o.value === value)\n\t\tif (option) {\n\t\t\tthis._optionSelect$.next(option)\n\t\t}\n\t}\n\n\tprivate _fireChangeEvent() {\n\t\t// Get the current value based on multi/single mode\n\t\tconst value = this.multi ? this._selectedValues$.value : this._selectedValue$.value\n\n\t\t// Dispatch only one change event with the value in detail\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancySelectChangeEvent['detail']>('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t\t// Then check validity (only show error if validation should be shown)\n\t\tthis.checkValidity()\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\t// Disabled fields are always valid\n\t\tif (this.disabled) {\n\t\t\treturn true\n\t\t}\n\n\t\t// Determine if the select is empty based on whether it's multi-select or single-select\n\t\tconst isEmpty = this.multi\n\t\t\t? this._selectedValues$.value.length === 0\n\t\t\t: !this._selectedValue$.value\n\n\t\t// Check if the value is valid (not empty when required)\n\t\tconst isValid = !(this.required && isEmpty)\n\n\t\t// Set the validity state\n\t\tthis.isValid = isValid\n\n\t\tif (!this.isValid) {\n\t\t\tthis.validationMessage = 'Please select an option.'\n\t\t\tthis.internals?.setValidity({ valueMissing: true }, 'Please select an option.', this.inputRef)\n\t\t} else {\n\t\t\t// Clear validation message\n\t\t\tthis.validationMessage = ''\n\t\t\tthis.internals?.setValidity({})\n\t\t}\n\n\t\t// Update the input component to reflect our validation state\n\t\tif (this.inputRef && this.hasUpdated) {\n\t\t\tconst showError = !this.isValid && this.shouldShowValidation()\n\t\t\tthis.inputRef.error = showError\n\t\t\tthis.inputRef.hint = showError ? this.validationMessage : this.hint\n\t\t}\n\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\t// Force validation display regardless of validation strategy\n\t\tconst valid = this.checkValidity()\n\n\t\t// Force the input to show validation errors\n\t\tif (this.inputRef) {\n\t\t\t// Set the input's error state\n\t\t\tthis.inputRef.error = !valid\n\t\t\tthis.inputRef.hint = !valid ? this.validationMessage : this.hint\n\n\t\t\t// If invalid and not already open, automatically open the dropdown to show options\n\t\t\tif (!valid && !this.isOpen) {\n\t\t\t\t// Open the dropdown but don't mark as user interaction yet\n\t\t\t\t// This helps users immediately see available options when validation fails\n\t\t\t\tthis.openDropdown(false)\n\t\t\t}\n\n\t\t\t// Only call reportValidity on the input if invalid to show the native popup\n\t\t\tif (!valid) {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t}\n\t\t}\n\n\t\treturn valid\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t\tif (message) {\n\t\t\tthis.isValid = false\n\t\t\tthis.internals?.setValidity({ customError: true }, message, this.inputRef)\n\t\t} else {\n\t\t\tthis.isValid = true\n\t\t\tthis.internals?.setValidity({})\n\t\t}\n\n\t\t// Update input if needed\n\t\tif (this.inputRef && this.shouldShowValidation()) {\n\t\t\tthis.inputRef.error = !this.isValid\n\t\t\tthis.inputRef.hint = !this.isValid ? this.validationMessage : this.hint\n\t\t}\n\t}\n\n\tpublic reset() {\n\t\t// Reset to initial value\n\t\tthis.value = this.defaultValue\n\t\tthis.valueLabel = this.placeholder\n\t\tthis.isValid = true\n\t\tthis.validationMessage = ''\n\t\tthis._touched = false\n\t\tthis._dirty = false\n\t\tthis._submitted = false\n\t\tthis._userInteracted = false\n\t\tthis.internals?.setValidity({})\n\n\t\tif (this.inputRef) {\n\t\t\tthis.inputRef.error = false\n\t\t\tthis.inputRef.hint = this.hint\n\t\t}\n\t}\n\n\trender(): TemplateResult {\n\t\t// Determine if we should show errors based on the validation strategy and interaction\n\t\t// Never show errors on initial render or if the dropdown is open\n\t\tconst showErrors = !this.isValid && this.shouldShowValidation() && !this.isOpen\n\n\t\t// Add caret icon based on open state\n\t\tconst caretIcon = this.isOpen\n\t\t\t? html`<span class=\"absolute right-3 top-1/2 transform -translate-y-1/2\">▲</span>`\n\t\t\t: html`<span class=\"absolute right-3 top-1/2 transform -translate-y-1/2\">▼</span>`\n\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 cursor-not-allowed' : ''}\">\n\t\t\t\t<sch-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=${this.disabled ? '-1' : '0'}\n\t\t\t\t\tclass=\"trigger\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\taria-required=${this.required}\n\t\t\t\t\taria-activedescendant=${this._focusedOptionId || undefined}\n\t\t\t\t\taria-disabled=${this.disabled}\n\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t.value=${this.valueLabel}\n\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t.disabled=${this.disabled}\n\t\t\t\t\t.hint=${showErrors ? this.validationMessage : this.hint}\n\t\t\t\t\t.error=${showErrors}\n\t\t\t\t\t.validateOn=${this.validateOn}\n\t\t\t\t\t.size=${this.size}\n\t\t\t\t\treadonly\n\t\t\t\t\tclickable\n\t\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\t\t// Don't process clicks if disabled\n\t\t\t\t\t\tif (this.disabled) {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// On first click, don't count this as user interaction yet\n\t\t\t\t\t\tif (!this.isOpen) {\n\t\t\t\t\t\t\t// Open without triggering validation - we'll validate when they close\n\t\t\t\t\t\t\tthis.openDropdown(false)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Mark as interacted when they close the dropdown\n\t\t\t\t\t\t\tthis._userInteracted = true\n\t\t\t\t\t\t\tthis.closeDropdown()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t${caretIcon}\n\t\t\t\t</sch-input>\n\n\t\t\t\t<!-- Overlay for capturing clicks outside when dropdown is open -->\n\t\t\t\t${this.isOpen\n\t\t\t\t\t? html` <div class=\"fixed inset-0 z-10\" @click=${this.closeDropdown} tabindex=\"-1\" aria-hidden=\"true\"></div> `\n\t\t\t\t\t: ''}\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi}\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\t'absolute min-w-full w-full z-20 mt-1 rounded-md shadow-lg': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.low,\n\t\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis._options$.next(this.options)\n\t\t\t\t\t\t\t// Sync selection state when options re-render\n\t\t\t\t\t\t\tthis.syncSelection()\n\t\t\t\t\t\t}}\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\n// Don't export 'select' here as it conflicts with the store's select decorator\n// export const select = SchmancySelect\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-select': SchmancySelect\n\t}\n}\n"],"mappings":"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"}
|
package/dist/select.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=select.cjs.map
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./select-DXU2kzg4.cjs`);Object.defineProperty(exports,`SchmancySelect`,{enumerable:!0,get:function(){return e.t}});
|
package/dist/select.js
CHANGED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { i as e } from "./tailwind.mixin-BIVhjNvD.js";
|
|
2
|
+
import { t } from "./litElement.mixin-Dm-4L8zL.js";
|
|
3
|
+
import "./mixins.js";
|
|
4
|
+
import { C as n } from "./area-CC8fUnra.js";
|
|
5
|
+
import { i as r, n as i, o as a, s as o } from "./animation-BK-8BwY8.js";
|
|
6
|
+
import { n as s, t as c } from "./sheet.service-CAB7weBc.js";
|
|
7
|
+
import { filter as l, fromEvent as u, merge as d, takeUntil as f, tap as p } from "rxjs";
|
|
8
|
+
import { customElement as m, property as h, query as g } from "lit/decorators.js";
|
|
9
|
+
import { css as _, html as v } from "lit";
|
|
10
|
+
var y, b, x = class extends t(_`
|
|
11
|
+
:host {
|
|
12
|
+
position: fixed;
|
|
13
|
+
inset: 0;
|
|
14
|
+
z-index: var(--schmancy-overlay-z, 999);
|
|
15
|
+
display: none;
|
|
16
|
+
}
|
|
17
|
+
:host([open]) {
|
|
18
|
+
display: block;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Luminous edge glow on sheet panel */
|
|
22
|
+
.content {
|
|
23
|
+
box-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:host([position='bottom']) .content {
|
|
27
|
+
box-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@media (prefers-reduced-motion: reduce) {
|
|
31
|
+
.content { box-shadow: var(--schmancy-sys-elevation-3); }
|
|
32
|
+
}
|
|
33
|
+
`) {
|
|
34
|
+
constructor(...e) {
|
|
35
|
+
super(...e), this.open = !1, this.position = c.Side, this.persist = !1, this.lock = !1, this.handleHistory = !0, this.lastFocusedElement = null, this.handleOverlayClick = (e) => {
|
|
36
|
+
e.stopPropagation(), this.lock || s.dismiss(this.uid);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
onOpenChange(e, t) {
|
|
40
|
+
t ? (this.lastFocusedElement = document.activeElement, this.setBackgroundInert(!0), this.animateIn(), this.focus()) : (this.animateOut(), this.setBackgroundInert(!1), this.lastFocusedElement?.focus(), this.lastFocusedElement = null);
|
|
41
|
+
}
|
|
42
|
+
animateIn() {
|
|
43
|
+
if (!this.overlayEl || !this.contentEl) return;
|
|
44
|
+
this.overlayEl.animate([{ opacity: 0 }, { opacity: 1 }], {
|
|
45
|
+
duration: 200,
|
|
46
|
+
easing: o,
|
|
47
|
+
fill: "forwards"
|
|
48
|
+
});
|
|
49
|
+
let e = this.position === c.Side ? [{
|
|
50
|
+
opacity: 0,
|
|
51
|
+
transform: "translateX(100%) scale(0.95)"
|
|
52
|
+
}, {
|
|
53
|
+
opacity: 1,
|
|
54
|
+
transform: "translateX(0) scale(1)"
|
|
55
|
+
}] : [{
|
|
56
|
+
opacity: 0,
|
|
57
|
+
transform: "translateY(100%) scale(0.95)"
|
|
58
|
+
}, {
|
|
59
|
+
opacity: 1,
|
|
60
|
+
transform: "translateY(0) scale(1)"
|
|
61
|
+
}];
|
|
62
|
+
this.contentEl.animate(e, {
|
|
63
|
+
duration: r,
|
|
64
|
+
easing: i,
|
|
65
|
+
fill: "forwards"
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
animateOut() {
|
|
69
|
+
if (!this.overlayEl || !this.contentEl) return;
|
|
70
|
+
this.overlayEl.animate([{ opacity: 1 }, { opacity: 0 }], {
|
|
71
|
+
duration: 150,
|
|
72
|
+
easing: o,
|
|
73
|
+
fill: "forwards"
|
|
74
|
+
});
|
|
75
|
+
let e = this.position === c.Side ? [{
|
|
76
|
+
opacity: 1,
|
|
77
|
+
transform: "translateX(0) scale(1)"
|
|
78
|
+
}, {
|
|
79
|
+
opacity: 0,
|
|
80
|
+
transform: "translateX(100%) scale(0.98)"
|
|
81
|
+
}] : [{
|
|
82
|
+
opacity: 1,
|
|
83
|
+
transform: "translateY(0) scale(1)"
|
|
84
|
+
}, {
|
|
85
|
+
opacity: 0,
|
|
86
|
+
transform: "translateY(100%) scale(0.98)"
|
|
87
|
+
}];
|
|
88
|
+
this.contentEl.animate(e, {
|
|
89
|
+
duration: 150,
|
|
90
|
+
easing: a,
|
|
91
|
+
fill: "forwards"
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
connectedCallback() {
|
|
95
|
+
super.connectedCallback(), this.setupEventListeners();
|
|
96
|
+
}
|
|
97
|
+
disconnectedCallback() {
|
|
98
|
+
super.disconnectedCallback(), this.disconnecting.next(!0);
|
|
99
|
+
}
|
|
100
|
+
setupEventListeners() {
|
|
101
|
+
d(u(window, "popstate").pipe(l(() => this.handleHistory), p((e) => {
|
|
102
|
+
e.preventDefault(), this.closeSheet();
|
|
103
|
+
})), u(this, "keydown").pipe(p((e) => {
|
|
104
|
+
e.key === "Escape" && !this.lock && this.open && (e.preventDefault(), e.stopPropagation(), s.dismiss(this.uid));
|
|
105
|
+
})), u(window, "schmancy-sheet-render").pipe(l((e) => e.detail.uid === this.uid), p((e) => {
|
|
106
|
+
n.push({
|
|
107
|
+
area: this.uid,
|
|
108
|
+
component: e.detail.component,
|
|
109
|
+
props: e.detail.props,
|
|
110
|
+
historyStrategy: "silent"
|
|
111
|
+
});
|
|
112
|
+
})), u(window, "schmancy-sheet-dismiss").pipe(l((e) => e.detail.uid === this.uid), p(() => {
|
|
113
|
+
this.closeSheet();
|
|
114
|
+
}))).pipe(f(this.disconnecting)).subscribe();
|
|
115
|
+
}
|
|
116
|
+
setBackgroundInert(e) {
|
|
117
|
+
let t = this.parentElement;
|
|
118
|
+
t && Array.from(t.children).forEach((t) => {
|
|
119
|
+
t !== this && t instanceof HTMLElement && t.toggleAttribute("inert", e);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
closeSheet() {
|
|
123
|
+
this.open = !1, this.dispatchEvent(new CustomEvent("close"));
|
|
124
|
+
}
|
|
125
|
+
focus() {
|
|
126
|
+
let e = this.querySelector("[autofocus]");
|
|
127
|
+
e instanceof HTMLElement && e.focus();
|
|
128
|
+
}
|
|
129
|
+
render() {
|
|
130
|
+
let e = "overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 " + (this.lock ? "" : "cursor-pointer"), t = this.position === c.Side ? "content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10" : "content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10", n = this.position === c.Side ? "h-full overflow-auto" : "max-h-[90vh] overflow-auto";
|
|
131
|
+
return v`
|
|
132
|
+
<div class=${"absolute inset-0 flex h-full"} role="dialog" aria-hidden=${!this.open} aria-modal=${this.open} tabindex="0">
|
|
133
|
+
<div class=${e} @click=${this.handleOverlayClick}></div>
|
|
134
|
+
<div class=${t}>
|
|
135
|
+
<schmancy-surface rounded="left" fill="all" id="body" class=${n} type="solid">
|
|
136
|
+
<schmancy-area class="size-full overflow-auto" name=${this.uid}>
|
|
137
|
+
<slot></slot>
|
|
138
|
+
</schmancy-area>
|
|
139
|
+
</schmancy-surface>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
`;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
e([h({
|
|
146
|
+
type: Boolean,
|
|
147
|
+
reflect: !0
|
|
148
|
+
})], x.prototype, "open", void 0), e([h({
|
|
149
|
+
type: String,
|
|
150
|
+
reflect: !0
|
|
151
|
+
})], x.prototype, "position", void 0), e([h({
|
|
152
|
+
type: Boolean,
|
|
153
|
+
reflect: !0
|
|
154
|
+
})], x.prototype, "persist", void 0), e([h({
|
|
155
|
+
type: Boolean,
|
|
156
|
+
reflect: !0
|
|
157
|
+
})], x.prototype, "lock", void 0), e([h({
|
|
158
|
+
type: Boolean,
|
|
159
|
+
reflect: !0
|
|
160
|
+
})], x.prototype, "handleHistory", void 0), e([g(".overlay")], x.prototype, "overlayEl", void 0), e([g(".content")], x.prototype, "contentEl", void 0), e([(y = "open", (e, t) => {
|
|
161
|
+
let { willUpdate: n } = e;
|
|
162
|
+
b = Object.assign({ waitUntilFirstUpdate: !1 }, b), e.willUpdate = function(e) {
|
|
163
|
+
if (n.call(this, e), e.has(y)) {
|
|
164
|
+
let n = e.get(y), r = this[y];
|
|
165
|
+
n !== r && (b?.waitUntilFirstUpdate && !this.hasUpdated || this[t].call(this, n, r));
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
})], x.prototype, "onOpenChange", null), x = e([m("schmancy-sheet")], x);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet-CIxCCJ3H.js","names":[],"sources":["../src/sheet/hook.ts","../src/sheet/sheet.ts"],"sourcesContent":["// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { area } from '../area'\nimport { html, css } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil, tap, filter } from 'rxjs'\nimport { on } from './hook'\nimport { SchmancySheetPosition, sheet } from './sheet.service'\nimport { BLACKBIRD_EASING, DURATION_ENTER, DURATION_EXIT, DURATION_BACKDROP, EASE_OUT, EASE_IN } from '../utils/animation'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(css`\n\t:host {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: var(--schmancy-overlay-z, 999);\n\t\tdisplay: none;\n\t}\n\t:host([open]) {\n\t\tdisplay: block;\n\t}\n\n\t/* Luminous edge glow on sheet panel */\n\t.content {\n\t\tbox-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t:host([position='bottom']) .content {\n\t\tbox-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.content { box-shadow: var(--schmancy-sys-elevation-3); }\n\t}\n`) {\n\t// uid is inherited from $LitElement mixin - auto-generated or set via attribute\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\n\tprivate lastFocusedElement: HTMLElement | null = null\n\t@query('.overlay') private overlayEl!: HTMLDivElement\n\t@query('.content') private contentEl!: HTMLDivElement\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.animateIn()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.animateOut()\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tprivate animateIn() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\tduration: DURATION_BACKDROP,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_ENTER,\n\t\t\teasing: BLACKBIRD_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tprivate animateOut() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.98)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.98)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_IN,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\tfilter(() => this.handleHistory),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle render events from sheet service\n\t\tconst render$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-render').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(e => {\n\t\t\t\tarea.push({\n\t\t\t\t\tarea: this.uid,\n\t\t\t\t\tcomponent: e.detail.component,\n\t\t\t\t\tprops: e.detail.props,\n\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\n\t\t// Handle dismiss events from sheet service\n\t\tconst dismiss$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-dismiss').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(() => {\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, render$, dismiss$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\tconst parent = this.parentElement\n\t\tif (!parent) return\n\n\t\tArray.from(parent.children).forEach(child => {\n\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\tchild.toggleAttribute('inert', inert)\n\t\t\t}\n\t\t})\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\toverride focus() {\n\t\t// delegatesFocus in shadowRootOptions handles automatic focus\n\t\t// Just focus first element with autofocus attribute if present\n\t\tconst element = this.querySelector('[autofocus]')\n\t\tif (element instanceof HTMLElement) {\n\t\t\telement.focus()\n\t\t}\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst sheetClasses = `absolute inset-0 flex h-full`\n\n\t\tconst overlayClasses = `overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 ${this.lock ? '' : 'cursor-pointer'}`\n\n\t\tconst contentClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10'\n\t\t\t\t: 'content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10'\n\n\t\tconst surfaceClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'h-full overflow-auto'\n\t\t\t\t: 'max-h-[90vh] overflow-auto'\n\n\t\treturn html`\n\t\t\t<div class=${sheetClasses} role=\"dialog\" aria-hidden=${!this.open} aria-modal=${this.open} tabindex=\"0\">\n\t\t\t\t<div class=${overlayClasses} @click=${this.handleOverlayClick}></div>\n\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=${surfaceClasses} type=\"solid\">\n\t\t\t\t\t\t<schmancy-area class=\"size-full overflow-auto\" name=${this.uid}>\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</schmancy-area>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-DSuEu-y3.cjs`),t=require(`./litElement.mixin-BG6_-nYX.cjs`);require(`./mixins.cjs`);const n=require(`./area-wnWUAHEn.cjs`),r=require(`./animation-CO_Csq84.cjs`),i=require(`./sheet.service-DPAp7E3x.cjs`);let a=require(`rxjs`),o=require(`lit/decorators.js`),s=require(`lit`);var c,l,u=class extends t.t(s.css`
|
|
2
|
+
:host {
|
|
3
|
+
position: fixed;
|
|
4
|
+
inset: 0;
|
|
5
|
+
z-index: var(--schmancy-overlay-z, 999);
|
|
6
|
+
display: none;
|
|
7
|
+
}
|
|
8
|
+
:host([open]) {
|
|
9
|
+
display: block;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Luminous edge glow on sheet panel */
|
|
13
|
+
.content {
|
|
14
|
+
box-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:host([position='bottom']) .content {
|
|
18
|
+
box-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media (prefers-reduced-motion: reduce) {
|
|
22
|
+
.content { box-shadow: var(--schmancy-sys-elevation-3); }
|
|
23
|
+
}
|
|
24
|
+
`){constructor(...e){super(...e),this.open=!1,this.position=i.t.Side,this.persist=!1,this.lock=!1,this.handleHistory=!0,this.lastFocusedElement=null,this.handleOverlayClick=e=>{e.stopPropagation(),this.lock||i.n.dismiss(this.uid)}}onOpenChange(e,t){t?(this.lastFocusedElement=document.activeElement,this.setBackgroundInert(!0),this.animateIn(),this.focus()):(this.animateOut(),this.setBackgroundInert(!1),this.lastFocusedElement?.focus(),this.lastFocusedElement=null)}animateIn(){if(!this.overlayEl||!this.contentEl)return;this.overlayEl.animate([{opacity:0},{opacity:1}],{duration:200,easing:r.s,fill:`forwards`});let e=this.position===i.t.Side?[{opacity:0,transform:`translateX(100%) scale(0.95)`},{opacity:1,transform:`translateX(0) scale(1)`}]:[{opacity:0,transform:`translateY(100%) scale(0.95)`},{opacity:1,transform:`translateY(0) scale(1)`}];this.contentEl.animate(e,{duration:r.i,easing:r.n,fill:`forwards`})}animateOut(){if(!this.overlayEl||!this.contentEl)return;this.overlayEl.animate([{opacity:1},{opacity:0}],{duration:150,easing:r.s,fill:`forwards`});let e=this.position===i.t.Side?[{opacity:1,transform:`translateX(0) scale(1)`},{opacity:0,transform:`translateX(100%) scale(0.98)`}]:[{opacity:1,transform:`translateY(0) scale(1)`},{opacity:0,transform:`translateY(100%) scale(0.98)`}];this.contentEl.animate(e,{duration:150,easing:r.o,fill:`forwards`})}connectedCallback(){super.connectedCallback(),this.setupEventListeners()}disconnectedCallback(){super.disconnectedCallback(),this.disconnecting.next(!0)}setupEventListeners(){(0,a.merge)((0,a.fromEvent)(window,`popstate`).pipe((0,a.filter)(()=>this.handleHistory),(0,a.tap)(e=>{e.preventDefault(),this.closeSheet()})),(0,a.fromEvent)(this,`keydown`).pipe((0,a.tap)(e=>{e.key===`Escape`&&!this.lock&&this.open&&(e.preventDefault(),e.stopPropagation(),i.n.dismiss(this.uid))})),(0,a.fromEvent)(window,`schmancy-sheet-render`).pipe((0,a.filter)(e=>e.detail.uid===this.uid),(0,a.tap)(e=>{n.C.push({area:this.uid,component:e.detail.component,props:e.detail.props,historyStrategy:`silent`})})),(0,a.fromEvent)(window,`schmancy-sheet-dismiss`).pipe((0,a.filter)(e=>e.detail.uid===this.uid),(0,a.tap)(()=>{this.closeSheet()}))).pipe((0,a.takeUntil)(this.disconnecting)).subscribe()}setBackgroundInert(e){let t=this.parentElement;t&&Array.from(t.children).forEach(t=>{t!==this&&t instanceof HTMLElement&&t.toggleAttribute(`inert`,e)})}closeSheet(){this.open=!1,this.dispatchEvent(new CustomEvent(`close`))}focus(){let e=this.querySelector(`[autofocus]`);e instanceof HTMLElement&&e.focus()}render(){let e=`overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 `+(this.lock?``:`cursor-pointer`),t=this.position===i.t.Side?`content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10`:`content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10`,n=this.position===i.t.Side?`h-full overflow-auto`:`max-h-[90vh] overflow-auto`;return s.html`
|
|
25
|
+
<div class=${`absolute inset-0 flex h-full`} role="dialog" aria-hidden=${!this.open} aria-modal=${this.open} tabindex="0">
|
|
26
|
+
<div class=${e} @click=${this.handleOverlayClick}></div>
|
|
27
|
+
<div class=${t}>
|
|
28
|
+
<schmancy-surface rounded="left" fill="all" id="body" class=${n} type="solid">
|
|
29
|
+
<schmancy-area class="size-full overflow-auto" name=${this.uid}>
|
|
30
|
+
<slot></slot>
|
|
31
|
+
</schmancy-area>
|
|
32
|
+
</schmancy-surface>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
`}};e.i([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`open`,void 0),e.i([(0,o.property)({type:String,reflect:!0})],u.prototype,`position`,void 0),e.i([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`persist`,void 0),e.i([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`lock`,void 0),e.i([(0,o.property)({type:Boolean,reflect:!0})],u.prototype,`handleHistory`,void 0),e.i([(0,o.query)(`.overlay`)],u.prototype,`overlayEl`,void 0),e.i([(0,o.query)(`.content`)],u.prototype,`contentEl`,void 0),e.i([(c=`open`,(e,t)=>{let{willUpdate:n}=e;l=Object.assign({waitUntilFirstUpdate:!1},l),e.willUpdate=function(e){if(n.call(this,e),e.has(c)){let n=e.get(c),r=this[c];n!==r&&(l?.waitUntilFirstUpdate&&!this.hasUpdated||this[t].call(this,n,r))}}})],u.prototype,`onOpenChange`,null),u=e.i([(0,o.customElement)(`schmancy-sheet`)],u);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet-CeX6BbNp.cjs","names":[],"sources":["../src/sheet/hook.ts","../src/sheet/sheet.ts"],"sourcesContent":["// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { area } from '../area'\nimport { html, css } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil, tap, filter } from 'rxjs'\nimport { on } from './hook'\nimport { SchmancySheetPosition, sheet } from './sheet.service'\nimport { BLACKBIRD_EASING, DURATION_ENTER, DURATION_EXIT, DURATION_BACKDROP, EASE_OUT, EASE_IN } from '../utils/animation'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(css`\n\t:host {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: var(--schmancy-overlay-z, 999);\n\t\tdisplay: none;\n\t}\n\t:host([open]) {\n\t\tdisplay: block;\n\t}\n\n\t/* Luminous edge glow on sheet panel */\n\t.content {\n\t\tbox-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t:host([position='bottom']) .content {\n\t\tbox-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.content { box-shadow: var(--schmancy-sys-elevation-3); }\n\t}\n`) {\n\t// uid is inherited from $LitElement mixin - auto-generated or set via attribute\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\n\tprivate lastFocusedElement: HTMLElement | null = null\n\t@query('.overlay') private overlayEl!: HTMLDivElement\n\t@query('.content') private contentEl!: HTMLDivElement\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.animateIn()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.animateOut()\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tprivate animateIn() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\tduration: DURATION_BACKDROP,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_ENTER,\n\t\t\teasing: BLACKBIRD_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tprivate animateOut() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.98)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.98)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_IN,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\tfilter(() => this.handleHistory),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle render events from sheet service\n\t\tconst render$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-render').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(e => {\n\t\t\t\tarea.push({\n\t\t\t\t\tarea: this.uid,\n\t\t\t\t\tcomponent: e.detail.component,\n\t\t\t\t\tprops: e.detail.props,\n\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\n\t\t// Handle dismiss events from sheet service\n\t\tconst dismiss$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-dismiss').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(() => {\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, render$, dismiss$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\tconst parent = this.parentElement\n\t\tif (!parent) return\n\n\t\tArray.from(parent.children).forEach(child => {\n\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\tchild.toggleAttribute('inert', inert)\n\t\t\t}\n\t\t})\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\toverride focus() {\n\t\t// delegatesFocus in shadowRootOptions handles automatic focus\n\t\t// Just focus first element with autofocus attribute if present\n\t\tconst element = this.querySelector('[autofocus]')\n\t\tif (element instanceof HTMLElement) {\n\t\t\telement.focus()\n\t\t}\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst sheetClasses = `absolute inset-0 flex h-full`\n\n\t\tconst overlayClasses = `overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 ${this.lock ? '' : 'cursor-pointer'}`\n\n\t\tconst contentClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10'\n\t\t\t\t: 'content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10'\n\n\t\tconst surfaceClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'h-full overflow-auto'\n\t\t\t\t: 'max-h-[90vh] overflow-auto'\n\n\t\treturn html`\n\t\t\t<div class=${sheetClasses} role=\"dialog\" aria-hidden=${!this.open} aria-modal=${this.open} tabindex=\"0\">\n\t\t\t\t<div class=${overlayClasses} @click=${this.handleOverlayClick}></div>\n\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=${surfaceClasses} type=\"solid\">\n\t\t\t\t\t\t<schmancy-area class=\"size-full overflow-auto\" name=${this.uid}>\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</schmancy-area>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n"],"mappings":"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"}
|
package/dist/sheet.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=sheet.cjs.map
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sheet.service-DPAp7E3x.cjs`);require(`./sheet-CeX6BbNp.cjs`),exports.SchmancySheetPosition=e.t,exports.sheet=e.n;
|
package/dist/sheet.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./sheet-
|
|
3
|
-
export {
|
|
4
|
-
t as SchmancySheetPosition,
|
|
5
|
-
a as sheet
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=sheet.js.map
|
|
1
|
+
import { n as e, t } from "./sheet.service-CAB7weBc.js";
|
|
2
|
+
import "./sheet-CIxCCJ3H.js";
|
|
3
|
+
export { t as SchmancySheetPosition, e as sheet };
|