@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/docs-user/dock.md CHANGED
@@ -228,7 +228,9 @@ The host consumes `ixfx-split-layout` events: `ixfx-split-resize` /
228
228
  ```ts
229
229
  getViewState(options?): DockHostViewState // { v, kind: 'dock-host', layout }; folds live split weights
230
230
  setViewState(state: Partial<DockHostViewState>): void
231
- clearPendingViewState(): void // no-op: placeholders live in the layout tree
231
+ clearPendingViewState(): void // drops placeholders (panels the host doesn't hold)
232
+ saveLayout(): DockLayout // deprecated alias of getViewState().layout
233
+ loadLayout(layout: DockLayout): void // deprecated alias of setViewState({ layout })
232
234
  addPanel(panel: DockPanelElement | DockPanelInit, target?: DockAddPanelTarget): boolean
233
235
  type DockAddPanelTarget = {
234
236
  container?: string; // named stack leaf — takes precedence over `stack`
@@ -259,6 +261,7 @@ getNeighbours(leaf: DockLeafRef): DockNeighbours | null
259
261
  moveLeaf(leaf: DockLeafRef, direction: 'up' | 'down' | 'left' | 'right'): boolean
260
262
  moveLeafToEdge(leaf: DockLeafRef, edge: 'top' | 'bottom' | 'left' | 'right'): boolean
261
263
  canAccept?: (panelId: string, op: DockOperation) => boolean
264
+ placeholderLabel?: (panelId: string) => string // tab label for placeholders (default: the id)
262
265
 
263
266
  // Cross-window hooks (serializable in/out; no element handoff)
264
267
  getPanelSnapshot(panelId: string): DockPanelSnapshot | null
@@ -456,13 +459,19 @@ The dock layout is close to structure, so the saved state *is* the tree
456
459
  a save → drag → save round-trip preserves user adjustments.
457
460
  - **Panels not in the host yet.** `setViewState()` keeps every panel id the
458
461
  layout names, held or not. One the host doesn't hold is a *placeholder*:
459
- it keeps its place in the tree (shown as a tab labelled with its id) and
462
+ it keeps its place in the tree (shown as a tab labelled by the
463
+ `placeholderLabel(panelId)` property, or its id when unset) and
460
464
  the panel slots into that place when it arrives — appended as a light-DOM
461
465
  child, `addPanel()` **without** a target, `acceptExternalPanel()` without
462
466
  `at`, or a cross-host adoption. An explicit `addPanel()` target still wins.
463
467
  Placeholders are saved by `getViewState()`; `includePending: false` leaves
464
468
  them out (stacks they empty are dropped unless named). Remove one with
465
- `removePanel(id)`; `clearPendingViewState()` is a no-op.
469
+ `removePanel(id)`, or all of them with `clearPendingViewState()`.
470
+ - **Persisting with the default keeps stale ids.** A placeholder for a panel
471
+ that no longer exists is saved again on every `getViewState()`, so it never
472
+ goes away. Apps whose panels can disappear between save and restore should
473
+ call `clearPendingViewState()` once they have added the panels they hold,
474
+ or save with `includePending: false`.
466
475
  - Pooled panels the layout doesn't name are appended to the first stack
467
476
  admitting their kind.
468
477
  - A panel that is closed / removed (`removePanel`, close button, removed from
@@ -311,8 +311,11 @@ grid.registry.invoke('list.search.filter'); // or .navigate / .select
311
311
 
312
312
  Search matches `data-label` (or `[data-grid-list-caption]` text, then
313
313
  `data-search-label`, then `textContent`). Filter mode genuinely removes items
314
- from the virtualised layout. Add a page-level highlight rule to see matched
315
- characters:
314
+ from the virtualised layout. Matched characters are highlighted under the
315
+ `grid-list-search` key. In data mode (`itemAdapter`) the captions live in the
316
+ shadow root and the grid styles them itself (`--search-highlight-bg` /
317
+ `--search-highlight-color`, default `--accent` / `--accent-text`). In element
318
+ mode the items are light DOM, so add a page-level rule:
316
319
 
317
320
  ```css
318
321
  ::highlight(grid-list-search) { background: var(--accent); color: var(--accent-text); }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ixfx/components",
3
- "version": "0.16.0",
4
- "generated": "2026-10-23T13:15:45.063Z",
3
+ "version": "0.16.1",
4
+ "generated": "2026-10-26T15:36:19.925Z",
5
5
  "components": [
6
6
  {
7
7
  "name": "ac-text",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ixfx/components",
3
3
  "type": "module",
4
- "version": "0.16.0",
4
+ "version": "0.16.1",
5
5
  "packageManager": "pnpm@10.0.0",
6
6
  "description": "Web components for ixfx — Lit-based UI toolkit",
7
7
  "author": "Clint Heyer",
@@ -247,7 +247,7 @@
247
247
  "lit": { "optional": false }
248
248
  },
249
249
  "dependencies": {
250
- "@clinth/ui-commands": "1.1.0",
250
+ "@clinth/ui-commands": "1.1.1",
251
251
  "@clinth/vcanvas": "0.0.5",
252
252
  "@ixfx/arrays": "0.56.14",
253
253
  "@ixfx/collections": "0.56.14",