@mhmo91/schmancy 0.10.36 → 0.10.38
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 +54 -31
- package/dist/SchmancyElement-BNnyBOwk.js +286 -0
- package/dist/{SchmancyElement-C3CpdNsi.js.map → SchmancyElement-BNnyBOwk.js.map} +1 -1
- package/dist/SchmancyElement-C41uPa6l.cjs +2 -0
- package/dist/{SchmancyElement-BBzRWB1w.cjs.map → SchmancyElement-C41uPa6l.cjs.map} +1 -1
- package/dist/agent/schmancy.agent.js +2432 -2361
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +4 -22
- package/dist/area-2FrTZI_T.cjs +21 -0
- package/dist/area-2FrTZI_T.cjs.map +1 -0
- package/dist/{area-BA96mwFY.js → area-KVDzhT4s.js} +4 -4
- package/dist/area-KVDzhT4s.js.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +2 -2
- package/dist/{audio-D52h1jAT.js → audio-D3gnp15Y.js} +1 -1
- package/dist/{audio-D52h1jAT.js.map → audio-D3gnp15Y.js.map} +1 -1
- package/dist/{audio-B_jT9Xr7.cjs → audio-EaD0Ggfh.cjs} +1 -1
- package/dist/{audio-B_jT9Xr7.cjs.map → audio-EaD0Ggfh.cjs.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/autocomplete-DMmxsvUe.cjs +115 -0
- package/dist/autocomplete-DMmxsvUe.cjs.map +1 -0
- package/dist/{autocomplete-CI4QJXAN.js → autocomplete-DWiEqlQf.js} +96 -96
- package/dist/autocomplete-DWiEqlQf.js.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +3 -3
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-_N1x5U_3.js → boat-DmyG7y1V.js} +4 -4
- package/dist/{boat-_N1x5U_3.js.map → boat-DmyG7y1V.js.map} +1 -1
- package/dist/{boat-I4B1UNMc.cjs → boat-dB1_qLm0.cjs} +1 -1
- package/dist/{boat-I4B1UNMc.cjs.map → boat-dB1_qLm0.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +3 -3
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +4 -4
- package/dist/breadcrumb.js.map +1 -1
- package/dist/{busy-BIUonyPk.cjs → busy-Cj_PV7oC.cjs} +1 -1
- package/dist/{busy-BIUonyPk.cjs.map → busy-Cj_PV7oC.cjs.map} +1 -1
- package/dist/{busy-CCB3qKnh.js → busy-enYCTssB.js} +2 -2
- package/dist/{busy-CCB3qKnh.js.map → busy-enYCTssB.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-C89bPnHt.js → button-BQSOVnHn.js} +10 -9
- package/dist/button-BQSOVnHn.js.map +1 -0
- package/dist/button-WRmXlNyw.cjs +62 -0
- package/dist/button-WRmXlNyw.cjs.map +1 -0
- package/dist/button.cjs +6 -6
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +17 -16
- package/dist/button.js.map +1 -1
- package/dist/{card-CFsCgJKZ.js → card-BHTz1GwB.js} +16 -16
- package/dist/card-BHTz1GwB.js.map +1 -0
- package/dist/{card-BO93_oxQ.cjs → card-ThG_ZaQE.cjs} +3 -3
- package/dist/card-ThG_ZaQE.cjs.map +1 -0
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-CFUBUFtW.cjs → checkbox-C4zeib84.cjs} +2 -2
- package/dist/{checkbox-CFUBUFtW.cjs.map → checkbox-C4zeib84.cjs.map} +1 -1
- package/dist/{checkbox-Bh7q0djq.js → checkbox-Ce0DlAdW.js} +6 -6
- package/dist/{checkbox-Bh7q0djq.js.map → checkbox-Ce0DlAdW.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-BfzpsyV1.cjs → chips-B1jui8Pe.cjs} +3 -3
- package/dist/chips-B1jui8Pe.cjs.map +1 -0
- package/dist/{chips-6YaoRmeG.js → chips-DAy6v93f.js} +20 -19
- package/dist/chips-DAy6v93f.js.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +3 -3
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
- package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
- package/dist/{date-range-N-A249O9.cjs → date-range-BUaPgbTZ.cjs} +2 -2
- package/dist/date-range-BUaPgbTZ.cjs.map +1 -0
- package/dist/{date-range-CEo_Kjqw.js → date-range-NTpoA1in.js} +4 -4
- package/dist/date-range-NTpoA1in.js.map +1 -0
- package/dist/{date-range-inline-DFopysWF.cjs → date-range-inline-D0I6k84h.cjs} +1 -1
- package/dist/{date-range-inline-DFopysWF.cjs.map → date-range-inline-D0I6k84h.cjs.map} +1 -1
- package/dist/{date-range-inline-BwialV9j.js → date-range-inline-DjRdMZ1z.js} +2 -2
- package/dist/{date-range-inline-BwialV9j.js.map → date-range-inline-DjRdMZ1z.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +2 -2
- package/dist/{details-GtpfI2hA.js → details-CY49XVfp.js} +43 -35
- package/dist/details-CY49XVfp.js.map +1 -0
- package/dist/details-DQNj2oaU.cjs +164 -0
- package/dist/details-DQNj2oaU.cjs.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{directives-CvYGSW_a.cjs → directives-Bb0S1DKZ.cjs} +4 -4
- package/dist/directives-Bb0S1DKZ.cjs.map +1 -0
- package/dist/{directives-C2dXgpCY.js → directives-Bfm1lkoy.js} +30 -23
- package/dist/directives-Bfm1lkoy.js.map +1 -0
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-D0pGX2VB.js → divider-BeyX_C0A.js} +2 -2
- package/dist/{divider-D0pGX2VB.js.map → divider-BeyX_C0A.js.map} +1 -1
- package/dist/{divider-rNsWCvMi.cjs → divider-Ck2C1sKl.cjs} +1 -1
- package/dist/{divider-rNsWCvMi.cjs.map → divider-Ck2C1sKl.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/{expand-FcKAzJta.js → expand-BYsSEtp6.js} +53 -53
- package/dist/expand-BYsSEtp6.js.map +1 -0
- package/dist/expand-CUF163mg.cjs +141 -0
- package/dist/expand-CUF163mg.cjs.map +1 -0
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/fab.cjs +1 -1
- package/dist/fab.js +2 -2
- package/dist/{float-CQ1WEp3M.js → float-Cgllk_H9.js} +2 -2
- package/dist/{float-CQ1WEp3M.js.map → float-Cgllk_H9.js.map} +1 -1
- package/dist/{float-CDjgxWyy.cjs → float-OvqX0nqG.cjs} +1 -1
- package/dist/{float-CDjgxWyy.cjs.map → float-OvqX0nqG.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/form-4GKROq2P.cjs +27 -0
- package/dist/form-4GKROq2P.cjs.map +1 -0
- package/dist/{form-H24puioV.js → form-DxaV_Ose.js} +39 -39
- package/dist/form-DxaV_Ose.js.map +1 -0
- package/dist/form.cjs +3 -3
- package/dist/form.cjs.map +1 -1
- package/dist/form.js +34 -34
- package/dist/form.js.map +1 -1
- package/dist/gravity-6pL6CfIr.cjs.map +1 -1
- package/dist/gravity-sVK3zGBF.js.map +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{icons-DBxfN91B.js → icons-CJ2mXcBi.js} +9 -9
- package/dist/icons-CJ2mXcBi.js.map +1 -0
- package/dist/icons-sZ-LybA9.cjs +24 -0
- package/dist/icons-sZ-LybA9.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-BDVElN8z.js → iframe-DWvN5nGB.js} +11 -11
- package/dist/iframe-DWvN5nGB.js.map +1 -0
- package/dist/{iframe-CG-z9qev.cjs → iframe-DpCv-QH2.cjs} +7 -7
- package/dist/iframe-DpCv-QH2.cjs.map +1 -0
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +37 -37
- package/dist/{input-Bt_o4sYo.js → input-BCCHz6tB.js} +7 -7
- package/dist/input-BCCHz6tB.js.map +1 -0
- package/dist/{input-B14Nn6xD.cjs → input-Z-3N5JMv.cjs} +2 -2
- package/dist/input-Z-3N5JMv.cjs.map +1 -0
- package/dist/{input-chip-DEqO0DXc.js → input-chip-BOrcKH-H.js} +2 -2
- package/dist/{input-chip-DEqO0DXc.js.map → input-chip-BOrcKH-H.js.map} +1 -1
- package/dist/{input-chip-ugYu9Fn9.cjs → input-chip-ChAgRCXZ.cjs} +1 -1
- package/dist/{input-chip-ugYu9Fn9.cjs.map → input-chip-ChAgRCXZ.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +3 -3
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +2 -2
- package/dist/{layout-BJ_43VrH.js → layout-CFiG3lNT.js} +1 -1
- package/dist/{layout-BJ_43VrH.js.map → layout-CFiG3lNT.js.map} +1 -1
- package/dist/{layout-DF9ZaQ-b.cjs → layout-DZ4dpLh9.cjs} +1 -1
- package/dist/{layout-DF9ZaQ-b.cjs.map → layout-DZ4dpLh9.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/lazy-BaAiIUru.js +19 -0
- package/dist/lazy-BaAiIUru.js.map +1 -0
- package/dist/lazy-C-7a4FAe.cjs +1 -0
- package/dist/lazy-C-7a4FAe.cjs.map +1 -0
- package/dist/{lightbox-ZmuoBBFT.js → lightbox-B7Y4Nij_.js} +2 -2
- package/dist/lightbox-B7Y4Nij_.js.map +1 -0
- package/dist/{lightbox-B47Zoqv-.cjs → lightbox-Dpwsn8Qr.cjs} +1 -1
- package/dist/lightbox-Dpwsn8Qr.cjs.map +1 -0
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CaSWrlG2.cjs → list-BhM-6dAi.cjs} +1 -1
- package/dist/{list-CaSWrlG2.cjs.map → list-BhM-6dAi.cjs.map} +1 -1
- package/dist/{list-C47xzld_.js → list-C5WVoIfJ.js} +2 -2
- package/dist/{list-C47xzld_.js.map → list-C5WVoIfJ.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/magnetic-DKtc4umC.cjs.map +1 -1
- package/dist/magnetic-DaOOv5Dz.js.map +1 -1
- package/dist/{menu-8RObM6Ie.js → menu-CBAAJoHu.js} +3 -3
- package/dist/{menu-8RObM6Ie.js.map → menu-CBAAJoHu.js.map} +1 -1
- package/dist/{menu-Jpsy85SX.cjs → menu-DFQjJk3H.cjs} +1 -1
- package/dist/{menu-Jpsy85SX.cjs.map → menu-DFQjJk3H.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/{mixins-DTzfFVyv.js → mixins-DGBI7YPO.js} +11 -11
- package/dist/mixins-DGBI7YPO.js.map +1 -0
- package/dist/{mixins-DPdzC9ZH.cjs → mixins-fIpzhVMd.cjs} +1 -1
- package/dist/mixins-fIpzhVMd.cjs.map +1 -0
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +2 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +3 -3
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +11 -10
- package/dist/navigation-rail.js.map +1 -1
- package/dist/notification-B6yDL91t.cjs +24 -0
- package/dist/notification-B6yDL91t.cjs.map +1 -0
- package/dist/{notification-Ccktcj9H.js → notification-BB9OBRCr.js} +22 -22
- package/dist/notification-BB9OBRCr.js.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-CkMxwBqU.js → option-B21ImL0k.js} +2 -2
- package/dist/{option-CkMxwBqU.js.map → option-B21ImL0k.js.map} +1 -1
- package/dist/{option-0aNiVB3Q.cjs → option-CJQM5I9q.cjs} +1 -1
- package/dist/{option-0aNiVB3Q.cjs.map → option-CJQM5I9q.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-H3Wt_dgQ.js → overlay-CWsihJ-E.js} +75 -67
- package/dist/overlay-CWsihJ-E.js.map +1 -0
- package/dist/overlay-DkIX9Ig3.cjs +58 -0
- package/dist/overlay-DkIX9Ig3.cjs.map +1 -0
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-Dxn_wNm3.js → overlay.confirm-body-CPqqPNks.js} +10 -10
- package/dist/overlay.confirm-body-CPqqPNks.js.map +1 -0
- package/dist/{overlay.confirm-body-CR9xaqOE.cjs → overlay.confirm-body-DwTfiNlV.cjs} +3 -3
- package/dist/overlay.confirm-body-DwTfiNlV.cjs.map +1 -0
- package/dist/overlay.js +4 -4
- package/dist/overlay.service-DU1nqh6A.cjs +1 -0
- package/dist/{overlay.service-DEj3rfRr.cjs.map → overlay.service-DU1nqh6A.cjs.map} +1 -1
- package/dist/{overlay.service-C46kOtUi.js → overlay.service-KTgBxjFb.js} +4 -4
- package/dist/{overlay.service-C46kOtUi.js.map → overlay.service-KTgBxjFb.js.map} +1 -1
- package/dist/{progress-zs18GR6C.cjs → progress-B-Qg44XY.cjs} +1 -1
- package/dist/{progress-zs18GR6C.cjs.map → progress-B-Qg44XY.cjs.map} +1 -1
- package/dist/{progress-BK7gSq8j.js → progress-CUSS1sNz.js} +2 -2
- package/dist/{progress-BK7gSq8j.js.map → progress-CUSS1sNz.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-1HCpzRUB.js → radio-group-AHLvrN8O.js} +7 -7
- package/dist/radio-group-AHLvrN8O.js.map +1 -0
- package/dist/{radio-group-DbYlyPc-.cjs → radio-group-BEtvCSS1.cjs} +2 -2
- package/dist/radio-group-BEtvCSS1.cjs.map +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +2 -2
- package/dist/select-BWpV2iv-.cjs +56 -0
- package/dist/select-BWpV2iv-.cjs.map +1 -0
- package/dist/{select-CEyhNtZ2.js → select-Cawz88lG.js} +46 -46
- package/dist/select-Cawz88lG.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +2 -2
- package/dist/skills/SKILL.md +17 -11
- package/dist/skills/overlay.md +14 -7
- package/dist/skills/schmancy/SKILL.md +17 -11
- package/dist/skills/schmancy/overlay.md +14 -7
- package/dist/skills/schmancy/steps.md +68 -34
- package/dist/skills/steps.md +68 -34
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -2
- package/dist/{sound.service-DO4SmUUT.js → sound.service-CK-5zob-.js} +4 -3
- package/dist/sound.service-CK-5zob-.js.map +1 -0
- package/dist/{sound.service-G_8GV_6L.cjs → sound.service-D2GGaBXc.cjs} +1 -1
- package/dist/sound.service-D2GGaBXc.cjs.map +1 -0
- package/dist/{splash-screen-B1mM4_xz.js → splash-screen-BUEtjHXC.js} +13 -13
- package/dist/splash-screen-BUEtjHXC.js.map +1 -0
- package/dist/{splash-screen-cbz4bxjB.cjs → splash-screen-DqPuipox.cjs} +6 -6
- package/dist/splash-screen-DqPuipox.cjs.map +1 -0
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-tncsWsTY.js → src-CIqAj3Eh.js} +45 -45
- package/dist/src-CIqAj3Eh.js.map +1 -0
- package/dist/{src-czeiuT1m.cjs → src-CYqBQTyt.cjs} +6 -6
- package/dist/src-CYqBQTyt.cjs.map +1 -0
- package/dist/{state-Cx0aoL5e.cjs → state-BxDNox-2.cjs} +1 -1
- package/dist/{state-Cx0aoL5e.cjs.map → state-BxDNox-2.cjs.map} +1 -1
- package/dist/{state-DJDp3N7J.js → state-CnZCDMT0.js} +9 -9
- package/dist/{state-DJDp3N7J.js.map → state-CnZCDMT0.js.map} +1 -1
- package/dist/state.cjs +1 -1
- package/dist/state.js +2 -2
- package/dist/steps.cjs +35 -19
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +96 -73
- package/dist/steps.js.map +1 -1
- package/dist/{surface-CYBl8_a3.js → surface-BMdG3dKQ.js} +2 -2
- package/dist/{surface-CYBl8_a3.js.map → surface-BMdG3dKQ.js.map} +1 -1
- package/dist/{surface-C3cxTcJD.cjs → surface-CWwYD_z2.cjs} +1 -1
- package/dist/{surface-C3cxTcJD.cjs.map → surface-CWwYD_z2.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +4 -4
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.js +11 -11
- package/dist/switch.js.map +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +2 -2
- package/dist/{tabs-DHy93Q3N.js → tabs-CDQYDc6v.js} +2 -2
- package/dist/{tabs-DHy93Q3N.js.map → tabs-CDQYDc6v.js.map} +1 -1
- package/dist/{tabs-ORQ_Zd43.cjs → tabs-CbD9E1gd.cjs} +1 -1
- package/dist/{tabs-ORQ_Zd43.cjs.map → tabs-CbD9E1gd.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/textarea-Brgi-vD2.cjs +43 -0
- package/dist/textarea-Brgi-vD2.cjs.map +1 -0
- package/dist/{textarea-DHIMt-ly.js → textarea-MPyrMi-S.js} +4 -4
- package/dist/textarea-MPyrMi-S.js.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-CJpjkqHr.cjs → theme-BMbXoqi0.cjs} +1 -1
- package/dist/{theme-CJpjkqHr.cjs.map → theme-BMbXoqi0.cjs.map} +1 -1
- package/dist/{theme-CgI9PRco.js → theme-DZu-xmVp.js} +5 -5
- package/dist/{theme-CgI9PRco.js.map → theme-DZu-xmVp.js.map} +1 -1
- package/dist/{theme-button--FuBkuVr.cjs → theme-button-B0OLb-43.cjs} +1 -1
- package/dist/{theme-button--FuBkuVr.cjs.map → theme-button-B0OLb-43.cjs.map} +1 -1
- package/dist/{theme-button-D-FXb3oO.js → theme-button-D_qGvEYs.js} +2 -2
- package/dist/{theme-button-D-FXb3oO.js.map → theme-button-D_qGvEYs.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.js +3 -3
- package/dist/{theme.service-BfTK1Wtl.js → theme.service-7VkM-hVf.js} +15 -11
- package/dist/theme.service-7VkM-hVf.js.map +1 -0
- package/dist/theme.service-B15FdjOS.cjs +1 -0
- package/dist/theme.service-B15FdjOS.cjs.map +1 -0
- package/dist/tree.cjs +4 -4
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +8 -8
- package/dist/tree.js.map +1 -1
- package/dist/{typography-CxA3sx9B.cjs → typography-D4Fo1UGh.cjs} +3 -3
- package/dist/{typography-CxA3sx9B.cjs.map → typography-D4Fo1UGh.cjs.map} +1 -1
- package/dist/{typography-BEGLfHwz.js → typography-SZhjb_4R.js} +9 -9
- package/dist/{typography-BEGLfHwz.js.map → typography-SZhjb_4R.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +2 -2
- package/dist/{window-B_n4P9az.js → window-BDVyrBnk.js} +101 -100
- package/dist/window-BDVyrBnk.js.map +1 -0
- package/dist/window-BbBYjm7R.cjs +59 -0
- package/dist/window-BbBYjm7R.cjs.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/SKILL.md +17 -11
- package/skills/schmancy/overlay.md +14 -7
- package/skills/schmancy/steps.md +68 -34
- package/src/area/area.component.ts +1 -1
- package/src/area/area.service.test.ts +2 -2
- package/src/area/area.service.ts +1 -1
- package/src/area/lazy.ts +87 -83
- package/src/audio/sound.service.ts +3 -3
- package/src/breadcrumb/breadcrumb.ts +2 -2
- package/src/button/button.ts +11 -11
- package/src/button/icon-button.ts +18 -18
- package/src/card/card.ts +16 -16
- package/src/content-drawer/drawer.ts +6 -6
- package/src/details/details.ts +55 -55
- package/src/directives/ai-badge.ts +2 -1
- package/src/directives/animate-text.ts +2 -1
- package/src/directives/art/art.directive.ts +2 -1
- package/src/directives/battery.ts +2 -1
- package/src/directives/confirm-click.ts +5 -3
- package/src/directives/cursor-glow.ts +2 -1
- package/src/directives/cycle-text.ts +2 -1
- package/src/directives/depth-of-field.ts +2 -1
- package/src/directives/drag.ts +4 -2
- package/src/directives/fyi.ts +2 -1
- package/src/directives/gravity.ts +2 -1
- package/src/directives/hummingbird.ts +2 -1
- package/src/directives/intersect.ts +3 -2
- package/src/directives/liquid.ts +2 -1
- package/src/directives/living-border.ts +2 -1
- package/src/directives/long-press.ts +2 -1
- package/src/directives/magnetic.ts +2 -1
- package/src/directives/missed-punch.ts +2 -1
- package/src/directives/nebula.ts +6 -5
- package/src/directives/overflow-within.ts +2 -1
- package/src/directives/reveal.ts +193 -118
- package/src/directives/urgent.ts +2 -1
- package/src/directives/working-snake.ts +2 -1
- package/src/expand/expand-root.component.ts +27 -27
- package/src/expand/expand.component.ts +48 -48
- package/src/form/fields/autocomplete/autocomplete.ts +154 -154
- package/src/form/fields/checkbox/checkbox.ts +4 -4
- package/src/form/fields/chips/chips.ts +2 -2
- package/src/form/fields/chips/filter-chip.ts +15 -15
- package/src/form/fields/date-range/date-range.ts +2 -2
- package/src/form/fields/input/input.ts +12 -12
- package/src/form/fields/radio-group/radio-button.ts +2 -2
- package/src/form/fields/radio-group/radio-group.ts +3 -3
- package/src/form/fields/select/select.ts +56 -56
- package/src/form/fields/switch/switch.ts +10 -10
- package/src/form/fields/textarea/textarea.ts +2 -2
- package/src/form/form-summary.ts +33 -33
- package/src/form/form.ts +45 -45
- package/src/icons/icon.ts +10 -8
- package/src/iframe/iframe.ts +11 -11
- package/src/lightbox/flip-directive.ts +2 -1
- package/src/lightbox/lightbox.directive.ts +2 -1
- package/src/nav-drawer/navbar.ts +3 -3
- package/src/navigation-rail/navigation-rail.ts +10 -10
- package/src/notification/notification.ts +22 -22
- package/src/overlay/overlay.component.ts +106 -83
- package/src/overlay/overlay.confirm-body.ts +4 -4
- package/src/overlay/overlay.service.ts +3 -3
- package/src/overlay/overlay.types.ts +4 -2
- package/src/splash-screen/splash-screen.ts +11 -11
- package/src/state/index.ts +12 -12
- package/src/state/schmancy-context.ts +9 -9
- package/src/steps/index.ts +1 -1
- package/src/steps/schmancy-step.ts +91 -65
- package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
- package/src/steps/steps.context.ts +5 -4
- package/src/steps/steps.test.ts +120 -0
- package/src/teleport/teleport.component.ts +2 -2
- package/src/theme/theme.service.ts +17 -17
- package/src/tree/tree.ts +7 -7
- package/src/typography/typography.ts +7 -7
- package/src/window/window-manager.ts +20 -20
- package/src/window/window.ts +100 -100
- package/types/mixins/SchmancyElement.d.ts +3 -2
- package/types/mixins/formField.mixin.d.ts +1 -1
- package/types/src/area/area.service.d.ts +1 -1
- package/types/src/area/lazy.d.ts +0 -6
- package/types/src/audio/sound.service.d.ts +1 -2
- package/types/src/breadcrumb/breadcrumb.d.ts +1 -1
- package/types/src/button/button.d.ts +3 -3
- package/types/src/button/icon-button.d.ts +6 -7
- package/types/src/card/card.d.ts +5 -5
- package/types/src/content-drawer/drawer.d.ts +1 -1
- package/types/src/details/details.d.ts +2 -21
- package/types/src/directives/ai-badge.d.ts +2 -2
- package/types/src/directives/animate-text.d.ts +2 -2
- package/types/src/directives/art/art.directive.d.ts +2 -2
- package/types/src/directives/battery.d.ts +2 -2
- package/types/src/directives/confirm-click.d.ts +2 -2
- package/types/src/directives/cursor-glow.d.ts +2 -2
- package/types/src/directives/cycle-text.d.ts +2 -2
- package/types/src/directives/depth-of-field.d.ts +2 -2
- package/types/src/directives/drag.d.ts +4 -4
- package/types/src/directives/fyi.d.ts +2 -2
- package/types/src/directives/gravity.d.ts +2 -2
- package/types/src/directives/hummingbird.d.ts +2 -2
- package/types/src/directives/intersect.d.ts +2 -2
- package/types/src/directives/liquid.d.ts +2 -2
- package/types/src/directives/living-border.d.ts +2 -2
- package/types/src/directives/long-press.d.ts +2 -2
- package/types/src/directives/magnetic.d.ts +2 -2
- package/types/src/directives/missed-punch.d.ts +2 -2
- package/types/src/directives/nebula.d.ts +2 -2
- package/types/src/directives/overflow-within.d.ts +2 -2
- package/types/src/directives/reveal.d.ts +17 -7
- package/types/src/directives/urgent.d.ts +2 -2
- package/types/src/directives/working-snake.d.ts +2 -2
- package/types/src/expand/expand-root.component.d.ts +8 -8
- package/types/src/expand/expand.component.d.ts +11 -11
- package/types/src/form/fields/autocomplete/autocomplete.d.ts +29 -29
- package/types/src/form/fields/checkbox/checkbox.d.ts +1 -1
- package/types/src/form/fields/chips/chips.d.ts +1 -1
- package/types/src/form/fields/chips/filter-chip.d.ts +1 -2
- package/types/src/form/fields/input/input.d.ts +3 -3
- package/types/src/form/fields/radio-group/radio-button.d.ts +1 -1
- package/types/src/form/fields/radio-group/radio-group.d.ts +1 -1
- package/types/src/form/fields/select/select.d.ts +8 -8
- package/types/src/form/fields/switch/switch.d.ts +3 -3
- package/types/src/form/fields/textarea/textarea.d.ts +1 -1
- package/types/src/form/form-summary.d.ts +7 -7
- package/types/src/form/form.d.ts +11 -11
- package/types/src/icons/icon.d.ts +2 -2
- package/types/src/iframe/iframe.d.ts +3 -3
- package/types/src/lightbox/flip-directive.d.ts +2 -2
- package/types/src/lightbox/lightbox.directive.d.ts +2 -2
- package/types/src/nav-drawer/navbar.d.ts +1 -1
- package/types/src/navigation-rail/navigation-rail.d.ts +2 -2
- package/types/src/notification/notification.d.ts +8 -8
- package/types/src/overlay/overlay.component.d.ts +16 -16
- package/types/src/overlay/overlay.confirm-body.d.ts +1 -1
- package/types/src/overlay/overlay.types.d.ts +4 -2
- package/types/src/splash-screen/splash-screen.d.ts +2 -2
- package/types/src/state/index.d.ts +1 -1
- package/types/src/state/schmancy-context.d.ts +3 -3
- package/types/src/steps/index.d.ts +1 -1
- package/types/src/steps/schmancy-step.d.ts +8 -23
- package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
- package/types/src/steps/steps.context.d.ts +2 -1
- package/types/src/steps/steps.test.d.ts +2 -0
- package/types/src/teleport/teleport.component.d.ts +1 -1
- package/types/src/theme/theme.service.d.ts +1 -4
- package/types/src/tree/tree.d.ts +3 -3
- package/types/src/typography/typography.d.ts +1 -1
- package/types/src/window/window-manager.d.ts +2 -2
- package/types/src/window/window.d.ts +20 -20
- package/dist/SchmancyElement-BBzRWB1w.cjs +0 -2
- package/dist/SchmancyElement-C3CpdNsi.js +0 -284
- package/dist/area-BA96mwFY.js.map +0 -1
- package/dist/area-DtyQDdOF.cjs +0 -21
- package/dist/area-DtyQDdOF.cjs.map +0 -1
- package/dist/autocomplete-Bts5Jwwr.cjs +0 -115
- package/dist/autocomplete-Bts5Jwwr.cjs.map +0 -1
- package/dist/autocomplete-CI4QJXAN.js.map +0 -1
- package/dist/button-C89bPnHt.js.map +0 -1
- package/dist/button-CkwQH-g3.cjs +0 -62
- package/dist/button-CkwQH-g3.cjs.map +0 -1
- package/dist/card-BO93_oxQ.cjs.map +0 -1
- package/dist/card-CFsCgJKZ.js.map +0 -1
- package/dist/chips-6YaoRmeG.js.map +0 -1
- package/dist/chips-BfzpsyV1.cjs.map +0 -1
- package/dist/date-range-CEo_Kjqw.js.map +0 -1
- package/dist/date-range-N-A249O9.cjs.map +0 -1
- package/dist/details-BLRPV8sY.cjs +0 -164
- package/dist/details-BLRPV8sY.cjs.map +0 -1
- package/dist/details-GtpfI2hA.js.map +0 -1
- package/dist/directives-C2dXgpCY.js.map +0 -1
- package/dist/directives-CvYGSW_a.cjs.map +0 -1
- package/dist/expand-FcKAzJta.js.map +0 -1
- package/dist/expand-tffQHGbZ.cjs +0 -141
- package/dist/expand-tffQHGbZ.cjs.map +0 -1
- package/dist/form-H24puioV.js.map +0 -1
- package/dist/form-VYhbbir3.cjs +0 -27
- package/dist/form-VYhbbir3.cjs.map +0 -1
- package/dist/icons-B_a1HStW.cjs +0 -24
- package/dist/icons-B_a1HStW.cjs.map +0 -1
- package/dist/icons-DBxfN91B.js.map +0 -1
- package/dist/iframe-BDVElN8z.js.map +0 -1
- package/dist/iframe-CG-z9qev.cjs.map +0 -1
- package/dist/input-B14Nn6xD.cjs.map +0 -1
- package/dist/input-Bt_o4sYo.js.map +0 -1
- package/dist/lazy-CayEFyC3.cjs +0 -1
- package/dist/lazy-CayEFyC3.cjs.map +0 -1
- package/dist/lazy-D-bO2r4m.js +0 -13
- package/dist/lazy-D-bO2r4m.js.map +0 -1
- package/dist/lightbox-B47Zoqv-.cjs.map +0 -1
- package/dist/lightbox-ZmuoBBFT.js.map +0 -1
- package/dist/mixins-DPdzC9ZH.cjs.map +0 -1
- package/dist/mixins-DTzfFVyv.js.map +0 -1
- package/dist/notification-Ccktcj9H.js.map +0 -1
- package/dist/notification-DSkB-sn0.cjs +0 -24
- package/dist/notification-DSkB-sn0.cjs.map +0 -1
- package/dist/overlay-BS-ta-zq.cjs +0 -58
- package/dist/overlay-BS-ta-zq.cjs.map +0 -1
- package/dist/overlay-H3Wt_dgQ.js.map +0 -1
- package/dist/overlay.confirm-body-CR9xaqOE.cjs.map +0 -1
- package/dist/overlay.confirm-body-Dxn_wNm3.js.map +0 -1
- package/dist/overlay.service-DEj3rfRr.cjs +0 -1
- package/dist/radio-group-1HCpzRUB.js.map +0 -1
- package/dist/radio-group-DbYlyPc-.cjs.map +0 -1
- package/dist/select-B-SSmUDe.cjs +0 -56
- package/dist/select-B-SSmUDe.cjs.map +0 -1
- package/dist/select-CEyhNtZ2.js.map +0 -1
- package/dist/sound.service-DO4SmUUT.js.map +0 -1
- package/dist/sound.service-G_8GV_6L.cjs.map +0 -1
- package/dist/splash-screen-B1mM4_xz.js.map +0 -1
- package/dist/splash-screen-cbz4bxjB.cjs.map +0 -1
- package/dist/src-czeiuT1m.cjs.map +0 -1
- package/dist/src-tncsWsTY.js.map +0 -1
- package/dist/textarea-CEUaDURR.cjs +0 -43
- package/dist/textarea-CEUaDURR.cjs.map +0 -1
- package/dist/textarea-DHIMt-ly.js.map +0 -1
- package/dist/theme.service-BfTK1Wtl.js.map +0 -1
- package/dist/theme.service-Dg7LO0Qz.cjs +0 -1
- package/dist/theme.service-Dg7LO0Qz.cjs.map +0 -1
- package/dist/window-B_n4P9az.js.map +0 -1
- package/dist/window-Vl1u1-EG.cjs +0 -59
- package/dist/window-Vl1u1-EG.cjs.map +0 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-C41uPa6l.cjs`),t=require(`./mixins-fIpzhVMd.cjs`),n=require(`./search-DPKoC-dT.cjs`);require(`./input-chip-ChAgRCXZ.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`lit/directives/class-map.js`),o=require(`lit/decorators.js`),s=require(`lit`),c=require(`lit/directives/if-defined.js`),l=require(`lit/directives/ref.js`),u=require(`lit/directives/repeat.js`),d=require(`lit/directives/when.js`);var f=class extends t.o((0,s.unsafeCSS)(`: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}@keyframes onAutoFillStart{0%{}to{}}:-webkit-any(sch-input::part(input):-webkit-autofill,sch-input input:-webkit-autofill){animation-name:onAutoFillStart;animation-duration:1ms}:is(sch-input::part(input):autofill,sch-input input:autofill){animation-name:onAutoFillStart;animation-duration:1ms}`)){constructor(...e){super(...e),this.valueSet=!1,this.valuesSet=!1,this.placeholder=``,this.maxHeight=`300px`,this.multi=!1,this.description=``,this.size=`md`,this.autocomplete=`off`,this.debounceMs=200,this.similarityThreshold=.3,this.a11yId=`schmancy-autocomplete-${Math.random().toString(36).slice(2,10)}`,this.open=!1,this.inputValue=``,this.visibleOptionsCount=0,this.hasResults=!0,this.inputElementRef=(0,l.createRef)(),this.selectedValue$=new r.BehaviorSubject(``),this.selectedValues$=new r.BehaviorSubject([]),this.inputValue$=new r.BehaviorSubject(``)}resetForm(){this.multi?this.selectedValues$.next([]):this.selectedValue$.next(``),this.inputValue=``,this.inputValue$.next(``),super.resetForm()}get values(){return[...this.selectedValues$.value]}set values(e){this.valuesSet=!0,this.selectedValues$.next(Array.isArray(e)?[...e]:[])}get value(){return this.multi?this.selectedValues$.value.join(`,`):this.selectedValue$.value}set value(e){if(this.valueSet=!0,this.multi){let t=e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[],n=this.selectedValues$.value;JSON.stringify(t)!==JSON.stringify(n)&&this.selectedValues$.next(t)}else e!==this.selectedValue$.value&&(this.selectedValue$.next(e),this.updateInputDisplay())}connectedCallback(){super.connectedCallback(),this.setupAutocompleteLogic(),this.setupDocumentClickHandler()}setupAutocompleteLogic(){(0,r.combineLatest)([this.selectedValue$,this.selectedValues$]).pipe((0,i.tap)(([e,t])=>{this.updateOptionSelection(e,t);let n=this.multi?t.join(`,`):e;if(this.internals?.setFormValue(n||null),this.required){let n=this.multi?t.length===0:!e;this.internals?.setValidity(n?{valueMissing:!0}:{},n?this.validationMessage||`Please select an option.`:void 0)}}),(0,i.takeUntil)(this.disconnecting)).subscribe(),this.inputValue$.pipe((0,i.distinctUntilChanged)(),(0,i.debounceTime)(this.debounceMs),(0,i.tap)(e=>{this.open&&this.filterOptions(e)}),(0,i.takeUntil)(this.disconnecting)).subscribe()}setupOptionHandlers(){this.options.forEach((e,t)=>{e.setAttribute(`role`,`option`),e.tabIndex=-1,e.id||=`${this.id}-option-${t}`,e.dataset.schmancyAutocompleteHandlers!==`attached`&&(e.dataset.schmancyAutocompleteHandlers=`attached`,(0,r.fromEvent)(e,`mousedown`).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(e=>e.preventDefault()),(0,r.fromEvent)(e,`click`).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(t=>{t.stopPropagation(),this.selectOption(e)}))})}updateOptionSelection(e,t){this.options.forEach(n=>{n.selected=this.multi?t.includes(n.value):n.value===e,n.setAttribute(`aria-selected`,String(n.selected))})}filterOptions(e){let t=e.trim();if(t){let e=this.options.map(e=>{let r=e.label||e.textContent||``,i=e.value,a=n.t(t,r),o=n.t(t,i);return{option:e,score:Math.max(1.1*a,o)}});e.sort((e,t)=>t.score-e.score);let r=0;e.forEach((e,t)=>{let{option:n,score:i}=e;i<this.similarityThreshold?n.hidden=!0:(n.hidden=!1,r++,n.style.order=String(t))}),this.visibleOptionsCount=r,this.hasResults=r>0}else this.options.forEach(e=>{e.hidden=!1,e.style.order=`0`}),this.visibleOptionsCount=this.options.length,this.hasResults=!0;this.announceToScreenReader(this.visibleOptionsCount>0?`${this.visibleOptionsCount} option${this.visibleOptionsCount===1?``:`s`} available.`:`No results found.`)}openDropdown(){this.open=!0,this.filterOptions(this.inputValue)}selectOption(e){if(this.multi){let t=this.selectedValues$.value,n=t.indexOf(e.value)>-1?t.filter(t=>t!==e.value):[...t,e.value];this.selectedValues$.next(n),this.announceToScreenReader(n.length>0?`Selected: ${this.getSelectedLabels().join(`, `)}`:`No options selected`),this.fireChangeEvent()}else this.selectedValue$.next(e.value),this.open=!1,this.fireChangeEvent(),this.inputValue=e.label||e.textContent||``,this.inputValue$.next(this.inputValue),this.announceToScreenReader(`Selected: ${e.label||e.textContent}`)}setupDocumentClickHandler(){(0,r.fromEvent)(document,`click`).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(e=>{if(!this.open)return;let t=e.composedPath();t.includes(this)||this.options.some(e=>t.includes(e))||(this.open=!1,this.updateInputDisplay())})}updateInputDisplay(){if(this.multi)return;let e=this.selectedValue$.value,t=this.options.find(t=>t.value===e);this.inputValue=t&&(t.label||t.textContent)||``,this.inputValue$.next(this.inputValue),this.inputElementRef.value&&(this.inputElementRef.value.value=this.inputValue)}getSelectedLabels(){return this.options.filter(e=>this.multi?this.selectedValues$.value.includes(e.value):e.value===this.selectedValue$.value).map(e=>e.label||e.textContent||``)}announceToScreenReader(e){let t=this.shadowRoot?.querySelector(`#live-status`);t&&(t.textContent=e)}fireChangeEvent(){let e={value:this.value};this.multi&&(e.values=[...this.selectedValues$.value]),this.dispatchEvent(new CustomEvent(`change`,{detail:e,bubbles:!0,composed:!0}))}checkValidity(){return!this.required||(this.multi?this.selectedValues$.value.length>0:!!this.selectedValue$.value)}reportValidity(){return this.inputElementRef.value?this.inputElementRef.value.reportValidity():this.checkValidity()}firstUpdated(){this.setupOptionHandlers(),this.updateInputDisplay(),(this.shadowRoot?.querySelector(`slot`))?.addEventListener(`slotchange`,()=>{this.setupOptionHandlers(),this.updateOptionSelection(this.selectedValue$.value,this.selectedValues$.value)})}handleChipRemove(e){let t=this.selectedValues$.value.filter(t=>t!==e);this.selectedValues$.next(t),this.fireChangeEvent(),this.announceToScreenReader(`Removed: ${this.getChipLabel(e)}`)}getChipLabel(e){let t=this.options.find(t=>t.value===e);return t&&(t.label||t.textContent)||e}focusTextInput(){this.inputElementRef.value&&this.inputElementRef.value.focus()}render(){let e=`${this.id}-desc`,{height:t,padding:n,fontSize:r,labelSize:i}=(()=>{switch(this.size){case`sm`:return{height:`min-h-[40px]`,padding:`px-2`,fontSize:`text-sm`,labelSize:`text-sm`};case`lg`:return{height:`min-h-[60px]`,padding:`px-5`,fontSize:`text-lg`,labelSize:`text-lg`};default:return{height:`min-h-[50px]`,padding:`px-4`,fontSize:`text-base`,labelSize:`text-base`}}})();return s.html`
|
|
2
|
+
<div class="relative">
|
|
3
|
+
<!-- Screen reader live region -->
|
|
4
|
+
<div id="live-status" role="status" aria-live="polite" class="sr-only"></div>
|
|
5
|
+
|
|
6
|
+
<!-- Description -->
|
|
7
|
+
${this.description?s.html`<div id="${e}" class="sr-only">${this.description}</div>`:``}
|
|
8
|
+
|
|
9
|
+
<!-- Custom input wrapper for Gmail-style chip input -->
|
|
10
|
+
<slot name="trigger">
|
|
11
|
+
${(0,d.when)(this.multi,()=>s.html`
|
|
12
|
+
<!-- Custom multi-select input with inline chips -->
|
|
13
|
+
<div class="relative">
|
|
14
|
+
${(0,d.when)(this.label,()=>s.html`
|
|
15
|
+
<label class="${(0,a.classMap)({"block mb-1 font-medium":!0,"text-primary-default":!this.error,"text-error-default":this.error,[i]:!0})}">
|
|
16
|
+
${this.label}${this.required?s.html`<span class="text-error-default ml-1">*</span>`:``}
|
|
17
|
+
</label>
|
|
18
|
+
`)}
|
|
19
|
+
<div
|
|
20
|
+
class="${(0,a.classMap)({"flex flex-wrap items-center gap-1":!0,[t]:!0,[n]:!0,"block w-full min-w-0 rounded-[8px] border-0":!0,"bg-surface-highest text-surface-on":!0,"ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset":!0,"ring-secondary-default focus-within:ring-secondary-default":!this.error,"ring-error-default focus-within:ring-error-default":this.error,"cursor-text transition-colors duration-200":!0})}"
|
|
21
|
+
@click=${()=>this.focusTextInput()}
|
|
22
|
+
role="combobox"
|
|
23
|
+
aria-autocomplete="list"
|
|
24
|
+
aria-haspopup="listbox"
|
|
25
|
+
aria-controls="options"
|
|
26
|
+
aria-expanded=${this.open}
|
|
27
|
+
>
|
|
28
|
+
<!-- Render chips inline -->
|
|
29
|
+
${(0,u.repeat)(this.selectedValues$.value,e=>e,e=>s.html`
|
|
30
|
+
<schmancy-input-chip
|
|
31
|
+
.value=${e}
|
|
32
|
+
@remove=${e=>this.handleChipRemove(e.detail.value)}
|
|
33
|
+
class="shrink-0 my-0.5"
|
|
34
|
+
>
|
|
35
|
+
${this.getChipLabel(e)}
|
|
36
|
+
</schmancy-input-chip>
|
|
37
|
+
`)}
|
|
38
|
+
|
|
39
|
+
<!-- Text input for typing -->
|
|
40
|
+
<input
|
|
41
|
+
${(0,l.ref)(this.inputElementRef)}
|
|
42
|
+
id="autocomplete-input"
|
|
43
|
+
type="text"
|
|
44
|
+
class="flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${r} font-medium text-surface-on placeholder:text-muted"
|
|
45
|
+
name=${this.name||this.label?.toLowerCase().replace(/\s+/g,`-`)||``}
|
|
46
|
+
.placeholder=${this.selectedValues$.value.length>0?`Add more...`:this.placeholder}
|
|
47
|
+
.value=${this.inputValue}
|
|
48
|
+
.autocomplete=${this.autocomplete}
|
|
49
|
+
aria-invalid=${this.error?`true`:`false`}
|
|
50
|
+
aria-required=${this.required?`true`:`false`}
|
|
51
|
+
aria-describedby=${this.error&&this.validationMessage?`${this.a11yId}-err`:s.nothing}
|
|
52
|
+
aria-label=${!this.label&&this.placeholder?this.placeholder:s.nothing}
|
|
53
|
+
@input=${e=>{let t=e.target.value;this.inputValue=t,this.inputValue$.next(t)}}
|
|
54
|
+
@focus=${e=>{e.stopPropagation(),this.inputValue=``,this.inputValue$.next(``),this.openDropdown()}}
|
|
55
|
+
@keydown=${e=>{this.handleKeyDown(e)}}
|
|
56
|
+
@blur=${()=>{this.handleAutoSelectOnBlur()}}
|
|
57
|
+
/>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<!-- Validation message -->
|
|
61
|
+
${(0,d.when)(this.error&&this.validationMessage,()=>s.html`
|
|
62
|
+
<div id="${this.a11yId}-err" class="mt-1 text-sm text-error-default" role="alert">
|
|
63
|
+
${this.validationMessage}
|
|
64
|
+
</div>
|
|
65
|
+
`)}
|
|
66
|
+
</div>
|
|
67
|
+
`,()=>s.html`
|
|
68
|
+
<!-- Regular single-select input -->
|
|
69
|
+
<schmancy-input
|
|
70
|
+
.size=${this.size}
|
|
71
|
+
${(0,l.ref)(this.inputElementRef)}
|
|
72
|
+
id="autocomplete-input"
|
|
73
|
+
class="w-full"
|
|
74
|
+
.name=${this.name||this.label?.toLowerCase().replace(/\s+/g,`-`)||``}
|
|
75
|
+
.label=${this.label}
|
|
76
|
+
.placeholder=${this.placeholder}
|
|
77
|
+
.required=${this.required}
|
|
78
|
+
.value=${this.inputValue}
|
|
79
|
+
type="text"
|
|
80
|
+
autocomplete=${this.autocomplete}
|
|
81
|
+
clickable
|
|
82
|
+
role="combobox"
|
|
83
|
+
aria-autocomplete="list"
|
|
84
|
+
aria-haspopup="listbox"
|
|
85
|
+
aria-controls="options"
|
|
86
|
+
aria-expanded=${this.open}
|
|
87
|
+
aria-describedby=${(0,c.ifDefined)(this.description?e:void 0)}
|
|
88
|
+
@input=${e=>{let t=e.target.value;this.inputValue=t,this.inputValue$.next(t)}}
|
|
89
|
+
@focus=${e=>{e.stopPropagation(),this.openDropdown()}}
|
|
90
|
+
@click=${e=>{e.stopPropagation(),this.openDropdown()}}
|
|
91
|
+
@keydown=${e=>{this.handleKeyDown(e)}}
|
|
92
|
+
@blur=${()=>{this.handleAutoSelectOnBlur()}}
|
|
93
|
+
>
|
|
94
|
+
</schmancy-input>
|
|
95
|
+
`)}
|
|
96
|
+
</slot>
|
|
97
|
+
|
|
98
|
+
<!-- Options dropdown -->
|
|
99
|
+
<ul
|
|
100
|
+
id="options"
|
|
101
|
+
class=${(0,a.classMap)({absolute:!0,"z-[1000]":!0,"mt-1":!0,"w-full":!0,"rounded-md":!0,"shadow-md":!0,"overflow-auto":!0,"min-w-full":!0,"bg-surface-low":!0,flex:!0,"flex-col":!0})}
|
|
102
|
+
role="listbox"
|
|
103
|
+
aria-multiselectable=${this.multi?`true`:`false`}
|
|
104
|
+
aria-label=${`${this.label||`Options`} dropdown`}
|
|
105
|
+
?hidden=${!this.open}
|
|
106
|
+
style="max-height: ${this.maxHeight}; display: ${this.open?`flex`:`none`};"
|
|
107
|
+
@slotchange=${()=>{this.setupOptionHandlers()}}
|
|
108
|
+
>
|
|
109
|
+
<slot></slot>
|
|
110
|
+
${this.hasResults?``:s.html`
|
|
111
|
+
<li class="px-3 py-2 text-sm text-muted">No results found</li>
|
|
112
|
+
`}
|
|
113
|
+
</ul>
|
|
114
|
+
</div>
|
|
115
|
+
`}handleAutoSelectOnBlur(){if(this.multi||!this.open||!this.inputValue.trim())return;let e=this.inputValue.trim(),t=null,r=0;this.options.forEach(i=>{if(i.hidden)return;let a=i.label||i.textContent||``,o=i.value,s=n.t(e,a),c=n.t(e,o),l=Math.max(1.1*s,c);l>r&&l>=this.similarityThreshold&&(r=l,t=i)}),t&&(this.selectedValue$.next(t.value),this.inputValue=t.label||t.textContent||``,this.inputValue$.next(this.inputValue),this.open=!1)}handleKeyDown(e){let t=this.open,n=this.selectedValues$.value;if(this.multi&&e.key===`Backspace`&&!this.inputValue&&n.length>0&&!t){e.preventDefault();let t=n[n.length-1];this.handleChipRemove(t);return}if(!t&&(e.key===`ArrowDown`||e.key===`Enter`))return e.preventDefault(),this.openDropdown(),void(0,r.timer)(10).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(()=>{this.options.find(e=>!e.hidden)?.focus()});if(!t)return;let a=this.options.filter(e=>!e.hidden).toSorted((e,t)=>parseInt(e.style.order||`0`)-parseInt(t.style.order||`0`)),o=a.find(e=>e===document.activeElement),s=o?a.indexOf(o):-1;switch(e.key){case`Escape`:e.preventDefault(),this.open=!1,this.updateInputDisplay(),this.inputElementRef.value?.focus();break;case`Tab`:this.open=!1,this.updateInputDisplay();break;case`ArrowDown`:e.preventDefault(),a[s<a.length-1?s+1:0]?.focus();break;case`ArrowUp`:e.preventDefault(),a[s>0?s-1:a.length-1]?.focus();break;case`Home`:e.preventDefault(),a[0]?.focus();break;case`End`:e.preventDefault(),a[a.length-1]?.focus();break;case`Enter`:case` `:o&&(e.preventDefault(),this.selectOption(o))}}};e.u([(0,o.property)({type:String})],f.prototype,`placeholder`,void 0),e.u([(0,o.property)({type:String})],f.prototype,`maxHeight`,void 0),e.u([(0,o.property)({type:Boolean})],f.prototype,`multi`,void 0),e.u([(0,o.property)({type:String})],f.prototype,`description`,void 0),e.u([(0,o.property)({type:String,reflect:!0})],f.prototype,`size`,void 0),e.u([(0,o.property)({type:String})],f.prototype,`autocomplete`,void 0),e.u([(0,o.property)({type:Number})],f.prototype,`debounceMs`,void 0),e.u([(0,o.property)({type:Number})],f.prototype,`similarityThreshold`,void 0),e.u([(0,o.property)({type:Array})],f.prototype,`values`,null),e.u([(0,o.property)({type:String,reflect:!0})],f.prototype,`value`,null),e.u([(0,o.state)()],f.prototype,`open`,void 0),e.u([(0,o.state)()],f.prototype,`inputValue`,void 0),e.u([(0,o.state)()],f.prototype,`visibleOptionsCount`,void 0),e.u([(0,o.state)()],f.prototype,`hasResults`,void 0),e.u([(0,o.query)(`#options`)],f.prototype,`listbox`,void 0),e.u([(0,o.query)(`sch-input`)],f.prototype,`input`,void 0),e.u([(0,o.queryAssignedElements)({flatten:!0})],f.prototype,`options`,void 0),f=e.u([(0,o.customElement)(`schmancy-autocomplete`)],f);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete-DMmxsvUe.cjs","names":[],"sources":["../src/form/fields/autocomplete/autocomplete.scss?inline","../src/form/fields/autocomplete/autocomplete.ts"],"sourcesContent":[":host {\n\tdisplay: block;\n\tborder: unset !important;\n\tline-height: unset !important;\n\tbackground: unset !important;\n\tpadding: unset !important;\n\tfont-size: unset !important;\n\tbox-shadow: unset !important;\n}\n\n:host:focus {\n\tbox-shadow: unset !important;\n}\n\n@keyframes onAutoFillStart {\n\tfrom {/**/}\n\tto {/**/}\n}\n\nsch-input::part(input):-webkit-autofill,\nsch-input input:-webkit-autofill {\n\tanimation-name: onAutoFillStart;\n\tanimation-duration: 1ms;\n}\n","import { SchmancyFormField } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html, nothing, unsafeCSS } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\nimport {\n BehaviorSubject,\n combineLatest,\n fromEvent,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n takeUntil,\n tap\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../../../utils/search'\n// Import chip component for multi-select display\nimport '../../../chips/input-chip'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n/**\n * Autocomplete input component with filtering and multi-select support.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} label - Label text displayed above the input\n * @prop {string} placeholder - Placeholder text for the input\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} multi - Enable multi-select mode\n * @prop {string} value - Selected value (single select mode)\n * @prop {string[]} values - Selected values (multi-select mode)\n */\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends SchmancyFormField(unsafeCSS(style)) {\n\n // `formAssociated`, `internals`, `attachInternals`, `name`, `label`,\n // `required`, `disabled`, `error`, `validationMessage`, `hint`, `id`,\n // `validateOn`, `touched/dirty/submitted`, `markTouched/markSubmitted`,\n // `setCustomValidity`, `formDisabledCallback`, FIELD_CONNECT_EVENT dispatch\n // — all from the mixin.\n\n /** Override mixin's resetForm with autocomplete-specific subject reset. */\n override resetForm(): void {\n if (this.multi) {\n this.selectedValues$.next([])\n } else {\n this.selectedValue$.next('')\n }\n this.inputValue = ''\n this.inputValue$.next('')\n super.resetForm()\n }\n\n // Track whether value/values have been explicitly set\n valueSet: boolean = false\n valuesSet: boolean = false\n\n // Autocomplete-specific properties only — `name`, `label`, `required`,\n // `error`, `validationMessage` come from the mixin.\n @property({ type: String }) placeholder = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'off'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n private readonly a11yId = `schmancy-autocomplete-${Math.random().toString(36).slice(2, 10)}`\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this.selectedValues$.value]\n }\n set values(vals: string[]) {\n this.valuesSet = true\n this.selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property — narrowed override of the mixin's wide value union.\n @property({ type: String, reflect: true })\n override get value(): string {\n return this.multi\n ? this.selectedValues$.value.join(',')\n : this.selectedValue$.value\n }\n override set value(val: string) {\n this.valueSet = true\n if (this.multi) {\n const newValues = val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n const currentValues = this.selectedValues$.value\n // Only update if values actually changed\n if (JSON.stringify(newValues) !== JSON.stringify(currentValues)) {\n this.selectedValues$.next(newValues)\n }\n } else {\n // Only update if value actually changed\n if (val !== this.selectedValue$.value) {\n this.selectedValue$.next(val)\n // Update the input display when value is set\n this.updateInputDisplay()\n }\n }\n }\n\n // State\n @state() private open = false\n @state() private inputValue = ''\n @state() private visibleOptionsCount = 0\n @state() private hasResults = true\n\n // DOM references\n @query('#options') listbox!: HTMLUListElement\n @query('sch-input') input!: SchmancyInput\n @queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n private inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects - only what we actually need\n private selectedValue$ = new BehaviorSubject<string>('')\n private selectedValues$ = new BehaviorSubject<string[]>([])\n private inputValue$ = new BehaviorSubject<string>('')\n\n override connectedCallback() {\n // FIELD_CONNECT_EVENT is dispatched by the mixin's connectedCallback.\n super.connectedCallback()\n this.setupAutocompleteLogic()\n this.setupDocumentClickHandler()\n }\n\n private setupAutocompleteLogic() {\n // Sync selection state\n combineLatest([\n this.selectedValue$,\n this.selectedValues$\n ]).pipe(\n tap(([selectedValue, selectedValues]) => {\n this.updateOptionSelection(selectedValue, selectedValues)\n // Keep ElementInternals form value in sync with selection (single and multi).\n const formValue = this.multi ? selectedValues.join(',') : selectedValue\n this.internals?.setFormValue(formValue || null)\n if (this.required) {\n const missing = this.multi ? selectedValues.length === 0 : !selectedValue\n this.internals?.setValidity(\n missing ? { valueMissing: true } : {},\n missing ? this.validationMessage || 'Please select an option.' : undefined,\n )\n }\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Filter options based on input\n this.inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n tap(searchTerm => {\n if (this.open) {\n this.filterOptions(searchTerm)\n }\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private setupOptionHandlers() {\n this.options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n // Idempotent: slotchange may fire repeatedly for the same option nodes,\n // and addEventListener doesn't replace prior handlers like onfoo= did.\n if (option.dataset.schmancyAutocompleteHandlers === 'attached') return\n option.dataset.schmancyAutocompleteHandlers = 'attached'\n\n // Prevent blur handler from interfering with option selection\n fromEvent<MouseEvent>(option, 'mousedown')\n .pipe(takeUntil(this.disconnecting))\n .subscribe(e => e.preventDefault())\n\n // Handle the actual selection\n fromEvent<MouseEvent>(option, 'click')\n .pipe(takeUntil(this.disconnecting))\n .subscribe(e => {\n e.stopPropagation()\n this.selectOption(option)\n })\n })\n }\n\n private updateOptionSelection(selectedValue: string, selectedValues: string[]) {\n this.options.forEach(option => {\n option.selected = this.multi\n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }\n\n private filterOptions(searchTerm: string) {\n const term = searchTerm.trim()\n\n if (!term) {\n // Show all options if no search term\n this.options.forEach(option => {\n option.hidden = false\n option.style.order = '0'\n })\n this.visibleOptionsCount = this.options.length\n this.hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = this.options.map(option => {\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n const score = Math.max(labelScore * 1.1, valueScore)\n\n return { option, score }\n })\n\n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n\n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n option.style.order = String(index)\n }\n })\n\n this.visibleOptionsCount = visibleCount\n this.hasResults = visibleCount > 0\n }\n\n this.announceToScreenReader(\n this.visibleOptionsCount > 0\n ? `${this.visibleOptionsCount} option${this.visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }\n\n private openDropdown() {\n this.open = true\n // Reset filters based on current input value when dropdown opens\n this.filterOptions(this.inputValue)\n }\n\n private selectOption(option: SchmancyOption) {\n if (this.multi) {\n const currentValues = this.selectedValues$.value\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? currentValues.filter(v => v !== option.value)\n : [...currentValues, option.value]\n\n this.selectedValues$.next(newValues)\n this.announceToScreenReader(\n newValues.length > 0\n ? `Selected: ${this.getSelectedLabels().join(', ')}`\n : 'No options selected'\n )\n this.fireChangeEvent()\n } else {\n // Update value first\n this.selectedValue$.next(option.value)\n\n // Close dropdown IMMEDIATELY to prevent blur handler from firing\n this.open = false\n\n // Now fire event with the NEW value\n this.fireChangeEvent()\n\n // Update UI\n this.inputValue = option.label || option.textContent || ''\n this.inputValue$.next(this.inputValue)\n\n this.announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }\n\n private setupDocumentClickHandler() {\n fromEvent<MouseEvent>(document, 'click')\n .pipe(takeUntil(this.disconnecting))\n .subscribe(e => {\n if (!this.open) return\n const path = e.composedPath()\n if (!path.includes(this) && !this.options.some(opt => path.includes(opt))) {\n this.open = false\n this.updateInputDisplay()\n }\n })\n }\n\n\n private updateInputDisplay() {\n // For multi-select, we don't update input display since chips show the selections\n if (this.multi) return\n\n const selectedValue = this.selectedValue$.value\n const option = this.options.find(opt => opt.value === selectedValue)\n this.inputValue = option ? option.label || option.textContent || '' : ''\n this.inputValue$.next(this.inputValue)\n\n if (this.inputElementRef.value) {\n this.inputElementRef.value.value = this.inputValue\n }\n }\n\n private getSelectedLabels(): string[] {\n return this.options\n .filter(option => \n this.multi \n ? this.selectedValues$.value.includes(option.value)\n : option.value === this.selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this.selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this.selectedValues$.value.length > 0 \n : Boolean(this.selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this.inputElementRef.value) {\n return this.inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n this.setupOptionHandlers()\n\n // Sync initial value with display after options are available\n this.updateInputDisplay()\n\n // Update options when slot changes\n const slot = this.shadowRoot?.querySelector('slot')\n slot?.addEventListener('slotchange', () => {\n this.setupOptionHandlers()\n this.updateOptionSelection(this.selectedValue$.value, this.selectedValues$.value)\n })\n }\n\n private handleChipRemove(value: string) {\n const currentValues = this.selectedValues$.value\n const newValues = currentValues.filter(v => v !== value)\n this.selectedValues$.next(newValues)\n this.fireChangeEvent()\n this.announceToScreenReader(`Removed: ${this.getChipLabel(value)}`)\n }\n\n private getChipLabel(value: string): string {\n const option = this.options.find(opt => opt.value === value)\n return option ? option.label || option.textContent || value : value\n }\n\n private focusTextInput() {\n if (this.inputElementRef.value) {\n this.inputElementRef.value.focus()\n }\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n // Get size-based styling to match Schmancy input\n const getSizeStyles = () => {\n switch (this.size) {\n case 'sm':\n return {\n height: 'min-h-[40px]',\n padding: 'px-2',\n fontSize: 'text-sm', // 14px\n labelSize: 'text-sm'\n }\n case 'lg':\n return {\n height: 'min-h-[60px]',\n padding: 'px-5',\n fontSize: 'text-lg', // 18px\n labelSize: 'text-lg'\n }\n case 'md':\n default:\n return {\n height: 'min-h-[50px]',\n padding: 'px-4',\n fontSize: 'text-base', // 16px\n labelSize: 'text-base'\n }\n }\n }\n\n const { height, padding, fontSize, labelSize } = getSizeStyles()\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Custom input wrapper for Gmail-style chip input -->\n <slot name=\"trigger\">\n ${when(this.multi,\n () => html`\n <!-- Custom multi-select input with inline chips -->\n <div class=\"relative\">\n ${when(this.label, () => html`\n <label class=\"${classMap({\n 'block mb-1 font-medium': true,\n 'text-primary-default': !this.error,\n 'text-error-default': this.error,\n [labelSize]: true\n })}\">\n ${this.label}${this.required ? html`<span class=\"text-error-default ml-1\">*</span>` : ''}\n </label>\n `)}\n <div\n class=\"${classMap({\n 'flex flex-wrap items-center gap-1': true,\n [height]: true,\n [padding]: true,\n 'block w-full min-w-0 rounded-[8px] border-0': true,\n 'bg-surface-highest text-surface-on': true,\n 'ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset': true,\n 'ring-secondary-default focus-within:ring-secondary-default': !this.error,\n 'ring-error-default focus-within:ring-error-default': this.error,\n 'cursor-text transition-colors duration-200': true\n })}\"\n @click=${() => this.focusTextInput()}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this.open}\n >\n <!-- Render chips inline -->\n ${repeat(\n this.selectedValues$.value,\n value => value,\n value => html`\n <schmancy-input-chip\n .value=${value}\n @remove=${(e: CustomEvent) => this.handleChipRemove(e.detail.value)}\n class=\"shrink-0 my-0.5\"\n >\n ${this.getChipLabel(value)}\n </schmancy-input-chip>\n `\n )}\n\n <!-- Text input for typing -->\n <input\n ${ref(this.inputElementRef)}\n id=\"autocomplete-input\"\n type=\"text\"\n class=\"flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${fontSize} font-medium text-surface-on placeholder:text-muted\"\n name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n .placeholder=${this.selectedValues$.value.length > 0 ? 'Add more...' : this.placeholder}\n .value=${this.inputValue}\n .autocomplete=${this.autocomplete}\n aria-invalid=${this.error ? 'true' : 'false'}\n aria-required=${this.required ? 'true' : 'false'}\n aria-describedby=${this.error && this.validationMessage ? `${this.a11yId}-err` : nothing}\n aria-label=${!this.label && this.placeholder ? this.placeholder : nothing}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this.inputValue = value\n this.inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n // Clear input on focus for new searches\n this.inputValue = ''\n this.inputValue$.next('')\n this.openDropdown()\n }}\n @keydown=${(e: KeyboardEvent) => {\n this.handleKeyDown(e)\n }}\n @blur=${() => {\n this.handleAutoSelectOnBlur()\n }}\n />\n </div>\n\n <!-- Validation message -->\n ${when(this.error && this.validationMessage, () => html`\n <div id=\"${this.a11yId}-err\" class=\"mt-1 text-sm text-error-default\" role=\"alert\">\n ${this.validationMessage}\n </div>\n `)}\n </div>\n `,\n () => html`\n <!-- Regular single-select input -->\n <schmancy-input\n .size=${this.size}\n ${ref(this.inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this.inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this.open}\n aria-describedby=${ifDefined(this.description ? descriptionId : undefined)}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this.inputValue = value\n this.inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n this.openDropdown()\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this.openDropdown()\n }}\n @keydown=${(e: KeyboardEvent) => {\n this.handleKeyDown(e)\n }}\n @blur=${() => {\n this.handleAutoSelectOnBlur()\n }}\n >\n </schmancy-input>\n `\n )}\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this.open}\n style=\"max-height: ${this.maxHeight}; display: ${this.open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this.setupOptionHandlers()\n }}\n >\n <slot></slot>\n ${!this.hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n `\n }\n\n private handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this.open || !this.inputValue.trim()) {\n return\n }\n \n const searchTerm = this.inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this.options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Silently update the selected value without firing change event\n this.selectedValue$.next(bestMatch.value)\n this.inputValue = bestMatch.label || bestMatch.textContent || ''\n this.inputValue$.next(this.inputValue)\n this.open = false\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const isOpen = this.open\n const selectedValues = this.selectedValues$.value\n\n // Handle backspace to remove last chip in multi-select when input is empty\n if (this.multi && event.key === 'Backspace' && !this.inputValue && selectedValues.length > 0 && !isOpen) {\n event.preventDefault()\n const lastValue = selectedValues[selectedValues.length - 1]\n this.handleChipRemove(lastValue)\n return\n }\n\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this.openDropdown()\n\n timer(10)\n .pipe(takeUntil(this.disconnecting))\n .subscribe(() => {\n const firstVisible = this.options.find(opt => !opt.hidden)\n firstVisible?.focus()\n })\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = this.options.filter(opt => !opt.hidden)\n .toSorted((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n\n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this.open = false\n this.updateInputDisplay()\n this.inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this.open = false\n this.updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this.selectOption(focusedOption)\n }\n break\n }\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}\n"],"mappings":"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"}
|