@ai-matrx/design-system 0.25.0 → 0.26.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/dist/data-table/copy-helpers.d.cts +2 -1
  3. package/dist/data-table/copy-helpers.d.ts +2 -1
  4. package/dist/data-table/data-row-inspector.cjs.map +1 -1
  5. package/dist/data-table/data-row-inspector.js.map +1 -1
  6. package/dist/data-table/data-row-window.cjs.map +1 -1
  7. package/dist/data-table/data-row-window.js.map +1 -1
  8. package/dist/data-table/facets.cjs +118 -0
  9. package/dist/data-table/facets.cjs.map +1 -0
  10. package/dist/data-table/facets.d.cts +100 -0
  11. package/dist/data-table/facets.d.ts +100 -0
  12. package/dist/data-table/facets.js +98 -0
  13. package/dist/data-table/facets.js.map +1 -0
  14. package/dist/data-table/filter-engine.d.cts +2 -1
  15. package/dist/data-table/filter-engine.d.ts +2 -1
  16. package/dist/data-table/host.cjs.map +1 -1
  17. package/dist/data-table/host.d.cts +13 -3
  18. package/dist/data-table/host.d.ts +13 -3
  19. package/dist/data-table/host.js.map +1 -1
  20. package/dist/data-table/index.cjs +680 -145
  21. package/dist/data-table/index.cjs.map +1 -1
  22. package/dist/data-table/index.d.cts +4 -2
  23. package/dist/data-table/index.d.ts +4 -2
  24. package/dist/data-table/index.js +718 -182
  25. package/dist/data-table/index.js.map +1 -1
  26. package/dist/data-table/infer-filter.d.cts +2 -1
  27. package/dist/data-table/infer-filter.d.ts +2 -1
  28. package/dist/data-table/layered-filters.d.cts +2 -1
  29. package/dist/data-table/layered-filters.d.ts +2 -1
  30. package/dist/data-table/menu-targets.cjs +77 -0
  31. package/dist/data-table/menu-targets.cjs.map +1 -0
  32. package/dist/data-table/menu-targets.d.cts +108 -0
  33. package/dist/data-table/menu-targets.d.ts +108 -0
  34. package/dist/data-table/menu-targets.js +57 -0
  35. package/dist/data-table/menu-targets.js.map +1 -0
  36. package/dist/data-table/pagination.cjs.map +1 -1
  37. package/dist/data-table/pagination.js.map +1 -1
  38. package/dist/data-table/query-control.d.cts +2 -1
  39. package/dist/data-table/query-control.d.ts +2 -1
  40. package/dist/data-table/spreadsheet.cjs +61 -13
  41. package/dist/data-table/spreadsheet.cjs.map +1 -1
  42. package/dist/data-table/spreadsheet.d.cts +36 -1
  43. package/dist/data-table/spreadsheet.d.ts +36 -1
  44. package/dist/data-table/spreadsheet.js +61 -13
  45. package/dist/data-table/spreadsheet.js.map +1 -1
  46. package/dist/data-table/types.cjs.map +1 -1
  47. package/dist/data-table/types.d.cts +2 -1
  48. package/dist/data-table/types.d.ts +2 -1
  49. package/dist/data-table/url-state.d.cts +2 -1
  50. package/dist/data-table/url-state.d.ts +2 -1
  51. package/dist/data-table/uuid-cell.cjs.map +1 -1
  52. package/dist/data-table/uuid-cell.js.map +1 -1
  53. package/dist/data-table/xlsx.d.cts +2 -1
  54. package/dist/data-table/xlsx.d.ts +2 -1
  55. package/dist/{types-nlLCMiqd.d.ts → types-Cu5_eUG1.d.ts} +115 -3
  56. package/dist/{types-CmQrOz-T.d.cts → types-DrJXAAoD.d.cts} +115 -3
  57. package/package.json +21 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,81 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.26.0 — 2026-09-20
