@ai-matrx/design-system 0.43.0 → 0.44.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 +30 -0
- package/dist/content-transfer.cjs +39 -0
- package/dist/content-transfer.cjs.map +1 -1
- package/dist/content-transfer.js +39 -0
- package/dist/content-transfer.js.map +1 -1
- package/dist/data-table/copy-helpers.d.cts +1 -1
- package/dist/data-table/copy-helpers.d.ts +1 -1
- package/dist/data-table/data-row-inspector.cjs +39 -0
- package/dist/data-table/data-row-inspector.cjs.map +1 -1
- package/dist/data-table/data-row-inspector.js +41 -2
- package/dist/data-table/data-row-inspector.js.map +1 -1
- package/dist/data-table/data-row-window.cjs +39 -0
- package/dist/data-table/data-row-window.cjs.map +1 -1
- package/dist/data-table/data-row-window.js +43 -4
- package/dist/data-table/data-row-window.js.map +1 -1
- package/dist/data-table/filter-engine.d.cts +1 -1
- package/dist/data-table/filter-engine.d.ts +1 -1
- package/dist/data-table/host.d.cts +1 -1
- package/dist/data-table/host.d.ts +1 -1
- package/dist/data-table/index.cjs +59 -0
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.d.cts +2 -2
- package/dist/data-table/index.d.ts +2 -2
- package/dist/data-table/index.js +96 -37
- package/dist/data-table/index.js.map +1 -1
- package/dist/data-table/infer-filter.d.cts +1 -1
- package/dist/data-table/infer-filter.d.ts +1 -1
- package/dist/data-table/layered-filters.d.cts +1 -1
- package/dist/data-table/layered-filters.d.ts +1 -1
- package/dist/data-table/query-control.d.cts +1 -1
- package/dist/data-table/query-control.d.ts +1 -1
- package/dist/data-table/types.cjs.map +1 -1
- package/dist/data-table/types.d.cts +1 -1
- package/dist/data-table/types.d.ts +1 -1
- package/dist/data-table/url-state.d.cts +1 -1
- package/dist/data-table/url-state.d.ts +1 -1
- package/dist/data-table/xlsx.d.cts +1 -1
- package/dist/data-table/xlsx.d.ts +1 -1
- package/dist/index.cjs +47 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +28 -1
- package/dist/index.d.ts +28 -1
- package/dist/index.js +52 -7
- package/dist/index.js.map +1 -1
- package/dist/{types-CUR8Hbt5.d.ts → types-Bzzzed5d.d.ts} +24 -1
- package/dist/{types-CqU57qk8.d.cts → types-cvgKRetM.d.cts} +24 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.44.1 (2026-09-26 — an indeterminate Progress actually sweeps)
|
|
4
|
+
|
|
5
|
+
* **Fix:** an indeterminate `Progress` (`value={null}`) carried `w-full` beside
|
|
6
|
+
`matrx-progress-indeterminate`. The sweep's 40% width lives in the package layer, which a host's
|
|
7
|
+
utilities layer outranks, so every indeterminate bar painted a solid full-width fill and never
|
|
8
|
+
moved (found live on matrx-frontend's video job card). The indicator now carries `w-full` only
|
|
9
|
+
when it is determinate.
|
|
10
|
+
* Test: `controls.test.tsx` "never pairs the indeterminate sweep with a full-width utility"
|
|
11
|
+
(RED without the change → GREEN).
|
|
12
|
+
|
|
13
|
+
**Consumer action:** none.
|
|
14
|
+
|
|
15
|
+
## 0.44.0 (2026-09-26 — the layer the person used last is on top)
|
|
16
|
+
|
|
17
|
+
* **`announceLayerFront(element)` / `LAYER_FRONT_EVENT` (`matrx:layer-front`)** — one signal
|
|
18
|
+
every floating layer shares. A windowed `Dialog` (the default since 0.38.0) announces itself
|
|
19
|
+
when it opens and whenever the person presses or focuses inside it, and STEPS BEHIND
|
|
20
|
+
(`z-[999]`: above the page, below a host window manager's 1000+) when another layer announces
|
|
21
|
+
after it; it returns the moment the person reaches for it. An explicit `modal={false}` keeps its
|
|
22
|
+
fixed `z-[900]`; a blocking dialog is untouched.
|
|
23
|
+
* **Why:** a window opened after a windowed dialog — the agent window the Agents menu opens while
|
|
24
|
+
Table settings is open — sat underneath the dialog's z-10000, so its message box could not be
|
|
25
|
+
clicked or typed into (found live 2026-09-26, register `ai-reachable-everywhere` ARE-010).
|
|
26
|
+
* `onPointerDownCapture` / `onFocusCapture` passed to `DialogContent` still run.
|
|
27
|
+
* Tests: `dialog.test.tsx` "steps behind a layer…" and "announces itself…" (RED 2/2 without the
|
|
28
|
+
change → GREEN 15/15).
|
|
29
|
+
|
|
30
|
+
**Consumer action:** a host window manager calls `announceLayerFront(windowElement)` when a
|
|
31
|
+
window opens and when it is focused. matrx-frontend: `WindowPanel`.
|
|
32
|
+
|
|
3
33
|
## 0.43.0 (2026-09-26 — type-to-edit in spreadsheet mode)
|
|
4
34
|
|
|
5
35
|
* **Type to edit, for every table in spreadsheet mode.** The grid's keyboard focus now lives in a
|
|
@@ -263,6 +263,15 @@ function useIsMobile() {
|
|
|
263
263
|
return isMobile;
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
+
// src/layer-front.ts
|
|
267
|
+
var LAYER_FRONT_EVENT = "matrx:layer-front";
|
|
268
|
+
function announceLayerFront(element) {
|
|
269
|
+
if (typeof document === "undefined") return;
|
|
270
|
+
document.dispatchEvent(
|
|
271
|
+
new CustomEvent(LAYER_FRONT_EVENT, { detail: { element } })
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
|
|
266
275
|
// src/dialog.tsx
|
|
267
276
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
268
277
|
var DialogWindowedByDefaultContext = React5.createContext(false);
|
|
@@ -333,6 +342,8 @@ var DialogContent = React5.forwardRef(
|
|
|
333
342
|
dismissOnOutsideClick = false,
|
|
334
343
|
onInteractOutside,
|
|
335
344
|
onEscapeKeyDown,
|
|
345
|
+
onPointerDownCapture,
|
|
346
|
+
onFocusCapture,
|
|
336
347
|
style,
|
|
337
348
|
...props
|
|
338
349
|
}, ref) => {
|
|
@@ -345,6 +356,24 @@ var DialogContent = React5.forwardRef(
|
|
|
345
356
|
const [containerEl, setContainerEl] = React5.useState(
|
|
346
357
|
null
|
|
347
358
|
);
|
|
359
|
+
const stacks = windowed && windowedByDefault;
|
|
360
|
+
const [behind, setBehind] = React5.useState(false);
|
|
361
|
+
React5.useEffect(() => {
|
|
362
|
+
if (!stacks || !containerEl) return;
|
|
363
|
+
const onFront = (event) => {
|
|
364
|
+
const element = event.detail?.element ?? null;
|
|
365
|
+
if (element && (element === containerEl || containerEl.contains(element))) return;
|
|
366
|
+
setBehind(true);
|
|
367
|
+
};
|
|
368
|
+
document.addEventListener(LAYER_FRONT_EVENT, onFront);
|
|
369
|
+
announceLayerFront(containerEl);
|
|
370
|
+
return () => document.removeEventListener(LAYER_FRONT_EVENT, onFront);
|
|
371
|
+
}, [stacks, containerEl]);
|
|
372
|
+
const bringToFront = () => {
|
|
373
|
+
if (!stacks || !containerEl) return;
|
|
374
|
+
setBehind(false);
|
|
375
|
+
announceLayerFront(containerEl);
|
|
376
|
+
};
|
|
348
377
|
const [offset, setOffset] = React5.useState({ x: 0, y: 0 });
|
|
349
378
|
const dragRef = React5.useRef(null);
|
|
350
379
|
const handle = React5.useMemo(() => {
|
|
@@ -403,10 +432,20 @@ var DialogContent = React5.forwardRef(
|
|
|
403
432
|
// z=1000); staying below that boundary makes a newly focused window
|
|
404
433
|
// usable without coupling the two systems.
|
|
405
434
|
!isModal && !windowedByDefault && "z-[900]",
|
|
435
|
+
// Another layer came to the front after this window (layer-front.ts).
|
|
436
|
+
stacks && behind && "z-[999]",
|
|
406
437
|
// Without an overlay the card needs its own separation from the page.
|
|
407
438
|
windowed && "shadow-2xl ring-1 ring-border/60"
|
|
408
439
|
),
|
|
409
440
|
style: windowed && (offset.x !== 0 || offset.y !== 0) ? { ...style, translate: `${offset.x}px ${offset.y}px` } : style,
|
|
441
|
+
onPointerDownCapture: (event) => {
|
|
442
|
+
onPointerDownCapture?.(event);
|
|
443
|
+
if (behind) bringToFront();
|
|
444
|
+
},
|
|
445
|
+
onFocusCapture: (event) => {
|
|
446
|
+
onFocusCapture?.(event);
|
|
447
|
+
if (behind) bringToFront();
|
|
448
|
+
},
|
|
410
449
|
onInteractOutside: (event) => {
|
|
411
450
|
onInteractOutside?.(event);
|
|
412
451
|
if (windowed && !dismissOnOutsideClick) event.preventDefault();
|