stimeo-ui 0.18.0 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -2
- package/dist/cable/index.d.ts +2 -1
- package/dist/controllers/command_palette_controller.js +1 -0
- package/dist/controllers/command_palette_controller.js.map +1 -1
- package/dist/controllers/dismissible_controller.js +2 -0
- package/dist/controllers/dismissible_controller.js.map +1 -1
- package/dist/controllers/editable_controller.js +1 -0
- package/dist/controllers/editable_controller.js.map +1 -1
- package/dist/controllers/form_field_controller.d.ts +2 -1
- package/dist/controllers/input_mask_controller.d.ts +2 -1
- package/dist/controllers/input_mask_controller.js +23 -0
- package/dist/controllers/input_mask_controller.js.map +1 -1
- package/dist/controllers/multi_select_controller.d.ts +2 -1
- package/dist/controllers/multi_select_controller.js +21 -1
- package/dist/controllers/multi_select_controller.js.map +1 -1
- package/dist/controllers/pointer_drag_controller.d.ts +1 -0
- package/dist/controllers/pointer_drag_controller.js +6 -1
- package/dist/controllers/pointer_drag_controller.js.map +1 -1
- package/dist/controllers/popover_controller.d.ts +6 -2
- package/dist/controllers/popover_controller.js +9 -0
- package/dist/controllers/popover_controller.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +63 -2
- package/dist/index.js.map +1 -1
- package/dist/inspector/cli.d.ts +10 -1
- package/dist/inspector/cli.js +5 -0
- package/dist/inspector/cli.js.map +1 -1
- package/dist/inspector/cli_bin.d.ts +1 -1
- package/dist/inspector/cli_bin.js +9 -0
- package/dist/inspector/cli_bin.js.map +1 -1
- package/dist/inspector/manifest.json +2 -2
- package/dist/positioning/index.d.ts +2 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -5735,6 +5735,7 @@ var CommandPaletteController = class _CommandPaletteController extends Controlle
|
|
|
5735
5735
|
return this.hasDialogTarget && !this.dialogTarget.hidden;
|
|
5736
5736
|
}
|
|
5737
5737
|
#onGlobalKeydown = (event) => {
|
|
5738
|
+
if (event.defaultPrevented) return;
|
|
5738
5739
|
if (this.#composition.isComposing(event) || !this.#matchesHotkey(event)) return;
|
|
5739
5740
|
event.preventDefault();
|
|
5740
5741
|
this.toggle();
|
|
@@ -9037,6 +9038,8 @@ var DismissibleController = class extends Controller {
|
|
|
9037
9038
|
if (document.activeElement === candidate) return;
|
|
9038
9039
|
}
|
|
9039
9040
|
document.body.focus();
|
|
9041
|
+
const remaining = document.activeElement;
|
|
9042
|
+
if (remaining instanceof HTMLElement && root.contains(remaining)) remaining.blur();
|
|
9040
9043
|
}
|
|
9041
9044
|
*#focusFallbacks(root) {
|
|
9042
9045
|
const explicitFallback = this.hasFallbackTarget ? this.fallbackTarget : null;
|
|
@@ -9482,6 +9485,7 @@ var EditableController = class extends Controller {
|
|
|
9482
9485
|
this.#revertValue = null;
|
|
9483
9486
|
}
|
|
9484
9487
|
onDisplayKeydown(event) {
|
|
9488
|
+
if (event.defaultPrevented) return;
|
|
9485
9489
|
if (event.key === "F2") {
|
|
9486
9490
|
event.preventDefault();
|
|
9487
9491
|
this.edit();
|
|
@@ -11666,6 +11670,27 @@ var InputMaskController = class extends Controller {
|
|
|
11666
11670
|
#textBeforeComposition = "";
|
|
11667
11671
|
#formatted = null;
|
|
11668
11672
|
#shown = { result: null, empty: true };
|
|
11673
|
+
#edits = new ListenerSet();
|
|
11674
|
+
#onBeforeInput = (event) => {
|
|
11675
|
+
const data = event.data;
|
|
11676
|
+
if (event.defaultPrevented || !event.cancelable || event.inputType !== "insertText" || data === null || Array.from(data).length !== 1 || !this.#started || this.#composition.isComposing(event))
|
|
11677
|
+
return;
|
|
11678
|
+
const input = this.element;
|
|
11679
|
+
const start = input.selectionStart;
|
|
11680
|
+
const end = input.selectionEnd;
|
|
11681
|
+
if (start === null || end === null || start === end || input.readOnly || input.disabled || inheritsFieldsetDisabled(input) || !input.isConnected || !this.application.element.contains(input) || !(input.getAttribute("data-controller") ?? "").split(/\s+/).includes(this.identifier) || this.patternValue === "" || this.#formatted !== this.#declared || input.value !== this.#lastValue)
|
|
11682
|
+
return;
|
|
11683
|
+
const prefix = applyMask(input.value.slice(0, start), this.patternValue, this.#tokens);
|
|
11684
|
+
for (const character of Array.from(this.patternValue).slice(prefix.tokenFlags.length)) {
|
|
11685
|
+
const token = this.#tokens.get(character);
|
|
11686
|
+
if (token) {
|
|
11687
|
+
if (acceptedForm(token, data) === null) event.preventDefault();
|
|
11688
|
+
return;
|
|
11689
|
+
}
|
|
11690
|
+
if (halfWidthChar(data) === halfWidthChar(character)) return;
|
|
11691
|
+
}
|
|
11692
|
+
event.preventDefault();
|
|
11693
|
+
};
|
|
11669
11694
|
#composition = new CompositionTracker({
|
|
11670
11695
|
onStart: () => {
|
|
11671
11696
|
this.#textBeforeComposition = this.element.value;
|
|
@@ -11701,6 +11726,7 @@ var InputMaskController = class extends Controller {
|
|
|
11701
11726
|
this.#morph.observe(this.element);
|
|
11702
11727
|
this.#started = true;
|
|
11703
11728
|
this.#composition.observe(this.element);
|
|
11729
|
+
this.#edits.add(this.element, "beforeinput", this.#onBeforeInput);
|
|
11704
11730
|
if (!this.unmaskToHiddenValue) this.#withdraw();
|
|
11705
11731
|
if (this.#composition.isComposing()) {
|
|
11706
11732
|
this.#reformat("reconcile");
|
|
@@ -11715,6 +11741,7 @@ var InputMaskController = class extends Controller {
|
|
|
11715
11741
|
disconnect() {
|
|
11716
11742
|
this.#morph.disconnect();
|
|
11717
11743
|
this.#started = false;
|
|
11744
|
+
this.#edits.dispose();
|
|
11718
11745
|
this.#composition.disconnect();
|
|
11719
11746
|
this.#adoption.clearAll();
|
|
11720
11747
|
this.#gate.disconnected(this, () => this.#retractRaw());
|
|
@@ -13885,7 +13912,9 @@ var MultiSelectController = class _MultiSelectController extends Controller {
|
|
|
13885
13912
|
focusAfterEnd: () => this.#focusInput()
|
|
13886
13913
|
});
|
|
13887
13914
|
#listeners = new ListenerSet();
|
|
13915
|
+
#tab = null;
|
|
13888
13916
|
connect() {
|
|
13917
|
+
this.#tab = null;
|
|
13889
13918
|
this.#tabindex.reclaim(this.element);
|
|
13890
13919
|
this.#rows.connect();
|
|
13891
13920
|
this.#normalizeSelection([]);
|
|
@@ -13897,6 +13926,9 @@ var MultiSelectController = class _MultiSelectController extends Controller {
|
|
|
13897
13926
|
this.#selectionValues = this.#values;
|
|
13898
13927
|
this.#syncFields();
|
|
13899
13928
|
this.#listeners.add(document, "click", this.#onOutsideClick, { capture: true });
|
|
13929
|
+
this.#listeners.add(this.element, "keydown", this.#onTab);
|
|
13930
|
+
for (const type of ["focus", "keydown", "keyup", "pointerdown"])
|
|
13931
|
+
this.#listeners.add(document, type, this.#trackTab, { capture: true });
|
|
13900
13932
|
this.#connected = true;
|
|
13901
13933
|
this.#reconcile.observe(this.element);
|
|
13902
13934
|
}
|
|
@@ -13918,6 +13950,7 @@ var MultiSelectController = class _MultiSelectController extends Controller {
|
|
|
13918
13950
|
this.#composition.disconnect();
|
|
13919
13951
|
this.#chipRow.disconnect();
|
|
13920
13952
|
this.#listeners.dispose();
|
|
13953
|
+
this.#tab = null;
|
|
13921
13954
|
this.#releaseTabindex();
|
|
13922
13955
|
}
|
|
13923
13956
|
optionTargetConnected() {
|
|
@@ -14087,7 +14120,11 @@ var MultiSelectController = class _MultiSelectController extends Controller {
|
|
|
14087
14120
|
this.#setActive(visible[0] ?? null);
|
|
14088
14121
|
this.dispatch("filter", { detail: { query } });
|
|
14089
14122
|
}
|
|
14090
|
-
open() {
|
|
14123
|
+
open(event) {
|
|
14124
|
+
if (event instanceof FocusEvent && event === this.#tab) {
|
|
14125
|
+
this.#tab = null;
|
|
14126
|
+
return;
|
|
14127
|
+
}
|
|
14091
14128
|
if (!this.hasListTarget || !this.hasInputTarget) {
|
|
14092
14129
|
this.#reflectEmpty();
|
|
14093
14130
|
return;
|
|
@@ -14174,6 +14211,16 @@ var MultiSelectController = class _MultiSelectController extends Controller {
|
|
|
14174
14211
|
break;
|
|
14175
14212
|
}
|
|
14176
14213
|
}
|
|
14214
|
+
#onTab = (event) => {
|
|
14215
|
+
if (event.key !== "Tab" || event.defaultPrevented || event.isComposing || !this.hasTagsTarget || !this.tagsTarget.contains(event.target))
|
|
14216
|
+
return;
|
|
14217
|
+
this.#tab = event;
|
|
14218
|
+
this.close();
|
|
14219
|
+
};
|
|
14220
|
+
#trackTab = (event) => {
|
|
14221
|
+
const key = this.#tab;
|
|
14222
|
+
this.#tab = event.type === "focus" && key instanceof KeyboardEvent && !key.defaultPrevented && event.target === this.inputTargets[0] ? event : null;
|
|
14223
|
+
};
|
|
14177
14224
|
toggleOption(source) {
|
|
14178
14225
|
const { event, host, origin, reason } = actionSource(source);
|
|
14179
14226
|
if (origin && origin.closest(`[data-controller~="${this.identifier}"]`) !== this.element)
|
|
@@ -17986,6 +18033,7 @@ var PointerDragController = class _PointerDragController extends Controller {
|
|
|
17986
18033
|
#tabindex = new TabindexLoan("0", this.identifier, { preserveFocus: true });
|
|
17987
18034
|
#pointer = null;
|
|
17988
18035
|
#keyboard = null;
|
|
18036
|
+
#connected = false;
|
|
17989
18037
|
#keyboardFocusSession = null;
|
|
17990
18038
|
#listeners = new ListenerSet();
|
|
17991
18039
|
#shadowFocus = new ListenerSet();
|
|
@@ -17999,6 +18047,7 @@ var PointerDragController = class _PointerDragController extends Controller {
|
|
|
17999
18047
|
this.#reflectSession();
|
|
18000
18048
|
});
|
|
18001
18049
|
connect() {
|
|
18050
|
+
this.#connected = true;
|
|
18002
18051
|
this.#morphRender.observe(this.element);
|
|
18003
18052
|
if (!this.#pointer && !this.#keyboard) this.#followOutput = null;
|
|
18004
18053
|
this.#gate.cancel();
|
|
@@ -18016,6 +18065,7 @@ var PointerDragController = class _PointerDragController extends Controller {
|
|
|
18016
18065
|
}
|
|
18017
18066
|
}
|
|
18018
18067
|
disconnect() {
|
|
18068
|
+
this.#connected = false;
|
|
18019
18069
|
this.#morphRender.disconnect();
|
|
18020
18070
|
this.#listeners.dispose();
|
|
18021
18071
|
this.#shadowFocus.dispose();
|
|
@@ -18042,7 +18092,9 @@ var PointerDragController = class _PointerDragController extends Controller {
|
|
|
18042
18092
|
}
|
|
18043
18093
|
handleTargetDisconnected(handle) {
|
|
18044
18094
|
this.#restoreHandle(handle);
|
|
18045
|
-
if (this
|
|
18095
|
+
if (!this.#connected) return;
|
|
18096
|
+
if (this.element.contains(handle) && (this.handleTargets.includes(handle) || DetachGate.isDetached(this)))
|
|
18097
|
+
return;
|
|
18046
18098
|
const interrupted = this.#pointer?.handle === handle && this.#pointer.started ? this.#pointer.pointerType : this.#keyboard?.handle === handle ? "keyboard" : null;
|
|
18047
18099
|
if (this.#pointer?.handle === handle) this.#endPointerSession();
|
|
18048
18100
|
if (this.#keyboard?.handle === handle) this.#clearKeyboardSession();
|
|
@@ -18397,6 +18449,7 @@ var PopoverController = class extends Controller {
|
|
|
18397
18449
|
this.#close("api");
|
|
18398
18450
|
this.#listeners.add(document, "click", this.#onOutsideClick, { capture: true });
|
|
18399
18451
|
this.#listeners.add(this.element, "focusout", this.#onFocusOut);
|
|
18452
|
+
this.#listeners.add(document, "focusin", this.#onDocumentFocusIn, { capture: true });
|
|
18400
18453
|
this.#connected = true;
|
|
18401
18454
|
this.#reporting = true;
|
|
18402
18455
|
}
|
|
@@ -18503,6 +18556,14 @@ var PopoverController = class extends Controller {
|
|
|
18503
18556
|
if (!(next instanceof Node) || this.element.contains(next)) return;
|
|
18504
18557
|
this.#close("focus");
|
|
18505
18558
|
};
|
|
18559
|
+
#onDocumentFocusIn = (event) => {
|
|
18560
|
+
if (!this.#closable) return;
|
|
18561
|
+
const target = event.target;
|
|
18562
|
+
if (!(target instanceof Node) || target === document.body || this.element.contains(target)) {
|
|
18563
|
+
return;
|
|
18564
|
+
}
|
|
18565
|
+
this.#close("focus");
|
|
18566
|
+
};
|
|
18506
18567
|
get #isOpen() {
|
|
18507
18568
|
return this.hasPanelTarget && !this.panelTarget.hidden;
|
|
18508
18569
|
}
|