@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
|
@@ -4,7 +4,7 @@ export interface SchmancyButtonEventMap {
|
|
|
4
4
|
SchmancyBlur: CustomEvent<void>;
|
|
5
5
|
}
|
|
6
6
|
export type ButtonVariant = 'elevated' | 'filled' | 'filled tonal' | 'outlined' | 'text';
|
|
7
|
-
declare const
|
|
7
|
+
declare const SchmancyButton_base: CustomElementConstructor & import("@mixins/index").Constructor<LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
8
8
|
/**
|
|
9
9
|
* A button component.
|
|
10
10
|
* @element schmancy-button
|
|
@@ -12,7 +12,7 @@ declare const SchmnacyButton_base: CustomElementConstructor & import("@mixins/in
|
|
|
12
12
|
* @slot prefix - The prefix slot.
|
|
13
13
|
* @slot suffix - The suffix slot.
|
|
14
14
|
*/
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class SchmancyButton extends SchmancyButton_base {
|
|
16
16
|
protected static shadowRootOptions: {
|
|
17
17
|
mode: string;
|
|
18
18
|
delegatesFocus: boolean;
|
|
@@ -22,30 +22,32 @@ export declare class SchmnacyButton extends SchmnacyButton_base {
|
|
|
22
22
|
private nativeElement;
|
|
23
23
|
private _ariaLabel;
|
|
24
24
|
/**
|
|
25
|
-
* The variant of the button.
|
|
25
|
+
* The variant of the button.
|
|
26
26
|
* @attr
|
|
27
|
-
* @default '
|
|
27
|
+
* @default 'text'
|
|
28
28
|
* @public
|
|
29
29
|
*/
|
|
30
30
|
variant: ButtonVariant;
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
32
|
+
* The width of the button.
|
|
33
|
+
* @attr
|
|
34
34
|
* @type {'full' | 'auto'}
|
|
35
35
|
* @default 'auto'
|
|
36
36
|
* @public
|
|
37
37
|
*/
|
|
38
38
|
width: 'full' | 'auto';
|
|
39
39
|
/**
|
|
40
|
-
* The type of the button.
|
|
40
|
+
* The type of the button.
|
|
41
|
+
* Defaults to 'button' (preventing accidental form submissions).
|
|
41
42
|
* @attr
|
|
42
43
|
*/
|
|
43
44
|
type: 'button' | 'reset' | 'submit';
|
|
44
45
|
/**
|
|
45
46
|
* The URL the button points to.
|
|
47
|
+
* If provided, the component will render as an anchor element.
|
|
46
48
|
* @attr
|
|
47
49
|
*/
|
|
48
|
-
href
|
|
50
|
+
href?: string;
|
|
49
51
|
/**
|
|
50
52
|
* Determines whether the button is disabled.
|
|
51
53
|
* @attr
|
|
@@ -62,11 +64,12 @@ export declare class SchmnacyButton extends SchmnacyButton_base {
|
|
|
62
64
|
protected get imgClasses(): string[];
|
|
63
65
|
firstUpdated(): void;
|
|
64
66
|
click(): void;
|
|
67
|
+
private _preventDefault;
|
|
65
68
|
render(): import("lit-html").TemplateResult<1>;
|
|
66
69
|
}
|
|
67
70
|
declare global {
|
|
68
71
|
interface HTMLElementTagNameMap {
|
|
69
|
-
'schmancy-button':
|
|
72
|
+
'schmancy-button': SchmancyButton;
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
export {};
|
|
@@ -2,11 +2,9 @@ import { LitElement, PropertyValueMap } from 'lit';
|
|
|
2
2
|
import { ButtonVariant } from './button';
|
|
3
3
|
declare const SchmnacyIconButton_base: CustomElementConstructor & import("@mixins/index").Constructor<LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* An icon button component.
|
|
6
6
|
* @element schmancy-icon-button
|
|
7
7
|
* @slot - The default slot.
|
|
8
|
-
* @slot prefix - The prefix slot.
|
|
9
|
-
* @slot suffix - The suffix slot.
|
|
10
8
|
*/
|
|
11
9
|
export declare class SchmnacyIconButton extends SchmnacyIconButton_base {
|
|
12
10
|
protected static shadowRootOptions: {
|
|
@@ -17,32 +15,37 @@ export declare class SchmnacyIconButton extends SchmnacyIconButton_base {
|
|
|
17
15
|
};
|
|
18
16
|
private nativeElement;
|
|
19
17
|
private _ariaLabel;
|
|
18
|
+
/**
|
|
19
|
+
* The size of the icon.
|
|
20
|
+
* @attr
|
|
21
|
+
* @default 'md'
|
|
22
|
+
*/
|
|
20
23
|
size: 'sm' | 'md' | 'lg';
|
|
21
24
|
/**
|
|
22
|
-
* The variant of the button.
|
|
25
|
+
* The variant of the button.
|
|
23
26
|
* @attr
|
|
24
|
-
* @default '
|
|
25
|
-
* @public
|
|
27
|
+
* @default 'text'
|
|
26
28
|
*/
|
|
27
29
|
variant: ButtonVariant;
|
|
28
30
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
+
* The width of the button.
|
|
32
|
+
* @attr
|
|
31
33
|
* @type {'full' | 'auto'}
|
|
32
34
|
* @default 'auto'
|
|
33
|
-
* @public
|
|
34
35
|
*/
|
|
35
36
|
width: 'full' | 'auto';
|
|
36
37
|
/**
|
|
37
|
-
* The type of the button.
|
|
38
|
+
* The type of the button.
|
|
39
|
+
* Defaults to 'button' (preventing accidental form submissions).
|
|
38
40
|
* @attr
|
|
39
41
|
*/
|
|
40
42
|
type: 'button' | 'reset' | 'submit';
|
|
41
43
|
/**
|
|
42
44
|
* The URL the button points to.
|
|
45
|
+
* If provided, the component will render as an anchor element.
|
|
43
46
|
* @attr
|
|
44
47
|
*/
|
|
45
|
-
href
|
|
48
|
+
href?: string;
|
|
46
49
|
/**
|
|
47
50
|
* Determines whether the button is disabled.
|
|
48
51
|
* @attr
|
|
@@ -55,6 +58,7 @@ export declare class SchmnacyIconButton extends SchmnacyIconButton_base {
|
|
|
55
58
|
/** Removes focus from the button. */
|
|
56
59
|
blur(): void;
|
|
57
60
|
click(): void;
|
|
61
|
+
private _preventDefault;
|
|
58
62
|
protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
|
|
59
63
|
render(): import("lit-html").TemplateResult<1>;
|
|
60
64
|
}
|
package/types/src/form/form.d.ts
CHANGED
|
@@ -18,7 +18,6 @@ declare const SchmancyForm_base: import("@mixins/index").Constructor<CustomEleme
|
|
|
18
18
|
export default class SchmancyForm extends SchmancyForm_base {
|
|
19
19
|
private $disconnecting;
|
|
20
20
|
static readonly tagName = "schmancy-form";
|
|
21
|
-
tabIndex: number;
|
|
22
21
|
protected static shadowRootOptions: {
|
|
23
22
|
mode: string;
|
|
24
23
|
delegatesFocus: boolean;
|
|
@@ -17,32 +17,13 @@ export declare class SchmancySelect extends SchmancySelect_base {
|
|
|
17
17
|
connectedCallback(): void;
|
|
18
18
|
disconnectedCallback(): void;
|
|
19
19
|
firstUpdated(): void;
|
|
20
|
-
/**
|
|
21
|
-
* Whenever new <schmancy-option> children get slotted in,
|
|
22
|
-
* or whenever properties change, ensure the correct .selected states
|
|
23
|
-
* and display text are applied.
|
|
24
|
-
*/
|
|
25
20
|
private syncSelection;
|
|
26
|
-
/**
|
|
27
|
-
* We can also set up any ARIA attributes here.
|
|
28
|
-
* Note that we’re toggling `aria-selected` for screen readers,
|
|
29
|
-
* but the highlight in CSS is triggered by the option’s `selected` property.
|
|
30
|
-
*/
|
|
31
21
|
private setupOptionsAccessibility;
|
|
32
|
-
/**
|
|
33
|
-
* Use @floating-ui/dom to position the <ul> under the "trigger" input.
|
|
34
|
-
*/
|
|
35
22
|
private positionDropdown;
|
|
36
|
-
/**
|
|
37
|
-
* Keydown logic for opening/closing the dropdown and navigating options.
|
|
38
|
-
*/
|
|
39
23
|
private handleKeyDown;
|
|
40
24
|
private focusOption;
|
|
41
25
|
private openDropdown;
|
|
42
26
|
private closeDropdown;
|
|
43
|
-
/**
|
|
44
|
-
* Main method for toggling or setting selected items.
|
|
45
|
-
*/
|
|
46
27
|
private handleOptionSelect;
|
|
47
28
|
private dispatchChange;
|
|
48
29
|
render(): import("lit-html").TemplateResult<1>;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";const O=require("@floating-ui/dom"),I=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const H=require("./litElement.mixin-Cw4_sB4P.cjs");require("./tailwind.mixin-dEqmlmEI.cjs");const M=require("./ripple-C2BHbhcS.cjs"),P=require("./theme.interface-Xg5Zi46a.cjs"),U=require("lit"),u=require("lit/decorators.js"),D=require("lit/directives/ref.js"),$=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,l=o.length,r=1<<n-1;let p=-1,f=0,S=n,h=n;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<l;h++){let g=C[o.charCodeAt(h)];const v=g|f;g|=(g&p)+p^p,f|=~(g|p),p&=g,f&r&&S++,p&r&&S--,f=f<<1|1,p=p<<1|~(v|f),f&=v}for(h=n;h--;)C[i.charCodeAt(h)]=0;return S})(t,e):((i,o)=>{const n=o.length,l=i.length,r=[],p=[],f=Math.ceil(n/32),S=Math.ceil(l/32);for(let s=0;s<f;s++)p[s]=-1,r[s]=0;let h=0;for(;h<S-1;h++){let s=0,m=-1;const x=32*h,w=Math.min(32,l)+x;for(let a=x;a<w;a++)C[i.charCodeAt(a)]|=1<<a;for(let a=0;a<n;a++){const q=C[o.charCodeAt(a)],b=p[a/32|0]>>>a&1,y=r[a/32|0]>>>a&1,Y=q|s,j=((q|y)&m)+m^m|q|y;let A=s|~(j|m),V=m&j;A>>>31^b&&(p[a/32|0]^=1<<a),V>>>31^y&&(r[a/32|0]^=1<<a),A=A<<1|b,V=V<<1|y,m=V|~(Y|A),s=A&Y}for(let a=x;a<w;a++)C[i.charCodeAt(a)]=0}let g=0,v=-1;const k=32*h,T=Math.min(32,l-k)+k;for(let s=k;s<T;s++)C[i.charCodeAt(s)]|=1<<s;let E=l;for(let s=0;s<n;s++){const m=C[o.charCodeAt(s)],x=p[s/32|0]>>>s&1,w=r[s/32|0]>>>s&1,a=m|g,q=((m|w)&v)+v^v|m|w;let b=g|~(q|v),y=v&q;E+=b>>>l-1&1,E-=y>>>l-1&1,b>>>31^x&&(p[s/32|0]^=1<<s),y>>>31^w&&(r[s/32|0]^=1<<s),b=b<<1|x,y=y<<1|w,v=y|~(a|b),g=b&a}for(let s=k;s<T;s++)C[i.charCodeAt(s)]=0;return E})(t,e)};var N=Object.defineProperty,B=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var n,l=o>1?void 0:o?B(e,i):e,r=t.length-1;r>=0;r--)(n=t[r])&&(l=(o?n(e,i,l):n(l))||l);return o&&l&&N(e,i,l),l};let c=class extends H.$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=D.createRef(),this.searchTerm$=new I.Subject,this.startY=0}connectedCallback(){super.connectedCallback(),this.searchTerm$.pipe($.takeUntil(this.disconnecting),$.distinctUntilChanged(),$.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.requestUpdate()})).subscribe(()=>{this.showOptions()}),I.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.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:250,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"});return I.from(new Promise(e=>{t.onfinish=()=>{this.optionsContainer.style.display="none",this.optionsContainer.style.opacity="1",e()}}))})).subscribe({next:()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue()}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 O.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[O.offset(5),O.flip(),O.shift({padding:5}),O.size({apply({availableWidth:i,availableHeight:o,elements:n,rects:l}){const r=l.reference.width;n.floating.style.minWidth=`${r}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 l,r;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,n=((r=(l=t.touches)==null?void 0:l[0])==null?void 0:r.clientY)??0;(i<=0&&n>this.startY||i>=o&&n<this.startY)&&t.preventDefault()}render(){var e;const t=!((e=this.optionsContainer)!=null&&e.hasAttribute("hidden"));return U.html`
|
|
2
|
-
<div class="relative">
|
|
3
|
-
<!-- The trigger slot (if any) overrides the default SchmancyInput -->
|
|
4
|
-
<slot name="trigger">
|
|
5
|
-
<schmancy-input
|
|
6
|
-
${D.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
|
-
hidden
|
|
33
|
-
@click=${i=>{var n;const o=(n=i.detail)==null?void 0:n.value;o&&this.handleOptionClick(o)}}
|
|
34
|
-
@touchstart=${this.handleTouchStart}
|
|
35
|
-
@touchmove=${this.preventScroll}
|
|
36
|
-
${M.color({bgColor:P.SchmancyTheme.sys.color.surface.container})}
|
|
37
|
-
>
|
|
38
|
-
<!-- "No results" option -->
|
|
39
|
-
<li id="empty" tabindex="-1">
|
|
40
|
-
<schmancy-typography type="label">No results found</schmancy-typography>
|
|
41
|
-
</li>
|
|
42
|
-
|
|
43
|
-
<!-- Slot for the <schmancy-option> elements -->
|
|
44
|
-
<slot @slotchange=${this.handleSlotChange}> </slot>
|
|
45
|
-
</ul>
|
|
46
|
-
</div>
|
|
47
|
-
`}};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);
|
|
48
|
-
//# sourceMappingURL=autocomplete-CHpArsZC.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-CHpArsZC.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@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\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\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('#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\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// 1) Search filtering\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// If very short searchTerm, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\t// Otherwise, filter by distance\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\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\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 term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus out animation\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\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\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// Resync the input after closing\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\tprivate handleSlotChange() {\n\t\t// If no visible options, show \"empty\"\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\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, using Floating UI to size it\n\t * to the available space, and at least as wide as the input.\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// NEW: Let the floating element fill available space,\n\t\t\t\t// 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\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// The middleware is setting max-height, but if you want\n\t\t\t// a fallback you can still do:\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\trender() {\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\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\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> dispatches 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>\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\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}> </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","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","next","selected","input","join","find","firstUpdated","updateInputValue","changedProps","updated","has","syncSelectionFromValue","some","values","split","v","Boolean","includes","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","hideOptions","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","isOpen","hasAttribute","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","handleSlotChange","__decorateClass","property","type","prototype","String","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { computePosition as Y, offset as D, flip as H, shift as M, size as P } from "@floating-ui/dom";
|
|
2
|
-
import { Subject as z, fromEvent as N, from as U } from "rxjs";
|
|
3
|
-
import "lit/directives/class-map.js";
|
|
4
|
-
import "lit/directives/style-map.js";
|
|
5
|
-
import { $ as B } from "./litElement.mixin-BYMdyxuB.js";
|
|
6
|
-
import "./tailwind.mixin-D2ZmggHb.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 $, query as V, queryAssignedElements as W, eventOptions as G, customElement as J } from "lit/decorators.js";
|
|
11
|
-
import { createRef as K, ref as Q } from "lit/directives/ref.js";
|
|
12
|
-
import { takeUntil as q, 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 o = e;
|
|
16
|
-
e = t, t = o;
|
|
17
|
-
}
|
|
18
|
-
return e.length === 0 ? t.length : t.length <= 32 ? ((o, i) => {
|
|
19
|
-
const n = o.length, l = i.length, r = 1 << n - 1;
|
|
20
|
-
let h = -1, f = 0, S = n, p = n;
|
|
21
|
-
for (; p--; ) b[o.charCodeAt(p)] |= 1 << p;
|
|
22
|
-
for (p = 0; p < l; p++) {
|
|
23
|
-
let y = b[i.charCodeAt(p)];
|
|
24
|
-
const g = y | f;
|
|
25
|
-
y |= (y & h) + h ^ h, f |= ~(y | h), h &= y, f & r && S++, h & r && S--, f = f << 1 | 1, h = h << 1 | ~(g | f), f &= g;
|
|
26
|
-
}
|
|
27
|
-
for (p = n; p--; ) b[o.charCodeAt(p)] = 0;
|
|
28
|
-
return S;
|
|
29
|
-
})(t, e) : ((o, i) => {
|
|
30
|
-
const n = i.length, l = o.length, r = [], h = [], f = Math.ceil(n / 32), S = Math.ceil(l / 32);
|
|
31
|
-
for (let s = 0; s < f; s++) h[s] = -1, r[s] = 0;
|
|
32
|
-
let p = 0;
|
|
33
|
-
for (; p < S - 1; p++) {
|
|
34
|
-
let s = 0, d = -1;
|
|
35
|
-
const w = 32 * p, C = Math.min(32, l) + w;
|
|
36
|
-
for (let a = w; a < C; a++) b[o.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 = r[a / 32 | 0] >>> a & 1, T = x | s, j = ((x | m) & d) + d ^ d | x | m;
|
|
39
|
-
let A = s | ~(j | d), k = d & j;
|
|
40
|
-
A >>> 31 ^ v && (h[a / 32 | 0] ^= 1 << a), k >>> 31 ^ m && (r[a / 32 | 0] ^= 1 << a), A = A << 1 | v, k = k << 1 | m, d = k | ~(T | A), s = A & T;
|
|
41
|
-
}
|
|
42
|
-
for (let a = w; a < C; a++) b[o.charCodeAt(a)] = 0;
|
|
43
|
-
}
|
|
44
|
-
let y = 0, g = -1;
|
|
45
|
-
const O = 32 * p, E = Math.min(32, l - O) + O;
|
|
46
|
-
for (let s = O; s < E; s++) b[o.charCodeAt(s)] |= 1 << s;
|
|
47
|
-
let I = l;
|
|
48
|
-
for (let s = 0; s < n; s++) {
|
|
49
|
-
const d = b[i.charCodeAt(s)], w = h[s / 32 | 0] >>> s & 1, C = r[s / 32 | 0] >>> s & 1, a = d | y, x = ((d | C) & g) + g ^ g | d | C;
|
|
50
|
-
let v = y | ~(x | g), m = g & x;
|
|
51
|
-
I += v >>> l - 1 & 1, I -= m >>> l - 1 & 1, v >>> 31 ^ w && (h[s / 32 | 0] ^= 1 << s), m >>> 31 ^ C && (r[s / 32 | 0] ^= 1 << s), v = v << 1 | w, m = m << 1 | C, g = m | ~(a | v), y = v & a;
|
|
52
|
-
}
|
|
53
|
-
for (let s = O; s < E; s++) b[o.charCodeAt(s)] = 0;
|
|
54
|
-
return I;
|
|
55
|
-
})(t, e);
|
|
56
|
-
};
|
|
57
|
-
var ot = Object.defineProperty, it = Object.getOwnPropertyDescriptor, u = (t, e, o, i) => {
|
|
58
|
-
for (var n, l = i > 1 ? void 0 : i ? it(e, o) : e, r = t.length - 1; r >= 0; r--) (n = t[r]) && (l = (i ? n(e, o, l) : n(l)) || l);
|
|
59
|
-
return i && l && ot(e, o, 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 = K(), this.searchTerm$ = new z(), this.startY = 0;
|
|
64
|
-
}
|
|
65
|
-
connectedCallback() {
|
|
66
|
-
super.connectedCallback(), this.searchTerm$.pipe(q(this.disconnecting), X(), Z((t) => {
|
|
67
|
-
const e = t.trim().toLowerCase(), o = 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.options.forEach((i) => i.hidden = !0);
|
|
72
|
-
for (const { option: i } of o) i.hidden = !1;
|
|
73
|
-
this.empty.hidden = o.length > 0, this.requestUpdate();
|
|
74
|
-
})).subscribe(() => {
|
|
75
|
-
this.showOptions();
|
|
76
|
-
}), N(this, "focusout").pipe(q(this.disconnecting), _((t) => {
|
|
77
|
-
var e;
|
|
78
|
-
return ((e = t.relatedTarget) == null ? void 0 : e.tagName) !== "SCHMANCY-OPTION";
|
|
79
|
-
}), tt(() => {
|
|
80
|
-
const t = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, easing: "cubic-bezier(0.5, 0.01, 0.25, 1)" });
|
|
81
|
-
return U(new Promise((e) => {
|
|
82
|
-
t.onfinish = () => {
|
|
83
|
-
this.optionsContainer.style.display = "none", this.optionsContainer.style.opacity = "1", e();
|
|
84
|
-
};
|
|
85
|
-
}));
|
|
86
|
-
})).subscribe({ next: () => {
|
|
87
|
-
var t;
|
|
88
|
-
if (this.multi) {
|
|
89
|
-
const e = this.options.filter((o) => o.selected).map((o) => o.label);
|
|
90
|
-
this.input.value = e.join(", ");
|
|
91
|
-
} else this.input.value = ((t = this.options.find((e) => e.value === this.value)) == null ? void 0 : t.label) ?? "";
|
|
92
|
-
} });
|
|
93
|
-
}
|
|
94
|
-
firstUpdated() {
|
|
95
|
-
this.updateInputValue();
|
|
96
|
-
}
|
|
97
|
-
updated(t) {
|
|
98
|
-
super.updated(t), t.has("value") && (this.syncSelectionFromValue(), this.updateInputValue());
|
|
99
|
-
}
|
|
100
|
-
handleSlotChange() {
|
|
101
|
-
this.empty.hidden = this.options.some((t) => !t.hidden), this.syncSelectionFromValue(), this.updateInputValue();
|
|
102
|
-
}
|
|
103
|
-
syncSelectionFromValue() {
|
|
104
|
-
if (this.multi) {
|
|
105
|
-
const t = this.value.split(",").map((e) => e.trim()).filter(Boolean);
|
|
106
|
-
this.options.forEach((e) => {
|
|
107
|
-
e.selected = t.includes(e.value);
|
|
108
|
-
});
|
|
109
|
-
} else this.options.forEach((t) => {
|
|
110
|
-
t.selected = t.value === this.value;
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
updateInputValue() {
|
|
114
|
-
requestAnimationFrame(() => {
|
|
115
|
-
var t;
|
|
116
|
-
if (this.multi) {
|
|
117
|
-
const e = this.options.filter((o) => o.selected).map((o) => o.label);
|
|
118
|
-
this.input.value = e.join(", ");
|
|
119
|
-
} else {
|
|
120
|
-
const e = (t = this.options.find((o) => o.value === this.value)) == null ? void 0 : t.label;
|
|
121
|
-
this.input.value = e ?? "";
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
async showOptions() {
|
|
126
|
-
this.optionsContainer.removeAttribute("hidden"), this.optionsContainer.style.display = "block";
|
|
127
|
-
const { x: t, y: e } = await Y(this.input, this.optionsContainer, { placement: "bottom-start", middleware: [D(5), H(), M({ padding: 5 }), P({ apply({ availableWidth: o, availableHeight: i, elements: n, rects: l }) {
|
|
128
|
-
const r = l.reference.width;
|
|
129
|
-
n.floating.style.minWidth = `${r}px`, n.floating.style.maxWidth = `${o}px`, n.floating.style.maxHeight = `${i}px`;
|
|
130
|
-
} })] });
|
|
131
|
-
Object.assign(this.optionsContainer.style, { left: `${t}px`, top: `${e}px`, position: "absolute", zIndex: "9999", overflowY: "auto" });
|
|
132
|
-
}
|
|
133
|
-
hideOptions() {
|
|
134
|
-
var t;
|
|
135
|
-
(t = this.optionsContainer) == null || t.setAttribute("hidden", "true"), this.optionsContainer && (this.optionsContainer.style.display = "none");
|
|
136
|
-
}
|
|
137
|
-
handleInputChange(t) {
|
|
138
|
-
t.preventDefault(), t.stopPropagation();
|
|
139
|
-
const e = t.detail.value;
|
|
140
|
-
this.searchTerm$.next(e);
|
|
141
|
-
}
|
|
142
|
-
handleOptionClick(t) {
|
|
143
|
-
if (this.multi) {
|
|
144
|
-
const e = this.options.find((i) => i.value === t);
|
|
145
|
-
e && (e.selected = !e.selected);
|
|
146
|
-
const o = this.options.filter((i) => i.selected).map((i) => i.value);
|
|
147
|
-
this.value = o.join(","), this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: o }, bubbles: !0, composed: !0 }));
|
|
148
|
-
} else this.hideOptions(), this.value = t, this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: t }, bubbles: !0, composed: !0 }));
|
|
149
|
-
}
|
|
150
|
-
checkValidity() {
|
|
151
|
-
return this.multi ? this.options.some((t) => t.selected) : !!this.value;
|
|
152
|
-
}
|
|
153
|
-
reportValidity() {
|
|
154
|
-
var t;
|
|
155
|
-
return (t = this.inputRef.value) == null ? void 0 : t.reportValidity();
|
|
156
|
-
}
|
|
157
|
-
handleTouchStart(t) {
|
|
158
|
-
var e, o;
|
|
159
|
-
this.startY = ((o = (e = t.touches) == null ? void 0 : e[0]) == null ? void 0 : o.clientY) ?? 0;
|
|
160
|
-
}
|
|
161
|
-
preventScroll(t) {
|
|
162
|
-
var l, r;
|
|
163
|
-
const e = t.target;
|
|
164
|
-
if (!this.optionsContainer.contains(e)) return;
|
|
165
|
-
const o = this.optionsContainer.scrollTop, i = this.optionsContainer.scrollHeight - this.optionsContainer.offsetHeight, n = ((r = (l = t.touches) == null ? void 0 : l[0]) == null ? void 0 : r.clientY) ?? 0;
|
|
166
|
-
(o <= 0 && n > this.startY || o >= i && n < this.startY) && t.preventDefault();
|
|
167
|
-
}
|
|
168
|
-
render() {
|
|
169
|
-
var e;
|
|
170
|
-
const t = !((e = this.optionsContainer) != null && e.hasAttribute("hidden"));
|
|
171
|
-
return L`
|
|
172
|
-
<div class="relative">
|
|
173
|
-
<!-- The trigger slot (if any) overrides the default SchmancyInput -->
|
|
174
|
-
<slot name="trigger">
|
|
175
|
-
<schmancy-input
|
|
176
|
-
${Q(this.inputRef)}
|
|
177
|
-
id="input"
|
|
178
|
-
class="w-full"
|
|
179
|
-
.label=${this.label}
|
|
180
|
-
.placeholder=${this.placeholder}
|
|
181
|
-
.required=${this.required}
|
|
182
|
-
type="search"
|
|
183
|
-
inputmode="text"
|
|
184
|
-
autocomplete="off"
|
|
185
|
-
clickable
|
|
186
|
-
role="combobox"
|
|
187
|
-
aria-autocomplete="list"
|
|
188
|
-
aria-haspopup="listbox"
|
|
189
|
-
aria-controls="options"
|
|
190
|
-
aria-expanded=${t}
|
|
191
|
-
@focus=${() => this.showOptions()}
|
|
192
|
-
@input=${this.handleInputChange}
|
|
193
|
-
>
|
|
194
|
-
</schmancy-input>
|
|
195
|
-
</slot>
|
|
196
|
-
|
|
197
|
-
<ul
|
|
198
|
-
id="options"
|
|
199
|
-
tabindex="-1"
|
|
200
|
-
class="absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm"
|
|
201
|
-
role="listbox"
|
|
202
|
-
hidden
|
|
203
|
-
@click=${(o) => {
|
|
204
|
-
var n;
|
|
205
|
-
const i = (n = o.detail) == null ? void 0 : n.value;
|
|
206
|
-
i && this.handleOptionClick(i);
|
|
207
|
-
}}
|
|
208
|
-
@touchstart=${this.handleTouchStart}
|
|
209
|
-
@touchmove=${this.preventScroll}
|
|
210
|
-
${F({ bgColor: R.sys.color.surface.container })}
|
|
211
|
-
>
|
|
212
|
-
<!-- "No results" option -->
|
|
213
|
-
<li id="empty" tabindex="-1">
|
|
214
|
-
<schmancy-typography type="label">No results found</schmancy-typography>
|
|
215
|
-
</li>
|
|
216
|
-
|
|
217
|
-
<!-- Slot for the <schmancy-option> elements -->
|
|
218
|
-
<slot @slotchange=${this.handleSlotChange}> </slot>
|
|
219
|
-
</ul>
|
|
220
|
-
</div>
|
|
221
|
-
`;
|
|
222
|
-
}
|
|
223
|
-
};
|
|
224
|
-
u([$({ type: Boolean })], c.prototype, "required", 2), u([$({ type: String })], c.prototype, "placeholder", 2), u([$({ type: String, reflect: !0 })], c.prototype, "value", 2), u([$({ type: String, reflect: !0 })], c.prototype, "label", 2), u([$({ type: String })], c.prototype, "maxHeight", 2), u([$({ type: Boolean })], c.prototype, "multi", 2), u([V("#options")], c.prototype, "optionsContainer", 2), u([V("#empty")], c.prototype, "empty", 2), u([V("schmancy-input")], c.prototype, "input", 2), u([W({ flatten: !0 })], c.prototype, "options", 2), u([G({ passive: !0 })], c.prototype, "handleOptionClick", 1), c = u([J("schmancy-autocomplete")], c);
|
|
225
|
-
//# sourceMappingURL=autocomplete-CiCw7cWc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-CiCw7cWc.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@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\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\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('#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\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// 1) Search filtering\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// If very short searchTerm, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\t// Otherwise, filter by distance\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\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\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 term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus out animation\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\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\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// Resync the input after closing\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\tprivate handleSlotChange() {\n\t\t// If no visible options, show \"empty\"\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\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, using Floating UI to size it\n\t * to the available space, and at least as wide as the input.\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// NEW: Let the floating element fill available space,\n\t\t\t\t// 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\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// The middleware is setting max-height, but if you want\n\t\t\t// a fallback you can still do:\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\trender() {\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\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\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> dispatches 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>\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\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}> </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","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","next","selected","input","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","handleSlotChange","some","values","split","v","Boolean","includes","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","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","hideOptions","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","isOpen","hasAttribute","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","__decorateClass","property","type","prototype","String","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-B6BML4Gw.js","sources":["../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { LitElement, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element schmancy-form\n *\n * @slot - Default slot for the form.\n *\n * @fires submit - Emitted when the form is submitted.\n * @fires reset - Emitted when the form is reset.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'schmancy-form'\n\ttabIndex = 0\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t]\n\tprivate _controlsWithValue = [\n\t\t'input',\n\t\t'schmancy-input',\n\t\t'schmancy-mask-input',\n\t\t'textarea',\n\t\t'schmancy-rating',\n\t\t'schmancy-select',\n\t\t'schmancy-combo',\n\t\t'schmancy-date-time-input',\n\t\t'schmancy-autocomplete',\n\t]\n\tprivate _controlsThatSubmit = ['button', 'schmancy-input', 'schmancy-button', 'schmancy-icon-button']\n\n\t/** Specifies if form data validation should be skipped on submit.\n\t * @attr novalidate\n\t * @type {boolean}\n\t * @public\n\t */\n\t@property({ type: Boolean, reflect: true }) public novalidate = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tmerge(\n\t\t\tfromEvent<MouseEvent>(this, 'click').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif ((e.target as HTMLButtonElement).type?.toLowerCase() === 'submit') this.handleSubmitRequest(e)\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.code === 'Enter' || e.key === 'Enter') {\n\t\t\t\t\t\tthis.handleSubmitRequest(e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.$disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\t/** Submits the form. */\n\tpublic submit(): boolean {\n\t\tconst formData = this.getFormData()\n\t\tif (!this.novalidate && !this.reportValidity()) {\n\t\t\treturn false\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('submit', { detail: formData }))\n\t\treturn true\n\t}\n\n\t/** Resets the form. */\n\tpublic reset() {\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\toption.selected = option.defaultSelected\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\t(tagName === 'input' && (element.type === 'checkbox' || element.type == 'radio')) ||\n\t\t\t\t(tagName !== 'input' && this._controlsWithChecked.includes(tagName))\n\t\t\t) {\n\t\t\t\telement.checked = element.hasAttribute('checked')\n\t\t\t} else if (\n\t\t\t\ttagName === 'schmancy-input' ||\n\t\t\t\ttagName === 'schmancy-rating' ||\n\t\t\t\ttagName === 'schmancy-mask-input' ||\n\t\t\t\ttagName === 'schmancy-date-time-input'\n\t\t\t) {\n\t\t\t\telement.value = element.getAttribute('value')\n\t\t\t} else if (this._controlsWithValue.includes(tagName)) {\n\t\t\t\telement.value = element.defaultValue\n\t\t\t}\n\t\t})\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\tprivate getFormElements(): any[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: any[] = []\n\t\tassignedElements?.forEach((element: any) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter((element: any) => !element.disabled)\n\t\t\tformElements.push(...children)\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\tif (option.selected) {\n\t\t\t\t\t\tformData.append(element.name, option.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this._controlsWithChecked.includes(tagName) && element.checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tthis._controlsWithValue.includes(tagName) &&\n\t\t\t\telement.type !== 'checkbox' &&\n\t\t\t\telement.type !== 'radio' &&\n\t\t\t\telement.type !== 'submit'\n\t\t\t) {\n\t\t\t\tformData.append(element.name, element.value)\n\t\t\t}\n\t\t})\n\n\t\treturn formData\n\t}\n\n\t/** Checks for validity of the form. */\n\tpublic reportValidity(): boolean {\n\t\tconst formElements = this.getFormElements()\n\t\treturn !formElements.some(\n\t\t\telement => typeof element.reportValidity === 'function' && element.reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement: any = event.target as HTMLElement\n\t\tif (this._controlsThatSubmit.includes(targetElement.tagName.toLowerCase())) {\n\t\t\tthis.submit()\n\t\t} else if (targetElement.type?.toLowerCase() === 'reset') {\n\t\t\tthis.reset()\n\t\t}\n\n\t\treturn true\n\t}\n\n\tprotected override render() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n"],"names":["SchmancyForm","TailwindElement","constructor","super","this","$disconnecting","Subject","tabIndex","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","getFormElements","forEach","element","tagName","i","options","length","option","selected","defaultSelected","includes","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","push","children","Array","from","getElementsByTagName","filter","FormData","append","name","some","event","targetElement","submit","reset","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement"],"mappings":"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"}
|