@ai-matrx/design-system 0.19.0 → 0.19.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 +20 -0
- package/dist/data-table/copy-helpers.d.cts +1 -1
- package/dist/data-table/copy-helpers.d.ts +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 +45 -13
- 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 +45 -13
- 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/scroll-pagination.cjs +10 -7
- package/dist/data-table/scroll-pagination.cjs.map +1 -1
- package/dist/data-table/scroll-pagination.js +10 -7
- package/dist/data-table/scroll-pagination.js.map +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/{types-Di6QT0P1.d.cts → types-BcIcmIxd.d.cts} +5 -0
- package/dist/{types-D1m14boM.d.ts → types-xTXSqmR7.d.ts} +5 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { f as MatrxDataTableProps, g as TableViewSnapshot } from '../types-
|
|
4
|
-
export { A as AnyOfColumnSearch, h as CellEditType, i as CellEditsMap, d as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, M as MatrxColumnDef, e as MatrxDataTableCopyConfig, j as MatrxDataTableDetailConfig, k as MatrxDataTableEditConfig, l as MatrxDataTableEmptyState, m as MatrxDataTableFilterUi, n as MatrxDataTableHierarchyConfig, o as MatrxDataTableHierarchyMove, p as MatrxDataTableMobileCardControls, q as MatrxDataTableQueryControl, c as MatrxDataTableQueryState, r as MatrxDataTableRecordControls, s as MatrxDataTableSelectionConfig, t as MatrxDataTableSourceProcessing, u as MatrxDataTableToolbar, v as MatrxDataTableUrlStateConfig, w as MatrxDataTableWindowConfig, x as MatrxTablePagination, y as SortDirection, S as SortState, b as TableSavedViewsProps, T as TableSearchMatchMode, z as TableViewQuery, B as TextFilterMode, D as ToolbarFacet } from '../types-
|
|
3
|
+
import { f as MatrxDataTableProps, g as TableViewSnapshot } from '../types-BcIcmIxd.cjs';
|
|
4
|
+
export { A as AnyOfColumnSearch, h as CellEditType, i as CellEditsMap, d as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, M as MatrxColumnDef, e as MatrxDataTableCopyConfig, j as MatrxDataTableDetailConfig, k as MatrxDataTableEditConfig, l as MatrxDataTableEmptyState, m as MatrxDataTableFilterUi, n as MatrxDataTableHierarchyConfig, o as MatrxDataTableHierarchyMove, p as MatrxDataTableMobileCardControls, q as MatrxDataTableQueryControl, c as MatrxDataTableQueryState, r as MatrxDataTableRecordControls, s as MatrxDataTableSelectionConfig, t as MatrxDataTableSourceProcessing, u as MatrxDataTableToolbar, v as MatrxDataTableUrlStateConfig, w as MatrxDataTableWindowConfig, x as MatrxTablePagination, y as SortDirection, S as SortState, b as TableSavedViewsProps, T as TableSearchMatchMode, z as TableViewQuery, B as TextFilterMode, D as ToolbarFacet } from '../types-BcIcmIxd.cjs';
|
|
5
5
|
export { MatrxDataTableHost, MatrxDataTableProvider, TableDoors, TableEntityRefProps, TableLinkProps, TablePeekProps, TableSidePanelProps, TableToolbarActionProps, TableWindowPanelProps, useMatrxDataTableHost } from './host.cjs';
|
|
6
6
|
export { DataRowInspector } from './data-row-inspector.cjs';
|
|
7
7
|
export { DataRowWindow, DataRowWindowProps, DataRowWindowTab } from './data-row-window.cjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { f as MatrxDataTableProps, g as TableViewSnapshot } from '../types-
|
|
4
|
-
export { A as AnyOfColumnSearch, h as CellEditType, i as CellEditsMap, d as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, M as MatrxColumnDef, e as MatrxDataTableCopyConfig, j as MatrxDataTableDetailConfig, k as MatrxDataTableEditConfig, l as MatrxDataTableEmptyState, m as MatrxDataTableFilterUi, n as MatrxDataTableHierarchyConfig, o as MatrxDataTableHierarchyMove, p as MatrxDataTableMobileCardControls, q as MatrxDataTableQueryControl, c as MatrxDataTableQueryState, r as MatrxDataTableRecordControls, s as MatrxDataTableSelectionConfig, t as MatrxDataTableSourceProcessing, u as MatrxDataTableToolbar, v as MatrxDataTableUrlStateConfig, w as MatrxDataTableWindowConfig, x as MatrxTablePagination, y as SortDirection, S as SortState, b as TableSavedViewsProps, T as TableSearchMatchMode, z as TableViewQuery, B as TextFilterMode, D as ToolbarFacet } from '../types-
|
|
3
|
+
import { f as MatrxDataTableProps, g as TableViewSnapshot } from '../types-xTXSqmR7.js';
|
|
4
|
+
export { A as AnyOfColumnSearch, h as CellEditType, i as CellEditsMap, d as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, M as MatrxColumnDef, e as MatrxDataTableCopyConfig, j as MatrxDataTableDetailConfig, k as MatrxDataTableEditConfig, l as MatrxDataTableEmptyState, m as MatrxDataTableFilterUi, n as MatrxDataTableHierarchyConfig, o as MatrxDataTableHierarchyMove, p as MatrxDataTableMobileCardControls, q as MatrxDataTableQueryControl, c as MatrxDataTableQueryState, r as MatrxDataTableRecordControls, s as MatrxDataTableSelectionConfig, t as MatrxDataTableSourceProcessing, u as MatrxDataTableToolbar, v as MatrxDataTableUrlStateConfig, w as MatrxDataTableWindowConfig, x as MatrxTablePagination, y as SortDirection, S as SortState, b as TableSavedViewsProps, T as TableSearchMatchMode, z as TableViewQuery, B as TextFilterMode, D as ToolbarFacet } from '../types-xTXSqmR7.js';
|
|
5
5
|
export { MatrxDataTableHost, MatrxDataTableProvider, TableDoors, TableEntityRefProps, TableLinkProps, TablePeekProps, TableSidePanelProps, TableToolbarActionProps, TableWindowPanelProps, useMatrxDataTableHost } from './host.js';
|
|
6
6
|
export { DataRowInspector } from './data-row-inspector.js';
|
|
7
7
|
export { DataRowWindow, DataRowWindowProps, DataRowWindowTab } from './data-row-window.js';
|
package/dist/data-table/index.js
CHANGED
|
@@ -1034,12 +1034,16 @@ function isVerticallyScrollable(element) {
|
|
|
1034
1034
|
return (overflowY === "auto" || overflowY === "scroll" || overflowY === "overlay") && element.scrollHeight > element.clientHeight;
|
|
1035
1035
|
}
|
|
1036
1036
|
function resolveScrollOwner(source) {
|
|
1037
|
+
const documentOwner = document.scrollingElement instanceof HTMLElement ? document.scrollingElement : document.documentElement;
|
|
1037
1038
|
for (let node = source; node; node = node.parentElement) {
|
|
1039
|
+
if (node === documentOwner || node === document.documentElement || node === document.body) {
|
|
1040
|
+
return { element: documentOwner, document: true };
|
|
1041
|
+
}
|
|
1038
1042
|
if (node === source && node.scrollHeight > node.clientHeight || isVerticallyScrollable(node)) {
|
|
1039
1043
|
return { element: node, document: false };
|
|
1040
1044
|
}
|
|
1041
1045
|
}
|
|
1042
|
-
return { element:
|
|
1046
|
+
return { element: documentOwner, document: true };
|
|
1043
1047
|
}
|
|
1044
1048
|
function ownerScrollTop(owner) {
|
|
1045
1049
|
return owner.document ? window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0 : owner.element.scrollTop;
|
|
@@ -1166,7 +1170,7 @@ function useScrollPagination({
|
|
|
1166
1170
|
else owner.element.removeEventListener("scroll", onOwnerScroll);
|
|
1167
1171
|
});
|
|
1168
1172
|
};
|
|
1169
|
-
const setIntent = (source
|
|
1173
|
+
const setIntent = (source) => {
|
|
1170
1174
|
const current = latestRef.current;
|
|
1171
1175
|
const owner = resolveScrollOwner(source);
|
|
1172
1176
|
if (!isVisibleContainer(source) || current.loading || current.isFetchingNextPage || inFlightGenerationRef.current !== null) return;
|
|
@@ -1179,9 +1183,8 @@ function useScrollPagination({
|
|
|
1179
1183
|
};
|
|
1180
1184
|
const cleanups = attachable.map((source) => {
|
|
1181
1185
|
if (!observedTopRef.current.has(source)) observedTopRef.current.set(source, source.scrollTop);
|
|
1182
|
-
const lastObservedTop = () => observedTopRef.current.get(source) ?? source.scrollTop;
|
|
1183
1186
|
const onWheel = (event) => {
|
|
1184
|
-
if (event.deltaY > 0 && Math.abs(event.deltaY) > Math.abs(event.deltaX)) setIntent(source
|
|
1187
|
+
if (event.deltaY > 0 && Math.abs(event.deltaY) > Math.abs(event.deltaX)) setIntent(source);
|
|
1185
1188
|
};
|
|
1186
1189
|
const onTouchStart = (event) => {
|
|
1187
1190
|
const touch = event.touches.item(0);
|
|
@@ -1190,16 +1193,16 @@ function useScrollPagination({
|
|
|
1190
1193
|
const onTouchMove = (event) => {
|
|
1191
1194
|
const touch = event.touches.item(0);
|
|
1192
1195
|
const startY = Number(source.dataset.matrxPaginationTouchY);
|
|
1193
|
-
if (touch && Number.isFinite(startY) && startY - touch.clientY > 0) setIntent(source
|
|
1196
|
+
if (touch && Number.isFinite(startY) && startY - touch.clientY > 0) setIntent(source);
|
|
1194
1197
|
};
|
|
1195
1198
|
const onTouchEnd = () => {
|
|
1196
1199
|
delete source.dataset.matrxPaginationTouchY;
|
|
1197
1200
|
};
|
|
1198
1201
|
const onKeyDown = (event) => {
|
|
1199
|
-
if (isDownwardKeyboardInput(event)) setIntent(source
|
|
1202
|
+
if (isDownwardKeyboardInput(event)) setIntent(source);
|
|
1200
1203
|
};
|
|
1201
1204
|
const onPointerDown = (event) => {
|
|
1202
|
-
if (isNativeScrollbarPointer(event, source)) setIntent(source
|
|
1205
|
+
if (isNativeScrollbarPointer(event, source)) setIntent(source);
|
|
1203
1206
|
};
|
|
1204
1207
|
const onScroll = () => {
|
|
1205
1208
|
handleScroll(source, { element: source, document: false });
|
|
@@ -5969,6 +5972,8 @@ function ColumnResizeHandle({
|
|
|
5969
5972
|
minWidth,
|
|
5970
5973
|
maxWidth,
|
|
5971
5974
|
disabled = false,
|
|
5975
|
+
onResizeStart,
|
|
5976
|
+
onResizeCancel,
|
|
5972
5977
|
onResizeCommit
|
|
5973
5978
|
}) {
|
|
5974
5979
|
const handleRef = useRef7(null);
|
|
@@ -6013,6 +6018,7 @@ function ColumnResizeHandle({
|
|
|
6013
6018
|
if (!commit) {
|
|
6014
6019
|
if (active.priorPreview) table?.style.setProperty(cssVar, active.priorPreview);
|
|
6015
6020
|
else table?.style.removeProperty(cssVar);
|
|
6021
|
+
onResizeCancel?.();
|
|
6016
6022
|
} else {
|
|
6017
6023
|
writePreview(width);
|
|
6018
6024
|
setAnnouncedWidth(width);
|
|
@@ -6021,7 +6027,7 @@ function ColumnResizeHandle({
|
|
|
6021
6027
|
if (handleRef.current?.hasPointerCapture(active.pointerId)) {
|
|
6022
6028
|
handleRef.current.releasePointerCapture(active.pointerId);
|
|
6023
6029
|
}
|
|
6024
|
-
}, [clearQueuedPreview, columnId2, cssVar, onResizeCommit, tableRef, writePreview]);
|
|
6030
|
+
}, [clearQueuedPreview, columnId2, cssVar, onResizeCancel, onResizeCommit, tableRef, writePreview]);
|
|
6025
6031
|
useEffect8(() => () => clearQueuedPreview(), [clearQueuedPreview]);
|
|
6026
6032
|
const onPointerDown = (event) => {
|
|
6027
6033
|
if (disabled || event.button !== 0 || !event.isPrimary) return;
|
|
@@ -6029,6 +6035,7 @@ function ColumnResizeHandle({
|
|
|
6029
6035
|
event.stopPropagation();
|
|
6030
6036
|
const startWidth = readWidth();
|
|
6031
6037
|
keyboardWidthRef.current = startWidth;
|
|
6038
|
+
onResizeStart?.();
|
|
6032
6039
|
activeResizeRef.current = {
|
|
6033
6040
|
pointerId: event.pointerId,
|
|
6034
6041
|
startX: event.clientX,
|
|
@@ -6068,6 +6075,7 @@ function ColumnResizeHandle({
|
|
|
6068
6075
|
event.stopPropagation();
|
|
6069
6076
|
const nextWidth = clampColumnWidth(width, bounds);
|
|
6070
6077
|
keyboardWidthRef.current = nextWidth;
|
|
6078
|
+
onResizeStart?.();
|
|
6071
6079
|
writePreview(nextWidth);
|
|
6072
6080
|
setAnnouncedWidth(nextWidth);
|
|
6073
6081
|
onResizeCommit(columnId2, nextWidth);
|
|
@@ -8330,6 +8338,7 @@ function MatrxDataTableCore({
|
|
|
8330
8338
|
if (scrollRef.current) scrollRef.current.scrollTop = 0;
|
|
8331
8339
|
if (cardsScrollRef.current) cardsScrollRef.current.scrollTop = 0;
|
|
8332
8340
|
}, [appendQueryKey]);
|
|
8341
|
+
const appendScrollPolicy = appendQuery?.scroll;
|
|
8333
8342
|
const scrollPagination = useScrollPagination({
|
|
8334
8343
|
containers: [scrollRef, cardsScrollRef],
|
|
8335
8344
|
queryKey: appendQuery?.pagination.queryKey ?? "",
|
|
@@ -8339,7 +8348,11 @@ function MatrxDataTableCore({
|
|
|
8339
8348
|
error: appendQuery?.pagination.error ?? null,
|
|
8340
8349
|
loadNextPage: appendQuery?.pagination.loadNextPage ?? (() => void 0),
|
|
8341
8350
|
enabled: appendQuery !== null,
|
|
8342
|
-
|
|
8351
|
+
// Suspended policy is deliberately manual at the hook boundary: its
|
|
8352
|
+
// reason remains visible in the footer while automatic listeners stay off.
|
|
8353
|
+
mode: appendScrollPolicy?.mode === "suspended" ? "manual" : appendScrollPolicy?.mode ?? "scroll",
|
|
8354
|
+
...appendScrollPolicy?.mode === "scroll" && appendScrollPolicy.thresholdPx !== void 0 ? { thresholdPx: appendScrollPolicy.thresholdPx } : {},
|
|
8355
|
+
...appendScrollPolicy?.mode === "scroll" && appendScrollPolicy.intentTimeoutMs !== void 0 ? { intentTimeoutMs: appendScrollPolicy.intentTimeoutMs } : {}
|
|
8343
8356
|
});
|
|
8344
8357
|
const rootRef = useRef9(null);
|
|
8345
8358
|
const actionDiagnosticObserver = useRef9(null);
|
|
@@ -8481,6 +8494,7 @@ function MatrxDataTableCore({
|
|
|
8481
8494
|
() => normalizeColumnWidthsForColumns(columnState?.widths ?? columnWidths, columns),
|
|
8482
8495
|
[columns, columnState?.widths, columnWidths]
|
|
8483
8496
|
);
|
|
8497
|
+
const resizeGestureSnapshotRef = useRef9(null);
|
|
8484
8498
|
const measureVisibleColumnWidths = useCallback5(() => {
|
|
8485
8499
|
const measured = {};
|
|
8486
8500
|
const headers = tableRef.current ? Array.from(tableRef.current.querySelectorAll(
|
|
@@ -8515,13 +8529,25 @@ function MatrxDataTableCore({
|
|
|
8515
8529
|
...actionsWidth === void 0 ? {} : { actionsWidth }
|
|
8516
8530
|
};
|
|
8517
8531
|
}, []);
|
|
8532
|
+
const captureResizeGestureSnapshot = useCallback5(() => {
|
|
8533
|
+
resizeGestureSnapshotRef.current = {
|
|
8534
|
+
widths: measureVisibleColumnWidths(),
|
|
8535
|
+
geometry: measureFixedTableGeometry()
|
|
8536
|
+
};
|
|
8537
|
+
}, [measureFixedTableGeometry, measureVisibleColumnWidths]);
|
|
8538
|
+
const clearResizeGestureSnapshot = useCallback5(() => {
|
|
8539
|
+
resizeGestureSnapshotRef.current = null;
|
|
8540
|
+
}, []);
|
|
8518
8541
|
const commitColumnWidths = useCallback5((next, captureInitialWidths = false) => {
|
|
8542
|
+
const gestureSnapshot = captureInitialWidths ? resizeGestureSnapshotRef.current : null;
|
|
8543
|
+
resizeGestureSnapshotRef.current = null;
|
|
8519
8544
|
const normalized = normalizeColumnWidthsForColumns(
|
|
8520
|
-
captureInitialWidths ? { ...measureVisibleColumnWidths(), ...next } : next,
|
|
8545
|
+
captureInitialWidths ? { ...gestureSnapshot?.widths ?? measureVisibleColumnWidths(), ...next } : next,
|
|
8521
8546
|
columns
|
|
8522
8547
|
);
|
|
8523
|
-
if (captureInitialWidths)
|
|
8524
|
-
|
|
8548
|
+
if (captureInitialWidths) {
|
|
8549
|
+
setFixedTableGeometry(gestureSnapshot?.geometry ?? measureFixedTableGeometry());
|
|
8550
|
+
} else setFixedTableGeometry(null);
|
|
8525
8551
|
for (const id of columnIds) {
|
|
8526
8552
|
tableRef.current?.style.removeProperty(columnResizeCssVar(id));
|
|
8527
8553
|
}
|
|
@@ -9983,6 +10009,8 @@ function MatrxDataTableCore({
|
|
|
9983
10009
|
tableRef,
|
|
9984
10010
|
minWidth: col.minWidth,
|
|
9985
10011
|
maxWidth: col.maxWidth,
|
|
10012
|
+
onResizeStart: captureResizeGestureSnapshot,
|
|
10013
|
+
onResizeCancel: clearResizeGestureSnapshot,
|
|
9986
10014
|
onResizeCommit: (columnId2, width) => commitColumnWidths(
|
|
9987
10015
|
{ ...effectiveColumnWidths, [columnId2]: width },
|
|
9988
10016
|
true
|
|
@@ -10325,7 +10353,11 @@ function MatrxDataTableCore({
|
|
|
10325
10353
|
"."
|
|
10326
10354
|
] }) : null,
|
|
10327
10355
|
!isLoading && !isFetching && !appendQuery.pagination.loadAll?.isLoading && !scrollPagination.error && !appendQuery.pagination.hasNextPage && appendQuery.pagination.totalItems !== void 0 && data.length === appendQuery.pagination.totalItems ? /* @__PURE__ */ jsx38("p", { children: "All source rows are loaded." }) : appendUsesLocalProcessing ? /* @__PURE__ */ jsx38("p", { children: "Local search and filters cover loaded rows." }) : null,
|
|
10328
|
-
scrollPagination.error ? /* @__PURE__ */ jsx38("p", { role: "alert", className: "break-words text-destructive", children: scrollPagination.error.message }) : null
|
|
10356
|
+
scrollPagination.error ? /* @__PURE__ */ jsx38("p", { role: "alert", className: "break-words text-destructive", children: scrollPagination.error.message }) : null,
|
|
10357
|
+
appendScrollPolicy?.mode === "suspended" ? /* @__PURE__ */ jsxs28("p", { role: "status", className: "break-words", children: [
|
|
10358
|
+
appendScrollPolicy.reason,
|
|
10359
|
+
" Load more remains available."
|
|
10360
|
+
] }) : null
|
|
10329
10361
|
] })
|
|
10330
10362
|
]
|
|
10331
10363
|
}
|