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.
Files changed (33) hide show
  1. package/CHANGELOG.md +31 -2
  2. package/dist/cable/index.d.ts +2 -1
  3. package/dist/controllers/command_palette_controller.js +1 -0
  4. package/dist/controllers/command_palette_controller.js.map +1 -1
  5. package/dist/controllers/dismissible_controller.js +2 -0
  6. package/dist/controllers/dismissible_controller.js.map +1 -1
  7. package/dist/controllers/editable_controller.js +1 -0
  8. package/dist/controllers/editable_controller.js.map +1 -1
  9. package/dist/controllers/form_field_controller.d.ts +2 -1
  10. package/dist/controllers/input_mask_controller.d.ts +2 -1
  11. package/dist/controllers/input_mask_controller.js +23 -0
  12. package/dist/controllers/input_mask_controller.js.map +1 -1
  13. package/dist/controllers/multi_select_controller.d.ts +2 -1
  14. package/dist/controllers/multi_select_controller.js +21 -1
  15. package/dist/controllers/multi_select_controller.js.map +1 -1
  16. package/dist/controllers/pointer_drag_controller.d.ts +1 -0
  17. package/dist/controllers/pointer_drag_controller.js +6 -1
  18. package/dist/controllers/pointer_drag_controller.js.map +1 -1
  19. package/dist/controllers/popover_controller.d.ts +6 -2
  20. package/dist/controllers/popover_controller.js +9 -0
  21. package/dist/controllers/popover_controller.js.map +1 -1
  22. package/dist/index.d.ts +2 -1
  23. package/dist/index.js +63 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/inspector/cli.d.ts +10 -1
  26. package/dist/inspector/cli.js +5 -0
  27. package/dist/inspector/cli.js.map +1 -1
  28. package/dist/inspector/cli_bin.d.ts +1 -1
  29. package/dist/inspector/cli_bin.js +9 -0
  30. package/dist/inspector/cli_bin.js.map +1 -1
  31. package/dist/inspector/manifest.json +2 -2
  32. package/dist/positioning/index.d.ts +2 -1
  33. package/package.json +5 -5
@@ -193,8 +193,9 @@ declare class MultiSelectController extends Controller<HTMLElement> {
193
193
  * list shown without one is a popup no assistive technology is told about. So
194
194
  * opening is skipped entirely, where {@link MultiSelectController.close | close}
195
195
  * still closes.
196
+ * A focus action delivered by chip Tab keeps the list closed.
196
197
  */
197
- open(): void;
198
+ open(event?: Event): void;
198
199
  /**
199
200
  * Closes the list and clears the active option.
200
201
  *
@@ -1118,7 +1118,9 @@ var MultiSelectController = class _MultiSelectController extends Controller {
1118
1118
  focusAfterEnd: () => this.#focusInput()
1119
1119
  });
1120
1120
  #listeners = new ListenerSet();
1121
+ #tab = null;
1121
1122
  connect() {
1123
+ this.#tab = null;
1122
1124
  this.#tabindex.reclaim(this.element);
1123
1125
  this.#rows.connect();
1124
1126
  this.#normalizeSelection([]);
@@ -1130,6 +1132,9 @@ var MultiSelectController = class _MultiSelectController extends Controller {
1130
1132
  this.#selectionValues = this.#values;
1131
1133
  this.#syncFields();
1132
1134
  this.#listeners.add(document, "click", this.#onOutsideClick, { capture: true });
1135
+ this.#listeners.add(this.element, "keydown", this.#onTab);
1136
+ for (const type of ["focus", "keydown", "keyup", "pointerdown"])
1137
+ this.#listeners.add(document, type, this.#trackTab, { capture: true });
1133
1138
  this.#connected = true;
1134
1139
  this.#reconcile.observe(this.element);
1135
1140
  }
@@ -1151,6 +1156,7 @@ var MultiSelectController = class _MultiSelectController extends Controller {
1151
1156
  this.#composition.disconnect();
1152
1157
  this.#chipRow.disconnect();
1153
1158
  this.#listeners.dispose();
1159
+ this.#tab = null;
1154
1160
  this.#releaseTabindex();
1155
1161
  }
1156
1162
  optionTargetConnected() {
@@ -1320,7 +1326,11 @@ var MultiSelectController = class _MultiSelectController extends Controller {
1320
1326
  this.#setActive(visible[0] ?? null);
1321
1327
  this.dispatch("filter", { detail: { query } });
1322
1328
  }
1323
- open() {
1329
+ open(event) {
1330
+ if (event instanceof FocusEvent && event === this.#tab) {
1331
+ this.#tab = null;
1332
+ return;
1333
+ }
1324
1334
  if (!this.hasListTarget || !this.hasInputTarget) {
1325
1335
  this.#reflectEmpty();
1326
1336
  return;
@@ -1407,6 +1417,16 @@ var MultiSelectController = class _MultiSelectController extends Controller {
1407
1417
  break;
1408
1418
  }
1409
1419
  }
1420
+ #onTab = (event) => {
1421
+ if (event.key !== "Tab" || event.defaultPrevented || event.isComposing || !this.hasTagsTarget || !this.tagsTarget.contains(event.target))
1422
+ return;
1423
+ this.#tab = event;
1424
+ this.close();
1425
+ };
1426
+ #trackTab = (event) => {
1427
+ const key = this.#tab;
1428
+ this.#tab = event.type === "focus" && key instanceof KeyboardEvent && !key.defaultPrevented && event.target === this.inputTargets[0] ? event : null;
1429
+ };
1410
1430
  toggleOption(source) {
1411
1431
  const { event, host, origin, reason } = actionSource(source);
1412
1432
  if (origin && origin.closest(`[data-controller~="${this.identifier}"]`) !== this.element)