@zeyos/zx 4.4.0 → 5.2.0
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 +447 -0
- package/README.md +44 -11
- package/dist/types/components/account-menu/account-menu.d.ts +8 -0
- package/dist/types/components/activity-list/activity-list.d.ts +31 -1
- package/dist/types/components/app-icon/app-icon.d.ts +14 -2
- package/dist/types/components/app-sidebar/app-sidebar.d.ts +293 -17
- package/dist/types/components/avatar/avatar.d.ts +46 -7
- package/dist/types/components/badge/badge.d.ts +21 -1
- package/dist/types/components/button/button.d.ts +15 -0
- package/dist/types/components/calendar/calendar.d.ts +67 -5
- package/dist/types/components/card-view/card-view.d.ts +7 -4
- package/dist/types/components/card-view/record-card.d.ts +11 -0
- package/dist/types/components/chart/chart.d.ts +10 -0
- package/dist/types/components/checklist/checklist.d.ts +9 -0
- package/dist/types/components/code-editor/code-editor.d.ts +6 -17
- package/dist/types/components/context-menu/context-menu.d.ts +6 -2
- package/dist/types/components/data-filter/data-filter.d.ts +4 -4
- package/dist/types/components/datebox/date-range-box.d.ts +5 -1
- package/dist/types/components/datebox/datebox.d.ts +7 -2
- package/dist/types/components/dialog/dialog.d.ts +46 -6
- package/dist/types/components/dropdown/dropdown.d.ts +24 -9
- package/dist/types/components/entity-ref/entity-ref.d.ts +2 -2
- package/dist/types/components/field/field.d.ts +54 -2
- package/dist/types/components/fieldset/external-adapter.d.ts +83 -0
- package/dist/types/components/fieldset/fieldset.d.ts +26 -1
- package/dist/types/components/file-item/file-item.d.ts +34 -6
- package/dist/types/components/file-list/file-list.d.ts +35 -3
- package/dist/types/components/filter/filter.d.ts +127 -3
- package/dist/types/components/filter-panel/filter-panel.d.ts +36 -7
- package/dist/types/components/form/form.d.ts +12 -1
- package/dist/types/components/kanban-view/kanban-card.d.ts +8 -0
- package/dist/types/components/launcher/launcher.d.ts +268 -15
- package/dist/types/components/list-toolbar/list-toolbar.d.ts +16 -7
- package/dist/types/components/menu-button/menu-button.d.ts +39 -5
- package/dist/types/components/message/message.d.ts +132 -17
- package/dist/types/components/modal/modal.d.ts +43 -2
- package/dist/types/components/module-bar/module-bar.d.ts +395 -0
- package/dist/types/components/pagination/pagination.d.ts +17 -3
- package/dist/types/components/select/color.d.ts +12 -0
- package/dist/types/components/select/glyphs.d.ts +124 -0
- package/dist/types/components/select/select.d.ts +17 -3
- package/dist/types/components/sheet/sheet.d.ts +15 -0
- package/dist/types/components/stat-tile/stat-tile.d.ts +16 -5
- package/dist/types/components/tabbox/tabbox.d.ts +9 -0
- package/dist/types/components/table/table.d.ts +311 -18
- package/dist/types/components/tag-picker/tag-picker.d.ts +21 -4
- package/dist/types/components/tree/tree.d.ts +13 -0
- package/dist/types/components/view/record-view.d.ts +59 -2
- package/dist/types/components/view-settings/view-settings.d.ts +879 -0
- package/dist/types/components/workspace-switcher/workspace-switcher.d.ts +327 -0
- package/dist/types/core/breakpoint.d.ts +1 -1
- package/dist/types/core/component.d.ts +12 -2
- package/dist/types/core/i18n.d.ts +27 -3
- package/dist/types/core/icons.d.ts +23 -25
- package/dist/types/core/keyboard.d.ts +98 -1
- package/dist/types/core/messages.d.ts +382 -0
- package/dist/types/core/motion.d.ts +59 -0
- package/dist/types/core/overlay-host.d.ts +42 -1
- package/dist/types/core/overlay-stack.d.ts +260 -0
- package/dist/types/index.d.ts +10 -5
- package/dist/types/internal/app-rail.d.ts +38 -0
- package/dist/types/internal/menu-items.d.ts +71 -3
- package/dist/types/zeyos/connect.d.ts +6 -0
- package/dist/types/zeyos/form.d.ts +50 -9
- package/dist/types/zeyos/index.d.ts +2 -1
- package/dist/types/zeyos/launcher.d.ts +9 -0
- package/dist/types/zeyos/module-bar.d.ts +176 -0
- package/dist/types/zeyos/query.d.ts +110 -5
- package/dist/types/zeyos/schema.d.ts +24 -1
- package/dist/types/zeyos/table.d.ts +345 -22
- package/dist/types/zeyos/view.d.ts +26 -2
- package/dist/zx-zeyos.esm.js +6178 -1008
- package/dist/zx-zeyos.esm.min.js +53 -5
- package/dist/zx.css +2861 -827
- package/dist/zx.esm.js +8909 -1480
- package/dist/zx.esm.min.js +55 -7
- package/dist/zx.global.js +8911 -1482
- package/dist/zx.global.min.js +55 -7
- package/dist/zx.min.css +1 -1
- package/docs/api.json +1079 -117
- package/docs/llms.md +956 -154
- package/docs/llms.txt +9 -5
- package/package.json +1 -1
- package/src/components/account-menu/account-menu.css +35 -10
- package/src/components/account-menu/account-menu.js +12 -0
- package/src/components/activity-item/activity-item.css +1 -1
- package/src/components/activity-item/activity-item.js +3 -0
- package/src/components/activity-list/activity-list.css +38 -3
- package/src/components/activity-list/activity-list.js +61 -1
- package/src/components/app-icon/app-icon.css +14 -3
- package/src/components/app-icon/app-icon.js +11 -1
- package/src/components/app-rail/app-rail.css +59 -79
- package/src/components/app-sidebar/app-sidebar.css +304 -168
- package/src/components/app-sidebar/app-sidebar.js +667 -46
- package/src/components/aurora/aurora.css +5 -3
- package/src/components/avatar/avatar.css +32 -7
- package/src/components/avatar/avatar.js +72 -8
- package/src/components/badge/badge.css +54 -2
- package/src/components/badge/badge.js +29 -2
- package/src/components/breadcrumb/breadcrumb.css +1 -1
- package/src/components/button/button.css +67 -9
- package/src/components/button/button.js +38 -0
- package/src/components/calendar/calendar.css +47 -47
- package/src/components/calendar/calendar.js +26 -52
- package/src/components/card/card.css +4 -4
- package/src/components/card-view/card-view.css +14 -12
- package/src/components/card-view/card-view.js +13 -9
- package/src/components/card-view/record-card.js +14 -3
- package/src/components/chart/chart.css +4 -1
- package/src/components/chart/chart.js +12 -0
- package/src/components/check-button/check-button.css +10 -2
- package/src/components/checklist/checklist.css +9 -2
- package/src/components/checklist/checklist.js +11 -5
- package/src/components/checklist/field-adapter.js +3 -1
- package/src/components/code-editor/code-editor.css +7 -6
- package/src/components/code-editor/code-editor.js +19 -1
- package/src/components/code-editor/field-adapter.js +9 -2
- package/src/components/context-menu/context-menu.css +9 -4
- package/src/components/context-menu/context-menu.js +8 -2
- package/src/components/copy/copy-button.css +6 -0
- package/src/components/copy/copy-input.css +9 -4
- package/src/components/data-filter/data-filter.css +5 -4
- package/src/components/data-filter/data-filter.js +2 -2
- package/src/components/date-picker/date-picker.css +6 -6
- package/src/components/date-picker/date-range-picker.css +3 -3
- package/src/components/date-picker/time-picker.css +3 -3
- package/src/components/datebox/date-range-box.css +79 -2
- package/src/components/datebox/date-range-box.js +13 -2
- package/src/components/datebox/datebox.css +79 -2
- package/src/components/datebox/datebox.js +13 -2
- package/src/components/dialog/dialog.css +26 -0
- package/src/components/dialog/dialog.js +99 -17
- package/src/components/dock/dock.css +5 -4
- package/src/components/dropdown/dropdown.css +1 -1
- package/src/components/dropdown/dropdown.js +159 -72
- package/src/components/empty-state/empty-state.css +2 -2
- package/src/components/entity-ref/entity-ref.css +1 -1
- package/src/components/entity-ref/entity-ref.js +1 -1
- package/src/components/field/field.css +28 -9
- package/src/components/field/field.js +101 -29
- package/src/components/field-upload/field-upload.css +1 -1
- package/src/components/fieldset/external-adapter.js +363 -0
- package/src/components/fieldset/fieldset.css +5 -3
- package/src/components/fieldset/fieldset.js +38 -64
- package/src/components/file-item/file-item.js +144 -10
- package/src/components/file-list/file-list.js +144 -21
- package/src/components/filter/filter.css +86 -2
- package/src/components/filter/filter.js +307 -11
- package/src/components/filter-panel/filter-panel.css +1 -1
- package/src/components/filter-panel/filter-panel.js +149 -32
- package/src/components/finder/finder.css +16 -14
- package/src/components/form/form.css +5 -4
- package/src/components/form/form.js +11 -2
- package/src/components/grid/grid.css +1 -1
- package/src/components/groupbox/groupbox.css +1 -1
- package/src/components/kanban-view/kanban-card.js +11 -3
- package/src/components/kanban-view/kanban-view.css +42 -18
- package/src/components/kanban-view/kanban-view.js +9 -6
- package/src/components/launcher/launcher.css +108 -26
- package/src/components/launcher/launcher.js +530 -42
- package/src/components/list-toolbar/list-toolbar.css +13 -8
- package/src/components/list-toolbar/list-toolbar.js +40 -14
- package/src/components/master-panel/master-panel.css +2 -0
- package/src/components/master-panel/master-panel.js +0 -1
- package/src/components/menu-button/menu-button.css +72 -4
- package/src/components/menu-button/menu-button.js +160 -18
- package/src/components/message/message.css +33 -3
- package/src/components/message/message.js +264 -22
- package/src/components/modal/modal.css +1 -1
- package/src/components/modal/modal.js +83 -15
- package/src/components/module-bar/module-bar.css +486 -0
- package/src/components/module-bar/module-bar.js +1074 -0
- package/src/components/multi-value-editor/multi-value-editor.css +1 -1
- package/src/components/navigation-bar/navigation-bar.css +18 -9
- package/src/components/number-field/field-adapter.js +3 -1
- package/src/components/number-field/number-field.css +70 -0
- package/src/components/number-field/number-field.js +2 -0
- package/src/components/pagination/pagination.css +13 -11
- package/src/components/pagination/pagination.js +20 -4
- package/src/components/panel/panel.css +4 -3
- package/src/components/questionnaire/questionnaire.css +4 -4
- package/src/components/rating/field-adapter.js +2 -1
- package/src/components/rating/rating.css +8 -1
- package/src/components/search/search.css +4 -1
- package/src/components/select/color.js +22 -0
- package/src/components/select/field-adapter.js +2 -0
- package/src/components/select/glyphs.js +165 -0
- package/src/components/select/select.css +138 -45
- package/src/components/select/select.js +92 -47
- package/src/components/sheet/sheet.css +12 -9
- package/src/components/sheet/sheet.js +74 -32
- package/src/components/slider/field-adapter.js +6 -1
- package/src/components/slider/slider.css +18 -4
- package/src/components/slider/slider.js +1 -1
- package/src/components/sort-control/sort-control.css +4 -1
- package/src/components/split-view/split-view.css +1 -1
- package/src/components/stat-tile/stat-tile.css +42 -47
- package/src/components/stat-tile/stat-tile.js +17 -6
- package/src/components/stepper/stepper.css +1 -1
- package/src/components/tabbox/tabbox.css +41 -32
- package/src/components/tabbox/tabbox.js +5 -1
- package/src/components/table/table.css +187 -37
- package/src/components/table/table.js +718 -73
- package/src/components/tag-picker/field-adapter.js +2 -1
- package/src/components/tag-picker/tag-picker.css +83 -5
- package/src/components/tag-picker/tag-picker.js +25 -8
- package/src/components/timebox/timebox.css +22 -2
- package/src/components/toggle/toggle.css +12 -1
- package/src/components/toolbar/toolbar.js +2 -2
- package/src/components/tooltip/tooltip.css +4 -0
- package/src/components/tooltip/tooltip.js +44 -19
- package/src/components/tree/tree.css +26 -17
- package/src/components/tree/tree.js +31 -0
- package/src/components/value-list/value-list.css +3 -3
- package/src/components/view/record-view.css +1 -1
- package/src/components/view/record-view.js +178 -18
- package/src/components/view-settings/view-settings.css +285 -0
- package/src/components/view-settings/view-settings.js +1830 -0
- package/src/components/workspace-switcher/workspace-switcher.css +188 -0
- package/src/components/workspace-switcher/workspace-switcher.js +463 -0
- package/src/core/breakpoint.js +1 -1
- package/src/core/component.js +88 -17
- package/src/core/fontawesome.js +5 -1
- package/src/core/i18n.js +47 -4
- package/src/core/icons.js +204 -61
- package/src/core/keyboard.js +206 -11
- package/src/core/messages.js +427 -0
- package/src/core/motion.js +147 -0
- package/src/core/overlay-host.js +77 -3
- package/src/core/overlay-stack.js +487 -0
- package/src/core/position.js +22 -3
- package/src/index.js +10 -5
- package/src/internal/app-rail.js +135 -55
- package/src/internal/menu-items.js +61 -3
- package/src/zeyos/connect.js +6 -2
- package/src/zeyos/form.js +69 -27
- package/src/zeyos/index.js +4 -1
- package/src/zeyos/launcher.js +8 -3
- package/src/zeyos/module-bar.js +181 -0
- package/src/zeyos/query.js +197 -13
- package/src/zeyos/schema.js +144 -27
- package/src/zeyos/table.js +287 -84
- package/src/zeyos/view.js +49 -93
- package/styles/base.css +72 -1
- package/styles/icons.css +11 -1
- package/styles/print.css +1 -1
- package/styles/tokens/dark.css +117 -37
- package/styles/tokens/global.css +121 -27
- package/styles/tokens/semantic.css +140 -43
- package/styles/tokens/themes.css +7 -6
- package/styles/zx.css +3 -1
- package/styles/tokens/density.css +0 -9
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import { AppRailPresenter } from '../../internal/app-rail.js';
|
|
2
|
+
import { Dropdown } from '../dropdown/dropdown.js';
|
|
3
|
+
import { Tooltip } from '../tooltip/tooltip.js';
|
|
4
|
+
export type AppNavItem = import('../../internal/app-rail.js').AppNavItem;
|
|
5
|
+
export type AppNavSelectDetail = import('../../internal/app-rail.js').AppNavSelectDetail;
|
|
6
|
+
export type ModuleTone = import('../app-icon/app-icon.js').AppIconTone;
|
|
7
|
+
export type ModuleItem = {
|
|
8
|
+
/**
|
|
9
|
+
* Stable module identifier.
|
|
10
|
+
*/
|
|
11
|
+
id: string | number;
|
|
12
|
+
/**
|
|
13
|
+
* Module name: the tile's accessible name, tooltip, and catalogue label.
|
|
14
|
+
*/
|
|
15
|
+
label: string;
|
|
16
|
+
/**
|
|
17
|
+
* Icon name, node, component, or factory.
|
|
18
|
+
*/
|
|
19
|
+
icon?: string | Node | {
|
|
20
|
+
toElement: () => Node | null;
|
|
21
|
+
} | ((context: Record<string, any>, item: AppNavItem) => Node | null);
|
|
22
|
+
/**
|
|
23
|
+
* Identity colour from the theme's categorical tones.
|
|
24
|
+
*/
|
|
25
|
+
tone?: ModuleTone;
|
|
26
|
+
/**
|
|
27
|
+
* Identity colour as any CSS colour; takes precedence over `tone`.
|
|
28
|
+
*/
|
|
29
|
+
color?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Count or status badge.
|
|
32
|
+
*/
|
|
33
|
+
badge?: string | number;
|
|
34
|
+
/**
|
|
35
|
+
* Shown on the bar, in this order when a number. When no
|
|
36
|
+
* module sets it, every module is on the bar; otherwise unpinned modules are in "All modules" only.
|
|
37
|
+
*/
|
|
38
|
+
pinned?: boolean | number;
|
|
39
|
+
/**
|
|
40
|
+
* Group heading in the "All modules" catalogue.
|
|
41
|
+
*/
|
|
42
|
+
group?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Secondary text, shown as the catalogue entry's title.
|
|
45
|
+
*/
|
|
46
|
+
description?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Emitted value; defaults to `id`.
|
|
49
|
+
*/
|
|
50
|
+
value?: unknown;
|
|
51
|
+
/**
|
|
52
|
+
* Native navigation target for a module without a menu.
|
|
53
|
+
*/
|
|
54
|
+
href?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Native link browsing context.
|
|
57
|
+
*/
|
|
58
|
+
target?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Application-owned non-link action.
|
|
61
|
+
*/
|
|
62
|
+
invoke?: () => void;
|
|
63
|
+
/**
|
|
64
|
+
* Whether activation is unavailable.
|
|
65
|
+
*/
|
|
66
|
+
disabled?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* The module's menu. With `menus: 'flyout'` it opens beside
|
|
69
|
+
* the tile; it never renders inline.
|
|
70
|
+
*/
|
|
71
|
+
children?: AppNavItem[];
|
|
72
|
+
};
|
|
73
|
+
export type ModuleBarOptions = {
|
|
74
|
+
/**
|
|
75
|
+
* Modules, in bar order.
|
|
76
|
+
*/
|
|
77
|
+
items?: ModuleItem[];
|
|
78
|
+
/**
|
|
79
|
+
* Active destination id: a module, or any item in a module's menu.
|
|
80
|
+
*/
|
|
81
|
+
active?: string | number | null;
|
|
82
|
+
/**
|
|
83
|
+
* Bar flow.
|
|
84
|
+
*/
|
|
85
|
+
orientation?: 'vertical' | 'horizontal';
|
|
86
|
+
/**
|
|
87
|
+
* Workspace edge the bar occupies.
|
|
88
|
+
*/
|
|
89
|
+
side?: 'left' | 'right' | 'top' | 'bottom';
|
|
90
|
+
/**
|
|
91
|
+
* Tile treatment: the glyph in the module
|
|
92
|
+
* colour on a tint of it, the solid identity tile, or monochrome glyphs.
|
|
93
|
+
*/
|
|
94
|
+
appearance?: 'tint' | 'solid' | 'plain';
|
|
95
|
+
/**
|
|
96
|
+
* Whether a vertical bar prints each
|
|
97
|
+
* module's name: under its tile (a narrow strip), beside it (a full navigation column, with the
|
|
98
|
+
* count at the end of the row), or not at all — the name then stays the accessible name and the
|
|
99
|
+
* tooltip. Horizontal bars never print names.
|
|
100
|
+
*/
|
|
101
|
+
labels?: 'hidden' | 'below' | 'beside';
|
|
102
|
+
/**
|
|
103
|
+
* How a module's children are presented: in a flyout,
|
|
104
|
+
* or by an adjacent panel the application owns, in which case activating the module emits `select`.
|
|
105
|
+
*/
|
|
106
|
+
menus?: 'flyout' | 'none';
|
|
107
|
+
/**
|
|
108
|
+
* With `menus: 'none'`, the module whose menu the
|
|
109
|
+
* adjacent panel shows.
|
|
110
|
+
*/
|
|
111
|
+
expanded?: string | number | null;
|
|
112
|
+
/**
|
|
113
|
+
* With `menus: 'none'`, the id of that panel.
|
|
114
|
+
*/
|
|
115
|
+
controls?: string | null;
|
|
116
|
+
/**
|
|
117
|
+
* The "All modules" button: shown when a
|
|
118
|
+
* module does not fit or is unpinned, always, or never (the bar then scrolls).
|
|
119
|
+
*/
|
|
120
|
+
allModules?: 'auto' | 'always' | 'never';
|
|
121
|
+
/**
|
|
122
|
+
* Leading content, such as a product mark.
|
|
123
|
+
*/
|
|
124
|
+
header?: Node | string | number | {
|
|
125
|
+
toElement: () => Node | null;
|
|
126
|
+
} | null;
|
|
127
|
+
/**
|
|
128
|
+
* Trailing content, such as an account menu.
|
|
129
|
+
*/
|
|
130
|
+
footer?: Node | string | number | {
|
|
131
|
+
toElement: () => Node | null;
|
|
132
|
+
} | null;
|
|
133
|
+
/**
|
|
134
|
+
* Navigation accessible label. Omitted resolves `moduleBar.label`, English `Modules`.
|
|
135
|
+
*/
|
|
136
|
+
label?: string | null;
|
|
137
|
+
/**
|
|
138
|
+
* Flyout hover-open delay in milliseconds.
|
|
139
|
+
*/
|
|
140
|
+
openDelay?: number;
|
|
141
|
+
/**
|
|
142
|
+
* Flyout pointer and focus crossing grace in milliseconds.
|
|
143
|
+
*/
|
|
144
|
+
closeDelay?: number;
|
|
145
|
+
/**
|
|
146
|
+
* Optional host icon renderer.
|
|
147
|
+
*/
|
|
148
|
+
renderIcon?: (item: AppNavItem, context: Record<string, any>) => Node | null;
|
|
149
|
+
/**
|
|
150
|
+
* Preventable activation listener.
|
|
151
|
+
*/
|
|
152
|
+
onselect?: (event: CustomEvent<AppNavSelectDetail>) => void;
|
|
153
|
+
/**
|
|
154
|
+
* Flyout-state listener.
|
|
155
|
+
*/
|
|
156
|
+
onflyoutchange?: (event: CustomEvent<{
|
|
157
|
+
item: AppNavItem;
|
|
158
|
+
id: string | number;
|
|
159
|
+
open: boolean;
|
|
160
|
+
}>) => void;
|
|
161
|
+
/**
|
|
162
|
+
* Overflow listener.
|
|
163
|
+
*/
|
|
164
|
+
onoverflowchange?: (event: CustomEvent<{
|
|
165
|
+
visible: Array<string | number>;
|
|
166
|
+
overflow: Array<string | number>;
|
|
167
|
+
}>) => void;
|
|
168
|
+
/**
|
|
169
|
+
* "All modules" catalogue open-state listener.
|
|
170
|
+
*/
|
|
171
|
+
onallmodules?: (event: CustomEvent<{
|
|
172
|
+
open: boolean;
|
|
173
|
+
}>) => void;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* The module level of an application: one colour-coded tile per module in a vertical strip or a
|
|
177
|
+
* horizontal bar. A module with a menu opens it in a flyout, or leaves it to an adjacent panel
|
|
178
|
+
* (`menus: 'none'`, which is how `AppSidebar` composes the bar). Modules that do not fit, or are
|
|
179
|
+
* not pinned, are one step away in the "All modules" catalogue. The bar is one Tab stop: arrow
|
|
180
|
+
* keys, Home, End, and type-ahead move between tiles.
|
|
181
|
+
* @fires ModuleBar#select
|
|
182
|
+
* @fires ModuleBar#flyoutchange
|
|
183
|
+
* @fires ModuleBar#overflowchange
|
|
184
|
+
* @fires ModuleBar#allmodules
|
|
185
|
+
* @extends {AppRailPresenter}
|
|
186
|
+
*/
|
|
187
|
+
export declare class ModuleBar extends AppRailPresenter {
|
|
188
|
+
_sections: Map<any, any>;
|
|
189
|
+
_appearance: any;
|
|
190
|
+
_menus: string;
|
|
191
|
+
_expandedId: any;
|
|
192
|
+
_labels: any;
|
|
193
|
+
_promoted: string | number;
|
|
194
|
+
_catalogue: Dropdown;
|
|
195
|
+
_silenceCatalogue: boolean;
|
|
196
|
+
_catalogueTooltip: Tooltip;
|
|
197
|
+
_observer: ResizeObserver;
|
|
198
|
+
_partition: {
|
|
199
|
+
visible: any[];
|
|
200
|
+
overflow: any[];
|
|
201
|
+
} | {
|
|
202
|
+
visible: (string | number)[];
|
|
203
|
+
overflow: (string | number)[];
|
|
204
|
+
};
|
|
205
|
+
_rovingId: string;
|
|
206
|
+
_typeahead: any;
|
|
207
|
+
static cssName: string;
|
|
208
|
+
static partBlock: string;
|
|
209
|
+
/** @type {Readonly<ModuleBarOptions>} */
|
|
210
|
+
static defaults: Readonly<ModuleBarOptions>;
|
|
211
|
+
/**
|
|
212
|
+
* Creates or enhances a module bar.
|
|
213
|
+
* @param {Element|string|null} [target=null] Bar target; a `<nav>` is created when null.
|
|
214
|
+
* @param {ModuleBarOptions} [options={}] Bar options.
|
|
215
|
+
*/
|
|
216
|
+
constructor(target?: Element | string | null, options?: ModuleBarOptions);
|
|
217
|
+
/** @returns {HTMLElement} */
|
|
218
|
+
render(): HTMLElement;
|
|
219
|
+
/** Replaces the modules and rebuilds the bar. @param {ModuleItem[]} items @returns {this} */
|
|
220
|
+
setItems(items: ModuleItem[]): this;
|
|
221
|
+
/** Returns a copy of the normalized modules. @returns {ModuleItem[]} */
|
|
222
|
+
getItems(): ModuleItem[];
|
|
223
|
+
/**
|
|
224
|
+
* Marks the active destination — a module, or anything in a module's menu — without routing.
|
|
225
|
+
* The module holding it becomes current and stays on the bar.
|
|
226
|
+
* @param {string|number|null} id Destination id.
|
|
227
|
+
* @returns {this}
|
|
228
|
+
*/
|
|
229
|
+
setActive(id: string | number | null): this;
|
|
230
|
+
/** Opens a module's menu flyout. @param {string|number} id Module id. @param {{focus?: boolean}} [options={}] Focus its first item. @returns {this} */
|
|
231
|
+
openFlyout(id: string | number, options?: {
|
|
232
|
+
focus?: boolean;
|
|
233
|
+
}): this;
|
|
234
|
+
/** Closes a module's menu flyout. @param {string|number} id Module id. @returns {this} */
|
|
235
|
+
closeFlyout(id: string | number): this;
|
|
236
|
+
/** Closes every menu flyout. @returns {this} */
|
|
237
|
+
closeAllFlyouts(): this;
|
|
238
|
+
/** Reports whether a module's menu flyout is open. @param {string|number} id Module id. @returns {boolean} */
|
|
239
|
+
isFlyoutOpen(id: string | number): boolean;
|
|
240
|
+
/**
|
|
241
|
+
* With `menus: 'none'`, names the module whose menu the adjacent panel now shows.
|
|
242
|
+
* @param {string|number|null} id Module id, or null when the panel shows none.
|
|
243
|
+
* @returns {this}
|
|
244
|
+
*/
|
|
245
|
+
setExpanded(id: string | number | null): this;
|
|
246
|
+
/**
|
|
247
|
+
* Updates one badge in place — on the tile, in a flyout, and in the catalogue — without
|
|
248
|
+
* rebuilding the bar. `null` removes it.
|
|
249
|
+
* @param {string|number} id Module or menu item id.
|
|
250
|
+
* @param {string|number|null} badge New badge.
|
|
251
|
+
* @returns {this}
|
|
252
|
+
*/
|
|
253
|
+
setBadge(id: string | number, badge: string | number | null): this;
|
|
254
|
+
/**
|
|
255
|
+
* Changes flow or edge, keeping items, the active destination, and the expanded module.
|
|
256
|
+
* @param {{orientation?: 'vertical'|'horizontal', side?: 'left'|'right'|'top'|'bottom'}} layout
|
|
257
|
+
* @returns {this}
|
|
258
|
+
*/
|
|
259
|
+
setLayout(layout?: {
|
|
260
|
+
orientation?: 'vertical' | 'horizontal';
|
|
261
|
+
side?: 'left' | 'right' | 'top' | 'bottom';
|
|
262
|
+
}): this;
|
|
263
|
+
/**
|
|
264
|
+
* Changes whether module names are printed — the expanded and collapsed states of a vertical
|
|
265
|
+
* navigation column — keeping items, the active destination, and the expanded module.
|
|
266
|
+
* @param {'hidden'|'below'|'beside'} labels
|
|
267
|
+
* @returns {this}
|
|
268
|
+
*/
|
|
269
|
+
setLabels(labels: 'hidden' | 'below' | 'beside'): this;
|
|
270
|
+
/** Opens the "All modules" catalogue and focuses its filter or first entry. @returns {this} */
|
|
271
|
+
openAllModules(): this;
|
|
272
|
+
/** Closes the "All modules" catalogue. @returns {this} */
|
|
273
|
+
closeAllModules(): this;
|
|
274
|
+
/** Reports whether the "All modules" catalogue is open. @returns {boolean} */
|
|
275
|
+
isAllModulesOpen(): boolean;
|
|
276
|
+
/** Focuses the bar's Tab stop: the current module, else the first tile. @returns {this} */
|
|
277
|
+
focus(): this;
|
|
278
|
+
/** Destroys flyouts, tooltips, and the catalogue, and restores or removes the root. @returns {void} */
|
|
279
|
+
destroy(): void;
|
|
280
|
+
/** @param {Node|null} node @returns {boolean} @private */
|
|
281
|
+
private _containsNode;
|
|
282
|
+
/** @returns {void} */
|
|
283
|
+
_clearArtifacts(): void;
|
|
284
|
+
/** @param {AppNavItem} item @returns {boolean} */
|
|
285
|
+
_flyoutsFor(item: AppNavItem): boolean;
|
|
286
|
+
/** @returns {boolean} */
|
|
287
|
+
_tooltipFor(): boolean;
|
|
288
|
+
/** @param {AppNavItem} item @returns {HTMLElement} */
|
|
289
|
+
_renderControl(item: AppNavItem): HTMLElement;
|
|
290
|
+
/** @returns {void} */
|
|
291
|
+
_afterRebuild(): void;
|
|
292
|
+
/** @returns {void} */
|
|
293
|
+
_syncActive(): void;
|
|
294
|
+
/**
|
|
295
|
+
* Shows the tiles that fit, in bar order, and moves the rest behind "All modules". Everything is
|
|
296
|
+
* shown first so a bar sized by its content measures as not overflowing and never shrinks itself.
|
|
297
|
+
* @returns {void}
|
|
298
|
+
*/
|
|
299
|
+
_layout(): void;
|
|
300
|
+
/** @param {AppNavItem} item @param {'bar'|'catalogue'} location @returns {HTMLElement} */
|
|
301
|
+
_renderTile(item: AppNavItem, location: 'bar' | 'catalogue'): HTMLElement;
|
|
302
|
+
/** @param {HTMLElement} control @param {AppNavItem} item @returns {void} */
|
|
303
|
+
_applyTileBadge(control: HTMLElement, item: AppNavItem): void;
|
|
304
|
+
/** Builds the "All modules" button and its catalogue for this render. @returns {void} */
|
|
305
|
+
_buildCatalogue(): void;
|
|
306
|
+
/**
|
|
307
|
+
* Leave exactly one visible catalogue entry in the Tab order: `preferred`, else the current stop,
|
|
308
|
+
* else the current module, else the first entry the filter shows.
|
|
309
|
+
* @param {HTMLElement} [preferred]
|
|
310
|
+
* @returns {void}
|
|
311
|
+
*/
|
|
312
|
+
_syncCatalogueStop(preferred?: HTMLElement): void;
|
|
313
|
+
/** @param {AppNavItem} item @returns {HTMLElement} */
|
|
314
|
+
_catalogueControl(item: AppNavItem): HTMLElement;
|
|
315
|
+
/** @param {MouseEvent|Event} event @returns {void} */
|
|
316
|
+
_onCatalogueClick(event: MouseEvent | Event): void;
|
|
317
|
+
/** @param {KeyboardEvent} event @returns {void} */
|
|
318
|
+
_onCatalogueKeydown(event: KeyboardEvent): void;
|
|
319
|
+
/** @param {string} query @returns {void} */
|
|
320
|
+
_filterCatalogue(query: string): void;
|
|
321
|
+
/** @returns {void} */
|
|
322
|
+
_focusCatalogue(): void;
|
|
323
|
+
/** @param {KeyboardEvent} event @returns {void} */
|
|
324
|
+
_onRailKeydown(event: KeyboardEvent): void;
|
|
325
|
+
/** @param {string} key @param {HTMLElement[]} controls @param {number} index @returns {HTMLElement|null} */
|
|
326
|
+
_typeaheadTarget(key: string, controls: HTMLElement[], index: number): HTMLElement | null;
|
|
327
|
+
/** @returns {HTMLElement[]} Every module tile, shown or not. */
|
|
328
|
+
_tiles(): HTMLElement[];
|
|
329
|
+
/** @returns {HTMLElement[]} The tiles and button the arrow keys move between, in bar order. */
|
|
330
|
+
_rovingControls(): HTMLElement[];
|
|
331
|
+
/** @returns {HTMLElement|null} */
|
|
332
|
+
_rovingStop(): HTMLElement | null;
|
|
333
|
+
/** @param {HTMLElement} control @returns {void} */
|
|
334
|
+
_setRovingStop(control: HTMLElement): void;
|
|
335
|
+
/** @returns {void} */
|
|
336
|
+
_syncRoving(): void;
|
|
337
|
+
/** @returns {void} */
|
|
338
|
+
_syncExpanded(): void;
|
|
339
|
+
/** @returns {HTMLElement[]} */
|
|
340
|
+
_catalogueEntries(): HTMLElement[];
|
|
341
|
+
/** @param {string} id @returns {HTMLElement|null} */
|
|
342
|
+
_catalogueEntry(id: string): HTMLElement | null;
|
|
343
|
+
/** @returns {string} */
|
|
344
|
+
_labelText(): string;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Splits modules into those the bar shows and those only "All modules" offers.
|
|
348
|
+
*
|
|
349
|
+
* Bar order is pinned modules first — by their pinned number, then as listed — and the rest as
|
|
350
|
+
* listed. When any module is pinned, unpinned modules go to the catalogue. When the bar cannot
|
|
351
|
+
* hold every candidate, one slot goes to the "All modules" button. Modules named in `keep` (the
|
|
352
|
+
* current module, the module an adjacent panel shows) stay on the bar whatever their pin or
|
|
353
|
+
* position, displacing the last module that is not kept.
|
|
354
|
+
* @param {ModuleItem[]} items Modules.
|
|
355
|
+
* @param {number} [capacity=Infinity] Slots the bar has room for, the button included.
|
|
356
|
+
* @param {Array<string|number|null|undefined>|string|number|null} [keep=[]] Module ids that must stay visible.
|
|
357
|
+
* @param {boolean} [reserve=false] Keep a slot for the button even when every module fits.
|
|
358
|
+
* @returns {{visible: ModuleItem[], overflow: ModuleItem[], more: boolean}}
|
|
359
|
+
*/
|
|
360
|
+
export declare function partitionModules(items: ModuleItem[], capacity?: number, keep?: Array<string | number | null | undefined> | string | number | null, reserve?: boolean): {
|
|
361
|
+
visible: ModuleItem[];
|
|
362
|
+
overflow: ModuleItem[];
|
|
363
|
+
more: boolean;
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* Resolves a module's identity colour: a valid CSS `color` wins, then a known `tone`.
|
|
367
|
+
* @param {{tone?: unknown, color?: unknown}} item Module.
|
|
368
|
+
* @returns {{tone: ModuleTone|null, color: string|null}}
|
|
369
|
+
*/
|
|
370
|
+
export declare function resolveModuleColor(item: {
|
|
371
|
+
tone?: unknown;
|
|
372
|
+
color?: unknown;
|
|
373
|
+
}): {
|
|
374
|
+
tone: ModuleTone | null;
|
|
375
|
+
color: string | null;
|
|
376
|
+
};
|
|
377
|
+
/**
|
|
378
|
+
* Modules are one level: a section contributes its modules, and remembers itself as their heading.
|
|
379
|
+
* @param {AppNavItem[]} items Normalized items.
|
|
380
|
+
* @param {Map<string, string>} [sections] Filled with each sectioned module's heading.
|
|
381
|
+
* @param {string|null} [heading=null] The section being lifted.
|
|
382
|
+
* @returns {AppNavItem[]}
|
|
383
|
+
*/
|
|
384
|
+
export declare function liftSections(items: AppNavItem[], sections?: Map<string, string>, heading?: string | null): AppNavItem[];
|
|
385
|
+
/**
|
|
386
|
+
* The top-level module that is, or contains, an id.
|
|
387
|
+
* @param {AppNavItem[]} items Modules.
|
|
388
|
+
* @param {string|number|null|undefined} id Destination id.
|
|
389
|
+
* @returns {AppNavItem|null}
|
|
390
|
+
*/
|
|
391
|
+
export declare function moduleOf(items: AppNavItem[], id: string | number | null | undefined): AppNavItem | null;
|
|
392
|
+
/** Fired when a module without a menu, a menu item, or (with `menus: 'none'`) any module is activated. @event ModuleBar#select @type {CustomEvent<AppNavSelectDetail>} */
|
|
393
|
+
/** Fired when a module's flyout opens or closes. @event ModuleBar#flyoutchange @type {CustomEvent<{item: AppNavItem, id: string|number, open: boolean}>} */
|
|
394
|
+
/** Fired when the modules on the bar change because of space, pins, or the current module. @event ModuleBar#overflowchange @type {CustomEvent<{visible: Array<string|number>, overflow: Array<string|number>}>} */
|
|
395
|
+
/** Fired when the "All modules" catalogue opens or closes. @event ModuleBar#allmodules @type {CustomEvent<{open: boolean}>} */
|
|
@@ -138,9 +138,23 @@ export type PaginationChangeDetail = PaginationState;
|
|
|
138
138
|
/** @typedef {PaginationState} PaginationChangeDetail */
|
|
139
139
|
/**
|
|
140
140
|
* The pager for a server-backed list. It owns no data: it reports which slice the user asked for
|
|
141
|
-
* and
|
|
142
|
-
*
|
|
143
|
-
*
|
|
141
|
+
* — `page`, `pageSize`, and the zero-based row `offset = (page - 1) * pageSize` — and lets the
|
|
142
|
+
* application fetch it.
|
|
143
|
+
*
|
|
144
|
+
* The pager is one-based and defaults to 25 rows per page. The ZeyOS bindings are zero-based,
|
|
145
|
+
* default to 50 rows, and append pages above zero unless told to replace, so connecting the two
|
|
146
|
+
* takes a small mapping rather than a direct hand-off:
|
|
147
|
+
*
|
|
148
|
+
* ```js
|
|
149
|
+
* const binding = zeyosTable(client, 'contacts', { pageSize: 25 });
|
|
150
|
+
* const pager = new Pagination(host, { pageSize: binding.pageSize });
|
|
151
|
+
* pager.on('change', async ({ detail }) => {
|
|
152
|
+
* const result = await binding.load({ page: detail.page - 1, pageSize: detail.pageSize, replace: true });
|
|
153
|
+
* pager.setTotal(result.count ?? 0);
|
|
154
|
+
* });
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* In `loadmore` mode each `change` stands for one `binding.loadMore()`, which appends.
|
|
144
158
|
*
|
|
145
159
|
* `page` is clamped into `[1, pages]` after every state change, so shrinking `total` under the
|
|
146
160
|
* user's feet can never leave the pager pointing past the end of the data.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accepts an item colour for an inline custom property: a CSS colour literal (`#0b7285`, `rgb(…)`,
|
|
3
|
+
* `oklch(…)`, a named colour) or a reference to a design token (`var(--zx-color-tone-blue-fg)`),
|
|
4
|
+
* so an item can follow the theme rather than fix one colour for light and dark alike. Anything
|
|
5
|
+
* else — other functions, declarations, a `var()` with a fallback — is refused.
|
|
6
|
+
*
|
|
7
|
+
* Shared by `Select.entity()` and `TagPicker`, the two components that take a colour per item.
|
|
8
|
+
*
|
|
9
|
+
* @param {unknown} value Candidate colour.
|
|
10
|
+
* @returns {string|null} The trimmed colour, or null when the value is not one.
|
|
11
|
+
*/
|
|
12
|
+
export declare function itemColor(value: unknown): string | null;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
export type StatusIndicator = 'dotted' | 'ring' | 'progress' | 'review' | 'ready' | 'waiting' | 'done' | 'canceled' | 'duplicate';
|
|
2
|
+
export type StatusTone = 'muted' | 'neutral' | 'warning' | 'info' | 'accent' | 'success' | 'danger';
|
|
3
|
+
export type StatusId = 'backlog' | 'todo' | 'in-progress' | 'in-review' | 'review' | 'ready' | 'waiting' | 'done' | 'canceled' | 'cancelled' | 'duplicate';
|
|
4
|
+
export type StatusIconOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* Shape, overriding the status's own.
|
|
7
|
+
*/
|
|
8
|
+
indicator?: StatusIndicator;
|
|
9
|
+
/**
|
|
10
|
+
* Colour, overriding the status's own.
|
|
11
|
+
*/
|
|
12
|
+
tone?: StatusTone;
|
|
13
|
+
/**
|
|
14
|
+
* Accessible name. Without one the glyph is decorative
|
|
15
|
+
* (`aria-hidden`) and must sit beside text, or inside a control with a tooltip, that says the
|
|
16
|
+
* status.
|
|
17
|
+
*/
|
|
18
|
+
label?: string | null;
|
|
19
|
+
};
|
|
20
|
+
export type PriorityIconOptions = {
|
|
21
|
+
/**
|
|
22
|
+
* Accessible name. Without one the glyph is decorative
|
|
23
|
+
* (`aria-hidden`) and must sit beside text, or inside a control with a tooltip, that says the
|
|
24
|
+
* priority.
|
|
25
|
+
*/
|
|
26
|
+
label?: string | null;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The shapes a workflow-status glyph can take. Each status reads by shape first and colour
|
|
30
|
+
* second, so the set stays legible to readers who do not see the colour.
|
|
31
|
+
* @typedef {'dotted'|'ring'|'progress'|'review'|'ready'|'waiting'|'done'|'canceled'|'duplicate'} StatusIndicator
|
|
32
|
+
*/
|
|
33
|
+
/** @typedef {'muted'|'neutral'|'warning'|'info'|'accent'|'success'|'danger'} StatusTone */
|
|
34
|
+
/**
|
|
35
|
+
* The built-in workflow statuses. `review` and `cancelled` are accepted as spellings of
|
|
36
|
+
* `in-review` and `canceled`.
|
|
37
|
+
* @typedef {'backlog'|'todo'|'in-progress'|'in-review'|'review'|'ready'|'waiting'|'done'|'canceled'|'cancelled'|'duplicate'} StatusId
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* @typedef {Object} StatusIconOptions
|
|
41
|
+
* @property {StatusIndicator} [indicator] Shape, overriding the status's own.
|
|
42
|
+
* @property {StatusTone} [tone] Colour, overriding the status's own.
|
|
43
|
+
* @property {string|null} [label=null] Accessible name. Without one the glyph is decorative
|
|
44
|
+
* (`aria-hidden`) and must sit beside text, or inside a control with a tooltip, that says the
|
|
45
|
+
* status.
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* @typedef {Object} PriorityIconOptions
|
|
49
|
+
* @property {string|null} [label=null] Accessible name. Without one the glyph is decorative
|
|
50
|
+
* (`aria-hidden`) and must sit beside text, or inside a control with a tooltip, that says the
|
|
51
|
+
* priority.
|
|
52
|
+
*/
|
|
53
|
+
/** Every shape `statusIcon()` draws. */
|
|
54
|
+
export declare const STATUS_INDICATORS: readonly string[];
|
|
55
|
+
/** Every colour a status glyph takes, from the semantic set. */
|
|
56
|
+
export declare const STATUS_TONES: readonly string[];
|
|
57
|
+
/**
|
|
58
|
+
* The built-in statuses in workflow order, as `[id, message key, English name, indicator, tone]`.
|
|
59
|
+
* `Select.status()` lists them; `statusIcon()` draws them.
|
|
60
|
+
*/
|
|
61
|
+
export declare const DEFAULT_STATUSES: readonly string[][];
|
|
62
|
+
/** The top priority level, the one coloured level: a danger square with an exclamation mark. */
|
|
63
|
+
export declare const PRIORITY_URGENT = 4;
|
|
64
|
+
/**
|
|
65
|
+
* Resolves the shape and colour of a status glyph.
|
|
66
|
+
*
|
|
67
|
+
* A status is a built-in id (or one of its other spellings), or a status item of the kind
|
|
68
|
+
* `Select.status({items})` takes, whose own `indicator` and `tone` win over the built-in status
|
|
69
|
+
* its `ID` names. Options win over both. An unknown shape falls back to the empty ring and an
|
|
70
|
+
* unknown colour to muted, as `Select.status()` does with a custom item.
|
|
71
|
+
* @param {StatusId|string|{ID?: unknown, id?: unknown, indicator?: unknown, tone?: unknown}|null|undefined} status
|
|
72
|
+
* @param {StatusIconOptions} [options={}] Overrides.
|
|
73
|
+
* @returns {{indicator: StatusIndicator, tone: StatusTone}}
|
|
74
|
+
*/
|
|
75
|
+
export declare function resolveStatusGlyph(status: StatusId | string | {
|
|
76
|
+
ID?: unknown;
|
|
77
|
+
id?: unknown;
|
|
78
|
+
indicator?: unknown;
|
|
79
|
+
tone?: unknown;
|
|
80
|
+
} | null | undefined, options?: StatusIconOptions): {
|
|
81
|
+
indicator: StatusIndicator;
|
|
82
|
+
tone: StatusTone;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Maps a status id to its built-in spelling: trimmed, lower-cased, and `review` / `cancelled`
|
|
86
|
+
* read as `in-review` / `canceled`.
|
|
87
|
+
* @param {unknown} id Status id.
|
|
88
|
+
* @returns {string}
|
|
89
|
+
*/
|
|
90
|
+
export declare function normalizeStatusId(id: unknown): string;
|
|
91
|
+
/**
|
|
92
|
+
* Settles a priority level: an integer from 0 (lowest) to 4 (highest), or `null` for no priority.
|
|
93
|
+
* Out-of-range numbers clamp; anything that is not a number reads as 0.
|
|
94
|
+
* @param {unknown} level Priority level.
|
|
95
|
+
* @returns {number|null}
|
|
96
|
+
*/
|
|
97
|
+
export declare function normalizePriorityLevel(level: unknown): number | null;
|
|
98
|
+
/**
|
|
99
|
+
* Draws the workflow-status glyph `Select.status()` shows, for a list row, a board column, a
|
|
100
|
+
* filter chip, or a heading — so every place a status appears reads as the picker that changes it.
|
|
101
|
+
*
|
|
102
|
+
* Built-in statuses: `backlog` (dotted ring), `todo` (empty ring), `in-progress` (ring with a
|
|
103
|
+
* centre dot), `in-review` (half filled; also `review`), `ready` (a third filled), `waiting` (two
|
|
104
|
+
* thirds filled), `done` (filled, with a check), `canceled` (filled, with a cross; also
|
|
105
|
+
* `cancelled`), and `duplicate` (ring with a slash). Colour only repeats what the shape says.
|
|
106
|
+
* @param {StatusId|string|{ID?: unknown, indicator?: unknown, tone?: unknown}} status Built-in id,
|
|
107
|
+
* or a status item with its own `indicator` and `tone`.
|
|
108
|
+
* @param {StatusIconOptions} [options={}] Shape, colour, and accessible-name overrides.
|
|
109
|
+
* @returns {HTMLSpanElement} A `.zx-status-icon` element, decorative unless `label` is given.
|
|
110
|
+
*/
|
|
111
|
+
export declare function statusIcon(status: StatusId | string | {
|
|
112
|
+
ID?: unknown;
|
|
113
|
+
indicator?: unknown;
|
|
114
|
+
tone?: unknown;
|
|
115
|
+
}, options?: StatusIconOptions): HTMLSpanElement;
|
|
116
|
+
/**
|
|
117
|
+
* Draws the priority glyph `Select.priority()` shows. Levels 0–3 are four signal bars in muted
|
|
118
|
+
* ink, filled up to the level; level 4, the highest, is a filled danger square whose "!" the
|
|
119
|
+
* stylesheet draws, so it never joins the text beside it; no priority (`null`) is a row of dashes.
|
|
120
|
+
* @param {number|null} level Priority level, 0 (lowest) to 4 (highest), or `null` for none.
|
|
121
|
+
* @param {PriorityIconOptions} [options={}] Accessible-name option.
|
|
122
|
+
* @returns {HTMLSpanElement} A `.zx-priority-icon` element, decorative unless `label` is given.
|
|
123
|
+
*/
|
|
124
|
+
export declare function priorityIcon(level: number | null, options?: PriorityIconOptions): HTMLSpanElement;
|
|
@@ -147,7 +147,9 @@ export type EntitySelectOptions = {
|
|
|
147
147
|
*/
|
|
148
148
|
iconKey?: string | ((item: SelectItem) => unknown);
|
|
149
149
|
/**
|
|
150
|
-
* Optional icon colour reader
|
|
150
|
+
* Optional icon colour reader: a CSS
|
|
151
|
+
* colour or a token reference such as `var(--zx-color-tone-blue-fg)`. Without one the glyph is a
|
|
152
|
+
* neutral tile in muted ink.
|
|
151
153
|
*/
|
|
152
154
|
colorKey?: string | ((item: SelectItem) => unknown);
|
|
153
155
|
/**
|
|
@@ -214,6 +216,7 @@ export declare class Select extends Component<SelectOptions> {
|
|
|
214
216
|
_createdRoot: boolean;
|
|
215
217
|
_root: HTMLElement;
|
|
216
218
|
_snapshot: import("../../core/dom.js").TargetSnapshot;
|
|
219
|
+
_pointerModality: boolean;
|
|
217
220
|
_handleTypeahead: (event: KeyboardEvent | string) => void;
|
|
218
221
|
static cssName: string;
|
|
219
222
|
/** @type {SelectOptions} */
|
|
@@ -224,6 +227,12 @@ export declare class Select extends Component<SelectOptions> {
|
|
|
224
227
|
get value(): unknown;
|
|
225
228
|
/** @param {unknown} id Selected item ID. */
|
|
226
229
|
set value(id: unknown);
|
|
230
|
+
/**
|
|
231
|
+
* Returns the selected item ID, or null: the same as reading `value`, under the `get()`/`set()`
|
|
232
|
+
* pair the other value components share.
|
|
233
|
+
* @returns {unknown}
|
|
234
|
+
*/
|
|
235
|
+
get(): unknown;
|
|
227
236
|
/** Selected item, or null. @returns {SelectItem|null} */
|
|
228
237
|
get selected(): SelectItem | null;
|
|
229
238
|
/**
|
|
@@ -267,9 +276,14 @@ export declare class Select extends Component<SelectOptions> {
|
|
|
267
276
|
/** Moves focus to the combobox input. @returns {this} */
|
|
268
277
|
focus(): this;
|
|
269
278
|
/**
|
|
270
|
-
* Creates the five-level priority preset
|
|
279
|
+
* Creates the five-level priority preset: values 0 (lowest) to 4 (highest), each drawn as grey
|
|
280
|
+
* signal bars filled to its level, except the highest, which is the one coloured level — a
|
|
281
|
+
* danger square with an exclamation mark. A "No priority" row (value null, a row of dashes)
|
|
282
|
+
* heads the list and labels the empty control; `clearable: false` removes it.
|
|
271
283
|
* @param {Element|string|null} target Component target.
|
|
272
|
-
* @param {SelectOptions} [options={}] Select overrides other than
|
|
284
|
+
* @param {SelectOptions} [options={}] Select overrides other than items and renderers.
|
|
285
|
+
* `clearable` defaults to true here; `noneLabel` and `placeholder` default to the
|
|
286
|
+
* `priority.none` message ("No priority").
|
|
273
287
|
* @returns {Select}
|
|
274
288
|
*/
|
|
275
289
|
static priority(target: Element | string | null, options?: SelectOptions): Select;
|
|
@@ -172,6 +172,8 @@ export type SheetOptions = {
|
|
|
172
172
|
export declare class Sheet extends Dialog {
|
|
173
173
|
#private;
|
|
174
174
|
_dock: any;
|
|
175
|
+
/** @type {Element|null} The element focus was on when the current `open()` began. */
|
|
176
|
+
_openedFrom: Element | null;
|
|
175
177
|
static cssName: string;
|
|
176
178
|
/** @type {Readonly<SheetOptions>} */
|
|
177
179
|
static defaults: Readonly<SheetOptions>;
|
|
@@ -229,6 +231,19 @@ export declare class Sheet extends Dialog {
|
|
|
229
231
|
* @returns {void}
|
|
230
232
|
*/
|
|
231
233
|
_rehost(): void;
|
|
234
|
+
/**
|
|
235
|
+
* Describes the presentation for the overlay stack. A docked sheet is part of the layout and
|
|
236
|
+
* stays off it.
|
|
237
|
+
*
|
|
238
|
+
* Escape and outside-click are free for a modal dialog and absent for a non-modal one — the
|
|
239
|
+
* browser only wires `cancel` for `showModal()`, and there is no `::backdrop` to click — so a
|
|
240
|
+
* floating non-modal sheet takes both from the stack. That is what makes it aware of what it
|
|
241
|
+
* opened: Escape reaches it only once no popup above it takes the key, and a press inside a menu
|
|
242
|
+
* anchored in the sheet counts as inside the sheet, wherever the menu's panel lives.
|
|
243
|
+
* @returns {import('../../core/overlay-stack.js').OverlayEntryOptions|null}
|
|
244
|
+
* @protected
|
|
245
|
+
*/
|
|
246
|
+
protected _overlayEntry(): import('../../core/overlay-stack.js').OverlayEntryOptions | null;
|
|
232
247
|
/**
|
|
233
248
|
* Opens the sheet, trapping focus first where the modality asks for it.
|
|
234
249
|
* @returns {this}
|