@mhmo91/schmancy 0.5.22 → 0.5.23
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/{animated-text-CLEr78FV.js → animated-text-Do2JCORX.js} +3 -3
- package/dist/{animated-text-CLEr78FV.js.map → animated-text-Do2JCORX.js.map} +1 -1
- package/dist/{animated-text-Bic7z7SI.cjs → animated-text-f2NuhTiS.cjs} +2 -2
- package/dist/{animated-text-Bic7z7SI.cjs.map → animated-text-f2NuhTiS.cjs.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-tIK_P5JR.js → area.component-BSMLE67D.js} +3 -3
- package/dist/{area.component-tIK_P5JR.js.map → area.component-BSMLE67D.js.map} +1 -1
- package/dist/{area.component-BrvNYy7Z.cjs → area.component-Dez2yju_.cjs} +2 -2
- package/dist/{area.component-BrvNYy7Z.cjs.map → area.component-Dez2yju_.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/autocomplete-CTrPzVTE.js +332 -0
- package/dist/autocomplete-CTrPzVTE.js.map +1 -0
- package/dist/autocomplete-D-p-hOUD.cjs +112 -0
- package/dist/autocomplete-D-p-hOUD.cjs.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-39MTGkwX.js → avatar-BbJkXEbj.js} +51 -51
- package/dist/{avatar-39MTGkwX.js.map → avatar-BbJkXEbj.js.map} +1 -1
- package/dist/{avatar-QYDHa7s3.cjs → avatar-lHK31d6x.cjs} +2 -2
- package/dist/{avatar-QYDHa7s3.cjs.map → avatar-lHK31d6x.cjs.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-DP98_5qG.cjs → boat-BdZ8qIVE.cjs} +2 -2
- package/dist/{boat-DP98_5qG.cjs.map → boat-BdZ8qIVE.cjs.map} +1 -1
- package/dist/{boat-BdJ1jyK_.js → boat-Jju9mnxp.js} +2 -2
- package/dist/{boat-BdJ1jyK_.js.map → boat-Jju9mnxp.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-4mBWkzKG.js → checkbox-C-iKquia.js} +101 -103
- package/dist/checkbox-C-iKquia.js.map +1 -0
- package/dist/checkbox-DWZfWmmN.cjs +40 -0
- package/dist/checkbox-DWZfWmmN.cjs.map +1 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-hWI3erYE.cjs → code-preview-4wU5lZC2.cjs} +2 -2
- package/dist/{code-preview-hWI3erYE.cjs.map → code-preview-4wU5lZC2.cjs.map} +1 -1
- package/dist/{code-preview-CrsExDWj.js → code-preview-BRMIOyPn.js} +2 -2
- package/dist/{code-preview-CrsExDWj.js.map → code-preview-BRMIOyPn.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-object-u5gBaozZ.js → context-object-BE1o2XB3.js} +158 -159
- package/dist/context-object-BE1o2XB3.js.map +1 -0
- package/dist/context-object-DA9DM9QJ.cjs +2 -0
- package/dist/context-object-DA9DM9QJ.cjs.map +1 -0
- package/dist/{date-range-CM-5J_JO.js → date-range-De83wfZy.js} +3 -3
- package/dist/{date-range-CM-5J_JO.js.map → date-range-De83wfZy.js.map} +1 -1
- package/dist/{date-range-B0yz-_Zv.cjs → date-range-RKsMmIJo.cjs} +2 -2
- package/dist/{date-range-B0yz-_Zv.cjs.map → date-range-RKsMmIJo.cjs.map} +1 -1
- package/dist/{date-range-inline-P8P2ixg1.cjs → date-range-inline-CYfe4cSe.cjs} +2 -2
- package/dist/{date-range-inline-P8P2ixg1.cjs.map → date-range-inline-CYfe4cSe.cjs.map} +1 -1
- package/dist/{date-range-inline-CPI4EyL0.js → date-range-inline-haX8zJj5.js} +3 -3
- package/dist/{date-range-inline-CPI4EyL0.js.map → date-range-inline-haX8zJj5.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-1aTGz1ZH.cjs → delay-BRnV1hev.cjs} +2 -2
- package/dist/{delay-1aTGz1ZH.cjs.map → delay-BRnV1hev.cjs.map} +1 -1
- package/dist/{delay-Lg_7K_Vi.js → delay-DIvTLOWT.js} +2 -2
- package/dist/{delay-Lg_7K_Vi.js.map → delay-DIvTLOWT.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-uxsPpjMp.cjs → details-BdJ7abcF.cjs} +2 -2
- package/dist/{details-uxsPpjMp.cjs.map → details-BdJ7abcF.cjs.map} +1 -1
- package/dist/{details-gUvX6sxc.js → details-YP34eEOP.js} +2 -2
- package/dist/{details-gUvX6sxc.js.map → details-YP34eEOP.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-DKLDmgfz.js → dialog-content-B1PDSXlF.js} +3 -3
- package/dist/{dialog-content-DKLDmgfz.js.map → dialog-content-B1PDSXlF.js.map} +1 -1
- package/dist/{dialog-content-CvVd9EwS.cjs → dialog-content-DVFcNrW6.cjs} +2 -2
- package/dist/{dialog-content-CvVd9EwS.cjs.map → dialog-content-DVFcNrW6.cjs.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-CHGffGro.cjs → divider-Ck3Pm0Sj.cjs} +2 -2
- package/dist/{divider-CHGffGro.cjs.map → divider-Ck3Pm0Sj.cjs.map} +1 -1
- package/dist/{divider-EvBnlb2a.js → divider-ZpoqXrpr.js} +3 -3
- package/dist/{divider-EvBnlb2a.js.map → divider-ZpoqXrpr.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-NGBIkvdR.js → dropdown-content-CaejLE2F.js} +3 -3
- package/dist/{dropdown-content-NGBIkvdR.js.map → dropdown-content-CaejLE2F.js.map} +1 -1
- package/dist/{dropdown-content-FVKimBQR.cjs → dropdown-content-Cb7bvik_.cjs} +2 -2
- package/dist/{dropdown-content-FVKimBQR.cjs.map → dropdown-content-Cb7bvik_.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-DxqCC99q.cjs → email-recipients-6po8vlOh.cjs} +2 -2
- package/dist/{email-recipients-DxqCC99q.cjs.map → email-recipients-6po8vlOh.cjs.map} +1 -1
- package/dist/{email-recipients-CXFSIsL-.js → email-recipients-Ba_Otsk0.js} +5 -5
- package/dist/{email-recipients-CXFSIsL-.js.map → email-recipients-Ba_Otsk0.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-DisTVvBI.cjs → flex-CDA_38jQ.cjs} +2 -2
- package/dist/{flex-DisTVvBI.cjs.map → flex-CDA_38jQ.cjs.map} +1 -1
- package/dist/{flex-Cm4nZM9q.js → flex-CLQrGtIm.js} +2 -2
- package/dist/{flex-Cm4nZM9q.js.map → flex-CLQrGtIm.js.map} +1 -1
- package/dist/{form-SMbhjYsC.cjs → form-B7-c3KWc.cjs} +2 -2
- package/dist/{form-SMbhjYsC.cjs.map → form-B7-c3KWc.cjs.map} +1 -1
- package/dist/{form-BU9TBjfk.js → form-DtrqYBas.js} +2 -2
- package/dist/{form-BU9TBjfk.js.map → form-DtrqYBas.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-DxhnL3Kb.js → formField.mixin-BPjq6dKf.js} +2 -2
- package/dist/{formField.mixin-DxhnL3Kb.js.map → formField.mixin-BPjq6dKf.js.map} +1 -1
- package/dist/{formField.mixin-DYkeOpES.cjs → formField.mixin-C87lQQIw.cjs} +2 -2
- package/dist/{formField.mixin-DYkeOpES.cjs.map → formField.mixin-C87lQQIw.cjs.map} +1 -1
- package/dist/{icon-BT_1B5_G.cjs → icon-B7ChIXLP.cjs} +2 -2
- package/dist/{icon-BT_1B5_G.cjs.map → icon-B7ChIXLP.cjs.map} +1 -1
- package/dist/{icon-Cgd3NUcv.js → icon-C6sk1e1d.js} +2 -2
- package/dist/{icon-Cgd3NUcv.js.map → icon-C6sk1e1d.js.map} +1 -1
- package/dist/{icon-button-C5hq1cKD.cjs → icon-button-CAUrSeGm.cjs} +2 -2
- package/dist/{icon-button-C5hq1cKD.cjs.map → icon-button-CAUrSeGm.cjs.map} +1 -1
- package/dist/{icon-button-DsjqusZz.js → icon-button-CU2UDZR7.js} +3 -3
- package/dist/{icon-button-DsjqusZz.js.map → icon-button-CU2UDZR7.js.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 +51 -51
- package/dist/{input-D3qmQZ-Y.cjs → input-BIOflk_4.cjs} +2 -2
- package/dist/{input-D3qmQZ-Y.cjs.map → input-BIOflk_4.cjs.map} +1 -1
- package/dist/{input-Bj4MTOC9.js → input-BdadJyMU.js} +4 -4
- package/dist/{input-Bj4MTOC9.js.map → input-BdadJyMU.js.map} +1 -1
- package/dist/{input-chip-DiThsRoi.js → input-chip-Ddvjmzdt.js} +2 -2
- package/dist/{input-chip-DiThsRoi.js.map → input-chip-Ddvjmzdt.js.map} +1 -1
- package/dist/{input-chip-CbD-eDs-.cjs → input-chip-IrLdDdsH.cjs} +2 -2
- package/dist/{input-chip-CbD-eDs-.cjs.map → input-chip-IrLdDdsH.cjs.map} +1 -1
- 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-5Y_CGGJF.cjs → list-DHqttG-L.cjs} +2 -2
- package/dist/{list-5Y_CGGJF.cjs.map → list-DHqttG-L.cjs.map} +1 -1
- package/dist/{list-CAFpmXsb.js → list-tM2KMQEk.js} +2 -2
- package/dist/{list-CAFpmXsb.js.map → list-tM2KMQEk.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-Bv6DGuhe.js → litElement.mixin-3N_m8Nzd.js} +2 -2
- package/dist/{litElement.mixin-Bv6DGuhe.js.map → litElement.mixin-3N_m8Nzd.js.map} +1 -1
- package/dist/{litElement.mixin-rWG9s46P.cjs → litElement.mixin-Df8xHue5.cjs} +2 -2
- package/dist/{litElement.mixin-rWG9s46P.cjs.map → litElement.mixin-Df8xHue5.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-yv8FB9mG.js → map-whBWXMf1.js} +2 -2
- package/dist/{map-yv8FB9mG.js.map → map-whBWXMf1.js.map} +1 -1
- package/dist/{map-bTOQf8Jm.cjs → map-wuM8gVOo.cjs} +2 -2
- package/dist/{map-bTOQf8Jm.cjs.map → map-wuM8gVOo.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-CPIoKlRw.cjs → media-CTAUAb26.cjs} +2 -2
- package/dist/{media-CPIoKlRw.cjs.map → media-CTAUAb26.cjs.map} +1 -1
- package/dist/{media-CA52MXd3.js → media-DQi9RiAW.js} +2 -2
- package/dist/{media-CA52MXd3.js.map → media-DQi9RiAW.js.map} +1 -1
- package/dist/{menu-BKO9PgJq.js → menu-C_i7sMLn.js} +3 -3
- package/dist/{menu-BKO9PgJq.js.map → menu-C_i7sMLn.js.map} +1 -1
- package/dist/{menu-Cak8SbFx.cjs → menu-d6lQa4kG.cjs} +2 -2
- package/dist/{menu-Cak8SbFx.cjs.map → menu-d6lQa4kG.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/{navigation-rail-C8OOb0V3.js → navigation-rail-Br-sKVac.js} +3 -3
- package/dist/{navigation-rail-C8OOb0V3.js.map → navigation-rail-Br-sKVac.js.map} +1 -1
- package/dist/{navigation-rail-D1iYDMy2.cjs → navigation-rail-ChEA8naU.cjs} +2 -2
- package/dist/{navigation-rail-D1iYDMy2.cjs.map → navigation-rail-ChEA8naU.cjs.map} +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-service-jfBwJ2TN.js → notification-service-DDqJgrdo.js} +4 -4
- package/dist/{notification-service-jfBwJ2TN.js.map → notification-service-DDqJgrdo.js.map} +1 -1
- package/dist/{notification-service-DaXxcXyj.cjs → notification-service-Dku7plm9.cjs} +2 -2
- package/dist/{notification-service-DaXxcXyj.cjs.map → notification-service-Dku7plm9.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-C5gy3egX.js → notify-CdiZg2_t.js} +2 -2
- package/dist/{notify-C5gy3egX.js.map → notify-CdiZg2_t.js.map} +1 -1
- package/dist/{notify-Dd5h2l-v.cjs → notify-fV1Z6dpj.cjs} +2 -2
- package/dist/{notify-Dd5h2l-v.cjs.map → notify-fV1Z6dpj.cjs.map} +1 -1
- package/dist/{option-D7b-uGff.js → option--zfJKePL.js} +2 -2
- package/dist/{option-D7b-uGff.js.map → option--zfJKePL.js.map} +1 -1
- package/dist/{option-C6PwIhut.cjs → option-CiztepV4.cjs} +2 -2
- package/dist/{option-C6PwIhut.cjs.map → option-CiztepV4.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-xwk5dfeQ.js → payment-card-form-Bi6IhJNn.js} +3 -3
- package/dist/{payment-card-form-xwk5dfeQ.js.map → payment-card-form-Bi6IhJNn.js.map} +1 -1
- package/dist/{payment-card-form-DTfoZiiN.cjs → payment-card-form-DwD6L0p_.cjs} +2 -2
- package/dist/{payment-card-form-DTfoZiiN.cjs.map → payment-card-form-DwD6L0p_.cjs.map} +1 -1
- package/dist/{progress-D-5gThOU.js → progress-72O6pPs_.js} +2 -2
- package/dist/{progress-D-5gThOU.js.map → progress-72O6pPs_.js.map} +1 -1
- package/dist/{progress-sFt6EeRy.cjs → progress-CoxNFuk8.cjs} +2 -2
- package/dist/{progress-sFt6EeRy.cjs.map → progress-CoxNFuk8.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-Cc5fCDdU.cjs → radio-button-CNy9D8nw.cjs} +2 -2
- package/dist/{radio-button-Cc5fCDdU.cjs.map → radio-button-CNy9D8nw.cjs.map} +1 -1
- package/dist/{radio-button-CZq8Z-V-.js → radio-button-DAPfHWim.js} +3 -3
- package/dist/{radio-button-CZq8Z-V-.js.map → radio-button-DAPfHWim.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-Cb-cUZWP.cjs → schmancy-steps-container-BWySiig4.cjs} +2 -2
- package/dist/{schmancy-steps-container-Cb-cUZWP.cjs.map → schmancy-steps-container-BWySiig4.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-DkPckhRw.js → schmancy-steps-container-BxzKa7RY.js} +2 -2
- package/dist/{schmancy-steps-container-DkPckhRw.js.map → schmancy-steps-container-BxzKa7RY.js.map} +1 -1
- package/dist/{select-CHgsFxnz.js → select-DM2lJWsO.js} +3 -3
- package/dist/{select-CHgsFxnz.js.map → select-DM2lJWsO.js.map} +1 -1
- package/dist/{select-BszKwEA_.cjs → select-l1ye_NvA.cjs} +2 -2
- package/dist/{select-BszKwEA_.cjs.map → select-l1ye_NvA.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{selector-hook-ChImS_JT.js → selector-hook-DOsvFxG2.js} +2 -2
- package/dist/{selector-hook-ChImS_JT.js.map → selector-hook-DOsvFxG2.js.map} +1 -1
- package/dist/{selector-hook-cqmAutda.cjs → selector-hook-DQ9zoDM4.cjs} +2 -2
- package/dist/{selector-hook-cqmAutda.cjs.map → selector-hook-DQ9zoDM4.cjs.map} +1 -1
- package/dist/{sheet-BscruHZw.js → sheet-6dHhG8JF.js} +4 -4
- package/dist/{sheet-BscruHZw.js.map → sheet-6dHhG8JF.js.map} +1 -1
- package/dist/{sheet-ZHVITumf.cjs → sheet-Ce6qoile.cjs} +3 -3
- package/dist/{sheet-ZHVITumf.cjs.map → sheet-Ce6qoile.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-gBHyj2TC.js → slider-B5RixsC-.js} +3 -3
- package/dist/{slider-gBHyj2TC.js.map → slider-B5RixsC-.js.map} +1 -1
- package/dist/{slider-BKUCiMOV.cjs → slider-B65CWJPr.cjs} +2 -2
- package/dist/{slider-BKUCiMOV.cjs.map → slider-B65CWJPr.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-CiRbCC74.cjs → spinner-BIE4wGt6.cjs} +2 -2
- package/dist/{spinner-CiRbCC74.cjs.map → spinner-BIE4wGt6.cjs.map} +1 -1
- package/dist/{spinner-DZ3oE5cQ.js → spinner-Bj60gT3J.js} +2 -2
- package/dist/{spinner-DZ3oE5cQ.js.map → spinner-Bj60gT3J.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +2 -2
- package/dist/{suggestion-chip-D7izoLhZ.cjs → suggestion-chip-Cg0XlLBm.cjs} +2 -2
- package/dist/{suggestion-chip-D7izoLhZ.cjs.map → suggestion-chip-Cg0XlLBm.cjs.map} +1 -1
- package/dist/{suggestion-chip-BTiLUD1d.js → suggestion-chip-ug7g3Gxu.js} +3 -3
- package/dist/{suggestion-chip-BTiLUD1d.js.map → suggestion-chip-ug7g3Gxu.js.map} +1 -1
- package/dist/{surface-DTqeD1NX.cjs → surface-68DZCaYM.cjs} +2 -2
- package/dist/{surface-DTqeD1NX.cjs.map → surface-68DZCaYM.cjs.map} +1 -1
- package/dist/{surface-C4Lkv6Xu.js → surface-Dp2ZLwZf.js} +2 -2
- package/dist/{surface-C4Lkv6Xu.js.map → surface-Dp2ZLwZf.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-D320TllW.js → table-DPApxXET.js} +2 -2
- package/dist/{table-D320TllW.js.map → table-DPApxXET.js.map} +1 -1
- package/dist/{table-CGB_dR8H.cjs → table-DkPrJwrr.cjs} +2 -2
- package/dist/{table-CGB_dR8H.cjs.map → table-DkPrJwrr.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-DNkcL6dE.js → tabs-compatibility-D-7b_hie.js} +2 -2
- package/dist/{tabs-compatibility-DNkcL6dE.js.map → tabs-compatibility-D-7b_hie.js.map} +1 -1
- package/dist/{tabs-compatibility-C1ifLAs_.cjs → tabs-compatibility-DjrZHk1o.cjs} +2 -2
- package/dist/{tabs-compatibility-C1ifLAs_.cjs.map → tabs-compatibility-DjrZHk1o.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-CkQXl1kF.js +43 -0
- package/dist/{tailwind.mixin-9XFzAXGw.js.map → tailwind.mixin-CkQXl1kF.js.map} +1 -1
- package/dist/tailwind.mixin-x6_PgjK6.cjs +2 -0
- package/dist/{tailwind.mixin-ChrVaJHF.cjs.map → tailwind.mixin-x6_PgjK6.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-B2U316Um.js → textarea-CrSFDnAT.js} +2 -2
- package/dist/{textarea-B2U316Um.js.map → textarea-CrSFDnAT.js.map} +1 -1
- package/dist/{textarea-1QvQzHKm.cjs → textarea-g181v20v.cjs} +2 -2
- package/dist/{textarea-1QvQzHKm.cjs.map → textarea-g181v20v.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-B0n3kSd_.cjs → theme-button-BSbYxt8O.cjs} +2 -2
- package/dist/{theme-button-B0n3kSd_.cjs.map → theme-button-BSbYxt8O.cjs.map} +1 -1
- package/dist/{theme-button-zUYywyWx.js → theme-button-DNL32-FV.js} +2 -2
- package/dist/{theme-button-zUYywyWx.js.map → theme-button-DNL32-FV.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-DpPMKf8l.js → theme.component-BRhGnuHR.js} +2 -2
- package/dist/{theme.component-DpPMKf8l.js.map → theme.component-BRhGnuHR.js.map} +1 -1
- package/dist/{theme.component-BLKJxyFX.cjs → theme.component-D5ai_x50.cjs} +2 -2
- package/dist/{theme.component-BLKJxyFX.cjs.map → theme.component-D5ai_x50.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-DhLUcYcX.js → timezone-BEwuASpJ.js} +3 -3
- package/dist/{timezone-DhLUcYcX.js.map → timezone-BEwuASpJ.js.map} +1 -1
- package/dist/{timezone-DRSCR7bi.cjs → timezone-CHKXV8EG.cjs} +2 -2
- package/dist/{timezone-DRSCR7bi.cjs.map → timezone-CHKXV8EG.cjs.map} +1 -1
- package/dist/{tooltip-B4nvmANO.cjs → tooltip-CBv8iNFU.cjs} +2 -2
- package/dist/{tooltip-B4nvmANO.cjs.map → tooltip-CBv8iNFU.cjs.map} +1 -1
- package/dist/{tooltip-tFxYzDct.js → tooltip-CEwmdIj9.js} +2 -2
- package/dist/{tooltip-tFxYzDct.js.map → tooltip-CEwmdIj9.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-C9gLZE_E.js → tree-CSGTCCZ3.js} +2 -2
- package/dist/{tree-C9gLZE_E.js.map → tree-CSGTCCZ3.js.map} +1 -1
- package/dist/{tree-CRjGBeHH.cjs → tree-CiKoP4uT.cjs} +2 -2
- package/dist/{tree-CRjGBeHH.cjs.map → tree-CiKoP4uT.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-VGsKEZOj.cjs → typewriter-CYou-pzn.cjs} +2 -2
- package/dist/{typewriter-VGsKEZOj.cjs.map → typewriter-CYou-pzn.cjs.map} +1 -1
- package/dist/{typewriter-DN9HiCBW.js → typewriter-eAUGqhH7.js} +4 -4
- package/dist/{typewriter-DN9HiCBW.js.map → typewriter-eAUGqhH7.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-MN7P8my2.js → typography-D7qcpK__.js} +2 -2
- package/dist/{typography-MN7P8my2.js.map → typography-D7qcpK__.js.map} +1 -1
- package/dist/{typography-XN-pEi3Q.cjs → typography-DLFUQ47p.cjs} +2 -2
- package/dist/{typography-XN-pEi3Q.cjs.map → typography-DLFUQ47p.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +18 -18
- package/types/src/autocomplete/autocomplete.d.ts +5 -4
- package/types/src/button/button.d.ts +2 -0
- package/types/src/button/icon-button.d.ts +2 -0
- package/types/src/card/card.d.ts +2 -0
- package/types/src/checkbox/checkbox.d.ts +2 -0
- package/types/src/chips/assist-chip.d.ts +2 -0
- package/types/src/chips/filter-chip.d.ts +2 -0
- package/types/src/chips/input-chip.d.ts +2 -0
- package/types/src/chips/suggestion-chip.d.ts +2 -0
- package/types/src/details/details.d.ts +2 -0
- package/types/src/form/form-v2.d.ts +2 -0
- package/types/src/form/form.d.ts +2 -0
- package/types/src/input/input.d.ts +2 -0
- package/types/src/textarea/textarea.d.ts +2 -0
- package/dist/autocomplete-CG2YtfwU.cjs +0 -112
- package/dist/autocomplete-CG2YtfwU.cjs.map +0 -1
- package/dist/autocomplete-DzZQusAY.js +0 -319
- package/dist/autocomplete-DzZQusAY.js.map +0 -1
- package/dist/checkbox-4mBWkzKG.js.map +0 -1
- package/dist/checkbox-CIMDI5hW.cjs +0 -40
- package/dist/checkbox-CIMDI5hW.cjs.map +0 -1
- package/dist/context-object-bNADqf9U.cjs +0 -2
- package/dist/context-object-bNADqf9U.cjs.map +0 -1
- package/dist/context-object-u5gBaozZ.js.map +0 -1
- package/dist/tailwind.mixin-9XFzAXGw.js +0 -43
- package/dist/tailwind.mixin-ChrVaJHF.cjs +0 -2
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject as $, Subject as k, fromEvent as y, combineLatest as C, timer as V, EMPTY as z, of as T } from "rxjs";
|
|
2
|
-
import { classMap as w } from "lit/directives/class-map.js";
|
|
3
|
-
import "lit/directives/style-map.js";
|
|
4
|
-
import { property as p, state as b, query as E, queryAssignedElements as M, customElement as B } from "lit/decorators.js";
|
|
5
|
-
import "./tailwind.mixin-9XFzAXGw.js";
|
|
6
|
-
import { $ as L } from "./litElement.mixin-Bv6DGuhe.js";
|
|
7
|
-
import { html as _ } from "lit";
|
|
8
|
-
import { createRef as q, ref as R } from "lit/directives/ref.js";
|
|
9
|
-
import { repeat as I } from "lit/directives/repeat.js";
|
|
10
|
-
import { when as S } from "lit/directives/when.js";
|
|
11
|
-
import { tap as h, takeUntil as d, distinctUntilChanged as D, debounceTime as P, withLatestFrom as v, take as g, filter as f, switchMap as A } from "rxjs/operators";
|
|
12
|
-
import { s as x } from "./search-6Hr7K1gh.js";
|
|
13
|
-
import "./input-chip-DiThsRoi.js";
|
|
14
|
-
var j = Object.defineProperty, H = Object.getOwnPropertyDescriptor, a = (t, e, n, s) => {
|
|
15
|
-
for (var r, i = s > 1 ? void 0 : s ? H(e, n) : e, o = t.length - 1; o >= 0; o--) (r = t[o]) && (i = (s ? r(e, n, i) : r(i)) || i);
|
|
16
|
-
return s && i && j(e, n, i), i;
|
|
17
|
-
};
|
|
18
|
-
let l = class extends L(":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{}sch-input::part(input):-webkit-autofill,sch-input input:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms}") {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(...arguments), this.required = !1, this.placeholder = "", this.label = "", this.name = "", this.maxHeight = "300px", this.multi = !1, this.description = "", this.size = "md", this.autocomplete = "off", this.debounceMs = 200, this.similarityThreshold = 0.3, this.error = !1, this.validationMessage = "", this._open = !1, this._inputValue = "", this._visibleOptionsCount = 0, this._hasResults = !0, this._inputElementRef = q(), this._selectedValue$ = new $(""), this._selectedValues$ = new $([]), this._inputValue$ = new $(""), this._open$ = new $(!1), this._options$ = new $([]), this._optionSelect$ = new k(), this._documentClick$ = new k();
|
|
21
|
-
}
|
|
22
|
-
get values() {
|
|
23
|
-
return [...this._selectedValues$.value];
|
|
24
|
-
}
|
|
25
|
-
set values(t) {
|
|
26
|
-
this._selectedValues$.next(Array.isArray(t) ? [...t] : []);
|
|
27
|
-
}
|
|
28
|
-
get value() {
|
|
29
|
-
return this.multi ? this._selectedValues$.value.join(",") : this._selectedValue$.value;
|
|
30
|
-
}
|
|
31
|
-
set value(t) {
|
|
32
|
-
this.multi ? this._selectedValues$.next(t ? t.split(",").map((e) => e.trim()).filter(Boolean) : []) : this._selectedValue$.next(t);
|
|
33
|
-
}
|
|
34
|
-
connectedCallback() {
|
|
35
|
-
super.connectedCallback(), this.id || (this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`), this._setupAutocompleteLogic(), this._setupDocumentClickHandler();
|
|
36
|
-
}
|
|
37
|
-
_setupAutocompleteLogic() {
|
|
38
|
-
this._options$.pipe(h((t) => {
|
|
39
|
-
t.forEach((e, n) => {
|
|
40
|
-
e.setAttribute("role", "option"), e.tabIndex = -1, e.id || (e.id = `${this.id}-option-${n}`), e.hasAttribute("data-event-bound") || (y(e, "click").pipe(h((s) => {
|
|
41
|
-
s.stopPropagation();
|
|
42
|
-
}), d(this.disconnecting)).subscribe(() => this._optionSelect$.next(e)), e.setAttribute("data-event-bound", "true"));
|
|
43
|
-
});
|
|
44
|
-
}), d(this.disconnecting)).subscribe(), C([this._selectedValue$, this._selectedValues$, this._options$]).pipe(h(([t, e, n]) => {
|
|
45
|
-
n.forEach((s) => {
|
|
46
|
-
s.selected = this.multi ? e.includes(s.value) : s.value === t, s.setAttribute("aria-selected", String(s.selected));
|
|
47
|
-
});
|
|
48
|
-
}), d(this.disconnecting)).subscribe(), this._inputValue$.pipe(D(), P(this.debounceMs), v(this._options$, this._open$), h(([t, e, n]) => {
|
|
49
|
-
if (!n) return;
|
|
50
|
-
const s = t.trim();
|
|
51
|
-
if (s) {
|
|
52
|
-
const r = e.map((o) => {
|
|
53
|
-
const c = o.label || o.textContent || "", u = o.value, m = x(s, c), O = x(s, u);
|
|
54
|
-
return { option: o, score: Math.max(1.1 * m, O) };
|
|
55
|
-
});
|
|
56
|
-
r.sort((o, c) => c.score - o.score);
|
|
57
|
-
let i = 0;
|
|
58
|
-
r.forEach((o, c) => {
|
|
59
|
-
const { option: u, score: m } = o;
|
|
60
|
-
m < this.similarityThreshold ? u.hidden = !0 : (u.hidden = !1, i++, u.style.order = String(c));
|
|
61
|
-
}), this._visibleOptionsCount = i, this._hasResults = i > 0;
|
|
62
|
-
} else e.forEach((r) => {
|
|
63
|
-
r.hidden = !1, r.style.order = "0";
|
|
64
|
-
}), this._visibleOptionsCount = e.length, this._hasResults = !0;
|
|
65
|
-
this._announceToScreenReader(this._visibleOptionsCount > 0 ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? "" : "s"} available.` : "No results found.");
|
|
66
|
-
}), d(this.disconnecting)).subscribe(), this._optionSelect$.pipe(v(this._selectedValue$, this._selectedValues$), h(([t, e, n]) => {
|
|
67
|
-
if (this.multi) {
|
|
68
|
-
const s = n.indexOf(t.value), r = s > -1 ? [...n.slice(0, s), ...n.slice(s + 1)] : [...n, t.value];
|
|
69
|
-
this._selectedValues$.next(r);
|
|
70
|
-
const i = this._getSelectedLabels();
|
|
71
|
-
this._announceToScreenReader(i.length > 0 ? `Selected: ${i.join(", ")}` : "No options selected");
|
|
72
|
-
} else this._selectedValue$.next(t.value), this._open$.next(!1), this._open = !1, this._inputValue = t.label || t.textContent || "", this._inputValue$.next(this._inputValue), V(100).pipe(h(() => this._inputElementRef.value?.blur()), g(1)).subscribe(), this._announceToScreenReader(`Selected: ${t.label || t.textContent}`);
|
|
73
|
-
}), h(() => this._fireChangeEvent()), d(this.disconnecting)).subscribe(), C([this._open$, this._selectedValue$, this._options$]).pipe(f(() => !this._open$.value && !this.multi), h(([, t, e]) => {
|
|
74
|
-
const n = e.find((s) => s.value === t);
|
|
75
|
-
this._inputValue = n && (n.label || n.textContent) || "", this._inputValue$.next(this._inputValue);
|
|
76
|
-
}), d(this.disconnecting)).subscribe(), this._open$.pipe(h((t) => this._open = t), d(this.disconnecting)).subscribe();
|
|
77
|
-
}
|
|
78
|
-
_setupDocumentClickHandler() {
|
|
79
|
-
this._documentClick$.pipe(f((t) => !t.composedPath().includes(this)), f((t) => !this._options.some((e) => t.composedPath().includes(e))), f(() => this._open), h(() => {
|
|
80
|
-
this._open$.next(!1), this._updateInputDisplay();
|
|
81
|
-
}), d(this.disconnecting)).subscribe(), this._open$.pipe(D(), A((t) => t ? V(10).pipe(A(() => y(document, "click").pipe(h((e) => this._documentClick$.next(e)), d(this._open$.pipe(f((e) => !e)))))) : z), d(this.disconnecting)).subscribe();
|
|
82
|
-
}
|
|
83
|
-
_updateInputDisplay() {
|
|
84
|
-
this.multi || T(null).pipe(v(this._selectedValue$, this._options$, this._open$), h(([, t, e, n]) => {
|
|
85
|
-
if (this._inputElementRef.value && !n) {
|
|
86
|
-
const s = e.find((r) => r.value === t);
|
|
87
|
-
this._inputValue = s && (s.label || s.textContent) || "", this._inputValue$.next(this._inputValue), this._inputElementRef.value.value = this._inputValue;
|
|
88
|
-
}
|
|
89
|
-
}), g(1)).subscribe();
|
|
90
|
-
}
|
|
91
|
-
_getSelectedLabels() {
|
|
92
|
-
return this._options.filter((t) => this.multi ? this._selectedValues$.value.includes(t.value) : t.value === this._selectedValue$.value).map((t) => t.label || t.textContent || "");
|
|
93
|
-
}
|
|
94
|
-
_announceToScreenReader(t) {
|
|
95
|
-
const e = this.shadowRoot?.querySelector("#live-status");
|
|
96
|
-
e && (e.textContent = t);
|
|
97
|
-
}
|
|
98
|
-
_fireChangeEvent() {
|
|
99
|
-
const t = { value: this.value };
|
|
100
|
-
this.multi && (t.values = [...this._selectedValues$.value]), this.dispatchEvent(new CustomEvent("change", { detail: t, bubbles: !0, composed: !0 }));
|
|
101
|
-
}
|
|
102
|
-
checkValidity() {
|
|
103
|
-
return !this.required || (this.multi ? this._selectedValues$.value.length > 0 : !!this._selectedValue$.value);
|
|
104
|
-
}
|
|
105
|
-
reportValidity() {
|
|
106
|
-
return this._inputElementRef.value ? this._inputElementRef.value.reportValidity() : this.checkValidity();
|
|
107
|
-
}
|
|
108
|
-
firstUpdated() {
|
|
109
|
-
}
|
|
110
|
-
handleChipRemove(t) {
|
|
111
|
-
const e = this._selectedValues$.value.filter((n) => n !== t);
|
|
112
|
-
this._selectedValues$.next(e), this._fireChangeEvent(), this._announceToScreenReader(`Removed: ${this._getChipLabel(t)}`);
|
|
113
|
-
}
|
|
114
|
-
_getChipLabel(t) {
|
|
115
|
-
const e = this._options.find((n) => n.value === t);
|
|
116
|
-
return e && (e.label || e.textContent) || t;
|
|
117
|
-
}
|
|
118
|
-
_focusTextInput() {
|
|
119
|
-
this._inputElementRef.value && this._inputElementRef.value.focus();
|
|
120
|
-
}
|
|
121
|
-
render() {
|
|
122
|
-
const t = `${this.id}-desc`, { height: e, padding: n, fontSize: s, labelSize: r } = (() => {
|
|
123
|
-
switch (this.size) {
|
|
124
|
-
case "sm":
|
|
125
|
-
return { height: "min-h-[40px]", padding: "px-2", fontSize: "text-sm", labelSize: "text-sm" };
|
|
126
|
-
case "lg":
|
|
127
|
-
return { height: "min-h-[60px]", padding: "px-5", fontSize: "text-lg", labelSize: "text-lg" };
|
|
128
|
-
default:
|
|
129
|
-
return { height: "min-h-[50px]", padding: "px-4", fontSize: "text-base", labelSize: "text-base" };
|
|
130
|
-
}
|
|
131
|
-
})();
|
|
132
|
-
return _`
|
|
133
|
-
<div class="relative">
|
|
134
|
-
<!-- Screen reader live region -->
|
|
135
|
-
<div id="live-status" role="status" aria-live="polite" class="sr-only"></div>
|
|
136
|
-
|
|
137
|
-
<!-- Description -->
|
|
138
|
-
${this.description ? _`<div id="${t}" class="sr-only">${this.description}</div>` : ""}
|
|
139
|
-
|
|
140
|
-
<!-- Custom input wrapper for Gmail-style chip input -->
|
|
141
|
-
<slot name="trigger">
|
|
142
|
-
${S(this.multi, () => _`
|
|
143
|
-
<!-- Custom multi-select input with inline chips -->
|
|
144
|
-
<div class="relative">
|
|
145
|
-
${S(this.label, () => _`
|
|
146
|
-
<label class="${w({ "block mb-1 font-medium": !0, "text-primary-default": !this.error, "text-error-default": this.error, [r]: !0 })}">
|
|
147
|
-
${this.label}${this.required ? _`<span class="text-error-default ml-1">*</span>` : ""}
|
|
148
|
-
</label>
|
|
149
|
-
`)}
|
|
150
|
-
<div
|
|
151
|
-
class="${w({ "flex flex-wrap items-center gap-1": !0, [e]: !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 })}"
|
|
152
|
-
@click=${() => this._focusTextInput()}
|
|
153
|
-
role="combobox"
|
|
154
|
-
aria-autocomplete="list"
|
|
155
|
-
aria-haspopup="listbox"
|
|
156
|
-
aria-controls="options"
|
|
157
|
-
aria-expanded=${this._open}
|
|
158
|
-
>
|
|
159
|
-
<!-- Render chips inline -->
|
|
160
|
-
${I(this._selectedValues$.value, (i) => i, (i) => _`
|
|
161
|
-
<schmancy-input-chip
|
|
162
|
-
.value=${i}
|
|
163
|
-
@remove=${(o) => this.handleChipRemove(o.detail.value)}
|
|
164
|
-
class="flex-shrink-0 my-0.5"
|
|
165
|
-
>
|
|
166
|
-
${this._getChipLabel(i)}
|
|
167
|
-
</schmancy-input-chip>
|
|
168
|
-
`)}
|
|
169
|
-
|
|
170
|
-
<!-- Text input for typing -->
|
|
171
|
-
<input
|
|
172
|
-
${R(this._inputElementRef)}
|
|
173
|
-
id="autocomplete-input"
|
|
174
|
-
type="text"
|
|
175
|
-
class="flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${s} font-medium text-surface-on placeholder:text-muted"
|
|
176
|
-
.name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-")}
|
|
177
|
-
.placeholder=${this._selectedValues$.value.length > 0 ? "Add more..." : this.placeholder}
|
|
178
|
-
.value=${this._inputValue}
|
|
179
|
-
.autocomplete=${this.autocomplete}
|
|
180
|
-
@input=${(i) => {
|
|
181
|
-
const o = i.target.value;
|
|
182
|
-
this._inputValue = o, this._inputValue$.next(o);
|
|
183
|
-
}}
|
|
184
|
-
@focus=${(i) => {
|
|
185
|
-
i.stopPropagation(), this._inputValue = "", this._inputValue$.next(""), this._open$.next(!0);
|
|
186
|
-
}}
|
|
187
|
-
@keydown=${(i) => {
|
|
188
|
-
this._handleKeyDown(i);
|
|
189
|
-
}}
|
|
190
|
-
@blur=${() => {
|
|
191
|
-
this._handleAutoSelectOnBlur();
|
|
192
|
-
}}
|
|
193
|
-
/>
|
|
194
|
-
</div>
|
|
195
|
-
|
|
196
|
-
<!-- Validation message -->
|
|
197
|
-
${S(this.error && this.validationMessage, () => _`
|
|
198
|
-
<div class="mt-1 text-sm text-error-default">
|
|
199
|
-
${this.validationMessage}
|
|
200
|
-
</div>
|
|
201
|
-
`)}
|
|
202
|
-
</div>
|
|
203
|
-
`, () => _`
|
|
204
|
-
<!-- Regular single-select input -->
|
|
205
|
-
<schmancy-input
|
|
206
|
-
.size=${this.size}
|
|
207
|
-
${R(this._inputElementRef)}
|
|
208
|
-
id="autocomplete-input"
|
|
209
|
-
class="w-full"
|
|
210
|
-
.name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-")}
|
|
211
|
-
.label=${this.label}
|
|
212
|
-
.placeholder=${this.placeholder}
|
|
213
|
-
.required=${this.required}
|
|
214
|
-
.value=${this._inputValue}
|
|
215
|
-
type="text"
|
|
216
|
-
autocomplete=${this.autocomplete}
|
|
217
|
-
clickable
|
|
218
|
-
role="combobox"
|
|
219
|
-
aria-autocomplete="list"
|
|
220
|
-
aria-haspopup="listbox"
|
|
221
|
-
aria-controls="options"
|
|
222
|
-
aria-expanded=${this._open}
|
|
223
|
-
aria-describedby=${this.description ? t : void 0}
|
|
224
|
-
@input=${(i) => {
|
|
225
|
-
const o = i.target.value;
|
|
226
|
-
this._inputValue = o, this._inputValue$.next(o);
|
|
227
|
-
}}
|
|
228
|
-
@focus=${(i) => {
|
|
229
|
-
i.stopPropagation(), this._open$.next(!0);
|
|
230
|
-
}}
|
|
231
|
-
@click=${(i) => {
|
|
232
|
-
i.stopPropagation(), this._open$.next(!0);
|
|
233
|
-
}}
|
|
234
|
-
@keydown=${(i) => {
|
|
235
|
-
this._handleKeyDown(i);
|
|
236
|
-
}}
|
|
237
|
-
@blur=${() => {
|
|
238
|
-
this._handleAutoSelectOnBlur();
|
|
239
|
-
}}
|
|
240
|
-
>
|
|
241
|
-
</schmancy-input>
|
|
242
|
-
`)}
|
|
243
|
-
</slot>
|
|
244
|
-
|
|
245
|
-
<!-- Options dropdown -->
|
|
246
|
-
<ul
|
|
247
|
-
id="options"
|
|
248
|
-
class=${w({ 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 })}
|
|
249
|
-
role="listbox"
|
|
250
|
-
aria-multiselectable=${this.multi ? "true" : "false"}
|
|
251
|
-
aria-label=${`${this.label || "Options"} dropdown`}
|
|
252
|
-
?hidden=${!this._open}
|
|
253
|
-
style="max-height: ${this.maxHeight}; display: ${this._open ? "flex" : "none"};"
|
|
254
|
-
@slotchange=${() => {
|
|
255
|
-
this._options$.next(this._options);
|
|
256
|
-
}}
|
|
257
|
-
>
|
|
258
|
-
<slot></slot>
|
|
259
|
-
${this._hasResults ? "" : _`
|
|
260
|
-
<li class="px-3 py-2 text-sm text-muted">No results found</li>
|
|
261
|
-
`}
|
|
262
|
-
</ul>
|
|
263
|
-
</div>
|
|
264
|
-
`;
|
|
265
|
-
}
|
|
266
|
-
_handleAutoSelectOnBlur() {
|
|
267
|
-
if (this.multi || !this._open || !this._inputValue.trim()) return;
|
|
268
|
-
const t = this._inputValue.trim();
|
|
269
|
-
let e = null, n = 0;
|
|
270
|
-
this._options.forEach((s) => {
|
|
271
|
-
if (s.hidden) return;
|
|
272
|
-
const r = s.label || s.textContent || "", i = s.value, o = x(t, r), c = x(t, i), u = Math.max(1.1 * o, c);
|
|
273
|
-
u > n && u >= this.similarityThreshold && (n = u, e = s);
|
|
274
|
-
}), e && (this._optionSelect$.next(e), this._open$.next(!1), this._open = !1);
|
|
275
|
-
}
|
|
276
|
-
_handleKeyDown(t) {
|
|
277
|
-
y(document, "keydown").pipe(g(1), v(this._open$, this._options$, this._selectedValues$), h(([e, n, s, r]) => {
|
|
278
|
-
if (this.multi && e.key === "Backspace" && !this._inputValue && r.length > 0 && !n) {
|
|
279
|
-
e.preventDefault();
|
|
280
|
-
const u = r[r.length - 1];
|
|
281
|
-
return void this.handleChipRemove(u);
|
|
282
|
-
}
|
|
283
|
-
if (!n && (e.key === "ArrowDown" || e.key === "Enter")) return e.preventDefault(), this._open$.next(!0), void V(10).pipe(h(() => {
|
|
284
|
-
s.find((m) => !m.hidden)?.focus();
|
|
285
|
-
}), g(1)).subscribe();
|
|
286
|
-
if (!n) return;
|
|
287
|
-
const i = s.filter((u) => !u.hidden).sort((u, m) => parseInt(u.style.order || "0") - parseInt(m.style.order || "0")), o = i.find((u) => u === document.activeElement), c = o ? i.indexOf(o) : -1;
|
|
288
|
-
switch (e.key) {
|
|
289
|
-
case "Escape":
|
|
290
|
-
e.preventDefault(), this._open$.next(!1), this._updateInputDisplay(), this._inputElementRef.value?.focus();
|
|
291
|
-
break;
|
|
292
|
-
case "Tab":
|
|
293
|
-
this._open$.next(!1), this._updateInputDisplay();
|
|
294
|
-
break;
|
|
295
|
-
case "ArrowDown":
|
|
296
|
-
e.preventDefault();
|
|
297
|
-
const u = c < i.length - 1 ? c + 1 : 0;
|
|
298
|
-
i[u]?.focus();
|
|
299
|
-
break;
|
|
300
|
-
case "ArrowUp":
|
|
301
|
-
e.preventDefault();
|
|
302
|
-
const m = c > 0 ? c - 1 : i.length - 1;
|
|
303
|
-
i[m]?.focus();
|
|
304
|
-
break;
|
|
305
|
-
case "Home":
|
|
306
|
-
e.preventDefault(), i[0]?.focus();
|
|
307
|
-
break;
|
|
308
|
-
case "End":
|
|
309
|
-
e.preventDefault(), i[i.length - 1]?.focus();
|
|
310
|
-
break;
|
|
311
|
-
case "Enter":
|
|
312
|
-
case " ":
|
|
313
|
-
o && (e.preventDefault(), this._optionSelect$.next(o));
|
|
314
|
-
}
|
|
315
|
-
})).subscribe();
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
a([p({ type: Boolean })], l.prototype, "required", 2), a([p({ type: String })], l.prototype, "placeholder", 2), a([p({ type: String, reflect: !0 })], l.prototype, "label", 2), a([p({ type: String })], l.prototype, "name", 2), a([p({ type: String })], l.prototype, "maxHeight", 2), a([p({ type: Boolean })], l.prototype, "multi", 2), a([p({ type: String })], l.prototype, "description", 2), a([p({ type: String, reflect: !0 })], l.prototype, "size", 2), a([p({ type: String })], l.prototype, "autocomplete", 2), a([p({ type: Number })], l.prototype, "debounceMs", 2), a([p({ type: Number })], l.prototype, "similarityThreshold", 2), a([p({ type: Boolean })], l.prototype, "error", 2), a([p({ type: String })], l.prototype, "validationMessage", 2), a([p({ type: Array })], l.prototype, "values", 1), a([p({ type: String, reflect: !0 })], l.prototype, "value", 1), a([b()], l.prototype, "_open", 2), a([b()], l.prototype, "_inputValue", 2), a([b()], l.prototype, "_visibleOptionsCount", 2), a([b()], l.prototype, "_hasResults", 2), a([E("#options")], l.prototype, "_listbox", 2), a([E("sch-input")], l.prototype, "_input", 2), a([M({ flatten: !0 })], l.prototype, "_options", 2), l = a([B("schmancy-autocomplete")], l);
|
|
319
|
-
//# sourceMappingURL=autocomplete-DzZQusAY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-DzZQusAY.js","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.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 EMPTY,\n fromEvent,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\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@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\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 @property({ type: Boolean }) error = false\n @property({ type: String }) validationMessage = ''\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._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\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\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n // Complex autofill detection disabled - using simple auto-select on blur instead\n // this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n 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 if (!option.hasAttribute('data-event-bound')) {\n // Use click event instead of pointerdown for better mobile UX\n // This allows users to scroll through options without immediately selecting\n fromEvent(option, 'click').pipe(\n tap(e => {\n e.stopPropagation()\n }),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n 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 takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\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(term, optionLabel)\n const valueScore = similarity(term, 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 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 // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\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 takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n\n // Keep search input persistent - don't reset\n // this._inputValue$.next('')\n // this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline - only for single select\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value && !this.multi),\n tap(([, selectedValue, options]) => {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open =>\n open\n ? timer(10).pipe(\n switchMap(() => fromEvent<MouseEvent>(document, 'click').pipe(\n tap(e => this._documentClick$.next(e)),\n takeUntil(this._open$.pipe(filter(isOpen => !isOpen)))\n ))\n )\n : EMPTY\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\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) {\n return\n }\n\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen) {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\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 // Auto-selection now happens on blur, no need for autofill detection\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=\"flex-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 @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._open$.next(true)\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 class=\"mt-1 text-sm text-error-default\">\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=${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._open$.next(true)\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\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._options$.next(this._options)\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 // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \n }\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$, this._selectedValues$),\n tap(([event, isOpen, options, selectedValues]) => {\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 if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((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$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(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._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","error","validationMessage","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","find","opt","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","EMPTY","of","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","_getChipLabel","_focusTextInput","focus","render","descriptionId","height","padding","fontSize","labelSize","getSizeStyles","html","when","classMap","repeat","handleChipRemove","ref","toLowerCase","replace","target","_handleKeyDown","_handleAutoSelectOnBlur","absolute","flex","bestMatch","bestScore","_e","event","key","preventDefault","lastValue","firstVisible","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
|