@ixfx/components 0.16.0 → 0.16.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 (47) hide show
  1. package/bundle/index.d.ts +74 -10
  2. package/bundle/index.js +258 -228
  3. package/dist/ac-token.js +1 -1
  4. package/dist/{data-grid-rMkLX2qo.js → data-grid-Cqxuwgbb.js} +22 -4
  5. package/dist/{data-grid-CIG2DVip.d.ts → data-grid-Csh5EJW9.d.ts} +11 -2
  6. package/dist/data-grid.d.ts +1 -1
  7. package/dist/data-grid.js +1 -1
  8. package/dist/{detail-list-C4pDSoI8.js → detail-list-Bo5ze3SN.js} +16 -2
  9. package/dist/{detail-list-6iMTNP4N.d.ts → detail-list-DSZ1DDor.d.ts} +16 -2
  10. package/dist/detail-list.d.ts +2 -2
  11. package/dist/detail-list.js +1 -1
  12. package/dist/{flat-list-JPgQSmLW.d.ts → flat-list-CT9kX3TQ.d.ts} +1 -1
  13. package/dist/flat-list.d.ts +1 -1
  14. package/dist/flat-list.js +1 -1
  15. package/dist/{grid-list-CdEkScn-.js → grid-list-D0dJNVEF.js} +2 -1
  16. package/dist/{grid-list-D6n7WH8l.d.ts → grid-list-DDLrWRxm.d.ts} +1 -1
  17. package/dist/grid-list.d.ts +1 -1
  18. package/dist/grid-list.js +1 -1
  19. package/dist/{incr-search-JIhwB49y.js → incr-search-CgbL-OlS.js} +140 -10
  20. package/dist/incr-search.d.ts +1 -1
  21. package/dist/incr-search.js +1 -1
  22. package/dist/{index-CYRc6Dah.d.ts → index-Bnm-kKGC.d.ts} +1 -1
  23. package/dist/{index-Dr80Zdl6.d.ts → index-CUErGhCg.d.ts} +30 -3
  24. package/dist/{index-Bx0BXPxI.d.ts → index-D-lZNlHa.d.ts} +1 -1
  25. package/dist/index.d.ts +21 -12
  26. package/dist/index.js +51 -29
  27. package/dist/{miller-BFRfn0ve.js → miller-DUqiUAWQ.js} +1 -8
  28. package/dist/miller.d.ts +1 -1
  29. package/dist/miller.js +1 -1
  30. package/dist/narrowed-text.js +1 -1
  31. package/dist/sunburst-tree.d.ts +1 -1
  32. package/dist/sunburst-tree.js +1 -1
  33. package/dist/{sunbursttree-list-B_VxOHlo.js → sunbursttree-list-B_M0YTEA.js} +1 -1
  34. package/dist/{sunbursttree-list-D6j5BxVQ.d.ts → sunbursttree-list-DePuFYlU.d.ts} +1 -1
  35. package/dist/{tree-Crdpl4nc.js → tree-DAlgvaHB.js} +1 -1
  36. package/dist/tree.d.ts +1 -1
  37. package/dist/tree.js +1 -1
  38. package/dist/{vertical-list-1V1Vg2O5.js → vertical-list-DyKPKGxK.js} +1 -1
  39. package/dist/{vertical-list-BPDmZx6T.d.ts → vertical-list-SAx56U-l.d.ts} +1 -1
  40. package/dist/vertical-list.d.ts +1 -1
  41. package/dist/vertical-list.js +1 -1
  42. package/docs-user/data-grid.md +13 -4
  43. package/docs-user/detail-list.md +15 -0
  44. package/docs-user/dock.md +12 -3
  45. package/docs-user/grid-list.md +5 -2
  46. package/docs-user/index.json +2 -2
  47. package/package.json +2 -2
