@k2b/ui 0.31.0 → 0.33.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/base.css +2 -0
- package/dist/browser/actions/Dropdown.js +159 -99
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +113 -56
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/ViewTabs.js +8 -0
- package/dist/browser/actions/ViewTabs.js.map +1 -1
- package/dist/browser/actions/filter-messages.js +26 -2
- package/dist/browser/actions/filter-messages.js.map +1 -1
- package/dist/browser/actions/menu-rows.js +23 -3
- package/dist/browser/actions/menu-rows.js.map +1 -1
- package/dist/browser/actions/menu-sheet.js +2 -7
- package/dist/browser/actions/menu-sheet.js.map +1 -1
- package/dist/browser/chat/ChatComposer.js +480 -403
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +14 -0
- package/dist/browser/chat/chat-messages.js.map +1 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/content/Calendar.js +39 -29
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/CalendarDayView.js +159 -165
- package/dist/browser/content/CalendarDayView.js.map +1 -1
- package/dist/browser/content/Chart.js +104 -55
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +5 -3
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/MapView.js +4 -4
- package/dist/browser/content/MapView.js.map +1 -1
- package/dist/browser/content/MessageRow.js +607 -343
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/ReactionBar.js +17 -0
- package/dist/browser/content/ReactionBar.js.map +1 -1
- package/dist/browser/content/chart-inspection-core.js +4 -1
- package/dist/browser/content/chart-inspection-core.js.map +1 -1
- package/dist/browser/content/code-highlight.js +66 -0
- package/dist/browser/content/code-highlight.js.map +1 -1
- package/dist/browser/content/index.js +2 -1
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/map-view-live.js +47 -10
- package/dist/browser/content/map-view-live.js.map +1 -1
- package/dist/browser/content/map-view-types.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js +6 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/inputs/AutocompleteEditor.js +167 -104
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/browser/inputs/RichSelect.js +1474 -0
- package/dist/browser/inputs/RichSelect.js.map +1 -0
- package/dist/browser/inputs/TextInput.js +99 -61
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/choice.js +19 -8
- package/dist/browser/inputs/choice.js.map +1 -1
- package/dist/browser/inputs/index.js +1 -0
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/inputs/rich-select-messages.js +46 -0
- package/dist/browser/inputs/rich-select-messages.js.map +1 -0
- package/dist/browser/intl/shortcut-messages.js +4 -0
- package/dist/browser/intl/shortcut-messages.js.map +1 -1
- package/dist/browser/intl/shortcut.js +4 -0
- package/dist/browser/intl/shortcut.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +624 -565
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +10 -1
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/MobileShell.js +213 -38
- package/dist/browser/layout/MobileShell.js.map +1 -1
- package/dist/browser/layout/Navigation.js +14 -5
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +9 -3
- package/dist/browser/layout/PageTitle.js.map +1 -1
- package/dist/browser/layout/ResizeSeparator.js +8 -2
- package/dist/browser/layout/ResizeSeparator.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +192 -31
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/index.js +1 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/layout/resize-separator.js +25 -1
- package/dist/browser/layout/resize-separator.js.map +1 -1
- package/dist/browser/layout/scroll-fade.js +32 -5
- package/dist/browser/layout/scroll-fade.js.map +1 -1
- package/dist/browser/surfaces/NoticeCard.js +46 -30
- package/dist/browser/surfaces/NoticeCard.js.map +1 -1
- package/dist/browser/surfaces/Skeleton.js +14 -0
- package/dist/browser/surfaces/Skeleton.js.map +1 -0
- package/dist/browser/surfaces/index.js +1 -0
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/browser/surfaces/resource-messages.js +2 -2
- package/dist/browser/surfaces/resource-messages.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +51 -27
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +67 -16
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/ViewTabs.js +8 -0
- package/dist/ssr/actions/ViewTabs.js.map +1 -1
- package/dist/ssr/actions/filter-messages.js +26 -2
- package/dist/ssr/actions/filter-messages.js.map +1 -1
- package/dist/ssr/actions/menu-rows.js +23 -3
- package/dist/ssr/actions/menu-rows.js.map +1 -1
- package/dist/ssr/actions/menu-sheet.js +2 -7
- package/dist/ssr/actions/menu-sheet.js.map +1 -1
- package/dist/ssr/chat/ChatComposer.js +96 -67
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +14 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/content/Calendar.js +40 -31
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/CalendarDayView.js +40 -48
- package/dist/ssr/content/CalendarDayView.js.map +1 -1
- package/dist/ssr/content/Chart.js +27 -7
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +5 -3
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/MapView.js +4 -4
- package/dist/ssr/content/MapView.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +264 -91
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/ReactionBar.js +17 -0
- package/dist/ssr/content/ReactionBar.js.map +1 -1
- package/dist/ssr/content/chart-inspection-core.js +4 -1
- package/dist/ssr/content/chart-inspection-core.js.map +1 -1
- package/dist/ssr/content/code-highlight.js +66 -0
- package/dist/ssr/content/code-highlight.js.map +1 -1
- package/dist/ssr/content/index.js +2 -1
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/map-view-types.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js +6 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteEditor.js +64 -24
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/ssr/inputs/RichSelect.js +950 -0
- package/dist/ssr/inputs/RichSelect.js.map +1 -0
- package/dist/ssr/inputs/TextInput.js +44 -17
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/choice.js +19 -8
- package/dist/ssr/inputs/choice.js.map +1 -1
- package/dist/ssr/inputs/index.js +1 -0
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/inputs/rich-select-messages.js +46 -0
- package/dist/ssr/inputs/rich-select-messages.js.map +1 -0
- package/dist/ssr/intl/shortcut-messages.js +4 -0
- package/dist/ssr/intl/shortcut-messages.js.map +1 -1
- package/dist/ssr/intl/shortcut.js +4 -0
- package/dist/ssr/intl/shortcut.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +166 -125
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +1 -1
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/MobileShell.js +100 -20
- package/dist/ssr/layout/MobileShell.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +1 -1
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +9 -3
- package/dist/ssr/layout/PageTitle.js.map +1 -1
- package/dist/ssr/layout/ResizeSeparator.js +4 -1
- package/dist/ssr/layout/ResizeSeparator.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +192 -31
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/index.js +1 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/layout/resize-separator.js +25 -1
- package/dist/ssr/layout/resize-separator.js.map +1 -1
- package/dist/ssr/layout/scroll-fade.js +32 -5
- package/dist/ssr/layout/scroll-fade.js.map +1 -1
- package/dist/ssr/surfaces/NoticeCard.js +21 -12
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
- package/dist/ssr/surfaces/Skeleton.js +8 -0
- package/dist/ssr/surfaces/Skeleton.js.map +1 -0
- package/dist/ssr/surfaces/index.js +1 -0
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/ssr/surfaces/resource-messages.js +2 -2
- package/dist/ssr/surfaces/resource-messages.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/Dropdown.d.ts +14 -0
- package/dist/types/actions/FilterChip.d.ts +11 -0
- package/dist/types/actions/filter-messages.d.ts +12 -0
- package/dist/types/actions/menu-rows.d.ts +7 -2
- package/dist/types/chat/ChatComposer.d.ts +13 -0
- package/dist/types/chat/chat-messages.d.ts +7 -0
- package/dist/types/chat/index.d.ts +1 -1
- package/dist/types/content/Calendar.d.ts +7 -0
- package/dist/types/content/Chart.d.ts +4 -2
- package/dist/types/content/ChartExplorer.d.ts +0 -1
- package/dist/types/content/MessageRow.d.ts +64 -2
- package/dist/types/content/code-highlight.d.ts +3 -1
- package/dist/types/content/index.d.ts +3 -2
- package/dist/types/content/map-view-live.d.ts +1 -1
- package/dist/types/content/map-view-types.d.ts +2 -0
- package/dist/types/feedback/dialog-core.d.ts +3 -0
- package/dist/types/inputs/AutocompleteEditor.d.ts +6 -1
- package/dist/types/inputs/RichSelect.d.ts +93 -0
- package/dist/types/inputs/TextInput.d.ts +5 -2
- package/dist/types/inputs/choice.d.ts +24 -4
- package/dist/types/inputs/index.d.ts +2 -0
- package/dist/types/inputs/rich-select-messages.d.ts +21 -0
- package/dist/types/intl/shortcut-messages.d.ts +2 -0
- package/dist/types/layout/AppWorkspace.d.ts +9 -0
- package/dist/types/layout/DetailPanel.d.ts +2 -0
- package/dist/types/layout/MobileShell.d.ts +52 -5
- package/dist/types/layout/app-workspace-controller.d.ts +2 -0
- package/dist/types/layout/index.d.ts +2 -1
- package/dist/types/layout/navigation-model.d.ts +2 -0
- package/dist/types/layout/resize-separator.d.ts +1 -0
- package/dist/types/layout/scroll-fade.d.ts +5 -0
- package/dist/types/surfaces/NoticeCard.d.ts +3 -0
- package/dist/types/surfaces/Skeleton.d.ts +6 -0
- package/dist/types/surfaces/index.d.ts +1 -0
- package/package.json +4 -4
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { template as _$template } from "solid-js/web";
|
|
2
2
|
import { delegateEvents as _$delegateEvents } from "solid-js/web";
|
|
3
|
+
import { setProperty as _$setProperty } from "solid-js/web";
|
|
3
4
|
import { style as _$style } from "solid-js/web";
|
|
4
5
|
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
5
6
|
import { effect as _$effect } from "solid-js/web";
|
|
@@ -7,19 +8,22 @@ import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
|
7
8
|
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
8
9
|
import { spread as _$spread } from "solid-js/web";
|
|
9
10
|
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
10
|
-
import { use as _$use } from "solid-js/web";
|
|
11
|
-
import { createComponent as _$createComponent } from "solid-js/web";
|
|
12
11
|
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
13
12
|
import { insert as _$insert } from "solid-js/web";
|
|
13
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
14
|
+
import { use as _$use } from "solid-js/web";
|
|
14
15
|
import { memo as _$memo } from "solid-js/web";
|
|
15
|
-
var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-
|
|
16
|
-
_tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-
|
|
17
|
-
_tmpl$3 = /*#__PURE__*/_$template(`<div
|
|
18
|
-
_tmpl$4 = /*#__PURE__*/_$template(`<div class=k2b-
|
|
19
|
-
_tmpl$5 = /*#__PURE__*/_$template(`<div class=k2b-
|
|
20
|
-
_tmpl$6 = /*#__PURE__*/_$template(`<div
|
|
21
|
-
_tmpl$7 = /*#__PURE__*/_$template(`<
|
|
16
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__gutter aria-hidden=true>`),
|
|
17
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__placeholder aria-hidden=true>`),
|
|
18
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__status role=status><i class="ti ti-loader-2 k2b-spin"aria-hidden=true></i>Loading suggestions`),
|
|
19
|
+
_tmpl$4 = /*#__PURE__*/_$template(`<div popover=manual class=k2b-autocomplete__options role=presentation><div class=k2b-autocomplete__listbox role=listbox><!$><!/><!$><!/><!$><!/>`),
|
|
20
|
+
_tmpl$5 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete><div class=k2b-autocomplete__surface><!$><!/><!$><!/><div class=k2b-autocomplete__preview aria-hidden=true></div><textarea class=k2b-autocomplete__input></textarea></div><!$><!/>`),
|
|
21
|
+
_tmpl$6 = /*#__PURE__*/_$template(`<div>`),
|
|
22
|
+
_tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__status data-error=true role=alert><i class="ti ti-alert-circle"aria-hidden=true></i><span></span><button type=button>`),
|
|
23
|
+
_tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__option role=option><span></span><!$><!/>`),
|
|
24
|
+
_tmpl$9 = /*#__PURE__*/_$template(`<small>`);
|
|
22
25
|
import { createEffect, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, untrack } from "solid-js";
|
|
26
|
+
import { isServer } from "solid-js/web";
|
|
23
27
|
import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
|
|
24
28
|
import { useUiMessages } from "../intl/messages";
|
|
25
29
|
import { buildSuggestContext, createCompletionBehaviorState, detectQuery, displayLabel, plainTextHighlight, renderWithOverlay, resolveSuggestions } from "./completion";
|
|
@@ -31,6 +35,7 @@ export function AutocompleteEditor(props) {
|
|
|
31
35
|
const meta = createFieldMeta(props.id);
|
|
32
36
|
let textarea;
|
|
33
37
|
let preview;
|
|
38
|
+
let gutter;
|
|
34
39
|
let dropdown;
|
|
35
40
|
let currentAbort = null;
|
|
36
41
|
let currentTimer = null;
|
|
@@ -139,8 +144,13 @@ export function AutocompleteEditor(props) {
|
|
|
139
144
|
setCompletionError(null);
|
|
140
145
|
closeDropdown();
|
|
141
146
|
};
|
|
147
|
+
createEffect(() => {
|
|
148
|
+
if (!props.readOnly) return;
|
|
149
|
+
completionBehavior.reset();
|
|
150
|
+
clearCompletion();
|
|
151
|
+
});
|
|
142
152
|
const positionDropdown = () => {
|
|
143
|
-
if (!dropdown?.isConnected || !textarea?.isConnected) return;
|
|
153
|
+
if (props.readOnly || !dropdown?.isConnected || !textarea?.isConnected) return;
|
|
144
154
|
const anchor = preview?.querySelector("[data-completion-anchor]");
|
|
145
155
|
const rect = anchor?.getBoundingClientRect() ?? textarea.getBoundingClientRect();
|
|
146
156
|
const maxHeight = 260;
|
|
@@ -162,6 +172,7 @@ export function AutocompleteEditor(props) {
|
|
|
162
172
|
};
|
|
163
173
|
const isAbortError = error => error instanceof DOMException ? error.name === "AbortError" : Boolean(error && typeof error === "object" && "name" in error && error.name === "AbortError");
|
|
164
174
|
const applySuggestionList = (context, suggestions) => {
|
|
175
|
+
if (props.readOnly) return;
|
|
165
176
|
const currentText = localValue();
|
|
166
177
|
const normalized = context.text.toLowerCase();
|
|
167
178
|
const usable = suggestions.filter(suggestion => {
|
|
@@ -196,11 +207,11 @@ export function AutocompleteEditor(props) {
|
|
|
196
207
|
const runAsync = async (context, promise, signal) => {
|
|
197
208
|
try {
|
|
198
209
|
const suggestions = await promise;
|
|
199
|
-
if (signal.aborted) return;
|
|
210
|
+
if (signal.aborted || props.readOnly) return;
|
|
200
211
|
setLoading(false);
|
|
201
212
|
applySuggestionList(context, suggestions);
|
|
202
213
|
} catch (error) {
|
|
203
|
-
if (signal.aborted || isAbortError(error)) return;
|
|
214
|
+
if (signal.aborted || props.readOnly || isAbortError(error)) return;
|
|
204
215
|
setLoading(false);
|
|
205
216
|
setCompletionError(error instanceof Error ? error.message : completionMessages().suggestionsCouldNotLoad);
|
|
206
217
|
setDropdownOpen(true);
|
|
@@ -208,7 +219,7 @@ export function AutocompleteEditor(props) {
|
|
|
208
219
|
}
|
|
209
220
|
};
|
|
210
221
|
const startResolution = (context, signal) => {
|
|
211
|
-
if (signal.aborted || !textarea) return;
|
|
222
|
+
if (signal.aborted || props.readOnly || !textarea) return;
|
|
212
223
|
setCompletionError(null);
|
|
213
224
|
setLoading(true);
|
|
214
225
|
setDropdownOpen(true);
|
|
@@ -222,7 +233,7 @@ export function AutocompleteEditor(props) {
|
|
|
222
233
|
void runAsync(context, result.promise, signal);
|
|
223
234
|
}
|
|
224
235
|
} catch (error) {
|
|
225
|
-
if (signal.aborted || isAbortError(error)) return;
|
|
236
|
+
if (signal.aborted || props.readOnly || isAbortError(error)) return;
|
|
226
237
|
setLoading(false);
|
|
227
238
|
setCompletionError(error instanceof Error ? error.message : completionMessages().suggestionsCouldNotLoad);
|
|
228
239
|
setDropdownOpen(true);
|
|
@@ -230,6 +241,7 @@ export function AutocompleteEditor(props) {
|
|
|
230
241
|
}
|
|
231
242
|
};
|
|
232
243
|
const recomputeCompletion = () => {
|
|
244
|
+
if (props.readOnly) return clearCompletion();
|
|
233
245
|
if (!textarea) return;
|
|
234
246
|
const context = detectQuery(textarea, props.completions);
|
|
235
247
|
if (!context) {
|
|
@@ -260,7 +272,7 @@ export function AutocompleteEditor(props) {
|
|
|
260
272
|
}
|
|
261
273
|
};
|
|
262
274
|
const retryCompletion = () => {
|
|
263
|
-
if (!textarea) return;
|
|
275
|
+
if (props.readOnly || !textarea) return;
|
|
264
276
|
const context = detectQuery(textarea, props.completions);
|
|
265
277
|
if (!context) return clearCompletion();
|
|
266
278
|
currentAbort?.abort();
|
|
@@ -272,7 +284,7 @@ export function AutocompleteEditor(props) {
|
|
|
272
284
|
const activateSuggestion = (index = state()?.selectedIndex ?? -1) => {
|
|
273
285
|
const current = state();
|
|
274
286
|
const active = current?.suggestions[index];
|
|
275
|
-
if (!textarea || !current || !active) return false;
|
|
287
|
+
if (props.readOnly || !textarea || !current || !active) return false;
|
|
276
288
|
if (!active.textEdit && active.text === current.context.text) {
|
|
277
289
|
clearCompletion();
|
|
278
290
|
return false;
|
|
@@ -317,6 +329,10 @@ export function AutocompleteEditor(props) {
|
|
|
317
329
|
});
|
|
318
330
|
});
|
|
319
331
|
const onInput = event => {
|
|
332
|
+
if (props.readOnly) {
|
|
333
|
+
event.currentTarget.value = localValue();
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
320
336
|
if (event.inputType.startsWith("insert") && completionBehavior.tryExpand(event.currentTarget, props.completions)) {
|
|
321
337
|
return;
|
|
322
338
|
}
|
|
@@ -326,6 +342,13 @@ export function AutocompleteEditor(props) {
|
|
|
326
342
|
};
|
|
327
343
|
const onKeyDown = event => {
|
|
328
344
|
if (!textarea || event.isComposing) return;
|
|
345
|
+
if (props.readOnly) {
|
|
346
|
+
if (event.key === "Enter" && props.onSubmit && (props.singleLine && !event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey || !props.singleLine && (event.metaKey || event.ctrlKey))) {
|
|
347
|
+
event.preventDefault();
|
|
348
|
+
props.onSubmit();
|
|
349
|
+
}
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
329
352
|
if ((props.restoreExpansionOnBackspace ?? true) && event.key === "Backspace" && !event.metaKey && !event.ctrlKey && !event.altKey && !event.shiftKey && completionBehavior.tryRestore(textarea)) {
|
|
330
353
|
event.preventDefault();
|
|
331
354
|
return;
|
|
@@ -396,49 +419,76 @@ export function AutocompleteEditor(props) {
|
|
|
396
419
|
return props.disabled;
|
|
397
420
|
},
|
|
398
421
|
get children() {
|
|
399
|
-
var _el$ = _$getNextElement(_tmpl$
|
|
422
|
+
var _el$ = _$getNextElement(_tmpl$5),
|
|
400
423
|
_el$2 = _el$.firstChild,
|
|
401
|
-
_el$
|
|
402
|
-
[_el$
|
|
403
|
-
_el$
|
|
404
|
-
_el$
|
|
405
|
-
_el$
|
|
406
|
-
|
|
424
|
+
_el$7 = _el$2.firstChild,
|
|
425
|
+
[_el$8, _co$] = _$getNextMarker(_el$7.nextSibling),
|
|
426
|
+
_el$9 = _el$8.nextSibling,
|
|
427
|
+
[_el$0, _co$2] = _$getNextMarker(_el$9.nextSibling),
|
|
428
|
+
_el$5 = _el$0.nextSibling,
|
|
429
|
+
_el$6 = _el$5.nextSibling,
|
|
430
|
+
_el$18 = _el$2.nextSibling,
|
|
431
|
+
[_el$19, _co$6] = _$getNextMarker(_el$18.nextSibling);
|
|
407
432
|
_$insert(_el$2, _$createComponent(Show, {
|
|
408
433
|
get when() {
|
|
409
|
-
return
|
|
434
|
+
return props.lineNumbers;
|
|
410
435
|
},
|
|
411
436
|
get children() {
|
|
412
437
|
var _el$3 = _$getNextElement(_tmpl$);
|
|
413
|
-
|
|
438
|
+
var _ref$ = gutter;
|
|
439
|
+
typeof _ref$ === "function" ? _$use(_ref$, _el$3) : gutter = _el$3;
|
|
440
|
+
_$insert(_el$3, _$createComponent(For, {
|
|
441
|
+
get each() {
|
|
442
|
+
return localValue().split("\n");
|
|
443
|
+
},
|
|
444
|
+
children: (_, index) => (() => {
|
|
445
|
+
var _el$20 = _$getNextElement(_tmpl$6);
|
|
446
|
+
_$insert(_el$20, () => index() + 1);
|
|
447
|
+
_$effect(() => _$setAttribute(_el$20, "data-marked", props.markedLine === index() + 1 ? "true" : undefined));
|
|
448
|
+
return _el$20;
|
|
449
|
+
})()
|
|
450
|
+
}));
|
|
414
451
|
return _el$3;
|
|
415
452
|
}
|
|
416
|
-
}), _el$
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
453
|
+
}), _el$8, _co$);
|
|
454
|
+
_$insert(_el$2, _$createComponent(Show, {
|
|
455
|
+
get when() {
|
|
456
|
+
return _$memo(() => !!!localValue())() && props.placeholder;
|
|
457
|
+
},
|
|
458
|
+
get children() {
|
|
459
|
+
var _el$4 = _$getNextElement(_tmpl$2);
|
|
460
|
+
_$insert(_el$4, () => props.placeholder);
|
|
461
|
+
return _el$4;
|
|
462
|
+
}
|
|
463
|
+
}), _el$0, _co$2);
|
|
464
|
+
var _ref$2 = preview;
|
|
465
|
+
typeof _ref$2 === "function" ? _$use(_ref$2, _el$5) : preview = _el$5;
|
|
466
|
+
_el$6.addEventListener("blur", event => {
|
|
420
467
|
const next = event.relatedTarget;
|
|
421
468
|
if (next && dropdown?.contains(next)) return;
|
|
422
469
|
completionBehavior.reset();
|
|
423
470
|
clearCompletion();
|
|
424
471
|
});
|
|
425
|
-
_el$
|
|
426
|
-
_el$
|
|
427
|
-
_el$
|
|
472
|
+
_el$6.addEventListener("compositionend", () => setComposing(false));
|
|
473
|
+
_el$6.addEventListener("compositionstart", () => setComposing(true));
|
|
474
|
+
_el$6.addEventListener("scroll", event => {
|
|
475
|
+
if (gutter) gutter.scrollTop = event.currentTarget.scrollTop;
|
|
428
476
|
if (preview) {
|
|
429
477
|
preview.scrollTop = event.currentTarget.scrollTop;
|
|
430
478
|
preview.scrollLeft = event.currentTarget.scrollLeft;
|
|
431
479
|
}
|
|
432
480
|
if (dropdown?.matches(":popover-open")) positionDropdown();
|
|
433
481
|
});
|
|
434
|
-
_el$
|
|
435
|
-
_el$
|
|
436
|
-
|
|
482
|
+
_el$6.$$keydown = onKeyDown;
|
|
483
|
+
_el$6.addEventListener("change", event => {
|
|
484
|
+
if (!props.readOnly) props.onValueCommit?.(event.currentTarget.value);
|
|
485
|
+
});
|
|
486
|
+
_el$6.$$input = onInput;
|
|
437
487
|
_$use(element => {
|
|
438
488
|
textarea = element;
|
|
439
489
|
props.textareaRef?.(element);
|
|
440
|
-
}, _el$
|
|
441
|
-
_$spread(_el$
|
|
490
|
+
}, _el$6);
|
|
491
|
+
_$spread(_el$6, _$mergeProps({
|
|
442
492
|
get id() {
|
|
443
493
|
return meta.controlId;
|
|
444
494
|
},
|
|
@@ -448,6 +498,9 @@ export function AutocompleteEditor(props) {
|
|
|
448
498
|
get disabled() {
|
|
449
499
|
return props.disabled;
|
|
450
500
|
},
|
|
501
|
+
get readOnly() {
|
|
502
|
+
return props.readOnly;
|
|
503
|
+
},
|
|
451
504
|
get required() {
|
|
452
505
|
return props.required;
|
|
453
506
|
},
|
|
@@ -457,6 +510,9 @@ export function AutocompleteEditor(props) {
|
|
|
457
510
|
get maxLength() {
|
|
458
511
|
return props.maxLength;
|
|
459
512
|
},
|
|
513
|
+
get wrap() {
|
|
514
|
+
return props.lineNumbers ? "off" : "soft";
|
|
515
|
+
},
|
|
460
516
|
get rows() {
|
|
461
517
|
return _$memo(() => !!props.singleLine)() ? 1 : props.lines ?? 3;
|
|
462
518
|
}
|
|
@@ -469,66 +525,67 @@ export function AutocompleteEditor(props) {
|
|
|
469
525
|
get ["aria-activedescendant"]() {
|
|
470
526
|
return _$memo(() => !!(dropdownOpen() && state()))() ? optionId(state().selectedIndex) : undefined;
|
|
471
527
|
}
|
|
472
|
-
}), false,
|
|
528
|
+
}), false, true);
|
|
529
|
+
_$insert(_el$6, () => isServer ? `\n${localValue()}` : undefined);
|
|
473
530
|
_$insert(_el$, _$createComponent(Show, {
|
|
474
531
|
get when() {
|
|
475
532
|
return state() || loading() || completionError();
|
|
476
533
|
},
|
|
477
534
|
get children() {
|
|
478
|
-
var _el$
|
|
479
|
-
_el$
|
|
480
|
-
_el$
|
|
481
|
-
[_el$
|
|
482
|
-
_el$
|
|
483
|
-
[_el$
|
|
484
|
-
_el$
|
|
485
|
-
[_el$
|
|
486
|
-
var _ref$
|
|
487
|
-
typeof _ref$
|
|
488
|
-
_$setAttribute(_el$
|
|
489
|
-
_$insert(_el$
|
|
535
|
+
var _el$1 = _$getNextElement(_tmpl$4),
|
|
536
|
+
_el$10 = _el$1.firstChild,
|
|
537
|
+
_el$12 = _el$10.firstChild,
|
|
538
|
+
[_el$13, _co$3] = _$getNextMarker(_el$12.nextSibling),
|
|
539
|
+
_el$14 = _el$13.nextSibling,
|
|
540
|
+
[_el$15, _co$4] = _$getNextMarker(_el$14.nextSibling),
|
|
541
|
+
_el$16 = _el$15.nextSibling,
|
|
542
|
+
[_el$17, _co$5] = _$getNextMarker(_el$16.nextSibling);
|
|
543
|
+
var _ref$3 = dropdown;
|
|
544
|
+
typeof _ref$3 === "function" ? _$use(_ref$3, _el$1) : dropdown = _el$1;
|
|
545
|
+
_$setAttribute(_el$10, "id", listboxId);
|
|
546
|
+
_$insert(_el$10, _$createComponent(Show, {
|
|
490
547
|
get when() {
|
|
491
548
|
return loading();
|
|
492
549
|
},
|
|
493
550
|
get children() {
|
|
494
|
-
return _$getNextElement(_tmpl$
|
|
551
|
+
return _$getNextElement(_tmpl$3);
|
|
495
552
|
}
|
|
496
|
-
}), _el$
|
|
497
|
-
_$insert(_el$
|
|
553
|
+
}), _el$13, _co$3);
|
|
554
|
+
_$insert(_el$10, _$createComponent(Show, {
|
|
498
555
|
get when() {
|
|
499
556
|
return completionError();
|
|
500
557
|
},
|
|
501
558
|
children: message => (() => {
|
|
502
|
-
var _el$
|
|
503
|
-
_el$
|
|
504
|
-
_el$
|
|
505
|
-
_el$
|
|
506
|
-
_$insert(_el$
|
|
507
|
-
_el$
|
|
508
|
-
_el$
|
|
509
|
-
_$insert(_el$
|
|
559
|
+
var _el$21 = _$getNextElement(_tmpl$7),
|
|
560
|
+
_el$22 = _el$21.firstChild,
|
|
561
|
+
_el$23 = _el$22.nextSibling,
|
|
562
|
+
_el$24 = _el$23.nextSibling;
|
|
563
|
+
_$insert(_el$23, message);
|
|
564
|
+
_el$24.$$click = retryCompletion;
|
|
565
|
+
_el$24.$$mousedown = event => event.preventDefault();
|
|
566
|
+
_$insert(_el$24, () => messages().retry);
|
|
510
567
|
_$runHydrationEvents();
|
|
511
|
-
return _el$
|
|
568
|
+
return _el$21;
|
|
512
569
|
})()
|
|
513
|
-
}), _el$
|
|
514
|
-
_$insert(_el$
|
|
570
|
+
}), _el$15, _co$4);
|
|
571
|
+
_$insert(_el$10, _$createComponent(For, {
|
|
515
572
|
get each() {
|
|
516
573
|
return state()?.suggestions ?? [];
|
|
517
574
|
},
|
|
518
575
|
children: (suggestion, index) => // biome-ignore lint/a11y/useKeyWithClickEvents: the owning textarea handles keyboard activation through aria-activedescendant.
|
|
519
576
|
(() => {
|
|
520
|
-
var _el$
|
|
521
|
-
_el$
|
|
522
|
-
_el$
|
|
523
|
-
[_el$
|
|
524
|
-
_el$
|
|
577
|
+
var _el$25 = _$getNextElement(_tmpl$8),
|
|
578
|
+
_el$26 = _el$25.firstChild,
|
|
579
|
+
_el$27 = _el$26.nextSibling,
|
|
580
|
+
[_el$28, _co$7] = _$getNextMarker(_el$27.nextSibling);
|
|
581
|
+
_el$25.$$click = () => {
|
|
525
582
|
activateSuggestion(index());
|
|
526
583
|
textarea?.focus();
|
|
527
584
|
};
|
|
528
|
-
_el$
|
|
585
|
+
_el$25.$$mousedown = event => {
|
|
529
586
|
event.preventDefault();
|
|
530
587
|
};
|
|
531
|
-
_el$
|
|
588
|
+
_el$25.addEventListener("mouseenter", () => {
|
|
532
589
|
const current = state();
|
|
533
590
|
if (current) {
|
|
534
591
|
setState({
|
|
@@ -537,24 +594,24 @@ export function AutocompleteEditor(props) {
|
|
|
537
594
|
});
|
|
538
595
|
}
|
|
539
596
|
});
|
|
540
|
-
_$insert(_el$
|
|
541
|
-
_$insert(_el$
|
|
597
|
+
_$insert(_el$26, () => displayLabel(suggestion, state().context.completion));
|
|
598
|
+
_$insert(_el$25, _$createComponent(Show, {
|
|
542
599
|
get when() {
|
|
543
600
|
return suggestion.hint;
|
|
544
601
|
},
|
|
545
602
|
children: hint => (() => {
|
|
546
|
-
var _el$
|
|
547
|
-
_$insert(_el$
|
|
548
|
-
return _el$
|
|
603
|
+
var _el$29 = _$getNextElement(_tmpl$9);
|
|
604
|
+
_$insert(_el$29, hint);
|
|
605
|
+
return _el$29;
|
|
549
606
|
})()
|
|
550
|
-
}), _el$
|
|
607
|
+
}), _el$28, _co$7);
|
|
551
608
|
_$effect(_p$ => {
|
|
552
|
-
var _v$
|
|
553
|
-
_v$
|
|
554
|
-
_v$
|
|
555
|
-
_v$
|
|
556
|
-
_v$
|
|
557
|
-
_v$
|
|
609
|
+
var _v$10 = optionId(index()),
|
|
610
|
+
_v$11 = index() === state()?.selectedIndex,
|
|
611
|
+
_v$12 = loading() ? "true" : undefined;
|
|
612
|
+
_v$10 !== _p$.e && _$setAttribute(_el$25, "id", _p$.e = _v$10);
|
|
613
|
+
_v$11 !== _p$.t && _$setAttribute(_el$25, "aria-selected", _p$.t = _v$11);
|
|
614
|
+
_v$12 !== _p$.a && _$setAttribute(_el$25, "data-loading", _p$.a = _v$12);
|
|
558
615
|
return _p$;
|
|
559
616
|
}, {
|
|
560
617
|
e: undefined,
|
|
@@ -562,37 +619,41 @@ export function AutocompleteEditor(props) {
|
|
|
562
619
|
a: undefined
|
|
563
620
|
});
|
|
564
621
|
_$runHydrationEvents();
|
|
565
|
-
return _el$
|
|
622
|
+
return _el$25;
|
|
566
623
|
})()
|
|
567
|
-
}), _el$
|
|
624
|
+
}), _el$17, _co$5);
|
|
568
625
|
_$effect(_p$ => {
|
|
569
626
|
var _v$ = completionMessages().completionSuggestions,
|
|
570
627
|
_v$2 = completionMessages().suggestions;
|
|
571
|
-
_v$ !== _p$.e && _$setAttribute(_el$
|
|
572
|
-
_v$2 !== _p$.t && _$setAttribute(_el$
|
|
628
|
+
_v$ !== _p$.e && _$setAttribute(_el$1, "aria-label", _p$.e = _v$);
|
|
629
|
+
_v$2 !== _p$.t && _$setAttribute(_el$10, "aria-label", _p$.t = _v$2);
|
|
573
630
|
return _p$;
|
|
574
631
|
}, {
|
|
575
632
|
e: undefined,
|
|
576
633
|
t: undefined
|
|
577
634
|
});
|
|
578
|
-
return _el$
|
|
635
|
+
return _el$1;
|
|
579
636
|
}
|
|
580
|
-
}), _el$
|
|
637
|
+
}), _el$19, _co$6);
|
|
581
638
|
_$effect(_p$ => {
|
|
582
|
-
var _v$3 =
|
|
583
|
-
_v$4 =
|
|
584
|
-
_v$5 = props.
|
|
585
|
-
_v$6 = props.
|
|
586
|
-
_v$7 =
|
|
587
|
-
_v$8 =
|
|
588
|
-
_v$9 =
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
_v$
|
|
592
|
-
_v$
|
|
593
|
-
_v$
|
|
594
|
-
_v$
|
|
595
|
-
_p$.
|
|
639
|
+
var _v$3 = props.lineNumbers ? "true" : undefined,
|
|
640
|
+
_v$4 = useOverlay() ? "true" : undefined,
|
|
641
|
+
_v$5 = props.singleLine ? "true" : undefined,
|
|
642
|
+
_v$6 = props.fill && !props.singleLine ? "true" : undefined,
|
|
643
|
+
_v$7 = props.disabled ? "true" : undefined,
|
|
644
|
+
_v$8 = error() ? "true" : undefined,
|
|
645
|
+
_v$9 = props.variant === "paper" || props.variant === "embedded" ? props.variant : undefined,
|
|
646
|
+
_v$0 = surfaceStyle(),
|
|
647
|
+
_v$1 = isServer ? renderWithOverlay(localValue(), props.highlight ?? plainTextHighlight, {}) : undefined;
|
|
648
|
+
_v$3 !== _p$.e && _$setAttribute(_el$, "data-line-numbers", _p$.e = _v$3);
|
|
649
|
+
_v$4 !== _p$.t && _$setAttribute(_el$, "data-overlay", _p$.t = _v$4);
|
|
650
|
+
_v$5 !== _p$.a && _$setAttribute(_el$, "data-single-line", _p$.a = _v$5);
|
|
651
|
+
_v$6 !== _p$.o && _$setAttribute(_el$, "data-fill", _p$.o = _v$6);
|
|
652
|
+
_v$7 !== _p$.i && _$setAttribute(_el$, "data-disabled", _p$.i = _v$7);
|
|
653
|
+
_v$8 !== _p$.n && _$setAttribute(_el$, "data-invalid", _p$.n = _v$8);
|
|
654
|
+
_v$9 !== _p$.s && _$setAttribute(_el$, "data-variant", _p$.s = _v$9);
|
|
655
|
+
_p$.h = _$style(_el$, _v$0, _p$.h);
|
|
656
|
+
_v$1 !== _p$.r && _$setProperty(_el$5, "innerHTML", _p$.r = _v$1);
|
|
596
657
|
return _p$;
|
|
597
658
|
}, {
|
|
598
659
|
e: undefined,
|
|
@@ -601,7 +662,9 @@ export function AutocompleteEditor(props) {
|
|
|
601
662
|
o: undefined,
|
|
602
663
|
i: undefined,
|
|
603
664
|
n: undefined,
|
|
604
|
-
s: undefined
|
|
665
|
+
s: undefined,
|
|
666
|
+
h: undefined,
|
|
667
|
+
r: undefined
|
|
605
668
|
});
|
|
606
669
|
_$runHydrationEvents();
|
|
607
670
|
return _el$;
|