@mhmo91/schmancy 0.2.9 → 0.2.10
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-vp4fwxY2.cjs → animated-text-B7ot87Yb.cjs} +2 -2
- package/dist/{animated-text-vp4fwxY2.cjs.map → animated-text-B7ot87Yb.cjs.map} +1 -1
- package/dist/{animated-text-0Ai_OLHl.js → animated-text-BR3J5YzM.js} +3 -3
- package/dist/{animated-text-0Ai_OLHl.js.map → animated-text-BR3J5YzM.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-JScs76M1.js → area.component-BlcOhWYn.js} +3 -3
- package/dist/{area.component-JScs76M1.js.map → area.component-BlcOhWYn.js.map} +1 -1
- package/dist/{area.component-4wkXNax5.cjs → area.component-Dvbv9xus.cjs} +2 -2
- package/dist/{area.component-4wkXNax5.cjs.map → area.component-Dvbv9xus.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/autocomplete-GCjmIPKP.cjs +43 -0
- package/dist/autocomplete-GCjmIPKP.cjs.map +1 -0
- package/dist/autocomplete-vfdJnjAx.js +212 -0
- package/dist/autocomplete-vfdJnjAx.js.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-Bxp5uWqA.cjs → checkbox-B6wuWHQT.cjs} +2 -2
- package/dist/{checkbox-Bxp5uWqA.cjs.map → checkbox-B6wuWHQT.cjs.map} +1 -1
- package/dist/{checkbox-colFZOar.js → checkbox-BrVJwQYt.js} +2 -2
- package/dist/{checkbox-colFZOar.js.map → checkbox-BrVJwQYt.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-7sYLmlxn.js → chips-CCNEOlx2.js} +3 -3
- package/dist/{chips-7sYLmlxn.js.map → chips-CCNEOlx2.js.map} +1 -1
- package/dist/{chips-BVQttHUJ.cjs → chips-DW4wk4ns.cjs} +2 -2
- package/dist/{chips-BVQttHUJ.cjs.map → chips-DW4wk4ns.cjs.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-BLusWPVn.js → date-range-BqsNgxis.js} +3 -3
- package/dist/{date-range-BLusWPVn.js.map → date-range-BqsNgxis.js.map} +1 -1
- package/dist/{date-range-_7Vry7wT.cjs → date-range-s4nUUXP-.cjs} +2 -2
- package/dist/{date-range-_7Vry7wT.cjs.map → date-range-s4nUUXP-.cjs.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-B8fYtrMp.js → delay-DrTqFWuI.js} +2 -2
- package/dist/{delay-B8fYtrMp.js.map → delay-DrTqFWuI.js.map} +1 -1
- package/dist/{delay-ikznAH-1.cjs → delay-ZjnwZygz.cjs} +2 -2
- package/dist/{delay-ikznAH-1.cjs.map → delay-ZjnwZygz.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{divider-DJ9Gx64O.cjs → divider-C-olgct1.cjs} +2 -2
- package/dist/{divider-DJ9Gx64O.cjs.map → divider-C-olgct1.cjs.map} +1 -1
- package/dist/{divider-DLOwEvrd.js → divider-DE_qGu0Z.js} +3 -3
- package/dist/{divider-DLOwEvrd.js.map → divider-DE_qGu0Z.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{form-OYWlsQ4R.cjs → form-BftBHIa9.cjs} +2 -2
- package/dist/{form-OYWlsQ4R.cjs.map → form-BftBHIa9.cjs.map} +1 -1
- package/dist/{form-qBkXHUCV.js → form-CiopR1cw.js} +2 -2
- package/dist/{form-qBkXHUCV.js.map → form-CiopR1cw.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-DDILI2Kw.cjs → icon-C3VNzTd2.cjs} +2 -2
- package/dist/{icon-DDILI2Kw.cjs.map → icon-C3VNzTd2.cjs.map} +1 -1
- package/dist/{icon-button-CP_pX4yw.cjs → icon-button-CEcYwu6h.cjs} +11 -11
- package/dist/icon-button-CEcYwu6h.cjs.map +1 -0
- package/dist/{icon-button-tvckJDEE.js → icon-button-cThH-HDx.js} +9 -9
- package/dist/icon-button-cThH-HDx.js.map +1 -0
- package/dist/{icon-BUV18-Pm.js → icon-uV29Oo_I.js} +3 -3
- package/dist/{icon-BUV18-Pm.js.map → icon-uV29Oo_I.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 +32 -32
- package/dist/input-BNWPVs3H.js +124 -0
- package/dist/input-BNWPVs3H.js.map +1 -0
- package/dist/input-shCt07iX.cjs +43 -0
- package/dist/input-shCt07iX.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.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-Bczhguqz.js → litElement.mixin-Bn8Rl6md.js} +2 -2
- package/dist/{litElement.mixin-Bczhguqz.js.map → litElement.mixin-Bn8Rl6md.js.map} +1 -1
- package/dist/{litElement.mixin-dZ5gFldT.cjs → litElement.mixin-CqG5Vzn4.cjs} +2 -2
- package/dist/{litElement.mixin-dZ5gFldT.cjs.map → litElement.mixin-CqG5Vzn4.cjs.map} +1 -1
- package/dist/{menu-CHUomCth.cjs → menu-BsjLQTfd.cjs} +2 -2
- package/dist/{menu-CHUomCth.cjs.map → menu-BsjLQTfd.cjs.map} +1 -1
- package/dist/{menu-C20Ngz8k.js → menu-CK0Aunqg.js} +3 -3
- package/dist/{menu-C20Ngz8k.js.map → menu-CK0Aunqg.js.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/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-DqO86_nY.js → option-C3ovVy8Q.js} +2 -2
- package/dist/{option-DqO86_nY.js.map → option-C3ovVy8Q.js.map} +1 -1
- package/dist/{option-PVtp_mrs.cjs → option-CEN9FFeV.cjs} +2 -2
- package/dist/{option-PVtp_mrs.cjs.map → option-CEN9FFeV.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{outlet-BzsckqZ8.cjs → outlet-BMkGxj9Y.cjs} +2 -2
- package/dist/{outlet-BzsckqZ8.cjs.map → outlet-BMkGxj9Y.cjs.map} +1 -1
- package/dist/{outlet-DcBtaiCX.js → outlet-CbHO2KGb.js} +2 -2
- package/dist/{outlet-DcBtaiCX.js.map → outlet-CbHO2KGb.js.map} +1 -1
- package/dist/{payment-card-form-Bbj5Ie3_.js → payment-card-form-CSjKMW71.js} +3 -3
- package/dist/{payment-card-form-Bbj5Ie3_.js.map → payment-card-form-CSjKMW71.js.map} +1 -1
- package/dist/{payment-card-form-DdrmXQgW.cjs → payment-card-form-ClNJIflz.cjs} +2 -2
- package/dist/{payment-card-form-DdrmXQgW.cjs.map → payment-card-form-ClNJIflz.cjs.map} +1 -1
- package/dist/{radio-group-BdFNVPBX.js → radio-group-BaAICOCk.js} +2 -2
- package/dist/{radio-group-BdFNVPBX.js.map → radio-group-BaAICOCk.js.map} +1 -1
- package/dist/{radio-group-IYmnpHoM.cjs → radio-group-Dq8G5fBE.cjs} +2 -2
- package/dist/{radio-group-IYmnpHoM.cjs.map → radio-group-Dq8G5fBE.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{scroll-qTSe885X.js → scroll-BJ_3vZ-c.js} +2 -2
- package/dist/{scroll-qTSe885X.js.map → scroll-BJ_3vZ-c.js.map} +1 -1
- package/dist/{scroll-O39qwEAR.cjs → scroll-CUpYxnFS.cjs} +2 -2
- package/dist/{scroll-O39qwEAR.cjs.map → scroll-CUpYxnFS.cjs.map} +1 -1
- package/dist/{select-DGgGHXxb.cjs → select-DSOpxxMT.cjs} +3 -3
- package/dist/select-DSOpxxMT.cjs.map +1 -0
- package/dist/{select-C1qEu5xm.js → select-DzmFjt61.js} +7 -7
- package/dist/select-DzmFjt61.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-CTZGiS7C.cjs → sheet-BnBjA5tD.cjs} +2 -2
- package/dist/{sheet-CTZGiS7C.cjs.map → sheet-BnBjA5tD.cjs.map} +1 -1
- package/dist/{sheet-DptJn65A.js → sheet-Co0cHr37.js} +3 -3
- package/dist/{sheet-DptJn65A.js.map → sheet-Co0cHr37.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-DF0hGetl.cjs → slider-CJdYHduh.cjs} +2 -2
- package/dist/{slider-DF0hGetl.cjs.map → slider-CJdYHduh.cjs.map} +1 -1
- package/dist/{slider-DuC6D-d4.js → slider-dtJketj4.js} +3 -3
- package/dist/{slider-DuC6D-d4.js.map → slider-dtJketj4.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-CC4zDuEm.cjs → spinner-BB1NW_4b.cjs} +2 -2
- package/dist/{spinner-CC4zDuEm.cjs.map → spinner-BB1NW_4b.cjs.map} +1 -1
- package/dist/{spinner-CNgjSbB2.js → spinner-ssJhxM2o.js} +3 -3
- package/dist/{spinner-CNgjSbB2.js.map → spinner-ssJhxM2o.js.map} +1 -1
- package/dist/{surface-DVYDiR06.js → surface-DeLQUjNN.js} +3 -3
- package/dist/surface-DeLQUjNN.js.map +1 -0
- package/dist/{surface-DgEJ5kCf.cjs → surface-jQagrINO.cjs} +3 -3
- package/dist/surface-jQagrINO.cjs.map +1 -0
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DaiP2A-P.cjs → table-Co0-nm4Y.cjs} +2 -2
- package/dist/{table-DaiP2A-P.cjs.map → table-Co0-nm4Y.cjs.map} +1 -1
- package/dist/{table-CvT4bvRV.js → table-DZIjJKTT.js} +2 -2
- package/dist/{table-CvT4bvRV.js.map → table-DZIjJKTT.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-group-BsYXf7-L.cjs → tabs-group-Doix3mBX.cjs} +2 -2
- package/dist/{tabs-group-BsYXf7-L.cjs.map → tabs-group-Doix3mBX.cjs.map} +1 -1
- package/dist/{tabs-group-uSIERHrS.js → tabs-group-JXceC_AX.js} +2 -2
- package/dist/{tabs-group-uSIERHrS.js.map → tabs-group-JXceC_AX.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{tailwind.mixin-ivf7aKpx.cjs → tailwind.mixin-C3pXEh-C.cjs} +2 -2
- package/dist/{tailwind.mixin-ivf7aKpx.cjs.map → tailwind.mixin-C3pXEh-C.cjs.map} +1 -1
- package/dist/{tailwind.mixin-DaorKUB-.js → tailwind.mixin-C5OzBKVB.js} +14 -14
- package/dist/{tailwind.mixin-DaorKUB-.js.map → tailwind.mixin-C5OzBKVB.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/{teleport.component-CHZvUCGh.cjs → teleport.component-BXtXmHVa.cjs} +10 -10
- package/dist/teleport.component-BXtXmHVa.cjs.map +1 -0
- package/dist/{teleport.component-BJp0sdwT.js → teleport.component-Cq8hZD_o.js} +35 -35
- package/dist/teleport.component-Cq8hZD_o.js.map +1 -0
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CmiDJ6vB.cjs → textarea-BfNvgfZ_.cjs} +2 -2
- package/dist/{textarea-CmiDJ6vB.cjs.map → textarea-BfNvgfZ_.cjs.map} +1 -1
- package/dist/{textarea-CBVhP0PO.js → textarea-vre0j7PW.js} +2 -2
- package/dist/{textarea-CBVhP0PO.js.map → textarea-vre0j7PW.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-oUEwzPgP.cjs → theme-button-CQiYi_67.cjs} +2 -2
- package/dist/{theme-button-oUEwzPgP.cjs.map → theme-button-CQiYi_67.cjs.map} +1 -1
- package/dist/{theme-button-D1kqQf95.js → theme-button-D8dDywwF.js} +2 -2
- package/dist/{theme-button-D1kqQf95.js.map → theme-button-D8dDywwF.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-BNYF3EuP.cjs +3 -0
- package/dist/{theme.component-C-dSR7fa.cjs.map → theme.component-BNYF3EuP.cjs.map} +1 -1
- package/dist/{theme.component-C7KaOcEZ.js → theme.component-iFFaMUIB.js} +43 -43
- package/dist/{theme.component-C7KaOcEZ.js.map → theme.component-iFFaMUIB.js.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{tree-CjGzyEO3.cjs → tree-BGkPGaY8.cjs} +2 -2
- package/dist/{tree-CjGzyEO3.cjs.map → tree-BGkPGaY8.cjs.map} +1 -1
- package/dist/{tree-DnRjW773.js → tree-Dzh0J35T.js} +2 -2
- package/dist/{tree-DnRjW773.js.map → tree-Dzh0J35T.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-By3kfvcw.cjs → typewriter-ChAfM5s5.cjs} +2 -2
- package/dist/{typewriter-By3kfvcw.cjs.map → typewriter-ChAfM5s5.cjs.map} +1 -1
- package/dist/{typewriter-Bl4oL7Nj.js → typewriter-v9NtjriH.js} +4 -4
- package/dist/{typewriter-Bl4oL7Nj.js.map → typewriter-v9NtjriH.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-ZAIIeqBH.js → typography-BsfF4nMf.js} +2 -2
- package/dist/{typography-ZAIIeqBH.js.map → typography-BsfF4nMf.js.map} +1 -1
- package/dist/{typography-CDoqXfnX.cjs → typography-NRVaaUrd.cjs} +2 -2
- package/dist/{typography-CDoqXfnX.cjs.map → typography-NRVaaUrd.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +2 -1
- package/types/src/autocomplete/autocomplete.d.ts +95 -9
- package/types/src/input/input.d.ts +58 -47
- package/types/src/theme/theme.component.d.ts +1 -0
- package/dist/autocomplete-CiNm2SkD.cjs +0 -42
- package/dist/autocomplete-CiNm2SkD.cjs.map +0 -1
- package/dist/autocomplete-Cm5NEwT6.js +0 -189
- package/dist/autocomplete-Cm5NEwT6.js.map +0 -1
- package/dist/icon-button-CP_pX4yw.cjs.map +0 -1
- package/dist/icon-button-tvckJDEE.js.map +0 -1
- package/dist/input-BH04wAXW.cjs +0 -42
- package/dist/input-BH04wAXW.cjs.map +0 -1
- package/dist/input-Dxk8fmQJ.js +0 -118
- package/dist/input-Dxk8fmQJ.js.map +0 -1
- package/dist/select-C1qEu5xm.js.map +0 -1
- package/dist/select-DGgGHXxb.cjs.map +0 -1
- package/dist/surface-DVYDiR06.js.map +0 -1
- package/dist/surface-DgEJ5kCf.cjs.map +0 -1
- package/dist/teleport.component-BJp0sdwT.js.map +0 -1
- package/dist/teleport.component-CHZvUCGh.cjs.map +0 -1
- package/dist/theme.component-C-dSR7fa.cjs +0 -3
|
@@ -1,37 +1,123 @@
|
|
|
1
1
|
import SchmancyInput from '@schmancy/input/input';
|
|
2
2
|
import SchmancyOption from '@schmancy/option/option';
|
|
3
|
-
import {
|
|
4
|
-
import { SchmancyInputChangeEvent } from '..';
|
|
3
|
+
import type { SchmancyInputChangeEvent } from '..';
|
|
5
4
|
export type SchmancyAutocompleteChangeEvent = CustomEvent<{
|
|
6
5
|
value: string | string[];
|
|
7
6
|
}>;
|
|
8
7
|
declare const SchmancyAutocomplete_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
9
8
|
export default class SchmancyAutocomplete extends SchmancyAutocomplete_base {
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Whether input is required for form validity.
|
|
11
|
+
*/
|
|
12
|
+
required: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Placeholder text for the input.
|
|
15
|
+
*/
|
|
11
16
|
placeholder: string;
|
|
17
|
+
/**
|
|
18
|
+
* Programmatic value of the autocomplete. Setting this
|
|
19
|
+
* after the element is rendered will now update the display.
|
|
20
|
+
*/
|
|
12
21
|
value: string;
|
|
22
|
+
/**
|
|
23
|
+
* Label for the input (floating label or similar).
|
|
24
|
+
*/
|
|
13
25
|
label: string;
|
|
26
|
+
/**
|
|
27
|
+
* Max height of the dropdown options container.
|
|
28
|
+
*/
|
|
14
29
|
maxHeight: string;
|
|
30
|
+
/**
|
|
31
|
+
* Whether multiple selections are allowed.
|
|
32
|
+
*/
|
|
15
33
|
multi: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* A local property to store the *display* value (label text).
|
|
36
|
+
* This is separate from the raw `value`.
|
|
37
|
+
*/
|
|
16
38
|
valueLabel: string;
|
|
17
39
|
inputRef: import("lit-html/directives/ref").Ref<HTMLInputElement>;
|
|
18
|
-
|
|
19
|
-
|
|
40
|
+
/**
|
|
41
|
+
* The main <ul> with id="options".
|
|
42
|
+
*/
|
|
20
43
|
optionsContainer: HTMLUListElement;
|
|
44
|
+
/**
|
|
45
|
+
* The "no results found" <li> element.
|
|
46
|
+
*/
|
|
47
|
+
empty: HTMLLIElement;
|
|
48
|
+
/**
|
|
49
|
+
* The SchmancyInput element (your visible text input).
|
|
50
|
+
*/
|
|
21
51
|
input: SchmancyInput;
|
|
52
|
+
/**
|
|
53
|
+
* All the <schmancy-option> children assigned via the default slot.
|
|
54
|
+
*/
|
|
22
55
|
options: SchmancyOption[];
|
|
23
|
-
searchTerm
|
|
24
|
-
|
|
56
|
+
private readonly searchTerm$;
|
|
57
|
+
connectedCallback(): void;
|
|
58
|
+
/**
|
|
59
|
+
* firstUpdated (similar to componentDidMount in React).
|
|
60
|
+
* We can do an initial sync of the input's display text
|
|
61
|
+
* if a `value` was pre-set.
|
|
62
|
+
*/
|
|
25
63
|
firstUpdated(): void;
|
|
64
|
+
/**
|
|
65
|
+
* This will be invoked *any time* a reactive property changes
|
|
66
|
+
* after the first render. We specifically check if `value` changed,
|
|
67
|
+
* so we can update the display text (and selected states) if needed.
|
|
68
|
+
*/
|
|
69
|
+
protected updated(changedProps: Map<string | number | symbol, unknown>): void;
|
|
70
|
+
/**
|
|
71
|
+
* If user assigned new <schmancy-option> children, or changed them,
|
|
72
|
+
* we also want to ensure the "no results" is correct and that
|
|
73
|
+
* our input text is still in sync.
|
|
74
|
+
*/
|
|
75
|
+
private handleSlotChange;
|
|
76
|
+
/**
|
|
77
|
+
* For multi-select, ensure that any `value` strings
|
|
78
|
+
* are reflected in the child <schmancy-option>'s `selected` property.
|
|
79
|
+
* For single select, do similarly for the one matching option.
|
|
80
|
+
*/
|
|
81
|
+
private syncSelectionFromValue;
|
|
82
|
+
/**
|
|
83
|
+
* Takes the current `value` (and child <schmancy-option>s) and updates
|
|
84
|
+
* the displayed text in the schmancy-input. Called whenever we need
|
|
85
|
+
* to re-sync the visible input text to the actual data.
|
|
86
|
+
*/
|
|
26
87
|
updateInputValue(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Show the dropdown list, using Floating UI for positioning.
|
|
90
|
+
*/
|
|
27
91
|
showOptions(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Hide the dropdown immediately (no animation).
|
|
94
|
+
*/
|
|
28
95
|
hideOptions(): void;
|
|
96
|
+
/**
|
|
97
|
+
* Called whenever the user types in the schmancy-input.
|
|
98
|
+
*/
|
|
29
99
|
handleInputChange(event: SchmancyInputChangeEvent): void;
|
|
100
|
+
/**
|
|
101
|
+
* Called whenever user clicks or taps an <schmancy-option>.
|
|
102
|
+
*/
|
|
30
103
|
handleOptionClick(value: string): void;
|
|
31
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Check validity of the selected value(s) to satisfy forms.
|
|
106
|
+
*/
|
|
32
107
|
checkValidity(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Actually cause form validation checks if needed.
|
|
110
|
+
*/
|
|
111
|
+
reportValidity(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Attempt to prevent iOS scrolling the background page
|
|
114
|
+
* while swiping within the options list. (NB: This logic
|
|
115
|
+
* currently needs a bit more nuance to be robust.)
|
|
116
|
+
*/
|
|
117
|
+
private startY;
|
|
118
|
+
private handleTouchStart;
|
|
119
|
+
private preventScroll;
|
|
33
120
|
render(): import("lit-html").TemplateResult<1>;
|
|
34
|
-
preventScroll(event: any): void;
|
|
35
121
|
}
|
|
36
122
|
declare global {
|
|
37
123
|
interface HTMLElementTagNameMap {
|
|
@@ -1,55 +1,59 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
|
+
declare global {
|
|
3
|
+
interface HTMLElementTagNameMap {
|
|
4
|
+
'schmancy-input': SchmancyInput;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* An autocomplete type (expand or customize as needed).
|
|
9
|
+
*/
|
|
10
|
+
type AutoFill = 'off' | 'on' | 'name' | 'username' | 'email' | 'tel' | 'url' | 'new-password' | 'current-password' | 'one-time-code';
|
|
11
|
+
type EventDetails = {
|
|
12
|
+
value: string;
|
|
13
|
+
};
|
|
14
|
+
export type SchmancyInputChangeEvent = CustomEvent<EventDetails>;
|
|
2
15
|
declare const SchmancyInput_base: import("@mixins/index").Constructor<CustomElementConstructor> & import("@mixins/index").Constructor<import("@mixins/index").ITailwindElementMixin> & import("@mixins/index").Constructor<LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
16
|
+
/**
|
|
17
|
+
* `schmancy-input` – A custom input component.
|
|
18
|
+
*/
|
|
3
19
|
export default class SchmancyInput extends SchmancyInput_base {
|
|
4
20
|
/**
|
|
5
21
|
* The label of the control.
|
|
6
22
|
* @attr
|
|
7
|
-
* @type {string}
|
|
23
|
+
* @type {string}
|
|
8
24
|
* @default ''
|
|
9
|
-
* @public
|
|
10
25
|
*/
|
|
11
26
|
label: string;
|
|
12
27
|
/**
|
|
13
28
|
* The type of the control.
|
|
14
29
|
* @attr
|
|
15
|
-
* @type {'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url' | 'date' | 'datetime' | 'time' | 'month' | 'week' | 'color' | 'file'}
|
|
16
30
|
* @default 'text'
|
|
17
|
-
|
|
18
|
-
**/
|
|
31
|
+
*/
|
|
19
32
|
type: 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url' | 'date' | 'datetime' | 'time' | 'month' | 'week' | 'color' | 'file';
|
|
20
33
|
clickable: boolean;
|
|
21
34
|
/**
|
|
22
35
|
* The name of the control.
|
|
23
|
-
* @attr
|
|
24
|
-
* @type {string} name
|
|
36
|
+
* @attr
|
|
25
37
|
* @default 'name_' + Date.now()
|
|
26
|
-
* @public
|
|
27
38
|
*/
|
|
28
39
|
name: string;
|
|
29
40
|
/**
|
|
30
41
|
* The placeholder of the control.
|
|
31
|
-
* @attr
|
|
32
|
-
* @type {string}
|
|
42
|
+
* @attr
|
|
33
43
|
* @default ''
|
|
34
|
-
* @public
|
|
35
44
|
*/
|
|
36
45
|
placeholder: string;
|
|
37
46
|
/**
|
|
38
47
|
* The value of the control.
|
|
39
|
-
* @attr
|
|
40
|
-
* @type {string}
|
|
48
|
+
* @attr
|
|
41
49
|
* @default ''
|
|
42
|
-
* @public
|
|
43
50
|
*/
|
|
44
51
|
value: string;
|
|
45
52
|
/**
|
|
46
53
|
* The pattern attribute of the control.
|
|
47
54
|
* @attr
|
|
48
|
-
* @type {string}
|
|
49
|
-
* @default undefiend
|
|
50
|
-
* @public
|
|
51
55
|
*/
|
|
52
|
-
pattern
|
|
56
|
+
pattern?: string;
|
|
53
57
|
required: boolean;
|
|
54
58
|
disabled: boolean;
|
|
55
59
|
readonly: boolean;
|
|
@@ -58,42 +62,38 @@ export default class SchmancyInput extends SchmancyInput_base {
|
|
|
58
62
|
/**
|
|
59
63
|
* The inputmode attribute of the control.
|
|
60
64
|
* @attr
|
|
61
|
-
* @
|
|
62
|
-
* @default 'none'
|
|
63
|
-
* @public
|
|
65
|
+
* @default undefined
|
|
64
66
|
*/
|
|
65
|
-
inputmode
|
|
67
|
+
inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
|
|
66
68
|
/**
|
|
67
69
|
* The minlength attribute of the control.
|
|
68
70
|
* @attr
|
|
69
71
|
*/
|
|
70
|
-
minlength
|
|
72
|
+
minlength?: number;
|
|
71
73
|
/**
|
|
72
74
|
* The maxlength attribute of the control.
|
|
73
75
|
* @attr
|
|
74
76
|
*/
|
|
75
|
-
maxlength
|
|
77
|
+
maxlength?: number;
|
|
76
78
|
/**
|
|
77
79
|
* The min attribute of the control.
|
|
78
80
|
* @attr
|
|
79
81
|
*/
|
|
80
|
-
min
|
|
82
|
+
min?: string;
|
|
81
83
|
/**
|
|
82
84
|
* The max attribute of the control.
|
|
83
85
|
* @attr
|
|
84
86
|
*/
|
|
85
|
-
max
|
|
87
|
+
max?: string;
|
|
86
88
|
/**
|
|
87
89
|
* The step attribute of the control.
|
|
88
90
|
* @attr
|
|
89
91
|
*/
|
|
90
|
-
step
|
|
92
|
+
step?: number;
|
|
91
93
|
/**
|
|
92
94
|
* The autofocus attribute of the control.
|
|
93
95
|
* @attr
|
|
94
|
-
* @type {boolean}
|
|
95
96
|
* @default false
|
|
96
|
-
* @public
|
|
97
97
|
*/
|
|
98
98
|
autofocus: boolean;
|
|
99
99
|
/**
|
|
@@ -101,43 +101,54 @@ export default class SchmancyInput extends SchmancyInput_base {
|
|
|
101
101
|
* @attr
|
|
102
102
|
*/
|
|
103
103
|
autocomplete: AutoFill;
|
|
104
|
+
/**
|
|
105
|
+
* tabIndex for focusing by tab key.
|
|
106
|
+
*/
|
|
104
107
|
tabIndex: number;
|
|
105
|
-
|
|
106
|
-
hint: string | undefined;
|
|
108
|
+
hint?: string;
|
|
107
109
|
error: boolean;
|
|
108
|
-
|
|
110
|
+
inputElement: HTMLInputElement;
|
|
111
|
+
inputRef: import("lit-html/directives/ref").Ref<HTMLInputElement>;
|
|
112
|
+
/** Form-associated custom elements support. */
|
|
113
|
+
static formAssociated: boolean;
|
|
109
114
|
protected static shadowRootOptions: {
|
|
110
115
|
delegatesFocus: boolean;
|
|
111
116
|
mode: ShadowRootMode;
|
|
112
117
|
serializable?: boolean;
|
|
113
118
|
slotAssignment?: SlotAssignmentMode;
|
|
114
119
|
};
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
inputRef: import("lit-html/directives/ref").Ref<HTMLInputElement>;
|
|
120
|
+
private internals?;
|
|
121
|
+
constructor();
|
|
118
122
|
get form(): HTMLFormElement;
|
|
123
|
+
/**
|
|
124
|
+
* (Optional) Whenever value changes, sync with form internals for
|
|
125
|
+
* form submission (if you're using form-associated custom elements).
|
|
126
|
+
*/
|
|
127
|
+
protected updated(changedProps: Map<string, unknown>): void;
|
|
119
128
|
/** Checks for validity of the control and shows the browser message if it's invalid. */
|
|
120
129
|
reportValidity(): boolean;
|
|
121
|
-
/** Checks for validity of the control and emits the invalid event if it invalid. */
|
|
130
|
+
/** Checks for validity of the control and emits the invalid event if it is invalid. */
|
|
122
131
|
checkValidity(): boolean;
|
|
123
132
|
/** Sets a custom validity message. */
|
|
124
133
|
setCustomValidity(message: string): void;
|
|
125
134
|
firstUpdated(): void;
|
|
126
135
|
/** Selects all text within the input. */
|
|
127
136
|
select(): void;
|
|
128
|
-
validity
|
|
137
|
+
/** Returns the internal validity state object. */
|
|
138
|
+
getValidity(): ValidityState | undefined;
|
|
139
|
+
/**
|
|
140
|
+
* Override focus so that focusing <schmancy-input> actually focuses
|
|
141
|
+
* the internal <input>.
|
|
142
|
+
*/
|
|
129
143
|
focus(options?: FocusOptions): void;
|
|
144
|
+
/**
|
|
145
|
+
* Same with click; bubble a click out if needed, but delegate to internal input.
|
|
146
|
+
*/
|
|
130
147
|
click(): void;
|
|
148
|
+
/**
|
|
149
|
+
* Same with blur; bubble the event.
|
|
150
|
+
*/
|
|
131
151
|
blur(): void;
|
|
132
|
-
protected render():
|
|
133
|
-
}
|
|
134
|
-
type EventDetails = {
|
|
135
|
-
value: string;
|
|
136
|
-
};
|
|
137
|
-
export type SchmancyInputChangeEvent = CustomEvent<EventDetails>;
|
|
138
|
-
declare global {
|
|
139
|
-
interface HTMLElementTagNameMap {
|
|
140
|
-
'schmancy-input': SchmancyInput;
|
|
141
|
-
}
|
|
152
|
+
protected render(): import("lit-html").TemplateResult<1>;
|
|
142
153
|
}
|
|
143
154
|
export {};
|
|
@@ -5,6 +5,7 @@ export declare class SchmancyThemeComponent extends SchmancyThemeComponent_base
|
|
|
5
5
|
color: string;
|
|
6
6
|
scheme: 'dark' | 'light' | 'auto';
|
|
7
7
|
root: boolean;
|
|
8
|
+
theme: Partial<TSchmancyTheme>;
|
|
8
9
|
connectedCallback(): void;
|
|
9
10
|
registerTheme(): void;
|
|
10
11
|
registerThemeValues(prefix: string, path: string, value: Partial<TSchmancyTheme>): string | undefined;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";const P=require("@floating-ui/dom"),H=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const D=require("./litElement.mixin-dZ5gFldT.cjs");require("./tailwind.mixin-ivf7aKpx.cjs");const j=require("./ripple-C2BHbhcS.cjs"),L=require("./theme.interface-Xg5Zi46a.cjs"),R=require("lit"),u=require("lit/decorators.js"),V=require("lit/directives/ref.js"),$=require("rxjs/operators"),C=new Uint32Array(65536),U=(t,e)=>{if(t.length<e.length){const o=e;e=t,t=o}return e.length===0?t.length:t.length<=32?((o,i)=>{const n=o.length,r=i.length,d=1<<n-1;let h=-1,f=0,A=n,a=n;for(;a--;)C[o.charCodeAt(a)]|=1<<a;for(a=0;a<r;a++){let g=C[i.charCodeAt(a)];const v=g|f;g|=(g&h)+h^h,f|=~(g|h),h&=g,f&d&&A++,h&d&&A--,f=f<<1|1,h=h<<1|~(v|f),f&=v}for(a=n;a--;)C[o.charCodeAt(a)]=0;return A})(t,e):((o,i)=>{const n=i.length,r=o.length,d=[],h=[],f=Math.ceil(n/32),A=Math.ceil(r/32);for(let s=0;s<f;s++)h[s]=-1,d[s]=0;let a=0;for(;a<A-1;a++){let s=0,m=-1;const w=32*a,q=Math.min(32,r)+w;for(let l=w;l<q;l++)C[o.charCodeAt(l)]|=1<<l;for(let l=0;l<n;l++){const x=C[i.charCodeAt(l)],b=h[l/32|0]>>>l&1,y=d[l/32|0]>>>l&1,M=x|s,T=((x|y)&m)+m^m|x|y;let O=s|~(T|m),S=m&T;O>>>31^b&&(h[l/32|0]^=1<<l),S>>>31^y&&(d[l/32|0]^=1<<l),O=O<<1|b,S=S<<1|y,m=S|~(M|O),s=O&M}for(let l=w;l<q;l++)C[o.charCodeAt(l)]=0}let g=0,v=-1;const k=32*a,I=Math.min(32,r-k)+k;for(let s=k;s<I;s++)C[o.charCodeAt(s)]|=1<<s;let E=r;for(let s=0;s<n;s++){const m=C[i.charCodeAt(s)],w=h[s/32|0]>>>s&1,q=d[s/32|0]>>>s&1,l=m|g,x=((m|q)&v)+v^v|m|q;let b=g|~(x|v),y=v&x;E+=b>>>r-1&1,E-=y>>>r-1&1,b>>>31^w&&(h[s/32|0]^=1<<s),y>>>31^q&&(d[s/32|0]^=1<<s),b=b<<1|w,y=y<<1|q,v=y|~(l|b),g=b&l}for(let s=k;s<I;s++)C[o.charCodeAt(s)]=0;return E})(t,e)};var Y=Object.defineProperty,z=Object.getOwnPropertyDescriptor,c=(t,e,o,i)=>{for(var n,r=i>1?void 0:i?z(e,o):e,d=t.length-1;d>=0;d--)(n=t[d])&&(r=(i?n(e,o,r):n(r))||r);return i&&r&&Y(e,o,r),r};let p=class extends D.$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.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.valueLabel="",this.inputRef=V.createRef(),this.searchTerm$=new H.Subject}firstUpdated(){this.searchTermSubscription=this.searchTerm$.pipe($.takeUntil(this.disconnecting),$.distinctUntilChanged(),$.tap(t=>{const e=t.trim().toLowerCase(),o=this.options.map(i=>{const n=i.label.toLowerCase();return{option:i,levDistance:U(e,n)}}).filter(({option:i,levDistance:n})=>e.length<3||n<=i.label.toLowerCase().length-e.length).sort((i,n)=>i.levDistance-n.levDistance);this.empty.hidden=o.map(({option:i})=>(i.hidden=!1,i)).some(i=>!i.hidden),this.options.forEach(i=>{i.hidden=!o.some(n=>n.option===i)}),this.requestUpdate()})).subscribe(()=>{this.showOptions()}),H.fromEvent(this,"focusout").pipe($.takeUntil(this.disconnecting),$.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),$.switchMap(()=>{const t=this.ul.animate([{opacity:1},{opacity:0}],{duration:250,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"}),e=new Promise(o=>{t.onfinish=()=>{var i,n;(i=this.ul)==null||i.style.setProperty("display","none"),(n=this.ul)==null||n.style.setProperty("opacity","1"),o()}});return H.from(e)})).subscribe({next:()=>{var t,e,o;this.multi?(t=this.inputRef.value)==null||t.setAttribute("value",this.options.filter(i=>i.selected).map(i=>i.label).join(", ")):(o=this.inputRef.value)==null||o.setAttribute("value",((e=this.options.find(i=>i.value===this.value))==null?void 0:e.label)??"")}}),this.updateInputValue()}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.value.split(",").map(o=>{var i;return(i=this.options.find(n=>n.value===o))==null?void 0: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)??""})}async showOptions(){var o,i;(o=this.ul)==null||o.removeAttribute("hidden"),(i=this.ul)==null||i.style.setProperty("display","block");const{x:t,y:e}=await P.computePosition(this.input,this.ul,{placement:"bottom-start",middleware:[P.offset(5),P.flip(),P.shift({padding:5})]});Object.assign(this.ul.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",maxHeight:this.maxHeight,overflowY:"auto"})}hideOptions(){var t,e;(t=this.ul)==null||t.setAttribute("hidden","true"),(e=this.ul)==null||e.style.setProperty("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),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this.options.filter(o=>o.selected).map(o=>o.value)},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}render(){const t={maxHeight:this.maxHeight};return R.html`
|
|
2
|
-
<div class="relative">
|
|
3
|
-
<slot name="trigger">
|
|
4
|
-
<schmancy-input
|
|
5
|
-
autocomplete="off"
|
|
6
|
-
class="w-full"
|
|
7
|
-
${V.ref(this.inputRef)}
|
|
8
|
-
.required=${this.required}
|
|
9
|
-
id="input"
|
|
10
|
-
.label=${this.label}
|
|
11
|
-
@focus=${this.showOptions}
|
|
12
|
-
clickable
|
|
13
|
-
type="search"
|
|
14
|
-
inputmode="text"
|
|
15
|
-
placeholder=${this.placeholder}
|
|
16
|
-
@change=${this.handleInputChange}
|
|
17
|
-
>
|
|
18
|
-
</schmancy-input>
|
|
19
|
-
</slot>
|
|
20
|
-
<ul
|
|
21
|
-
tabindex="-1"
|
|
22
|
-
class=${this.classMap({"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-2":!0})}
|
|
23
|
-
style=${this.styleMap(t)}
|
|
24
|
-
id="options"
|
|
25
|
-
role="listbox"
|
|
26
|
-
hidden
|
|
27
|
-
@click=${e=>{this.handleOptionClick(e.detail.value)}}
|
|
28
|
-
@touchstart=${this.preventScroll}
|
|
29
|
-
@touchmove=${this.preventScroll}
|
|
30
|
-
${j.color({bgColor:L.SchmancyTheme.sys.color.surface.container})}
|
|
31
|
-
>
|
|
32
|
-
<li id="empty" tabindex="-1">
|
|
33
|
-
<schmancy-typography type="label">No results found</schmancy-typography>
|
|
34
|
-
</li>
|
|
35
|
-
<slot
|
|
36
|
-
@slotchange=${()=>{this.empty.hidden=this.options.some(e=>!e.hidden),this.updateInputValue()}}
|
|
37
|
-
tabindex="0"
|
|
38
|
-
></slot>
|
|
39
|
-
</ul>
|
|
40
|
-
</div>
|
|
41
|
-
`}preventScroll(t){const e=t.target;if(this.optionsContainer.contains(e)){const o=this.optionsContainer.scrollTop,i=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight;(o===0&&t.touches[0].clientY>t.touches[0].clientY||o===i&&t.touches[0].clientY<t.touches[0].clientY)&&t.preventDefault()}}};c([u.property({type:Boolean})],p.prototype,"required",2),c([u.property({type:String})],p.prototype,"placeholder",2),c([u.property({type:String,reflect:!0})],p.prototype,"value",2),c([u.property({type:String,reflect:!0})],p.prototype,"label",2),c([u.property({type:String})],p.prototype,"maxHeight",2),c([u.property({type:Boolean})],p.prototype,"multi",2),c([u.state()],p.prototype,"valueLabel",2),c([u.query("ul")],p.prototype,"ul",2),c([u.query("#empty")],p.prototype,"empty",2),c([u.query("#options")],p.prototype,"optionsContainer",2),c([u.query("schmancy-input")],p.prototype,"input",2),c([u.queryAssignedElements({flatten:!0})],p.prototype,"options",2),c([u.eventOptions({passive:!0})],p.prototype,"handleOptionClick",1),p=c([u.customElement("schmancy-autocomplete")],p);
|
|
42
|
-
//# sourceMappingURL=autocomplete-CiNm2SkD.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-CiNm2SkD.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 { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption, { SchmancyOptionChangeEvent } 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, state } 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 { SchmancyInputChangeEvent } from '..'\nimport style from './autocomplete.scss?inline'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t@property({ type: Boolean }) required\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\t@state() valueLabel = ''\n\tinputRef = createRef<HTMLInputElement>()\n\n\t@query('ul') ul!: HTMLUListElement\n\t@query('#empty') empty!: HTMLLIElement\n\t@query('#options') optionsContainer!: HTMLUListElement\n\t@query('schmancy-input') input!: SchmancyInput\n\n\t@queryAssignedElements({ flatten: true }) options!: SchmancyOption[]\n\n\tsearchTerm$ = new Subject<string>()\n\tsearchTermSubscription: any\n\n\tfirstUpdated() {\n\t\tthis.searchTermSubscription = this.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\t\t\t\t\t// ... filter logic ...\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(\n\t\t\t\t\t\t\t({ option, levDistance }) =>\n\t\t\t\t\t\t\t\tsearchTerm.length < 3 || 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\tthis.empty.hidden = matches\n\t\t\t\t\t\t.map(({ option }) => {\n\t\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t\t\treturn option\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.some(option => !option.hidden)\n\n\t\t\t\t\tthis.options.forEach(option => {\n\t\t\t\t\t\toption.hidden = !matches.some(match => match.option === option)\n\t\t\t\t\t})\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\tthis.showOptions()\n\t\t\t})\n\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 SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// --- Native Web Animations API replacement ---\n\t\t\t\t\tconst animation = this.ul.animate(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{ opacity: 1 }, // from\n\t\t\t\t\t\t\t{ opacity: 0 }, // to\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// Turn the onfinish callback into a Promise so RxJS can `from(...)` it\n\t\t\t\t\tconst animationPromise = new Promise<void>(resolve => {\n\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t// This is where you'd do your cleanup (like onComplete before)\n\t\t\t\t\t\t\tthis.ul?.style.setProperty('display', 'none')\n\t\t\t\t\t\t\tthis.ul?.style.setProperty('opacity', '1')\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(animationPromise)\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// Once animation completes\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tthis.inputRef.value?.setAttribute(\n\t\t\t\t\t\t\t'value',\n\t\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t\t.filter(o => o.selected)\n\t\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t\t.join(', '),\n\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.inputRef.value?.setAttribute('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\n\t\tthis.updateInputValue()\n\t}\n\n\tupdateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selectedOptions = this.value.split(',').map(v => this.options.find(o => o.value === v)?.label)\n\t\t\t\tthis.input.value = selectedOptions.join(', ')\n\t\t\t} else {\n\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\tasync showOptions() {\n\t\tthis.ul?.removeAttribute('hidden')\n\t\tthis.ul?.style.setProperty('display', 'block')\n\n\t\t// Position the dropdown using Floating UI\n\t\tconst { x, y } = await computePosition(this.input, this.ul, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t})\n\n\t\tObject.assign(this.ul.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\tmaxHeight: this.maxHeight,\n\t\t\toverflowY: 'auto',\n\t\t})\n\t}\n\n\thideOptions() {\n\t\tthis.ul?.setAttribute('hidden', 'true')\n\t\tthis.ul?.style.setProperty('display', 'none')\n\t}\n\n\thandleInputChange(event: SchmancyInputChangeEvent) {\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\thandleOptionClick(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\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: { value: this.options.filter(o => o.selected).map(o => o.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} 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('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 reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : !!this.value\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-2': true,\n\t\t}\n\t\tconst styles = {\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t@focus=${this.showOptions}\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\t\t\t\t<ul\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=${this.classMap(classes)}\n\t\t\t\t\tstyle=${this.styleMap(styles)}\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: SchmancyOptionChangeEvent) => {\n\t\t\t\t\t\tthis.handleOptionClick(e.detail.value)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.preventScroll}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\t})}\n\t\t\t\t>\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\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\t\t\t\t\t\tthis.updateInputValue()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n\n\tpreventScroll(event) {\n\t\tconst target = event.target\n\n\t\tif (this.optionsContainer.contains(target)) {\n\t\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\t\tif (\n\t\t\t\t(scrollTop === 0 && event.touches[0].clientY > event.touches[0].clientY) ||\n\t\t\t\t(scrollTop === contentHeight && event.touches[0].clientY < event.touches[0].clientY)\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t}\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","placeholder","value","label","maxHeight","multi","valueLabel","inputRef","createRef","searchTerm$","Subject","firstUpdated","searchTermSubscription","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","empty","hidden","some","forEach","match","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","ul","animate","opacity","duration","easing","animationPromise","Promise","resolve","onfinish","style","setProperty","from","next","setAttribute","o","selected","join","find","updateInputValue","requestAnimationFrame","selectedOptions","split","v","input","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","zIndex","overflowY","event","preventDefault","stopPropagation","detail","dispatchEvent","CustomEvent","bubbles","composed","hideOptions","reportValidity","checkValidity","render","styles","html","ref","required","handleInputChange","classMap","styleMap","handleOptionClick","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","target","optionsContainer","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","touches","clientY","__decorateClass","property","type","Boolean","prototype","String","reflect","state","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"ibAAMA,EAAM,IAAIC,YAAY,KAAA,EA+GtBC,EAAW,CAACC,EAAGC,IAAAA,CACjB,GAAID,EAAEE,OAASD,EAAEC,OAAQ,CACrB,MAAMC,EAAMF,EACZA,EAAID,EACJA,EAAIG,CACZ,CACI,OAAIF,EAAEC,SAAW,EACNF,EAAEE,OAETF,EAAEE,QAAU,IAvHFF,CAAAA,EAAGC,IACjB,CAAA,MAAMG,EAAIJ,EAAEE,OACNG,EAAIJ,EAAEC,OACNI,EAAM,GAAMF,EAAI,EACtB,IAAIG,EAAAA,GACAC,EAAK,EACLC,EAAKL,EACLM,EAAIN,EACR,KAAOM,KACHb,EAAIG,EAAEW,WAAWD,CAAO,CAAA,GAAA,GAAKA,EAEjC,IAAKA,EAAI,EAAGA,EAAIL,EAAGK,IAAK,CACpB,IAAIE,EAAKf,EAAII,EAAEU,WAAWD,CAAAA,CAAAA,EAC1B,MAAMG,EAAKD,EAAKJ,EAChBI,IAAQA,EAAKL,GAAMA,EAAMA,EACzBC,GAAAA,EAAQI,EAAKL,GACbA,GAAMK,EACFJ,EAAKF,GACLG,IAEAF,EAAKD,GACLG,IAEJD,EAAMA,GAAM,EAAK,EACjBD,EAAMA,GAAM,EAAA,EAAOM,EAAKL,GACxBA,GAAMK,CACd,CAEI,IADAH,EAAIN,EACGM,KACHb,EAAIG,EAAEW,WAAWD,CAAM,CAAA,EAAA,EAE3B,OAAOD,CAAE,GAyFWT,EAAGC,CAvFX,GAAA,CAACA,EAAGD,IAAAA,CAChB,MAAMI,EAAIJ,EAAEE,OACNG,EAAIJ,EAAEC,OACNY,EAAM,CACNC,EAAAA,EAAM,CACNC,EAAAA,EAAQC,KAAKC,KAAKd,EAAI,EAAA,EACtBe,EAAQF,KAAKC,KAAKb,EAAI,EAC5B,EAAA,QAASK,EAAI,EAAGA,EAAIM,EAAON,IACvBK,EAAIL,CAAO,EAAA,GACXI,EAAIJ,CAAAA,EAAK,EAEb,IAAIU,EAAI,EACR,KAAOA,EAAID,EAAQ,EAAGC,IAAK,CACvB,IAAIZ,EAAK,EACLD,EAAAA,GACJ,MAAMc,EAAY,GAAJD,EACRE,EAAOL,KAAKM,IAAI,GAAIlB,CAAAA,EAAKgB,EAC/B,QAASG,EAAIH,EAAOG,EAAIF,EAAME,IAC1B3B,EAAII,EAAEU,WAAWa,CAAAA,CAAAA,GAAO,GAAKA,EAEjC,QAASd,EAAI,EAAGA,EAAIN,EAAGM,IAAK,CACxB,MAAME,EAAKf,EAAIG,EAAEW,WAAWD,CAAAA,CAAAA,EACtBe,EAAMV,EAAKL,EAAI,GAAM,CAAA,IAAOA,EAAK,EACjCgB,EAAMZ,EAAKJ,EAAI,GAAM,CAAOA,IAAAA,EAAK,EACjCG,EAAKD,EAAKJ,EACVmB,IAASf,EAAKc,GAAMnB,GAAMA,EAAMA,EAAMK,EAAKc,EACjD,IAAIE,EAAKpB,EAAOmB,EAAAA,EAAKpB,GACjBsB,EAAKtB,EAAKoB,EACTC,IAAO,GAAMH,IACdV,EAAKL,EAAI,GAAM,CAAA,GAAM,GAAKA,GAEzBmB,IAAO,GAAMH,IACdZ,EAAKJ,EAAI,GAAM,CAAM,GAAA,GAAKA,GAE9BkB,EAAMA,GAAM,EAAKH,EACjBI,EAAMA,GAAM,EAAKH,EACjBnB,EAAKsB,EAAOhB,EAAAA,EAAKe,GACjBpB,EAAKoB,EAAKf,CACtB,CACQ,QAASW,EAAIH,EAAOG,EAAIF,EAAME,IAC1B3B,EAAII,EAAEU,WAAWa,CAAM,CAAA,EAAA,CAEnC,CACI,IAAIhB,EAAK,EACLD,EAAO,GACX,MAAMc,EAAY,GAAJD,EACRE,EAAOL,KAAKM,IAAI,GAAIlB,EAAIgB,CAAAA,EAASA,EACvC,QAASG,EAAIH,EAAOG,EAAIF,EAAME,IAC1B3B,EAAII,EAAEU,WAAWa,CAAAA,CAAAA,GAAO,GAAKA,EAEjC,IAAIM,EAAQzB,EACZ,QAASK,EAAI,EAAGA,EAAIN,EAAGM,IAAK,CACxB,MAAME,EAAKf,EAAIG,EAAEW,WAAWD,CACtBe,CAAAA,EAAAA,EAAMV,EAAKL,EAAI,GAAM,CAAOA,IAAAA,EAAK,EACjCgB,EAAMZ,EAAKJ,EAAI,GAAM,CAAA,IAAOA,EAAK,EACjCG,EAAKD,EAAKJ,EACVmB,IAASf,EAAKc,GAAMnB,GAAMA,EAAMA,EAAMK,EAAKc,EACjD,IAAIE,EAAKpB,EAAAA,EAAOmB,EAAKpB,GACjBsB,EAAKtB,EAAKoB,EACdG,GAAUF,IAAQvB,EAAI,EAAM,EAC5ByB,GAAUD,IAAQxB,EAAI,EAAM,EACvBuB,IAAO,GAAMH,IACdV,EAAKL,EAAI,GAAM,CAAA,GAAM,GAAKA,GAEzBmB,IAAO,GAAMH,IACdZ,EAAKJ,EAAI,GAAM,CAAM,GAAA,GAAKA,GAE9BkB,EAAMA,GAAM,EAAKH,EACjBI,EAAMA,GAAM,EAAKH,EACjBnB,EAAKsB,EAAAA,EAAOhB,EAAKe,GACjBpB,EAAKoB,EAAKf,CAClB,CACI,QAASW,EAAIH,EAAOG,EAAIF,EAAME,IAC1B3B,EAAII,EAAEU,WAAWa,CAAM,CAAA,EAAA,EAE3B,OAAOM,CAAK,GAcG9B,EAAGC,CAAAA,CAAE,kMCvGxB,IAAqB8B,EAArB,cAAkDC,sOAAlD,CAAA,CAAA,aAAAC,CAAAA,MAAAA,GAAAC,WAE2CC,KAAAC,YAAA,GACSD,KAAAE,MAAA,GACAF,KAAAG,MAAA,GACXH,KAAAI,UAAA,OACHJ,KAAAK,MAAAA,GACfL,KAAAM,WAAA,GACtBN,KAAAO,SAAWC,cASXR,KAAAS,YAAc,IAAIC,SAAgB,CAGlC,cAAAC,CACMX,KAAAY,uBAAyBZ,KAAKS,YACjCI,KACAC,EAAAA,UAAUd,KAAKe,aAAAA,EACfC,yBACAC,MAAYC,GACX,CAAA,MAAMC,EAAaD,EAAKE,KAAOC,EAAAA,YAAAA,EAEzBC,EAAUtB,KAAKuB,QACnBC,IAAcC,GACR,CAAA,MAAAC,EAAaD,EAAOtB,MAAMkB,YAAAA,EAEzB,MAAA,CAAEI,OAAQE,EAAAA,YADG/D,EAASuD,EAAYO,CACZ,CAAA,CAAA,CAAA,EAE7BE,OACA,CAAA,CAAGH,OAAQE,EAAAA,YAAAA,CAAAA,IACVR,EAAWpD,OAAS,GAAK4D,GAAeF,EAAOtB,MAAMkB,YAActD,EAAAA,OAASoD,EAAWpD,MAAAA,EAExF8D,KAAK,CAAChE,EAAGC,IAAMD,EAAE8D,YAAc7D,EAAE6D,WAAAA,EAEnC3B,KAAK8B,MAAMC,OAAST,EAClBE,IAAI,CAAGC,CAAAA,OAAAA,CAAAA,KACPA,EAAOM,OAAAA,GACAN,EAAAA,EAEPO,KAAeP,GAAAA,CAACA,EAAOM,MAAAA,EAEpB/B,KAAAuB,QAAQU,QAAkBR,GAAAA,CAC9BA,EAAOM,OAAAA,CAAUT,EAAQU,KAAcE,GAAAA,EAAMT,SAAWA,CAAAA,CAAM,CAE/DzB,EAAAA,KAAKmC,cAAc,CAAA,CAAA,CAAA,EAGpBC,UAAU,IAAA,CACVpC,KAAKqC,YAAAA,CAAY,GAGGC,YAAAtC,KAAM,UAAA,EAC1Ba,KACAC,EAAAA,UAAUd,KAAKe,aACfa,EAAAA,EAAOA,OAAAW,GAAAA,OAAsD,QAAhDA,EAAAA,EAAEC,gBAAFD,YAAAA,EAAoCE,WAAY,kBAAZA,EACjDC,EAAAA,UAAU,IAEH,CAAA,MAAAC,EAAY3C,KAAK4C,GAAGC,QACzB,CACC,CAAEC,QAAS,CAAA,EACX,CAAEA,QAAS,IAEZ,CACCC,SAAU,IACVC,OAAQ,kCAKJC,CAAAA,EAAAA,EAAmB,IAAIC,QAAyBC,GACrDR,CAAAA,EAAUS,SAAW,IAAA,UAEpBpD,EAAAA,KAAK4C,KAAL5C,MAAAA,EAASqD,MAAMC,YAAY,UAAW,SACtCtD,EAAAA,KAAK4C,KAAL5C,MAAAA,EAASqD,MAAMC,YAAY,UAAW,KAC9BH,EAAA,CAAA,CACT,CAGD,EAAA,OAAOI,EAAAA,KAAKN,CAAgB,CAAA,CAAA,CAAA,EAG7Bb,UAAU,CACVoB,KAAM,IAAA,WAEDxD,KAAKK,OACRL,EAAAA,KAAKO,SAASL,QAAdF,MAAAA,EAAqByD,aACpB,QACAzD,KAAKuB,QACHK,OAAO8B,GAAKA,EAAEC,QACdnC,EAAAA,IAASkC,GAAAA,EAAEvD,KACXyD,EAAAA,KAAK,IAGR5D,IAAAA,EAAAA,KAAKO,SAASL,QAAdF,MAAAA,EAAqByD,aAAa,UAASzD,EAAAA,KAAKuB,QAAQsC,KAAUH,GAAAA,EAAExD,QAAUF,KAAKE,KAAQC,IAAhDH,YAAAA,EAAgDG,QAAS,GAAE,CAAA,CAAA,EAK1GH,KAAK8D,iBAAAA,CAAiB,CAGvB,kBACCC,CAAAA,sBAAsB,IACrB,OAAA,GAAI/D,KAAKK,MAAO,CACf,MAAM2D,EAAkBhE,KAAKE,MAAM+D,MAAM,GAAKzC,EAAAA,IAAI0C,GAAKlE,OAAAA,OAAAA,EAAAA,KAAKuB,QAAQsC,KAAUH,GAAAA,EAAExD,QAAUgE,CAAI/D,IAAvCH,YAAAA,EAAuCG,MAAAA,EAC9FH,KAAKmE,MAAMjE,MAAQ8D,EAAgBJ,KAAK,IAAA,CAAI,MAEvC5D,KAAAmE,MAAMjE,QAAQF,EAAAA,KAAKuB,QAAQsC,KAAUH,GAAAA,EAAExD,QAAUF,KAAKE,KAAAA,IAAxCF,YAAAA,EAAgDG,QAAS,EAAA,CAE7E,CAAA,CAGF,MAAMkC,aAAAA,UACArC,EAAAA,KAAA4C,KAAA5C,MAAAA,EAAIoE,gBAAgB,WACzBpE,EAAAA,KAAK4C,KAAL5C,MAAAA,EAASqD,MAAMC,YAAY,UAAW,SAGhC,KAAA,CAAAe,EAAEA,IAAGC,CAAAA,EAAAA,MAAYC,EAAgBA,gBAAAvE,KAAKmE,MAAOnE,KAAK4C,GAAI,CAC3D4B,UAAW,eACXC,WAAY,CAACC,SAAO,CAAA,EAAIC,EAAAA,KAAAA,EAAQC,QAAM,CAAEC,QAAS,CAG3CC,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,OAAAC,OAAO/E,KAAK4C,GAAGS,MAAO,CAC5B2B,KAAM,GAAGX,CAAAA,KACTY,IAAK,GAAGX,CACRY,KAAAA,SAAU,WACVC,OAAQ,OACR/E,UAAWJ,KAAKI,UAChBgF,UAAW,MAAA,CAAA,CACX,CAGF,aACMpF,UAAAA,EAAAA,KAAA4C,KAAA5C,MAAAA,EAAIyD,aAAa,SAAU,SAChCzD,EAAAA,KAAK4C,KAAL5C,MAAAA,EAASqD,MAAMC,YAAY,UAAW,OAAM,CAG7C,kBAAkB+B,EACjBA,CAAAA,EAAMC,eACND,EAAAA,EAAME,gBACA,EAAA,MAAArE,EAAOmE,EAAMG,OAAOtF,MACrBF,KAAAS,YAAY+C,KAAKtC,CAAAA,CAAI,CAI3B,kBAAkBhB,EAAAA,CACjB,GAAIF,KAAKK,MAAO,CACf,MAAMoB,EAASzB,KAAKuB,QAAQsC,KAAUH,GAAAA,EAAExD,QAAUA,CAC9CuB,EAAAA,IAAQA,EAAOkC,SAAAA,CAAYlC,EAAOkC,UACtC3D,KAAK8D,iBAAAA,EACA9D,KAAAyF,cACJ,IAAIC,YAAY,SAAU,CACzBF,OAAQ,CAAEtF,MAAOF,KAAKuB,QAAQK,OAAO8B,GAAKA,EAAEC,QAAUnC,EAAAA,IAASkC,GAAAA,EAAExD,KAAAA,CAAAA,EACjEyF,QAAS,GACTC,SAAU,EAAA,CAAA,CAAA,CAEZ,MAEA5F,KAAK6F,YACL7F,EAAAA,KAAKE,MAAQA,EACbF,KAAK8D,iBAAAA,EACA9D,KAAAyF,cACJ,IAAIC,YAAY,SAAU,CACzBF,OAAQ,CAAEtF,MACVyF,CAAAA,EAAAA,QAAAA,GACAC,SAAAA,EAGH,CAAA,CAAA,CAAA,CAGM,gBAAAE,OACC,OAAA9F,EAAAA,KAAKO,SAASL,QAAdF,YAAAA,EAAqB8F,gBAAe,CAGrC,eAAAC,CACC,OAAA/F,KAAKK,MAAQL,KAAKuB,QAAQS,KAAU0B,GAAAA,EAAEC,QAAc3D,EAAAA,CAAAA,CAAAA,KAAKE,KAAA,CAGjE,QAAA8F,CACC,MAGMC,EAAS,CACd7F,UAAWJ,KAAKI,SAAAA,EAEV,OAAA8F,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,QAMDC,EAAAA,IAAInG,KAAKO,QAAAA,CAAAA;AAAAA,kBACCP,KAAKoG,QAAAA;AAAAA;AAAAA,eAERpG,KAAKG,KAAAA;AAAAA,eACLH,KAAKqC,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oBAIArC,KAAKC,WAAAA;AAAAA,gBACTD,KAAKqG,iBAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,aAMRrG,KAAKsG,SA3BA,CACf,8DAA+D,EAAA,CAAA,CAAA;AAAA,aA2BrDtG,KAAKuG,SAASN,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA,cAIZ1D,GAAAA,CACJvC,KAAAwG,kBAAkBjE,EAAEiD,OAAOtF,KAAK,CAAA,CAAA;AAAA,mBAExBF,KAAKyG,aAAAA;AAAAA,kBACNzG,KAAKyG,aAAAA;AAAAA,OAChBC,QAAM,CACPC,QAASC,EAAAA,cAAcC,IAAIH,MAAMI,QAAQC,SAAAA,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oBAO3B,IACR/G,CAAAA,KAAA8B,MAAMC,OAAS/B,KAAKuB,QAAQS,KAAeP,GAACA,CAAAA,EAAOM,MACxD/B,EAAAA,KAAK8D,iBAAiB,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACtB,CAQN,cAAcuB,EACb,CAAA,MAAM2B,EAAS3B,EAAM2B,OAErB,GAAIhH,KAAKiH,iBAAiBC,SAASF,CAAS,EAAA,CACrC,MAAAG,EAAYnH,KAAKiH,iBAAiBE,UAGlCC,EAFepH,KAAKiH,iBAAiBI,aACtBrH,KAAKiH,iBAAiBK,cAIzCH,IAAc,GAAK9B,EAAMkC,QAAQ,CAAGC,EAAAA,QAAUnC,EAAMkC,QAAQ,CAAA,EAAGC,SAC/DL,IAAcC,GAAiB/B,EAAMkC,QAAQ,CAAA,EAAGC,QAAUnC,EAAMkC,QAAQ,GAAGC,UAE5EnC,EAAMC,gBACP,CACD,CAAA,EAhQ4BmC,EAAA,CAA5BC,WAAS,CAAEC,KAAMC,WADEhI,EACSiI,UAAA,WAAA,CACDJ,EAAAA,EAAA,CAA3BC,WAAS,CAAEC,KAAMG,MAAAA,CAAAA,CAAAA,EAFElI,EAEQiI,UAAA,cAAA,GACeJ,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMG,OAAQC,QAAAA,MAHNnI,EAGuBiI,UAAA,QAAA,CACAJ,EAAAA,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMG,OAAQC,QAAS,EAAA,CAAA,CAAA,EAJfnI,EAIuBiI,UAAA,QAAA,CACfJ,EAAAA,EAAA,CAA3BC,WAAS,CAAEC,KAAMG,MAAAA,CAAAA,CAAAA,EALElI,EAKQiI,UAAA,YAAA,GACCJ,EAAA,CAA5BC,WAAS,CAAEC,KAAMC,OANEhI,CAAAA,CAAAA,EAAAA,EAMSiI,UAAA,QAAA,CAAA,EACpBJ,EAAA,CAARO,EAAMA,SAPapI,EAOXiI,UAAA,aAAA,CAGIJ,EAAAA,EAAA,CAAZQ,EAAAA,MAAM,OAVarI,EAUPiI,UAAA,KAAA,CACIJ,EAAAA,EAAA,CAAhBQ,EAAAA,MAAM,WAXarI,EAWHiI,UAAA,QAAA,CACEJ,EAAAA,EAAA,CAAlBQ,EAAAA,MAAM,aAZarI,EAYDiI,UAAA,mBAAA,CACMJ,EAAAA,EAAA,CAAxBQ,EAAAA,MAAM,mBAbarI,EAaKiI,UAAA,QAAA,CAEiBJ,EAAAA,EAAA,CAAzCS,wBAAsB,CAAEC,QAAS,EAAA,CAAA,CAAA,EAfdvI,EAesBiI,UAAA,UAAA,GAwI1CJ,EAAA,CADCW,eAAa,CAAEC,UAtJIzI,CAAAA,CAAAA,EAAAA,EAuJpBiI,UAAA,oBAAA,CAAA,EAvJoBjI,EAArB6H,EAAA,CADCa,EAAAA,cAAc,uBACM1I,CAAAA,EAAAA,CAAAA","x_google_ignoreList":[0]}
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { computePosition as j, offset as q, flip as D, shift as T } from "@floating-ui/dom";
|
|
2
|
-
import { Subject as R, fromEvent as Y, from as z } from "rxjs";
|
|
3
|
-
import "lit/directives/class-map.js";
|
|
4
|
-
import "lit/directives/style-map.js";
|
|
5
|
-
import { $ as L } from "./litElement.mixin-Bczhguqz.js";
|
|
6
|
-
import "./tailwind.mixin-DaorKUB-.js";
|
|
7
|
-
import { c as U } from "./ripple-BumgqsDT.js";
|
|
8
|
-
import { S as N } from "./theme.interface-C5Kj6WjD.js";
|
|
9
|
-
import { html as B } from "lit";
|
|
10
|
-
import { property as $, state as F, query as P, queryAssignedElements as G, eventOptions as J, customElement as K } from "lit/decorators.js";
|
|
11
|
-
import { createRef as Q, ref as W } from "lit/directives/ref.js";
|
|
12
|
-
import { takeUntil as V, distinctUntilChanged as X, tap as Z, filter as _, switchMap as tt } from "rxjs/operators";
|
|
13
|
-
const b = new Uint32Array(65536), et = (t, e) => {
|
|
14
|
-
if (t.length < e.length) {
|
|
15
|
-
const s = e;
|
|
16
|
-
e = t, t = s;
|
|
17
|
-
}
|
|
18
|
-
return e.length === 0 ? t.length : t.length <= 32 ? ((s, i) => {
|
|
19
|
-
const n = s.length, l = i.length, c = 1 << n - 1;
|
|
20
|
-
let h = -1, f = 0, A = n, r = n;
|
|
21
|
-
for (; r--; ) b[s.charCodeAt(r)] |= 1 << r;
|
|
22
|
-
for (r = 0; r < l; r++) {
|
|
23
|
-
let y = b[i.charCodeAt(r)];
|
|
24
|
-
const g = y | f;
|
|
25
|
-
y |= (y & h) + h ^ h, f |= ~(y | h), h &= y, f & c && A++, h & c && A--, f = f << 1 | 1, h = h << 1 | ~(g | f), f &= g;
|
|
26
|
-
}
|
|
27
|
-
for (r = n; r--; ) b[s.charCodeAt(r)] = 0;
|
|
28
|
-
return A;
|
|
29
|
-
})(t, e) : ((s, i) => {
|
|
30
|
-
const n = i.length, l = s.length, c = [], h = [], f = Math.ceil(n / 32), A = Math.ceil(l / 32);
|
|
31
|
-
for (let o = 0; o < f; o++) h[o] = -1, c[o] = 0;
|
|
32
|
-
let r = 0;
|
|
33
|
-
for (; r < A - 1; r++) {
|
|
34
|
-
let o = 0, d = -1;
|
|
35
|
-
const w = 32 * r, C = Math.min(32, l) + w;
|
|
36
|
-
for (let a = w; a < C; a++) b[s.charCodeAt(a)] |= 1 << a;
|
|
37
|
-
for (let a = 0; a < n; a++) {
|
|
38
|
-
const x = b[i.charCodeAt(a)], v = h[a / 32 | 0] >>> a & 1, m = c[a / 32 | 0] >>> a & 1, M = x | o, E = ((x | m) & d) + d ^ d | x | m;
|
|
39
|
-
let O = o | ~(E | d), k = d & E;
|
|
40
|
-
O >>> 31 ^ v && (h[a / 32 | 0] ^= 1 << a), k >>> 31 ^ m && (c[a / 32 | 0] ^= 1 << a), O = O << 1 | v, k = k << 1 | m, d = k | ~(M | O), o = O & M;
|
|
41
|
-
}
|
|
42
|
-
for (let a = w; a < C; a++) b[s.charCodeAt(a)] = 0;
|
|
43
|
-
}
|
|
44
|
-
let y = 0, g = -1;
|
|
45
|
-
const S = 32 * r, I = Math.min(32, l - S) + S;
|
|
46
|
-
for (let o = S; o < I; o++) b[s.charCodeAt(o)] |= 1 << o;
|
|
47
|
-
let H = l;
|
|
48
|
-
for (let o = 0; o < n; o++) {
|
|
49
|
-
const d = b[i.charCodeAt(o)], w = h[o / 32 | 0] >>> o & 1, C = c[o / 32 | 0] >>> o & 1, a = d | y, x = ((d | C) & g) + g ^ g | d | C;
|
|
50
|
-
let v = y | ~(x | g), m = g & x;
|
|
51
|
-
H += v >>> l - 1 & 1, H -= m >>> l - 1 & 1, v >>> 31 ^ w && (h[o / 32 | 0] ^= 1 << o), m >>> 31 ^ C && (c[o / 32 | 0] ^= 1 << o), v = v << 1 | w, m = m << 1 | C, g = m | ~(a | v), y = v & a;
|
|
52
|
-
}
|
|
53
|
-
for (let o = S; o < I; o++) b[s.charCodeAt(o)] = 0;
|
|
54
|
-
return H;
|
|
55
|
-
})(t, e);
|
|
56
|
-
};
|
|
57
|
-
var it = Object.defineProperty, st = Object.getOwnPropertyDescriptor, u = (t, e, s, i) => {
|
|
58
|
-
for (var n, l = i > 1 ? void 0 : i ? st(e, s) : e, c = t.length - 1; c >= 0; c--) (n = t[c]) && (l = (i ? n(e, s, l) : n(l)) || l);
|
|
59
|
-
return i && l && it(e, s, l), l;
|
|
60
|
-
};
|
|
61
|
-
let p = 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}") {
|
|
62
|
-
constructor() {
|
|
63
|
-
super(...arguments), this.placeholder = "", this.value = "", this.label = "", this.maxHeight = "25vh", this.multi = !1, this.valueLabel = "", this.inputRef = Q(), this.searchTerm$ = new R();
|
|
64
|
-
}
|
|
65
|
-
firstUpdated() {
|
|
66
|
-
this.searchTermSubscription = this.searchTerm$.pipe(V(this.disconnecting), X(), Z((t) => {
|
|
67
|
-
const e = t.trim().toLowerCase(), s = this.options.map((i) => {
|
|
68
|
-
const n = i.label.toLowerCase();
|
|
69
|
-
return { option: i, levDistance: et(e, n) };
|
|
70
|
-
}).filter(({ option: i, levDistance: n }) => e.length < 3 || n <= i.label.toLowerCase().length - e.length).sort((i, n) => i.levDistance - n.levDistance);
|
|
71
|
-
this.empty.hidden = s.map(({ option: i }) => (i.hidden = !1, i)).some((i) => !i.hidden), this.options.forEach((i) => {
|
|
72
|
-
i.hidden = !s.some((n) => n.option === i);
|
|
73
|
-
}), this.requestUpdate();
|
|
74
|
-
})).subscribe(() => {
|
|
75
|
-
this.showOptions();
|
|
76
|
-
}), Y(this, "focusout").pipe(V(this.disconnecting), _((t) => {
|
|
77
|
-
var e;
|
|
78
|
-
return ((e = t.relatedTarget) == null ? void 0 : e.tagName) !== "SCHMANCY-OPTION";
|
|
79
|
-
}), tt(() => {
|
|
80
|
-
const t = this.ul.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, easing: "cubic-bezier(0.5, 0.01, 0.25, 1)" }), e = new Promise((s) => {
|
|
81
|
-
t.onfinish = () => {
|
|
82
|
-
var i, n;
|
|
83
|
-
(i = this.ul) == null || i.style.setProperty("display", "none"), (n = this.ul) == null || n.style.setProperty("opacity", "1"), s();
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
return z(e);
|
|
87
|
-
})).subscribe({ next: () => {
|
|
88
|
-
var t, e, s;
|
|
89
|
-
this.multi ? (t = this.inputRef.value) == null || t.setAttribute("value", this.options.filter((i) => i.selected).map((i) => i.label).join(", ")) : (s = this.inputRef.value) == null || s.setAttribute("value", ((e = this.options.find((i) => i.value === this.value)) == null ? void 0 : e.label) ?? "");
|
|
90
|
-
} }), this.updateInputValue();
|
|
91
|
-
}
|
|
92
|
-
updateInputValue() {
|
|
93
|
-
requestAnimationFrame(() => {
|
|
94
|
-
var t;
|
|
95
|
-
if (this.multi) {
|
|
96
|
-
const e = this.value.split(",").map((s) => {
|
|
97
|
-
var i;
|
|
98
|
-
return (i = this.options.find((n) => n.value === s)) == null ? void 0 : i.label;
|
|
99
|
-
});
|
|
100
|
-
this.input.value = e.join(", ");
|
|
101
|
-
} else this.input.value = ((t = this.options.find((e) => e.value === this.value)) == null ? void 0 : t.label) ?? "";
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
async showOptions() {
|
|
105
|
-
var s, i;
|
|
106
|
-
(s = this.ul) == null || s.removeAttribute("hidden"), (i = this.ul) == null || i.style.setProperty("display", "block");
|
|
107
|
-
const { x: t, y: e } = await j(this.input, this.ul, { placement: "bottom-start", middleware: [q(5), D(), T({ padding: 5 })] });
|
|
108
|
-
Object.assign(this.ul.style, { left: `${t}px`, top: `${e}px`, position: "absolute", zIndex: "9999", maxHeight: this.maxHeight, overflowY: "auto" });
|
|
109
|
-
}
|
|
110
|
-
hideOptions() {
|
|
111
|
-
var t, e;
|
|
112
|
-
(t = this.ul) == null || t.setAttribute("hidden", "true"), (e = this.ul) == null || e.style.setProperty("display", "none");
|
|
113
|
-
}
|
|
114
|
-
handleInputChange(t) {
|
|
115
|
-
t.preventDefault(), t.stopPropagation();
|
|
116
|
-
const e = t.detail.value;
|
|
117
|
-
this.searchTerm$.next(e);
|
|
118
|
-
}
|
|
119
|
-
handleOptionClick(t) {
|
|
120
|
-
if (this.multi) {
|
|
121
|
-
const e = this.options.find((s) => s.value === t);
|
|
122
|
-
e && (e.selected = !e.selected), this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: this.options.filter((s) => s.selected).map((s) => s.value) }, bubbles: !0, composed: !0 }));
|
|
123
|
-
} else this.hideOptions(), this.value = t, this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: t }, bubbles: !0, composed: !0 }));
|
|
124
|
-
}
|
|
125
|
-
reportValidity() {
|
|
126
|
-
var t;
|
|
127
|
-
return (t = this.inputRef.value) == null ? void 0 : t.reportValidity();
|
|
128
|
-
}
|
|
129
|
-
checkValidity() {
|
|
130
|
-
return this.multi ? this.options.some((t) => t.selected) : !!this.value;
|
|
131
|
-
}
|
|
132
|
-
render() {
|
|
133
|
-
const t = { maxHeight: this.maxHeight };
|
|
134
|
-
return B`
|
|
135
|
-
<div class="relative">
|
|
136
|
-
<slot name="trigger">
|
|
137
|
-
<schmancy-input
|
|
138
|
-
autocomplete="off"
|
|
139
|
-
class="w-full"
|
|
140
|
-
${W(this.inputRef)}
|
|
141
|
-
.required=${this.required}
|
|
142
|
-
id="input"
|
|
143
|
-
.label=${this.label}
|
|
144
|
-
@focus=${this.showOptions}
|
|
145
|
-
clickable
|
|
146
|
-
type="search"
|
|
147
|
-
inputmode="text"
|
|
148
|
-
placeholder=${this.placeholder}
|
|
149
|
-
@change=${this.handleInputChange}
|
|
150
|
-
>
|
|
151
|
-
</schmancy-input>
|
|
152
|
-
</slot>
|
|
153
|
-
<ul
|
|
154
|
-
tabindex="-1"
|
|
155
|
-
class=${this.classMap({ "absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-2": !0 })}
|
|
156
|
-
style=${this.styleMap(t)}
|
|
157
|
-
id="options"
|
|
158
|
-
role="listbox"
|
|
159
|
-
hidden
|
|
160
|
-
@click=${(e) => {
|
|
161
|
-
this.handleOptionClick(e.detail.value);
|
|
162
|
-
}}
|
|
163
|
-
@touchstart=${this.preventScroll}
|
|
164
|
-
@touchmove=${this.preventScroll}
|
|
165
|
-
${U({ bgColor: N.sys.color.surface.container })}
|
|
166
|
-
>
|
|
167
|
-
<li id="empty" tabindex="-1">
|
|
168
|
-
<schmancy-typography type="label">No results found</schmancy-typography>
|
|
169
|
-
</li>
|
|
170
|
-
<slot
|
|
171
|
-
@slotchange=${() => {
|
|
172
|
-
this.empty.hidden = this.options.some((e) => !e.hidden), this.updateInputValue();
|
|
173
|
-
}}
|
|
174
|
-
tabindex="0"
|
|
175
|
-
></slot>
|
|
176
|
-
</ul>
|
|
177
|
-
</div>
|
|
178
|
-
`;
|
|
179
|
-
}
|
|
180
|
-
preventScroll(t) {
|
|
181
|
-
const e = t.target;
|
|
182
|
-
if (this.optionsContainer.contains(e)) {
|
|
183
|
-
const s = this.optionsContainer.scrollTop, i = this.optionsContainer.scrollHeight - this.optionsContainer.offsetHeight;
|
|
184
|
-
(s === 0 && t.touches[0].clientY > t.touches[0].clientY || s === i && t.touches[0].clientY < t.touches[0].clientY) && t.preventDefault();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
u([$({ type: Boolean })], p.prototype, "required", 2), u([$({ type: String })], p.prototype, "placeholder", 2), u([$({ type: String, reflect: !0 })], p.prototype, "value", 2), u([$({ type: String, reflect: !0 })], p.prototype, "label", 2), u([$({ type: String })], p.prototype, "maxHeight", 2), u([$({ type: Boolean })], p.prototype, "multi", 2), u([F()], p.prototype, "valueLabel", 2), u([P("ul")], p.prototype, "ul", 2), u([P("#empty")], p.prototype, "empty", 2), u([P("#options")], p.prototype, "optionsContainer", 2), u([P("schmancy-input")], p.prototype, "input", 2), u([G({ flatten: !0 })], p.prototype, "options", 2), u([J({ passive: !0 })], p.prototype, "handleOptionClick", 1), p = u([K("schmancy-autocomplete")], p);
|
|
189
|
-
//# sourceMappingURL=autocomplete-Cm5NEwT6.js.map
|