package/bundle/index.d.ts CHANGED
@@ -294,7 +294,7 @@ interface AcTokenElement {
294
294
  addEventListener: (<K extends keyof AcTokenElementEventMap>(type: K, listener: (this: AcTokenElement, event: AcTokenElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
295
295
  }
296
296
  //#endregion
297
- //#region node_modules/.pnpm/@clinth+ui-commands@1.1.0/node_modules/@clinth/ui-commands/dist/types.d.ts
297
+ //#region node_modules/.pnpm/@clinth+ui-commands@1.1.1/node_modules/@clinth/ui-commands/dist/types.d.ts
298
298
  type CommandId = string;
299
299
  type CommandOptions = Readonly<{
300
300
  onInvoke?: (id: CommandId, args?: Record<string, unknown>) => void;
@@ -328,11 +328,15 @@ interface KeyBinding<TAppModes extends string = string> {
328
328
  mode?: TAppModes | `all`;
329
329
  nonExclusive?: boolean;
330
330
  commandContext?: string;
331
+ /** Fire even while focus is in a text field (input, textarea, contenteditable). Default false. */
332
+ inTextInput?: boolean;
333
+ /** Require the event's modifiers to match exactly, rather than being a superset. Default false. */
334
+ exact?: boolean;
331
335
  commandId: CommandId;
332
336
  }
333
337
  type KeyEventHandler = (commandId: CommandId, modifiers: Modifiers, context: InputContext) => void;
334
338
  //#endregion
335
- //#region node_modules/.pnpm/@clinth+ui-commands@1.1.0/node_modules/@clinth/ui-commands/dist/command-registry.d.ts
339
+ //#region node_modules/.pnpm/@clinth+ui-commands@1.1.1/node_modules/@clinth/ui-commands/dist/command-registry.d.ts
336
340
  /**
337
341
  * Command registry.
338
342
  */
@@ -402,7 +406,7 @@ declare class CommandRegistry<TState = unknown> {
402
406
  has(id: CommandId): boolean;
403
407
  }
404
408
  //#endregion
405
- //#region node_modules/.pnpm/@clinth+ui-commands@1.1.0/node_modules/@clinth/ui-commands/dist/keyboard-manager.d.ts
409
+ //#region node_modules/.pnpm/@clinth+ui-commands@1.1.1/node_modules/@clinth/ui-commands/dist/keyboard-manager.d.ts
406
410
  /**
407
411
  * Manages keyboard bindings and event handling.
408
412
  * @typeParam M - The mode type (e.g., 'detail' | 'coarse')
@@ -413,6 +417,7 @@ declare class KeyboardManager<M extends string = string> {
413
417
  private element;
414
418
  private eventHandlers;
415
419
  private modeGetter;
420
+ private readonly keydownListener;
416
421
  /**
417
422
  * Sets the function that returns the current application mode.
418
423
  * @param getter - Function that returns the current mode
@@ -4065,7 +4070,8 @@ declare class IncrSearchTreeController {
4065
4070
  * - `navigate` — move the cursor to the best match; ↑/↓ cycle between matches;
4066
4071
  * Enter activates the current match and closes.
4067
4072
  * - `select` — (re)select every item whose label matches, live as you type.
4068
- * - `filter` — hide items that don't match; restored when the popover closes.
4073
+ * - `filter` — hide items that don't match; restored when the popover closes
4074
+ * (unless `stickyFilter` keeps it on Enter).
4069
4075
  */
4070
4076
  type ListSearchMode = `navigate` | `select` | `filter`;
4071
4077
  /** Canonical order — used for the switch-row and to normalise a requested set. */
@@ -4118,6 +4124,8 @@ interface ListSearchControllerOptions<TItem> {
4118
4124
  modes?: readonly ListSearchMode[];
4119
4125
  fzf?: Partial<FzfOptions<SearchItem>>;
4120
4126
  placeholder?: string;
4127
+ /** Initial {@link ListSearchController.stickyFilter}. Default false. */
4128
+ stickyFilter?: boolean;
4121
4129
  }
4122
4130
  type ListSearchHost = ReactiveControllerHost & HTMLElement & {
4123
4131
  renderRoot?: DocumentFragment | HTMLElement;
@@ -4130,6 +4138,12 @@ type ListSearchHost = ReactiveControllerHost & HTMLElement & {
4130
4138
  */
4131
4139
  declare class ListSearchController<TItem> implements ReactiveController {
4132
4140
  #private;
4141
+ /**
4142
+ * When true, Enter in `filter` mode closes the popover but keeps the filter,
4143
+ * shown as a "Filtered: …" chip. Clear it with the chip's ×, Escape on the
4144
+ * host, or {@link clearFilter}; click the chip to edit the query.
4145
+ */
4146
+ stickyFilter: boolean;
4133
4147
  constructor(host: ListSearchHost, options: ListSearchControllerOptions<TItem>);
4134
4148
  /** `false` when no modes are available — the host should register no commands and render no field. */
4135
4149
  get enabled(): boolean;
@@ -4147,20 +4161,38 @@ declare class ListSearchController<TItem> implements ReactiveController {
4147
4161
  get query(): string;
4148
4162
  get matchCount(): number;
4149
4163
  get matchIndex(): number;
4164
+ /** The query of a filter kept applied after the popover closed (see {@link stickyFilter}). */
4165
+ get keptFilter(): string | undefined;
4150
4166
  hostConnected(): void;
4151
4167
  hostDisconnected(): void;
4152
- /** Open the popover in `mode` (clamped to the available set). */
4168
+ /**
4169
+ * Open the popover in `mode` (clamped to the available set). When it is
4170
+ * already open the query is kept: the mode switches if it differs and the
4171
+ * input is refocused with its text selected.
4172
+ */
4153
4173
  open(mode: ListSearchMode): void;
4154
4174
  /** Close the popover, restoring any live filter. Selection / cursor stay put. */
4155
4175
  close(): void;
4176
+ /** Remove a filter kept by {@link stickyFilter}. No-op when none is kept. */
4177
+ clearFilter(): void;
4156
4178
  setQuery(query: string): void;
4157
4179
  /** Re-interpret the current query under a new mode (undoing the old mode's effect). */
4158
4180
  switchMode(next: ListSearchMode): void;
4181
+ /**
4182
+ * Step through {@link registeredModes} (wrapping) and switch to the result.
4183
+ * Bound to Tab / Shift+Tab in the popover input.
4184
+ */
4185
+ cycleMode(delta: 1 | -1): void;
4186
+ /** Refocus the popover input (text selected) without touching the query. No-op when closed. */
4187
+ focus(): void;
4159
4188
  /** One-shot: turn the current match set into the selection, staying in the current mode. */
4160
4189
  selectMatches(): void;
4161
4190
  nextMatch(): void;
4162
4191
  prevMatch(): void;
4163
- /** Enter: in `navigate` activate the current match; then close. */
4192
+ /**
4193
+ * Enter: in `navigate` activate the current match; then close. In `filter`
4194
+ * with {@link stickyFilter} and a query, close but keep the filter.
4195
+ */
4164
4196
  commit(): void;
4165
4197
  /** Rebuild the searchable item set from the adapter. Called on open and on container mutation. */
4166
4198
  refresh(): void;
@@ -4677,8 +4709,17 @@ declare class DataGridElement extends LitElement {
4677
4709
  * view and navigation.
4678
4710
  */
4679
4711
  filterPredicate?: (row: unknown) => boolean;
4680
- /** Text a row is matched against by incremental search. Default: its visible cells joined by a space. */
4712
+ /**
4713
+ * Text a row is matched against by incremental search. Overrides
4714
+ * `searchColumn`; matches against it aren't highlighted, since they can't be
4715
+ * mapped onto a cell.
4716
+ */
4681
4717
  rowSearchText?: (row: unknown) => string;
4718
+ /**
4719
+ * Key of the column incremental search matches against, using the cell's
4720
+ * displayed (formatted) text. Default: the first visible column.
4721
+ */
4722
+ searchColumn: string;
4682
4723
  /**
4683
4724
  * Space-separated subset of `navigate select filter` — limits which
4684
4725
  * incremental-search modes are offered. Unset ⇒ all three; empty ⇒ search
@@ -5581,6 +5622,13 @@ declare class DetailListElement extends LitElement {
5581
5622
  provider: IDataProvider<void, unknown> | undefined;
5582
5623
  displayProperty: string;
5583
5624
  formatter: DetailFormatter | undefined;
5625
+ /**
5626
+ * Text incremental search matches for an object item. Defaults to the
5627
+ * caption when it is a string (`displayProperty` or a string `formatter`),
5628
+ * else the row's whole text — set this when `formatter` returns a `Node`
5629
+ * carrying more than the name (sublines, sizes, dates).
5630
+ */
5631
+ searchText: ((item: unknown, index: number) => string) | undefined;
5584
5632
  iconProperty: string;
5585
5633
  /**
5586
5634
  * Property on each `items` entry holding a CSS colour for the item's
@@ -5664,6 +5712,13 @@ declare class DetailListElement extends LitElement {
5664
5712
  * changed by outside forces (e.g. an external font load).
5665
5713
  */
5666
5714
  refreshLayout(): void;
5715
+ /**
5716
+ * Rebuild every object-item row, for when something the `formatter` (or
5717
+ * `searchText`) reads has changed but the items themselves haven't —
5718
+ * reassigning the same objects keeps their rows as they are. Assigning a new
5719
+ * `formatter` function has the same effect.
5720
+ */
5721
+ reformat(): void;
5667
5722
  addItem(item: Element | string, options?: AddItemOptions): void;
5668
5723
  /**
5669
5724
  * Collapse + fade `item` out, then detach it; the rows after it slide up to
@@ -6506,6 +6561,11 @@ declare class DockHostElement extends LitElement {
6506
6561
  acceptsKinds: readonly string[] | null;
6507
6562
  /** Finest-grained veto, consulted per candidate zone. */
6508
6563
  canAccept: ((panelId: string, op: DockOperation) => boolean) | undefined;
6564
+ /**
6565
+ * Tab label for a placeholder (a panel a restored layout names that the host
6566
+ * doesn't hold yet). Defaults to the panel id.
6567
+ */
6568
+ placeholderLabel: ((panelId: string) => string) | undefined;
6509
6569
  private _model;
6510
6570
  private _pool;
6511
6571
  private _dropZone;
@@ -6594,11 +6654,15 @@ declare class DockHostElement extends LitElement {
6594
6654
  */
6595
6655
  setViewState(state: Partial<DockHostViewState>): void;
6596
6656
  /**
6597
- * Placeholders are part of the layout tree rather than a separate pending
6598
- * set, so there is nothing to clear here: remove a placeholder with
6599
- * `removePanel(id)`.
6657
+ * Drop every placeholder: panels the restored layout names that the host
6658
+ * doesn't hold. Call it once the app has added all the panels it has, so
6659
+ * ids for panels that no longer exist don't linger (and get saved again).
6600
6660
  */
6601
6661
  clearPendingViewState(): void;
6662
+ /** @deprecated Since 0.16; use `getViewState().layout`. */
6663
+ saveLayout(): DockLayout;
6664
+ /** @deprecated Since 0.16; use `setViewState({ layout })`. */
6665
+ loadLayout(layout: DockLayout): void;
6602
6666
  /** The current layout, folding live split weights from the DOM. */
6603
6667
  private _captureLayout;
6604
6668
  /** Whether `panelId` is in the model only as a placeholder from a restored layout. */