@sveltia/ui 0.11.1 → 0.12.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/package/components/button/button.svelte +4 -1
- package/package/components/button/button.svelte.d.ts +12 -12
- package/package/components/button/select-button-group.svelte.d.ts +4 -4
- package/package/components/button/select-button.svelte.d.ts +6 -6
- package/package/components/button/split-button.svelte +2 -5
- package/package/components/button/split-button.svelte.d.ts +4 -4
- package/package/components/calendar/calendar.svelte +1 -1
- package/package/components/checkbox/checkbox-group.svelte.d.ts +2 -2
- package/package/components/checkbox/checkbox.svelte +1 -1
- package/package/components/checkbox/checkbox.svelte.d.ts +10 -10
- package/package/components/dialog/dialog.svelte +1 -1
- package/package/components/dialog/dialog.svelte.d.ts +2 -2
- package/package/components/dialog/prompt-dialog.svelte +7 -1
- package/package/components/dialog/prompt-dialog.svelte.d.ts +4 -2
- package/package/components/disclosure/disclosure.svelte +1 -1
- package/package/components/disclosure/disclosure.svelte.d.ts +2 -2
- package/package/components/drawer/drawer.svelte +1 -1
- package/package/components/drawer/drawer.svelte.d.ts +6 -6
- package/package/components/grid/grid.svelte.d.ts +2 -2
- package/package/components/icon/icon.svelte +6 -0
- package/package/components/listbox/listbox.svelte.d.ts +8 -8
- package/package/components/listbox/option-group.svelte.d.ts +2 -2
- package/package/components/listbox/option.svelte.d.ts +2 -2
- package/package/components/menu/menu-button.svelte +0 -8
- package/package/components/menu/menu-button.svelte.d.ts +6 -6
- package/package/components/menu/menu-item-checkbox.svelte.d.ts +4 -4
- package/package/components/menu/menu-item-group.svelte.d.ts +2 -2
- package/package/components/menu/menu-item-radio.svelte.d.ts +4 -4
- package/package/components/menu/menu-item.svelte +1 -1
- package/package/components/menu/menu-item.svelte.d.ts +4 -4
- package/package/components/menu/menu.svelte.d.ts +2 -2
- package/package/components/radio/radio-group.svelte.d.ts +4 -4
- package/package/components/radio/radio.svelte +1 -1
- package/package/components/radio/radio.svelte.d.ts +6 -6
- package/package/components/select/combobox.svelte +2 -2
- package/package/components/select/combobox.svelte.d.ts +6 -6
- package/package/components/select/select.svelte.d.ts +6 -6
- package/package/components/slider/slider.svelte +1 -1
- package/package/components/slider/slider.svelte.d.ts +10 -10
- package/package/components/switch/switch.svelte.d.ts +8 -8
- package/package/components/tabs/tab-list.svelte +1 -1
- package/package/components/tabs/tab-list.svelte.d.ts +2 -2
- package/package/components/tabs/tab.svelte.d.ts +2 -2
- package/package/components/text-editor/core.d.ts +2 -0
- package/package/components/text-editor/core.js +206 -0
- package/package/components/text-editor/index.d.ts +23 -0
- package/package/components/text-editor/index.js +102 -0
- package/package/components/text-editor/lexical-root.svelte +123 -0
- package/package/components/text-editor/lexical-root.svelte.d.ts +27 -0
- package/package/components/text-editor/text-editor.svelte +154 -0
- package/package/components/{text-field/markdown-editor.svelte.d.ts → text-editor/text-editor.svelte.d.ts} +18 -14
- package/package/components/text-editor/toolbar/editor-toolbar.svelte +150 -0
- package/package/components/text-editor/toolbar/editor-toolbar.svelte.d.ts +25 -0
- package/package/components/text-editor/toolbar/format-text-button.svelte +33 -0
- package/package/components/text-editor/toolbar/format-text-button.svelte.d.ts +23 -0
- package/package/components/text-editor/toolbar/insert-link-button.svelte +231 -0
- package/package/components/text-editor/toolbar/insert-link-button.svelte.d.ts +23 -0
- package/package/components/text-editor/toolbar/toggle-block-menu-item.svelte +83 -0
- package/package/components/text-editor/toolbar/toggle-block-menu-item.svelte.d.ts +23 -0
- package/package/components/text-field/number-input.svelte +1 -1
- package/package/components/text-field/number-input.svelte.d.ts +12 -12
- package/package/components/text-field/password-input.svelte +1 -1
- package/package/components/text-field/password-input.svelte.d.ts +6 -6
- package/package/components/text-field/search-bar.svelte +2 -2
- package/package/components/text-field/search-bar.svelte.d.ts +6 -6
- package/package/components/text-field/text-area.svelte +3 -0
- package/package/components/text-field/text-area.svelte.d.ts +6 -6
- package/package/components/text-field/text-input.svelte.d.ts +8 -8
- package/package/components/toast/toast.svelte +2 -2
- package/package/components/toast/toast.svelte.d.ts +2 -2
- package/package/components/toolbar/toolbar.svelte.d.ts +2 -2
- package/package/components/util/app-shell.svelte +56 -4
- package/package/components/util/group.svelte.d.ts +2 -2
- package/package/components/util/modal.svelte +2 -2
- package/package/components/util/modal.svelte.d.ts +6 -6
- package/package/components/util/popup.svelte +2 -2
- package/package/components/util/popup.svelte.d.ts +6 -3
- package/package/index.d.ts +1 -1
- package/package/index.js +1 -1
- package/package/locales/en.d.ts +25 -7
- package/package/locales/en.js +25 -6
- package/package/locales/ja.d.ts +25 -7
- package/package/locales/ja.js +25 -6
- package/package/services/events.js +2 -2
- package/package/services/group.js +4 -4
- package/package/services/util.d.ts +1 -0
- package/package/services/util.js +22 -1
- package/package/styles/core.scss +51 -2
- package/package/styles/variables.scss +3 -1
- package/package/typedef.d.ts +48 -0
- package/package/typedef.js +36 -0
- package/package.json +18 -8
- package/package/components/text-field/markdown-editor.svelte +0 -141
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { LinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link';
|
|
3
|
+
import { $getNearestNodeOfType as getNearestNodeOfType } from '@lexical/utils';
|
|
4
|
+
import {
|
|
5
|
+
COMMAND_PRIORITY_NORMAL,
|
|
6
|
+
KEY_DOWN_COMMAND,
|
|
7
|
+
$getPreviousSelection as getPreviousSelection,
|
|
8
|
+
$getSelection as getSelection,
|
|
9
|
+
$getTextContent as getTextContent,
|
|
10
|
+
$isRangeSelection as isRangeSelection,
|
|
11
|
+
} from 'lexical';
|
|
12
|
+
import { getContext, onMount } from 'svelte';
|
|
13
|
+
import { _ } from 'svelte-i18n';
|
|
14
|
+
import Button from '../../button/button.svelte';
|
|
15
|
+
import Dialog from '../../dialog/dialog.svelte';
|
|
16
|
+
import Icon from '../../icon/icon.svelte';
|
|
17
|
+
import { availableButtons } from '..';
|
|
18
|
+
import TextInput from '../../text-field/text-input.svelte';
|
|
19
|
+
import { isMac, matchShortcuts } from '../../../services/events';
|
|
20
|
+
import { isURL } from '../../../services/util';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Button type.
|
|
24
|
+
*/
|
|
25
|
+
const type = 'link';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Text editor state.
|
|
29
|
+
* @type {TextEditorState}
|
|
30
|
+
*/
|
|
31
|
+
const { editor, editorId, selectionInlineTypes, useRichText } = getContext('state');
|
|
32
|
+
|
|
33
|
+
let openDialog = false;
|
|
34
|
+
/** @type {'create' | 'update' | 'remove'} */
|
|
35
|
+
let dialogMode = 'create';
|
|
36
|
+
let hasAnchor = false;
|
|
37
|
+
let anchorURL = '';
|
|
38
|
+
let anchorText = '';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Create a new link by showing a dialog to accept a URL and optionally text.
|
|
42
|
+
*/
|
|
43
|
+
const createLink = () => {
|
|
44
|
+
$editor.getEditorState().read(() => {
|
|
45
|
+
const textContent = getTextContent().trim();
|
|
46
|
+
|
|
47
|
+
anchorURL = isURL(textContent) ? textContent : '';
|
|
48
|
+
hasAnchor = !!textContent;
|
|
49
|
+
dialogMode = 'create';
|
|
50
|
+
openDialog = true;
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Remove an existing link.
|
|
56
|
+
*/
|
|
57
|
+
const removeLink = () => {
|
|
58
|
+
$editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Update an existing link.
|
|
63
|
+
*/
|
|
64
|
+
const updateLink = () => {
|
|
65
|
+
$editor.getEditorState().read(() => {
|
|
66
|
+
const selection = getSelection();
|
|
67
|
+
|
|
68
|
+
if (isRangeSelection(selection)) {
|
|
69
|
+
const anchor = selection.anchor.getNode();
|
|
70
|
+
const parent = anchor instanceof LinkNode ? anchor : getNearestNodeOfType(anchor, LinkNode);
|
|
71
|
+
const url = parent?.getURL();
|
|
72
|
+
|
|
73
|
+
if (url) {
|
|
74
|
+
hasAnchor = true;
|
|
75
|
+
anchorURL = url;
|
|
76
|
+
dialogMode = 'update';
|
|
77
|
+
openDialog = true;
|
|
78
|
+
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Can’t update for some reason; remove it
|
|
84
|
+
removeLink();
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Handle `click` event fired on the Link button. If a link is selected, update it. Otherwise,
|
|
90
|
+
* create a new link.
|
|
91
|
+
*/
|
|
92
|
+
const onButtonClick = () => {
|
|
93
|
+
if ($selectionInlineTypes.includes(type)) {
|
|
94
|
+
updateLink();
|
|
95
|
+
} else {
|
|
96
|
+
createLink();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Handle `keydown` event fired on the input fields on the dialog.
|
|
102
|
+
* @param {KeyboardEvent} event - `keydown` event.
|
|
103
|
+
*/
|
|
104
|
+
const onInputKeyDown = (event) => {
|
|
105
|
+
if (matchShortcuts(event, 'Enter') && isURL(anchorURL)) {
|
|
106
|
+
openDialog = false;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Handle `close` event fired on the dialog. Insert a link with the given URL and optionally text.
|
|
112
|
+
* @param {CustomEvent} event - `close` event.
|
|
113
|
+
* @see https://github.com/facebook/lexical/discussions/3013
|
|
114
|
+
*/
|
|
115
|
+
const onDialogClose = async (event) => {
|
|
116
|
+
if (event.detail !== 'cancel' && dialogMode !== 'remove') {
|
|
117
|
+
if (!hasAnchor) {
|
|
118
|
+
anchorText = anchorText.trim();
|
|
119
|
+
anchorText ||= anchorURL;
|
|
120
|
+
|
|
121
|
+
await new Promise((resolve) => {
|
|
122
|
+
$editor.update(() => {
|
|
123
|
+
const selection = getSelection() ?? getPreviousSelection()?.clone();
|
|
124
|
+
|
|
125
|
+
if (isRangeSelection(selection)) {
|
|
126
|
+
const { anchor, focus } = selection;
|
|
127
|
+
|
|
128
|
+
selection.insertText(anchorText);
|
|
129
|
+
anchor.offset -= anchorText.length;
|
|
130
|
+
focus.offset = anchor.offset + anchorText.length;
|
|
131
|
+
|
|
132
|
+
resolve(void 0);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
$editor.dispatchCommand(TOGGLE_LINK_COMMAND, anchorURL);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
anchorURL = '';
|
|
142
|
+
anchorText = '';
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
onMount(() => {
|
|
146
|
+
// Open the dialog with a keyboard shortcut: Accel+K
|
|
147
|
+
$editor.registerCommand(
|
|
148
|
+
KEY_DOWN_COMMAND,
|
|
149
|
+
(event) => {
|
|
150
|
+
if (matchShortcuts(event, isMac() ? 'Meta+K' : 'Ctrl+K')) {
|
|
151
|
+
event.preventDefault();
|
|
152
|
+
onButtonClick();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return true;
|
|
156
|
+
},
|
|
157
|
+
COMMAND_PRIORITY_NORMAL,
|
|
158
|
+
);
|
|
159
|
+
});
|
|
160
|
+
</script>
|
|
161
|
+
|
|
162
|
+
<Button
|
|
163
|
+
iconic
|
|
164
|
+
aria-label={$_(`_sui.text_editor.${availableButtons[type].labelKey}`)}
|
|
165
|
+
aria-controls="{$editorId}-lexical-root"
|
|
166
|
+
disabled={!$useRichText}
|
|
167
|
+
pressed={$selectionInlineTypes.includes(type)}
|
|
168
|
+
on:click={() => {
|
|
169
|
+
onButtonClick();
|
|
170
|
+
}}
|
|
171
|
+
>
|
|
172
|
+
<Icon slot="start-icon" name={availableButtons[type].icon} />
|
|
173
|
+
</Button>
|
|
174
|
+
|
|
175
|
+
<Dialog
|
|
176
|
+
title={dialogMode === 'create'
|
|
177
|
+
? $_('_sui.text_editor.insert_link')
|
|
178
|
+
: $_('_sui.text_editor.update_link')}
|
|
179
|
+
bind:open={openDialog}
|
|
180
|
+
bind:value={anchorURL}
|
|
181
|
+
okDisabled={!isURL(anchorURL)}
|
|
182
|
+
okLabel={dialogMode === 'create' ? $_('_sui.insert') : $_('_sui.update')}
|
|
183
|
+
on:close={(event) => {
|
|
184
|
+
onDialogClose(event);
|
|
185
|
+
}}
|
|
186
|
+
>
|
|
187
|
+
{#if !hasAnchor}
|
|
188
|
+
<div role="none">
|
|
189
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
190
|
+
<label>
|
|
191
|
+
{$_('_sui.text_editor.text')}<br />
|
|
192
|
+
<TextInput
|
|
193
|
+
autofocus
|
|
194
|
+
bind:value={anchorText}
|
|
195
|
+
flex
|
|
196
|
+
on:keydown={(event) => {
|
|
197
|
+
onInputKeyDown(event);
|
|
198
|
+
}}
|
|
199
|
+
/>
|
|
200
|
+
</label>
|
|
201
|
+
</div>
|
|
202
|
+
{/if}
|
|
203
|
+
<div role="none">
|
|
204
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
205
|
+
<label>
|
|
206
|
+
{$_('_sui.text_editor.url')}<br />
|
|
207
|
+
<TextInput
|
|
208
|
+
autofocus={hasAnchor || undefined}
|
|
209
|
+
bind:value={anchorURL}
|
|
210
|
+
flex
|
|
211
|
+
aria-label="URL"
|
|
212
|
+
on:keydown={(event) => {
|
|
213
|
+
onInputKeyDown(event);
|
|
214
|
+
}}
|
|
215
|
+
/>
|
|
216
|
+
</label>
|
|
217
|
+
</div>
|
|
218
|
+
<svelte:fragment slot="footer-extra">
|
|
219
|
+
{#if dialogMode !== 'create'}
|
|
220
|
+
<Button
|
|
221
|
+
variant="secondary"
|
|
222
|
+
label={$_('_sui.remove')}
|
|
223
|
+
on:click={() => {
|
|
224
|
+
removeLink();
|
|
225
|
+
dialogMode = 'remove';
|
|
226
|
+
openDialog = false;
|
|
227
|
+
}}
|
|
228
|
+
/>
|
|
229
|
+
{/if}
|
|
230
|
+
</svelte:fragment>
|
|
231
|
+
</Dialog>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} InsertLinkButtonProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} InsertLinkButtonEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} InsertLinkButtonSlots */
|
|
4
|
+
export default class InsertLinkButton extends SvelteComponent<{
|
|
5
|
+
[x: string]: never;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {}> {
|
|
9
|
+
}
|
|
10
|
+
export type InsertLinkButtonProps = typeof __propDef.props;
|
|
11
|
+
export type InsertLinkButtonEvents = typeof __propDef.events;
|
|
12
|
+
export type InsertLinkButtonSlots = typeof __propDef.slots;
|
|
13
|
+
import { SvelteComponent } from "svelte";
|
|
14
|
+
declare const __propDef: {
|
|
15
|
+
props: {
|
|
16
|
+
[x: string]: never;
|
|
17
|
+
};
|
|
18
|
+
events: {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
};
|
|
21
|
+
slots: {};
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND } from '@lexical/list';
|
|
3
|
+
import {
|
|
4
|
+
$createHeadingNode as createHeadingNode,
|
|
5
|
+
$createQuoteNode as createQuoteNode,
|
|
6
|
+
} from '@lexical/rich-text';
|
|
7
|
+
import { $setBlocksType as setBlocksType } from '@lexical/selection';
|
|
8
|
+
import {
|
|
9
|
+
$createParagraphNode as createParagraphNode,
|
|
10
|
+
$getSelection as getSelection,
|
|
11
|
+
} from 'lexical';
|
|
12
|
+
import { getContext } from 'svelte';
|
|
13
|
+
import { _ } from 'svelte-i18n';
|
|
14
|
+
import { availableButtons } from '..';
|
|
15
|
+
import MenuItemCheckbox from '../../menu/menu-item-checkbox.svelte';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Button type.
|
|
19
|
+
* @type {TextEditorBlockType}
|
|
20
|
+
*/
|
|
21
|
+
export let type;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Text editor state.
|
|
25
|
+
* @type {TextEditorState}
|
|
26
|
+
*/
|
|
27
|
+
const { editor, selectionBlockType } = getContext('state');
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Whether the current selection matches the button {@link type}.
|
|
31
|
+
*/
|
|
32
|
+
$: selectionTypeMatches = $selectionBlockType === type;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Change the current selection’s type to {@link type}.
|
|
36
|
+
*/
|
|
37
|
+
const changeBlockType = () => {
|
|
38
|
+
const [, headingLevel] = type.match(/^heading-(\d)$/) ?? [];
|
|
39
|
+
|
|
40
|
+
if (headingLevel) {
|
|
41
|
+
$editor.update(() => {
|
|
42
|
+
setBlocksType(getSelection(), () =>
|
|
43
|
+
createHeadingNode(
|
|
44
|
+
/** @type {import('@lexical/rich-text').HeadingTagType} */ (`h${headingLevel}`),
|
|
45
|
+
),
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (type === 'paragraph') {
|
|
51
|
+
$editor.update(() => {
|
|
52
|
+
setBlocksType(getSelection(), () => createParagraphNode());
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (type === 'bulleted-list') {
|
|
57
|
+
$editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (type === 'numbered-list') {
|
|
61
|
+
$editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (type === 'blockquote') {
|
|
65
|
+
$editor.update(() => {
|
|
66
|
+
setBlocksType(getSelection(), () => createQuoteNode());
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
</script>
|
|
71
|
+
|
|
72
|
+
{#key selectionTypeMatches}
|
|
73
|
+
<MenuItemCheckbox
|
|
74
|
+
iconName={availableButtons[type].icon}
|
|
75
|
+
label={$_(`_sui.text_editor.${availableButtons[type].labelKey}`)}
|
|
76
|
+
checked={selectionTypeMatches}
|
|
77
|
+
on:click={() => {
|
|
78
|
+
if (!selectionTypeMatches) {
|
|
79
|
+
changeBlockType();
|
|
80
|
+
}
|
|
81
|
+
}}
|
|
82
|
+
/>
|
|
83
|
+
{/key}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} ToggleBlockMenuItemProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} ToggleBlockMenuItemEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} ToggleBlockMenuItemSlots */
|
|
4
|
+
export default class ToggleBlockMenuItem extends SvelteComponent<{
|
|
5
|
+
type: TextEditorBlockType;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {}> {
|
|
9
|
+
}
|
|
10
|
+
export type ToggleBlockMenuItemProps = typeof __propDef.props;
|
|
11
|
+
export type ToggleBlockMenuItemEvents = typeof __propDef.events;
|
|
12
|
+
export type ToggleBlockMenuItemSlots = typeof __propDef.slots;
|
|
13
|
+
import { SvelteComponent } from "svelte";
|
|
14
|
+
declare const __propDef: {
|
|
15
|
+
props: {
|
|
16
|
+
type: TextEditorBlockType;
|
|
17
|
+
};
|
|
18
|
+
events: {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
};
|
|
21
|
+
slots: {};
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
-->
|
|
7
7
|
<script>
|
|
8
8
|
import { _ } from 'svelte-i18n';
|
|
9
|
-
import { getRandomId } from '../../services/util';
|
|
10
9
|
import Button from '../button/button.svelte';
|
|
11
10
|
import Icon from '../icon/icon.svelte';
|
|
12
11
|
import TextInput from './text-input.svelte';
|
|
12
|
+
import { getRandomId } from '../../services/util';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* The `class` attribute on the wrapper element.
|
|
@@ -9,16 +9,16 @@
|
|
|
9
9
|
export default class NumberInput extends SvelteComponent<{
|
|
10
10
|
[x: string]: any;
|
|
11
11
|
class?: string | undefined;
|
|
12
|
-
disabled?: boolean | undefined;
|
|
13
12
|
invalid?: boolean | undefined;
|
|
14
|
-
max?: number | undefined;
|
|
15
|
-
min?: number | undefined;
|
|
16
|
-
required?: boolean | undefined;
|
|
17
|
-
step?: number | undefined;
|
|
18
|
-
value?: string | undefined;
|
|
19
13
|
hidden?: boolean | undefined;
|
|
14
|
+
disabled?: boolean | undefined;
|
|
15
|
+
value?: string | undefined;
|
|
20
16
|
readonly?: boolean | undefined;
|
|
21
17
|
flex?: boolean | undefined;
|
|
18
|
+
required?: boolean | undefined;
|
|
19
|
+
min?: number | undefined;
|
|
20
|
+
max?: number | undefined;
|
|
21
|
+
step?: number | undefined;
|
|
22
22
|
}, {
|
|
23
23
|
keydown: KeyboardEvent;
|
|
24
24
|
keyup: KeyboardEvent;
|
|
@@ -44,16 +44,16 @@ declare const __propDef: {
|
|
|
44
44
|
props: {
|
|
45
45
|
[x: string]: any;
|
|
46
46
|
class?: string | undefined;
|
|
47
|
-
disabled?: boolean | undefined;
|
|
48
47
|
invalid?: boolean | undefined;
|
|
49
|
-
max?: number | undefined;
|
|
50
|
-
min?: number | undefined;
|
|
51
|
-
required?: boolean | undefined;
|
|
52
|
-
step?: number | undefined;
|
|
53
|
-
value?: string | undefined;
|
|
54
48
|
hidden?: boolean | undefined;
|
|
49
|
+
disabled?: boolean | undefined;
|
|
50
|
+
value?: string | undefined;
|
|
55
51
|
readonly?: boolean | undefined;
|
|
56
52
|
flex?: boolean | undefined;
|
|
53
|
+
required?: boolean | undefined;
|
|
54
|
+
min?: number | undefined;
|
|
55
|
+
max?: number | undefined;
|
|
56
|
+
step?: number | undefined;
|
|
57
57
|
};
|
|
58
58
|
events: {
|
|
59
59
|
keydown: KeyboardEvent;
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
-->
|
|
8
8
|
<script>
|
|
9
9
|
import { _ } from 'svelte-i18n';
|
|
10
|
-
import { getRandomId } from '../../services/util';
|
|
11
10
|
import Button from '../button/button.svelte';
|
|
12
11
|
import Icon from '../icon/icon.svelte';
|
|
13
12
|
import TextInput from './text-input.svelte';
|
|
13
|
+
import { getRandomId } from '../../services/util';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* The `class` attribute on the wrapper element.
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
export default class PasswordInput extends SvelteComponent<{
|
|
11
11
|
[x: string]: any;
|
|
12
12
|
class?: string | undefined;
|
|
13
|
-
disabled?: boolean | undefined;
|
|
14
13
|
invalid?: boolean | undefined;
|
|
15
|
-
required?: boolean | undefined;
|
|
16
|
-
value?: string | undefined;
|
|
17
14
|
hidden?: boolean | undefined;
|
|
15
|
+
disabled?: boolean | undefined;
|
|
16
|
+
value?: string | undefined;
|
|
18
17
|
readonly?: boolean | undefined;
|
|
19
18
|
flex?: boolean | undefined;
|
|
19
|
+
required?: boolean | undefined;
|
|
20
20
|
}, {
|
|
21
21
|
keydown: KeyboardEvent;
|
|
22
22
|
keyup: KeyboardEvent;
|
|
@@ -39,13 +39,13 @@ declare const __propDef: {
|
|
|
39
39
|
props: {
|
|
40
40
|
[x: string]: any;
|
|
41
41
|
class?: string | undefined;
|
|
42
|
-
disabled?: boolean | undefined;
|
|
43
42
|
invalid?: boolean | undefined;
|
|
44
|
-
required?: boolean | undefined;
|
|
45
|
-
value?: string | undefined;
|
|
46
43
|
hidden?: boolean | undefined;
|
|
44
|
+
disabled?: boolean | undefined;
|
|
45
|
+
value?: string | undefined;
|
|
47
46
|
readonly?: boolean | undefined;
|
|
48
47
|
flex?: boolean | undefined;
|
|
48
|
+
required?: boolean | undefined;
|
|
49
49
|
};
|
|
50
50
|
events: {
|
|
51
51
|
keydown: KeyboardEvent;
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
<script>
|
|
11
11
|
import { _ } from 'svelte-i18n';
|
|
12
|
-
import { getRandomId } from '../../services/util';
|
|
13
12
|
import Button from '../button/button.svelte';
|
|
14
13
|
import Icon from '../icon/icon.svelte';
|
|
15
14
|
import TextInput from './text-input.svelte';
|
|
15
|
+
import { getRandomId } from '../../services/util';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* The `class` attribute on the wrapper element.
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
on:click={() => {
|
|
115
115
|
value = '';
|
|
116
116
|
input?.focus();
|
|
117
|
-
|
|
117
|
+
globalThis.requestIdleCallback(() => {
|
|
118
118
|
input?.dispatchEvent(new KeyboardEvent('input'));
|
|
119
119
|
input?.dispatchEvent(new KeyboardEvent('keypress'));
|
|
120
120
|
input?.dispatchEvent(new KeyboardEvent('change'));
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
export default class SearchBar extends SvelteComponent<{
|
|
11
11
|
[x: string]: any;
|
|
12
12
|
class?: string | undefined;
|
|
13
|
-
disabled?: boolean | undefined;
|
|
14
13
|
focus?: (() => void) | undefined;
|
|
15
14
|
invalid?: boolean | undefined;
|
|
16
|
-
required?: boolean | undefined;
|
|
17
|
-
value?: string | undefined;
|
|
18
15
|
hidden?: boolean | undefined;
|
|
16
|
+
disabled?: boolean | undefined;
|
|
17
|
+
value?: string | undefined;
|
|
19
18
|
readonly?: boolean | undefined;
|
|
20
19
|
flex?: boolean | undefined;
|
|
20
|
+
required?: boolean | undefined;
|
|
21
21
|
}, {
|
|
22
22
|
keydown: KeyboardEvent;
|
|
23
23
|
keyup: KeyboardEvent;
|
|
@@ -66,14 +66,14 @@ declare const __propDef: {
|
|
|
66
66
|
props: {
|
|
67
67
|
[x: string]: any;
|
|
68
68
|
class?: string | undefined;
|
|
69
|
-
disabled?: boolean | undefined;
|
|
70
69
|
focus?: (() => void) | undefined;
|
|
71
70
|
invalid?: boolean | undefined;
|
|
72
|
-
required?: boolean | undefined;
|
|
73
|
-
value?: string | undefined;
|
|
74
71
|
hidden?: boolean | undefined;
|
|
72
|
+
disabled?: boolean | undefined;
|
|
73
|
+
value?: string | undefined;
|
|
75
74
|
readonly?: boolean | undefined;
|
|
76
75
|
flex?: boolean | undefined;
|
|
76
|
+
required?: boolean | undefined;
|
|
77
77
|
};
|
|
78
78
|
events: {
|
|
79
79
|
keydown: KeyboardEvent;
|
|
@@ -11,13 +11,13 @@ export default class TextArea extends SvelteComponent<{
|
|
|
11
11
|
[x: string]: any;
|
|
12
12
|
class?: string | undefined;
|
|
13
13
|
name?: string | undefined;
|
|
14
|
-
disabled?: boolean | undefined;
|
|
15
14
|
invalid?: boolean | undefined;
|
|
16
|
-
required?: boolean | undefined;
|
|
17
|
-
value?: string | undefined;
|
|
18
15
|
hidden?: boolean | undefined;
|
|
16
|
+
disabled?: boolean | undefined;
|
|
17
|
+
value?: string | undefined;
|
|
19
18
|
readonly?: boolean | undefined;
|
|
20
19
|
flex?: boolean | undefined;
|
|
20
|
+
required?: boolean | undefined;
|
|
21
21
|
autoResize?: boolean | undefined;
|
|
22
22
|
}, {
|
|
23
23
|
keydown: KeyboardEvent;
|
|
@@ -38,13 +38,13 @@ declare const __propDef: {
|
|
|
38
38
|
[x: string]: any;
|
|
39
39
|
class?: string | undefined;
|
|
40
40
|
name?: string | undefined;
|
|
41
|
-
disabled?: boolean | undefined;
|
|
42
41
|
invalid?: boolean | undefined;
|
|
43
|
-
required?: boolean | undefined;
|
|
44
|
-
value?: string | undefined;
|
|
45
42
|
hidden?: boolean | undefined;
|
|
43
|
+
disabled?: boolean | undefined;
|
|
44
|
+
value?: string | undefined;
|
|
46
45
|
readonly?: boolean | undefined;
|
|
47
46
|
flex?: boolean | undefined;
|
|
47
|
+
required?: boolean | undefined;
|
|
48
48
|
autoResize?: boolean | undefined;
|
|
49
49
|
};
|
|
50
50
|
events: {
|
|
@@ -10,16 +10,16 @@ export default class TextInput extends SvelteComponent<{
|
|
|
10
10
|
[x: string]: any;
|
|
11
11
|
class?: string | undefined;
|
|
12
12
|
name?: string | undefined;
|
|
13
|
-
disabled?: boolean | undefined;
|
|
14
|
-
invalid?: boolean | undefined;
|
|
15
|
-
required?: boolean | undefined;
|
|
16
|
-
value?: string | number | undefined;
|
|
17
13
|
role?: "textbox" | "searchbox" | "combobox" | "spinbutton" | undefined;
|
|
14
|
+
invalid?: boolean | undefined;
|
|
18
15
|
hidden?: boolean | undefined;
|
|
16
|
+
disabled?: boolean | undefined;
|
|
19
17
|
element?: HTMLInputElement | undefined;
|
|
18
|
+
value?: string | number | undefined;
|
|
20
19
|
readonly?: boolean | undefined;
|
|
21
20
|
keyShortcuts?: string | undefined;
|
|
22
21
|
flex?: boolean | undefined;
|
|
22
|
+
required?: boolean | undefined;
|
|
23
23
|
showInlineLabel?: boolean | undefined;
|
|
24
24
|
inputmode?: "text" | "numeric" | "decimal" | "tel" | "search" | "email" | "url" | undefined;
|
|
25
25
|
}, {
|
|
@@ -83,16 +83,16 @@ declare const __propDef: {
|
|
|
83
83
|
[x: string]: any;
|
|
84
84
|
class?: string | undefined;
|
|
85
85
|
name?: string | undefined;
|
|
86
|
-
disabled?: boolean | undefined;
|
|
87
|
-
invalid?: boolean | undefined;
|
|
88
|
-
required?: boolean | undefined;
|
|
89
|
-
value?: string | number | undefined;
|
|
90
86
|
role?: "textbox" | "searchbox" | "combobox" | "spinbutton" | undefined;
|
|
87
|
+
invalid?: boolean | undefined;
|
|
91
88
|
hidden?: boolean | undefined;
|
|
89
|
+
disabled?: boolean | undefined;
|
|
92
90
|
element?: HTMLInputElement | undefined;
|
|
91
|
+
value?: string | number | undefined;
|
|
93
92
|
readonly?: boolean | undefined;
|
|
94
93
|
keyShortcuts?: string | undefined;
|
|
95
94
|
flex?: boolean | undefined;
|
|
95
|
+
required?: boolean | undefined;
|
|
96
96
|
showInlineLabel?: boolean | undefined;
|
|
97
97
|
inputmode?: "text" | "numeric" | "decimal" | "tel" | "search" | "email" | "url" | undefined;
|
|
98
98
|
};
|
|
@@ -82,10 +82,10 @@
|
|
|
82
82
|
void id;
|
|
83
83
|
void show;
|
|
84
84
|
void duration;
|
|
85
|
-
|
|
85
|
+
globalThis.clearTimeout(timerId);
|
|
86
86
|
|
|
87
87
|
if (show && duration) {
|
|
88
|
-
timerId =
|
|
88
|
+
timerId = globalThis.setTimeout(() => {
|
|
89
89
|
show = false;
|
|
90
90
|
}, duration);
|
|
91
91
|
}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
export default class Toast extends SvelteComponent<{
|
|
10
10
|
[x: string]: any;
|
|
11
11
|
id?: number | undefined;
|
|
12
|
-
position?: ToastPosition | undefined;
|
|
13
12
|
show?: boolean | undefined;
|
|
13
|
+
position?: ToastPosition | undefined;
|
|
14
14
|
duration?: number | undefined;
|
|
15
15
|
}, {
|
|
16
16
|
[evt: string]: CustomEvent<any>;
|
|
@@ -26,8 +26,8 @@ declare const __propDef: {
|
|
|
26
26
|
props: {
|
|
27
27
|
[x: string]: any;
|
|
28
28
|
id?: number | undefined;
|
|
29
|
-
position?: ToastPosition | undefined;
|
|
30
29
|
show?: boolean | undefined;
|
|
30
|
+
position?: ToastPosition | undefined;
|
|
31
31
|
duration?: number | undefined;
|
|
32
32
|
};
|
|
33
33
|
events: {
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
export default class Toolbar extends SvelteComponent<{
|
|
10
10
|
[x: string]: any;
|
|
11
11
|
class?: string | undefined;
|
|
12
|
-
disabled?: boolean | undefined;
|
|
13
12
|
hidden?: boolean | undefined;
|
|
13
|
+
disabled?: boolean | undefined;
|
|
14
14
|
variant?: "primary" | "secondary" | undefined;
|
|
15
15
|
orientation?: "vertical" | "horizontal" | undefined;
|
|
16
16
|
}, {
|
|
@@ -27,8 +27,8 @@ declare const __propDef: {
|
|
|
27
27
|
props: {
|
|
28
28
|
[x: string]: any;
|
|
29
29
|
class?: string | undefined;
|
|
30
|
-
disabled?: boolean | undefined;
|
|
31
30
|
hidden?: boolean | undefined;
|
|
31
|
+
disabled?: boolean | undefined;
|
|
32
32
|
variant?: 'primary' | 'secondary' | undefined;
|
|
33
33
|
orientation?: "vertical" | "horizontal" | undefined;
|
|
34
34
|
};
|