domma-js 0.56.0 → 0.58.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/README.md +2 -2
- package/assets/types/generated/public/assets/flags/africa.d.ts +6 -0
- package/assets/types/generated/public/assets/flags/americas.d.ts +6 -0
- package/assets/types/generated/public/assets/flags/asia.d.ts +6 -0
- package/assets/types/generated/public/assets/flags/europe.d.ts +9 -0
- package/assets/types/generated/public/assets/flags/index.d.ts +11 -0
- package/assets/types/generated/public/assets/flags/oceania.d.ts +2 -0
- package/assets/types/generated/public/assets/icons/buildings.d.ts +6 -0
- package/assets/types/generated/public/assets/icons/code.d.ts +2 -0
- package/assets/types/generated/public/assets/icons/commerce.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/communication.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/devices.d.ts +6 -0
- package/assets/types/generated/public/assets/icons/emojis.d.ts +6 -0
- package/assets/types/generated/public/assets/icons/files.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/finance.d.ts +6 -0
- package/assets/types/generated/public/assets/icons/forms.d.ts +5 -0
- package/assets/types/generated/public/assets/icons/health.d.ts +6 -0
- package/assets/types/generated/public/assets/icons/index.d.ts +24 -0
- package/assets/types/generated/public/assets/icons/media.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/navigation.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/seasonal.d.ts +6 -0
- package/assets/types/generated/public/assets/icons/social.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/sport.d.ts +6 -0
- package/assets/types/generated/public/assets/icons/status.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/transport.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/ui.d.ts +7 -0
- package/assets/types/generated/public/assets/icons/weather.d.ts +6 -0
- package/assets/types/generated/src/auth.d.ts +424 -0
- package/assets/types/generated/src/avatar.d.ts +270 -0
- package/assets/types/generated/src/binding-source.d.ts +58 -0
- package/assets/types/generated/src/butterfly-drawing.d.ts +2 -0
- package/assets/types/generated/src/component-factory.d.ts +150 -0
- package/assets/types/generated/src/component.d.ts +162 -0
- package/assets/types/generated/src/components/back-to-top.d.ts +150 -0
- package/assets/types/generated/src/components/badge.d.ts +208 -0
- package/assets/types/generated/src/components/card.d.ts +189 -0
- package/assets/types/generated/src/components/command-palette.d.ts +352 -0
- package/assets/types/generated/src/components/dropzone.d.ts +342 -0
- package/assets/types/generated/src/components/focus-trap.d.ts +238 -0
- package/assets/types/generated/src/components/loader.d.ts +133 -0
- package/assets/types/generated/src/components/modal.d.ts +339 -0
- package/assets/types/generated/src/components/range-slider.d.ts +267 -0
- package/assets/types/generated/src/components/shared.d.ts +91 -0
- package/assets/types/generated/src/components/split-pane.d.ts +239 -0
- package/assets/types/generated/src/components/toast.d.ts +284 -0
- package/assets/types/generated/src/components/tooltip.d.ts +200 -0
- package/assets/types/generated/src/components/virtual-list.d.ts +340 -0
- package/assets/types/generated/src/config.d.ts +193 -0
- package/assets/types/generated/src/context-cursor.d.ts +69 -0
- package/assets/types/generated/src/context-menu.d.ts +596 -0
- package/assets/types/generated/src/dates.d.ts +367 -0
- package/assets/types/generated/src/dom.d.ts +1221 -0
- package/assets/types/generated/src/effects.d.ts +1281 -0
- package/assets/types/generated/src/elements.d.ts +4994 -0
- package/assets/types/generated/src/escape.d.ts +5 -0
- package/assets/types/generated/src/flags-bundle.d.ts +4 -0
- package/assets/types/generated/src/flags.d.ts +338 -0
- package/assets/types/generated/src/forms.d.ts +1060 -0
- package/assets/types/generated/src/globals.d.ts +45 -0
- package/assets/types/generated/src/http.d.ts +131 -0
- package/assets/types/generated/src/i18n.d.ts +261 -0
- package/assets/types/generated/src/icons.d.ts +213 -0
- package/assets/types/generated/src/index.d.ts +249 -0
- package/assets/types/generated/src/input-group.d.ts +135 -0
- package/assets/types/generated/src/models.d.ts +968 -0
- package/assets/types/generated/src/popover.d.ts +413 -0
- package/assets/types/generated/src/router.d.ts +344 -0
- package/assets/types/generated/src/safe-url.d.ts +10 -0
- package/assets/types/generated/src/sanitize.d.ts +97 -0
- package/assets/types/generated/src/schema-builder.d.ts +420 -0
- package/assets/types/generated/src/skeleton.d.ts +135 -0
- package/assets/types/generated/src/smooth-caret.d.ts +61 -0
- package/assets/types/generated/src/sortable.d.ts +368 -0
- package/assets/types/generated/src/storage.d.ts +93 -0
- package/assets/types/generated/src/tables.d.ts +901 -0
- package/assets/types/generated/src/theme.d.ts +262 -0
- package/assets/types/generated/src/ticker-tape-drawing.d.ts +2 -0
- package/assets/types/generated/src/treeview.d.ts +504 -0
- package/assets/types/generated/src/utils.d.ts +1667 -0
- package/assets/types/generated/src/web-components/base/domma-element.d.ts +134 -0
- package/assets/types/generated/src/web-components/index.d.ts +14 -0
- package/assets/types/generated/vendor/domma-reactive.d.ts +587 -0
- package/assets/types/index.d.ts +104 -226
- package/package.json +5 -2
- package/public/dist/bundles/domma-complete.css +20 -14
- package/public/dist/bundles/domma-data-focused.css +20 -14
- package/public/dist/bundles/domma-essentials.css +20 -14
- package/public/dist/bundles/domma-full.css +20 -14
- package/public/dist/bundles/domma-minimal.css +8 -8
- package/public/dist/domma-flags.esm.js +3 -3
- package/public/dist/domma-flags.esm.js.map +1 -1
- package/public/dist/domma-flags.min.js +3 -3
- package/public/dist/domma-flags.min.js.map +1 -1
- package/public/dist/domma-syntax.min.js +3 -3
- package/public/dist/domma.css +3 -3
- package/public/dist/domma.esm.js +5 -5
- package/public/dist/domma.esm.js.map +1 -1
- package/public/dist/domma.min.js +5 -5
- package/public/dist/domma.min.js.map +1 -1
- package/public/dist/elements.css +9 -3
- package/public/dist/grid.css +3 -3
- package/public/dist/syntax.css +3 -3
- package/public/dist/themes/domma-themes.css +3 -3
- package/templates/kickstart/.claude/snippets.md +1 -1
- package/templates/kickstart/CLAUDE.md +1 -1
- package/templates/kickstart/frontend/types/domma.d.ts +7 -4
- package/templates/kickstart-spa/.claude/snippets.md +1 -1
- package/assets/types/config.d.ts +0 -136
- package/assets/types/dates.d.ts +0 -209
- package/assets/types/dom.d.ts +0 -448
- package/assets/types/elements.d.ts +0 -1168
- package/assets/types/flags.d.ts +0 -130
- package/assets/types/http.d.ts +0 -97
- package/assets/types/i18n.d.ts +0 -99
- package/assets/types/icons.d.ts +0 -147
- package/assets/types/models.d.ts +0 -260
- package/assets/types/smooth-caret.d.ts +0 -12
- package/assets/types/storage.d.ts +0 -93
- package/assets/types/tables.d.ts +0 -327
- package/assets/types/theme.d.ts +0 -137
- package/assets/types/utils.d.ts +0 -675
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E.splitPane: one instance per container; calling it again updates the existing one.
|
|
3
|
+
* @param {Element} el
|
|
4
|
+
* @param {SplitPaneOptions} [options]
|
|
5
|
+
* @returns {SplitPane}
|
|
6
|
+
*/
|
|
7
|
+
export function splitPaneFor(el: Element, options?: SplitPaneOptions): SplitPane;
|
|
8
|
+
/**
|
|
9
|
+
* A pane size limit: px as a number, or a percentage string such as '20%'.
|
|
10
|
+
* @typedef {number|string} SplitPaneSize
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {object} SplitPaneOptions
|
|
14
|
+
* @property {'horizontal'|'vertical'} [direction] - 'horizontal' = side by side (default), 'vertical' = stacked
|
|
15
|
+
* @property {number[]|null} [sizes] - Percentages, one per pane (scaled to add up to 100); equal by default
|
|
16
|
+
* @property {SplitPaneSize|SplitPaneSize[]} [minSize] - Minimum size, one value or one per pane (default 0)
|
|
17
|
+
* @property {SplitPaneSize|null|Array<SplitPaneSize|null>} [maxSize] - Maximum size, one value or one per pane (default none)
|
|
18
|
+
* @property {number} [gutterSize] - Gutter thickness in px (default 8)
|
|
19
|
+
* @property {number} [snapOffset] - Snap to a limit when dragged within this many px of it (default 0)
|
|
20
|
+
* @property {boolean|boolean[]} [collapsible] - Which panes the gutter gestures may collapse
|
|
21
|
+
* @property {SplitPaneSize|SplitPaneSize[]} [collapsedSize] - What a collapsed pane shrinks to (default 0)
|
|
22
|
+
* @property {boolean} [collapseButton] - A small toggle button in gutters next to a collapsible pane
|
|
23
|
+
* @property {string|null} [persistKey] - Remember sizes and collapse state with S under 'split-pane:<key>'
|
|
24
|
+
* @property {string|null} [cursor] - Gutter cursor (default col-resize / row-resize)
|
|
25
|
+
* @property {boolean} [disabled]
|
|
26
|
+
* @property {number} [step] - Percent per arrow key (default 1)
|
|
27
|
+
* @property {number} [largeStep] - Percent per Shift+arrow (default 10)
|
|
28
|
+
* @property {string} [gutterLabel] - The gutters' aria-label
|
|
29
|
+
* @property {((gutterIndex: number, event: PointerEvent) => boolean|void)|null} [onBeforeDrag] - Return false to refuse a drag
|
|
30
|
+
* @property {((sizes: number[], gutterIndex: number) => void)|null} [onDragStart]
|
|
31
|
+
* @property {((sizes: number[], gutterIndex: number) => void)|null} [onDrag]
|
|
32
|
+
* @property {((sizes: number[], gutterIndex: number) => void)|null} [onDragEnd]
|
|
33
|
+
* @property {((sizes: number[]) => void)|null} [onResize] - Any size change: drag, keys, setSizes, collapse
|
|
34
|
+
* @property {((paneIndex: number) => void)|null} [onCollapse]
|
|
35
|
+
* @property {((paneIndex: number) => void)|null} [onExpand]
|
|
36
|
+
*/
|
|
37
|
+
/** @typedef {SplitPane} SplitPaneInstance */
|
|
38
|
+
export class SplitPane extends Component {
|
|
39
|
+
static defaults: {
|
|
40
|
+
direction: string;
|
|
41
|
+
sizes: any;
|
|
42
|
+
minSize: number;
|
|
43
|
+
maxSize: any;
|
|
44
|
+
gutterSize: number;
|
|
45
|
+
snapOffset: number;
|
|
46
|
+
collapsible: boolean;
|
|
47
|
+
collapsedSize: number;
|
|
48
|
+
collapseButton: boolean;
|
|
49
|
+
persistKey: any;
|
|
50
|
+
cursor: any;
|
|
51
|
+
disabled: boolean;
|
|
52
|
+
step: number;
|
|
53
|
+
largeStep: number;
|
|
54
|
+
gutterLabel: string;
|
|
55
|
+
onBeforeDrag: any;
|
|
56
|
+
onDragStart: any;
|
|
57
|
+
onDrag: any;
|
|
58
|
+
onDragEnd: any;
|
|
59
|
+
onResize: any;
|
|
60
|
+
onCollapse: any;
|
|
61
|
+
onExpand: any;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* @param {string|HTMLElement} element - The container; its element children are the panes
|
|
65
|
+
* @param {SplitPaneOptions} [options]
|
|
66
|
+
*/
|
|
67
|
+
constructor(element: string | HTMLElement, options?: SplitPaneOptions);
|
|
68
|
+
_gutters: any[];
|
|
69
|
+
_drag: {
|
|
70
|
+
index: any;
|
|
71
|
+
pointerId: any;
|
|
72
|
+
start: any;
|
|
73
|
+
startSize: any;
|
|
74
|
+
available: number;
|
|
75
|
+
sign: number;
|
|
76
|
+
gutter: any;
|
|
77
|
+
};
|
|
78
|
+
_collapsed: any[];
|
|
79
|
+
_restoreTo: any[];
|
|
80
|
+
_addedIds: any[];
|
|
81
|
+
_frame: number;
|
|
82
|
+
_containerStyle: string;
|
|
83
|
+
/** The pane elements. @type {HTMLElement[]} */
|
|
84
|
+
panes: HTMLElement[];
|
|
85
|
+
_paneStyles: string[];
|
|
86
|
+
get horizontal(): boolean;
|
|
87
|
+
_build(): void;
|
|
88
|
+
_sizes: any;
|
|
89
|
+
_observer: ResizeObserver;
|
|
90
|
+
_makeGutter(i: any): HTMLDivElement;
|
|
91
|
+
/** Settings that can change after set-up: disabled, gutter size, cursor, label, buttons. */
|
|
92
|
+
_applyOptions(): void;
|
|
93
|
+
_syncButton(gutter: any, i: any): void;
|
|
94
|
+
/** Sizes as percentages that add up to 100, one per pane. */
|
|
95
|
+
_normalise(sizes: any): any[];
|
|
96
|
+
/** Space shared by the panes: the container less its gutters, in px. */
|
|
97
|
+
_available(): number;
|
|
98
|
+
/** A px number or '%' string as a percentage of the shared space. */
|
|
99
|
+
_toPercent(value: any, available: any, fallback: any): any;
|
|
100
|
+
_limits(i: any, available?: number): {
|
|
101
|
+
min: any;
|
|
102
|
+
max: number;
|
|
103
|
+
};
|
|
104
|
+
/** Pull every pane inside its limits, moving the difference to its neighbours. */
|
|
105
|
+
_clampAll(sizes: any): any;
|
|
106
|
+
/** Pane indexes ordered by distance from i, nearest first. */
|
|
107
|
+
_neighbours(i: any): any[];
|
|
108
|
+
_apply(sizes: any): void;
|
|
109
|
+
_syncAria(): void;
|
|
110
|
+
/**
|
|
111
|
+
* Move the boundary between pane i and pane i + 1 so pane i is `want` percent,
|
|
112
|
+
* within both panes' limits.
|
|
113
|
+
*/
|
|
114
|
+
_moveBoundary(i: any, want: any, { snap }?: {
|
|
115
|
+
snap?: boolean;
|
|
116
|
+
}): boolean;
|
|
117
|
+
_onPointerDown(e: any, i: any): void;
|
|
118
|
+
_onPointerMove: (e: any) => void;
|
|
119
|
+
_onPointerUp: (e: any) => void;
|
|
120
|
+
/** Dragging either side of a collapsed pane opens it from its collapsed size. */
|
|
121
|
+
_uncollapseForDrag(i: any): void;
|
|
122
|
+
_onKey(e: any, i: any): void;
|
|
123
|
+
_isCollapsible(i: any): boolean;
|
|
124
|
+
/** The pane a gutter collapses: the one before it if it may, else the one after. */
|
|
125
|
+
_collapseTarget(gutter: any): any;
|
|
126
|
+
_toggleFromGutter(i: any): void;
|
|
127
|
+
/**
|
|
128
|
+
* Collapse a pane toward the edge it sits against; the space goes to its neighbour.
|
|
129
|
+
* Works on any pane, collapsible or not (the option only governs the gutter's gestures).
|
|
130
|
+
* @param {number} i - pane index
|
|
131
|
+
* @returns {this}
|
|
132
|
+
*/
|
|
133
|
+
collapse(i: number): this;
|
|
134
|
+
/**
|
|
135
|
+
* Restore a collapsed pane to the size it had, taking the space back from its neighbour.
|
|
136
|
+
* @param {number} i - pane index
|
|
137
|
+
* @returns {this}
|
|
138
|
+
*/
|
|
139
|
+
expand(i: number): this;
|
|
140
|
+
/** @param {number} i @returns {boolean} whether pane i is collapsed */
|
|
141
|
+
isCollapsed(i: number): boolean;
|
|
142
|
+
/**
|
|
143
|
+
* The pane sizes, as percentages of the space the panes share (they add up to 100).
|
|
144
|
+
* @returns {number[]}
|
|
145
|
+
*/
|
|
146
|
+
getSizes(): number[];
|
|
147
|
+
/**
|
|
148
|
+
* Set every pane's size. The array is scaled to add up to 100 and then pulled inside
|
|
149
|
+
* each pane's limits. Collapsed panes are expanded.
|
|
150
|
+
* @param {number[]} sizes - one per pane
|
|
151
|
+
* @returns {this}
|
|
152
|
+
*/
|
|
153
|
+
setSizes(sizes: number[]): this;
|
|
154
|
+
_load(): {
|
|
155
|
+
sizes: any[];
|
|
156
|
+
collapsed: any;
|
|
157
|
+
restoreTo: any;
|
|
158
|
+
};
|
|
159
|
+
_save(): void;
|
|
160
|
+
}
|
|
161
|
+
export default SplitPane;
|
|
162
|
+
/**
|
|
163
|
+
* A pane size limit: px as a number, or a percentage string such as '20%'.
|
|
164
|
+
*/
|
|
165
|
+
export type SplitPaneSize = number | string;
|
|
166
|
+
export type SplitPaneOptions = {
|
|
167
|
+
/**
|
|
168
|
+
* - 'horizontal' = side by side (default), 'vertical' = stacked
|
|
169
|
+
*/
|
|
170
|
+
direction?: "horizontal" | "vertical";
|
|
171
|
+
/**
|
|
172
|
+
* - Percentages, one per pane (scaled to add up to 100); equal by default
|
|
173
|
+
*/
|
|
174
|
+
sizes?: number[] | null;
|
|
175
|
+
/**
|
|
176
|
+
* - Minimum size, one value or one per pane (default 0)
|
|
177
|
+
*/
|
|
178
|
+
minSize?: SplitPaneSize | SplitPaneSize[];
|
|
179
|
+
/**
|
|
180
|
+
* - Maximum size, one value or one per pane (default none)
|
|
181
|
+
*/
|
|
182
|
+
maxSize?: SplitPaneSize | null | Array<SplitPaneSize | null>;
|
|
183
|
+
/**
|
|
184
|
+
* - Gutter thickness in px (default 8)
|
|
185
|
+
*/
|
|
186
|
+
gutterSize?: number;
|
|
187
|
+
/**
|
|
188
|
+
* - Snap to a limit when dragged within this many px of it (default 0)
|
|
189
|
+
*/
|
|
190
|
+
snapOffset?: number;
|
|
191
|
+
/**
|
|
192
|
+
* - Which panes the gutter gestures may collapse
|
|
193
|
+
*/
|
|
194
|
+
collapsible?: boolean | boolean[];
|
|
195
|
+
/**
|
|
196
|
+
* - What a collapsed pane shrinks to (default 0)
|
|
197
|
+
*/
|
|
198
|
+
collapsedSize?: SplitPaneSize | SplitPaneSize[];
|
|
199
|
+
/**
|
|
200
|
+
* - A small toggle button in gutters next to a collapsible pane
|
|
201
|
+
*/
|
|
202
|
+
collapseButton?: boolean;
|
|
203
|
+
/**
|
|
204
|
+
* - Remember sizes and collapse state with S under 'split-pane:<key>'
|
|
205
|
+
*/
|
|
206
|
+
persistKey?: string | null;
|
|
207
|
+
/**
|
|
208
|
+
* - Gutter cursor (default col-resize / row-resize)
|
|
209
|
+
*/
|
|
210
|
+
cursor?: string | null;
|
|
211
|
+
disabled?: boolean;
|
|
212
|
+
/**
|
|
213
|
+
* - Percent per arrow key (default 1)
|
|
214
|
+
*/
|
|
215
|
+
step?: number;
|
|
216
|
+
/**
|
|
217
|
+
* - Percent per Shift+arrow (default 10)
|
|
218
|
+
*/
|
|
219
|
+
largeStep?: number;
|
|
220
|
+
/**
|
|
221
|
+
* - The gutters' aria-label
|
|
222
|
+
*/
|
|
223
|
+
gutterLabel?: string;
|
|
224
|
+
/**
|
|
225
|
+
* - Return false to refuse a drag
|
|
226
|
+
*/
|
|
227
|
+
onBeforeDrag?: ((gutterIndex: number, event: PointerEvent) => boolean | void) | null;
|
|
228
|
+
onDragStart?: ((sizes: number[], gutterIndex: number) => void) | null;
|
|
229
|
+
onDrag?: ((sizes: number[], gutterIndex: number) => void) | null;
|
|
230
|
+
onDragEnd?: ((sizes: number[], gutterIndex: number) => void) | null;
|
|
231
|
+
/**
|
|
232
|
+
* - Any size change: drag, keys, setSizes, collapse
|
|
233
|
+
*/
|
|
234
|
+
onResize?: ((sizes: number[]) => void) | null;
|
|
235
|
+
onCollapse?: ((paneIndex: number) => void) | null;
|
|
236
|
+
onExpand?: ((paneIndex: number) => void) | null;
|
|
237
|
+
};
|
|
238
|
+
export type SplitPaneInstance = SplitPane;
|
|
239
|
+
import Component from '../component.js';
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Show a toast.
|
|
3
|
+
* @param {string|Node|ToastOptions} message - the text (or `{message, ...options}`)
|
|
4
|
+
* @param {ToastOptions} [options]
|
|
5
|
+
* @returns {Toast}
|
|
6
|
+
*/
|
|
7
|
+
export function showToast(message: string | Node | ToastOptions, options?: ToastOptions): Toast;
|
|
8
|
+
/**
|
|
9
|
+
* An action button in a toast.
|
|
10
|
+
* @typedef {object} ToastAction
|
|
11
|
+
* @property {string} [label='OK'] - Button label (`text` is accepted too)
|
|
12
|
+
* @property {string} [text] - Alias of `label`
|
|
13
|
+
* @property {(event: MouseEvent, toast: ToastInstance) => void} [onClick] - Click handler
|
|
14
|
+
* @property {boolean} [closeOnClick=true] - Close toast on click
|
|
15
|
+
* @property {boolean} [primary] - Primary style
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* @typedef {object} ToastOptions
|
|
19
|
+
* @property {string|Node} [message] - The message (text unless `html: true`)
|
|
20
|
+
* @property {string} [title] - Toast title
|
|
21
|
+
* @property {import('../elements.js').ToastType} [type='default'] - Toast type
|
|
22
|
+
* @property {import('../elements.js').ToastPosition} [position='top-right'] - Toast position
|
|
23
|
+
* @property {number} [duration=3000] - Auto-dismiss duration in ms (0 = no auto-dismiss)
|
|
24
|
+
* @property {boolean} [pauseOnHover=true] - Pause countdown on hover
|
|
25
|
+
* @property {boolean} [showProgress=true] - Show progress bar
|
|
26
|
+
* @property {'slide'|'fade'|(string & {})} [animation='slide'] - Animation style
|
|
27
|
+
* @property {number} [animationDuration=300] - Animation duration in ms
|
|
28
|
+
* @property {boolean} [closable=true] - Show close button
|
|
29
|
+
* @property {boolean} [html=false] - The message is HTML (sanitised unless `safe: false`)
|
|
30
|
+
* @property {boolean} [safe=true] - Sanitise HTML message / icon
|
|
31
|
+
* @property {string|Node|null} [icon] - Icon name (data-icon), HTML string or Node; the typed helpers default to the type's icon
|
|
32
|
+
* @property {ToastAction[]} [actions] - Action buttons
|
|
33
|
+
* @property {ToastAction} [action] - One action button (used when `actions` is empty)
|
|
34
|
+
* @property {number} [maxToasts=5] - Maximum number of toasts on screen; the oldest closes
|
|
35
|
+
* @property {string} [className] - Extra classes on the toast
|
|
36
|
+
* @property {((toast: ToastInstance) => void)|null} [onShow] - When the toast shows
|
|
37
|
+
* @property {((toast: ToastInstance) => void)|null} [onClose] - After the exit animation, just before removal
|
|
38
|
+
* @property {((toast: ToastInstance) => void)|null} [onPause] - The countdown paused (hover)
|
|
39
|
+
* @property {((toast: ToastInstance) => void)|null} [onResume] - The countdown resumed
|
|
40
|
+
* @property {((detail: {action: ToastAction, index: number}, toast: ToastInstance) => void)|null} [onAction] - An action button was clicked
|
|
41
|
+
*/
|
|
42
|
+
/** @typedef {Toast} ToastInstance */
|
|
43
|
+
/**
|
|
44
|
+
* E.toast: show a toast, with typed helpers.
|
|
45
|
+
* @typedef {((message: string|Node|ToastOptions, options?: ToastOptions) => ToastInstance) & {
|
|
46
|
+
* show(message: string|Node|ToastOptions, options?: ToastOptions): ToastInstance,
|
|
47
|
+
* success(message: string|Node, options?: ToastOptions): ToastInstance,
|
|
48
|
+
* error(message: string|Node, options?: ToastOptions): ToastInstance,
|
|
49
|
+
* warning(message: string|Node, options?: ToastOptions): ToastInstance,
|
|
50
|
+
* info(message: string|Node, options?: ToastOptions): ToastInstance,
|
|
51
|
+
* closeAll(): void
|
|
52
|
+
* }} ToastStatic
|
|
53
|
+
*/
|
|
54
|
+
export class Toast extends Component {
|
|
55
|
+
static defaults: {
|
|
56
|
+
message: string;
|
|
57
|
+
title: string;
|
|
58
|
+
type: string;
|
|
59
|
+
position: string;
|
|
60
|
+
duration: number;
|
|
61
|
+
pauseOnHover: boolean;
|
|
62
|
+
showProgress: boolean;
|
|
63
|
+
animation: string;
|
|
64
|
+
animationDuration: number;
|
|
65
|
+
closable: boolean;
|
|
66
|
+
html: boolean;
|
|
67
|
+
safe: boolean;
|
|
68
|
+
icon: string;
|
|
69
|
+
actions: any[];
|
|
70
|
+
maxToasts: number;
|
|
71
|
+
className: string;
|
|
72
|
+
onShow: any;
|
|
73
|
+
onClose: any;
|
|
74
|
+
onPause: any;
|
|
75
|
+
onResume: any;
|
|
76
|
+
onAction: any;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* @param {string|Node} [message]
|
|
80
|
+
* @param {ToastOptions} [options]
|
|
81
|
+
*/
|
|
82
|
+
constructor(message?: string | Node, options?: ToastOptions);
|
|
83
|
+
_visible: boolean;
|
|
84
|
+
_timer: number;
|
|
85
|
+
_remaining: number;
|
|
86
|
+
_started: number;
|
|
87
|
+
_paused: boolean;
|
|
88
|
+
_render(): void;
|
|
89
|
+
_titleEl: HTMLDivElement;
|
|
90
|
+
_messageEl: HTMLDivElement;
|
|
91
|
+
_actionsEl: HTMLDivElement;
|
|
92
|
+
_bar: HTMLDivElement;
|
|
93
|
+
_writeMessage(): void;
|
|
94
|
+
_renderActions(): void;
|
|
95
|
+
_bind(): void;
|
|
96
|
+
_startTimer(): void;
|
|
97
|
+
_pause(): void;
|
|
98
|
+
_resume(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Put the toast on screen (E.toast() does this).
|
|
101
|
+
* @returns {this}
|
|
102
|
+
*/
|
|
103
|
+
open(): this;
|
|
104
|
+
/**
|
|
105
|
+
* Close the toast (removed after the exit animation).
|
|
106
|
+
* @returns {this}
|
|
107
|
+
*/
|
|
108
|
+
close(): this;
|
|
109
|
+
/**
|
|
110
|
+
* Permanent alias of open(), by name.
|
|
111
|
+
* @returns {this}
|
|
112
|
+
*/
|
|
113
|
+
show(...args: any[]): this;
|
|
114
|
+
/**
|
|
115
|
+
* Permanent alias of close(), by name.
|
|
116
|
+
* @returns {this}
|
|
117
|
+
*/
|
|
118
|
+
hide(...args: any[]): this;
|
|
119
|
+
/** @returns {this} */
|
|
120
|
+
toggle(): this;
|
|
121
|
+
/** @returns {boolean} */
|
|
122
|
+
isVisible(): boolean;
|
|
123
|
+
/** @returns {boolean} */
|
|
124
|
+
isOpen(): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Update the message.
|
|
127
|
+
* @param {string|Node} message
|
|
128
|
+
* @returns {this}
|
|
129
|
+
*/
|
|
130
|
+
setMessage(message: string | Node): this;
|
|
131
|
+
/**
|
|
132
|
+
* @param {string} title - Empty hides the title
|
|
133
|
+
* @returns {this}
|
|
134
|
+
*/
|
|
135
|
+
setTitle(title: string): this;
|
|
136
|
+
/**
|
|
137
|
+
* @param {import('../elements.js').ToastType} type
|
|
138
|
+
* @returns {this}
|
|
139
|
+
*/
|
|
140
|
+
setType(type: import("../elements.js").ToastType): this;
|
|
141
|
+
/**
|
|
142
|
+
* @param {ToastAction[]|null} actions
|
|
143
|
+
* @returns {this}
|
|
144
|
+
*/
|
|
145
|
+
setActions(actions: ToastAction[] | null): this;
|
|
146
|
+
_applyOptions(): void;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The E.toast function with its statics.
|
|
150
|
+
* @type {ToastStatic}
|
|
151
|
+
*/
|
|
152
|
+
export const toast: ToastStatic;
|
|
153
|
+
export default Toast;
|
|
154
|
+
/**
|
|
155
|
+
* An action button in a toast.
|
|
156
|
+
*/
|
|
157
|
+
export type ToastAction = {
|
|
158
|
+
/**
|
|
159
|
+
* - Button label (`text` is accepted too)
|
|
160
|
+
*/
|
|
161
|
+
label?: string;
|
|
162
|
+
/**
|
|
163
|
+
* - Alias of `label`
|
|
164
|
+
*/
|
|
165
|
+
text?: string;
|
|
166
|
+
/**
|
|
167
|
+
* - Click handler
|
|
168
|
+
*/
|
|
169
|
+
onClick?: (event: MouseEvent, toast: ToastInstance) => void;
|
|
170
|
+
/**
|
|
171
|
+
* - Close toast on click
|
|
172
|
+
*/
|
|
173
|
+
closeOnClick?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* - Primary style
|
|
176
|
+
*/
|
|
177
|
+
primary?: boolean;
|
|
178
|
+
};
|
|
179
|
+
export type ToastOptions = {
|
|
180
|
+
/**
|
|
181
|
+
* - The message (text unless `html: true`)
|
|
182
|
+
*/
|
|
183
|
+
message?: string | Node;
|
|
184
|
+
/**
|
|
185
|
+
* - Toast title
|
|
186
|
+
*/
|
|
187
|
+
title?: string;
|
|
188
|
+
/**
|
|
189
|
+
* - Toast type
|
|
190
|
+
*/
|
|
191
|
+
type?: import("../elements.js").ToastType;
|
|
192
|
+
/**
|
|
193
|
+
* - Toast position
|
|
194
|
+
*/
|
|
195
|
+
position?: import("../elements.js").ToastPosition;
|
|
196
|
+
/**
|
|
197
|
+
* - Auto-dismiss duration in ms (0 = no auto-dismiss)
|
|
198
|
+
*/
|
|
199
|
+
duration?: number;
|
|
200
|
+
/**
|
|
201
|
+
* - Pause countdown on hover
|
|
202
|
+
*/
|
|
203
|
+
pauseOnHover?: boolean;
|
|
204
|
+
/**
|
|
205
|
+
* - Show progress bar
|
|
206
|
+
*/
|
|
207
|
+
showProgress?: boolean;
|
|
208
|
+
/**
|
|
209
|
+
* - Animation style
|
|
210
|
+
*/
|
|
211
|
+
animation?: "slide" | "fade" | (string & {});
|
|
212
|
+
/**
|
|
213
|
+
* - Animation duration in ms
|
|
214
|
+
*/
|
|
215
|
+
animationDuration?: number;
|
|
216
|
+
/**
|
|
217
|
+
* - Show close button
|
|
218
|
+
*/
|
|
219
|
+
closable?: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* - The message is HTML (sanitised unless `safe: false`)
|
|
222
|
+
*/
|
|
223
|
+
html?: boolean;
|
|
224
|
+
/**
|
|
225
|
+
* - Sanitise HTML message / icon
|
|
226
|
+
*/
|
|
227
|
+
safe?: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* - Icon name (data-icon), HTML string or Node; the typed helpers default to the type's icon
|
|
230
|
+
*/
|
|
231
|
+
icon?: string | Node | null;
|
|
232
|
+
/**
|
|
233
|
+
* - Action buttons
|
|
234
|
+
*/
|
|
235
|
+
actions?: ToastAction[];
|
|
236
|
+
/**
|
|
237
|
+
* - One action button (used when `actions` is empty)
|
|
238
|
+
*/
|
|
239
|
+
action?: ToastAction;
|
|
240
|
+
/**
|
|
241
|
+
* - Maximum number of toasts on screen; the oldest closes
|
|
242
|
+
*/
|
|
243
|
+
maxToasts?: number;
|
|
244
|
+
/**
|
|
245
|
+
* - Extra classes on the toast
|
|
246
|
+
*/
|
|
247
|
+
className?: string;
|
|
248
|
+
/**
|
|
249
|
+
* - When the toast shows
|
|
250
|
+
*/
|
|
251
|
+
onShow?: ((toast: ToastInstance) => void) | null;
|
|
252
|
+
/**
|
|
253
|
+
* - After the exit animation, just before removal
|
|
254
|
+
*/
|
|
255
|
+
onClose?: ((toast: ToastInstance) => void) | null;
|
|
256
|
+
/**
|
|
257
|
+
* - The countdown paused (hover)
|
|
258
|
+
*/
|
|
259
|
+
onPause?: ((toast: ToastInstance) => void) | null;
|
|
260
|
+
/**
|
|
261
|
+
* - The countdown resumed
|
|
262
|
+
*/
|
|
263
|
+
onResume?: ((toast: ToastInstance) => void) | null;
|
|
264
|
+
/**
|
|
265
|
+
* - An action button was clicked
|
|
266
|
+
*/
|
|
267
|
+
onAction?: ((detail: {
|
|
268
|
+
action: ToastAction;
|
|
269
|
+
index: number;
|
|
270
|
+
}, toast: ToastInstance) => void) | null;
|
|
271
|
+
};
|
|
272
|
+
export type ToastInstance = Toast;
|
|
273
|
+
/**
|
|
274
|
+
* E.toast: show a toast, with typed helpers.
|
|
275
|
+
*/
|
|
276
|
+
export type ToastStatic = ((message: string | Node | ToastOptions, options?: ToastOptions) => ToastInstance) & {
|
|
277
|
+
show(message: string | Node | ToastOptions, options?: ToastOptions): ToastInstance;
|
|
278
|
+
success(message: string | Node, options?: ToastOptions): ToastInstance;
|
|
279
|
+
error(message: string | Node, options?: ToastOptions): ToastInstance;
|
|
280
|
+
warning(message: string | Node, options?: ToastOptions): ToastInstance;
|
|
281
|
+
info(message: string | Node, options?: ToastOptions): ToastInstance;
|
|
282
|
+
closeAll(): void;
|
|
283
|
+
};
|
|
284
|
+
import Component from '../component.js';
|