@mhmo91/schmancy 0.2.42 → 0.2.44
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-DAIxzGoB.cjs → animated-text-CHKjskbo.cjs} +2 -2
- package/dist/{animated-text-DAIxzGoB.cjs.map → animated-text-CHKjskbo.cjs.map} +1 -1
- package/dist/{animated-text-D5czXLWn.js → animated-text-Y4ycrTGo.js} +3 -3
- package/dist/{animated-text-D5czXLWn.js.map → animated-text-Y4ycrTGo.js.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-BSCRps7h.js → area.component-CpltGFtZ.js} +3 -3
- package/dist/{area.component-BSCRps7h.js.map → area.component-CpltGFtZ.js.map} +1 -1
- package/dist/{area.component-CJlITW0a.cjs → area.component-PjmcLIgT.cjs} +2 -2
- package/dist/{area.component-CJlITW0a.cjs.map → area.component-PjmcLIgT.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/autocomplete-DlA7Zj8y.js +266 -0
- package/dist/autocomplete-DlA7Zj8y.js.map +1 -0
- package/dist/autocomplete-sjP09kRE.cjs +49 -0
- package/dist/autocomplete-sjP09kRE.cjs.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +2 -2
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-DSi2sG8X.js → checkbox-BUckVPbf.js} +2 -2
- package/dist/{checkbox-DSi2sG8X.js.map → checkbox-BUckVPbf.js.map} +1 -1
- package/dist/{checkbox-CYZ8DVr_.cjs → checkbox-BlyeBJaT.cjs} +2 -2
- package/dist/{checkbox-CYZ8DVr_.cjs.map → checkbox-BlyeBJaT.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-D0DqtIre.cjs → chips-B5s6nFCv.cjs} +2 -2
- package/dist/{chips-D0DqtIre.cjs.map → chips-B5s6nFCv.cjs.map} +1 -1
- package/dist/{chips-DHLvFgzm.js → chips-B_MkXiVt.js} +3 -3
- package/dist/{chips-DHLvFgzm.js.map → chips-B_MkXiVt.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +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/{date-range-CiWMMHbW.js → date-range-BCS0HlLD.js} +3 -3
- package/dist/{date-range-CiWMMHbW.js.map → date-range-BCS0HlLD.js.map} +1 -1
- package/dist/{date-range-BarHKApD.cjs → date-range-DdwMl-RM.cjs} +2 -2
- package/dist/{date-range-BarHKApD.cjs.map → date-range-DdwMl-RM.cjs.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-C6SepD3P.cjs → delay-C7mn_Xn7.cjs} +2 -2
- package/dist/{delay-C6SepD3P.cjs.map → delay-C7mn_Xn7.cjs.map} +1 -1
- package/dist/{delay-BK67Hk_M.js → delay-O3A85T24.js} +2 -2
- package/dist/{delay-BK67Hk_M.js.map → delay-O3A85T24.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{divider-COtzJBn4.js → divider-3bWzZ4Rm.js} +3 -3
- package/dist/{divider-COtzJBn4.js.map → divider-3bWzZ4Rm.js.map} +1 -1
- package/dist/{divider-DX5e0m-H.cjs → divider-BCpoxMEa.cjs} +2 -2
- package/dist/{divider-DX5e0m-H.cjs.map → divider-BCpoxMEa.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/form-2b-1v-m1.cjs +8 -0
- package/dist/form-2b-1v-m1.cjs.map +1 -0
- package/dist/{form-B6BML4Gw.js → form-DqhBSlIk.js} +5 -5
- package/dist/form-DqhBSlIk.js.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-BkDy6f59.cjs → icon-C-Un0Yey.cjs} +2 -2
- package/dist/{icon-BkDy6f59.cjs.map → icon-C-Un0Yey.cjs.map} +1 -1
- package/dist/icon-button-C3lDDtmo.cjs +69 -0
- package/dist/icon-button-C3lDDtmo.cjs.map +1 -0
- package/dist/icon-button-mX6k_EOF.js +160 -0
- package/dist/icon-button-mX6k_EOF.js.map +1 -0
- package/dist/{icon-DE_mryLI.js → icon-yJxSVMJB.js} +3 -3
- package/dist/{icon-DE_mryLI.js.map → icon-yJxSVMJB.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 +34 -34
- package/dist/{input-By2qm_Uq.js → input-DYyIyfZh.js} +29 -29
- package/dist/input-DYyIyfZh.js.map +1 -0
- package/dist/{input-CdgeGV93.cjs → input-Robi05py.cjs} +10 -10
- package/dist/input-Robi05py.cjs.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-DUV3tZ3A.cjs → list-DM_Y-zwH.cjs} +2 -2
- package/dist/{list-DUV3tZ3A.cjs.map → list-DM_Y-zwH.cjs.map} +1 -1
- package/dist/{list-Dc_EEdf-.js → list-Dyy-SpiA.js} +2 -2
- package/dist/{list-Dc_EEdf-.js.map → list-Dyy-SpiA.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BYMdyxuB.js → litElement.mixin-B7v8pDMc.js} +2 -2
- package/dist/{litElement.mixin-BYMdyxuB.js.map → litElement.mixin-B7v8pDMc.js.map} +1 -1
- package/dist/{litElement.mixin-Cw4_sB4P.cjs → litElement.mixin-BhS9oGuC.cjs} +2 -2
- package/dist/{litElement.mixin-Cw4_sB4P.cjs.map → litElement.mixin-BhS9oGuC.cjs.map} +1 -1
- package/dist/{menu-D5De6nkC.cjs → menu-1oIiQdXk.cjs} +2 -2
- package/dist/{menu-D5De6nkC.cjs.map → menu-1oIiQdXk.cjs.map} +1 -1
- package/dist/{menu-cDlpZG8h.js → menu-BPvSwS8i.js} +3 -3
- package/dist/{menu-cDlpZG8h.js.map → menu-BPvSwS8i.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins/tailwind.css +2 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-BHH_JwXm.js → option-BMdsMjZc.js} +5 -5
- package/dist/option-BMdsMjZc.js.map +1 -0
- package/dist/{option-D2uLD4HI.cjs → option-P1eP1gPa.cjs} +3 -3
- package/dist/option-P1eP1gPa.cjs.map +1 -0
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{outlet-gf5ui1xs.js → outlet-BJ6YjF7v.js} +2 -2
- package/dist/{outlet-gf5ui1xs.js.map → outlet-BJ6YjF7v.js.map} +1 -1
- package/dist/{outlet-DGwK90-g.cjs → outlet-grvppFfL.cjs} +2 -2
- package/dist/{outlet-DGwK90-g.cjs.map → outlet-grvppFfL.cjs.map} +1 -1
- package/dist/{payment-card-form-DSZz3XAw.cjs → payment-card-form-BC-KTuAM.cjs} +2 -2
- package/dist/{payment-card-form-DSZz3XAw.cjs.map → payment-card-form-BC-KTuAM.cjs.map} +1 -1
- package/dist/{payment-card-form-BEg1aL_V.js → payment-card-form-CkuozUmp.js} +3 -3
- package/dist/{payment-card-form-BEg1aL_V.js.map → payment-card-form-CkuozUmp.js.map} +1 -1
- package/dist/{radio-group-DeTqT89g.cjs → radio-group-DJ15xUxA.cjs} +2 -2
- package/dist/{radio-group-DeTqT89g.cjs.map → radio-group-DJ15xUxA.cjs.map} +1 -1
- package/dist/{radio-group-D5qSmAIk.js → radio-group-k4NlKFzF.js} +2 -2
- package/dist/{radio-group-D5qSmAIk.js.map → radio-group-k4NlKFzF.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{scroll-DJhZyWFl.js → scroll-DFMvmm21.js} +2 -2
- package/dist/{scroll-DJhZyWFl.js.map → scroll-DFMvmm21.js.map} +1 -1
- package/dist/{scroll-DbSG1gU1.cjs → scroll-DJQVW4VV.cjs} +2 -2
- package/dist/{scroll-DbSG1gU1.cjs.map → scroll-DJQVW4VV.cjs.map} +1 -1
- package/dist/select-CV5sua6X.cjs +54 -0
- package/dist/select-CV5sua6X.cjs.map +1 -0
- package/dist/{select-CZfw92Ty.js → select-DOuDb1OD.js} +35 -27
- package/dist/select-DOuDb1OD.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-BnwMNJKD.js → sheet-BNHSnKxu.js} +4 -5
- package/dist/sheet-BNHSnKxu.js.map +1 -0
- package/dist/{sheet-0256n1h7.cjs → sheet-DEi77u64.cjs} +5 -6
- package/dist/sheet-DEi77u64.cjs.map +1 -0
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-CVlX-GTS.js → slider-B1mWE8IL.js} +3 -3
- package/dist/{slider-CVlX-GTS.js.map → slider-B1mWE8IL.js.map} +1 -1
- package/dist/{slider-CtmVndmy.cjs → slider-BVqs9NxT.cjs} +2 -2
- package/dist/{slider-CtmVndmy.cjs.map → slider-BVqs9NxT.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-Aq68t0qW.cjs → spinner-BQV8GutW.cjs} +2 -2
- package/dist/{spinner-Aq68t0qW.cjs.map → spinner-BQV8GutW.cjs.map} +1 -1
- package/dist/{spinner-JGfRqdwd.js → spinner-CjCEXMhX.js} +3 -3
- package/dist/{spinner-JGfRqdwd.js.map → spinner-CjCEXMhX.js.map} +1 -1
- package/dist/{surface-DoAY0NAL.cjs → surface-DI0zgakM.cjs} +2 -2
- package/dist/{surface-DoAY0NAL.cjs.map → surface-DI0zgakM.cjs.map} +1 -1
- package/dist/{surface-3TH7Q60g.js → surface-Dr9ZU9gu.js} +2 -2
- package/dist/{surface-3TH7Q60g.js.map → surface-Dr9ZU9gu.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DgFcgs4M.js → table-BmH69A60.js} +2 -2
- package/dist/{table-DgFcgs4M.js.map → table-BmH69A60.js.map} +1 -1
- package/dist/{table-Cyx1_9fP.cjs → table-Dupu_sw5.cjs} +2 -2
- package/dist/{table-Cyx1_9fP.cjs.map → table-Dupu_sw5.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-group-CHJ1VE5L.cjs → tabs-group-C3A9t09Q.cjs} +2 -2
- package/dist/{tabs-group-CHJ1VE5L.cjs.map → tabs-group-C3A9t09Q.cjs.map} +1 -1
- package/dist/{tabs-group-6xcNqJVh.js → tabs-group-C8zeef3S.js} +2 -2
- package/dist/{tabs-group-6xcNqJVh.js.map → tabs-group-C8zeef3S.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{tailwind.mixin-dEqmlmEI.cjs → tailwind.mixin-C16PXbzn.cjs} +2 -2
- package/dist/{tailwind.mixin-dEqmlmEI.cjs.map → tailwind.mixin-C16PXbzn.cjs.map} +1 -1
- package/dist/{tailwind.mixin-D2ZmggHb.js → tailwind.mixin-DZPJ7kCh.js} +2 -2
- package/dist/{tailwind.mixin-D2ZmggHb.js.map → tailwind.mixin-DZPJ7kCh.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/{teleport.component-C0giJ7oR.js → teleport.component-C_FhEBDr.js} +35 -35
- package/dist/{teleport.component-C0giJ7oR.js.map → teleport.component-C_FhEBDr.js.map} +1 -1
- package/dist/{teleport.component-C5EPU5Hd.cjs → teleport.component-KeTZiEjM.cjs} +2 -2
- package/dist/{teleport.component-C5EPU5Hd.cjs.map → teleport.component-KeTZiEjM.cjs.map} +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-T7Ae6OQS.cjs → textarea-08CHLJIt.cjs} +2 -2
- package/dist/{textarea-T7Ae6OQS.cjs.map → textarea-08CHLJIt.cjs.map} +1 -1
- package/dist/{textarea-DznXY4XP.js → textarea-CJX8ufEk.js} +2 -2
- package/dist/{textarea-DznXY4XP.js.map → textarea-CJX8ufEk.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-rAhvYWSo.js → theme-button-C0189bng.js} +2 -2
- package/dist/{theme-button-rAhvYWSo.js.map → theme-button-C0189bng.js.map} +1 -1
- package/dist/{theme-button-FAUTvtnc.cjs → theme-button-DIq9Bwd6.cjs} +2 -2
- package/dist/{theme-button-FAUTvtnc.cjs.map → theme-button-DIq9Bwd6.cjs.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-DWs2jXQN.js → theme.component-BJ8UIA_A.js} +2 -2
- package/dist/{theme.component-DWs2jXQN.js.map → theme.component-BJ8UIA_A.js.map} +1 -1
- package/dist/{theme.component-BccS626x.cjs → theme.component-CQZlNAYr.cjs} +2 -2
- package/dist/{theme.component-BccS626x.cjs.map → theme.component-CQZlNAYr.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{tree-BbcH5gXF.cjs → tree-BeLMM0l5.cjs} +2 -2
- package/dist/{tree-BbcH5gXF.cjs.map → tree-BeLMM0l5.cjs.map} +1 -1
- package/dist/{tree-E21dLomQ.js → tree-Do6jY6lM.js} +2 -2
- package/dist/{tree-E21dLomQ.js.map → tree-Do6jY6lM.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-DS5Vx68F.cjs → typewriter-DPSbDZLc.cjs} +2 -2
- package/dist/{typewriter-DS5Vx68F.cjs.map → typewriter-DPSbDZLc.cjs.map} +1 -1
- package/dist/{typewriter-DKB-PEGO.js → typewriter-QBZimgx6.js} +4 -4
- package/dist/{typewriter-DKB-PEGO.js.map → typewriter-QBZimgx6.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-BX0GzBGU.cjs → typography-BbLaRssU.cjs} +2 -2
- package/dist/{typography-BX0GzBGU.cjs.map → typography-BbLaRssU.cjs.map} +1 -1
- package/dist/{typography-QSUB3lBd.js → typography-C4sugoW2.js} +2 -2
- package/dist/{typography-QSUB3lBd.js.map → typography-C4sugoW2.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/autocomplete/autocomplete.d.ts +29 -3
- package/types/src/button/button.d.ts +12 -9
- package/types/src/button/icon-button.d.ts +15 -11
- package/types/src/form/form.d.ts +0 -1
- package/types/src/select/select.d.ts +0 -19
- package/dist/autocomplete-CHpArsZC.cjs +0 -48
- package/dist/autocomplete-CHpArsZC.cjs.map +0 -1
- package/dist/autocomplete-CiCw7cWc.js +0 -225
- package/dist/autocomplete-CiCw7cWc.js.map +0 -1
- package/dist/form-B6BML4Gw.js.map +0 -1
- package/dist/form-o9voayRS.cjs +0 -8
- package/dist/form-o9voayRS.cjs.map +0 -1
- package/dist/icon-button-CIxJbF_T.cjs +0 -38
- package/dist/icon-button-CIxJbF_T.cjs.map +0 -1
- package/dist/icon-button-CYNjACmd.js +0 -123
- package/dist/icon-button-CYNjACmd.js.map +0 -1
- package/dist/input-By2qm_Uq.js.map +0 -1
- package/dist/input-CdgeGV93.cjs.map +0 -1
- package/dist/option-BHH_JwXm.js.map +0 -1
- package/dist/option-D2uLD4HI.cjs.map +0 -1
- package/dist/select-CZfw92Ty.js.map +0 -1
- package/dist/select-DYwm6zVU.cjs +0 -52
- package/dist/select-DYwm6zVU.cjs.map +0 -1
- package/dist/sheet-0256n1h7.cjs.map +0 -1
- package/dist/sheet-BnwMNJKD.js.map +0 -1
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { computePosition as q, offset as Y, flip as H, shift as P, size as U } from "@floating-ui/dom";
|
|
2
|
+
import { Subject as z, fromEvent as j, from as N } from "rxjs";
|
|
3
|
+
import "lit/directives/class-map.js";
|
|
4
|
+
import "lit/directives/style-map.js";
|
|
5
|
+
import { $ as B } from "./litElement.mixin-B7v8pDMc.js";
|
|
6
|
+
import "./tailwind.mixin-DZPJ7kCh.js";
|
|
7
|
+
import { c as F } from "./ripple-BumgqsDT.js";
|
|
8
|
+
import { S as R } from "./theme.interface-C5Kj6WjD.js";
|
|
9
|
+
import { html as L } from "lit";
|
|
10
|
+
import { property as x, query as E, queryAssignedElements as W, eventOptions as K, customElement as G } from "lit/decorators.js";
|
|
11
|
+
import { createRef as J, ref as Q } from "lit/directives/ref.js";
|
|
12
|
+
import { takeUntil as I, distinctUntilChanged as X, tap as Z, filter as _, switchMap as tt } from "rxjs/operators";
|
|
13
|
+
const g = new Uint32Array(65536), et = (t, e) => {
|
|
14
|
+
if (t.length < e.length) {
|
|
15
|
+
const i = e;
|
|
16
|
+
e = t, t = i;
|
|
17
|
+
}
|
|
18
|
+
return e.length === 0 ? t.length : t.length <= 32 ? ((i, s) => {
|
|
19
|
+
const n = i.length, l = s.length, r = 1 << n - 1;
|
|
20
|
+
let p = -1, f = 0, O = n, h = n;
|
|
21
|
+
for (; h--; ) g[i.charCodeAt(h)] |= 1 << h;
|
|
22
|
+
for (h = 0; h < l; h++) {
|
|
23
|
+
let y = g[s.charCodeAt(h)];
|
|
24
|
+
const b = y | f;
|
|
25
|
+
y |= (y & p) + p ^ p, f |= ~(y | p), p &= y, f & r && O++, p & r && O--, f = f << 1 | 1, p = p << 1 | ~(b | f), f &= b;
|
|
26
|
+
}
|
|
27
|
+
for (h = n; h--; ) g[i.charCodeAt(h)] = 0;
|
|
28
|
+
return O;
|
|
29
|
+
})(t, e) : ((i, s) => {
|
|
30
|
+
const n = s.length, l = i.length, r = [], p = [], f = Math.ceil(n / 32), O = Math.ceil(l / 32);
|
|
31
|
+
for (let o = 0; o < f; o++) p[o] = -1, r[o] = 0;
|
|
32
|
+
let h = 0;
|
|
33
|
+
for (; h < O - 1; h++) {
|
|
34
|
+
let o = 0, d = -1;
|
|
35
|
+
const w = 32 * h, C = Math.min(32, l) + w;
|
|
36
|
+
for (let a = w; a < C; a++) g[i.charCodeAt(a)] |= 1 << a;
|
|
37
|
+
for (let a = 0; a < n; a++) {
|
|
38
|
+
const A = g[s.charCodeAt(a)], v = p[a / 32 | 0] >>> a & 1, m = r[a / 32 | 0] >>> a & 1, M = A | o, T = ((A | m) & d) + d ^ d | A | m;
|
|
39
|
+
let $ = o | ~(T | d), S = d & T;
|
|
40
|
+
$ >>> 31 ^ v && (p[a / 32 | 0] ^= 1 << a), S >>> 31 ^ m && (r[a / 32 | 0] ^= 1 << a), $ = $ << 1 | v, S = S << 1 | m, d = S | ~(M | $), o = $ & M;
|
|
41
|
+
}
|
|
42
|
+
for (let a = w; a < C; a++) g[i.charCodeAt(a)] = 0;
|
|
43
|
+
}
|
|
44
|
+
let y = 0, b = -1;
|
|
45
|
+
const k = 32 * h, V = Math.min(32, l - k) + k;
|
|
46
|
+
for (let o = k; o < V; o++) g[i.charCodeAt(o)] |= 1 << o;
|
|
47
|
+
let D = l;
|
|
48
|
+
for (let o = 0; o < n; o++) {
|
|
49
|
+
const d = g[s.charCodeAt(o)], w = p[o / 32 | 0] >>> o & 1, C = r[o / 32 | 0] >>> o & 1, a = d | y, A = ((d | C) & b) + b ^ b | d | C;
|
|
50
|
+
let v = y | ~(A | b), m = b & A;
|
|
51
|
+
D += v >>> l - 1 & 1, D -= m >>> l - 1 & 1, v >>> 31 ^ w && (p[o / 32 | 0] ^= 1 << o), m >>> 31 ^ C && (r[o / 32 | 0] ^= 1 << o), v = v << 1 | w, m = m << 1 | C, b = m | ~(a | v), y = v & a;
|
|
52
|
+
}
|
|
53
|
+
for (let o = k; o < V; o++) g[i.charCodeAt(o)] = 0;
|
|
54
|
+
return D;
|
|
55
|
+
})(t, e);
|
|
56
|
+
};
|
|
57
|
+
var it = Object.defineProperty, st = Object.getOwnPropertyDescriptor, u = (t, e, i, s) => {
|
|
58
|
+
for (var n, l = s > 1 ? void 0 : s ? st(e, i) : e, r = t.length - 1; r >= 0; r--) (n = t[r]) && (l = (s ? n(e, i, l) : n(l)) || l);
|
|
59
|
+
return s && l && it(e, i, l), l;
|
|
60
|
+
};
|
|
61
|
+
let c = class extends B(":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}") {
|
|
62
|
+
constructor() {
|
|
63
|
+
super(...arguments), this.required = !1, this.placeholder = "", this.value = "", this.label = "", this.maxHeight = "25vh", this.multi = !1, this.inputRef = J(), this.searchTerm$ = new z(), this.startY = 0, this.handleKeyDown = (t) => {
|
|
64
|
+
const e = this.options.filter((s) => !s.hidden);
|
|
65
|
+
if (this.optionsContainer.hasAttribute("hidden")) return void (["Enter", " ", "ArrowDown"].includes(t.key) && (t.preventDefault(), this.showOptions().then(() => {
|
|
66
|
+
e.length > 0 && this.focusOption(e, 0);
|
|
67
|
+
})));
|
|
68
|
+
let i = e.findIndex((s) => s.matches(":focus"));
|
|
69
|
+
switch (i === -1 && (i = 0), t.key) {
|
|
70
|
+
case "Escape":
|
|
71
|
+
t.preventDefault(), this.hideOptions(), this.input.focus();
|
|
72
|
+
break;
|
|
73
|
+
case "ArrowDown":
|
|
74
|
+
t.preventDefault(), this.focusOption(e, Math.min(i + 1, e.length - 1));
|
|
75
|
+
break;
|
|
76
|
+
case "ArrowUp":
|
|
77
|
+
t.preventDefault(), this.focusOption(e, Math.max(i - 1, 0));
|
|
78
|
+
break;
|
|
79
|
+
case "Enter":
|
|
80
|
+
case " ":
|
|
81
|
+
if (t.preventDefault(), e[i]) {
|
|
82
|
+
const s = e[i].getAttribute("data-value") || e[i].getAttribute("value");
|
|
83
|
+
s && this.handleOptionClick(s);
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
case "Tab":
|
|
87
|
+
this.hideOptions();
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
connectedCallback() {
|
|
92
|
+
super.connectedCallback(), this.id || (this.id = `schmancy-autocomplete-${Math.random().toString(36).substr(2, 9)}`), j(this, "keydown").pipe(I(this.disconnecting)).subscribe({ next: (t) => {
|
|
93
|
+
this.handleKeyDown(t);
|
|
94
|
+
} }), this.searchTerm$.pipe(I(this.disconnecting), X(), Z((t) => {
|
|
95
|
+
const e = t.trim().toLowerCase(), i = this.options.map((s) => {
|
|
96
|
+
const n = s.label.toLowerCase();
|
|
97
|
+
return { option: s, levDistance: et(e, n) };
|
|
98
|
+
}).filter(({ option: s, levDistance: n }) => e.length < 3 || n <= s.label.toLowerCase().length - e.length).sort((s, n) => s.levDistance - n.levDistance);
|
|
99
|
+
this.options.forEach((s) => s.hidden = !0);
|
|
100
|
+
for (const { option: s } of i) s.hidden = !1;
|
|
101
|
+
this.empty.hidden = i.length > 0, this.setupOptionsAccessibility(), this.requestUpdate();
|
|
102
|
+
})).subscribe(() => {
|
|
103
|
+
this.showOptions();
|
|
104
|
+
}), j(this, "focusout").pipe(I(this.disconnecting), _((t) => {
|
|
105
|
+
var e;
|
|
106
|
+
return ((e = t.relatedTarget) == null ? void 0 : e.tagName) !== "SCHMANCY-OPTION";
|
|
107
|
+
}), tt(() => {
|
|
108
|
+
const t = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, easing: "cubic-bezier(0.5, 0.01, 0.25, 1)" });
|
|
109
|
+
return N(new Promise((e) => {
|
|
110
|
+
t.onfinish = () => {
|
|
111
|
+
this.optionsContainer.style.display = "none", this.optionsContainer.style.opacity = "1", e();
|
|
112
|
+
};
|
|
113
|
+
}));
|
|
114
|
+
})).subscribe({ next: () => {
|
|
115
|
+
var t;
|
|
116
|
+
if (this.multi) {
|
|
117
|
+
const e = this.options.filter((i) => i.selected).map((i) => i.label);
|
|
118
|
+
this.input.value = e.join(", ");
|
|
119
|
+
} else this.input.value = ((t = this.options.find((e) => e.value === this.value)) == null ? void 0 : t.label) ?? "";
|
|
120
|
+
} });
|
|
121
|
+
}
|
|
122
|
+
disconnectedCallback() {
|
|
123
|
+
super.disconnectedCallback();
|
|
124
|
+
}
|
|
125
|
+
firstUpdated() {
|
|
126
|
+
this.updateInputValue();
|
|
127
|
+
}
|
|
128
|
+
updated(t) {
|
|
129
|
+
super.updated(t), t.has("value") && (this.syncSelectionFromValue(), this.updateInputValue());
|
|
130
|
+
}
|
|
131
|
+
handleSlotChange() {
|
|
132
|
+
this.empty.hidden = this.options.some((t) => !t.hidden), this.syncSelectionFromValue(), this.updateInputValue(), this.setupOptionsAccessibility();
|
|
133
|
+
}
|
|
134
|
+
setupOptionsAccessibility() {
|
|
135
|
+
this.options.forEach((t, e) => {
|
|
136
|
+
t.setAttribute("role", "option"), t.id || (t.id = `${this.id}-option-${e}`), t.tabIndex = -1, t.setAttribute("aria-selected", String(this.multi ? t.selected : t.value === this.value));
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
syncSelectionFromValue() {
|
|
140
|
+
if (this.multi) {
|
|
141
|
+
const t = this.value.split(",").map((e) => e.trim()).filter(Boolean);
|
|
142
|
+
this.options.forEach((e) => {
|
|
143
|
+
e.selected = t.includes(e.value);
|
|
144
|
+
});
|
|
145
|
+
} else this.options.forEach((t) => {
|
|
146
|
+
t.selected = t.value === this.value;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
updateInputValue() {
|
|
150
|
+
requestAnimationFrame(() => {
|
|
151
|
+
var t;
|
|
152
|
+
if (this.multi) {
|
|
153
|
+
const e = this.options.filter((i) => i.selected).map((i) => i.label);
|
|
154
|
+
this.input.value = e.join(", ");
|
|
155
|
+
} else {
|
|
156
|
+
const e = (t = this.options.find((i) => i.value === this.value)) == null ? void 0 : t.label;
|
|
157
|
+
this.input.value = e ?? "";
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
async showOptions() {
|
|
162
|
+
this.optionsContainer.removeAttribute("hidden"), this.optionsContainer.style.display = "block";
|
|
163
|
+
const { x: t, y: e } = await q(this.input, this.optionsContainer, { placement: "bottom-start", middleware: [Y(5), H(), P({ padding: 5 }), U({ apply({ availableWidth: i, availableHeight: s, elements: n, rects: l }) {
|
|
164
|
+
const r = l.reference.width;
|
|
165
|
+
n.floating.style.minWidth = `${r}px`, n.floating.style.maxWidth = `${i}px`, n.floating.style.maxHeight = `${s}px`;
|
|
166
|
+
} })] });
|
|
167
|
+
Object.assign(this.optionsContainer.style, { left: `${t}px`, top: `${e}px`, position: "absolute", zIndex: "9999", overflowY: "auto" });
|
|
168
|
+
}
|
|
169
|
+
hideOptions() {
|
|
170
|
+
var t;
|
|
171
|
+
(t = this.optionsContainer) == null || t.setAttribute("hidden", "true"), this.optionsContainer && (this.optionsContainer.style.display = "none");
|
|
172
|
+
}
|
|
173
|
+
handleInputChange(t) {
|
|
174
|
+
t.preventDefault(), t.stopPropagation();
|
|
175
|
+
const e = t.detail.value;
|
|
176
|
+
this.searchTerm$.next(e);
|
|
177
|
+
}
|
|
178
|
+
handleOptionClick(t) {
|
|
179
|
+
if (this.multi) {
|
|
180
|
+
const e = this.options.find((s) => s.value === t);
|
|
181
|
+
e && (e.selected = !e.selected);
|
|
182
|
+
const i = this.options.filter((s) => s.selected).map((s) => s.value);
|
|
183
|
+
this.value = i.join(","), this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: i }, bubbles: !0, composed: !0 }));
|
|
184
|
+
} else this.hideOptions(), this.value = t, this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: t }, bubbles: !0, composed: !0 }));
|
|
185
|
+
}
|
|
186
|
+
checkValidity() {
|
|
187
|
+
return this.multi ? this.options.some((t) => t.selected) : !!this.value;
|
|
188
|
+
}
|
|
189
|
+
reportValidity() {
|
|
190
|
+
var t;
|
|
191
|
+
return (t = this.inputRef.value) == null ? void 0 : t.reportValidity();
|
|
192
|
+
}
|
|
193
|
+
handleTouchStart(t) {
|
|
194
|
+
var e, i;
|
|
195
|
+
this.startY = ((i = (e = t.touches) == null ? void 0 : e[0]) == null ? void 0 : i.clientY) ?? 0;
|
|
196
|
+
}
|
|
197
|
+
preventScroll(t) {
|
|
198
|
+
var l, r;
|
|
199
|
+
const e = t.target;
|
|
200
|
+
if (!this.optionsContainer.contains(e)) return;
|
|
201
|
+
const i = this.optionsContainer.scrollTop, s = this.optionsContainer.scrollHeight - this.optionsContainer.offsetHeight, n = ((r = (l = t.touches) == null ? void 0 : l[0]) == null ? void 0 : r.clientY) ?? 0;
|
|
202
|
+
(i <= 0 && n > this.startY || i >= s && n < this.startY) && t.preventDefault();
|
|
203
|
+
}
|
|
204
|
+
focusOption(t, e) {
|
|
205
|
+
const i = t[e];
|
|
206
|
+
i && (i.focus(), this.input.setAttribute("aria-activedescendant", i.id));
|
|
207
|
+
}
|
|
208
|
+
render() {
|
|
209
|
+
var e;
|
|
210
|
+
const t = !((e = this.optionsContainer) != null && e.hasAttribute("hidden"));
|
|
211
|
+
return L`
|
|
212
|
+
<div class="relative">
|
|
213
|
+
<!-- The trigger slot (if any) overrides the default SchmancyInput -->
|
|
214
|
+
<slot name="trigger">
|
|
215
|
+
<schmancy-input
|
|
216
|
+
${Q(this.inputRef)}
|
|
217
|
+
id="input"
|
|
218
|
+
class="w-full"
|
|
219
|
+
.label=${this.label}
|
|
220
|
+
.placeholder=${this.placeholder}
|
|
221
|
+
.required=${this.required}
|
|
222
|
+
type="search"
|
|
223
|
+
inputmode="text"
|
|
224
|
+
autocomplete="off"
|
|
225
|
+
clickable
|
|
226
|
+
role="combobox"
|
|
227
|
+
aria-autocomplete="list"
|
|
228
|
+
aria-haspopup="listbox"
|
|
229
|
+
aria-controls="options"
|
|
230
|
+
aria-expanded=${t}
|
|
231
|
+
@focus=${() => this.showOptions()}
|
|
232
|
+
@input=${this.handleInputChange}
|
|
233
|
+
>
|
|
234
|
+
</schmancy-input>
|
|
235
|
+
</slot>
|
|
236
|
+
|
|
237
|
+
<ul
|
|
238
|
+
id="options"
|
|
239
|
+
tabindex="-1"
|
|
240
|
+
class="absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm"
|
|
241
|
+
role="listbox"
|
|
242
|
+
aria-multiselectable=${this.multi ? "true" : "false"}
|
|
243
|
+
hidden
|
|
244
|
+
@click=${(i) => {
|
|
245
|
+
var n;
|
|
246
|
+
const s = (n = i.detail) == null ? void 0 : n.value;
|
|
247
|
+
s && this.handleOptionClick(s);
|
|
248
|
+
}}
|
|
249
|
+
@touchstart=${this.handleTouchStart}
|
|
250
|
+
@touchmove=${this.preventScroll}
|
|
251
|
+
${F({ bgColor: R.sys.color.surface.container })}
|
|
252
|
+
@slotchange=${this.handleSlotChange}
|
|
253
|
+
>
|
|
254
|
+
<!-- "No results" option -->
|
|
255
|
+
<li id="empty" tabindex="-1">
|
|
256
|
+
<schmancy-typography type="label">No results found</schmancy-typography>
|
|
257
|
+
</li>
|
|
258
|
+
<!-- Slot for the <schmancy-option> elements -->
|
|
259
|
+
<slot></slot>
|
|
260
|
+
</ul>
|
|
261
|
+
</div>
|
|
262
|
+
`;
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
u([x({ type: Boolean })], c.prototype, "required", 2), u([x({ type: String })], c.prototype, "placeholder", 2), u([x({ type: String, reflect: !0 })], c.prototype, "value", 2), u([x({ type: String, reflect: !0 })], c.prototype, "label", 2), u([x({ type: String })], c.prototype, "maxHeight", 2), u([x({ type: Boolean })], c.prototype, "multi", 2), u([E("#options")], c.prototype, "optionsContainer", 2), u([E("#empty")], c.prototype, "empty", 2), u([E("schmancy-input")], c.prototype, "input", 2), u([W({ flatten: !0 })], c.prototype, "options", 2), u([K({ passive: !0 })], c.prototype, "handleOptionClick", 1), c = u([G("schmancy-autocomplete")], c);
|
|
266
|
+
//# sourceMappingURL=autocomplete-DlA7Zj8y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete-DlA7Zj8y.js","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import {\n\tcomputePosition,\n\tflip,\n\toffset,\n\tshift,\n\tsize, // <-- NEW\n} from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\nimport type { SchmancyInputInputEvent } from '@schmancy/input/input'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t// Public API properties\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t/**\n\t * ⚠️ If you still want an explicit fallback for maximum dropdown height,\n\t * you can keep this, but the `size()` middleware will already set a\n\t * dynamic max-height based on viewport space.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\n\t/** Direct reference to the <input> inside <schmancy-input> */\n\tinputRef = createRef<HTMLInputElement>()\n\n\t// Query selectors for elements in the shadow DOM\n\t@query('#options') private optionsContainer!: HTMLUListElement\n\t@query('#empty') private empty!: HTMLLIElement\n\t@query('schmancy-input') private input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\n\t// Subject for search term changes\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\t// iOS scroll-blocking logic\n\tprivate startY = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Ensure the component has an ID (used for generating option IDs)\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-autocomplete-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\n\t\t// Listen for keydown events on the input to enable keyboard navigation.\n\t\t// (If your <schmancy-input> is a custom element, ensure it re–forwards keyboard events\n\t\t// from its internal <input> or use a @keydown listener on it in the template.)\n\t\tfromEvent(this, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tnext: (e: KeyboardEvent) => {\n\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t},\n\t\t\t})\n\t\t// 1) Search filtering logic\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// Filter options using Levenshtein distance\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(({ option, levDistance }) => {\n\t\t\t\t\t\t\t// For short search terms, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\treturn levDistance <= option.label.toLowerCase().length - searchTerm.length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide options based on filtering\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"No results found\"\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\t// Update accessibility attributes on options\n\t\t\t\t\tthis.setupOptionsAccessibility()\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\t// Show dropdown on each new search term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus-out animation (fade out)\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as Element)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\tconst animation = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t})\n\t\t\t\t\treturn from(\n\t\t\t\t\t\tnew Promise<void>(resolve => {\n\t\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.opacity = '1'\n\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// After closing, resync the input’s value\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * When the <slot> changes (i.e. options are added/removed), update the following:\n\t * 1. Show or hide the “No results found” option.\n\t * 2. Sync the selection state.\n\t * 3. Setup accessibility attributes on the options.\n\t */\n\tprivate handleSlotChange() {\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\t/**\n\t * Loops through assigned options and sets accessibility attributes:\n\t * - role=\"option\"\n\t * - A unique ID (if not already set)\n\t * - tabindex=\"-1\"\n\t * - aria-selected (based on whether the option is selected)\n\t */\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute('aria-selected', String(this.multi ? option.selected : option.value === this.value))\n\t\t})\n\t}\n\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate updateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * MAIN: Show the dropdown. Uses Floating UI to position and size the options container.\n\t */\n\tprivate async showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.display = 'block'\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [\n\t\t\t\toffset(5),\n\t\t\t\tflip(),\n\t\t\t\tshift({ padding: 5 }),\n\t\t\t\t// Let the floating element fill available space, but be at least as wide as the input.\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableWidth, availableHeight, elements, rects }) {\n\t\t\t\t\t\t// At least match input width\n\t\t\t\t\t\tconst referenceWidth = rects.reference.width\n\t\t\t\t\t\telements.floating.style.minWidth = `${referenceWidth}px`\n\t\t\t\t\t\t// Cap to available viewport space\n\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\toverflowY: 'auto',\n\t\t\t// You can still use maxHeight as a fallback if desired:\n\t\t\t// maxHeight: this.maxHeight,\n\t\t})\n\t}\n\n\tprivate hideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tif (this.optionsContainer) {\n\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t}\n\t}\n\n\tprivate handleInputChange(event: SchmancyInputInputEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\tprivate handleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\t/**\n\t * Keyboard navigation for the autocomplete.\n\t * – When the dropdown is closed, ArrowDown (or Enter/Space) opens it.\n\t * – When open, ArrowDown/ArrowUp move focus between options (which must have role=\"option\").\n\t * – Enter or Space selects the active option.\n\t * – Escape (or Tab) hides the dropdown.\n\t */\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Get the visible options (i.e. those not hidden)\n\t\tconst options = this.options.filter(o => !o.hidden)\n\n\t\t// If the dropdown is closed, open it on Enter, Space, or ArrowDown\n\t\tif (this.optionsContainer.hasAttribute('hidden')) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.showOptions().then(() => {\n\t\t\t\t\tif (options.length > 0) {\n\t\t\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Dropdown is open; determine the currently focused option\n\t\tlet currentIndex = options.findIndex(o => o.matches(':focus'))\n\t\tif (currentIndex === -1) {\n\t\t\t// If no option is focused, default to the first\n\t\t\tcurrentIndex = 0\n\t\t}\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.hideOptions()\n\t\t\t\tthis.input.focus()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.min(currentIndex + 1, options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.max(currentIndex - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (options[currentIndex]) {\n\t\t\t\t\t// Assume the option's value is stored in either \"data-value\" or \"value\" attribute.\n\t\t\t\t\tconst value = options[currentIndex].getAttribute('data-value') || options[currentIndex].getAttribute('value')\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.handleOptionClick(value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\t// Close the dropdown on Tab (as done in the select component)\n\t\t\t\tthis.hideOptions()\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Helper to focus an option by index and update the combobox’s aria-activedescendant.\n\t */\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\t// Update the input's aria-activedescendant to match the newly focused option.\n\t\t\tthis.input.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\trender() {\n\t\t// Determine whether the dropdown is open based on the hidden attribute.\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- The trigger slot (if any) overrides the default SchmancyInput -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\taria-expanded=${isOpen}\n\t\t\t\t\t\t@focus=${() => this.showOptions()}\n\t\t\t\t\t\t@input=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi ? 'true' : 'false'}\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> should dispatch a CustomEvent('click', { detail: { value } })\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) this.handleOptionClick(detailVal)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@slotchange=${this.handleSlotChange}\n\t\t\t\t>\n\t\t\t\t\t<!-- \"No results\" option -->\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","super","arguments","this","required","placeholder","value","label","maxHeight","multi","inputRef","createRef","searchTerm$","Subject","startY","handleKeyDown","e","options","filter","o","hidden","optionsContainer","hasAttribute","includes","key","preventDefault","showOptions","then","focusOption","currentIndex","findIndex","matches","hideOptions","input","focus","max","getAttribute","handleOptionClick","connectedCallback","id","random","toString","substr","fromEvent","pipe","takeUntil","disconnecting","subscribe","next","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","map","option","optionText","levDistance","sort","forEach","empty","setupOptionsAccessibility","requestUpdate","relatedTarget","tagName","switchMap","animation","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","selected","join","find","disconnectedCallback","updateInputValue","changedProps","updated","has","syncSelectionFromValue","some","index","setAttribute","tabIndex","String","values","split","v","Boolean","requestAnimationFrame","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","size","apply","availableWidth","availableHeight","elements","rects","referenceWidth","reference","width","floating","minWidth","maxWidth","Object","assign","left","top","position","zIndex","overflowY","event","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","isOpen","html","ref","handleInputChange","detailVal","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","handleSlotChange","__decorateClass","property","type","prototype","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";const q=require("@floating-ui/dom"),E=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const Y=require("./litElement.mixin-BhS9oGuC.cjs");require("./tailwind.mixin-C16PXbzn.cjs");const j=require("./ripple-C2BHbhcS.cjs"),H=require("./theme.interface-Xg5Zi46a.cjs"),P=require("lit"),u=require("lit/decorators.js"),U=require("lit/directives/ref.js"),A=require("rxjs/operators"),C=new Uint32Array(65536),z=(t,e)=>{if(t.length<e.length){const i=e;e=t,t=i}return e.length===0?t.length:t.length<=32?((i,o)=>{const n=i.length,r=o.length,l=1<<n-1;let p=-1,y=0,$=n,h=n;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<r;h++){let b=C[o.charCodeAt(h)];const v=b|y;b|=(b&p)+p^p,y|=~(b|p),p&=b,y&l&&$++,p&l&&$--,y=y<<1|1,p=p<<1|~(v|y),y&=v}for(h=n;h--;)C[i.charCodeAt(h)]=0;return $})(t,e):((i,o)=>{const n=o.length,r=i.length,l=[],p=[],y=Math.ceil(n/32),$=Math.ceil(r/32);for(let s=0;s<y;s++)p[s]=-1,l[s]=0;let h=0;for(;h<$-1;h++){let s=0,m=-1;const x=32*h,w=Math.min(32,r)+x;for(let a=x;a<w;a++)C[i.charCodeAt(a)]|=1<<a;for(let a=0;a<n;a++){const O=C[o.charCodeAt(a)],g=p[a/32|0]>>>a&1,f=l[a/32|0]>>>a&1,T=O|s,M=((O|f)&m)+m^m|O|f;let k=s|~(M|m),D=m&M;k>>>31^g&&(p[a/32|0]^=1<<a),D>>>31^f&&(l[a/32|0]^=1<<a),k=k<<1|g,D=D<<1|f,m=D|~(T|k),s=k&T}for(let a=x;a<w;a++)C[i.charCodeAt(a)]=0}let b=0,v=-1;const S=32*h,V=Math.min(32,r-S)+S;for(let s=S;s<V;s++)C[i.charCodeAt(s)]|=1<<s;let I=r;for(let s=0;s<n;s++){const m=C[o.charCodeAt(s)],x=p[s/32|0]>>>s&1,w=l[s/32|0]>>>s&1,a=m|b,O=((m|w)&v)+v^v|m|w;let g=b|~(O|v),f=v&O;I+=g>>>r-1&1,I-=f>>>r-1&1,g>>>31^x&&(p[s/32|0]^=1<<s),f>>>31^w&&(l[s/32|0]^=1<<s),g=g<<1|x,f=f<<1|w,v=f|~(a|g),b=g&a}for(let s=S;s<V;s++)C[i.charCodeAt(s)]=0;return I})(t,e)};var N=Object.defineProperty,B=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var n,r=o>1?void 0:o?B(e,i):e,l=t.length-1;l>=0;l--)(n=t[l])&&(r=(o?n(e,i,r):n(r))||r);return o&&r&&N(e,i,r),r};let c=class extends Y.$LitElement(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}"){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.inputRef=U.createRef(),this.searchTerm$=new E.Subject,this.startY=0,this.handleKeyDown=t=>{const e=this.options.filter(o=>!o.hidden);if(this.optionsContainer.hasAttribute("hidden"))return void(["Enter"," ","ArrowDown"].includes(t.key)&&(t.preventDefault(),this.showOptions().then(()=>{e.length>0&&this.focusOption(e,0)})));let i=e.findIndex(o=>o.matches(":focus"));switch(i===-1&&(i=0),t.key){case"Escape":t.preventDefault(),this.hideOptions(),this.input.focus();break;case"ArrowDown":t.preventDefault(),this.focusOption(e,Math.min(i+1,e.length-1));break;case"ArrowUp":t.preventDefault(),this.focusOption(e,Math.max(i-1,0));break;case"Enter":case" ":if(t.preventDefault(),e[i]){const o=e[i].getAttribute("data-value")||e[i].getAttribute("value");o&&this.handleOptionClick(o)}break;case"Tab":this.hideOptions()}}}connectedCallback(){super.connectedCallback(),this.id||(this.id=`schmancy-autocomplete-${Math.random().toString(36).substr(2,9)}`),E.fromEvent(this,"keydown").pipe(A.takeUntil(this.disconnecting)).subscribe({next:t=>{this.handleKeyDown(t)}}),this.searchTerm$.pipe(A.takeUntil(this.disconnecting),A.distinctUntilChanged(),A.tap(t=>{const e=t.trim().toLowerCase(),i=this.options.map(o=>{const n=o.label.toLowerCase();return{option:o,levDistance:z(e,n)}}).filter(({option:o,levDistance:n})=>e.length<3||n<=o.label.toLowerCase().length-e.length).sort((o,n)=>o.levDistance-n.levDistance);this.options.forEach(o=>o.hidden=!0);for(const{option:o}of i)o.hidden=!1;this.empty.hidden=i.length>0,this.setupOptionsAccessibility(),this.requestUpdate()})).subscribe(()=>{this.showOptions()}),E.fromEvent(this,"focusout").pipe(A.takeUntil(this.disconnecting),A.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),A.switchMap(()=>{const t=this.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:250,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"});return E.from(new Promise(e=>{t.onfinish=()=>{this.optionsContainer.style.display="none",this.optionsContainer.style.opacity="1",e()}}))})).subscribe({next:()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}disconnectedCallback(){super.disconnectedCallback()}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue(),this.setupOptionsAccessibility()}setupOptionsAccessibility(){this.options.forEach((t,e)=>{t.setAttribute("role","option"),t.id||(t.id=`${this.id}-option-${e}`),t.tabIndex=-1,t.setAttribute("aria-selected",String(this.multi?t.selected:t.value===this.value))})}syncSelectionFromValue(){if(this.multi){const t=this.value.split(",").map(e=>e.trim()).filter(Boolean);this.options.forEach(e=>{e.selected=t.includes(e.value)})}else this.options.forEach(t=>{t.selected=t.value===this.value})}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else{const e=(t=this.options.find(i=>i.value===this.value))==null?void 0:t.label;this.input.value=e??""}})}async showOptions(){this.optionsContainer.removeAttribute("hidden"),this.optionsContainer.style.display="block";const{x:t,y:e}=await q.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[q.offset(5),q.flip(),q.shift({padding:5}),q.size({apply({availableWidth:i,availableHeight:o,elements:n,rects:r}){const l=r.reference.width;n.floating.style.minWidth=`${l}px`,n.floating.style.maxWidth=`${i}px`,n.floating.style.maxHeight=`${o}px`}})]});Object.assign(this.optionsContainer.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",overflowY:"auto"})}hideOptions(){var t;(t=this.optionsContainer)==null||t.setAttribute("hidden","true"),this.optionsContainer&&(this.optionsContainer.style.display="none")}handleInputChange(t){t.preventDefault(),t.stopPropagation();const e=t.detail.value;this.searchTerm$.next(e)}handleOptionClick(t){if(this.multi){const e=this.options.find(o=>o.value===t);e&&(e.selected=!e.selected);const i=this.options.filter(o=>o.selected).map(o=>o.value);this.value=i.join(","),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:i},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}handleTouchStart(t){var e,i;this.startY=((i=(e=t.touches)==null?void 0:e[0])==null?void 0:i.clientY)??0}preventScroll(t){var r,l;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,n=((l=(r=t.touches)==null?void 0:r[0])==null?void 0:l.clientY)??0;(i<=0&&n>this.startY||i>=o&&n<this.startY)&&t.preventDefault()}focusOption(t,e){const i=t[e];i&&(i.focus(),this.input.setAttribute("aria-activedescendant",i.id))}render(){var e;const t=!((e=this.optionsContainer)!=null&&e.hasAttribute("hidden"));return P.html`
|
|
2
|
+
<div class="relative">
|
|
3
|
+
<!-- The trigger slot (if any) overrides the default SchmancyInput -->
|
|
4
|
+
<slot name="trigger">
|
|
5
|
+
<schmancy-input
|
|
6
|
+
${U.ref(this.inputRef)}
|
|
7
|
+
id="input"
|
|
8
|
+
class="w-full"
|
|
9
|
+
.label=${this.label}
|
|
10
|
+
.placeholder=${this.placeholder}
|
|
11
|
+
.required=${this.required}
|
|
12
|
+
type="search"
|
|
13
|
+
inputmode="text"
|
|
14
|
+
autocomplete="off"
|
|
15
|
+
clickable
|
|
16
|
+
role="combobox"
|
|
17
|
+
aria-autocomplete="list"
|
|
18
|
+
aria-haspopup="listbox"
|
|
19
|
+
aria-controls="options"
|
|
20
|
+
aria-expanded=${t}
|
|
21
|
+
@focus=${()=>this.showOptions()}
|
|
22
|
+
@input=${this.handleInputChange}
|
|
23
|
+
>
|
|
24
|
+
</schmancy-input>
|
|
25
|
+
</slot>
|
|
26
|
+
|
|
27
|
+
<ul
|
|
28
|
+
id="options"
|
|
29
|
+
tabindex="-1"
|
|
30
|
+
class="absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm"
|
|
31
|
+
role="listbox"
|
|
32
|
+
aria-multiselectable=${this.multi?"true":"false"}
|
|
33
|
+
hidden
|
|
34
|
+
@click=${i=>{var n;const o=(n=i.detail)==null?void 0:n.value;o&&this.handleOptionClick(o)}}
|
|
35
|
+
@touchstart=${this.handleTouchStart}
|
|
36
|
+
@touchmove=${this.preventScroll}
|
|
37
|
+
${j.color({bgColor:H.SchmancyTheme.sys.color.surface.container})}
|
|
38
|
+
@slotchange=${this.handleSlotChange}
|
|
39
|
+
>
|
|
40
|
+
<!-- "No results" option -->
|
|
41
|
+
<li id="empty" tabindex="-1">
|
|
42
|
+
<schmancy-typography type="label">No results found</schmancy-typography>
|
|
43
|
+
</li>
|
|
44
|
+
<!-- Slot for the <schmancy-option> elements -->
|
|
45
|
+
<slot></slot>
|
|
46
|
+
</ul>
|
|
47
|
+
</div>
|
|
48
|
+
`}};d([u.property({type:Boolean})],c.prototype,"required",2),d([u.property({type:String})],c.prototype,"placeholder",2),d([u.property({type:String,reflect:!0})],c.prototype,"value",2),d([u.property({type:String,reflect:!0})],c.prototype,"label",2),d([u.property({type:String})],c.prototype,"maxHeight",2),d([u.property({type:Boolean})],c.prototype,"multi",2),d([u.query("#options")],c.prototype,"optionsContainer",2),d([u.query("#empty")],c.prototype,"empty",2),d([u.query("schmancy-input")],c.prototype,"input",2),d([u.queryAssignedElements({flatten:!0})],c.prototype,"options",2),d([u.eventOptions({passive:!0})],c.prototype,"handleOptionClick",1),c=d([u.customElement("schmancy-autocomplete")],c);
|
|
49
|
+
//# sourceMappingURL=autocomplete-sjP09kRE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete-sjP09kRE.cjs","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import {\n\tcomputePosition,\n\tflip,\n\toffset,\n\tshift,\n\tsize, // <-- NEW\n} from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\nimport type { SchmancyInputInputEvent } from '@schmancy/input/input'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t// Public API properties\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t/**\n\t * ⚠️ If you still want an explicit fallback for maximum dropdown height,\n\t * you can keep this, but the `size()` middleware will already set a\n\t * dynamic max-height based on viewport space.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\n\t/** Direct reference to the <input> inside <schmancy-input> */\n\tinputRef = createRef<HTMLInputElement>()\n\n\t// Query selectors for elements in the shadow DOM\n\t@query('#options') private optionsContainer!: HTMLUListElement\n\t@query('#empty') private empty!: HTMLLIElement\n\t@query('schmancy-input') private input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\n\t// Subject for search term changes\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\t// iOS scroll-blocking logic\n\tprivate startY = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Ensure the component has an ID (used for generating option IDs)\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-autocomplete-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\n\t\t// Listen for keydown events on the input to enable keyboard navigation.\n\t\t// (If your <schmancy-input> is a custom element, ensure it re–forwards keyboard events\n\t\t// from its internal <input> or use a @keydown listener on it in the template.)\n\t\tfromEvent(this, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tnext: (e: KeyboardEvent) => {\n\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t},\n\t\t\t})\n\t\t// 1) Search filtering logic\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// Filter options using Levenshtein distance\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(({ option, levDistance }) => {\n\t\t\t\t\t\t\t// For short search terms, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\treturn levDistance <= option.label.toLowerCase().length - searchTerm.length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide options based on filtering\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"No results found\"\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\t// Update accessibility attributes on options\n\t\t\t\t\tthis.setupOptionsAccessibility()\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\t// Show dropdown on each new search term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus-out animation (fade out)\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as Element)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\tconst animation = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t})\n\t\t\t\t\treturn from(\n\t\t\t\t\t\tnew Promise<void>(resolve => {\n\t\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.opacity = '1'\n\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// After closing, resync the input’s value\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * When the <slot> changes (i.e. options are added/removed), update the following:\n\t * 1. Show or hide the “No results found” option.\n\t * 2. Sync the selection state.\n\t * 3. Setup accessibility attributes on the options.\n\t */\n\tprivate handleSlotChange() {\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\t/**\n\t * Loops through assigned options and sets accessibility attributes:\n\t * - role=\"option\"\n\t * - A unique ID (if not already set)\n\t * - tabindex=\"-1\"\n\t * - aria-selected (based on whether the option is selected)\n\t */\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute('aria-selected', String(this.multi ? option.selected : option.value === this.value))\n\t\t})\n\t}\n\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate updateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * MAIN: Show the dropdown. Uses Floating UI to position and size the options container.\n\t */\n\tprivate async showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.display = 'block'\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [\n\t\t\t\toffset(5),\n\t\t\t\tflip(),\n\t\t\t\tshift({ padding: 5 }),\n\t\t\t\t// Let the floating element fill available space, but be at least as wide as the input.\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableWidth, availableHeight, elements, rects }) {\n\t\t\t\t\t\t// At least match input width\n\t\t\t\t\t\tconst referenceWidth = rects.reference.width\n\t\t\t\t\t\telements.floating.style.minWidth = `${referenceWidth}px`\n\t\t\t\t\t\t// Cap to available viewport space\n\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\toverflowY: 'auto',\n\t\t\t// You can still use maxHeight as a fallback if desired:\n\t\t\t// maxHeight: this.maxHeight,\n\t\t})\n\t}\n\n\tprivate hideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tif (this.optionsContainer) {\n\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t}\n\t}\n\n\tprivate handleInputChange(event: SchmancyInputInputEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\tprivate handleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\t/**\n\t * Keyboard navigation for the autocomplete.\n\t * – When the dropdown is closed, ArrowDown (or Enter/Space) opens it.\n\t * – When open, ArrowDown/ArrowUp move focus between options (which must have role=\"option\").\n\t * – Enter or Space selects the active option.\n\t * – Escape (or Tab) hides the dropdown.\n\t */\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Get the visible options (i.e. those not hidden)\n\t\tconst options = this.options.filter(o => !o.hidden)\n\n\t\t// If the dropdown is closed, open it on Enter, Space, or ArrowDown\n\t\tif (this.optionsContainer.hasAttribute('hidden')) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.showOptions().then(() => {\n\t\t\t\t\tif (options.length > 0) {\n\t\t\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Dropdown is open; determine the currently focused option\n\t\tlet currentIndex = options.findIndex(o => o.matches(':focus'))\n\t\tif (currentIndex === -1) {\n\t\t\t// If no option is focused, default to the first\n\t\t\tcurrentIndex = 0\n\t\t}\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.hideOptions()\n\t\t\t\tthis.input.focus()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.min(currentIndex + 1, options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.max(currentIndex - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (options[currentIndex]) {\n\t\t\t\t\t// Assume the option's value is stored in either \"data-value\" or \"value\" attribute.\n\t\t\t\t\tconst value = options[currentIndex].getAttribute('data-value') || options[currentIndex].getAttribute('value')\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.handleOptionClick(value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\t// Close the dropdown on Tab (as done in the select component)\n\t\t\t\tthis.hideOptions()\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Helper to focus an option by index and update the combobox’s aria-activedescendant.\n\t */\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\t// Update the input's aria-activedescendant to match the newly focused option.\n\t\t\tthis.input.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\trender() {\n\t\t// Determine whether the dropdown is open based on the hidden attribute.\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- The trigger slot (if any) overrides the default SchmancyInput -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\taria-expanded=${isOpen}\n\t\t\t\t\t\t@focus=${() => this.showOptions()}\n\t\t\t\t\t\t@input=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi ? 'true' : 'false'}\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> should dispatch a CustomEvent('click', { detail: { value } })\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) this.handleOptionClick(detailVal)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@slotchange=${this.handleSlotChange}\n\t\t\t\t>\n\t\t\t\t\t<!-- \"No results\" option -->\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","value","label","maxHeight","multi","inputRef","createRef","searchTerm$","Subject","startY","handleKeyDown","e","options","filter","o","hidden","optionsContainer","hasAttribute","includes","key","preventDefault","showOptions","then","focusOption","currentIndex","findIndex","matches","hideOptions","input","focus","max","getAttribute","handleOptionClick","connectedCallback","id","random","toString","substr","fromEvent","pipe","takeUntil","disconnecting","subscribe","next","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","map","option","optionText","levDistance","sort","forEach","empty","setupOptionsAccessibility","requestUpdate","relatedTarget","tagName","switchMap","animation","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","selected","join","find","disconnectedCallback","firstUpdated","updateInputValue","changedProps","updated","has","syncSelectionFromValue","handleSlotChange","some","index","setAttribute","tabIndex","String","values","split","v","Boolean","requestAnimationFrame","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","size","availableWidth","availableHeight","elements","rects","referenceWidth","reference","width","floating","minWidth","maxWidth","Object","assign","left","top","position","zIndex","overflowY","event","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","isOpen","html","ref","handleInputChange","detailVal","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","__decorateClass","property","type","prototype","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/autocomplete.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./autocomplete-
|
|
1
|
+
"use strict";require("./autocomplete-sjP09kRE.cjs");
|
|
2
2
|
//# sourceMappingURL=autocomplete.cjs.map
|
package/dist/autocomplete.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./autocomplete-
|
|
1
|
+
import "./autocomplete-DlA7Zj8y.js";
|
|
2
2
|
//# sourceMappingURL=autocomplete.js.map
|
package/dist/busy.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./spinner-
|
|
1
|
+
"use strict";require("./spinner-BQV8GutW.cjs");
|
|
2
2
|
//# sourceMappingURL=busy.cjs.map
|
package/dist/busy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./spinner-
|
|
1
|
+
import "./spinner-CjCEXMhX.js";
|
|
2
2
|
//# sourceMappingURL=busy.js.map
|
package/dist/button.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./icon-button-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./icon-button-C3lDDtmo.cjs");Object.defineProperty(exports,"SchmancyButton",{enumerable:!0,get:()=>e.SchmancyButton}),Object.defineProperty(exports,"SchmnacyIconButton",{enumerable:!0,get:()=>e.SchmnacyIconButton});
|
|
2
2
|
//# sourceMappingURL=button.cjs.map
|
package/dist/button.js
CHANGED
package/dist/card.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./teleport.component-
|
|
1
|
+
"use strict";require("./teleport.component-KeTZiEjM.cjs");
|
|
2
2
|
//# sourceMappingURL=card.cjs.map
|
package/dist/card.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./teleport.component-
|
|
1
|
+
import "./teleport.component-C_FhEBDr.js";
|
|
2
2
|
//# sourceMappingURL=card.js.map
|
|
@@ -4,7 +4,7 @@ import { isServer as I, LitElement as q, html as $, nothing as y, css as U } fro
|
|
|
4
4
|
import { classMap as D } from "lit/directives/class-map.js";
|
|
5
5
|
import "rxjs";
|
|
6
6
|
import "lit/directives/style-map.js";
|
|
7
|
-
import { T as F } from "./tailwind.mixin-
|
|
7
|
+
import { T as F } from "./tailwind.mixin-DZPJ7kCh.js";
|
|
8
8
|
function T(i) {
|
|
9
9
|
return i.currentTarget === i.target && i.composedPath()[0] === i.target && !i.target.disabled && !function(e) {
|
|
10
10
|
const t = g;
|
|
@@ -233,4 +233,4 @@ l.shadowRootOptions = { ...q.shadowRootOptions, delegatesFocus: !0 }, l.formAsso
|
|
|
233
233
|
export {
|
|
234
234
|
l as S
|
|
235
235
|
};
|
|
236
|
-
//# sourceMappingURL=checkbox-
|
|
236
|
+
//# sourceMappingURL=checkbox-BUckVPbf.js.map
|