4
+
5
+ **The four things a re-point of the owner's `/data` grid would have lost, now
6
+ first-class in the shared table.**
7
+
8
+ A capability-by-capability walk of that route against this package found four
9
+ gaps. Each is built here, in the shared layer, so every table in the product
10
+ gets it — not one route.
11
+
12
+ - **THE FOUR RIGHT-CLICK LEVELS.** The package exposed exactly ONE context
13
+ descriptor — the row — so a surface wanting a cell, a column or a selection
14
+ menu had to fork the table. It now answers all four. `menu-targets.ts` reads
15
+ which level the pointer was aimed at off the anchors the table renders
16
+ (`data-matrx-header-column-id` is new on every header; body cells already
17
+ carried `data-matrx-table-column-id`), with the precedence a spreadsheet
18
+ person expects: a click inside an extended range is the RANGE, never the one
19
+ cell under it — except a range of one cell, which is a cell.
20
+ `MatrxDataTableContextMenuConfig` gained `resolveCellContext`,
21
+ `resolveColumnContext`, `resolveSelectionContext` and `resolveTableContext`;
22
+ the host's `createDefaultRowContext` became `createDefaultMenuContext`, which
23
+ takes one payload carrying the level and what it is acting on. The package
24
+ still never interprets a menu — that stays the application's.
25
+ - **ENTER TO EDIT, AND TYPE TO REPLACE.** `classifyGridKey` had classified
26
+ `edit` and `editSeeded` since the gestures landed and nothing consumed them.
27
+ `useSpreadsheetGrid` now asks its consumer through `onEditRequest(address,
28
+ seed)` and consumes the keystroke only when an editor actually opened — so a
29
+ read-only column types nothing instead of swallowing the character.
30
+ `MatrxDataTable` performs it through the SAME `editRequest` door the row
31
+ menu's "Edit row" already used, and a seeded editor opens holding the typed
32
+ character rather than the old value.
33
+ - **FILTER VALUE COUNTS.** A "Contains…" box asks the reader to already know
34
+ what is in the column. `facets.ts` counts the real values, blanks included as
35
+ a countable option, and `MatrxDataTableFacetsConfig` decides where the counts
36
+ come from: the browser when it holds every row the counts describe, the
37
+ consumer's `source` when it does not — and when neither can answer for the
38
+ whole table, the popover SAYS the counts cover only the loaded rows. A
39
+ complete answer says nothing at all. Counting happens when someone opens a
40
+ popover, never on first paint.
41
+ - **VALIDATION REFUSALS, IN THE CELL, IN WORDS.** `data-table/validation` was a
42
+ published module the table never called. `edit.validate` now judges a value
43
+ before it enters the draft and a returned sentence is a refusal: the editor
44
+ stays open holding what the person typed and the sentence renders under the
45
+ cell in amber, clearing the moment they change the value. The same judgement
46
+ screens paste, fill and clear through `spreadsheet.validateCell` — a rule a
47
+ paste can walk around is not a rule.
48
+
49
+ **Two defects only a real browser could find**, both in the seam between the
50
+ cell cursor and the editor, both green in jsdom:
51
+
52
+ - **A click selected the cell and then every keystroke went to the document
53
+ body.** `preventDefault` on a mousedown also prevents focus, so the grid
54
+ container never got it — and Enter, a typed character, an arrow and Cmd-Z all
55
+ landed on nothing. A jsdom test dispatches the keydown ON the container by
56
+ hand and can never see it. The cell cursor now focuses the grid.
57
+ - **A click on a string-editable cell dropped straight into a text box**, which
58
+ is THE CLICK LAW broken at the one place the two paths meet: the same click
59
+ starts a range, and an editor opening under the pointer eats the drag and the
60
+ next keystroke. With spreadsheet gestures on, the editor opens the way it does
61
+ in Excel — Enter, F2, the hover pencil, or typing — and an explicit
62
+ `editTrigger: "click"` does not override it.
63
+
64
+ New entry points: `/data-table/facets` and `/data-table/menu-targets`, both
65
+ pure. Suite: 101 files / 1,073 passed. Red twin
66
+ `MatrxDataTable.four-levels.red.tsx`: 13/13 fail. Three absence-asserting
67
+ clauses and one rendering clause are deliberately not twinned, and the red file
68
+ says which and why. Browser proof on a production build, 1440x900 headless
69
+ Chromium, zero console errors: right-click answered `cell · Amount`,
70
+ `column · Status`, `row · Row` and `selection · 16 cells`; Enter opened the cell
71
+ on `Ada` and typing `Z` opened it on `Z`, committing `Zara`; the Status filter
72
+ listed five values at 400 each and filtering to Done left only Done on screen;
73
+ a 500-row table declaring 84,312 said *"These counts cover the 500 rows loaded
74
+ here, not the whole table."* and a complete answer said nothing; a blank Owner
75
+ was refused in the cell with *"Owner cannot be empty. Every job needs someone on
76
+ it."* while the editor stayed open, and the same rule refused a paste
77
+ (`Pasted 0 cells.`) that never touches an editor.
78
+
3
79
  ## 0.25.0 — 2026-09-20
4
80
 
5
81
  **Five defects a real browser found that jsdom could not, and the table's own
@@ -1,5 +1,5 @@
1
1
  import { AgentPayloadInput } from './copy-types.cjs';
2
- import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../types-CmQrOz-T.cjs';
2
+ import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../types-DrJXAAoD.cjs';
3
3
  import '../content-transfer.cjs';
4
4
  import 'react';
5
5
  import '@ai-matrx/kit/content-transfer';
@@ -7,6 +7,7 @@ import '../content-transfer/icon.cjs';
7
7
  import '../types-CJWU1Gae.cjs';
8
8
  import './grouping.cjs';
9
9
  import './fill.cjs';
10
+ import './facets.cjs';
10
11
  import './spreadsheet.cjs';
11
12
  import './grid-selection.cjs';
12
13
 
@@ -1,5 +1,5 @@
1
1
  import { AgentPayloadInput } from './copy-types.js';
2
- import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../types-nlLCMiqd.js';
2
+ import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../types-Cu5_eUG1.js';
3
3
  import '../content-transfer.js';
4
4
  import 'react';
5
5
  import '@ai-matrx/kit/content-transfer';
@@ -7,6 +7,7 @@ import '../content-transfer/icon.js';
7
7
  import '../types-CJWU1Gae.js';
8
8
  import './grouping.js';
9
9
  import './fill.js';
10
+ import './facets.js';
10
11
  import './spreadsheet.js';
11
12
  import './grid-selection.js';
12
13