@zeyos/zx 2.1.0 → 2.2.1
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/CHANGELOG.md +51 -0
- package/README.md +15 -0
- package/dist/types/compat/base.d.ts +156 -0
- package/dist/types/compat/globals.d.ts +20 -0
- package/dist/types/compat/index.d.ts +128 -0
- package/dist/types/compat/map/basic.d.ts +175 -0
- package/dist/types/compat/map/data.d.ts +102 -0
- package/dist/types/compat/map/date-time.d.ts +80 -0
- package/dist/types/compat/map/factory.d.ts +9 -0
- package/dist/types/compat/map/form.d.ts +98 -0
- package/dist/types/compat/map/helpers.d.ts +12 -0
- package/dist/types/compat/map/http.d.ts +36 -0
- package/dist/types/compat/map/layout.d.ts +106 -0
- package/dist/types/compat/map/options.d.ts +80 -0
- package/dist/types/compat/map/select.d.ts +95 -0
- package/dist/types/compat/map/stubs.d.ts +32 -0
- package/dist/types/compat/map/utilities.d.ts +37 -0
- package/dist/types/compat-entry.d.ts +5 -0
- package/dist/types/components/badge/badge.d.ts +46 -0
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +200 -0
- package/dist/types/components/button/button.d.ts +42 -0
- package/dist/types/components/check-button/check-button.d.ts +98 -0
- package/dist/types/components/checklist/checklist.d.ts +143 -0
- package/dist/types/components/checklist/field-adapter.d.ts +5 -0
- package/dist/types/components/context-menu/context-menu.d.ts +130 -0
- package/dist/types/components/copy/copy-button.d.ts +48 -0
- package/dist/types/components/copy/copy-input.d.ts +91 -0
- package/dist/types/components/data-filter/data-filter.d.ts +250 -0
- package/dist/types/components/data-filter/filter-core.d.ts +52 -0
- package/dist/types/components/date-picker/date-picker.d.ts +137 -0
- package/dist/types/components/date-picker/date-range-picker.d.ts +350 -0
- package/dist/types/components/date-picker/field-adapter.d.ts +6 -0
- package/dist/types/components/date-picker/month-picker.d.ts +75 -0
- package/dist/types/components/date-picker/range-field-adapter.d.ts +7 -0
- package/dist/types/components/date-picker/time-picker.d.ts +127 -0
- package/dist/types/components/datebox/date-range-box.d.ts +218 -0
- package/dist/types/components/datebox/datebox.d.ts +160 -0
- package/dist/types/components/datebox/field-adapter.d.ts +5 -0
- package/dist/types/components/dialog/dialog.d.ts +284 -0
- package/dist/types/components/dropdown/dropdown.d.ts +118 -0
- package/dist/types/components/empty-state/empty-state.d.ts +38 -0
- package/dist/types/components/field/field.d.ts +231 -0
- package/dist/types/components/field-upload/field-adapter.d.ts +5 -0
- package/dist/types/components/field-upload/field-upload.d.ts +213 -0
- package/dist/types/components/fieldset/fieldset.d.ts +125 -0
- package/dist/types/components/finder/finder.d.ts +252 -0
- package/dist/types/components/form/form.d.ts +194 -0
- package/dist/types/components/groupbox/groupbox.d.ts +89 -0
- package/dist/types/components/layout/layout.d.ts +132 -0
- package/dist/types/components/loading/inline-loading.d.ts +86 -0
- package/dist/types/components/loading/progress-bar.d.ts +168 -0
- package/dist/types/components/loading/spinner.d.ts +34 -0
- package/dist/types/components/master-panel/master-panel.d.ts +112 -0
- package/dist/types/components/menu-button/menu-button.d.ts +142 -0
- package/dist/types/components/message/message.d.ts +212 -0
- package/dist/types/components/modal/modal.d.ts +105 -0
- package/dist/types/components/multi-value-editor/field-adapter.d.ts +5 -0
- package/dist/types/components/multi-value-editor/multi-value-editor.d.ts +66 -0
- package/dist/types/components/navigation-bar/navigation-bar.d.ts +229 -0
- package/dist/types/components/number-field/field-adapter.d.ts +5 -0
- package/dist/types/components/number-field/number-field.d.ts +292 -0
- package/dist/types/components/pagination/pagination.d.ts +267 -0
- package/dist/types/components/panel/panel.d.ts +194 -0
- package/dist/types/components/permission/permission.d.ts +93 -0
- package/dist/types/components/rating/field-adapter.d.ts +5 -0
- package/dist/types/components/rating/rating.d.ts +213 -0
- package/dist/types/components/search/search.d.ts +98 -0
- package/dist/types/components/select/field-adapter.d.ts +5 -0
- package/dist/types/components/select/filter.d.ts +11 -0
- package/dist/types/components/select/select.d.ts +235 -0
- package/dist/types/components/skeleton/skeleton.d.ts +97 -0
- package/dist/types/components/slider/field-adapter.d.ts +5 -0
- package/dist/types/components/slider/slider.d.ts +216 -0
- package/dist/types/components/split-view/split-view.d.ts +335 -0
- package/dist/types/components/stepper/stepper.d.ts +314 -0
- package/dist/types/components/stepper/steps.d.ts +131 -0
- package/dist/types/components/tabbox/tabbox.d.ts +230 -0
- package/dist/types/components/table/sort.d.ts +49 -0
- package/dist/types/components/table/table.d.ts +872 -0
- package/dist/types/components/tag-picker/field-adapter.d.ts +5 -0
- package/dist/types/components/tag-picker/tag-picker.d.ts +375 -0
- package/dist/types/components/timebox/field-adapter.d.ts +5 -0
- package/dist/types/components/timebox/timebox.d.ts +121 -0
- package/dist/types/components/toggle/field-adapter.d.ts +5 -0
- package/dist/types/components/toggle/toggle.d.ts +94 -0
- package/dist/types/components/toolbar/toolbar.d.ts +230 -0
- package/dist/types/components/tooltip/tooltip.d.ts +183 -0
- package/dist/types/components/tree/hierarchy.d.ts +113 -0
- package/dist/types/components/tree/tree.d.ts +383 -0
- package/dist/types/components/truncate/truncate.d.ts +61 -0
- package/dist/types/components/value-list/field-adapter.d.ts +5 -0
- package/dist/types/components/value-list/value-list.d.ts +143 -0
- package/dist/types/core/breakpoint.d.ts +68 -0
- package/dist/types/core/component.d.ts +115 -0
- package/dist/types/core/date.d.ts +50 -0
- package/dist/types/core/dom.d.ts +86 -0
- package/dist/types/core/export.d.ts +70 -0
- package/dist/types/core/fontawesome.d.ts +107 -0
- package/dist/types/core/format.d.ts +107 -0
- package/dist/types/core/http.d.ts +122 -0
- package/dist/types/core/i18n.d.ts +35 -0
- package/dist/types/core/icons.d.ts +137 -0
- package/dist/types/core/keyboard.d.ts +72 -0
- package/dist/types/core/position.d.ts +45 -0
- package/dist/types/core/storage.d.ts +46 -0
- package/dist/types/core/util.d.ts +117 -0
- package/dist/types/elements/define.d.ts +73 -0
- package/dist/types/elements/reflect.d.ts +27 -0
- package/dist/types/index.d.ts +79 -0
- package/dist/types/zeyos/connect.d.ts +65 -0
- package/dist/types/zeyos/form.d.ts +140 -0
- package/dist/types/zeyos/icons.d.ts +104 -0
- package/dist/types/zeyos/index.d.ts +12 -0
- package/dist/types/zeyos/modules.d.ts +110 -0
- package/dist/types/zeyos/query.d.ts +157 -0
- package/dist/types/zeyos/schema.d.ts +79 -0
- package/dist/types/zeyos/select.d.ts +167 -0
- package/dist/types/zeyos/table.d.ts +205 -0
- package/dist/zx-compat.esm.js +375 -39
- package/dist/zx-compat.esm.min.js +1 -1
- package/dist/zx-compat.global.js +372 -73
- package/dist/zx-compat.global.min.js +3 -3
- package/dist/zx-zeyos.esm.js +355 -49
- package/dist/zx-zeyos.esm.min.js +1 -1
- package/dist/zx.css +68 -6
- package/dist/zx.esm.js +359 -73
- package/dist/zx.esm.min.js +3 -3
- package/dist/zx.global.js +359 -73
- package/dist/zx.global.min.js +3 -3
- package/dist/zx.min.css +1 -1
- package/docs/api.json +48 -2
- package/docs/llms.md +31 -0
- package/package.json +37 -9
- package/src/compat/base.js +291 -0
- package/src/compat/globals.js +165 -0
- package/src/compat/index.js +84 -0
- package/src/compat/map/basic.js +464 -0
- package/src/compat/map/data.js +232 -0
- package/src/compat/map/date-time.js +177 -0
- package/src/compat/map/factory.js +45 -0
- package/src/compat/map/form.js +330 -0
- package/src/compat/map/helpers.js +46 -0
- package/src/compat/map/http.js +117 -0
- package/src/compat/map/layout.js +256 -0
- package/src/compat/map/options.js +267 -0
- package/src/compat/map/select.js +198 -0
- package/src/compat/map/stubs.js +26 -0
- package/src/compat/map/utilities.js +113 -0
- package/src/compat-entry.js +11 -0
- package/src/components/badge/badge.css +147 -0
- package/src/components/badge/badge.js +92 -0
- package/src/components/breadcrumb/breadcrumb.css +105 -0
- package/src/components/breadcrumb/breadcrumb.js +331 -0
- package/src/components/button/button.css +104 -0
- package/src/components/button/button.js +76 -0
- package/src/components/check-button/check-button.css +66 -0
- package/src/components/check-button/check-button.js +167 -0
- package/src/components/checklist/checklist.css +65 -0
- package/src/components/checklist/checklist.js +282 -0
- package/src/components/checklist/field-adapter.js +46 -0
- package/src/components/context-menu/context-menu.css +54 -0
- package/src/components/context-menu/context-menu.js +334 -0
- package/src/components/copy/copy-button.css +27 -0
- package/src/components/copy/copy-button.js +78 -0
- package/src/components/copy/copy-input.css +59 -0
- package/src/components/copy/copy-input.js +123 -0
- package/src/components/data-filter/data-filter.css +53 -0
- package/src/components/data-filter/data-filter.js +400 -0
- package/src/components/data-filter/filter-core.js +128 -0
- package/src/components/date-picker/date-picker.css +181 -0
- package/src/components/date-picker/date-picker.js +500 -0
- package/src/components/date-picker/date-range-picker.css +264 -0
- package/src/components/date-picker/date-range-picker.js +990 -0
- package/src/components/date-picker/field-adapter.js +36 -0
- package/src/components/date-picker/month-picker.js +223 -0
- package/src/components/date-picker/range-field-adapter.js +31 -0
- package/src/components/date-picker/time-picker.css +191 -0
- package/src/components/date-picker/time-picker.js +406 -0
- package/src/components/datebox/date-range-box.css +128 -0
- package/src/components/datebox/date-range-box.js +492 -0
- package/src/components/datebox/datebox.css +108 -0
- package/src/components/datebox/datebox.js +358 -0
- package/src/components/datebox/field-adapter.js +34 -0
- package/src/components/dialog/dialog.css +74 -0
- package/src/components/dialog/dialog.js +450 -0
- package/src/components/dropdown/dropdown.css +24 -0
- package/src/components/dropdown/dropdown.js +288 -0
- package/src/components/empty-state/empty-state.css +80 -0
- package/src/components/empty-state/empty-state.js +92 -0
- package/src/components/field/field.css +127 -0
- package/src/components/field/field.js +605 -0
- package/src/components/field-upload/field-adapter.js +21 -0
- package/src/components/field-upload/field-upload.css +108 -0
- package/src/components/field-upload/field-upload.js +475 -0
- package/src/components/fieldset/fieldset.css +37 -0
- package/src/components/fieldset/fieldset.js +307 -0
- package/src/components/finder/finder.css +98 -0
- package/src/components/finder/finder.js +509 -0
- package/src/components/form/form.css +32 -0
- package/src/components/form/form.js +302 -0
- package/src/components/groupbox/groupbox.css +51 -0
- package/src/components/groupbox/groupbox.js +199 -0
- package/src/components/layout/layout.css +117 -0
- package/src/components/layout/layout.js +136 -0
- package/src/components/loading/inline-loading.css +34 -0
- package/src/components/loading/inline-loading.js +140 -0
- package/src/components/loading/progress-bar.css +115 -0
- package/src/components/loading/progress-bar.js +259 -0
- package/src/components/loading/spinner.css +58 -0
- package/src/components/loading/spinner.js +57 -0
- package/src/components/master-panel/master-panel.css +51 -0
- package/src/components/master-panel/master-panel.js +203 -0
- package/src/components/menu-button/menu-button.css +49 -0
- package/src/components/menu-button/menu-button.js +294 -0
- package/src/components/message/message.css +122 -0
- package/src/components/message/message.js +499 -0
- package/src/components/modal/modal.css +47 -0
- package/src/components/modal/modal.js +203 -0
- package/src/components/multi-value-editor/field-adapter.js +44 -0
- package/src/components/multi-value-editor/multi-value-editor.css +56 -0
- package/src/components/multi-value-editor/multi-value-editor.js +170 -0
- package/src/components/navigation-bar/navigation-bar.css +130 -0
- package/src/components/navigation-bar/navigation-bar.js +450 -0
- package/src/components/number-field/field-adapter.js +40 -0
- package/src/components/number-field/number-field.css +77 -0
- package/src/components/number-field/number-field.js +545 -0
- package/src/components/pagination/pagination.css +95 -0
- package/src/components/pagination/pagination.js +481 -0
- package/src/components/panel/panel.css +123 -0
- package/src/components/panel/panel.js +336 -0
- package/src/components/permission/permission.css +47 -0
- package/src/components/permission/permission.js +198 -0
- package/src/components/rating/field-adapter.js +34 -0
- package/src/components/rating/rating.css +97 -0
- package/src/components/rating/rating.js +395 -0
- package/src/components/search/search.css +70 -0
- package/src/components/search/search.js +193 -0
- package/src/components/select/field-adapter.js +24 -0
- package/src/components/select/filter.js +39 -0
- package/src/components/select/select.css +180 -0
- package/src/components/select/select.js +663 -0
- package/src/components/skeleton/skeleton.css +76 -0
- package/src/components/skeleton/skeleton.js +139 -0
- package/src/components/slider/field-adapter.js +36 -0
- package/src/components/slider/slider.css +181 -0
- package/src/components/slider/slider.js +399 -0
- package/src/components/split-view/split-view.css +139 -0
- package/src/components/split-view/split-view.js +806 -0
- package/src/components/stepper/stepper.css +234 -0
- package/src/components/stepper/stepper.js +459 -0
- package/src/components/stepper/steps.js +131 -0
- package/src/components/tabbox/tabbox.css +281 -0
- package/src/components/tabbox/tabbox.js +484 -0
- package/src/components/table/sort.js +85 -0
- package/src/components/table/table.css +364 -0
- package/src/components/table/table.js +1711 -0
- package/src/components/tag-picker/field-adapter.js +35 -0
- package/src/components/tag-picker/tag-picker.css +169 -0
- package/src/components/tag-picker/tag-picker.js +837 -0
- package/src/components/timebox/field-adapter.js +24 -0
- package/src/components/timebox/timebox.css +51 -0
- package/src/components/timebox/timebox.js +276 -0
- package/src/components/toggle/field-adapter.js +24 -0
- package/src/components/toggle/toggle.css +66 -0
- package/src/components/toggle/toggle.js +150 -0
- package/src/components/toolbar/toolbar.css +81 -0
- package/src/components/toolbar/toolbar.js +511 -0
- package/src/components/tooltip/tooltip.css +36 -0
- package/src/components/tooltip/tooltip.js +420 -0
- package/src/components/tree/hierarchy.js +151 -0
- package/src/components/tree/tree.css +99 -0
- package/src/components/tree/tree.js +784 -0
- package/src/components/truncate/truncate.css +20 -0
- package/src/components/truncate/truncate.js +92 -0
- package/src/components/value-list/field-adapter.js +24 -0
- package/src/components/value-list/value-list.css +108 -0
- package/src/components/value-list/value-list.js +336 -0
- package/src/core/breakpoint.js +150 -0
- package/src/core/component.js +292 -0
- package/src/core/date.js +216 -0
- package/src/core/dom.js +260 -0
- package/src/core/export.js +204 -0
- package/src/core/fontawesome.js +177 -0
- package/src/core/format.js +283 -0
- package/src/core/http.js +246 -0
- package/src/core/i18n.js +83 -0
- package/src/core/icons.js +283 -0
- package/src/core/keyboard.js +240 -0
- package/src/core/position.js +177 -0
- package/src/core/storage.js +175 -0
- package/src/core/util.js +336 -0
- package/src/elements/define.js +715 -0
- package/src/elements/reflect.js +79 -0
- package/src/index.js +131 -0
- package/src/zeyos/connect.js +142 -0
- package/src/zeyos/form.js +254 -0
- package/src/zeyos/icons.js +92 -0
- package/src/zeyos/index.js +21 -0
- package/src/zeyos/modules.js +269 -0
- package/src/zeyos/query.js +199 -0
- package/src/zeyos/schema.js +474 -0
- package/src/zeyos/select.js +175 -0
- package/src/zeyos/table.js +272 -0
- package/styles/base.css +124 -0
- package/styles/icons.css +34 -0
- package/styles/tokens/dark.css +84 -0
- package/styles/tokens/density.css +9 -0
- package/styles/tokens/global.css +80 -0
- package/styles/tokens/modules.css +109 -0
- package/styles/tokens/semantic.css +49 -0
- package/styles/zx.css +61 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { Component } from '../../core/component.js';
|
|
2
|
+
export type Primitive = string | number | boolean | symbol | bigint | null | undefined;
|
|
3
|
+
export type SelectItem = Record<string, any> | Primitive;
|
|
4
|
+
export type SelectValueReader = string | ((item: SelectItem) => unknown);
|
|
5
|
+
export type SelectLabelReader = string | ((item: SelectItem) => string);
|
|
6
|
+
export type SelectOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* Available values.
|
|
9
|
+
*/
|
|
10
|
+
items?: SelectItem[];
|
|
11
|
+
/**
|
|
12
|
+
* Item ID property or reader.
|
|
13
|
+
*/
|
|
14
|
+
valueKey?: SelectValueReader;
|
|
15
|
+
/**
|
|
16
|
+
* Item label property or reader.
|
|
17
|
+
*/
|
|
18
|
+
labelKey?: SelectLabelReader;
|
|
19
|
+
/**
|
|
20
|
+
* Option renderer.
|
|
21
|
+
*/
|
|
22
|
+
renderItem?: ((item: SelectItem) => Node | string) | null;
|
|
23
|
+
/**
|
|
24
|
+
* Selected-value renderer.
|
|
25
|
+
*/
|
|
26
|
+
renderValue?: ((item: SelectItem) => string) | null;
|
|
27
|
+
/**
|
|
28
|
+
* Initially selected ID or item.
|
|
29
|
+
*/
|
|
30
|
+
value?: unknown;
|
|
31
|
+
/**
|
|
32
|
+
* Whether interaction is disabled.
|
|
33
|
+
*/
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Empty control text.
|
|
37
|
+
*/
|
|
38
|
+
placeholder?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Whether selection may be cleared.
|
|
41
|
+
*/
|
|
42
|
+
clearable?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Filtering mode.
|
|
45
|
+
*/
|
|
46
|
+
filter?: false | 'local' | ((query: string) => Promise<SelectItem[]> | SelectItem[]);
|
|
47
|
+
/**
|
|
48
|
+
* Fields searched by local filtering.
|
|
49
|
+
*/
|
|
50
|
+
searchKeys?: Array<SelectValueReader> | null;
|
|
51
|
+
/**
|
|
52
|
+
* Minimum async query length.
|
|
53
|
+
*/
|
|
54
|
+
minQuery?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Async query delay in milliseconds.
|
|
57
|
+
*/
|
|
58
|
+
debounce?: number;
|
|
59
|
+
/**
|
|
60
|
+
* Maximum list height in pixels.
|
|
61
|
+
*/
|
|
62
|
+
listHeight?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Optional group reader.
|
|
65
|
+
*/
|
|
66
|
+
groupKey?: SelectValueReader | null;
|
|
67
|
+
/**
|
|
68
|
+
* Localized messages.
|
|
69
|
+
*/
|
|
70
|
+
msg?: Record<string, string> | Record<string, Record<string, string>>;
|
|
71
|
+
/**
|
|
72
|
+
* Change listener.
|
|
73
|
+
*/
|
|
74
|
+
onchange?: (event: CustomEvent<SelectChangeDetail>) => void;
|
|
75
|
+
/**
|
|
76
|
+
* Open listener.
|
|
77
|
+
*/
|
|
78
|
+
onopen?: (event: CustomEvent<Record<string, never>>) => void;
|
|
79
|
+
/**
|
|
80
|
+
* Close listener.
|
|
81
|
+
*/
|
|
82
|
+
onclose?: (event: CustomEvent<Record<string, never>>) => void;
|
|
83
|
+
/**
|
|
84
|
+
* Async-query listener.
|
|
85
|
+
*/
|
|
86
|
+
onquery?: (event: CustomEvent<SelectQueryDetail>) => void;
|
|
87
|
+
/**
|
|
88
|
+
* Async-loaded listener.
|
|
89
|
+
*/
|
|
90
|
+
onloaded?: (event: CustomEvent<SelectLoadedDetail>) => void;
|
|
91
|
+
};
|
|
92
|
+
export type SelectChangeDetail = {
|
|
93
|
+
value: unknown;
|
|
94
|
+
item: SelectItem | null;
|
|
95
|
+
};
|
|
96
|
+
export type SelectQueryDetail = {
|
|
97
|
+
query: string;
|
|
98
|
+
};
|
|
99
|
+
export type SelectLoadedDetail = {
|
|
100
|
+
items: SelectItem[];
|
|
101
|
+
};
|
|
102
|
+
export type SelectOptionEntry = {
|
|
103
|
+
item: SelectItem | null;
|
|
104
|
+
clear: boolean;
|
|
105
|
+
element: HTMLElement;
|
|
106
|
+
};
|
|
107
|
+
export type SelectSetOptions = {
|
|
108
|
+
silent?: boolean;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* APG editable combobox with optional local or asynchronous filtering.
|
|
112
|
+
*
|
|
113
|
+
* @fires Select#change
|
|
114
|
+
* @fires Select#open
|
|
115
|
+
* @fires Select#close
|
|
116
|
+
* @fires Select#query
|
|
117
|
+
* @fires Select#loaded
|
|
118
|
+
* @extends {Component<SelectOptions>}
|
|
119
|
+
*/
|
|
120
|
+
export declare class Select extends Component<SelectOptions> {
|
|
121
|
+
_items: any[] | SelectItem[];
|
|
122
|
+
_visibleItems: any[];
|
|
123
|
+
_selected: any;
|
|
124
|
+
_optionEntries: any[];
|
|
125
|
+
_activeIndex: number;
|
|
126
|
+
_open: boolean;
|
|
127
|
+
_disabled: boolean;
|
|
128
|
+
_loading: boolean;
|
|
129
|
+
_requestSequence: number;
|
|
130
|
+
_queryTimer: number;
|
|
131
|
+
_position: import("../../core/position.js").PositionController;
|
|
132
|
+
_createdRoot: boolean;
|
|
133
|
+
_root: HTMLElement;
|
|
134
|
+
_originalChildren: any[] | ChildNode[];
|
|
135
|
+
_originalAttributes: Map<any, any>;
|
|
136
|
+
_handleTypeahead: (event: KeyboardEvent | string) => void;
|
|
137
|
+
static cssName: string;
|
|
138
|
+
/** @type {SelectOptions} */
|
|
139
|
+
static defaults: SelectOptions;
|
|
140
|
+
/** @returns {HTMLElement} */
|
|
141
|
+
render(): HTMLElement;
|
|
142
|
+
/** Selected item ID, or null. */
|
|
143
|
+
get value(): unknown;
|
|
144
|
+
/** @param {unknown} id Selected item ID. */
|
|
145
|
+
set value(id: unknown);
|
|
146
|
+
/** Selected item, or null. @returns {SelectItem|null} */
|
|
147
|
+
get selected(): SelectItem | null;
|
|
148
|
+
/**
|
|
149
|
+
* Selects an item or item ID.
|
|
150
|
+
* @param {unknown} idOrItem Item ID, item, or null.
|
|
151
|
+
* @param {SelectSetOptions} [options={}] Update behavior.
|
|
152
|
+
* @returns {this}
|
|
153
|
+
* @fires Select#change
|
|
154
|
+
*/
|
|
155
|
+
set(idOrItem: unknown, { silent }?: SelectSetOptions): this;
|
|
156
|
+
/**
|
|
157
|
+
* Replaces the available items and preserves selection by ID when possible.
|
|
158
|
+
* @param {SelectItem[]} items New items.
|
|
159
|
+
* @returns {this}
|
|
160
|
+
*/
|
|
161
|
+
setItems(items: SelectItem[]): this;
|
|
162
|
+
/**
|
|
163
|
+
* Restores the configured initial value.
|
|
164
|
+
* @param {{silent?: boolean}} [options={}] Reset behavior.
|
|
165
|
+
* @returns {this}
|
|
166
|
+
*/
|
|
167
|
+
reset({ silent }?: {
|
|
168
|
+
silent?: boolean;
|
|
169
|
+
}): this;
|
|
170
|
+
/** Opens the option panel. @returns {this} @fires Select#open */
|
|
171
|
+
open(): this;
|
|
172
|
+
/** Closes the option panel and restores the selected label. @returns {this} @fires Select#close */
|
|
173
|
+
close(): this;
|
|
174
|
+
/** Enables user interaction. @returns {this} */
|
|
175
|
+
enable(): this;
|
|
176
|
+
/** Disables user interaction and closes the panel. @returns {this} */
|
|
177
|
+
disable(): this;
|
|
178
|
+
/** Moves focus to the combobox input. @returns {this} */
|
|
179
|
+
focus(): this;
|
|
180
|
+
/**
|
|
181
|
+
* Creates the five-level priority preset.
|
|
182
|
+
* @param {Element|string|null} target Component target.
|
|
183
|
+
* @param {SelectOptions} [options={}] Select overrides other than fixed items and renderer.
|
|
184
|
+
* @returns {Select}
|
|
185
|
+
*/
|
|
186
|
+
static priority(target: Element | string | null, options?: SelectOptions): Select;
|
|
187
|
+
/** Cleans up the panel, pending async work, and enhanced target contents. @returns {void} */
|
|
188
|
+
destroy(): void;
|
|
189
|
+
/** @param {KeyboardEvent} event @returns {void} */
|
|
190
|
+
_onKeydown(event: KeyboardEvent): void;
|
|
191
|
+
/** @returns {void} */
|
|
192
|
+
_onInput(): void;
|
|
193
|
+
/** @param {Event} event @returns {void} */
|
|
194
|
+
_onOptionClick(event: Event): void;
|
|
195
|
+
/** @param {SelectOptionEntry|undefined} entry @returns {void} */
|
|
196
|
+
_chooseEntry(entry: SelectOptionEntry | undefined): void;
|
|
197
|
+
/** @param {number} delta @returns {void} */
|
|
198
|
+
_moveActive(delta: number): void;
|
|
199
|
+
/** @param {number} index @returns {void} */
|
|
200
|
+
_setActive(index: number): void;
|
|
201
|
+
/** @returns {void} */
|
|
202
|
+
_renderOptions(): void;
|
|
203
|
+
/** @param {SelectItem|null} item @param {boolean} clear @param {string} [label] @returns {void} */
|
|
204
|
+
_appendOption(item: SelectItem | null, clear: boolean, label?: string): void;
|
|
205
|
+
/** @param {SelectItem|null} item @returns {Node|string} */
|
|
206
|
+
_renderItem(item: SelectItem | null): Node | string;
|
|
207
|
+
/** @param {string} query @returns {void} */
|
|
208
|
+
_scheduleAsyncQuery(query: string): void;
|
|
209
|
+
/** @param {string} query @param {number} sequence @returns {Promise<void>} */
|
|
210
|
+
_runAsyncQuery(query: string, sequence: number): Promise<void>;
|
|
211
|
+
/** @returns {void} */
|
|
212
|
+
_cancelQuery(): void;
|
|
213
|
+
/** @param {boolean} loading @returns {void} */
|
|
214
|
+
_setLoading(loading: boolean): void;
|
|
215
|
+
/** @returns {void} */
|
|
216
|
+
_syncInputValue(): void;
|
|
217
|
+
/** @returns {void} */
|
|
218
|
+
_syncDisabled(): void;
|
|
219
|
+
/** @param {unknown} candidate @returns {SelectItem|null} */
|
|
220
|
+
_findItem(candidate: unknown): SelectItem | null;
|
|
221
|
+
/** @param {SelectItem|null} item @returns {unknown} */
|
|
222
|
+
_itemValue(item: SelectItem | null): unknown;
|
|
223
|
+
/** @param {SelectItem|null} item @returns {string} */
|
|
224
|
+
_itemLabel(item: SelectItem | null): string;
|
|
225
|
+
/** @param {SelectItem|null} item @param {SelectValueReader|SelectLabelReader} reader @returns {unknown} */
|
|
226
|
+
_read(item: SelectItem | null, reader: SelectValueReader | SelectLabelReader): unknown;
|
|
227
|
+
/** @returns {number} */
|
|
228
|
+
_selectedEntryIndex(): number;
|
|
229
|
+
/** @param {number} itemIndex @returns {number} */
|
|
230
|
+
_itemEntryIndex(itemIndex: number): number;
|
|
231
|
+
/** @param {string} name @returns {void} */
|
|
232
|
+
_rememberAttribute(element: any, name: string): void;
|
|
233
|
+
/** @param {string} key @param {string} fallback @returns {string} */
|
|
234
|
+
_message(key: string, fallback: string): string;
|
|
235
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export type SkeletonOptions = {
|
|
2
|
+
/**
|
|
3
|
+
* Block width; a number is read as pixels.
|
|
4
|
+
*/
|
|
5
|
+
width?: string | number;
|
|
6
|
+
/**
|
|
7
|
+
* Block height; a number is read as pixels.
|
|
8
|
+
*/
|
|
9
|
+
height?: string | number;
|
|
10
|
+
/**
|
|
11
|
+
* Corner rounding. `full` with equal width and height
|
|
12
|
+
* gives the circle an avatar or icon placeholder needs.
|
|
13
|
+
*/
|
|
14
|
+
radius?: 'sm' | 'md' | 'full';
|
|
15
|
+
};
|
|
16
|
+
export type SkeletonTextOptions = {
|
|
17
|
+
/**
|
|
18
|
+
* Number of text lines.
|
|
19
|
+
*/
|
|
20
|
+
lines?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Width of the block as a whole.
|
|
23
|
+
*/
|
|
24
|
+
width?: string | number;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the first line is drawn taller, as a title.
|
|
27
|
+
*/
|
|
28
|
+
heading?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Width of the final line, which reads as prose
|
|
31
|
+
* rather than as a filled rectangle.
|
|
32
|
+
*/
|
|
33
|
+
lastLineWidth?: string | number;
|
|
34
|
+
};
|
|
35
|
+
export type SkeletonTableOptions = {
|
|
36
|
+
/**
|
|
37
|
+
* Number of body rows.
|
|
38
|
+
*/
|
|
39
|
+
rows?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Number of columns.
|
|
42
|
+
*/
|
|
43
|
+
columns?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Whether a header row is drawn.
|
|
46
|
+
*/
|
|
47
|
+
header?: boolean;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* @typedef {Object} SkeletonOptions
|
|
51
|
+
* @property {string|number} [width='100%'] Block width; a number is read as pixels.
|
|
52
|
+
* @property {string|number} [height='1rem'] Block height; a number is read as pixels.
|
|
53
|
+
* @property {'sm'|'md'|'full'} [radius='sm'] Corner rounding. `full` with equal width and height
|
|
54
|
+
* gives the circle an avatar or icon placeholder needs.
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
* @typedef {Object} SkeletonTextOptions
|
|
58
|
+
* @property {number} [lines=3] Number of text lines.
|
|
59
|
+
* @property {string|number} [width='100%'] Width of the block as a whole.
|
|
60
|
+
* @property {boolean} [heading=false] Whether the first line is drawn taller, as a title.
|
|
61
|
+
* @property {string|number} [lastLineWidth='60%'] Width of the final line, which reads as prose
|
|
62
|
+
* rather than as a filled rectangle.
|
|
63
|
+
*/
|
|
64
|
+
/**
|
|
65
|
+
* @typedef {Object} SkeletonTableOptions
|
|
66
|
+
* @property {number} [rows=5] Number of body rows.
|
|
67
|
+
* @property {number} [columns=4] Number of columns.
|
|
68
|
+
* @property {boolean} [header=true] Whether a header row is drawn.
|
|
69
|
+
*/
|
|
70
|
+
/**
|
|
71
|
+
* Creates one placeholder block.
|
|
72
|
+
*
|
|
73
|
+
* Skeletons stand in for content whose shape is already known, which is what makes them worth
|
|
74
|
+
* more than a spinner: the layout does not jump when the data arrives. Every skeleton is
|
|
75
|
+
* `aria-hidden`, because a screen reader gains nothing from an announced grey box — set
|
|
76
|
+
* `aria-busy="true"` on the region being filled instead, and remove it with the skeleton.
|
|
77
|
+
*
|
|
78
|
+
* @param {SkeletonOptions} [opts={}] Block options.
|
|
79
|
+
* @returns {HTMLSpanElement}
|
|
80
|
+
*/
|
|
81
|
+
export declare function skeleton(opts?: SkeletonOptions): HTMLSpanElement;
|
|
82
|
+
/**
|
|
83
|
+
* Creates a stack of placeholder lines standing in for a paragraph or a labelled value.
|
|
84
|
+
* @param {SkeletonTextOptions} [opts={}] Text options.
|
|
85
|
+
* @returns {HTMLDivElement}
|
|
86
|
+
*/
|
|
87
|
+
export declare function skeletonText(opts?: SkeletonTextOptions): HTMLDivElement;
|
|
88
|
+
/**
|
|
89
|
+
* Creates a placeholder grid the shape of a table that has not loaded yet.
|
|
90
|
+
*
|
|
91
|
+
* Rendered as plain elements rather than a `<table>`: there is no data to expose, and a table
|
|
92
|
+
* whose cells are all empty is worse for assistive technology than no table at all.
|
|
93
|
+
*
|
|
94
|
+
* @param {SkeletonTableOptions} [opts={}] Table options.
|
|
95
|
+
* @returns {HTMLDivElement}
|
|
96
|
+
*/
|
|
97
|
+
export declare function skeletonTable(opts?: SkeletonTableOptions): HTMLDivElement;
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { Component } from '../../core/component.js';
|
|
2
|
+
export type SliderMark = {
|
|
3
|
+
/**
|
|
4
|
+
* Position on the scale.
|
|
5
|
+
*/
|
|
6
|
+
value: number;
|
|
7
|
+
/**
|
|
8
|
+
* Text drawn under the tick; the value is used when omitted.
|
|
9
|
+
*/
|
|
10
|
+
label?: string;
|
|
11
|
+
};
|
|
12
|
+
export type SliderOptions = {
|
|
13
|
+
/**
|
|
14
|
+
* Initial value, clamped to the range and snapped to `step`.
|
|
15
|
+
*/
|
|
16
|
+
value?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Lowest selectable value.
|
|
19
|
+
*/
|
|
20
|
+
min?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Highest selectable value.
|
|
23
|
+
*/
|
|
24
|
+
max?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Increment between selectable values.
|
|
27
|
+
*/
|
|
28
|
+
step?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Visible name of the control.
|
|
31
|
+
*/
|
|
32
|
+
label?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the label is kept for assistive technology only.
|
|
35
|
+
*/
|
|
36
|
+
hideLabel?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Whether the current value is drawn opposite the label.
|
|
39
|
+
*/
|
|
40
|
+
showValue?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether `min` and `max` are drawn either side of the track.
|
|
43
|
+
*/
|
|
44
|
+
showBounds?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Whether a number box is drawn beside the track, for
|
|
47
|
+
* entering a value precisely rather than dragging to it.
|
|
48
|
+
*/
|
|
49
|
+
showInput?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Suffix appended to the readout.
|
|
52
|
+
*/
|
|
53
|
+
unit?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Labelled positions under the track.
|
|
56
|
+
*/
|
|
57
|
+
marks?: Array<number | SliderMark> | null;
|
|
58
|
+
/**
|
|
59
|
+
* Whether the control is disabled.
|
|
60
|
+
*/
|
|
61
|
+
disabled?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Whether the value is displayed but cannot be changed.
|
|
64
|
+
*/
|
|
65
|
+
readonly?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Control size.
|
|
68
|
+
*/
|
|
69
|
+
size?: 'md' | 'sm';
|
|
70
|
+
/**
|
|
71
|
+
* Replaces the default readout.
|
|
72
|
+
*/
|
|
73
|
+
formatValue?: ((value: number) => string) | null;
|
|
74
|
+
/**
|
|
75
|
+
* Committed-value listener.
|
|
76
|
+
*/
|
|
77
|
+
onchange?: (event: CustomEvent<{
|
|
78
|
+
value: number;
|
|
79
|
+
}>) => void;
|
|
80
|
+
/**
|
|
81
|
+
* Listener called while dragging.
|
|
82
|
+
*/
|
|
83
|
+
oninput?: (event: CustomEvent<{
|
|
84
|
+
value: number;
|
|
85
|
+
}>) => void;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* @typedef {Object} SliderMark
|
|
89
|
+
* @property {number} value Position on the scale.
|
|
90
|
+
* @property {string} [label] Text drawn under the tick; the value is used when omitted.
|
|
91
|
+
*/
|
|
92
|
+
/**
|
|
93
|
+
* @typedef {Object} SliderOptions
|
|
94
|
+
* @property {number} [value=0] Initial value, clamped to the range and snapped to `step`.
|
|
95
|
+
* @property {number} [min=0] Lowest selectable value.
|
|
96
|
+
* @property {number} [max=100] Highest selectable value.
|
|
97
|
+
* @property {number} [step=1] Increment between selectable values.
|
|
98
|
+
* @property {string} [label=''] Visible name of the control.
|
|
99
|
+
* @property {boolean} [hideLabel=false] Whether the label is kept for assistive technology only.
|
|
100
|
+
* @property {boolean} [showValue=true] Whether the current value is drawn opposite the label.
|
|
101
|
+
* @property {boolean} [showBounds=false] Whether `min` and `max` are drawn either side of the track.
|
|
102
|
+
* @property {boolean} [showInput=false] Whether a number box is drawn beside the track, for
|
|
103
|
+
* entering a value precisely rather than dragging to it.
|
|
104
|
+
* @property {string} [unit=''] Suffix appended to the readout.
|
|
105
|
+
* @property {Array<number|SliderMark>|null} [marks=null] Labelled positions under the track.
|
|
106
|
+
* @property {boolean} [disabled=false] Whether the control is disabled.
|
|
107
|
+
* @property {boolean} [readonly=false] Whether the value is displayed but cannot be changed.
|
|
108
|
+
* @property {'md'|'sm'} [size='md'] Control size.
|
|
109
|
+
* @property {((value: number) => string)|null} [formatValue=null] Replaces the default readout.
|
|
110
|
+
* @property {(event: CustomEvent<{value: number}>) => void} [onchange] Committed-value listener.
|
|
111
|
+
* @property {(event: CustomEvent<{value: number}>) => void} [oninput] Listener called while dragging.
|
|
112
|
+
*/
|
|
113
|
+
/**
|
|
114
|
+
* Range control for a bounded numeric value — a discount rate, a threshold, a weighting.
|
|
115
|
+
*
|
|
116
|
+
* Built on a native `<input type="range">`, which is where the whole keyboard map comes from:
|
|
117
|
+
* arrows step, Page Up/Page Down jump, Home and End go to the bounds, and the value is announced
|
|
118
|
+
* as a slider without a line of ARIA. Everything Zx adds is chrome around it — the filled track,
|
|
119
|
+
* the readout, optional ticks, and an optional number box for entering a value exactly.
|
|
120
|
+
*
|
|
121
|
+
* @fires Slider#change
|
|
122
|
+
* @fires Slider#input
|
|
123
|
+
* @extends {Component<SliderOptions>}
|
|
124
|
+
*/
|
|
125
|
+
export declare class Slider extends Component<SliderOptions> {
|
|
126
|
+
_value: number;
|
|
127
|
+
_readonly: boolean;
|
|
128
|
+
_createdRoot: boolean;
|
|
129
|
+
_snapshot: import("../../core/dom.js").TargetSnapshot;
|
|
130
|
+
_min: number;
|
|
131
|
+
_max: number;
|
|
132
|
+
_step: number;
|
|
133
|
+
_id: string;
|
|
134
|
+
static cssName: string;
|
|
135
|
+
/** @type {SliderOptions} */
|
|
136
|
+
static defaults: SliderOptions;
|
|
137
|
+
/** @returns {HTMLElement} */
|
|
138
|
+
render(): HTMLElement;
|
|
139
|
+
/** Current value. @returns {number} */
|
|
140
|
+
get value(): number;
|
|
141
|
+
/** @param {number} next Next value. */
|
|
142
|
+
set value(next: number);
|
|
143
|
+
/**
|
|
144
|
+
* Returns the current value.
|
|
145
|
+
* @returns {number}
|
|
146
|
+
*/
|
|
147
|
+
get(): number;
|
|
148
|
+
/**
|
|
149
|
+
* Sets the value, snapped to `step` and clamped to the range.
|
|
150
|
+
* @param {number} next Next value.
|
|
151
|
+
* @param {{silent?: boolean}} [options={}] Set `silent` to suppress `change`.
|
|
152
|
+
* @returns {this}
|
|
153
|
+
* @fires Slider#change
|
|
154
|
+
*/
|
|
155
|
+
set(next: number, { silent }?: {
|
|
156
|
+
silent?: boolean;
|
|
157
|
+
}): this;
|
|
158
|
+
/**
|
|
159
|
+
* Replaces the range, re-snapping the current value into it.
|
|
160
|
+
* @param {number} min Lowest selectable value.
|
|
161
|
+
* @param {number} max Highest selectable value.
|
|
162
|
+
* @param {number} [step] Increment; the current one is kept when omitted.
|
|
163
|
+
* @returns {this}
|
|
164
|
+
*/
|
|
165
|
+
setRange(min: number, max: number, step?: number): this;
|
|
166
|
+
/** Focuses the track. @returns {this} */
|
|
167
|
+
focus(): this;
|
|
168
|
+
/** Enables user interaction. @returns {this} */
|
|
169
|
+
enable(): this;
|
|
170
|
+
/** Disables user interaction. @returns {this} */
|
|
171
|
+
disable(): this;
|
|
172
|
+
/**
|
|
173
|
+
* Sets the read-only state: the value stays focusable and announced, but cannot be changed.
|
|
174
|
+
* @param {boolean} readonly Whether the value is fixed.
|
|
175
|
+
* @returns {this}
|
|
176
|
+
*/
|
|
177
|
+
setReadonly(readonly: boolean): this;
|
|
178
|
+
/**
|
|
179
|
+
* Replaces the visible label.
|
|
180
|
+
* @param {string} label Control name.
|
|
181
|
+
* @returns {this}
|
|
182
|
+
*/
|
|
183
|
+
setLabel(label: string): this;
|
|
184
|
+
/** @returns {HTMLInputElement} */
|
|
185
|
+
_numberBox(): HTMLInputElement;
|
|
186
|
+
/** @returns {HTMLElement|null} */
|
|
187
|
+
_marks(): HTMLElement | null;
|
|
188
|
+
/** @returns {void} */
|
|
189
|
+
_onInput(): void;
|
|
190
|
+
/** @returns {void} */
|
|
191
|
+
_onCommit(): void;
|
|
192
|
+
/** Writes the value into the input, the readout, and the fill. @returns {void} */
|
|
193
|
+
_paint(): void;
|
|
194
|
+
/** @returns {void} */
|
|
195
|
+
_paintTrack(): void;
|
|
196
|
+
/** @returns {void} */
|
|
197
|
+
_syncState(): void;
|
|
198
|
+
/**
|
|
199
|
+
* Snaps a raw value onto the step grid and clamps it to the range.
|
|
200
|
+
* @param {unknown} raw Value to snap.
|
|
201
|
+
* @returns {number}
|
|
202
|
+
*/
|
|
203
|
+
_snap(raw: unknown): number;
|
|
204
|
+
/** @param {number} value @returns {number} */
|
|
205
|
+
_ratio(value: number): number;
|
|
206
|
+
/** @param {number} value @returns {string} */
|
|
207
|
+
_format(value: number): string;
|
|
208
|
+
/** Restores an enhanced target to the markup it had before the takeover. @returns {void} */
|
|
209
|
+
destroy(): void;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Decimal places a step carries, so a 0.1 step snaps to 0.3 rather than 0.30000000000000004.
|
|
213
|
+
* @param {number} step Step size.
|
|
214
|
+
* @returns {number}
|
|
215
|
+
*/
|
|
216
|
+
export declare function stepPrecision(step: number): number;
|