@mhmo91/schmancy 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +493 -718
- package/dist/{animation-CO_Csq84.cjs.map → animation-Bcwh107v.cjs.map} +1 -1
- package/dist/{animation-BK-8BwY8.js.map → animation-CXKSuUoE.js.map} +1 -1
- package/dist/{area-CRoGqD_u.js → area-BARjKpE9.js} +2 -2
- package/dist/{area-CRoGqD_u.js.map → area-BARjKpE9.js.map} +1 -1
- package/dist/{area-JPykB7A9.cjs → area-D9b9dHQr.cjs} +3 -3
- package/dist/{area-JPykB7A9.cjs.map → area-D9b9dHQr.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{audio-kz8UgPTO.js → audio-C7TzWI8M.js} +1 -1
- package/dist/audio-C7TzWI8M.js.map +1 -0
- package/dist/{audio-DtYYgzYD.cjs → audio-DUVz7Ars.cjs} +1 -1
- package/dist/audio-DUVz7Ars.cjs.map +1 -0
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/autocomplete-AI2CCJmK.cjs +115 -0
- package/dist/autocomplete-AI2CCJmK.cjs.map +1 -0
- package/dist/{autocomplete-BllPQwr8.js → autocomplete-DOimwVMP.js} +48 -22
- package/dist/autocomplete-DOimwVMP.js.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-DYEAZ8Qj.cjs → boat-Bk4u-LzT.cjs} +2 -2
- package/dist/{boat-DYEAZ8Qj.cjs.map → boat-Bk4u-LzT.cjs.map} +1 -1
- package/dist/{boat-BDTQ-du9.js → boat-DrghVeWK.js} +5 -5
- package/dist/{boat-BDTQ-du9.js.map → boat-DrghVeWK.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +34 -0
- package/dist/breadcrumb.cjs.map +1 -0
- package/dist/breadcrumb.js +73 -0
- package/dist/breadcrumb.js.map +1 -0
- package/dist/{busy-ChDAeaKF.js → busy-BmFfwyz_.js} +7 -6
- package/dist/{busy-ChDAeaKF.js.map → busy-BmFfwyz_.js.map} +1 -1
- package/dist/{busy-Dj7Xn0Z0.cjs → busy-c_q_F8O0.cjs} +8 -8
- package/dist/{busy-Dj7Xn0Z0.cjs.map → busy-c_q_F8O0.cjs.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +4 -4
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +25 -6
- package/dist/button.js.map +1 -1
- package/dist/{card-DZFPRPqs.js → card-BADJHUMA.js} +16 -15
- package/dist/{card-DZFPRPqs.js.map → card-BADJHUMA.js.map} +1 -1
- package/dist/{card-BvPWVEJX.cjs → card-C_E944_Z.cjs} +10 -10
- package/dist/{card-BvPWVEJX.cjs.map → card-C_E944_Z.cjs.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +3 -3
- package/dist/charts.cjs.map +1 -1
- package/dist/charts.js +2 -2
- package/dist/{checkbox-GSSjqo6w.js → checkbox-D7rvCrGk.js} +28 -9
- package/dist/{checkbox-GSSjqo6w.js.map → checkbox-D7rvCrGk.js.map} +1 -1
- package/dist/{checkbox-BC_37rsG.cjs → checkbox-ZqDoCagB.cjs} +10 -10
- package/dist/{checkbox-BC_37rsG.cjs.map → checkbox-ZqDoCagB.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-B19XS8Xc.cjs → chips-Cux635Qs.cjs} +18 -18
- package/dist/chips-Cux635Qs.cjs.map +1 -0
- package/dist/{chips-B9oAEfE_.js → chips-vdzIsesI.js} +37 -27
- package/dist/chips-vdzIsesI.js.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/{code-highlight-fSLrlgOb.cjs → code-highlight-C9lKek2p.cjs} +11 -11
- package/dist/{code-highlight-fSLrlgOb.cjs.map → code-highlight-C9lKek2p.cjs.map} +1 -1
- package/dist/{code-highlight-DCk5lJY-.js → code-highlight-D6yruol6.js} +6 -5
- package/dist/{code-highlight-DCk5lJY-.js.map → code-highlight-D6yruol6.js.map} +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/components-ByRyEzz5.cjs +73 -0
- package/dist/{components-CyD6a7gQ.cjs.map → components-ByRyEzz5.cjs.map} +1 -1
- package/dist/{components-COsM6sJZ.js → components-DSvPKR9Q.js} +2 -2
- package/dist/{components-COsM6sJZ.js.map → components-DSvPKR9Q.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/connectivity.cjs +7 -7
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +5 -4
- package/dist/connectivity.js.map +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{cursor-glow-DtSy_PJd.cjs → cursor-glow-82y5h3E4.cjs} +1 -1
- package/dist/{cursor-glow-DtSy_PJd.cjs.map → cursor-glow-82y5h3E4.cjs.map} +1 -1
- package/dist/{cursor-glow-Ah7VXSj7.js → cursor-glow-C2YRrB8Z.js} +1 -1
- package/dist/{cursor-glow-Ah7VXSj7.js.map → cursor-glow-C2YRrB8Z.js.map} +1 -1
- package/dist/{date-range-ZAaQB22I.cjs → date-range-DJsavigf.cjs} +3 -3
- package/dist/date-range-DJsavigf.cjs.map +1 -0
- package/dist/{date-range-inline-Bl8qbiQF.js → date-range-inline-B87TDYI6.js} +1 -1
- package/dist/{date-range-inline-Bl8qbiQF.js.map → date-range-inline-B87TDYI6.js.map} +1 -1
- package/dist/date-range-inline-De-M0VmL.cjs +43 -0
- package/dist/{date-range-inline-m7nLjOMI.cjs.map → date-range-inline-De-M0VmL.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/{date-range-Sfyco9-n.js → date-range-tEX2Jx2j.js} +4 -4
- package/dist/date-range-tEX2Jx2j.js.map +1 -0
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay-BvVdfhAR.cjs +9 -0
- package/dist/{delay-7boauN6N.cjs.map → delay-BvVdfhAR.cjs.map} +1 -1
- package/dist/{delay-CgX6m0HN.js → delay-CZw37zps.js} +9 -8
- package/dist/{delay-CgX6m0HN.js.map → delay-CZw37zps.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-BHnk8l4q.cjs → details-Bhz8_whd.cjs} +9 -9
- package/dist/{details-BHnk8l4q.cjs.map → details-Bhz8_whd.cjs.map} +1 -1
- package/dist/{details-BPkUg8Cq.js → details-D7VTnLOh.js} +16 -15
- package/dist/{details-BPkUg8Cq.js.map → details-D7VTnLOh.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-service-NZEvyEK-.js → dialog-service-ClFrOWf4.js} +2 -2
- package/dist/{dialog-service-NZEvyEK-.js.map → dialog-service-ClFrOWf4.js.map} +1 -1
- package/dist/{dialog-service-VnW4gkmE.cjs → dialog-service-DcuAavp2.cjs} +1 -1
- package/dist/{dialog-service-VnW4gkmE.cjs.map → dialog-service-DcuAavp2.cjs.map} +1 -1
- package/dist/dialog.cjs +18 -11
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +66 -43
- package/dist/dialog.js.map +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +5 -5
- package/dist/{divider-_khrhrZo.cjs → divider-S0bHwCCS.cjs} +2 -2
- package/dist/{divider-_khrhrZo.cjs.map → divider-S0bHwCCS.cjs.map} +1 -1
- package/dist/{divider-CW9a7MMj.js → divider-zS232JDr.js} +2 -2
- package/dist/{divider-CW9a7MMj.js.map → divider-zS232JDr.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +4 -4
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +8 -7
- package/dist/dropdown.js.map +1 -1
- package/dist/{expand-iQ7EOMP7.js → expand-BXt9SqAF.js} +13 -12
- package/dist/{expand-iQ7EOMP7.js.map → expand-BXt9SqAF.js.map} +1 -1
- package/dist/{expand-Cp7-PH8b.cjs → expand-Dr7TFXpl.cjs} +18 -18
- package/dist/{expand-Cp7-PH8b.cjs.map → expand-Dr7TFXpl.cjs.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-IKAiJJhv.cjs → extra-BmZTXAp0.cjs} +3 -3
- package/dist/{extra-IKAiJJhv.cjs.map → extra-BmZTXAp0.cjs.map} +1 -1
- package/dist/{extra-wEpvEFbK.js → extra-COYhsOyZ.js} +2 -2
- package/dist/{extra-wEpvEFbK.js.map → extra-COYhsOyZ.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/float-CSRW-Rrd.cjs +1 -0
- package/dist/{float-D5rNC82i.cjs.map → float-CSRW-Rrd.cjs.map} +1 -1
- package/dist/{float-BQ_urmMs.js → float-DCXafWh6.js} +2 -2
- package/dist/{float-BQ_urmMs.js.map → float-DCXafWh6.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{flow-CUj0fDT_.js.map → flow-CqgDEIqK.js.map} +1 -1
- package/dist/{flow-Bbwn6dRN.cjs.map → flow-DSu4PLt1.cjs.map} +1 -1
- package/dist/form-CAY9GSCd.cjs +1 -0
- package/dist/form-CAY9GSCd.cjs.map +1 -0
- package/dist/form-D2cJ58TB.js +68 -0
- package/dist/form-D2cJ58TB.js.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +2 -1
- package/dist/{hashContent-DaeGmY-p.cjs.map → hashContent-kKvXKFa9.cjs.map} +1 -1
- package/dist/{hashContent-DYM21p6t.js.map → hashContent-nD2uWwi2.js.map} +1 -1
- package/dist/{icons-BDqiGXrO.js → icons-BbaI9Zf-.js} +9 -8
- package/dist/icons-BbaI9Zf-.js.map +1 -0
- package/dist/{icons-B57_93VV.cjs → icons-DPUeLS_Y.cjs} +3 -3
- package/dist/icons-DPUeLS_Y.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-WnWPIrBG.js → iframe-CEDOvkql.js} +5 -4
- package/dist/{iframe-WnWPIrBG.js.map → iframe-CEDOvkql.js.map} +1 -1
- package/dist/{iframe-DNHL3GIk.cjs → iframe-Ct50FYXq.cjs} +3 -3
- package/dist/{iframe-DNHL3GIk.cjs.map → iframe-Ct50FYXq.cjs.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +65 -59
- package/dist/{input-BiSrTcrR.cjs → input-DMjpf6V8.cjs} +2 -2
- package/dist/{input-BiSrTcrR.cjs.map → input-DMjpf6V8.cjs.map} +1 -1
- package/dist/{input-VaXHFrRn.js → input-Ri72dn5t.js} +1 -1
- package/dist/{input-VaXHFrRn.js.map → input-Ri72dn5t.js.map} +1 -1
- package/dist/{input-chip-Dy-AiP55.cjs → input-chip-BhjGVpc3.cjs} +9 -9
- package/dist/input-chip-BhjGVpc3.cjs.map +1 -0
- package/dist/{input-chip-QejNcRnS.js → input-chip-CI4__N8w.js} +13 -9
- package/dist/input-chip-CI4__N8w.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/{intersection-CZpaIHeT.cjs.map → intersection-D1v1UCVv.cjs.map} +1 -1
- package/dist/{intersection-BPLpqYEd.js.map → intersection-LfEsy29T.js.map} +1 -1
- package/dist/json.cjs +3 -3
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +5 -4
- package/dist/json.js.map +1 -1
- package/dist/kbd.cjs +28 -0
- package/dist/kbd.cjs.map +1 -0
- package/dist/kbd.js +45 -0
- package/dist/kbd.js.map +1 -0
- package/dist/{layout-yxSlLybo.js → layout-BE2ld1IY.js} +1 -1
- package/dist/{layout-yxSlLybo.js.map → layout-BE2ld1IY.js.map} +1 -1
- package/dist/layout-D7xOqMkJ.cjs +17 -0
- package/dist/{layout-DNYG3phx.cjs.map → layout-D7xOqMkJ.cjs.map} +1 -1
- package/dist/{layout-4C-6_cre.cjs → layout-PZCF3kwl.cjs} +1 -1
- package/dist/{layout-4C-6_cre.cjs.map → layout-PZCF3kwl.cjs.map} +1 -1
- package/dist/{layout-CnsXeCAy.js → layout-uAQpJN31.js} +20 -19
- package/dist/{layout-CnsXeCAy.js.map → layout-uAQpJN31.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/{lightbox-BrI1Z31s.js → lightbox-C0OEHns9.js} +10 -9
- package/dist/{lightbox-BrI1Z31s.js.map → lightbox-C0OEHns9.js.map} +1 -1
- package/dist/{lightbox-CmACf0t5.cjs → lightbox-cXRnvHMN.cjs} +20 -20
- package/dist/{lightbox-CmACf0t5.cjs.map → lightbox-cXRnvHMN.cjs.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-swIL9VDv.cjs → list-CmJ5h35b.cjs} +5 -5
- package/dist/{list-swIL9VDv.cjs.map → list-CmJ5h35b.cjs.map} +1 -1
- package/dist/{list-Cm-jjXxM.js → list-d1mHar5p.js} +14 -13
- package/dist/{list-Cm-jjXxM.js.map → list-d1mHar5p.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-3llHwB-8.cjs → litElement.mixin-Bj2q1yPw.cjs} +1 -1
- package/dist/{litElement.mixin-3llHwB-8.cjs.map → litElement.mixin-Bj2q1yPw.cjs.map} +1 -1
- package/dist/{litElement.mixin-6jJYHCrZ.js → litElement.mixin-CncaUoxz.js} +1 -1
- package/dist/{litElement.mixin-6jJYHCrZ.js.map → litElement.mixin-CncaUoxz.js.map} +1 -1
- package/dist/{magnetic-BZGFxAWG.js → magnetic-Dj52WplI.js} +2 -2
- package/dist/{magnetic-BZGFxAWG.js.map → magnetic-Dj52WplI.js.map} +1 -1
- package/dist/{magnetic-Dux4QwO4.cjs → magnetic-aBBnj_vk.cjs} +1 -1
- package/dist/{magnetic-Dux4QwO4.cjs.map → magnetic-aBBnj_vk.cjs.map} +1 -1
- package/dist/{mailbox-D6LkQcN5.cjs → mailbox-BmChskZc.cjs} +59 -59
- package/dist/{mailbox-D6LkQcN5.cjs.map → mailbox-BmChskZc.cjs.map} +1 -1
- package/dist/{mailbox-BuvsVaAQ.js → mailbox-C4-E93be.js} +13 -12
- package/dist/{mailbox-BuvsVaAQ.js.map → mailbox-C4-E93be.js.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-CQiKAxC3.js → map-DHyYLhvy.js} +6 -5
- package/dist/{map-CQiKAxC3.js.map → map-DHyYLhvy.js.map} +1 -1
- package/dist/{map-D5NN4VET.cjs → map-DYEvlNl0.cjs} +7 -7
- package/dist/{map-D5NN4VET.cjs.map → map-DYEvlNl0.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{menu-CkgMO9K5.cjs → menu-BlPTI6H9.cjs} +3 -3
- package/dist/{menu-CkgMO9K5.cjs.map → menu-BlPTI6H9.cjs.map} +1 -1
- package/dist/{menu-C1x04YZw.js → menu-DFDBADp4.js} +3 -3
- package/dist/{menu-C1x04YZw.js.map → menu-DFDBADp4.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.cjs.map +1 -1
- package/dist/mixins.js +43 -15
- package/dist/mixins.js.map +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +3 -3
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +2 -2
- package/dist/{notification-BnBgxjF-.js → notification-DGpv8g2H.js} +4 -4
- package/dist/{notification-BnBgxjF-.js.map → notification-DGpv8g2H.js.map} +1 -1
- package/dist/notification-DKVWYhqs.cjs +23 -0
- package/dist/{notification-CZFEhWxc.cjs.map → notification-DKVWYhqs.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-DBO8xZwd.js → option-BD2eh458.js} +6 -5
- package/dist/{option-DBO8xZwd.js.map → option-BD2eh458.js.map} +1 -1
- package/dist/{option-BrxCVwSx.cjs → option-LtSDy2xf.cjs} +5 -5
- package/dist/{option-BrxCVwSx.cjs.map → option-LtSDy2xf.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-DQey9Qph.cjs.map → overlay-stack-CEYGD9T1.cjs.map} +1 -1
- package/dist/{overlay-stack-DT1SdaGW.js.map → overlay-stack-Ca4EK2Mu.js.map} +1 -1
- package/dist/page.cjs +2 -2
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +5 -5
- package/dist/{progress-Db2e4_Zd.cjs → progress-B5ChDPbB.cjs} +2 -2
- package/dist/{progress-Db2e4_Zd.cjs.map → progress-B5ChDPbB.cjs.map} +1 -1
- package/dist/{progress-DeiHxXo7.js → progress-CE1Pk2hi.js} +2 -2
- package/dist/{progress-DeiHxXo7.js.map → progress-CE1Pk2hi.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{provide-DHnhQtCH.cjs → provide-BZ9lq_Be.cjs} +1 -1
- package/dist/{provide-DHnhQtCH.cjs.map → provide-BZ9lq_Be.cjs.map} +1 -1
- package/dist/{provide-C1aQhxYo.js → provide-jn1Fj1vv.js} +1 -1
- package/dist/{provide-C1aQhxYo.js.map → provide-jn1Fj1vv.js.map} +1 -1
- package/dist/qr-scanner.cjs +2 -2
- package/dist/qr-scanner.cjs.map +1 -1
- package/dist/qr-scanner.js +2 -2
- package/dist/radio-group-Cd9pZ2MR.cjs +40 -0
- package/dist/{radio-group-Cspwd-Vw.cjs.map → radio-group-Cd9pZ2MR.cjs.map} +1 -1
- package/dist/{radio-group-zSO0AkJf.js → radio-group-CyRHgIF3.js} +7 -6
- package/dist/{radio-group-zSO0AkJf.js.map → radio-group-CyRHgIF3.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +4 -4
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +4 -3
- package/dist/range.js.map +1 -1
- package/dist/{reduced-motion-D-L12p7G.js.map → reduced-motion-B83yZbcO.js.map} +1 -1
- package/dist/{reduced-motion-Ds05GPyz.cjs.map → reduced-motion-DR32yKEO.cjs.map} +1 -1
- package/dist/{rxjs-utils-BSjmI9-Q.js.map → rxjs-utils-Bldch1RO.js.map} +1 -1
- package/dist/{rxjs-utils-DCsfzeap.cjs.map → rxjs-utils-hAgKC7vk.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-QMCmbbDv.cjs → scroll-C_iNOi7E.cjs} +2 -2
- package/dist/{scroll-QMCmbbDv.cjs.map → scroll-C_iNOi7E.cjs.map} +1 -1
- package/dist/{scroll-cBDzye64.js → scroll-DoliwpRu.js} +7 -6
- package/dist/{scroll-cBDzye64.js.map → scroll-DoliwpRu.js.map} +1 -1
- package/dist/{search-C4dFHYbX.js.map → search-BlGJ6uJv.js.map} +1 -1
- package/dist/{search-Ds8tt7Et.cjs.map → search-C8eAOzBm.cjs.map} +1 -1
- package/dist/{select-Ct37l3lg.cjs → select-CWWuZ2iJ.cjs} +2 -2
- package/dist/{select-Ct37l3lg.cjs.map → select-CWWuZ2iJ.cjs.map} +1 -1
- package/dist/{select-c6HbWvKP.js → select-_vHPXi30.js} +3 -3
- package/dist/{select-c6HbWvKP.js.map → select-_vHPXi30.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-BMXcUiIm.js → sheet-i1KtxGIj.js} +5 -5
- package/dist/{sheet-BMXcUiIm.js.map → sheet-i1KtxGIj.js.map} +1 -1
- package/dist/{sheet-CQec-bCV.cjs → sheet-r0oEYIdi.cjs} +2 -2
- package/dist/{sheet-CQec-bCV.cjs.map → sheet-r0oEYIdi.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-Dumvr1HT.cjs → sheet.service-Cr13Oo6G.cjs} +1 -1
- package/dist/{sheet.service-Dumvr1HT.cjs.map → sheet.service-Cr13Oo6G.cjs.map} +1 -1
- package/dist/{sheet.service-BcPV3Du4.js → sheet.service-DUO5_kmI.js} +3 -3
- package/dist/{sheet.service-BcPV3Du4.js.map → sheet.service-DUO5_kmI.js.map} +1 -1
- package/dist/skeleton.cjs +33 -0
- package/dist/skeleton.cjs.map +1 -0
- package/dist/skeleton.js +58 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/skills/INDEX.md +7 -6
- package/dist/skills/breadcrumb.md +53 -0
- package/dist/skills/kbd.md +40 -0
- package/dist/skills/schmancy/INDEX.md +7 -6
- package/dist/skills/schmancy/breadcrumb.md +53 -0
- package/dist/skills/schmancy/kbd.md +40 -0
- package/dist/skills/schmancy/skeleton.md +40 -0
- package/dist/skills/schmancy/splash-screen.md +60 -0
- package/dist/skills/schmancy/switch.md +58 -0
- package/dist/skills/schmancy/tooltip.md +1 -1
- package/dist/skills/schmancy/visually-hidden.md +41 -0
- package/dist/skills/skeleton.md +40 -0
- package/dist/skills/splash-screen.md +60 -0
- package/dist/skills/switch.md +58 -0
- package/dist/skills/tooltip.md +1 -1
- package/dist/skills/visually-hidden.md +41 -0
- package/dist/slider.cjs +3 -3
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +2 -2
- package/dist/{sound.service-Bu3EQLv2.cjs → sound.service-BjSoGjmT.cjs} +1 -1
- package/dist/{sound.service-Bu3EQLv2.cjs.map → sound.service-BjSoGjmT.cjs.map} +1 -1
- package/dist/{sound.service-m3BrSfuH.js → sound.service-cdkw3Wkv.js} +1 -1
- package/dist/{sound.service-m3BrSfuH.js.map → sound.service-cdkw3Wkv.js.map} +1 -1
- package/dist/splash-screen-CquyPP1C.cjs +41 -0
- package/dist/splash-screen-CquyPP1C.cjs.map +1 -0
- package/dist/splash-screen-CvucPkpD.js +83 -0
- package/dist/splash-screen-CvucPkpD.js.map +1 -0
- package/dist/splash-screen.cjs +1 -0
- package/dist/splash-screen.js +1 -0
- package/dist/src-Bemk2C2P.cjs +269 -0
- package/dist/{src-BtQVyqMy.cjs.map → src-Bemk2C2P.cjs.map} +1 -1
- package/dist/{src-BLngW2bl.js → src-f5a3W9Mj.js} +98 -91
- package/dist/{src-BLngW2bl.js.map → src-f5a3W9Mj.js.map} +1 -1
- package/dist/steps.cjs +10 -10
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +10 -9
- package/dist/steps.js.map +1 -1
- package/dist/{store-DYqDLAvT.js.map → store-Bmj6rvZY.js.map} +1 -1
- package/dist/{store-CorvD3bT.cjs.map → store-CO4nJyGj.cjs.map} +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +1 -1
- package/dist/surface-CDufon40.cjs +7 -0
- package/dist/{surface-BjKZoJxK.cjs.map → surface-CDufon40.cjs.map} +1 -1
- package/dist/surface-CkEYJCae.js +22 -0
- package/dist/{surface-pK8hME5c.js.map → surface-CkEYJCae.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{surface.mixin-C5sDI1-_.cjs → surface.mixin-CSKqQH-0.cjs} +2 -2
- package/dist/{surface.mixin-C5sDI1-_.cjs.map → surface.mixin-CSKqQH-0.cjs.map} +1 -1
- package/dist/{surface.mixin-CBNRpJum.js → surface.mixin-DqMwoddO.js} +1 -1
- package/dist/{surface.mixin-CBNRpJum.js.map → surface.mixin-DqMwoddO.js.map} +1 -1
- package/dist/switch.cjs +69 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.js +132 -0
- package/dist/switch.js.map +1 -0
- package/dist/{table-CiqgZzSd.cjs → table-DWc1mkpj.cjs} +3 -3
- package/dist/{table-CiqgZzSd.cjs.map → table-DWc1mkpj.cjs.map} +1 -1
- package/dist/{table-BXIHX9h4.js → table-P6VGG7NK.js} +4 -4
- package/dist/{table-BXIHX9h4.js.map → table-P6VGG7NK.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-nbV5eblZ.js → tabs-CjGjGrqY.js} +13 -12
- package/dist/{tabs-nbV5eblZ.js.map → tabs-CjGjGrqY.js.map} +1 -1
- package/dist/{tabs-CKa-W4qA.cjs → tabs-DGJEKuhC.cjs} +4 -4
- package/dist/{tabs-CKa-W4qA.cjs.map → tabs-DGJEKuhC.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{tailwind.mixin-BF1Huas7.cjs → tailwind.mixin-Cpa-VnnX.cjs} +2 -2
- package/dist/tailwind.mixin-Cpa-VnnX.cjs.map +1 -0
- package/dist/{tailwind.mixin-BCJOOX1_.js → tailwind.mixin-DufHBjmb.js} +57 -63
- package/dist/tailwind.mixin-DufHBjmb.js.map +1 -0
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-D7q8exMg.js → textarea-DZT_Ofp5.js} +42 -28
- package/dist/textarea-DZT_Ofp5.js.map +1 -0
- package/dist/textarea-jmTOXrzl.cjs +39 -0
- package/dist/textarea-jmTOXrzl.cjs.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/theme-CCKqaksQ.cjs +181 -0
- package/dist/{theme-Da4SPq9X.cjs.map → theme-CCKqaksQ.cjs.map} +1 -1
- package/dist/{theme-_VPV6Bxh.js → theme-CEc32pAv.js} +13 -12
- package/dist/{theme-_VPV6Bxh.js.map → theme-CEc32pAv.js.map} +1 -1
- package/dist/theme-button-BsJcv-Zv.cjs +8 -0
- package/dist/{theme-button-Ci8VQ7KW.cjs.map → theme-button-BsJcv-Zv.cjs.map} +1 -1
- package/dist/{theme-button--sX8A-m1.js → theme-button-dOiAvdKU.js} +4 -3
- package/dist/{theme-button--sX8A-m1.js.map → theme-button-dOiAvdKU.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.events-Cv7N4Toe.js.map → theme.events-Bw3mYjUA.js.map} +1 -1
- package/dist/{theme.events-DM4H5F2d.cjs.map → theme.events-EznKK2Y0.cjs.map} +1 -1
- package/dist/{theme.interface-Da23QAYb.cjs.map → theme.interface-CM26m9te.cjs.map} +1 -1
- package/dist/{theme.interface-CXloMUCw.js.map → theme.interface-FAUIgbIq.js.map} +1 -1
- package/dist/theme.js +5 -5
- package/dist/{theme.service-C_tjlqgy.cjs → theme.service-ETiKUwVy.cjs} +1 -1
- package/dist/{theme.service-C_tjlqgy.cjs.map → theme.service-ETiKUwVy.cjs.map} +1 -1
- package/dist/{theme.service-D9lEas89.js → theme.service-_qP5WvB9.js} +2 -2
- package/dist/{theme.service-D9lEas89.js.map → theme.service-_qP5WvB9.js.map} +1 -1
- package/dist/tooltip.cjs +1 -6
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js +51 -135
- package/dist/tooltip.js.map +1 -1
- package/dist/tree.cjs +14 -5
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +28 -6
- package/dist/tree.js.map +1 -1
- package/dist/tslib.es6-Bd-92OW3.cjs +1 -0
- package/dist/{tslib.es6-D7BIeDVB.cjs.map → tslib.es6-Bd-92OW3.cjs.map} +1 -1
- package/dist/tslib.es6-CI1onEZb.js +7 -0
- package/dist/{tslib.es6-ErZEp3OO.js.map → tslib.es6-CI1onEZb.js.map} +1 -1
- package/dist/typewriter-ByIL2Mh-.cjs +123 -0
- package/dist/{typewriter-B2TnHPjw.cjs.map → typewriter-ByIL2Mh-.cjs.map} +1 -1
- package/dist/{typewriter-BrZNa8T-.js → typewriter-vOQ3bDLb.js} +8 -7
- package/dist/{typewriter-BrZNa8T-.js.map → typewriter-vOQ3bDLb.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.cjs +4 -4
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +10 -9
- package/dist/typography.js.map +1 -1
- package/dist/{utils-CoU7M2YS.js → utils-Cq0m3LYo.js} +3 -3
- package/dist/{utils-CoU7M2YS.js.map → utils-Cq0m3LYo.js.map} +1 -1
- package/dist/{utils-BcaKtQuA.cjs → utils-D2kE-6zc.cjs} +1 -1
- package/dist/{utils-BcaKtQuA.cjs.map → utils-D2kE-6zc.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +5 -5
- package/dist/visually-hidden.cjs +13 -0
- package/dist/visually-hidden.cjs.map +1 -0
- package/dist/visually-hidden.js +24 -0
- package/dist/visually-hidden.js.map +1 -0
- package/dist/{window-Uii13x_r.cjs → window-BS7ZQjgH.cjs} +2 -2
- package/dist/window-BS7ZQjgH.cjs.map +1 -0
- package/dist/{window-CM1ycigo.js → window-WnAihpsA.js} +7 -7
- package/dist/window-WnAihpsA.js.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +22 -28
- package/skills/schmancy/INDEX.md +7 -6
- package/skills/schmancy/breadcrumb.md +53 -0
- package/skills/schmancy/kbd.md +40 -0
- package/skills/schmancy/skeleton.md +40 -0
- package/skills/schmancy/splash-screen.md +60 -0
- package/skills/schmancy/switch.md +58 -0
- package/skills/schmancy/tooltip.md +1 -1
- package/skills/schmancy/visually-hidden.md +41 -0
- package/src/audio/emotional-sounds.ts +2 -4
- package/src/autocomplete/autocomplete.ts +52 -2
- package/src/breadcrumb/breadcrumb.ts +109 -0
- package/src/breadcrumb/index.ts +1 -0
- package/src/button/button.ts +40 -0
- package/src/button/icon-button.ts +2 -1
- package/src/checkbox/checkbox.test.ts +113 -0
- package/src/checkbox/checkbox.ts +41 -1
- package/src/chips/filter-chip.ts +15 -0
- package/src/chips/input-chip.ts +7 -0
- package/src/date-range/date-range-helpers.ts +0 -71
- package/src/dialog/dialog-base.mixin.ts +11 -0
- package/src/dialog/dialog.component.ts +28 -8
- package/src/dropdown/dropdown-content.ts +3 -1
- package/src/form/form.test.ts +137 -0
- package/src/form/form.ts +142 -158
- package/src/form/index.ts +2 -2
- package/src/icons/icon.ts +1 -0
- package/src/index.ts +6 -0
- package/src/kbd/index.ts +1 -0
- package/src/kbd/kbd.ts +59 -0
- package/src/skeleton/index.ts +1 -0
- package/src/skeleton/skeleton.ts +78 -0
- package/src/splash-screen/index.ts +1 -0
- package/src/splash-screen/splash-screen.ts +154 -0
- package/src/switch/index.ts +1 -0
- package/src/switch/switch.test.ts +93 -0
- package/src/switch/switch.ts +180 -0
- package/src/test-utils/a11y.ts +35 -0
- package/src/textarea/textarea.ts +32 -2
- package/src/tooltip/index.ts +1 -2
- package/src/tree/tree.ts +27 -2
- package/src/visually-hidden/index.ts +1 -0
- package/src/visually-hidden/visually-hidden.ts +39 -0
- package/src/window/window-position.ts +1 -74
- package/types/mixins/formField.mixin.d.ts +15 -8
- package/types/src/audio/emotional-sounds.d.ts +0 -2
- package/types/src/autocomplete/autocomplete.d.ts +7 -0
- package/types/src/breadcrumb/breadcrumb.d.ts +38 -0
- package/types/src/breadcrumb/index.d.ts +1 -0
- package/types/src/button/button.d.ts +7 -0
- package/types/src/button/icon-button.d.ts +2 -1
- package/types/src/checkbox/checkbox.d.ts +6 -0
- package/types/src/checkbox/checkbox.test.d.ts +1 -0
- package/types/src/chips/filter-chip.d.ts +3 -0
- package/types/src/chips/input-chip.d.ts +1 -0
- package/types/src/date-range/date-range-helpers.d.ts +0 -12
- package/types/src/dialog/dialog.component.d.ts +6 -0
- package/types/src/dropdown/dropdown-content.d.ts +3 -1
- package/types/src/form/form-v2.d.ts +12 -63
- package/types/src/form/form.d.ts +58 -40
- package/types/src/form/form.test.d.ts +4 -0
- package/types/src/form/index.d.ts +1 -1
- package/types/src/icons/icon.d.ts +1 -0
- package/types/src/index.d.ts +6 -0
- package/types/src/kbd/index.d.ts +1 -0
- package/types/src/kbd/kbd.d.ts +25 -0
- package/types/src/skeleton/index.d.ts +1 -0
- package/types/src/skeleton/skeleton.d.ts +27 -0
- package/types/src/splash-screen/index.d.ts +1 -0
- package/types/src/splash-screen/splash-screen.d.ts +60 -0
- package/types/src/switch/index.d.ts +1 -0
- package/types/src/switch/switch.d.ts +54 -0
- package/types/src/switch/switch.test.d.ts +1 -0
- package/types/src/test-utils/a11y.d.ts +11 -0
- package/types/src/textarea/textarea.d.ts +5 -1
- package/types/src/tooltip/index.d.ts +0 -1
- package/types/src/tree/tree.d.ts +5 -0
- package/types/src/visually-hidden/index.d.ts +1 -0
- package/types/src/visually-hidden/visually-hidden.d.ts +21 -0
- package/types/src/window/window-position.d.ts +1 -35
- package/dist/audio-DtYYgzYD.cjs.map +0 -1
- package/dist/audio-kz8UgPTO.js.map +0 -1
- package/dist/autocomplete-5rVhbieU.cjs +0 -111
- package/dist/autocomplete-5rVhbieU.cjs.map +0 -1
- package/dist/autocomplete-BllPQwr8.js.map +0 -1
- package/dist/chips-B19XS8Xc.cjs.map +0 -1
- package/dist/chips-B9oAEfE_.js.map +0 -1
- package/dist/components-CyD6a7gQ.cjs +0 -73
- package/dist/date-range-Sfyco9-n.js.map +0 -1
- package/dist/date-range-ZAaQB22I.cjs.map +0 -1
- package/dist/date-range-inline-m7nLjOMI.cjs +0 -43
- package/dist/delay-7boauN6N.cjs +0 -9
- package/dist/float-D5rNC82i.cjs +0 -1
- package/dist/form-BqN1AGFj.cjs +0 -1
- package/dist/form-BqN1AGFj.cjs.map +0 -1
- package/dist/form-CajC5HnO.js +0 -270
- package/dist/form-CajC5HnO.js.map +0 -1
- package/dist/icons-B57_93VV.cjs.map +0 -1
- package/dist/icons-BDqiGXrO.js.map +0 -1
- package/dist/input-chip-Dy-AiP55.cjs.map +0 -1
- package/dist/input-chip-QejNcRnS.js.map +0 -1
- package/dist/layout-DNYG3phx.cjs +0 -17
- package/dist/notification-CZFEhWxc.cjs +0 -23
- package/dist/radio-group-Cspwd-Vw.cjs +0 -40
- package/dist/src-BtQVyqMy.cjs +0 -269
- package/dist/surface-BjKZoJxK.cjs +0 -7
- package/dist/surface-pK8hME5c.js +0 -21
- package/dist/tailwind.mixin-BCJOOX1_.js.map +0 -1
- package/dist/tailwind.mixin-BF1Huas7.cjs.map +0 -1
- package/dist/textarea-Cp1ZE60O.cjs +0 -35
- package/dist/textarea-Cp1ZE60O.cjs.map +0 -1
- package/dist/textarea-D7q8exMg.js.map +0 -1
- package/dist/theme-Da4SPq9X.cjs +0 -181
- package/dist/theme-button-Ci8VQ7KW.cjs +0 -8
- package/dist/typewriter-B2TnHPjw.cjs +0 -123
- package/dist/window-CM1ycigo.js.map +0 -1
- package/dist/window-Uii13x_r.cjs.map +0 -1
- package/mixins/baseElement.ts +0 -190
- package/mixins/constructor.ts +0 -3
- package/mixins/discovery.service.ts +0 -221
- package/mixins/formField.mixin.ts +0 -228
- package/mixins/index.ts +0 -7
- package/mixins/litElement.mixin.ts +0 -15
- package/mixins/scss.d.ts +0 -21
- package/mixins/surface.mixin.ts +0 -93
- package/mixins/tailwind.css +0 -549
- package/mixins/tailwind.mixin.ts +0 -30
- package/src/form/form-v2.ts +0 -268
- package/src/layout/v2/grid.ts +0 -93
- package/src/notification/outlet.ts +0 -16
- package/src/store/immer-integration.ts +0 -99
- package/src/tooltip/tooltip.ts +0 -216
- /package/dist/{animation-CO_Csq84.cjs → animation-Bcwh107v.cjs} +0 -0
- /package/dist/{animation-BK-8BwY8.js → animation-CXKSuUoE.js} +0 -0
- /package/dist/{tslib.es6-ErZEp3OO.js → decorate-D_utPUsC.js} +0 -0
- /package/dist/{tslib.es6-D7BIeDVB.cjs → decorate-F9CuyeHg.cjs} +0 -0
- /package/dist/{flow-CUj0fDT_.js → flow-CqgDEIqK.js} +0 -0
- /package/dist/{flow-Bbwn6dRN.cjs → flow-DSu4PLt1.cjs} +0 -0
- /package/dist/{hashContent-DaeGmY-p.cjs → hashContent-kKvXKFa9.cjs} +0 -0
- /package/dist/{hashContent-DYM21p6t.js → hashContent-nD2uWwi2.js} +0 -0
- /package/dist/{intersection-CZpaIHeT.cjs → intersection-D1v1UCVv.cjs} +0 -0
- /package/dist/{intersection-BPLpqYEd.js → intersection-LfEsy29T.js} +0 -0
- /package/dist/{overlay-stack-DQey9Qph.cjs → overlay-stack-CEYGD9T1.cjs} +0 -0
- /package/dist/{overlay-stack-DT1SdaGW.js → overlay-stack-Ca4EK2Mu.js} +0 -0
- /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-B83yZbcO.js} +0 -0
- /package/dist/{reduced-motion-Ds05GPyz.cjs → reduced-motion-DR32yKEO.cjs} +0 -0
- /package/dist/{rxjs-utils-BSjmI9-Q.js → rxjs-utils-Bldch1RO.js} +0 -0
- /package/dist/{rxjs-utils-DCsfzeap.cjs → rxjs-utils-hAgKC7vk.cjs} +0 -0
- /package/dist/{search-C4dFHYbX.js → search-BlGJ6uJv.js} +0 -0
- /package/dist/{search-Ds8tt7Et.cjs → search-C8eAOzBm.cjs} +0 -0
- /package/dist/{store-DYqDLAvT.js → store-Bmj6rvZY.js} +0 -0
- /package/dist/{store-CorvD3bT.cjs → store-CO4nJyGj.cjs} +0 -0
- /package/dist/{theme.events-Cv7N4Toe.js → theme.events-Bw3mYjUA.js} +0 -0
- /package/dist/{theme.events-DM4H5F2d.cjs → theme.events-EznKK2Y0.cjs} +0 -0
- /package/dist/{theme.interface-Da23QAYb.cjs → theme.interface-CM26m9te.cjs} +0 -0
- /package/dist/{theme.interface-CXloMUCw.js → theme.interface-FAUIgbIq.js} +0 -0
package/src/form/form-v2.ts
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { TailwindElement } from '@mixins/index'
|
|
2
|
-
import { html, LitElement } from 'lit'
|
|
3
|
-
import { customElement, property } from 'lit/decorators.js'
|
|
4
|
-
import { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'
|
|
5
|
-
|
|
6
|
-
// Define interfaces for form element capabilities
|
|
7
|
-
export interface FormElement extends HTMLElement {
|
|
8
|
-
name?: string
|
|
9
|
-
value?: string
|
|
10
|
-
disabled?: boolean
|
|
11
|
-
type?: string
|
|
12
|
-
defaultValue?: string
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface CheckableFormElement extends FormElement {
|
|
16
|
-
checked?: boolean
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface ValidatableFormElement extends FormElement {
|
|
20
|
-
reportValidity?: () => boolean
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Define interface for form control registry
|
|
24
|
-
export interface FormControlConfig {
|
|
25
|
-
tagName: string
|
|
26
|
-
hasValue?: boolean
|
|
27
|
-
hasChecked?: boolean
|
|
28
|
-
canSubmit?: boolean
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* The form is a component used to collect user input from
|
|
33
|
-
* interactive controls.
|
|
34
|
-
*
|
|
35
|
-
* @element sch-form
|
|
36
|
-
*
|
|
37
|
-
* @slot - Default slot for the form.
|
|
38
|
-
*
|
|
39
|
-
* @fires submit - Emitted when the form is submitted.
|
|
40
|
-
* @fires reset - Emitted when the form is reset.
|
|
41
|
-
*/
|
|
42
|
-
@customElement('sch-form')
|
|
43
|
-
export default class SchmancyFormV2 extends TailwindElement() {
|
|
44
|
-
private $disconnecting = new Subject()
|
|
45
|
-
public static readonly tagName = 'sch-form'
|
|
46
|
-
|
|
47
|
-
// Static registry of form controls
|
|
48
|
-
private static formControlRegistry: FormControlConfig[] = [
|
|
49
|
-
// Native elements
|
|
50
|
-
{ tagName: 'input', hasValue: true, hasChecked: true, canSubmit: true },
|
|
51
|
-
{ tagName: 'textarea', hasValue: true },
|
|
52
|
-
{ tagName: 'select', hasValue: true },
|
|
53
|
-
{ tagName: 'button', canSubmit: true },
|
|
54
|
-
{ tagName: 'radio', hasChecked: true },
|
|
55
|
-
|
|
56
|
-
// Custom elements
|
|
57
|
-
{ tagName: 'schmancy-input', hasValue: true, canSubmit: true },
|
|
58
|
-
{ tagName: 'schmancy-mask-input', hasValue: true },
|
|
59
|
-
{ tagName: 'schmancy-button', canSubmit: true },
|
|
60
|
-
{ tagName: 'schmancy-icon-button', canSubmit: true },
|
|
61
|
-
{ tagName: 'schmancy-radio', hasChecked: true },
|
|
62
|
-
{ tagName: 'schmancy-switch', hasChecked: true },
|
|
63
|
-
{ tagName: 'schmancy-checkbox', hasValue: true, hasChecked: true },
|
|
64
|
-
{ tagName: 'schmancy-radio-group', hasChecked: true },
|
|
65
|
-
{ tagName: 'schmancy-autocomplete', hasValue: true, hasChecked: true },
|
|
66
|
-
{ tagName: 'schmancy-select', hasValue: true, hasChecked: true },
|
|
67
|
-
{ tagName: 'schmancy-combo', hasValue: true },
|
|
68
|
-
{ tagName: 'schmancy-date-time-input', hasValue: true },
|
|
69
|
-
{ tagName: 'schmancy-rating', hasValue: true },
|
|
70
|
-
]
|
|
71
|
-
|
|
72
|
-
// Static methods to register new form controls
|
|
73
|
-
public static registerFormControl(config: FormControlConfig): void {
|
|
74
|
-
const existingIndex = this.formControlRegistry.findIndex(item => item.tagName === config.tagName)
|
|
75
|
-
|
|
76
|
-
if (existingIndex >= 0) {
|
|
77
|
-
this.formControlRegistry[existingIndex] = {
|
|
78
|
-
...this.formControlRegistry[existingIndex],
|
|
79
|
-
...config,
|
|
80
|
-
}
|
|
81
|
-
} else {
|
|
82
|
-
this.formControlRegistry.push(config)
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Helper methods to check control capabilities
|
|
87
|
-
private static hasValue(tagName: string): boolean {
|
|
88
|
-
const config = this.formControlRegistry.find(item => item.tagName === tagName)
|
|
89
|
-
return config?.hasValue || false
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
private static hasChecked(tagName: string): boolean {
|
|
93
|
-
const config = this.formControlRegistry.find(item => item.tagName === tagName)
|
|
94
|
-
return config?.hasChecked || false
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
private static canSubmit(tagName: string): boolean {
|
|
98
|
-
const config = this.formControlRegistry.find(item => item.tagName === tagName)
|
|
99
|
-
return config?.canSubmit || false
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
protected static shadowRootOptions = {
|
|
103
|
-
...LitElement.shadowRootOptions,
|
|
104
|
-
mode: 'open',
|
|
105
|
-
delegatesFocus: false,
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
/** Specifies if form data validation should be skipped on submit.
|
|
110
|
-
* @attr novalidate
|
|
111
|
-
* @type {boolean}
|
|
112
|
-
* @public
|
|
113
|
-
*/
|
|
114
|
-
@property({ type: Boolean, reflect: true }) public novalidate = false
|
|
115
|
-
|
|
116
|
-
constructor() {
|
|
117
|
-
super()
|
|
118
|
-
merge(
|
|
119
|
-
fromEvent<MouseEvent>(this, 'click').pipe(
|
|
120
|
-
tap(e => {
|
|
121
|
-
const target = e.target as HTMLButtonElement
|
|
122
|
-
if (target.type?.toLowerCase() === 'submit') {
|
|
123
|
-
this.handleSubmitRequest(e)
|
|
124
|
-
}
|
|
125
|
-
}),
|
|
126
|
-
),
|
|
127
|
-
fromEvent<KeyboardEvent>(this, 'keydown').pipe(
|
|
128
|
-
tap(e => {
|
|
129
|
-
if (e.code === 'Enter' || e.key === 'Enter') {
|
|
130
|
-
this.handleSubmitRequest(e)
|
|
131
|
-
}
|
|
132
|
-
}),
|
|
133
|
-
),
|
|
134
|
-
)
|
|
135
|
-
.pipe(takeUntil(this.$disconnecting))
|
|
136
|
-
.subscribe()
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
disconnectedCallback() {
|
|
140
|
-
super.disconnectedCallback()
|
|
141
|
-
this.$disconnecting.next(null)
|
|
142
|
-
this.$disconnecting.complete()
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/** Submits the form. */
|
|
146
|
-
public submit(): boolean {
|
|
147
|
-
const formData = this.getFormData()
|
|
148
|
-
if (!this.novalidate && !this.reportValidity()) {
|
|
149
|
-
return false
|
|
150
|
-
}
|
|
151
|
-
this.dispatchEvent(new CustomEvent('submit', { detail: formData }))
|
|
152
|
-
return true
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/** Resets the form. */
|
|
156
|
-
public reset() {
|
|
157
|
-
const formElements = this.getFormElements()
|
|
158
|
-
formElements.forEach(element => {
|
|
159
|
-
const tagName = element.tagName.toLowerCase()
|
|
160
|
-
|
|
161
|
-
if (tagName === 'select') {
|
|
162
|
-
const selectElement = element as HTMLSelectElement
|
|
163
|
-
for (let i = 0; i < selectElement.options.length; i++) {
|
|
164
|
-
const option = selectElement.options[i]
|
|
165
|
-
option.selected = option.defaultSelected
|
|
166
|
-
}
|
|
167
|
-
} else if (
|
|
168
|
-
(tagName === 'input' && (element.type === 'checkbox' || element.type === 'radio')) ||
|
|
169
|
-
(tagName !== 'input' && SchmancyFormV2.hasChecked(tagName))
|
|
170
|
-
) {
|
|
171
|
-
;(element as CheckableFormElement).checked = element.hasAttribute('checked')
|
|
172
|
-
} else if (
|
|
173
|
-
tagName === 'schmancy-input' ||
|
|
174
|
-
tagName === 'schmancy-rating' ||
|
|
175
|
-
tagName === 'schmancy-mask-input' ||
|
|
176
|
-
tagName === 'schmancy-date-time-input'
|
|
177
|
-
) {
|
|
178
|
-
element.value = element.getAttribute('value')
|
|
179
|
-
} else if (SchmancyFormV2.hasValue(tagName)) {
|
|
180
|
-
element.value = element.defaultValue
|
|
181
|
-
}
|
|
182
|
-
})
|
|
183
|
-
this.dispatchEvent(new CustomEvent('reset'))
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
private getFormElements(): FormElement[] {
|
|
187
|
-
const slot = this.shadowRoot?.querySelector('slot')
|
|
188
|
-
const assignedElements = slot?.assignedElements({ flatten: true })
|
|
189
|
-
const formElements: FormElement[] = []
|
|
190
|
-
|
|
191
|
-
assignedElements?.forEach((element: FormElement) => {
|
|
192
|
-
if (!element.disabled) {
|
|
193
|
-
formElements.push(element)
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
const children = Array.from(element.getElementsByTagName('*')).filter(
|
|
197
|
-
(childElement: FormElement) => !childElement.disabled,
|
|
198
|
-
)
|
|
199
|
-
formElements.push(...(children as FormElement[]))
|
|
200
|
-
})
|
|
201
|
-
|
|
202
|
-
return formElements
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
public getFormData() {
|
|
206
|
-
const formData = new FormData()
|
|
207
|
-
const formElements = this.getFormElements()
|
|
208
|
-
|
|
209
|
-
formElements.forEach(element => {
|
|
210
|
-
if (!element.name) return
|
|
211
|
-
|
|
212
|
-
const tagName = element.tagName.toLowerCase()
|
|
213
|
-
|
|
214
|
-
if (tagName === 'select') {
|
|
215
|
-
for (let i = 0; i < (element as HTMLSelectElement).options.length; i++) {
|
|
216
|
-
const option = (element as HTMLSelectElement).options[i]
|
|
217
|
-
if (option.selected) {
|
|
218
|
-
formData.append(element.name, option.value)
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
} else if (SchmancyFormV2.hasChecked(tagName) && (element as CheckableFormElement).checked) {
|
|
222
|
-
formData.append(element.name, element.value || 'on')
|
|
223
|
-
} else if (
|
|
224
|
-
SchmancyFormV2.hasValue(tagName) &&
|
|
225
|
-
(element as HTMLInputElement).type !== 'checkbox' &&
|
|
226
|
-
(element as HTMLInputElement).type !== 'radio' &&
|
|
227
|
-
(element as HTMLInputElement).type !== 'submit'
|
|
228
|
-
) {
|
|
229
|
-
formData.append(element.name, element.value || '')
|
|
230
|
-
}
|
|
231
|
-
})
|
|
232
|
-
|
|
233
|
-
return formData
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/** Checks for validity of the form. */
|
|
237
|
-
public reportValidity(): boolean {
|
|
238
|
-
const formElements = this.getFormElements()
|
|
239
|
-
return !formElements.some(
|
|
240
|
-
element =>
|
|
241
|
-
typeof (element as ValidatableFormElement).reportValidity === 'function' &&
|
|
242
|
-
(element as ValidatableFormElement).reportValidity() === false,
|
|
243
|
-
)
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
private handleSubmitRequest(event: MouseEvent | KeyboardEvent) {
|
|
247
|
-
const targetElement = event.target as HTMLElement
|
|
248
|
-
const tagName = targetElement.tagName.toLowerCase()
|
|
249
|
-
|
|
250
|
-
if (SchmancyFormV2.canSubmit(tagName)) {
|
|
251
|
-
this.submit()
|
|
252
|
-
} else if ((targetElement as HTMLButtonElement).type?.toLowerCase() === 'reset') {
|
|
253
|
-
this.reset()
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
return true
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
protected override render() {
|
|
260
|
-
return html`<slot></slot>`
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
declare global {
|
|
265
|
-
interface HTMLElementTagNameMap {
|
|
266
|
-
'sch-form': SchmancyFormV2
|
|
267
|
-
}
|
|
268
|
-
}
|
package/src/layout/v2/grid.ts
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { css, html } from 'lit'
|
|
2
|
-
import { customElement, property } from 'lit/decorators.js'
|
|
3
|
-
import Layout from '../layout'
|
|
4
|
-
|
|
5
|
-
@customElement('sch-grid')
|
|
6
|
-
export class SchmancyGridV2 extends Layout {
|
|
7
|
-
static styles = [
|
|
8
|
-
Layout.styles,
|
|
9
|
-
css`
|
|
10
|
-
:host {
|
|
11
|
-
display: block;
|
|
12
|
-
}
|
|
13
|
-
`,
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Display mode: 'grid' or 'inline-grid'.
|
|
18
|
-
*/
|
|
19
|
-
@property({ type: String, reflect: true })
|
|
20
|
-
display: 'grid' | 'inline-grid' = 'grid'
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Grid template columns.
|
|
24
|
-
* Examples: '1', '2', '3', 'none', 'subgrid', '[200px_minmax(900px,_1fr)_100px]'
|
|
25
|
-
*/
|
|
26
|
-
@property({ type: String, reflect: true })
|
|
27
|
-
columns: string = 'none'
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Grid template rows.
|
|
31
|
-
* Examples: '1', '2', '3', 'none', 'subgrid', '[200px_minmax(900px,_1fr)_100px]'
|
|
32
|
-
*/
|
|
33
|
-
@property({ type: String, reflect: true })
|
|
34
|
-
rows: string = 'none'
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Grid auto flow.
|
|
38
|
-
* Options: 'row', 'column', 'dense', 'row-dense', 'column-dense'
|
|
39
|
-
*/
|
|
40
|
-
@property({ type: String, reflect: true })
|
|
41
|
-
flow: 'row' | 'column' | 'dense' | 'row-dense' | 'column-dense' = 'row'
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Gap between grid items.
|
|
45
|
-
* Examples: '0', '1', '2', '4', '8', '16', '32', '64'
|
|
46
|
-
*/
|
|
47
|
-
@property({ type: String, reflect: true })
|
|
48
|
-
gap: string = '0'
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Gap between columns.
|
|
52
|
-
* Overrides the general gap if specified.
|
|
53
|
-
*/
|
|
54
|
-
@property({ type: String, reflect: true })
|
|
55
|
-
gapX?: string
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Gap between rows.
|
|
59
|
-
* Overrides the general gap if specified.
|
|
60
|
-
*/
|
|
61
|
-
@property({ type: String, reflect: true })
|
|
62
|
-
gapY?: string
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Responsive variants.
|
|
66
|
-
* Example: { sm: 'grid-cols-2', md: 'grid-cols-4' }
|
|
67
|
-
*/
|
|
68
|
-
@property({ type: Object })
|
|
69
|
-
responsive: { [key: string]: string } = {}
|
|
70
|
-
|
|
71
|
-
render() {
|
|
72
|
-
const classes = [
|
|
73
|
-
this.display === 'inline-grid' ? 'inline-grid' : 'grid',
|
|
74
|
-
this.columns !== 'none' ? `grid-cols-${this.columns}` : '',
|
|
75
|
-
this.rows !== 'none' ? `grid-rows-${this.rows}` : '',
|
|
76
|
-
`grid-flow-${this.flow}`,
|
|
77
|
-
this.gap ? `gap-${this.gap}` : '',
|
|
78
|
-
this.gapX ? `gap-x-${this.gapX}` : '',
|
|
79
|
-
this.gapY ? `gap-y-${this.gapY}` : '',
|
|
80
|
-
...Object.entries(this.responsive).map(([breakpoint, utility]) => `${breakpoint}:${utility}`),
|
|
81
|
-
]
|
|
82
|
-
.filter(Boolean)
|
|
83
|
-
.join(' ')
|
|
84
|
-
|
|
85
|
-
return html`<div class="${classes}"><slot></slot></div>`
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
declare global {
|
|
90
|
-
interface HTMLElementTagNameMap {
|
|
91
|
-
'sch-grid': SchmancyGridV2
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { TailwindElement } from '@mixins/index'
|
|
2
|
-
import { html } from 'lit'
|
|
3
|
-
import { customElement } from 'lit/decorators.js'
|
|
4
|
-
|
|
5
|
-
@customElement('schmancy-notification-outlet')
|
|
6
|
-
export class SchmancyNotificationOutlet extends TailwindElement() {
|
|
7
|
-
render() {
|
|
8
|
-
return html` <slot></slot> `
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
declare global {
|
|
13
|
-
interface HTMLElementTagNameMap {
|
|
14
|
-
'schmancy-notification-outlet': SchmancyNotificationOutlet
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
// src/store/immutable-helpers.ts
|
|
2
|
-
import { produce, Draft, castDraft, castImmutable, Immutable, enableMapSet } from 'immer'
|
|
3
|
-
enableMapSet()
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Create an immutable update for Maps
|
|
7
|
-
* @param map Original Map to update
|
|
8
|
-
* @param updater Function that can make "mutable" changes to the draft
|
|
9
|
-
* @returns A new Map with the changes applied
|
|
10
|
-
*/
|
|
11
|
-
export function updateMap<K, V>(map: Immutable<Map<K, V>>, updater: (draft: Draft<Map<K, V>>) => void): Map<K, V> {
|
|
12
|
-
return produce(map, updater) as unknown as Map<K, V>
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Create an immutable update for a specific item in a Map
|
|
17
|
-
* @param map Original Map to update
|
|
18
|
-
* @param key Key of the item to update
|
|
19
|
-
* @param updater Function that can make "mutable" changes to the item
|
|
20
|
-
* @returns A new Map with the item updated
|
|
21
|
-
*/
|
|
22
|
-
export function updateItem<K, V>(map: Immutable<Map<K, V>>, key: K, updater: (item: Draft<V>) => void): Map<K, V> {
|
|
23
|
-
return produce(map, draft => {
|
|
24
|
-
// Cast the key to the appropriate type for draft.get
|
|
25
|
-
const draftKey = key as unknown as Draft<Immutable<K>>
|
|
26
|
-
const item = draft.get(draftKey)
|
|
27
|
-
if (item !== undefined) {
|
|
28
|
-
// Cast the item to the expected type for the updater
|
|
29
|
-
updater(item as unknown as Draft<V>)
|
|
30
|
-
}
|
|
31
|
-
}) as unknown as Map<K, V>
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Immutably filter a Map
|
|
36
|
-
* @param map Original Map to filter
|
|
37
|
-
* @param predicate Function that returns true for items to keep
|
|
38
|
-
* @returns A new Map with only the matching items
|
|
39
|
-
*/
|
|
40
|
-
export function filterMap<K, V>(
|
|
41
|
-
map: Immutable<Map<K, V>>,
|
|
42
|
-
predicate: (value: Immutable<V>, key: Immutable<K>) => boolean,
|
|
43
|
-
): Map<K, V> {
|
|
44
|
-
return produce(map, draft => {
|
|
45
|
-
for (const [key, value] of draft.entries()) {
|
|
46
|
-
if (!predicate(value as Immutable<V>, key as unknown as Immutable<K>)) {
|
|
47
|
-
draft.delete(key)
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}) as unknown as Map<K, V>
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Create an immutable update for an object
|
|
55
|
-
* @param obj Original object to update
|
|
56
|
-
* @param updater Function that can make "mutable" changes to the draft
|
|
57
|
-
* @returns A new object with the changes applied
|
|
58
|
-
*/
|
|
59
|
-
export function updateObject<T extends Record<string, any>>(obj: Immutable<T>, updater: (draft: Draft<T>) => void): T {
|
|
60
|
-
return produce(obj, updater) as unknown as T
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Merge objects immutably
|
|
65
|
-
* @param target Original object
|
|
66
|
-
* @param source Source object to merge in
|
|
67
|
-
* @returns A new object with properties merged
|
|
68
|
-
*/
|
|
69
|
-
export function mergeObjects<T extends Record<string, any>>(target: Immutable<T>, source: Partial<T>): T {
|
|
70
|
-
return produce(target, draft => {
|
|
71
|
-
Object.assign(draft, castDraft(source) as Draft<Partial<T>>)
|
|
72
|
-
}) as unknown as T
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Type guard to check if an object is a Map
|
|
77
|
-
*/
|
|
78
|
-
export function isMap<K = unknown, V = unknown>(value: unknown): value is Map<K, V> {
|
|
79
|
-
return value instanceof Map
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Creates a readonly version of a type
|
|
84
|
-
* This is a utility that uses Immer's Immutable type to make a type readonly
|
|
85
|
-
* @param value The value to cast as immutable
|
|
86
|
-
* @returns The same value but typed as immutable
|
|
87
|
-
*/
|
|
88
|
-
export function asReadonly<T>(value: T): Immutable<T> {
|
|
89
|
-
return castImmutable(value)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Makes an object or Map deeply immutable at runtime by freezing
|
|
94
|
-
* @param value The value to freeze
|
|
95
|
-
* @returns The frozen value
|
|
96
|
-
*/
|
|
97
|
-
export function freeze<T>(value: T): Immutable<T> {
|
|
98
|
-
return produce(value, () => {}) as Immutable<T>
|
|
99
|
-
}
|
package/src/tooltip/tooltip.ts
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { TailwindElement } from '@mixins/tailwind.mixin'
|
|
2
|
-
import { html, css } from 'lit'
|
|
3
|
-
import { customElement, property, state } from 'lit/decorators.js'
|
|
4
|
-
import { fromEvent, merge, takeUntil } from 'rxjs'
|
|
5
|
-
import { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* A tooltip component that displays a text tooltip when hovering over content.
|
|
9
|
-
* Addresses shadow DOM limitations by teleporting the tooltip to document.body.
|
|
10
|
-
*
|
|
11
|
-
* @element schmancy-tooltip
|
|
12
|
-
*/
|
|
13
|
-
@customElement('schmancy-tooltip')
|
|
14
|
-
export class SchmancyTooltip extends TailwindElement(css`
|
|
15
|
-
:host {
|
|
16
|
-
display: inline-block;
|
|
17
|
-
position: relative;
|
|
18
|
-
}
|
|
19
|
-
`) {
|
|
20
|
-
@property({ type: String })
|
|
21
|
-
text = ''
|
|
22
|
-
|
|
23
|
-
@property({ type: String })
|
|
24
|
-
position: 'top' | 'right' | 'bottom' | 'left' = 'top'
|
|
25
|
-
|
|
26
|
-
@property({ type: Number })
|
|
27
|
-
delay = 50
|
|
28
|
-
|
|
29
|
-
@property({ type: Boolean })
|
|
30
|
-
disabled = false
|
|
31
|
-
|
|
32
|
-
@state() private visible = false
|
|
33
|
-
|
|
34
|
-
private triggerElement: HTMLElement | null = null
|
|
35
|
-
private tooltipElement: HTMLElement | null = null
|
|
36
|
-
private cleanup: (() => void) | undefined
|
|
37
|
-
private showTimeoutId: number | undefined
|
|
38
|
-
|
|
39
|
-
connectedCallback() {
|
|
40
|
-
super.connectedCallback()
|
|
41
|
-
|
|
42
|
-
// Create tooltip element once
|
|
43
|
-
if (!this.tooltipElement) {
|
|
44
|
-
this.createTooltipElement()
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
firstUpdated() {
|
|
49
|
-
// Wait for slotted elements to be available
|
|
50
|
-
this.updateComplete.then(() => {
|
|
51
|
-
// Get the first slotted element as trigger
|
|
52
|
-
const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement
|
|
53
|
-
const slottedElements = slot?.assignedElements() || []
|
|
54
|
-
|
|
55
|
-
if (slottedElements.length > 0) {
|
|
56
|
-
this.triggerElement = slottedElements[0] as HTMLElement
|
|
57
|
-
this.setupEvents()
|
|
58
|
-
}
|
|
59
|
-
})
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
private createTooltipElement() {
|
|
63
|
-
// Create the tooltip element in document.body
|
|
64
|
-
this.tooltipElement = document.createElement('div')
|
|
65
|
-
this.tooltipElement.className = 'schmancy-tooltip'
|
|
66
|
-
|
|
67
|
-
// Apply styles
|
|
68
|
-
Object.assign(this.tooltipElement.style, {
|
|
69
|
-
position: 'absolute',
|
|
70
|
-
zIndex: '10000',
|
|
71
|
-
backgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',
|
|
72
|
-
color: 'var(--schmancy-sys-color-surface-on, white)',
|
|
73
|
-
padding: '8px 12px',
|
|
74
|
-
borderRadius: '4px',
|
|
75
|
-
fontSize: '14px',
|
|
76
|
-
fontWeight: 'normal',
|
|
77
|
-
maxWidth: '300px',
|
|
78
|
-
pointerEvents: 'none',
|
|
79
|
-
opacity: '0',
|
|
80
|
-
transition: 'opacity 150ms ease',
|
|
81
|
-
boxShadow: 'var(--schmancy-sys-elevation-2)',
|
|
82
|
-
textAlign: 'center',
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
// Set ARIA attributes
|
|
86
|
-
this.tooltipElement.setAttribute('role', 'tooltip')
|
|
87
|
-
|
|
88
|
-
// Add to document
|
|
89
|
-
document.body.appendChild(this.tooltipElement)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
private setupEvents() {
|
|
93
|
-
if (!this.triggerElement || this.disabled) return
|
|
94
|
-
|
|
95
|
-
// Generate unique ID for ARIA
|
|
96
|
-
const tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`
|
|
97
|
-
if (this.tooltipElement) {
|
|
98
|
-
this.tooltipElement.id = tooltipId
|
|
99
|
-
this.triggerElement.setAttribute('aria-describedby', tooltipId)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Setup event streams using RxJS
|
|
103
|
-
const mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')
|
|
104
|
-
const focus$ = fromEvent(this.triggerElement, 'focus')
|
|
105
|
-
const mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')
|
|
106
|
-
const blur$ = fromEvent(this.triggerElement, 'blur')
|
|
107
|
-
|
|
108
|
-
// Global escape key handler
|
|
109
|
-
fromEvent<KeyboardEvent>(document, 'keydown')
|
|
110
|
-
.pipe(takeUntil(this.disconnecting))
|
|
111
|
-
.subscribe(event => {
|
|
112
|
-
if (event.key === 'Escape' && this.visible) {
|
|
113
|
-
this.hideTooltip()
|
|
114
|
-
}
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
// Handle showing
|
|
118
|
-
merge(mouseEnter$, focus$)
|
|
119
|
-
.pipe(takeUntil(this.disconnecting))
|
|
120
|
-
.subscribe(() => {
|
|
121
|
-
this.showTooltip()
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
// Handle hiding
|
|
125
|
-
merge(mouseLeave$, blur$)
|
|
126
|
-
.pipe(takeUntil(this.disconnecting))
|
|
127
|
-
.subscribe(() => {
|
|
128
|
-
this.hideTooltip()
|
|
129
|
-
})
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
disconnectedCallback() {
|
|
133
|
-
// Clean up
|
|
134
|
-
if (this.tooltipElement && document.body.contains(this.tooltipElement)) {
|
|
135
|
-
document.body.removeChild(this.tooltipElement)
|
|
136
|
-
}
|
|
137
|
-
this.cleanup?.()
|
|
138
|
-
clearTimeout(this.showTimeoutId)
|
|
139
|
-
super.disconnectedCallback()
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
private showTooltip() {
|
|
143
|
-
if (this.disabled || !this.tooltipElement || !this.triggerElement) return
|
|
144
|
-
|
|
145
|
-
// Clear any existing timeout
|
|
146
|
-
clearTimeout(this.showTimeoutId)
|
|
147
|
-
|
|
148
|
-
// Set timeout for showing
|
|
149
|
-
this.showTimeoutId = window.setTimeout(() => {
|
|
150
|
-
// Update content
|
|
151
|
-
if (this.tooltipElement) {
|
|
152
|
-
this.tooltipElement.textContent = this.text
|
|
153
|
-
|
|
154
|
-
// Make visible
|
|
155
|
-
this.visible = true
|
|
156
|
-
this.tooltipElement.style.opacity = '1'
|
|
157
|
-
|
|
158
|
-
// Initialize positioning
|
|
159
|
-
this.initializePositioning()
|
|
160
|
-
}
|
|
161
|
-
}, this.delay)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
private hideTooltip() {
|
|
165
|
-
// Clear showing timeout
|
|
166
|
-
clearTimeout(this.showTimeoutId)
|
|
167
|
-
|
|
168
|
-
// Hide tooltip
|
|
169
|
-
if (this.tooltipElement) {
|
|
170
|
-
this.visible = false
|
|
171
|
-
this.tooltipElement.style.opacity = '0'
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Clean up positioning
|
|
175
|
-
if (this.cleanup) {
|
|
176
|
-
this.cleanup()
|
|
177
|
-
this.cleanup = undefined
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
private initializePositioning() {
|
|
182
|
-
if (!this.triggerElement || !this.tooltipElement) return
|
|
183
|
-
|
|
184
|
-
// Clean up existing positioning
|
|
185
|
-
if (this.cleanup) {
|
|
186
|
-
this.cleanup()
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// Set up auto-updating position
|
|
190
|
-
this.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {
|
|
191
|
-
// Compute position
|
|
192
|
-
computePosition(this.triggerElement!, this.tooltipElement!, {
|
|
193
|
-
placement: this.position as Placement,
|
|
194
|
-
middleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],
|
|
195
|
-
}).then(({ x, y }) => {
|
|
196
|
-
// Apply position
|
|
197
|
-
if (this.tooltipElement) {
|
|
198
|
-
Object.assign(this.tooltipElement.style, {
|
|
199
|
-
left: `${x}px`,
|
|
200
|
-
top: `${y}px`,
|
|
201
|
-
})
|
|
202
|
-
}
|
|
203
|
-
})
|
|
204
|
-
})
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
render() {
|
|
208
|
-
return html`<slot></slot>`
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
declare global {
|
|
213
|
-
interface HTMLElementTagNameMap {
|
|
214
|
-
'schmancy-tooltip': SchmancyTooltip
|
|
215
|
-
}
|
|
216
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|