@webx-ui/core 0.37.1 → 0.39.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/dist/components/Actions/Actions.d.ts +1 -0
- package/dist/components/Actions/types.d.ts +5 -0
- package/dist/components/DatePicker/DatePicker.d.ts +1 -0
- package/dist/components/DatePicker/types.d.ts +10 -0
- package/dist/components/FileCard/FileCard.d.ts +32 -2
- package/dist/components/FileCard/types.d.ts +24 -0
- package/dist/components/Icon/icons.d.ts +2 -0
- package/dist/components/Indicator/Indicator.d.ts +1 -1
- package/dist/components/Input/Input.d.ts +8 -0
- package/dist/components/Input/types.d.ts +2 -1
- package/dist/components/RichText/RichText.d.ts +6 -0
- package/dist/components/RichText/source.d.ts +18 -0
- package/dist/components/RichText/tools.d.ts +2 -0
- package/dist/components/RichText/types.d.ts +17 -4
- package/dist/components/SelectionArea/SelectionArea.d.ts +1 -0
- package/dist/components/SelectionArea/types.d.ts +6 -0
- package/dist/components/Table/types.d.ts +2 -0
- package/dist/components/Textarea/Textarea.d.ts +6 -0
- package/dist/components/Textarea/types.d.ts +2 -1
- package/dist/components/Tooltip/Tooltip.d.ts +94 -2
- package/dist/components/Tree/types.d.ts +4 -0
- package/dist/composables/useDateTimezone.d.ts +26 -0
- package/dist/composables/useFormField.d.ts +5 -0
- package/dist/composables/useTokens.d.ts +94 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +7760 -6857
- package/dist/index.js.map +1 -1
- package/dist/internal/TokenButton.d.ts +10 -0
- package/dist/internal/TokenMenu.d.ts +23 -0
- package/dist/style.css +1 -1
- package/package.json +2 -2
|
@@ -38,6 +38,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
|
|
|
38
38
|
align: import('./types').ActionsAlign;
|
|
39
39
|
ariaLabel: string;
|
|
40
40
|
collapse: boolean | "always";
|
|
41
|
+
moreLabel: string;
|
|
41
42
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
42
43
|
root: HTMLDivElement;
|
|
43
44
|
row: HTMLDivElement;
|
|
@@ -17,6 +17,11 @@ export interface ActionsProps {
|
|
|
17
17
|
collapse?: boolean | 'always';
|
|
18
18
|
/** Accessible name of the group, e.g. "Row actions". */
|
|
19
19
|
ariaLabel?: string;
|
|
20
|
+
/**
|
|
21
|
+
* The name of the button the folded-up menu opens from — its tip and its accessible name.
|
|
22
|
+
* English by default, like every word of a component: whoever places it knows the language.
|
|
23
|
+
*/
|
|
24
|
+
moreLabel?: string;
|
|
20
25
|
}
|
|
21
26
|
export interface ActionsEmits {
|
|
22
27
|
/** The row collapsed into the dropdown, or came back out of it. */
|
|
@@ -30,6 +30,16 @@ export interface DatePickerProps {
|
|
|
30
30
|
* `provideDateLocale`, then to the browser's own language.
|
|
31
31
|
*/
|
|
32
32
|
locale?: string | DateFnsLocale;
|
|
33
|
+
/**
|
|
34
|
+
* The IANA zone a moment is shown and picked in, e.g. `'Asia/Hong_Kong'`: the field reads
|
|
35
|
+
* the wall clock of that zone whatever the reader's machine is set to, and the value goes
|
|
36
|
+
* back with that zone's offset. Applies only when `valueFormat` carries an offset (`XXX`,
|
|
37
|
+
* `xxx`) — a value without one is a wall clock already and has no zone to move between.
|
|
38
|
+
* Defaults to what the application provided with `provideDateTimezone`, then to the
|
|
39
|
+
* reader's own zone. Under the default display format, a time is followed by the zone's
|
|
40
|
+
* offset whenever it is not the reader's.
|
|
41
|
+
*/
|
|
42
|
+
timezone?: string;
|
|
33
43
|
/** First day of the week: 0 is Sunday, 1 is Monday. */
|
|
34
44
|
weekStart?: number;
|
|
35
45
|
/** Apply the value as soon as it is picked, with no confirm button. */
|
|
@@ -40,6 +40,9 @@ declare function __VLS_template(): {
|
|
|
40
40
|
readonly autocomplete?: string | undefined;
|
|
41
41
|
readonly ariaLabel?: string | undefined;
|
|
42
42
|
readonly localized?: boolean | undefined;
|
|
43
|
+
readonly tokens?: import('../..').TokenOption[] | undefined;
|
|
44
|
+
readonly tokensTitle?: string | undefined;
|
|
45
|
+
readonly tokensLabel?: string | undefined;
|
|
43
46
|
readonly onChange?: ((value: string) => any) | undefined;
|
|
44
47
|
readonly "onUpdate:modelValue"?: ((value: import('..').InputModelValue) => any) | undefined;
|
|
45
48
|
readonly onInput?: ((value: string) => any) | undefined;
|
|
@@ -51,7 +54,9 @@ declare function __VLS_template(): {
|
|
|
51
54
|
$refs: {
|
|
52
55
|
[x: string]: unknown;
|
|
53
56
|
} & {
|
|
57
|
+
rootRef: HTMLDivElement;
|
|
54
58
|
inputRef: HTMLInputElement;
|
|
59
|
+
mirrorRef: HTMLSpanElement;
|
|
55
60
|
};
|
|
56
61
|
$slots: Readonly<{
|
|
57
62
|
[name: string]: import('vue').Slot<any> | undefined;
|
|
@@ -96,6 +101,9 @@ declare function __VLS_template(): {
|
|
|
96
101
|
maxlength: number;
|
|
97
102
|
showCount: boolean;
|
|
98
103
|
localized: boolean;
|
|
104
|
+
tokens: import('../..').TokenOption[];
|
|
105
|
+
tokensTitle: string;
|
|
106
|
+
tokensLabel: string;
|
|
99
107
|
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
100
108
|
beforeCreate?: (() => void) | (() => void)[];
|
|
101
109
|
created?: (() => void) | (() => void)[];
|
|
@@ -130,6 +138,9 @@ declare function __VLS_template(): {
|
|
|
130
138
|
maxlength: number;
|
|
131
139
|
showCount: boolean;
|
|
132
140
|
localized: boolean;
|
|
141
|
+
tokens: import('../..').TokenOption[];
|
|
142
|
+
tokensTitle: string;
|
|
143
|
+
tokensLabel: string;
|
|
133
144
|
}> & Omit<Readonly<{
|
|
134
145
|
modelValue?: import('..').InputModelValue;
|
|
135
146
|
} & import('..').InputProps> & Readonly<{
|
|
@@ -139,7 +150,7 @@ declare function __VLS_template(): {
|
|
|
139
150
|
onClear?: (() => any) | undefined;
|
|
140
151
|
onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
141
152
|
onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
142
|
-
}>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized")> & {
|
|
153
|
+
}>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized" | "tokens" | "tokensTitle" | "tokensLabel")> & {
|
|
143
154
|
focus: () => void | undefined;
|
|
144
155
|
blur: () => void | undefined;
|
|
145
156
|
select: () => void | undefined;
|
|
@@ -158,12 +169,14 @@ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
|
158
169
|
declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
159
170
|
edit: () => any;
|
|
160
171
|
copy: (url: string) => any;
|
|
172
|
+
view: () => any;
|
|
161
173
|
remove: () => any;
|
|
162
174
|
rename: (name: string) => any;
|
|
163
175
|
"copy-error": (error: unknown) => any;
|
|
164
176
|
}, string, import('vue').PublicProps, Readonly<FileCardProps> & Readonly<{
|
|
165
177
|
onEdit?: (() => any) | undefined;
|
|
166
178
|
onCopy?: ((url: string) => any) | undefined;
|
|
179
|
+
onView?: (() => any) | undefined;
|
|
167
180
|
onRemove?: (() => any) | undefined;
|
|
168
181
|
onRename?: ((name: string) => any) | undefined;
|
|
169
182
|
"onCopy-error"?: ((error: unknown) => any) | undefined;
|
|
@@ -172,11 +185,15 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
|
|
|
172
185
|
disabled: boolean;
|
|
173
186
|
type: string;
|
|
174
187
|
icon: import('..').IconName;
|
|
188
|
+
moreLabel: string;
|
|
175
189
|
url: string;
|
|
176
190
|
selected: boolean;
|
|
177
191
|
thumbnail: string;
|
|
192
|
+
extension: string;
|
|
193
|
+
showExtension: boolean;
|
|
178
194
|
renamable: boolean;
|
|
179
195
|
editable: boolean;
|
|
196
|
+
viewable: boolean;
|
|
180
197
|
removable: boolean;
|
|
181
198
|
confirmRemove: boolean;
|
|
182
199
|
copyable: boolean;
|
|
@@ -186,11 +203,13 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
|
|
|
186
203
|
saveLabel: string;
|
|
187
204
|
cancelLabel: string;
|
|
188
205
|
editLabel: string;
|
|
206
|
+
viewLabel: string;
|
|
189
207
|
removeLabel: string;
|
|
190
208
|
removeConfirmText: string;
|
|
191
209
|
copyLabel: string;
|
|
192
210
|
downloadLabel: string;
|
|
193
211
|
copiedLabel: string;
|
|
212
|
+
actionsLabel: string;
|
|
194
213
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
195
214
|
field: ({
|
|
196
215
|
$: import('vue').ComponentInternalInstance;
|
|
@@ -210,6 +229,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
|
|
|
210
229
|
readonly autocomplete?: string | undefined;
|
|
211
230
|
readonly ariaLabel?: string | undefined;
|
|
212
231
|
readonly localized?: boolean | undefined;
|
|
232
|
+
readonly tokens?: import('../..').TokenOption[] | undefined;
|
|
233
|
+
readonly tokensTitle?: string | undefined;
|
|
234
|
+
readonly tokensLabel?: string | undefined;
|
|
213
235
|
readonly onChange?: ((value: string) => any) | undefined;
|
|
214
236
|
readonly "onUpdate:modelValue"?: ((value: import('..').InputModelValue) => any) | undefined;
|
|
215
237
|
readonly onInput?: ((value: string) => any) | undefined;
|
|
@@ -221,7 +243,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
|
|
|
221
243
|
$refs: {
|
|
222
244
|
[x: string]: unknown;
|
|
223
245
|
} & {
|
|
246
|
+
rootRef: HTMLDivElement;
|
|
224
247
|
inputRef: HTMLInputElement;
|
|
248
|
+
mirrorRef: HTMLSpanElement;
|
|
225
249
|
};
|
|
226
250
|
$slots: Readonly<{
|
|
227
251
|
[name: string]: import('vue').Slot<any> | undefined;
|
|
@@ -266,6 +290,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
|
|
|
266
290
|
maxlength: number;
|
|
267
291
|
showCount: boolean;
|
|
268
292
|
localized: boolean;
|
|
293
|
+
tokens: import('../..').TokenOption[];
|
|
294
|
+
tokensTitle: string;
|
|
295
|
+
tokensLabel: string;
|
|
269
296
|
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
270
297
|
beforeCreate?: (() => void) | (() => void)[];
|
|
271
298
|
created?: (() => void) | (() => void)[];
|
|
@@ -300,6 +327,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
|
|
|
300
327
|
maxlength: number;
|
|
301
328
|
showCount: boolean;
|
|
302
329
|
localized: boolean;
|
|
330
|
+
tokens: import('../..').TokenOption[];
|
|
331
|
+
tokensTitle: string;
|
|
332
|
+
tokensLabel: string;
|
|
303
333
|
}> & Omit<Readonly<{
|
|
304
334
|
modelValue?: import('..').InputModelValue;
|
|
305
335
|
} & import('..').InputProps> & Readonly<{
|
|
@@ -309,7 +339,7 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
|
|
|
309
339
|
onClear?: (() => any) | undefined;
|
|
310
340
|
onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
311
341
|
onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
312
|
-
}>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized")> & {
|
|
342
|
+
}>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized" | "tokens" | "tokensTitle" | "tokensLabel")> & {
|
|
313
343
|
focus: () => void | undefined;
|
|
314
344
|
blur: () => void | undefined;
|
|
315
345
|
select: () => void | undefined;
|
|
@@ -17,6 +17,17 @@ export interface FileCardProps {
|
|
|
17
17
|
type?: string;
|
|
18
18
|
/** Icon to draw instead of the one the extension picks. */
|
|
19
19
|
icon?: IconName;
|
|
20
|
+
/**
|
|
21
|
+
* The extension, for a `name` that does not carry one — a library that shows titles rather
|
|
22
|
+
* than file names. Given, it picks the glyph and the word under it instead of the name.
|
|
23
|
+
*/
|
|
24
|
+
extension?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Puts the extension in a corner of a picture too, not only under a glyph. A grid of
|
|
27
|
+
* thumbnails looks alike whether the files are JPEGs or PNGs, and the format is often
|
|
28
|
+
* exactly what somebody is looking for.
|
|
29
|
+
*/
|
|
30
|
+
showExtension?: boolean;
|
|
20
31
|
/** Draws the card as chosen. The choosing itself belongs to whatever holds the cards. */
|
|
21
32
|
selected?: boolean;
|
|
22
33
|
size?: FileCardSize;
|
|
@@ -30,6 +41,12 @@ export interface FileCardProps {
|
|
|
30
41
|
* nothing to open for a `.zip`.
|
|
31
42
|
*/
|
|
32
43
|
editable?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Offers the view action — "show this picture large" — which the card only reports: a
|
|
46
|
+
* lightbox over one file is a poorer thing than one over the grid it is in, and only whoever
|
|
47
|
+
* holds the cards knows the grid. Pictures only.
|
|
48
|
+
*/
|
|
49
|
+
viewable?: boolean;
|
|
33
50
|
removable?: boolean;
|
|
34
51
|
/**
|
|
35
52
|
* Asks before deleting. On, because a file deleted from a grid of thumbnails is a file
|
|
@@ -57,6 +74,7 @@ export interface FileCardProps {
|
|
|
57
74
|
saveLabel?: string;
|
|
58
75
|
cancelLabel?: string;
|
|
59
76
|
editLabel?: string;
|
|
77
|
+
viewLabel?: string;
|
|
60
78
|
removeLabel?: string;
|
|
61
79
|
/** The question `confirmRemove` asks. The file name is worth putting in it. */
|
|
62
80
|
removeConfirmText?: string;
|
|
@@ -64,12 +82,18 @@ export interface FileCardProps {
|
|
|
64
82
|
downloadLabel?: string;
|
|
65
83
|
/** Shown on the copy action for a moment after it worked. */
|
|
66
84
|
copiedLabel?: string;
|
|
85
|
+
/** The button the folded-up actions open from. */
|
|
86
|
+
moreLabel?: string;
|
|
87
|
+
/** The accessible name of the actions, said with the file's name in it. */
|
|
88
|
+
actionsLabel?: string;
|
|
67
89
|
}
|
|
68
90
|
export interface FileCardEmits {
|
|
69
91
|
/** A new name was committed. The file is not renamed until the caller says so. */
|
|
70
92
|
rename: [name: string];
|
|
71
93
|
/** Open this picture in an editor. */
|
|
72
94
|
edit: [];
|
|
95
|
+
/** Show this picture large. */
|
|
96
|
+
view: [];
|
|
73
97
|
remove: [];
|
|
74
98
|
/** The URL reached the clipboard. */
|
|
75
99
|
copy: [url: string];
|
|
@@ -16,6 +16,8 @@ export declare const builtinIcons: {
|
|
|
16
16
|
readonly edit: "<path d=\"M4 20h4L19.5 8.5a2.83 2.83 0 0 0-4-4L4 16v4Z\"/><path d=\"m14.5 5.5 4 4\"/>";
|
|
17
17
|
readonly trash: "<path d=\"M4 7h16M10 7V5.5A1.5 1.5 0 0 1 11.5 4h1A1.5 1.5 0 0 1 14 5.5V7M6.5 7l.8 11.6a2 2 0 0 0 2 1.9h5.4a2 2 0 0 0 2-1.9L17.5 7\"/><path d=\"M10 11v5.5M14 11v5.5\"/>";
|
|
18
18
|
readonly copy: "<rect x=\"8.5\" y=\"8.5\" width=\"11\" height=\"11\" rx=\"2.2\"/><path d=\"M15.5 8.5v-2a2 2 0 0 0-2-2h-7a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h2\"/>";
|
|
19
|
+
readonly clipboard: "<rect x=\"8.5\" y=\"2.8\" width=\"7\" height=\"3.6\" rx=\"1\"/><path d=\"M15.5 4.6H17a2 2 0 0 1 2 2V19a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6.6a2 2 0 0 1 2-2h1.5\"/>";
|
|
20
|
+
readonly 'clipboard-paste': "<rect x=\"8.5\" y=\"2.8\" width=\"7\" height=\"3.6\" rx=\"1\"/><path d=\"M15.5 4.6H17a2 2 0 0 1 2 2V19a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6.6a2 2 0 0 1 2-2h1.5\"/><path d=\"M12 10v7M9.2 14.4 12 17.2l2.8-2.8\"/>";
|
|
19
21
|
readonly search: "<circle cx=\"11\" cy=\"11\" r=\"6.5\"/><path d=\"m16 16 4.5 4.5\"/>";
|
|
20
22
|
readonly 'zoom-in': "<circle cx=\"11\" cy=\"11\" r=\"6.5\"/><path d=\"m16 16 4.5 4.5M8.5 11h5M11 8.5v5\"/>";
|
|
21
23
|
readonly 'zoom-out': "<circle cx=\"11\" cy=\"11\" r=\"6.5\"/><path d=\"m16 16 4.5 4.5M8.5 11h5\"/>";
|
|
@@ -17,8 +17,8 @@ declare const __VLS_component: import('vue').DefineComponent<IndicatorProps, {},
|
|
|
17
17
|
hidden: boolean;
|
|
18
18
|
max: number;
|
|
19
19
|
dot: boolean;
|
|
20
|
-
showZero: boolean;
|
|
21
20
|
placement: import('./types').IndicatorPlacement;
|
|
21
|
+
showZero: boolean;
|
|
22
22
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
23
23
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
24
24
|
export default _default;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TokenOption } from '../../composables/useTokens';
|
|
1
2
|
import { InputModelValue, InputProps } from './types';
|
|
2
3
|
type __VLS_Props = InputProps;
|
|
3
4
|
type __VLS_PublicProps = {
|
|
@@ -10,7 +11,9 @@ declare function __VLS_template(): {
|
|
|
10
11
|
suffix?(_: {}): any;
|
|
11
12
|
};
|
|
12
13
|
refs: {
|
|
14
|
+
rootRef: HTMLDivElement;
|
|
13
15
|
inputRef: HTMLInputElement;
|
|
16
|
+
mirrorRef: HTMLSpanElement;
|
|
14
17
|
};
|
|
15
18
|
rootEl: any;
|
|
16
19
|
};
|
|
@@ -48,8 +51,13 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
|
|
|
48
51
|
maxlength: number;
|
|
49
52
|
showCount: boolean;
|
|
50
53
|
localized: boolean;
|
|
54
|
+
tokens: TokenOption[];
|
|
55
|
+
tokensTitle: string;
|
|
56
|
+
tokensLabel: string;
|
|
51
57
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
58
|
+
rootRef: HTMLDivElement;
|
|
52
59
|
inputRef: HTMLInputElement;
|
|
60
|
+
mirrorRef: HTMLSpanElement;
|
|
53
61
|
}, any>;
|
|
54
62
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
55
63
|
export default _default;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { LocalizedFieldProps, LocalizedValue } from '../../composables/useLocalized';
|
|
2
|
+
import { TokenFieldProps } from '../../composables/useTokens';
|
|
2
3
|
export type InputSize = 'sm' | 'md' | 'lg';
|
|
3
4
|
export type InputStatus = 'default' | 'success' | 'warning' | 'error';
|
|
4
5
|
export type InputNativeType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url';
|
|
5
|
-
export interface InputProps extends LocalizedFieldProps {
|
|
6
|
+
export interface InputProps extends LocalizedFieldProps, TokenFieldProps {
|
|
6
7
|
/** Overrides the id generated for the control (and used by a WxFormItem label). */
|
|
7
8
|
id?: string;
|
|
8
9
|
/** `type` attribute of the underlying `<input>`. */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TokenOption } from '../../composables/useTokens';
|
|
1
2
|
import { RichTextLabels, RichTextModelValue, RichTextProps, RichTextTool } from './types';
|
|
2
3
|
type __VLS_Props = RichTextProps;
|
|
3
4
|
type __VLS_PublicProps = {
|
|
@@ -27,14 +28,19 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {
|
|
|
27
28
|
ariaLabel: string;
|
|
28
29
|
status: import('../..').ControlStatus;
|
|
29
30
|
id: string;
|
|
31
|
+
inline: boolean;
|
|
30
32
|
readonly: boolean;
|
|
31
33
|
minHeight: string;
|
|
32
34
|
localized: boolean;
|
|
35
|
+
tokens: TokenOption[];
|
|
36
|
+
tokensTitle: string;
|
|
37
|
+
tokensLabel: string;
|
|
33
38
|
tools: RichTextTool[];
|
|
34
39
|
pickImage: import('./types').RichTextImagePicker;
|
|
35
40
|
accept: string[];
|
|
36
41
|
labels: RichTextLabels;
|
|
37
42
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
43
|
+
rootRef: HTMLDivElement;
|
|
38
44
|
fileInput: HTMLInputElement;
|
|
39
45
|
}, any>;
|
|
40
46
|
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTML behind the editor, as a person reads and edits it.
|
|
3
|
+
*
|
|
4
|
+
* Tiptap writes the document as one line, which is unreadable past a paragraph. Blocks go on
|
|
5
|
+
* lines of their own here, and whatever holds other blocks indents them. Whitespace between
|
|
6
|
+
* blocks means nothing to the parser, so the document that comes back is the one that went in.
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatHtml(html: string, indent?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* What a document loses on its way into the editor: the tags and attributes the editor's schema
|
|
11
|
+
* does not know, each named once. ProseMirror drops them without a word, which is fine for a
|
|
12
|
+
* paste and not for markup a person has just typed by hand.
|
|
13
|
+
*
|
|
14
|
+
* Counted rather than merely listed, so that one `<span>` the editor keeps does not vouch for
|
|
15
|
+
* the nine it drops. What the editor adds — a paragraph around bare text, its own `rel` on a
|
|
16
|
+
* link — is not a loss and is not reported.
|
|
17
|
+
*/
|
|
18
|
+
export declare function lostMarkup(before: string, after: string): string[];
|
|
@@ -4,6 +4,8 @@ import { RichTextTableTool, RichTextTool } from './types';
|
|
|
4
4
|
* declared inside `<script setup>` — it is hoisted out of `setup()`.
|
|
5
5
|
*/
|
|
6
6
|
export declare const DEFAULT_TOOLS: RichTextTool[];
|
|
7
|
+
/** What an inline field offers: the marks a line of a heading is ever given. */
|
|
8
|
+
export declare const INLINE_TOOLS: RichTextTool[];
|
|
7
9
|
export declare const DEFAULT_ACCEPT: string[];
|
|
8
10
|
export interface ToolMeta {
|
|
9
11
|
label: string;
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { ControlSize, ControlStatus } from '../../composables/useFormField';
|
|
2
2
|
import { LocalizedFieldProps, LocalizedValue } from '../../composables/useLocalized';
|
|
3
|
-
|
|
3
|
+
import { TokenFieldProps } from '../../composables/useTokens';
|
|
4
|
+
export type RichTextTool = 'bold' | 'italic'
|
|
5
|
+
/** The accent of an inline field: a bare `<span>` the site's styles colour. */
|
|
6
|
+
| 'accent' | 'strike' | 'code' | 'h2' | 'h3' | 'h4' | 'bulletList' | 'orderedList' | 'blockquote' | 'hr' | 'link' | 'table' | 'image' | 'youtube' | 'undo' | 'redo'
|
|
7
|
+
/** Shows the document as HTML to read and edit by hand. */
|
|
8
|
+
| 'source'
|
|
4
9
|
/** A vertical rule between groups. */
|
|
5
10
|
| 'divider';
|
|
6
11
|
/** The keys of the second toolbar, the one that appears inside a table. */
|
|
7
12
|
export type RichTextTableTool = 'addRowAfter' | 'addRowBefore' | 'addColumnAfter' | 'addColumnBefore' | 'deleteRow' | 'deleteColumn' | 'mergeOrSplit' | 'deleteTable';
|
|
8
13
|
/**
|
|
9
14
|
* Everything this editor says out loud: a tooltip on every button, the two lines of the link
|
|
10
|
-
* bar,
|
|
15
|
+
* bar, the word shown while a file is going up, and the warning the source view gives.
|
|
11
16
|
*/
|
|
12
17
|
export type RichTextLabelKey = Exclude<RichTextTool, 'divider'> | RichTextTableTool
|
|
13
18
|
/** The accessible name of the toolbar itself. */
|
|
14
|
-
| 'toolbar' | 'linkAddress' | 'youtubeAddress' | 'apply' | 'cancel' | 'uploading'
|
|
19
|
+
| 'toolbar' | 'linkAddress' | 'youtubeAddress' | 'apply' | 'cancel' | 'uploading'
|
|
20
|
+
/** The warning before the editor drops markup typed in the source, and its two answers. */
|
|
21
|
+
| 'sourceLoss' | 'sourceDrop' | 'sourceKeep';
|
|
15
22
|
/**
|
|
16
23
|
* What the editor calls its own buttons. It knows nothing about the panel it is opened in, so
|
|
17
24
|
* whoever opens it translates it; a key left out stays English.
|
|
@@ -42,7 +49,7 @@ export type RichTextUpload = (file: File) => Promise<RichTextImage>;
|
|
|
42
49
|
export type RichTextImagePicker = () => Promise<RichTextImage | string | null>;
|
|
43
50
|
/** One language's HTML, or every language's when the field is localized. */
|
|
44
51
|
export type RichTextModelValue = string | LocalizedValue;
|
|
45
|
-
export interface RichTextProps extends LocalizedFieldProps {
|
|
52
|
+
export interface RichTextProps extends LocalizedFieldProps, TokenFieldProps {
|
|
46
53
|
placeholder?: string;
|
|
47
54
|
disabled?: boolean;
|
|
48
55
|
readonly?: boolean;
|
|
@@ -51,6 +58,12 @@ export interface RichTextProps extends LocalizedFieldProps {
|
|
|
51
58
|
id?: string;
|
|
52
59
|
/** Accessible label used when there is no visible `<label>`. */
|
|
53
60
|
ariaLabel?: string;
|
|
61
|
+
/**
|
|
62
|
+
* One line of text with a few marks instead of a document: no paragraphs, no Enter, and the
|
|
63
|
+
* value is the bare line — `Deeply heard<span>.</span> Gently guided` — for a heading or a
|
|
64
|
+
* caption that carries a touch of markup. The toolbar defaults to bold, italic and accent.
|
|
65
|
+
*/
|
|
66
|
+
inline?: boolean;
|
|
54
67
|
/** Height of the editing area before it starts growing. */
|
|
55
68
|
minHeight?: string;
|
|
56
69
|
/** Which buttons the toolbar shows, in order. */
|
|
@@ -37,6 +37,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
|
|
|
37
37
|
threshold: number;
|
|
38
38
|
touch: boolean;
|
|
39
39
|
clickSelect: boolean;
|
|
40
|
+
dragItems: boolean;
|
|
40
41
|
edgeScroll: number;
|
|
41
42
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
42
43
|
root: HTMLDivElement;
|
|
@@ -18,6 +18,12 @@ export interface SelectionAreaProps {
|
|
|
18
18
|
* because on a touch screen a drag means scroll — a tap still picks either way.
|
|
19
19
|
*/
|
|
20
20
|
touch?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Items can be dragged somewhere else — onto a folder, into another list — with the
|
|
23
|
+
* browser's own drag and drop. A press on an item then never becomes a box (the drag is
|
|
24
|
+
* the item's), and a box starts from the background only. A click still picks.
|
|
25
|
+
*/
|
|
26
|
+
dragItems?: boolean;
|
|
21
27
|
/** How near the scroller's edge the pointer scrolls it, in pixels. `0` never does. */
|
|
22
28
|
edgeScroll?: number;
|
|
23
29
|
disabled?: boolean;
|
|
@@ -175,6 +175,8 @@ export interface TableProps<T = TableRow> {
|
|
|
175
175
|
/** How long typing settles before `search` fires. Zero reports every keystroke. */
|
|
176
176
|
searchDebounce?: number;
|
|
177
177
|
loading?: boolean;
|
|
178
|
+
/** The words beside the spinner while `loading`; English by default, translated by the caller. */
|
|
179
|
+
loadingText?: string;
|
|
178
180
|
/** Shown in place of the rows when there are none. */
|
|
179
181
|
emptyText?: string;
|
|
180
182
|
/** Accessible name of each row's checkbox. */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TokenOption } from '../../composables/useTokens';
|
|
1
2
|
import { TextareaModelValue, TextareaProps } from './types';
|
|
2
3
|
type __VLS_Props = TextareaProps;
|
|
3
4
|
type __VLS_PublicProps = {
|
|
@@ -32,9 +33,14 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {
|
|
|
32
33
|
maxlength: number;
|
|
33
34
|
showCount: boolean;
|
|
34
35
|
localized: boolean;
|
|
36
|
+
tokens: TokenOption[];
|
|
37
|
+
tokensTitle: string;
|
|
38
|
+
tokensLabel: string;
|
|
35
39
|
rows: number;
|
|
36
40
|
autosize: boolean | import('./types').AutosizeOptions;
|
|
37
41
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
42
|
+
rootRef: HTMLDivElement;
|
|
38
43
|
textareaRef: HTMLTextAreaElement;
|
|
44
|
+
mirrorRef: HTMLDivElement;
|
|
39
45
|
}, any>;
|
|
40
46
|
export default _default;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ControlSize, ControlStatus } from '../../composables/useFormField';
|
|
2
2
|
import { LocalizedFieldProps, LocalizedValue } from '../../composables/useLocalized';
|
|
3
|
+
import { TokenFieldProps } from '../../composables/useTokens';
|
|
3
4
|
export interface AutosizeOptions {
|
|
4
5
|
minRows?: number;
|
|
5
6
|
maxRows?: number;
|
|
6
7
|
}
|
|
7
|
-
export interface TextareaProps extends LocalizedFieldProps {
|
|
8
|
+
export interface TextareaProps extends LocalizedFieldProps, TokenFieldProps {
|
|
8
9
|
size?: ControlSize;
|
|
9
10
|
status?: ControlStatus;
|
|
10
11
|
id?: string;
|
|
@@ -16,7 +16,53 @@ declare function __VLS_template(): {
|
|
|
16
16
|
/** The tip itself, when the text is not enough. */
|
|
17
17
|
content?: () => unknown;
|
|
18
18
|
};
|
|
19
|
-
refs: {
|
|
19
|
+
refs: {
|
|
20
|
+
trigger: ({
|
|
21
|
+
$: import('vue').ComponentInternalInstance;
|
|
22
|
+
$data: {};
|
|
23
|
+
$props: {
|
|
24
|
+
readonly reference?: import('reka-ui').ReferenceElement | undefined;
|
|
25
|
+
readonly asChild?: boolean | undefined;
|
|
26
|
+
readonly as?: (import('reka-ui').AsTag | import('vue').Component) | undefined;
|
|
27
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
28
|
+
$attrs: import('vue').Attrs;
|
|
29
|
+
$refs: {
|
|
30
|
+
[x: string]: unknown;
|
|
31
|
+
};
|
|
32
|
+
$slots: Readonly<{
|
|
33
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
$root: import('vue').ComponentPublicInstance | null;
|
|
36
|
+
$parent: import('vue').ComponentPublicInstance | null;
|
|
37
|
+
$host: Element | null;
|
|
38
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
39
|
+
$el: any;
|
|
40
|
+
$options: import('vue').ComponentOptionsBase<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
41
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
42
|
+
created?: (() => void) | (() => void)[];
|
|
43
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
44
|
+
mounted?: (() => void) | (() => void)[];
|
|
45
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
46
|
+
updated?: (() => void) | (() => void)[];
|
|
47
|
+
activated?: (() => void) | (() => void)[];
|
|
48
|
+
deactivated?: (() => void) | (() => void)[];
|
|
49
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
50
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
51
|
+
destroyed?: (() => void) | (() => void)[];
|
|
52
|
+
unmounted?: (() => void) | (() => void)[];
|
|
53
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
54
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
55
|
+
errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
56
|
+
};
|
|
57
|
+
$forceUpdate: () => void;
|
|
58
|
+
$nextTick: typeof import('vue').nextTick;
|
|
59
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
60
|
+
} & Readonly<{}> & Omit<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, never> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
61
|
+
$slots: {
|
|
62
|
+
default?: (props: {}) => any;
|
|
63
|
+
};
|
|
64
|
+
}) | null;
|
|
65
|
+
};
|
|
20
66
|
rootEl: any;
|
|
21
67
|
};
|
|
22
68
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
@@ -34,7 +80,53 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
|
|
|
34
80
|
arrow: boolean;
|
|
35
81
|
maxWidth: number | string;
|
|
36
82
|
teleport: boolean;
|
|
37
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
83
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
84
|
+
trigger: ({
|
|
85
|
+
$: import('vue').ComponentInternalInstance;
|
|
86
|
+
$data: {};
|
|
87
|
+
$props: {
|
|
88
|
+
readonly reference?: import('reka-ui').ReferenceElement | undefined;
|
|
89
|
+
readonly asChild?: boolean | undefined;
|
|
90
|
+
readonly as?: (import('reka-ui').AsTag | import('vue').Component) | undefined;
|
|
91
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
92
|
+
$attrs: import('vue').Attrs;
|
|
93
|
+
$refs: {
|
|
94
|
+
[x: string]: unknown;
|
|
95
|
+
};
|
|
96
|
+
$slots: Readonly<{
|
|
97
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
98
|
+
}>;
|
|
99
|
+
$root: import('vue').ComponentPublicInstance | null;
|
|
100
|
+
$parent: import('vue').ComponentPublicInstance | null;
|
|
101
|
+
$host: Element | null;
|
|
102
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
103
|
+
$el: any;
|
|
104
|
+
$options: import('vue').ComponentOptionsBase<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
105
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
106
|
+
created?: (() => void) | (() => void)[];
|
|
107
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
108
|
+
mounted?: (() => void) | (() => void)[];
|
|
109
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
110
|
+
updated?: (() => void) | (() => void)[];
|
|
111
|
+
activated?: (() => void) | (() => void)[];
|
|
112
|
+
deactivated?: (() => void) | (() => void)[];
|
|
113
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
114
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
115
|
+
destroyed?: (() => void) | (() => void)[];
|
|
116
|
+
unmounted?: (() => void) | (() => void)[];
|
|
117
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
118
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
119
|
+
errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
120
|
+
};
|
|
121
|
+
$forceUpdate: () => void;
|
|
122
|
+
$nextTick: typeof import('vue').nextTick;
|
|
123
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
124
|
+
} & Readonly<{}> & Omit<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, never> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
125
|
+
$slots: {
|
|
126
|
+
default?: (props: {}) => any;
|
|
127
|
+
};
|
|
128
|
+
}) | null;
|
|
129
|
+
}, any>;
|
|
38
130
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
39
131
|
export default _default;
|
|
40
132
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -85,6 +85,10 @@ export interface TreeProps<T = TreeNode> {
|
|
|
85
85
|
emptyText?: string;
|
|
86
86
|
/** What the drag handle is called, before the name of the node it holds. */
|
|
87
87
|
dragLabel?: string;
|
|
88
|
+
/** What the button that opens a branch is called, before the node's name. */
|
|
89
|
+
expandLabel?: string;
|
|
90
|
+
/** What the same button is called while the branch is open. */
|
|
91
|
+
collapseLabel?: string;
|
|
88
92
|
/** Accessible name for the tree. */
|
|
89
93
|
ariaLabel?: string;
|
|
90
94
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ComputedRef, InjectionKey, Ref } from 'vue';
|
|
2
|
+
/** An IANA zone such as `'Asia/Hong_Kong'`, or something that reads one — or nothing yet. */
|
|
3
|
+
export type DateTimezoneSource = string | Ref<string | null | undefined> | ComputedRef<string | null | undefined>;
|
|
4
|
+
/**
|
|
5
|
+
* The zone every date picker below shows and takes a *moment* in.
|
|
6
|
+
*
|
|
7
|
+
* A moment travels with its offset (`2026-10-12T09:30:00+08:00`), and without a zone the
|
|
8
|
+
* picker draws it on the reader's own clock: an event at half past nine in Hong Kong reads
|
|
9
|
+
* 04:30 to an editor in Moscow, and whatever they pick goes back with Moscow's offset. A site
|
|
10
|
+
* has one clock — the one its events, opening hours and publication times are written in — so
|
|
11
|
+
* a panel provides that zone here and every picker of a moment follows it. A `timezone` prop on
|
|
12
|
+
* the picker still wins over what is provided.
|
|
13
|
+
*/
|
|
14
|
+
export declare const dateTimezoneKey: InjectionKey<DateTimezoneSource>;
|
|
15
|
+
/**
|
|
16
|
+
* Tells every date picker below which zone a moment is shown and entered in.
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* app.provide(dateTimezoneKey, computed(() => manifest.value?.timezone))
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function provideDateTimezone(timezone: DateTimezoneSource): void;
|
|
23
|
+
/** The zone: the `timezone` prop, then the application's, then none — the reader's own. */
|
|
24
|
+
export declare function useDateTimezone(timezone: () => string | undefined): ComputedRef<string | undefined>;
|
|
25
|
+
/** The zone this browser keeps its clock in, or an empty string where it will not say. */
|
|
26
|
+
export declare function readersTimezone(): string;
|