@mhmo91/schmancy 0.2.113 → 0.2.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Bold.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Light.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Medium.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Regular.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Thin.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-UBold.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-ULight.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Light.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Regular.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Text-Regular.woff2 +0 -0
- package/dist/{animated-text-B576YswO.cjs → animated-text-BJ8e_TdT.cjs} +2 -2
- package/dist/{animated-text-B576YswO.cjs.map → animated-text-BJ8e_TdT.cjs.map} +1 -1
- package/dist/{animated-text-BuRbVM-X.js → animated-text-C-LJVhLw.js} +3 -3
- package/dist/{animated-text-BuRbVM-X.js.map → animated-text-C-LJVhLw.js.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-Bo5aB8BH.js → area.component-6ebQ-3Kb.js} +10 -10
- package/dist/{area.component-Bo5aB8BH.js.map → area.component-6ebQ-3Kb.js.map} +1 -1
- package/dist/{area.component-BFj0Dvfb.cjs → area.component-Bf5USqvC.cjs} +2 -2
- package/dist/{area.component-BFj0Dvfb.cjs.map → area.component-Bf5USqvC.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/autocomplete-CM_YM2UF.cjs +57 -0
- package/dist/autocomplete-CM_YM2UF.cjs.map +1 -0
- package/dist/autocomplete-NTEOksdT.js +295 -0
- package/dist/autocomplete-NTEOksdT.js.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-DQYRlKod.js → checkbox-1tBSHNXu.js} +2 -2
- package/dist/{checkbox-DQYRlKod.js.map → checkbox-1tBSHNXu.js.map} +1 -1
- package/dist/{checkbox-FM06WS9G.cjs → checkbox-jcFvgv_5.cjs} +2 -2
- package/dist/{checkbox-FM06WS9G.cjs.map → checkbox-jcFvgv_5.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-Ctk7cxHI.js → chips-CdcS0QXD.js} +3 -3
- package/dist/{chips-Ctk7cxHI.js.map → chips-CdcS0QXD.js.map} +1 -1
- package/dist/{chips-CJZbtp-O.cjs → chips-K7p1j3Uk.cjs} +2 -2
- package/dist/{chips-CJZbtp-O.cjs.map → chips-K7p1j3Uk.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/color-D8r6dpWm.cjs +2 -0
- package/dist/color-D8r6dpWm.cjs.map +1 -0
- package/dist/color-DrgmL7QT.js +19 -0
- package/dist/color-DrgmL7QT.js.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-CZiZR3OZ.js → date-range-BSBJICYH.js} +3 -3
- package/dist/{date-range-CZiZR3OZ.js.map → date-range-BSBJICYH.js.map} +1 -1
- package/dist/{date-range-FxAO_oqk.cjs → date-range-BmVLxD4w.cjs} +2 -2
- package/dist/{date-range-FxAO_oqk.cjs.map → date-range-BmVLxD4w.cjs.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-NkgyZVcO.cjs → delay-BC-GT6yV.cjs} +2 -2
- package/dist/{delay-NkgyZVcO.cjs.map → delay-BC-GT6yV.cjs.map} +1 -1
- package/dist/{delay-gZOjfjX_.js → delay-CgOaVklg.js} +2 -2
- package/dist/{delay-gZOjfjX_.js.map → delay-CgOaVklg.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +5 -4
- package/dist/directives.js.map +1 -1
- package/dist/{divider-nNk0E_jZ.cjs → divider-Dw4upy-U.cjs} +2 -2
- package/dist/{divider-nNk0E_jZ.cjs.map → divider-Dw4upy-U.cjs.map} +1 -1
- package/dist/{divider-B-JF8gre.js → divider-lRP5ZCxr.js} +3 -3
- package/dist/{divider-B-JF8gre.js.map → divider-lRP5ZCxr.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/extra.cjs +2 -0
- package/dist/extra.cjs.map +1 -0
- package/dist/extra.js +6 -0
- package/dist/extra.js.map +1 -0
- package/dist/{flex-CieqpOUS.js → flex-BkuM0UK7.js} +2 -2
- package/dist/{flex-CieqpOUS.js.map → flex-BkuM0UK7.js.map} +1 -1
- package/dist/{flex-INEcbqBe.cjs → flex-X4APHjaR.cjs} +2 -2
- package/dist/{flex-INEcbqBe.cjs.map → flex-X4APHjaR.cjs.map} +1 -1
- package/dist/{form-lcamXnkd.js → form-Ci8uCvU-.js} +2 -2
- package/dist/{form-lcamXnkd.js.map → form-Ci8uCvU-.js.map} +1 -1
- package/dist/{form-CKMp4UzU.cjs → form-Ct_Qt0rD.cjs} +2 -2
- package/dist/{form-CKMp4UzU.cjs.map → form-Ct_Qt0rD.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-BZqH7sp7.cjs → icon-BPsYPc8h.cjs} +2 -2
- package/dist/{icon-BZqH7sp7.cjs.map → icon-BPsYPc8h.cjs.map} +1 -1
- package/dist/{icon-CJrmUGTm.js → icon-DOJOFG3x.js} +3 -3
- package/dist/{icon-CJrmUGTm.js.map → icon-DOJOFG3x.js.map} +1 -1
- package/dist/{icon-button-BNn0qRfC.js → icon-button-BPa29txC.js} +3 -3
- package/dist/{icon-button-BNn0qRfC.js.map → icon-button-BPa29txC.js.map} +1 -1
- package/dist/{icon-button-nMHz4MDw.cjs → icon-button-cirbgD54.cjs} +2 -2
- package/dist/{icon-button-nMHz4MDw.cjs.map → icon-button-cirbgD54.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +84 -78
- package/dist/index.js.map +1 -1
- package/dist/input-B4miYmDK.cjs +98 -0
- package/dist/input-B4miYmDK.cjs.map +1 -0
- package/dist/input-CuvPPYVq.js +136 -0
- package/dist/input-CuvPPYVq.js.map +1 -0
- package/dist/input-DTJsOi9t.js +205 -0
- package/dist/input-DTJsOi9t.js.map +1 -0
- package/dist/input-DibJxeWY.cjs +51 -0
- package/dist/input-DibJxeWY.cjs.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-CjrF4M5H.js → list-CWbygRrR.js} +2 -2
- package/dist/{list-CjrF4M5H.js.map → list-CWbygRrR.js.map} +1 -1
- package/dist/{list-D4y-Mkap.cjs → list-QiglVzPK.cjs} +2 -2
- package/dist/{list-D4y-Mkap.cjs.map → list-QiglVzPK.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-djlKJ0lX.cjs → litElement.mixin-D_oDZMIO.cjs} +2 -2
- package/dist/{litElement.mixin-djlKJ0lX.cjs.map → litElement.mixin-D_oDZMIO.cjs.map} +1 -1
- package/dist/{litElement.mixin-NzkxESus.js → litElement.mixin-MZntPOCu.js} +2 -2
- package/dist/{litElement.mixin-NzkxESus.js.map → litElement.mixin-MZntPOCu.js.map} +1 -1
- package/dist/{menu-DAtFS31a.cjs → menu-Bn4JuaBS.cjs} +2 -2
- package/dist/{menu-DAtFS31a.cjs.map → menu-Bn4JuaBS.cjs.map} +1 -1
- package/dist/{menu-Cb5kUAvU.js → menu-iSx7aWwL.js} +3 -3
- package/dist/{menu-Cb5kUAvU.js.map → menu-iSx7aWwL.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins/formField.mixin.ts +223 -0
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/option-DBfFfXNm.cjs +18 -0
- package/dist/option-DBfFfXNm.cjs.map +1 -0
- package/dist/option-DMwxI7ML.js +75 -0
- package/dist/option-DMwxI7ML.js.map +1 -0
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{outlet-DofHDlGH.cjs → outlet-CEaS1zUl.cjs} +2 -2
- package/dist/{outlet-DofHDlGH.cjs.map → outlet-CEaS1zUl.cjs.map} +1 -1
- package/dist/{outlet-6HZp4fo1.js → outlet-KhTjvKCU.js} +2 -2
- package/dist/{outlet-6HZp4fo1.js.map → outlet-KhTjvKCU.js.map} +1 -1
- package/dist/payment-card-form-CVZyDkcJ.cjs +74 -0
- package/dist/{payment-card-form-Bi3yNg4b.cjs.map → payment-card-form-CVZyDkcJ.cjs.map} +1 -1
- package/dist/{payment-card-form-C8FxRlh4.js → payment-card-form-DK86Lcng.js} +183 -134
- package/dist/{payment-card-form-C8FxRlh4.js.map → payment-card-form-DK86Lcng.js.map} +1 -1
- package/dist/{radio-group-A5QxSGOr.cjs → radio-group-CxJXNx54.cjs} +2 -2
- package/dist/{radio-group-A5QxSGOr.cjs.map → radio-group-CxJXNx54.cjs.map} +1 -1
- package/dist/{radio-group-BapuNl8y.js → radio-group-DNmZuvSj.js} +2 -2
- package/dist/{radio-group-BapuNl8y.js.map → radio-group-DNmZuvSj.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/ripple-3indJ14o.js +64 -0
- package/dist/ripple-3indJ14o.js.map +1 -0
- package/dist/ripple-B_wT0zgD.cjs +16 -0
- package/dist/ripple-B_wT0zgD.cjs.map +1 -0
- package/dist/{select-8AjN6LbM.js → select-DRi9CB_N.js} +64 -39
- package/dist/select-DRi9CB_N.js.map +1 -0
- package/dist/select-SQOIioEy.cjs +56 -0
- package/dist/select-SQOIioEy.cjs.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-xR13xD2A.js → sheet-BJGyAQko.js} +6 -6
- package/dist/{sheet-xR13xD2A.js.map → sheet-BJGyAQko.js.map} +1 -1
- package/dist/{sheet-CQFdHSwJ.cjs → sheet-QIcFyBDD.cjs} +2 -2
- package/dist/{sheet-CQFdHSwJ.cjs.map → sheet-QIcFyBDD.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-BakU-Bdw.js → slider-A_LoTZ1P.js} +3 -3
- package/dist/{slider-BakU-Bdw.js.map → slider-A_LoTZ1P.js.map} +1 -1
- package/dist/{slider-B4OCBlQg.cjs → slider-XRH0sXZN.cjs} +2 -2
- package/dist/{slider-B4OCBlQg.cjs.map → slider-XRH0sXZN.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-C3VJtLgk.cjs → spinner-CSsb6sKK.cjs} +4 -4
- package/dist/{spinner-C3VJtLgk.cjs.map → spinner-CSsb6sKK.cjs.map} +1 -1
- package/dist/{spinner-BDx3SZsl.js → spinner-D0l2eAK5.js} +12 -11
- package/dist/{spinner-BDx3SZsl.js.map → spinner-D0l2eAK5.js.map} +1 -1
- package/dist/{surface-YiaJJQ5m.js → surface-D5FgxeIB.js} +2 -2
- package/dist/{surface-YiaJJQ5m.js.map → surface-D5FgxeIB.js.map} +1 -1
- package/dist/{surface-kjOrb8TO.cjs → surface-DEAdaZUh.cjs} +2 -2
- package/dist/{surface-kjOrb8TO.cjs.map → surface-DEAdaZUh.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-BZV2dBD5.cjs → table-Cygw_pIl.cjs} +2 -2
- package/dist/{table-BZV2dBD5.cjs.map → table-Cygw_pIl.cjs.map} +1 -1
- package/dist/{table-BguYeeBH.js → table-DC86Vj6Z.js} +2 -2
- package/dist/{table-BguYeeBH.js.map → table-DC86Vj6Z.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-group-H3C6ZnQn.js → tabs-group-7bz0I9uV.js} +2 -2
- package/dist/{tabs-group-H3C6ZnQn.js.map → tabs-group-7bz0I9uV.js.map} +1 -1
- package/dist/{tabs-group-BZFBZ1_G.cjs → tabs-group-BQomo5q3.cjs} +2 -2
- package/dist/{tabs-group-BZFBZ1_G.cjs.map → tabs-group-BQomo5q3.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-B-T2bBPl.js +43 -0
- package/dist/{tailwind.mixin-DklgfhB4.js.map → tailwind.mixin-B-T2bBPl.js.map} +1 -1
- package/dist/tailwind.mixin-CduPdozY.cjs +2 -0
- package/dist/{tailwind.mixin-CBhPue3q.cjs.map → tailwind.mixin-CduPdozY.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/{teleport.component-CF-USarR.cjs → teleport.component-BMLwCM8y.cjs} +19 -19
- package/dist/{teleport.component-CF-USarR.cjs.map → teleport.component-BMLwCM8y.cjs.map} +1 -1
- package/dist/{teleport.component-D8DXijGl.js → teleport.component-gFIqLOrA.js} +43 -40
- package/dist/{teleport.component-D8DXijGl.js.map → teleport.component-gFIqLOrA.js.map} +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-D7bTMerW.js → textarea-1aeql05N.js} +9 -8
- package/dist/{textarea-D7bTMerW.js.map → textarea-1aeql05N.js.map} +1 -1
- package/dist/textarea-CixoZTFB.cjs +42 -0
- package/dist/{textarea-BCWPb0Sn.cjs.map → textarea-CixoZTFB.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-DHuXg7vh.cjs → theme-button-DocSoRxe.cjs} +2 -2
- package/dist/{theme-button-DHuXg7vh.cjs.map → theme-button-DocSoRxe.cjs.map} +1 -1
- package/dist/{theme-button-CP2_aq__.js → theme-button-MRgILdtC.js} +2 -2
- package/dist/{theme-button-CP2_aq__.js.map → theme-button-MRgILdtC.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.component-BtBosXb1.js → theme.component-BFkhNT0D.js} +47 -47
- package/dist/{theme.component-BtBosXb1.js.map → theme.component-BFkhNT0D.js.map} +1 -1
- package/dist/{theme.component-Ly2C_fQ8.cjs → theme.component-BgOdO6iM.cjs} +2 -2
- package/dist/{theme.component-Ly2C_fQ8.cjs.map → theme.component-BgOdO6iM.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/timezone-BW6MC511.js +119 -0
- package/dist/timezone-BW6MC511.js.map +1 -0
- package/dist/timezone-CvOrPfno.cjs +34 -0
- package/dist/timezone-CvOrPfno.cjs.map +1 -0
- package/dist/{tree-CG9B3uQP.cjs → tree-DysB6Y8C.cjs} +2 -2
- package/dist/{tree-CG9B3uQP.cjs.map → tree-DysB6Y8C.cjs.map} +1 -1
- package/dist/{tree-Y2B7yK7L.js → tree-PSCsuzDT.js} +2 -2
- package/dist/{tree-Y2B7yK7L.js.map → tree-PSCsuzDT.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-CzV1O28F.cjs → typewriter-C8pWgRuU.cjs} +2 -2
- package/dist/{typewriter-CzV1O28F.cjs.map → typewriter-C8pWgRuU.cjs.map} +1 -1
- package/dist/{typewriter-bnkFoDFz.js → typewriter-DmzUuxvZ.js} +14 -14
- package/dist/{typewriter-bnkFoDFz.js.map → typewriter-DmzUuxvZ.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-D-a-z23R.cjs → typography-BfjWKELJ.cjs} +2 -2
- package/dist/{typography-D-a-z23R.cjs.map → typography-BfjWKELJ.cjs.map} +1 -1
- package/dist/{typography-CSQByhJF.js → typography-D486o2A3.js} +2 -2
- package/dist/{typography-CSQByhJF.js.map → typography-D486o2A3.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/v2.cjs +2 -0
- package/dist/v2.cjs.map +1 -0
- package/dist/v2.js +5 -0
- package/dist/v2.js.map +1 -0
- package/package.json +3 -4
- package/types/mixins/formField.mixin.d.ts +48 -0
- package/types/src/autocomplete/autocomplete.d.ts +17 -7
- package/types/src/components/form-elements/payment-card-form.d.ts +57 -4
- package/types/src/extra/countries/countries.d.ts +26 -0
- package/types/src/extra/countries/countries.data.d.ts +5 -0
- package/types/src/extra/countries/index.d.ts +2 -0
- package/types/src/extra/index.d.ts +2 -0
- package/types/src/extra/timezone/index.d.ts +2 -0
- package/types/src/extra/timezone/timezone.d.ts +26 -0
- package/types/src/extra/timezone/timezones.data.d.ts +7 -0
- package/types/src/index.d.ts +2 -1
- package/types/src/option/option.d.ts +4 -0
- package/types/src/select/select.d.ts +8 -1
- package/types/src/utils/search.d.ts +10 -0
- package/types/src/v2/form.d.ts +51 -0
- package/types/src/v2/index.d.ts +2 -0
- package/types/src/v2/input.d.ts +71 -0
- package/dist/autocomplete-Du2Jw0a2.cjs +0 -49
- package/dist/autocomplete-Du2Jw0a2.cjs.map +0 -1
- package/dist/autocomplete-NL-c1Qp-.js +0 -264
- package/dist/autocomplete-NL-c1Qp-.js.map +0 -1
- package/dist/data.cjs +0 -2
- package/dist/data.cjs.map +0 -1
- package/dist/data.js +0 -2
- package/dist/data.js.map +0 -1
- package/dist/input-CszLZ81k.cjs +0 -51
- package/dist/input-CszLZ81k.cjs.map +0 -1
- package/dist/input-CwWLOBMF.js +0 -135
- package/dist/input-CwWLOBMF.js.map +0 -1
- package/dist/option-0le6-QeS.cjs +0 -18
- package/dist/option-0le6-QeS.cjs.map +0 -1
- package/dist/option-_1gW48HB.js +0 -49
- package/dist/option-_1gW48HB.js.map +0 -1
- package/dist/payment-card-form-Bi3yNg4b.cjs +0 -48
- package/dist/ripple-BumgqsDT.js +0 -78
- package/dist/ripple-BumgqsDT.js.map +0 -1
- package/dist/ripple-C2BHbhcS.cjs +0 -16
- package/dist/ripple-C2BHbhcS.cjs.map +0 -1
- package/dist/select-8AjN6LbM.js.map +0 -1
- package/dist/select-BdU6KcPX.cjs +0 -54
- package/dist/select-BdU6KcPX.cjs.map +0 -1
- package/dist/tailwind.mixin-CBhPue3q.cjs +0 -2
- package/dist/tailwind.mixin-DklgfhB4.js +0 -43
- package/dist/textarea-BCWPb0Sn.cjs +0 -42
|
@@ -2,18 +2,25 @@ export type SchmancyAutocompleteChangeEvent = CustomEvent<{
|
|
|
2
2
|
value: string | string[];
|
|
3
3
|
}>;
|
|
4
4
|
declare const SchmancyAutocomplete_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
5
|
+
/**
|
|
6
|
+
* The SchmancyAutocomplete component provides an accessible autocomplete field with keyboard navigation.
|
|
7
|
+
* @element schmancy-autocomplete
|
|
8
|
+
* @fires change - Emitted when a selection is made
|
|
9
|
+
* @slot - Default slot for schmancy-option elements
|
|
10
|
+
* @slot trigger - Optional slot to override the default input
|
|
11
|
+
*/
|
|
5
12
|
export default class SchmancyAutocomplete extends SchmancyAutocomplete_base {
|
|
6
13
|
required: boolean;
|
|
7
14
|
placeholder: string;
|
|
8
15
|
value: string;
|
|
9
16
|
label: string;
|
|
10
|
-
/**
|
|
11
|
-
* ⚠️ If you still want an explicit fallback for maximum dropdown height,
|
|
12
|
-
* you can keep this, but the `size()` middleware will already set a
|
|
13
|
-
* dynamic max-height based on viewport space.
|
|
14
|
-
*/
|
|
15
17
|
maxHeight: string;
|
|
16
18
|
multi: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Optional description for the autocomplete to improve accessibility.
|
|
21
|
+
* Will be associated with the input via aria-describedby.
|
|
22
|
+
*/
|
|
23
|
+
description: string;
|
|
17
24
|
/** Direct reference to the <input> inside <schmancy-input> */
|
|
18
25
|
inputRef: import("lit-html/directives/ref").Ref<HTMLInputElement>;
|
|
19
26
|
private optionsContainer;
|
|
@@ -21,13 +28,15 @@ export default class SchmancyAutocomplete extends SchmancyAutocomplete_base {
|
|
|
21
28
|
private input;
|
|
22
29
|
private options;
|
|
23
30
|
private readonly searchTerm$;
|
|
31
|
+
private isOpen;
|
|
24
32
|
private startY;
|
|
33
|
+
private statusMessage;
|
|
25
34
|
connectedCallback(): void;
|
|
26
35
|
firstUpdated(): void;
|
|
27
36
|
protected updated(changedProps: Map<string | number | symbol, unknown>): void;
|
|
28
37
|
/**
|
|
29
38
|
* When the <slot> changes (i.e. options are added/removed), update the following:
|
|
30
|
-
* 1. Show or hide the
|
|
39
|
+
* 1. Show or hide the "No results found" option.
|
|
31
40
|
* 2. Sync the selection state.
|
|
32
41
|
* 3. Setup accessibility attributes on the options.
|
|
33
42
|
*/
|
|
@@ -59,10 +68,11 @@ export default class SchmancyAutocomplete extends SchmancyAutocomplete_base {
|
|
|
59
68
|
* – When open, ArrowDown/ArrowUp move focus between options (which must have role="option").
|
|
60
69
|
* – Enter or Space selects the active option.
|
|
61
70
|
* – Escape (or Tab) hides the dropdown.
|
|
71
|
+
* - Home/End to navigate to first/last option
|
|
62
72
|
*/
|
|
63
73
|
private handleKeyDown;
|
|
64
74
|
/**
|
|
65
|
-
* Helper to focus an option by index and update the combobox
|
|
75
|
+
* Helper to focus an option by index and update the combobox's aria-activedescendant.
|
|
66
76
|
*/
|
|
67
77
|
private focusOption;
|
|
68
78
|
render(): import("lit-html").TemplateResult<1>;
|
|
@@ -1,29 +1,82 @@
|
|
|
1
1
|
import SchmancyForm from '@schmancy/form/form';
|
|
2
2
|
import SchmancyInput from '@schmancy/input/input';
|
|
3
3
|
declare const SchmancyPaymentCardForm_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
4
|
+
/**
|
|
5
|
+
* @element schmancy-payment-card-form
|
|
6
|
+
* A mobile-friendly payment card form component that provides real-time validation
|
|
7
|
+
* and formatting for credit card information.
|
|
8
|
+
*
|
|
9
|
+
* @fires change - Fires when any field in the form changes
|
|
10
|
+
* @slot - Default slot for any additional content
|
|
11
|
+
*/
|
|
4
12
|
export declare class SchmancyPaymentCardForm extends SchmancyPaymentCardForm_base {
|
|
13
|
+
/**
|
|
14
|
+
* The form data containing all payment card information
|
|
15
|
+
*/
|
|
5
16
|
value: {
|
|
6
17
|
cardName: string;
|
|
7
18
|
cardNumber: string;
|
|
8
19
|
expirationDate: string;
|
|
9
20
|
cvv: string;
|
|
10
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* The detected card type (visa, mastercard, amex, etc.)
|
|
24
|
+
* This is determined automatically by the Cleave.js library
|
|
25
|
+
*/
|
|
26
|
+
cardType: string;
|
|
27
|
+
/**
|
|
28
|
+
* Individual field values tracked with state properties for reactivity
|
|
29
|
+
*/
|
|
11
30
|
cardName: string | undefined;
|
|
12
31
|
cardNumber: string | undefined;
|
|
13
32
|
expirationDate: string | undefined;
|
|
14
33
|
cvv: string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Field validity states for enhanced validation feedback
|
|
36
|
+
*/
|
|
37
|
+
isCardNameValid: boolean;
|
|
38
|
+
isCardNumberValid: boolean;
|
|
39
|
+
isExpirationDateValid: boolean;
|
|
40
|
+
isCvvValid: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Query selectors for the form elements
|
|
43
|
+
*/
|
|
15
44
|
cardNumberInput: SchmancyInput;
|
|
16
45
|
expirationDateInput: SchmancyInput;
|
|
17
46
|
cvvInput: SchmancyInput;
|
|
18
47
|
cardNameInput: SchmancyInput;
|
|
19
48
|
form: SchmancyForm;
|
|
49
|
+
/**
|
|
50
|
+
* When the component is first updated, initialize the Cleave.js formatters
|
|
51
|
+
* for the credit card fields with appropriate validations
|
|
52
|
+
*/
|
|
20
53
|
firstUpdated(): void;
|
|
21
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Checks for validity of the entire form
|
|
56
|
+
* @returns {boolean} True if the form is valid
|
|
57
|
+
*/
|
|
22
58
|
reportValidity(): boolean;
|
|
23
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Checks for validity of the form
|
|
61
|
+
* @returns {boolean} True if the form is valid
|
|
62
|
+
*/
|
|
24
63
|
checkValidity(): boolean;
|
|
25
|
-
|
|
26
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Emit change event when any input value changes
|
|
66
|
+
*/
|
|
67
|
+
private emitChange;
|
|
68
|
+
/**
|
|
69
|
+
* Render the payment card form with a responsive grid layout
|
|
70
|
+
*/
|
|
71
|
+
protected render(): import("lit-html").TemplateResult<1>;
|
|
72
|
+
/**
|
|
73
|
+
* Helper method to render card type icon based on detected card type
|
|
74
|
+
*/
|
|
75
|
+
private getCardIcon;
|
|
76
|
+
/**
|
|
77
|
+
* Helper method to render a security and acceptance notice
|
|
78
|
+
*/
|
|
79
|
+
private renderSecurityNotice;
|
|
27
80
|
}
|
|
28
81
|
declare global {
|
|
29
82
|
interface HTMLElementTagNameMap {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare const SchmancyCountriesSelect_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
2
|
+
export declare class SchmancyCountriesSelect extends SchmancyCountriesSelect_base {
|
|
3
|
+
static formAssociated: boolean;
|
|
4
|
+
private internals?;
|
|
5
|
+
value?: string;
|
|
6
|
+
chip: string;
|
|
7
|
+
required: boolean;
|
|
8
|
+
label: string;
|
|
9
|
+
hint: string;
|
|
10
|
+
placeholder: string;
|
|
11
|
+
name: string;
|
|
12
|
+
private autocomplete;
|
|
13
|
+
constructor();
|
|
14
|
+
get form(): HTMLFormElement;
|
|
15
|
+
checkValidity(): boolean;
|
|
16
|
+
reportValidity(): boolean;
|
|
17
|
+
updated(changedProps: Map<string, unknown>): void;
|
|
18
|
+
private handleChange;
|
|
19
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
20
|
+
}
|
|
21
|
+
declare global {
|
|
22
|
+
interface HTMLElementTagNameMap {
|
|
23
|
+
'schmancy-select-countries': SchmancyCountriesSelect;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare const SchmancyTimezonesSelect_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
2
|
+
export declare class SchmancyTimezonesSelect extends SchmancyTimezonesSelect_base {
|
|
3
|
+
static formAssociated: boolean;
|
|
4
|
+
private internals?;
|
|
5
|
+
value?: string;
|
|
6
|
+
chip: string;
|
|
7
|
+
required: boolean;
|
|
8
|
+
label: string;
|
|
9
|
+
hint: string;
|
|
10
|
+
placeholder: string;
|
|
11
|
+
name: string;
|
|
12
|
+
private autocomplete;
|
|
13
|
+
constructor();
|
|
14
|
+
get form(): HTMLFormElement;
|
|
15
|
+
checkValidity(): boolean;
|
|
16
|
+
reportValidity(): boolean;
|
|
17
|
+
updated(changedProps: Map<string, unknown>): void;
|
|
18
|
+
private handleChange;
|
|
19
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
20
|
+
}
|
|
21
|
+
declare global {
|
|
22
|
+
interface HTMLElementTagNameMap {
|
|
23
|
+
'schmancy-select-timezones': SchmancyTimezonesSelect;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export {};
|
package/types/src/index.d.ts
CHANGED
|
@@ -8,11 +8,11 @@ export * from './checkbox';
|
|
|
8
8
|
export * from './chips';
|
|
9
9
|
export * from './components';
|
|
10
10
|
export * from './content-drawer';
|
|
11
|
-
export * from './data';
|
|
12
11
|
export * from './date-range';
|
|
13
12
|
export * from './delay';
|
|
14
13
|
export * from './directives';
|
|
15
14
|
export * from './divider';
|
|
15
|
+
export * from './extra';
|
|
16
16
|
export * from './form';
|
|
17
17
|
export * from './icons';
|
|
18
18
|
export * from './input';
|
|
@@ -39,3 +39,4 @@ export * from './types';
|
|
|
39
39
|
export * from './typewriter';
|
|
40
40
|
export * from './typography';
|
|
41
41
|
export * from './utils';
|
|
42
|
+
export * from './v2';
|
|
@@ -7,7 +7,11 @@ export default class SchmancyOption extends SchmancyOption_base {
|
|
|
7
7
|
value: string;
|
|
8
8
|
label: string | undefined;
|
|
9
9
|
selected: boolean;
|
|
10
|
+
private updateLabelFromSlot;
|
|
11
|
+
connectedCallback(): void;
|
|
12
|
+
firstUpdated(): void;
|
|
10
13
|
private handleOptionClick;
|
|
14
|
+
private getSlotContent;
|
|
11
15
|
focus(): void;
|
|
12
16
|
protected render(): import("lit-html").TemplateResult<1>;
|
|
13
17
|
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { TemplateResult } from 'lit';
|
|
1
|
+
import { PropertyValues, TemplateResult } from 'lit';
|
|
2
2
|
export type SchmancySelectChangeEvent = CustomEvent<{
|
|
3
3
|
value: string | string[];
|
|
4
4
|
}>;
|
|
5
5
|
declare const SchmancySelect_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
6
6
|
export declare class SchmancySelect extends SchmancySelect_base {
|
|
7
|
+
static formAssociated: boolean;
|
|
8
|
+
private internals?;
|
|
7
9
|
name: string | undefined;
|
|
8
10
|
required: boolean;
|
|
9
11
|
placeholder: string;
|
|
10
12
|
value: string | string[];
|
|
11
13
|
multi: boolean;
|
|
12
14
|
label: string;
|
|
15
|
+
hint: string;
|
|
13
16
|
private isOpen;
|
|
14
17
|
private valueLabel;
|
|
15
18
|
private isValid;
|
|
@@ -18,9 +21,12 @@ export declare class SchmancySelect extends SchmancySelect_base {
|
|
|
18
21
|
private inputRef;
|
|
19
22
|
private options;
|
|
20
23
|
private cleanupPositioner?;
|
|
24
|
+
constructor();
|
|
25
|
+
get form(): HTMLFormElement;
|
|
21
26
|
connectedCallback(): void;
|
|
22
27
|
disconnectedCallback(): void;
|
|
23
28
|
firstUpdated(): void;
|
|
29
|
+
updated(changedProps: PropertyValues): void;
|
|
24
30
|
private syncSelection;
|
|
25
31
|
private setupOptionsAccessibility;
|
|
26
32
|
private positionDropdown;
|
|
@@ -33,6 +39,7 @@ export declare class SchmancySelect extends SchmancySelect_base {
|
|
|
33
39
|
checkValidity(): boolean;
|
|
34
40
|
reportValidity(): boolean;
|
|
35
41
|
setCustomValidity(message: string): void;
|
|
42
|
+
reset(): void;
|
|
36
43
|
render(): TemplateResult;
|
|
37
44
|
}
|
|
38
45
|
declare global {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate similarity score between two strings.
|
|
3
|
+
* Returns a value between 0 (no match) and 1 (exact match).
|
|
4
|
+
* Includes all similarity methods from the original filter directive.
|
|
5
|
+
*
|
|
6
|
+
* @param query The search query string
|
|
7
|
+
* @param target The target string to compare against
|
|
8
|
+
* @returns A similarity score from 0 to 1
|
|
9
|
+
*/
|
|
10
|
+
export declare function similarity(query: string, target: string): number;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
declare const SchForm_base: import("../../mixins").Constructor<CustomElementConstructor> & import("../../mixins").Constructor<import("@mixins/tailwind.mixin").ITailwindElementMixin> & import("../../mixins").Constructor<import("lit").LitElement> & import("../../mixins").Constructor<import("../../mixins").IBaseMixin>;
|
|
2
|
+
/**
|
|
3
|
+
* A form component that enforces native browser validation
|
|
4
|
+
* for all contained form elements.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```html
|
|
8
|
+
* <sch-form @submit=${handleSubmit}>
|
|
9
|
+
* <sch-input label="Name" required></sch-input>
|
|
10
|
+
* <schmancy-button type="submit">Submit</schmancy-button>
|
|
11
|
+
* </sch-form>
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare class SchForm extends SchForm_base {
|
|
15
|
+
/**
|
|
16
|
+
* If true, form validation will be skipped
|
|
17
|
+
*/
|
|
18
|
+
novalidate: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* The form's submission method (get or post)
|
|
21
|
+
*/
|
|
22
|
+
method: 'get' | 'post';
|
|
23
|
+
/**
|
|
24
|
+
* The URL to submit the form to
|
|
25
|
+
*/
|
|
26
|
+
action: string;
|
|
27
|
+
/**
|
|
28
|
+
* The form's encoding type
|
|
29
|
+
*/
|
|
30
|
+
enctype: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
|
|
31
|
+
/**
|
|
32
|
+
* Reference to the internal form element
|
|
33
|
+
*/
|
|
34
|
+
formElement: HTMLFormElement;
|
|
35
|
+
/**
|
|
36
|
+
* Handle form submission
|
|
37
|
+
* This is the key method that ensures browser validation works
|
|
38
|
+
*/
|
|
39
|
+
private handleSubmit;
|
|
40
|
+
/**
|
|
41
|
+
* Reset the form
|
|
42
|
+
*/
|
|
43
|
+
reset(): void;
|
|
44
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
45
|
+
}
|
|
46
|
+
declare global {
|
|
47
|
+
interface HTMLElementTagNameMap {
|
|
48
|
+
'sch-form': SchForm;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
declare const SchInput_base: import("../../mixins").Constructor<import("@mixins/formField.mixin").IFormFieldMixin> & import("../../mixins").Constructor<import("../../mixins").ITailwindElementMixin> & import("../../mixins").Constructor<import("lit").LitElement> & import("../../mixins").Constructor<import("../../mixins").IBaseMixin>;
|
|
2
|
+
/**
|
|
3
|
+
* A simplified input component that works with browser validation.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```html
|
|
7
|
+
* <sch-input
|
|
8
|
+
* label="Email"
|
|
9
|
+
* name="email"
|
|
10
|
+
* required
|
|
11
|
+
* type="email"
|
|
12
|
+
* ></sch-input>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export default class SchInput extends SchInput_base {
|
|
16
|
+
/**
|
|
17
|
+
* The type of input (text, email, password, etc.)
|
|
18
|
+
*/
|
|
19
|
+
type: string;
|
|
20
|
+
/**
|
|
21
|
+
* Placeholder text
|
|
22
|
+
*/
|
|
23
|
+
placeholder: string;
|
|
24
|
+
/**
|
|
25
|
+
* Minimum input length
|
|
26
|
+
*/
|
|
27
|
+
minlength?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Maximum input length
|
|
30
|
+
*/
|
|
31
|
+
maxlength?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Pattern for validation
|
|
34
|
+
*/
|
|
35
|
+
pattern?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to enable autocomplete
|
|
38
|
+
*/
|
|
39
|
+
autocomplete: string;
|
|
40
|
+
/**
|
|
41
|
+
* Reference to the internal input element
|
|
42
|
+
*/
|
|
43
|
+
private inputRef;
|
|
44
|
+
/**
|
|
45
|
+
* Handle input change
|
|
46
|
+
*/
|
|
47
|
+
private handleInput;
|
|
48
|
+
/**
|
|
49
|
+
* Focus the input
|
|
50
|
+
*/
|
|
51
|
+
focus(options?: FocusOptions): void;
|
|
52
|
+
/**
|
|
53
|
+
* Blur the input
|
|
54
|
+
*/
|
|
55
|
+
blur(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Let the browser handle validation
|
|
58
|
+
*/
|
|
59
|
+
checkValidity(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Use the browser's built-in validation UI
|
|
62
|
+
*/
|
|
63
|
+
reportValidity(): boolean;
|
|
64
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
65
|
+
}
|
|
66
|
+
declare global {
|
|
67
|
+
interface HTMLElementTagNameMap {
|
|
68
|
+
'sch-input': SchInput;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export {};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";const q=require("@floating-ui/dom"),D=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const Y=require("./litElement.mixin-djlKJ0lX.cjs");require("./tailwind.mixin-CBhPue3q.cjs");const j=require("./ripple-C2BHbhcS.cjs"),H=require("./theme.interface-Xg5Zi46a.cjs"),P=require("lit"),u=require("lit/decorators.js"),U=require("lit/directives/ref.js"),A=require("rxjs/operators"),C=new Uint32Array(65536),z=(t,e)=>{if(t.length<e.length){const i=e;e=t,t=i}return e.length===0?t.length:t.length<=32?((i,o)=>{const n=i.length,r=o.length,l=1<<n-1;let p=-1,y=0,$=n,h=n;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<r;h++){let b=C[o.charCodeAt(h)];const v=b|y;b|=(b&p)+p^p,y|=~(b|p),p&=b,y&l&&$++,p&l&&$--,y=y<<1|1,p=p<<1|~(v|y),y&=v}for(h=n;h--;)C[i.charCodeAt(h)]=0;return $})(t,e):((i,o)=>{const n=o.length,r=i.length,l=[],p=[],y=Math.ceil(n/32),$=Math.ceil(r/32);for(let s=0;s<y;s++)p[s]=-1,l[s]=0;let h=0;for(;h<$-1;h++){let s=0,m=-1;const x=32*h,w=Math.min(32,r)+x;for(let a=x;a<w;a++)C[i.charCodeAt(a)]|=1<<a;for(let a=0;a<n;a++){const O=C[o.charCodeAt(a)],g=p[a/32|0]>>>a&1,f=l[a/32|0]>>>a&1,T=O|s,M=((O|f)&m)+m^m|O|f;let k=s|~(M|m),E=m&M;k>>>31^g&&(p[a/32|0]^=1<<a),E>>>31^f&&(l[a/32|0]^=1<<a),k=k<<1|g,E=E<<1|f,m=E|~(T|k),s=k&T}for(let a=x;a<w;a++)C[i.charCodeAt(a)]=0}let b=0,v=-1;const S=32*h,V=Math.min(32,r-S)+S;for(let s=S;s<V;s++)C[i.charCodeAt(s)]|=1<<s;let I=r;for(let s=0;s<n;s++){const m=C[o.charCodeAt(s)],x=p[s/32|0]>>>s&1,w=l[s/32|0]>>>s&1,a=m|b,O=((m|w)&v)+v^v|m|w;let g=b|~(O|v),f=v&O;I+=g>>>r-1&1,I-=f>>>r-1&1,g>>>31^x&&(p[s/32|0]^=1<<s),f>>>31^w&&(l[s/32|0]^=1<<s),g=g<<1|x,f=f<<1|w,v=f|~(a|g),b=g&a}for(let s=S;s<V;s++)C[i.charCodeAt(s)]=0;return I})(t,e)};var N=Object.defineProperty,B=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var n,r=o>1?void 0:o?B(e,i):e,l=t.length-1;l>=0;l--)(n=t[l])&&(r=(o?n(e,i,r):n(r))||r);return o&&r&&N(e,i,r),r};let c=class extends Y.$LitElement(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}"){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.inputRef=U.createRef(),this.searchTerm$=new D.Subject,this.startY=0,this.handleKeyDown=t=>{const e=this.options.filter(o=>!o.hidden);if(this.optionsContainer.hasAttribute("hidden"))return void(["Enter"," ","ArrowDown"].includes(t.key)&&(t.preventDefault(),this.showOptions().then(()=>{e.length>0&&this.focusOption(e,0)})));let i=e.findIndex(o=>o.matches(":focus"));switch(i===-1&&(i=0),t.key){case"Escape":t.preventDefault(),this.hideOptions(),this.input.focus();break;case"ArrowDown":t.preventDefault(),this.focusOption(e,Math.min(i+1,e.length-1));break;case"ArrowUp":t.preventDefault(),this.focusOption(e,Math.max(i-1,0));break;case"Enter":case" ":if(t.preventDefault(),e[i]){const o=e[i].getAttribute("data-value")||e[i].getAttribute("value");o&&this.handleOptionClick(o)}break;case"Tab":this.hideOptions()}}}connectedCallback(){super.connectedCallback(),this.id||(this.id=`schmancy-autocomplete-${Math.random().toString(36).substr(2,9)}`),D.fromEvent(this,"keydown").pipe(A.takeUntil(this.disconnecting)).subscribe({next:t=>{this.handleKeyDown(t)}}),this.searchTerm$.pipe(A.distinctUntilChanged(),A.tap(t=>{const e=t.trim().toLowerCase(),i=this.options.map(o=>{const n=o.label.toLowerCase();return{option:o,levDistance:z(e,n)}}).filter(({option:o,levDistance:n})=>e.length<3||n<=o.label.toLowerCase().length-e.length).sort((o,n)=>o.levDistance-n.levDistance);this.options.forEach(o=>o.hidden=!0);for(const{option:o}of i)o.hidden=!1;this.empty.hidden=i.length>0,this.setupOptionsAccessibility(),this.requestUpdate()}),A.takeUntil(this.disconnecting)).subscribe(()=>{this.showOptions()}),D.fromEvent(this,"focusout").pipe(A.takeUntil(this.disconnecting),A.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),A.switchMap(()=>{this.options.forEach(e=>e.hidden=!1);const t=this.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:150,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"});return D.from(new Promise(e=>{t.onfinish=()=>{this.optionsContainer.style.display="none",this.optionsContainer.style.opacity="1",e()}}))})).subscribe({next:()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue(),this.setupOptionsAccessibility()}setupOptionsAccessibility(){this.options.forEach((t,e)=>{t.setAttribute("role","option"),t.id||(t.id=`${this.id}-option-${e}`),t.tabIndex=-1,t.setAttribute("aria-selected",String(this.multi?t.selected:t.value===this.value))})}syncSelectionFromValue(){if(this.multi){const t=this.value.split(",").map(e=>e.trim()).filter(Boolean);this.options.forEach(e=>{e.selected=t.includes(e.value)})}else this.options.forEach(t=>{t.selected=t.value===this.value})}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else{const e=(t=this.options.find(i=>i.value===this.value))==null?void 0:t.label;this.input.value=e??""}})}async showOptions(){this.optionsContainer.removeAttribute("hidden"),this.optionsContainer.style.display="block";const{x:t,y:e}=await q.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[q.offset(5),q.flip(),q.shift({padding:5}),q.size({apply({availableWidth:i,availableHeight:o,elements:n,rects:r}){const l=r.reference.width;n.floating.style.minWidth=`${l}px`,n.floating.style.maxWidth=`${i}px`,n.floating.style.maxHeight=`${o}px`}})]});Object.assign(this.optionsContainer.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",overflowY:"auto"})}hideOptions(){var t;(t=this.optionsContainer)==null||t.setAttribute("hidden","true"),this.optionsContainer&&(this.optionsContainer.style.display="none")}handleInputChange(t){t.preventDefault(),t.stopPropagation();const e=t.detail.value;this.searchTerm$.next(e)}handleOptionClick(t){if(this.multi){const e=this.options.find(o=>o.value===t);e&&(e.selected=!e.selected);const i=this.options.filter(o=>o.selected).map(o=>o.value);this.value=i.join(","),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:i},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}handleTouchStart(t){var e,i;this.startY=((i=(e=t.touches)==null?void 0:e[0])==null?void 0:i.clientY)??0}preventScroll(t){var r,l;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,n=((l=(r=t.touches)==null?void 0:r[0])==null?void 0:l.clientY)??0;(i<=0&&n>this.startY||i>=o&&n<this.startY)&&t.preventDefault()}focusOption(t,e){const i=t[e];i&&(i.focus(),this.input.setAttribute("aria-activedescendant",i.id))}render(){var e;const t=!((e=this.optionsContainer)!=null&&e.hasAttribute("hidden"));return P.html`
|
|
2
|
-
<div class="relative">
|
|
3
|
-
<!-- The trigger slot (if any) overrides the default SchmancyInput -->
|
|
4
|
-
<slot name="trigger">
|
|
5
|
-
<schmancy-input
|
|
6
|
-
${U.ref(this.inputRef)}
|
|
7
|
-
id="input"
|
|
8
|
-
class="w-full"
|
|
9
|
-
.label=${this.label}
|
|
10
|
-
.placeholder=${this.placeholder}
|
|
11
|
-
.required=${this.required}
|
|
12
|
-
type="search"
|
|
13
|
-
inputmode="text"
|
|
14
|
-
autocomplete="off"
|
|
15
|
-
clickable
|
|
16
|
-
role="combobox"
|
|
17
|
-
aria-autocomplete="list"
|
|
18
|
-
aria-haspopup="listbox"
|
|
19
|
-
aria-controls="options"
|
|
20
|
-
aria-expanded=${t}
|
|
21
|
-
@focus=${()=>this.showOptions()}
|
|
22
|
-
@change=${this.handleInputChange}
|
|
23
|
-
>
|
|
24
|
-
</schmancy-input>
|
|
25
|
-
</slot>
|
|
26
|
-
|
|
27
|
-
<ul
|
|
28
|
-
id="options"
|
|
29
|
-
tabindex="-1"
|
|
30
|
-
class="absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm"
|
|
31
|
-
role="listbox"
|
|
32
|
-
aria-multiselectable=${this.multi?"true":"false"}
|
|
33
|
-
hidden
|
|
34
|
-
@click=${i=>{var n;const o=(n=i.detail)==null?void 0:n.value;o&&this.handleOptionClick(o)}}
|
|
35
|
-
@touchstart=${this.handleTouchStart}
|
|
36
|
-
@touchmove=${this.preventScroll}
|
|
37
|
-
${j.color({bgColor:H.SchmancyTheme.sys.color.surface.container})}
|
|
38
|
-
@slotchange=${this.handleSlotChange}
|
|
39
|
-
>
|
|
40
|
-
<!-- "No results" option -->
|
|
41
|
-
<li id="empty" tabindex="-1">
|
|
42
|
-
<schmancy-typography type="label">No results found</schmancy-typography>
|
|
43
|
-
</li>
|
|
44
|
-
<!-- Slot for the <schmancy-option> elements -->
|
|
45
|
-
<slot></slot>
|
|
46
|
-
</ul>
|
|
47
|
-
</div>
|
|
48
|
-
`}};d([u.property({type:Boolean})],c.prototype,"required",2),d([u.property({type:String})],c.prototype,"placeholder",2),d([u.property({type:String,reflect:!0})],c.prototype,"value",2),d([u.property({type:String,reflect:!0})],c.prototype,"label",2),d([u.property({type:String})],c.prototype,"maxHeight",2),d([u.property({type:Boolean})],c.prototype,"multi",2),d([u.query("#options")],c.prototype,"optionsContainer",2),d([u.query("#empty")],c.prototype,"empty",2),d([u.query("schmancy-input")],c.prototype,"input",2),d([u.queryAssignedElements({flatten:!0})],c.prototype,"options",2),d([u.eventOptions({passive:!0})],c.prototype,"handleOptionClick",1),c=d([u.customElement("schmancy-autocomplete")],c);
|
|
49
|
-
//# sourceMappingURL=autocomplete-Du2Jw0a2.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-Du2Jw0a2.cjs","sources":["../../../../.yarn/berry/cache/fastest-levenshtein-npm-1.0.16-192d328856-10c0.zip/node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import {\n\tcomputePosition,\n\tflip,\n\toffset,\n\tshift,\n\tsize, // <-- NEW\n} 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 { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\nimport type { SchmancyInputInputEvent } from '@schmancy/input/input'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t// Public API properties\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t/**\n\t * ⚠️ If you still want an explicit fallback for maximum dropdown height,\n\t * you can keep this, but the `size()` middleware will already set a\n\t * dynamic max-height based on viewport space.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\n\t/** Direct reference to the <input> inside <schmancy-input> */\n\tinputRef = createRef<HTMLInputElement>()\n\n\t// Query selectors for elements in the shadow DOM\n\t@query('#options') private optionsContainer!: HTMLUListElement\n\t@query('#empty') private empty!: HTMLLIElement\n\t@query('schmancy-input') private input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\n\t// Subject for search term changes\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\t// iOS scroll-blocking logic\n\tprivate startY = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Ensure the component has an ID (used for generating option IDs)\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-autocomplete-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\n\t\t// Listen for keydown events on the input to enable keyboard navigation.\n\t\t// (If your <schmancy-input> is a custom element, ensure it re–forwards keyboard events\n\t\t// from its internal <input> or use a @keydown listener on it in the template.)\n\t\tfromEvent(this, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tnext: (e: KeyboardEvent) => {\n\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t},\n\t\t\t})\n\t\t// 1) Search filtering logic\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// Filter options using Levenshtein distance\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(({ option, levDistance }) => {\n\t\t\t\t\t\t\t// For short search terms, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\treturn levDistance <= option.label.toLowerCase().length - searchTerm.length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide options based on filtering\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"No results found\"\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\t// Update accessibility attributes on options\n\t\t\t\t\tthis.setupOptionsAccessibility()\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\t// Show dropdown on each new search term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus-out animation (fade out)\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as Element)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// reset options to show all\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = false))\n\t\t\t\t\tconst animation = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t})\n\t\t\t\t\treturn from(\n\t\t\t\t\t\tnew Promise<void>(resolve => {\n\t\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.opacity = '1'\n\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// After closing, resync the input’s value\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * When the <slot> changes (i.e. options are added/removed), update the following:\n\t * 1. Show or hide the “No results found” option.\n\t * 2. Sync the selection state.\n\t * 3. Setup accessibility attributes on the options.\n\t */\n\tprivate handleSlotChange() {\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\t/**\n\t * Loops through assigned options and sets accessibility attributes:\n\t * - role=\"option\"\n\t * - A unique ID (if not already set)\n\t * - tabindex=\"-1\"\n\t * - aria-selected (based on whether the option is selected)\n\t */\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\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute('aria-selected', String(this.multi ? option.selected : option.value === this.value))\n\t\t})\n\t}\n\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate updateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * MAIN: Show the dropdown. Uses Floating UI to position and size the options container.\n\t */\n\tprivate async showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.display = 'block'\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [\n\t\t\t\toffset(5),\n\t\t\t\tflip(),\n\t\t\t\tshift({ padding: 5 }),\n\t\t\t\t// Let the floating element fill available space, but be at least as wide as the input.\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableWidth, availableHeight, elements, rects }) {\n\t\t\t\t\t\t// At least match input width\n\t\t\t\t\t\tconst referenceWidth = rects.reference.width\n\t\t\t\t\t\telements.floating.style.minWidth = `${referenceWidth}px`\n\t\t\t\t\t\t// Cap to available viewport space\n\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\toverflowY: 'auto',\n\t\t\t// You can still use maxHeight as a fallback if desired:\n\t\t\t// maxHeight: this.maxHeight,\n\t\t})\n\t}\n\n\tprivate hideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tif (this.optionsContainer) {\n\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t}\n\t}\n\n\tprivate handleInputChange(event: SchmancyInputInputEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\tprivate handleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\t/**\n\t * Keyboard navigation for the autocomplete.\n\t * – When the dropdown is closed, ArrowDown (or Enter/Space) opens it.\n\t * – When open, ArrowDown/ArrowUp move focus between options (which must have role=\"option\").\n\t * – Enter or Space selects the active option.\n\t * – Escape (or Tab) hides the dropdown.\n\t */\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Get the visible options (i.e. those not hidden)\n\t\tconst options = this.options.filter(o => !o.hidden)\n\n\t\t// If the dropdown is closed, open it on Enter, Space, or ArrowDown\n\t\tif (this.optionsContainer.hasAttribute('hidden')) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.showOptions().then(() => {\n\t\t\t\t\tif (options.length > 0) {\n\t\t\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Dropdown is open; determine the currently focused option\n\t\tlet currentIndex = options.findIndex(o => o.matches(':focus'))\n\t\tif (currentIndex === -1) {\n\t\t\t// If no option is focused, default to the first\n\t\t\tcurrentIndex = 0\n\t\t}\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.hideOptions()\n\t\t\t\tthis.input.focus()\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(currentIndex + 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(currentIndex - 1, 0))\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 (options[currentIndex]) {\n\t\t\t\t\t// Assume the option's value is stored in either \"data-value\" or \"value\" attribute.\n\t\t\t\t\tconst value = options[currentIndex].getAttribute('data-value') || options[currentIndex].getAttribute('value')\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.handleOptionClick(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\t// Close the dropdown on Tab (as done in the select component)\n\t\t\t\tthis.hideOptions()\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Helper to focus an option by index and update the combobox’s aria-activedescendant.\n\t */\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\t// Update the input's aria-activedescendant to match the newly focused option.\n\t\t\tthis.input.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\trender() {\n\t\t// Determine whether the dropdown is open based on the hidden attribute.\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- The trigger slot (if any) overrides the default SchmancyInput -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\taria-expanded=${isOpen}\n\t\t\t\t\t\t@focus=${() => this.showOptions()}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi ? 'true' : 'false'}\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> should dispatch a CustomEvent('click', { detail: { value } })\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) this.handleOptionClick(detailVal)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@slotchange=${this.handleSlotChange}\n\t\t\t\t>\n\t\t\t\t\t<!-- \"No results\" option -->\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","value","label","maxHeight","multi","inputRef","createRef","searchTerm$","Subject","startY","handleKeyDown","e","options","filter","o","hidden","optionsContainer","hasAttribute","includes","key","preventDefault","showOptions","then","focusOption","currentIndex","findIndex","matches","hideOptions","input","focus","max","getAttribute","handleOptionClick","connectedCallback","id","random","toString","substr","fromEvent","pipe","takeUntil","disconnecting","subscribe","next","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","map","option","optionText","levDistance","sort","forEach","empty","setupOptionsAccessibility","requestUpdate","relatedTarget","tagName","switchMap","animation","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","selected","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","some","index","setAttribute","tabIndex","String","values","split","v","Boolean","requestAnimationFrame","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","size","apply","availableWidth","availableHeight","elements","rects","referenceWidth","reference","width","floating","minWidth","maxWidth","Object","assign","left","top","position","zIndex","overflowY","event","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","isOpen","html","ref","handleInputChange","detailVal","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","handleSlotChange","__decorateClass","property","type","prototype","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
|