@ai-matrx/design-system 0.86.361 → 0.86.363
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 +13 -0
- package/dist/carousel.js +5 -5
- package/dist/{chunk-ZU2ZODDD.js → chunk-2QFA6CK4.js} +4 -4
- package/dist/{chunk-UCEKAKHP.js → chunk-3YTF4MH2.js} +2 -2
- package/dist/{chunk-T57DLONB.js → chunk-AKSKVT2M.js} +17 -9
- package/dist/chunk-AKSKVT2M.js.map +1 -0
- package/dist/{chunk-LU75R6YX.js → chunk-KOUHF4JC.js} +2 -2
- package/dist/{chunk-HISATFYI.js → chunk-LS3C7IUV.js} +2 -2
- package/dist/{chunk-QK7GPIEA.js → chunk-QJ6SQNXD.js} +4 -4
- package/dist/{chunk-TSETPQWU.js → chunk-RO5CRIOL.js} +2 -2
- package/dist/{chunk-WHERV3VC.js → chunk-SOCDBDFS.js} +4 -4
- package/dist/{chunk-C5HYUXR2.js → chunk-UGUVTE77.js} +2 -2
- package/dist/{chunk-FF524V6P.js → chunk-VOLSYNJY.js} +3 -3
- package/dist/{chunk-WOA6WHV2.js → chunk-WLKHQGX5.js} +2 -2
- package/dist/{chunk-42GFQMLA.js → chunk-WUI5OFCH.js} +2 -2
- package/dist/clipboard-fallback-dialog.js +2 -2
- package/dist/controls.cjs +16 -8
- package/dist/controls.cjs.map +1 -1
- package/dist/controls.js +5 -5
- package/dist/data-table/data-row-inspector.js +5 -5
- package/dist/data-table/data-row-window.js +6 -6
- package/dist/data-table/index.cjs +859 -772
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.js +542 -461
- package/dist/data-table/index.js.map +1 -1
- package/dist/data-table/pagination.cjs +16 -8
- package/dist/data-table/pagination.cjs.map +1 -1
- package/dist/data-table/pagination.js +3 -3
- package/dist/data-table/uuid-cell.js +3 -3
- package/dist/desktop.cjs +16 -8
- package/dist/desktop.cjs.map +1 -1
- package/dist/desktop.js +5 -5
- package/dist/index.cjs +386 -317
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -2
- package/dist/index.d.ts +34 -2
- package/dist/index.js +242 -193
- package/dist/index.js.map +1 -1
- package/dist/intro-stage.cjs +24 -3
- package/dist/intro-stage.cjs.map +1 -1
- package/dist/intro-stage.d.cts +9 -3
- package/dist/intro-stage.d.ts +9 -3
- package/dist/intro-stage.js +24 -3
- package/dist/intro-stage.js.map +1 -1
- package/dist/item.cjs +16 -8
- package/dist/item.cjs.map +1 -1
- package/dist/item.js +4 -4
- package/dist/lite-table.js +2 -2
- package/dist/menu-look.cjs +16 -8
- package/dist/menu-look.cjs.map +1 -1
- package/dist/menu-look.js +2 -2
- package/dist/record-list.cjs +16 -8
- package/dist/record-list.cjs.map +1 -1
- package/dist/record-list.js +4 -4
- package/dist/settings.js +3 -3
- package/dist/styles.css +31 -0
- package/dist/thumbnail-grid.cjs +27 -1
- package/dist/thumbnail-grid.cjs.map +1 -1
- package/dist/thumbnail-grid.d.cts +16 -2
- package/dist/thumbnail-grid.d.ts +16 -2
- package/dist/thumbnail-grid.js +27 -1
- package/dist/thumbnail-grid.js.map +1 -1
- package/dist/writing-field.cjs +3 -2
- package/dist/writing-field.cjs.map +1 -1
- package/dist/writing-field.js +6 -5
- package/dist/writing-field.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-T57DLONB.js.map +0 -1
- /package/dist/{chunk-ZU2ZODDD.js.map → chunk-2QFA6CK4.js.map} +0 -0
- /package/dist/{chunk-UCEKAKHP.js.map → chunk-3YTF4MH2.js.map} +0 -0
- /package/dist/{chunk-LU75R6YX.js.map → chunk-KOUHF4JC.js.map} +0 -0
- /package/dist/{chunk-HISATFYI.js.map → chunk-LS3C7IUV.js.map} +0 -0
- /package/dist/{chunk-QK7GPIEA.js.map → chunk-QJ6SQNXD.js.map} +0 -0
- /package/dist/{chunk-TSETPQWU.js.map → chunk-RO5CRIOL.js.map} +0 -0
- /package/dist/{chunk-WHERV3VC.js.map → chunk-SOCDBDFS.js.map} +0 -0
- /package/dist/{chunk-C5HYUXR2.js.map → chunk-UGUVTE77.js.map} +0 -0
- /package/dist/{chunk-FF524V6P.js.map → chunk-VOLSYNJY.js.map} +0 -0
- /package/dist/{chunk-WOA6WHV2.js.map → chunk-WLKHQGX5.js.map} +0 -0
- /package/dist/{chunk-42GFQMLA.js.map → chunk-WUI5OFCH.js.map} +0 -0
package/dist/data-table/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_TABLE_PAGE_SIZES,
|
|
7
7
|
GenericTablePagination
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-LS3C7IUV.js";
|
|
9
9
|
import {
|
|
10
10
|
useScrollPagination
|
|
11
11
|
} from "../chunk-VOFK23MG.js";
|
|
@@ -145,7 +145,7 @@ import {
|
|
|
145
145
|
ConfirmDialog,
|
|
146
146
|
EmptyState,
|
|
147
147
|
Tile
|
|
148
|
-
} from "../chunk-
|
|
148
|
+
} from "../chunk-WLKHQGX5.js";
|
|
149
149
|
import "../chunk-K4XCB576.js";
|
|
150
150
|
import {
|
|
151
151
|
ErrorBox
|
|
@@ -171,7 +171,7 @@ import {
|
|
|
171
171
|
MacLookLayer,
|
|
172
172
|
useMacLookAttributes,
|
|
173
173
|
withMacLookDefaults
|
|
174
|
-
} from "../chunk-
|
|
174
|
+
} from "../chunk-UGUVTE77.js";
|
|
175
175
|
import "../chunk-YC5GAO35.js";
|
|
176
176
|
import {
|
|
177
177
|
Checkbox
|
|
@@ -215,7 +215,7 @@ import {
|
|
|
215
215
|
searchValueVariants,
|
|
216
216
|
stringifyCellValue,
|
|
217
217
|
tokenFromColumnName
|
|
218
|
-
} from "../chunk-
|
|
218
|
+
} from "../chunk-2QFA6CK4.js";
|
|
219
219
|
import {
|
|
220
220
|
TIME_RANGE_PRESETS,
|
|
221
221
|
TIME_RANGE_PRESET_VALUES,
|
|
@@ -239,7 +239,7 @@ import {
|
|
|
239
239
|
} from "../chunk-FXT7PZAF.js";
|
|
240
240
|
import {
|
|
241
241
|
PropertyRow
|
|
242
|
-
} from "../chunk-
|
|
242
|
+
} from "../chunk-3YTF4MH2.js";
|
|
243
243
|
import "../chunk-WFBPCMPF.js";
|
|
244
244
|
import "../chunk-KGW373MK.js";
|
|
245
245
|
import {
|
|
@@ -257,7 +257,7 @@ import {
|
|
|
257
257
|
RecordId,
|
|
258
258
|
shortUuid,
|
|
259
259
|
useTableNotice
|
|
260
|
-
} from "../chunk-
|
|
260
|
+
} from "../chunk-RO5CRIOL.js";
|
|
261
261
|
import {
|
|
262
262
|
Badge,
|
|
263
263
|
Button as Button2,
|
|
@@ -266,7 +266,7 @@ import {
|
|
|
266
266
|
SegmentedControl,
|
|
267
267
|
Select as Select2,
|
|
268
268
|
Tabs
|
|
269
|
-
} from "../chunk-
|
|
269
|
+
} from "../chunk-KOUHF4JC.js";
|
|
270
270
|
import "../chunk-BD77DHUO.js";
|
|
271
271
|
import "../chunk-BKCJUFD3.js";
|
|
272
272
|
import {
|
|
@@ -289,7 +289,7 @@ import {
|
|
|
289
289
|
DropdownMenuSubContent,
|
|
290
290
|
DropdownMenuSubTrigger,
|
|
291
291
|
DropdownMenuTrigger
|
|
292
|
-
} from "../chunk-
|
|
292
|
+
} from "../chunk-AKSKVT2M.js";
|
|
293
293
|
import "../chunk-BNXNIN2S.js";
|
|
294
294
|
import {
|
|
295
295
|
peopleErrorSentence
|
|
@@ -632,11 +632,11 @@ import {
|
|
|
632
632
|
isValidElement,
|
|
633
633
|
memo,
|
|
634
634
|
useCallback as useCallback4,
|
|
635
|
-
useEffect as
|
|
635
|
+
useEffect as useEffect15,
|
|
636
636
|
useId as useId2,
|
|
637
637
|
useLayoutEffect as useLayoutEffect2,
|
|
638
638
|
useMemo as useMemo8,
|
|
639
|
-
useRef as
|
|
639
|
+
useRef as useRef15,
|
|
640
640
|
useState as useState17,
|
|
641
641
|
useContext as useContext5,
|
|
642
642
|
createContext as createContext4
|
|
@@ -8203,7 +8203,86 @@ function hiddenWithColumnDefaults(order, hidden, columns) {
|
|
|
8203
8203
|
|
|
8204
8204
|
// src/data-table/MatrxDataTable.tsx
|
|
8205
8205
|
import { openOutbound as openOutbound2 } from "@ai-matrx/kit/outbound";
|
|
8206
|
-
|
|
8206
|
+
|
|
8207
|
+
// src/data-table/MultilineRowMarker.tsx
|
|
8208
|
+
import { useRef as useRef14 } from "react";
|
|
8209
|
+
|
|
8210
|
+
// src/data-table/multiline-rows.ts
|
|
8211
|
+
import { useEffect as useEffect14 } from "react";
|
|
8212
|
+
var MULTI = "multi";
|
|
8213
|
+
function cellTextIsMultiline(cell) {
|
|
8214
|
+
const lineHeight = Number.parseFloat(getComputedStyle(cell).lineHeight);
|
|
8215
|
+
const minStep = Number.isFinite(lineHeight) ? lineHeight * 0.75 : 10;
|
|
8216
|
+
const walker = cell.ownerDocument.createTreeWalker(cell, NodeFilter.SHOW_TEXT);
|
|
8217
|
+
const range = cell.ownerDocument.createRange();
|
|
8218
|
+
if (typeof range.getClientRects !== "function") return false;
|
|
8219
|
+
let firstTop = null;
|
|
8220
|
+
for (let node = walker.nextNode(); node; node = walker.nextNode()) {
|
|
8221
|
+
if (!node.textContent?.trim()) continue;
|
|
8222
|
+
range.selectNodeContents(node);
|
|
8223
|
+
for (const rect of Array.from(range.getClientRects())) {
|
|
8224
|
+
if (rect.width === 0 || rect.height === 0) continue;
|
|
8225
|
+
if (firstTop === null) firstTop = rect.top;
|
|
8226
|
+
else if (Math.abs(rect.top - firstTop) >= minStep) return true;
|
|
8227
|
+
}
|
|
8228
|
+
}
|
|
8229
|
+
return false;
|
|
8230
|
+
}
|
|
8231
|
+
function markRows(root) {
|
|
8232
|
+
for (const row of Array.from(root.querySelectorAll("tbody > tr[data-row-id]"))) {
|
|
8233
|
+
let multi = false;
|
|
8234
|
+
for (const cell of Array.from(row.querySelectorAll("[data-matrx-cell-content]"))) {
|
|
8235
|
+
if (cellTextIsMultiline(cell)) {
|
|
8236
|
+
multi = true;
|
|
8237
|
+
break;
|
|
8238
|
+
}
|
|
8239
|
+
}
|
|
8240
|
+
if (multi) {
|
|
8241
|
+
if (row.getAttribute("data-matrx-row-lines") !== MULTI) row.setAttribute("data-matrx-row-lines", MULTI);
|
|
8242
|
+
} else if (row.hasAttribute("data-matrx-row-lines")) {
|
|
8243
|
+
row.removeAttribute("data-matrx-row-lines");
|
|
8244
|
+
}
|
|
8245
|
+
}
|
|
8246
|
+
}
|
|
8247
|
+
function useMultilineRowMarker(anchorRef) {
|
|
8248
|
+
useEffect14(() => {
|
|
8249
|
+
const root = anchorRef.current?.closest("[data-matrx-table]");
|
|
8250
|
+
if (!root || typeof ResizeObserver === "undefined" || typeof MutationObserver === "undefined") return;
|
|
8251
|
+
let pending = false;
|
|
8252
|
+
const run = () => {
|
|
8253
|
+
pending = false;
|
|
8254
|
+
if (root.isConnected) markRows(root);
|
|
8255
|
+
};
|
|
8256
|
+
const schedule = () => {
|
|
8257
|
+
if (pending) return;
|
|
8258
|
+
pending = true;
|
|
8259
|
+
setTimeout(run, 0);
|
|
8260
|
+
};
|
|
8261
|
+
schedule();
|
|
8262
|
+
const mutations = new MutationObserver(schedule);
|
|
8263
|
+
mutations.observe(root, { childList: true, subtree: true, characterData: true });
|
|
8264
|
+
const sizes = new ResizeObserver(schedule);
|
|
8265
|
+
sizes.observe(root);
|
|
8266
|
+
document.addEventListener("visibilitychange", schedule);
|
|
8267
|
+
return () => {
|
|
8268
|
+
pending = true;
|
|
8269
|
+
mutations.disconnect();
|
|
8270
|
+
sizes.disconnect();
|
|
8271
|
+
document.removeEventListener("visibilitychange", schedule);
|
|
8272
|
+
};
|
|
8273
|
+
}, [anchorRef]);
|
|
8274
|
+
}
|
|
8275
|
+
|
|
8276
|
+
// src/data-table/MultilineRowMarker.tsx
|
|
8277
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
8278
|
+
function MultilineRowMarker() {
|
|
8279
|
+
const anchorRef = useRef14(null);
|
|
8280
|
+
useMultilineRowMarker(anchorRef);
|
|
8281
|
+
return /* @__PURE__ */ jsx23("span", { ref: anchorRef, hidden: true, "aria-hidden": true, "data-matrx-multiline-row-marker": "" });
|
|
8282
|
+
}
|
|
8283
|
+
|
|
8284
|
+
// src/data-table/MatrxDataTable.tsx
|
|
8285
|
+
import { Fragment as Fragment15, jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
8207
8286
|
var EMPTY_TABLE_ROWS = [];
|
|
8208
8287
|
function TableToolbarAction({
|
|
8209
8288
|
HostAction,
|
|
@@ -8216,7 +8295,7 @@ function TableToolbarAction({
|
|
|
8216
8295
|
}) {
|
|
8217
8296
|
const listed = useToolbarListed();
|
|
8218
8297
|
if (listed) {
|
|
8219
|
-
return /* @__PURE__ */
|
|
8298
|
+
return /* @__PURE__ */ jsx24("span", { "data-matrx-table-toolbar-action": true, className: "inline-flex", children: /* @__PURE__ */ jsxs22(
|
|
8220
8299
|
Button,
|
|
8221
8300
|
{
|
|
8222
8301
|
type: "button",
|
|
@@ -8230,16 +8309,16 @@ function TableToolbarAction({
|
|
|
8230
8309
|
onClick,
|
|
8231
8310
|
children: [
|
|
8232
8311
|
isValidElement(children) ? cloneElement(children, { className: cn("h-4 w-4", children.props.className) }) : children,
|
|
8233
|
-
/* @__PURE__ */
|
|
8312
|
+
/* @__PURE__ */ jsx24("span", { children: ariaLabel })
|
|
8234
8313
|
]
|
|
8235
8314
|
}
|
|
8236
8315
|
) });
|
|
8237
8316
|
}
|
|
8238
8317
|
if (HostAction) {
|
|
8239
|
-
return /* @__PURE__ */
|
|
8318
|
+
return /* @__PURE__ */ jsx24("span", { "data-matrx-table-toolbar-action": true, children: /* @__PURE__ */ jsx24(HostAction, { ariaLabel, tooltip, disabled, busy, onClick, children }) });
|
|
8240
8319
|
}
|
|
8241
8320
|
return /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
8242
|
-
/* @__PURE__ */
|
|
8321
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24("span", { "data-matrx-table-toolbar-action": true, className: "inline-flex", children: /* @__PURE__ */ jsx24(
|
|
8243
8322
|
Button2,
|
|
8244
8323
|
{
|
|
8245
8324
|
variant: "quiet",
|
|
@@ -8251,7 +8330,7 @@ function TableToolbarAction({
|
|
|
8251
8330
|
icon: children
|
|
8252
8331
|
}
|
|
8253
8332
|
) }) }),
|
|
8254
|
-
/* @__PURE__ */
|
|
8333
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: tooltip ?? ariaLabel })
|
|
8255
8334
|
] });
|
|
8256
8335
|
}
|
|
8257
8336
|
function customActionsHeaderNeed(header) {
|
|
@@ -8276,7 +8355,7 @@ function TableRowCopyControl({
|
|
|
8276
8355
|
sourceId,
|
|
8277
8356
|
defaultColumns
|
|
8278
8357
|
}) {
|
|
8279
|
-
return /* @__PURE__ */
|
|
8358
|
+
return /* @__PURE__ */ jsx24(DeferredCopyButtons, { size, ...tableRowCopyProps(copy, row, sourceId, defaultColumns) });
|
|
8280
8359
|
}
|
|
8281
8360
|
function tableRowCopyProps(copy, row, sourceId, defaultColumns) {
|
|
8282
8361
|
const aiVariants = copy.rowAiVariants?.(row);
|
|
@@ -8486,7 +8565,7 @@ function MatrxDataTable(suppliedProps) {
|
|
|
8486
8565
|
resolvedUrlState?.auto ? resolvedUrlState.config.id : null,
|
|
8487
8566
|
Boolean(resolvedUrlState?.auto)
|
|
8488
8567
|
);
|
|
8489
|
-
return /* @__PURE__ */
|
|
8568
|
+
return /* @__PURE__ */ jsx24(MacLookContext.Provider, { value: props.look === "mac" ? props.density ?? lookHost.defaultDensity ?? "normal" : null, children: /* @__PURE__ */ jsx24(MacLookLayer, { density: props.look === "mac" ? props.density ?? lookHost.defaultDensity ?? "normal" : null, children: /* @__PURE__ */ jsx24(InsideMatrxDataTableContext.Provider, { value: true, children: /* @__PURE__ */ jsx24(MatrxTableCardContext.Provider, { value: null, children: /* @__PURE__ */ jsx24(TableCardOwnerContext.Provider, { value: card, children: resolvedUrlState ? /* @__PURE__ */ jsx24(
|
|
8490
8569
|
MatrxDataTableWithUrlState,
|
|
8491
8570
|
{
|
|
8492
8571
|
...presentedProps,
|
|
@@ -8494,7 +8573,7 @@ function MatrxDataTable(suppliedProps) {
|
|
|
8494
8573
|
autoUrlState: resolvedUrlState.auto
|
|
8495
8574
|
},
|
|
8496
8575
|
resolvedUrlState.auto ? defaultUrlId ?? resolvedUrlState.config.id : resolvedUrlState.config.id
|
|
8497
|
-
) : /* @__PURE__ */
|
|
8576
|
+
) : /* @__PURE__ */ jsx24(MatrxDataTableCore, { ...presentedProps, urlState: false }) }) }) }) }) });
|
|
8498
8577
|
}
|
|
8499
8578
|
var NO_CUSTOM_FIELD_COLUMNS = [];
|
|
8500
8579
|
function noCustomFieldColumns() {
|
|
@@ -8550,7 +8629,7 @@ function listPresentationProps(props) {
|
|
|
8550
8629
|
...props.focusRowId === void 0 && props.activeRowId ? { focusRowId: props.activeRowId } : {},
|
|
8551
8630
|
mobileCardsBreakpoint: "always",
|
|
8552
8631
|
cardsLayout: "list",
|
|
8553
|
-
mobileCards: props.mobileCards ?? ((row, _index, controls) => /* @__PURE__ */
|
|
8632
|
+
mobileCards: props.mobileCards ?? ((row, _index, controls) => /* @__PURE__ */ jsx24(
|
|
8554
8633
|
TableListItem,
|
|
8555
8634
|
{
|
|
8556
8635
|
title: titleOf(row),
|
|
@@ -8589,7 +8668,7 @@ function MatrxDataTableWithUrlState({
|
|
|
8589
8668
|
const seedFilters = props.initialColumnFilters;
|
|
8590
8669
|
const hasSeedFilters = Boolean(seedFilters && Object.keys(seedFilters).length > 0);
|
|
8591
8670
|
const [seeded, setSeeded] = useState17(!seedSearch && !hasSeedFilters);
|
|
8592
|
-
|
|
8671
|
+
useEffect15(() => {
|
|
8593
8672
|
if (seeded) return;
|
|
8594
8673
|
const params = new URLSearchParams(window.location.search);
|
|
8595
8674
|
const patch = {};
|
|
@@ -8610,7 +8689,7 @@ function MatrxDataTableWithUrlState({
|
|
|
8610
8689
|
},
|
|
8611
8690
|
[seeded, table.state, seedSearch, seedFilters, hasSeedFilters]
|
|
8612
8691
|
);
|
|
8613
|
-
|
|
8692
|
+
useEffect15(() => {
|
|
8614
8693
|
const id = urlState.id;
|
|
8615
8694
|
if (!autoUrlState) {
|
|
8616
8695
|
if (urlTableIdHeld(id)) {
|
|
@@ -8662,7 +8741,7 @@ function MatrxDataTableWithUrlState({
|
|
|
8662
8741
|
} : props.selection;
|
|
8663
8742
|
const viewSearch = useUrlSearchParams2().toString();
|
|
8664
8743
|
const carryView = useCallback4((href) => carryTableViewParams(href, viewSearch, urlState.id), [viewSearch, urlState.id]);
|
|
8665
|
-
return /* @__PURE__ */
|
|
8744
|
+
return /* @__PURE__ */ jsx24(TableViewHrefContext.Provider, { value: carryView, children: /* @__PURE__ */ jsx24(
|
|
8666
8745
|
MatrxDataTableCore,
|
|
8667
8746
|
{
|
|
8668
8747
|
...props,
|
|
@@ -8726,7 +8805,7 @@ function opensRowHref(event) {
|
|
|
8726
8805
|
return event.metaKey || event.ctrlKey || event.shiftKey || event.button === 1;
|
|
8727
8806
|
}
|
|
8728
8807
|
function TableContextPassthrough({ children }) {
|
|
8729
|
-
return /* @__PURE__ */
|
|
8808
|
+
return /* @__PURE__ */ jsx24(Fragment15, { children });
|
|
8730
8809
|
}
|
|
8731
8810
|
function sameWindow(a, b) {
|
|
8732
8811
|
if (a === null || b === null) return a === b;
|
|
@@ -8742,7 +8821,7 @@ var DND_MEASURING = { droppable: { strategy: MeasuringStrategy.Always } };
|
|
|
8742
8821
|
var NO_LAYERED_FILTERS = [];
|
|
8743
8822
|
var NO_GROUPING_VALUE = "__matrx_no_grouping__";
|
|
8744
8823
|
function useRenderEpoch(values) {
|
|
8745
|
-
const held =
|
|
8824
|
+
const held = useRef15(null);
|
|
8746
8825
|
const previous = held.current;
|
|
8747
8826
|
if (previous !== null && previous.values.length === values.length && previous.values.every((value, i) => Object.is(value, values[i]))) {
|
|
8748
8827
|
return previous.epoch;
|
|
@@ -8786,13 +8865,13 @@ function sameBodyRow(a, b) {
|
|
|
8786
8865
|
}
|
|
8787
8866
|
var MatrxTableBodyRow = memo(function MatrxTableBodyRow2(props) {
|
|
8788
8867
|
const { rowId, row, index, draw } = props;
|
|
8789
|
-
const last =
|
|
8868
|
+
const last = useRef15(null);
|
|
8790
8869
|
const fresh = last.current === null || !sameBodyRow({ ...last.current, probe: props.probe }, props);
|
|
8791
8870
|
last.current = props;
|
|
8792
8871
|
return draw(rowId, row, index, fresh);
|
|
8793
8872
|
}, sameBodyRow);
|
|
8794
8873
|
var MatrxTableChrome = memo(function MatrxTableChrome2({ render }) {
|
|
8795
|
-
return /* @__PURE__ */
|
|
8874
|
+
return /* @__PURE__ */ jsx24(Fragment15, { children: render() });
|
|
8796
8875
|
}, (a, b) => a.part === b.part && a.epoch === b.epoch);
|
|
8797
8876
|
function columnsSignature(columns) {
|
|
8798
8877
|
const out = [];
|
|
@@ -8911,7 +8990,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
8911
8990
|
appearance = "standalone"
|
|
8912
8991
|
} = coreProps;
|
|
8913
8992
|
const macPortalAttrs = useMacLookAttributes();
|
|
8914
|
-
const wearMacLook = (node) => macPortalAttrs["data-matrx-table-look"] ? /* @__PURE__ */
|
|
8993
|
+
const wearMacLook = (node) => macPortalAttrs["data-matrx-table-look"] ? /* @__PURE__ */ jsx24("div", { className: "contents", ...macPortalAttrs, children: node }) : node;
|
|
8915
8994
|
const urlState = suppliedUrlState || void 0;
|
|
8916
8995
|
const drill = isAnsweredDrillConfig(suppliedDrill) ? suppliedDrill : void 0;
|
|
8917
8996
|
const labelForField = useCallback4(
|
|
@@ -8951,7 +9030,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
8951
9030
|
const selectionConfig = suppliedSelectionConfig === false ? void 0 : suppliedSelectionConfig;
|
|
8952
9031
|
const appendQuery = query?.mode === "controlled-append" ? query : null;
|
|
8953
9032
|
const appendQueryKey = appendQuery?.pagination.queryKey ?? null;
|
|
8954
|
-
const committedAppendQueryKey =
|
|
9033
|
+
const committedAppendQueryKey = useRef15(appendQueryKey);
|
|
8955
9034
|
const appendSourceChanged = appendQuery !== null && committedAppendQueryKey.current !== appendQueryKey;
|
|
8956
9035
|
const data = (appendQuery ? appendQuery.pagination.rows : suppliedData) ?? EMPTY_TABLE_ROWS;
|
|
8957
9036
|
const appendFirstPagePending = appendQuery !== null && data.length === 0 && appendQuery.pagination.hasNextPage && !appendQuery.pagination.error;
|
|
@@ -8960,14 +9039,14 @@ function MatrxDataTableCore(coreProps) {
|
|
|
8960
9039
|
const frameHeight = isLoading && loadingRows === "fill" ? "fill" : askedFrameHeight;
|
|
8961
9040
|
const skeletonRowCount = loadingRows === "fill" ? 40 : Math.max(1, Math.min(100, Math.round(loadingRows ?? (defaultPageSize > 0 ? defaultPageSize : 6))));
|
|
8962
9041
|
const isFetching = appendQuery ? appendQuery.pagination.isFetchingNextPage : suppliedFetching;
|
|
8963
|
-
const everLoadingRef =
|
|
9042
|
+
const everLoadingRef = useRef15(false);
|
|
8964
9043
|
if (isLoading) everLoadingRef.current = true;
|
|
8965
9044
|
const everLoading = everLoadingRef.current;
|
|
8966
9045
|
const host = useMatrxDataTableHost();
|
|
8967
9046
|
const carryTableView = useContext5(TableViewHrefContext);
|
|
8968
9047
|
const ReadFailureView = host.ReadFailure ?? DefaultTableReadFailure;
|
|
8969
9048
|
const StaleNoticeView = host.StaleNotice ?? DefaultTableStaleNotice;
|
|
8970
|
-
const readFailure = readView.failure ? /* @__PURE__ */
|
|
9049
|
+
const readFailure = readView.failure ? /* @__PURE__ */ jsx24(ReadFailureView, { error: read?.error ?? true, what: readView.what, onRetry: read?.onRetry }) : null;
|
|
8971
9050
|
const ContextMenuBoundary = host.ContextMenuBoundary ?? TableContextPassthrough;
|
|
8972
9051
|
const resolvedDensity = density ?? host.defaultDensity ?? "normal";
|
|
8973
9052
|
const explicitRowHeight = askedRowHeight ?? (look === "mac" ? MAC_ROW_HEIGHT_BY_DENSITY[resolvedDensity] : void 0);
|
|
@@ -8980,7 +9059,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
8980
9059
|
const [savedViewError, setSavedViewError] = useState17(null);
|
|
8981
9060
|
const [toolbarActionError, setToolbarActionError] = useState17(null);
|
|
8982
9061
|
const [toolbarActionPending, setToolbarActionPending] = useState17({ refresh: false, add: false });
|
|
8983
|
-
const toolbarActionPendingRef =
|
|
9062
|
+
const toolbarActionPendingRef = useRef15({ refresh: false, add: false });
|
|
8984
9063
|
const CHECKBOX_TAP_AREA = "h-4 w-4 touch-manipulation";
|
|
8985
9064
|
const mobileCardsClass = mobileCardsBreakpoint === "always" ? "" : mobileCardsBreakpoint === "lg" ? "lg:hidden" : mobileCardsBreakpoint === "md" ? "md:hidden" : "sm:hidden";
|
|
8986
9065
|
const tableWithCardsClass = mobileCardsBreakpoint === "always" ? "hidden" : mobileCardsBreakpoint === "lg" ? "max-lg:hidden" : mobileCardsBreakpoint === "md" ? "max-md:hidden" : "max-sm:hidden";
|
|
@@ -8996,7 +9075,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
8996
9075
|
return () => media.removeEventListener?.("change", read2);
|
|
8997
9076
|
}, []);
|
|
8998
9077
|
const canonicalSelectionWidth = touchSelection ? 44 : SELECTION_COLUMN_PX;
|
|
8999
|
-
|
|
9078
|
+
useEffect15(() => {
|
|
9000
9079
|
if (!mobileCards || typeof window === "undefined" || !window.matchMedia) return;
|
|
9001
9080
|
const mql = window.matchMedia(cardsQuery);
|
|
9002
9081
|
const read2 = () => setCardsActive(mql.matches);
|
|
@@ -9151,9 +9230,9 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9151
9230
|
const [windowRowSnapshot, setWindowRowSnapshot] = useState17(null);
|
|
9152
9231
|
const editScopeKey = appendQueryKey === null ? "\0local" : `append:${appendQueryKey}`;
|
|
9153
9232
|
const [editsByScope, setEditsByScope] = useState17({});
|
|
9154
|
-
const editRevisionRef =
|
|
9233
|
+
const editRevisionRef = useRef15({});
|
|
9155
9234
|
const [savingByScope, setSavingByScope] = useState17({});
|
|
9156
|
-
const savingScopesRef =
|
|
9235
|
+
const savingScopesRef = useRef15(/* @__PURE__ */ new Set());
|
|
9157
9236
|
const [editRequest, setEditRequest] = useState17(null);
|
|
9158
9237
|
const [confirmForeignDraftDiscard, setConfirmForeignDraftDiscard] = useState17(false);
|
|
9159
9238
|
const edits = editsByScope[editScopeKey]?.values ?? {};
|
|
@@ -9225,10 +9304,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9225
9304
|
selectionConfig?.scopeKey === void 0 ? "receipt" : "membership",
|
|
9226
9305
|
selectionConfig?.scopeKey ?? appendQueryKey
|
|
9227
9306
|
]);
|
|
9228
|
-
const committedSelectionSourceKey =
|
|
9307
|
+
const committedSelectionSourceKey = useRef15(selectionSourceKey);
|
|
9229
9308
|
const selectionSourceChanged = selectionSourceKey !== null && committedSelectionSourceKey.current !== null && committedSelectionSourceKey.current !== selectionSourceKey;
|
|
9230
9309
|
const selection = selectionSourceChanged && selectionConfig ? { ...selectionConfig, selectedIds: [] } : selectionConfig;
|
|
9231
|
-
|
|
9310
|
+
useEffect15(() => {
|
|
9232
9311
|
const previous = committedAppendQueryKey.current;
|
|
9233
9312
|
committedAppendQueryKey.current = appendQueryKey;
|
|
9234
9313
|
if (previous === null || appendQueryKey === null || previous === appendQueryKey) {
|
|
@@ -9245,21 +9324,21 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9245
9324
|
onWindowRowIdChange
|
|
9246
9325
|
]);
|
|
9247
9326
|
const onSelectionSourceChange = selectionConfig?.onSelectedIdsChange;
|
|
9248
|
-
|
|
9327
|
+
useEffect15(() => {
|
|
9249
9328
|
const previous = committedSelectionSourceKey.current;
|
|
9250
9329
|
committedSelectionSourceKey.current = selectionSourceKey;
|
|
9251
9330
|
if (previous !== null && selectionSourceKey !== null && previous !== selectionSourceKey) {
|
|
9252
9331
|
onSelectionSourceChange?.([]);
|
|
9253
9332
|
}
|
|
9254
9333
|
}, [selectionSourceKey, onSelectionSourceChange]);
|
|
9255
|
-
const scrollRef =
|
|
9256
|
-
const tableRef =
|
|
9257
|
-
const tableHeaderRef =
|
|
9258
|
-
const cardsScrollRef =
|
|
9334
|
+
const scrollRef = useRef15(null);
|
|
9335
|
+
const tableRef = useRef15(null);
|
|
9336
|
+
const tableHeaderRef = useRef15(null);
|
|
9337
|
+
const cardsScrollRef = useRef15(null);
|
|
9259
9338
|
const scrollContainers = useMemo8(() => [scrollRef, cardsScrollRef], []);
|
|
9260
9339
|
const [documentStickyHeader, setDocumentStickyHeader] = useState17(false);
|
|
9261
|
-
const documentStickyHeaderRef =
|
|
9262
|
-
const previousAppendKeyForScrollReset =
|
|
9340
|
+
const documentStickyHeaderRef = useRef15(false);
|
|
9341
|
+
const previousAppendKeyForScrollReset = useRef15(appendQueryKey);
|
|
9263
9342
|
useLayoutEffect2(() => {
|
|
9264
9343
|
const previous = previousAppendKeyForScrollReset.current;
|
|
9265
9344
|
previousAppendKeyForScrollReset.current = appendQueryKey;
|
|
@@ -9286,7 +9365,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9286
9365
|
...appendScrollPolicy?.mode === "scroll" && appendScrollPolicy.thresholdPx !== void 0 ? { thresholdPx: appendScrollPolicy.thresholdPx } : {},
|
|
9287
9366
|
...appendScrollPolicy?.mode === "scroll" && appendScrollPolicy.intentTimeoutMs !== void 0 ? { intentTimeoutMs: appendScrollPolicy.intentTimeoutMs } : {}
|
|
9288
9367
|
});
|
|
9289
|
-
const rootRef =
|
|
9368
|
+
const rootRef = useRef15(null);
|
|
9290
9369
|
useClippedContentGuard(rootRef, {
|
|
9291
9370
|
label: typeof copy === "object" && copy.listLabel ? `Table: ${copy.listLabel}` : "MatrxDataTable"
|
|
9292
9371
|
});
|
|
@@ -9294,7 +9373,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9294
9373
|
const [scrollHintLeft, setScrollHintLeft] = useState17(false);
|
|
9295
9374
|
const [scrollHintRightInset, setScrollHintRightInset] = useState17(6);
|
|
9296
9375
|
const [scrollHintTop, setScrollHintTop] = useState17(null);
|
|
9297
|
-
const hintScrollLeft =
|
|
9376
|
+
const hintScrollLeft = useRef15(0);
|
|
9298
9377
|
const updateScrollHint = useCallback4(() => {
|
|
9299
9378
|
const el = scrollRef.current;
|
|
9300
9379
|
if (!el) return;
|
|
@@ -9341,7 +9420,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9341
9420
|
behavior: "smooth"
|
|
9342
9421
|
});
|
|
9343
9422
|
};
|
|
9344
|
-
|
|
9423
|
+
useEffect15(() => {
|
|
9345
9424
|
window.addEventListener("resize", updateScrollHint);
|
|
9346
9425
|
const el = scrollRef.current;
|
|
9347
9426
|
const observer = el && typeof ResizeObserver !== "undefined" ? new ResizeObserver(updateScrollHint) : null;
|
|
@@ -9441,18 +9520,18 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9441
9520
|
() => normalizeColumnWidthsForColumns(columnState?.widths, columns)
|
|
9442
9521
|
);
|
|
9443
9522
|
const [fixedTableGeometry, setFixedTableGeometry] = useState17(null);
|
|
9444
|
-
const knownColumnIds =
|
|
9445
|
-
const draggedColumnId =
|
|
9446
|
-
const columnDragActive =
|
|
9447
|
-
const columnDragRaf =
|
|
9448
|
-
const columnDragScrollDirection =
|
|
9523
|
+
const knownColumnIds = useRef15(new Set(columns.map(columnId)));
|
|
9524
|
+
const draggedColumnId = useRef15(null);
|
|
9525
|
+
const columnDragActive = useRef15(false);
|
|
9526
|
+
const columnDragRaf = useRef15(null);
|
|
9527
|
+
const columnDragScrollDirection = useRef15(0);
|
|
9449
9528
|
const [columnDragPreview, setColumnDragPreview] = useState17(null);
|
|
9450
9529
|
const stopColumnDragScroll = useCallback4(() => {
|
|
9451
9530
|
if (columnDragRaf.current !== null) cancelAnimationFrame(columnDragRaf.current);
|
|
9452
9531
|
columnDragRaf.current = null;
|
|
9453
9532
|
columnDragScrollDirection.current = 0;
|
|
9454
9533
|
}, []);
|
|
9455
|
-
|
|
9534
|
+
useEffect15(() => () => {
|
|
9456
9535
|
columnDragActive.current = false;
|
|
9457
9536
|
stopColumnDragScroll();
|
|
9458
9537
|
}, [stopColumnDragScroll]);
|
|
@@ -9533,7 +9612,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9533
9612
|
}, columns),
|
|
9534
9613
|
[columns, persistedColumnWidths, autoResizeSnapshot]
|
|
9535
9614
|
);
|
|
9536
|
-
const resizeGestureSnapshotRef =
|
|
9615
|
+
const resizeGestureSnapshotRef = useRef15(null);
|
|
9537
9616
|
const measureVisibleColumnWidths = useCallback4(() => {
|
|
9538
9617
|
const measured = {};
|
|
9539
9618
|
const headers = tableRef.current ? Array.from(tableRef.current.querySelectorAll(
|
|
@@ -9621,7 +9700,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9621
9700
|
const { [id]: _dropped, ...rest } = effectiveColumnWidths;
|
|
9622
9701
|
commitColumnWidths(rest);
|
|
9623
9702
|
}, [commitColumnWidths, effectiveColumnWidths]);
|
|
9624
|
-
|
|
9703
|
+
useEffect15(() => {
|
|
9625
9704
|
const ids = columns.map(columnId);
|
|
9626
9705
|
if (columnState) return;
|
|
9627
9706
|
const previousIds = knownColumnIds.current;
|
|
@@ -9690,8 +9769,8 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9690
9769
|
const freezeWanted = visibleColumns.some((column) => column.frozen);
|
|
9691
9770
|
const selectionColumnWidth = selection ? canonicalSelectionWidth : void 0;
|
|
9692
9771
|
const [fitSpace, setFitSpace] = useState17(null);
|
|
9693
|
-
const fitReadRef =
|
|
9694
|
-
const fitSettlePasses =
|
|
9772
|
+
const fitReadRef = useRef15(null);
|
|
9773
|
+
const fitSettlePasses = useRef15(0);
|
|
9695
9774
|
useLayoutEffect2(() => {
|
|
9696
9775
|
if (!fitSpace || fitSettlePasses.current >= 4) return;
|
|
9697
9776
|
fitSettlePasses.current += 1;
|
|
@@ -9873,7 +9952,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9873
9952
|
const tableContextMenuInstanceId = useId2();
|
|
9874
9953
|
const tableDndContextId = useId2();
|
|
9875
9954
|
const defaultCopyTitle = toolbar?.title || "Table";
|
|
9876
|
-
const copyColumnsLatest =
|
|
9955
|
+
const copyColumnsLatest = useRef15(declaredVisibleCopyColumns);
|
|
9877
9956
|
copyColumnsLatest.current = declaredVisibleCopyColumns;
|
|
9878
9957
|
const readDeclaredCopyColumns = lazyCallback(() => copyColumnsLatest.current);
|
|
9879
9958
|
const defaultCopy = useMemo8(() => ({
|
|
@@ -9894,7 +9973,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9894
9973
|
const visibleDataColumns = useMemo8(() => visibleColumns.filter((column) => !column.customActions), [visibleColumns]);
|
|
9895
9974
|
const effectiveCopyColumns = copy === void 0 ? declaredVisibleCopyColumns : visibleDataColumns;
|
|
9896
9975
|
const copySubsetVariant2 = useCopySubsetVariant();
|
|
9897
|
-
const chromeLatest =
|
|
9976
|
+
const chromeLatest = useRef15({
|
|
9898
9977
|
processed: [],
|
|
9899
9978
|
data: [],
|
|
9900
9979
|
toggleAllOnPage: () => void 0,
|
|
@@ -9938,7 +10017,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
9938
10017
|
}),
|
|
9939
10018
|
[columns, data, toolbar?.intelligentSearch?.roles, toolbar?.intelligentSearch?.scopes]
|
|
9940
10019
|
);
|
|
9941
|
-
const getRowIdForSearch =
|
|
10020
|
+
const getRowIdForSearch = useRef15(getRowId);
|
|
9942
10021
|
getRowIdForSearch.current = getRowId;
|
|
9943
10022
|
const rowIdForSearch = useCallback4((row) => getRowIdForSearch.current(row), []);
|
|
9944
10023
|
const searchTextWithId = useCallback4(
|
|
@@ -10028,11 +10107,11 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10028
10107
|
sort
|
|
10029
10108
|
};
|
|
10030
10109
|
const viewQueryKey = onViewChange ? JSON.stringify(viewQuery) : "";
|
|
10031
|
-
const viewQueryRef =
|
|
10110
|
+
const viewQueryRef = useRef15(viewQuery);
|
|
10032
10111
|
viewQueryRef.current = viewQuery;
|
|
10033
|
-
const lastNotifiedViewRows =
|
|
10034
|
-
const lastNotifiedViewQueryKey =
|
|
10035
|
-
|
|
10112
|
+
const lastNotifiedViewRows = useRef15(null);
|
|
10113
|
+
const lastNotifiedViewQueryKey = useRef15(null);
|
|
10114
|
+
useEffect15(() => {
|
|
10036
10115
|
if (!onViewChange) {
|
|
10037
10116
|
lastNotifiedViewRows.current = null;
|
|
10038
10117
|
lastNotifiedViewQueryKey.current = null;
|
|
@@ -10043,7 +10122,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10043
10122
|
lastNotifiedViewQueryKey.current = viewQueryKey;
|
|
10044
10123
|
if (changed) onViewChange(processed, viewQueryRef.current);
|
|
10045
10124
|
}, [processed, viewQueryKey, onViewChange]);
|
|
10046
|
-
|
|
10125
|
+
useEffect15(() => {
|
|
10047
10126
|
if (controlledQuery) return;
|
|
10048
10127
|
setInternalPage(1);
|
|
10049
10128
|
}, [
|
|
@@ -10143,9 +10222,9 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10143
10222
|
const pageOffset = remoteQuery || hidePagination || localProgressiveEnabled || pageSize === 0 ? 0 : (safePage - 1) * effectivePageSize;
|
|
10144
10223
|
const focusIndex = focusRowId ? orderedRows.findIndex((r) => getRowId(r) === focusRowId) : -1;
|
|
10145
10224
|
const focusedRowId = focusIndex >= 0 ? focusRowId ?? null : null;
|
|
10146
|
-
const focusPagedFor =
|
|
10225
|
+
const focusPagedFor = useRef15(null);
|
|
10147
10226
|
const focusPageable = !remoteQuery && !hidePagination && !localProgressiveEnabled && pageSize !== 0;
|
|
10148
|
-
|
|
10227
|
+
useEffect15(() => {
|
|
10149
10228
|
if (!focusedRowId) {
|
|
10150
10229
|
focusPagedFor.current = null;
|
|
10151
10230
|
return;
|
|
@@ -10155,7 +10234,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10155
10234
|
if (focusPageable) setPage(Math.floor(focusIndex / effectivePageSize) + 1);
|
|
10156
10235
|
}, [focusedRowId]);
|
|
10157
10236
|
const focusShownPage = focusedRowId !== null && (!focusPageable || safePage === Math.floor(focusIndex / effectivePageSize) + 1);
|
|
10158
|
-
|
|
10237
|
+
useEffect15(() => {
|
|
10159
10238
|
if (!focusedRowId || !focusShownPage) return;
|
|
10160
10239
|
const row = rootRef.current?.querySelector(`tr[data-row-id="${CSS.escape(focusedRowId)}"]`);
|
|
10161
10240
|
row?.scrollIntoView?.({ block: "center" });
|
|
@@ -10204,7 +10283,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10204
10283
|
const columnVirtualizeActive = virtualizeConfig !== null && virtualizeConfig.enabled !== false && virtualizeConfig.columns === true && visibleColumns.length - frozenRunLength > 30 && !hierarchy && mobileCards === void 0;
|
|
10205
10284
|
const [rowWindow, setRowWindow] = useState17(null);
|
|
10206
10285
|
const [columnWindow, setColumnWindow] = useState17(null);
|
|
10207
|
-
const windowInputs =
|
|
10286
|
+
const windowInputs = useRef15({
|
|
10208
10287
|
virtualizeActive: false,
|
|
10209
10288
|
bodyEntryCount: 0,
|
|
10210
10289
|
virtualRowHeight: 40,
|
|
@@ -10276,7 +10355,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10276
10355
|
frozenRunLength
|
|
10277
10356
|
]);
|
|
10278
10357
|
const metricsWanted = virtualizeActive || columnVirtualizeActive;
|
|
10279
|
-
|
|
10358
|
+
useEffect15(() => {
|
|
10280
10359
|
recomputeWindows();
|
|
10281
10360
|
}, [
|
|
10282
10361
|
recomputeWindows,
|
|
@@ -10288,7 +10367,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10288
10367
|
columnWindowWidth,
|
|
10289
10368
|
frozenRunLength
|
|
10290
10369
|
]);
|
|
10291
|
-
|
|
10370
|
+
useEffect15(() => {
|
|
10292
10371
|
if (!metricsWanted) return;
|
|
10293
10372
|
const el = scrollRef.current;
|
|
10294
10373
|
if (!el) return;
|
|
@@ -10313,9 +10392,9 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10313
10392
|
const cardsGridWindowed = cardsLayout === "grid" && groupedRenderRows === null;
|
|
10314
10393
|
const cardsVirtualActive = cardsMounted && virtualizeActive && (cardsLayout !== "grid" || cardsGridWindowed);
|
|
10315
10394
|
const cardEstimate = resolvedDensity === "condensed" ? 72 : resolvedDensity === "spacious" ? 104 : 88;
|
|
10316
|
-
const measuredCardSize =
|
|
10395
|
+
const measuredCardSize = useRef15(0);
|
|
10317
10396
|
const [cardWindow, setCardWindow] = useState17(null);
|
|
10318
|
-
const cardWindowInputs =
|
|
10397
|
+
const cardWindowInputs = useRef15({ active: false, grid: false, count: 0, size: 88, overscan: 8 });
|
|
10319
10398
|
cardWindowInputs.current = {
|
|
10320
10399
|
active: cardsVirtualActive,
|
|
10321
10400
|
grid: cardsGridWindowed,
|
|
@@ -10342,10 +10421,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10342
10421
|
setCardWindow((prev) => sameWindow(prev, next) ? prev : next);
|
|
10343
10422
|
}, [computeCardWindow]);
|
|
10344
10423
|
const effectiveCardWindow = cardsVirtualActive ? cardWindow && cardWindow.end <= bodyEntryCount ? cardWindow : computeCardWindow() : null;
|
|
10345
|
-
|
|
10424
|
+
useEffect15(() => {
|
|
10346
10425
|
recomputeCardWindow();
|
|
10347
10426
|
}, [recomputeCardWindow, cardsVirtualActive, bodyEntryCount, cardEstimate]);
|
|
10348
|
-
|
|
10427
|
+
useEffect15(() => {
|
|
10349
10428
|
if (!cardsVirtualActive) return;
|
|
10350
10429
|
const el = cardsScrollRef.current;
|
|
10351
10430
|
if (!el) return;
|
|
@@ -10435,7 +10514,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10435
10514
|
windowed.push({ kind: "spacer", height: effectiveRowWindow.padEnd, place: "end" });
|
|
10436
10515
|
return windowed;
|
|
10437
10516
|
}, [groupedRenderRows, collapsedGroups, paginated, effectiveRowWindow]);
|
|
10438
|
-
const getRowIdRef =
|
|
10517
|
+
const getRowIdRef = useRef15(getRowId);
|
|
10439
10518
|
getRowIdRef.current = getRowId;
|
|
10440
10519
|
const spreadsheetRowIds = useMemo8(
|
|
10441
10520
|
() => paginated.map((row) => getRowIdRef.current(row)),
|
|
@@ -10456,7 +10535,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10456
10535
|
return map;
|
|
10457
10536
|
}, [visibleColumns]);
|
|
10458
10537
|
const spreadsheetEnabled = Boolean(spreadsheet && spreadsheet.enabled !== false);
|
|
10459
|
-
const openRowRef =
|
|
10538
|
+
const openRowRef = useRef15(() => void 0);
|
|
10460
10539
|
const sheet = useSpreadsheetGrid(
|
|
10461
10540
|
spreadsheetEnabled && spreadsheet ? {
|
|
10462
10541
|
rowIds: spreadsheetRowIds,
|
|
@@ -10498,12 +10577,12 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10498
10577
|
} : null
|
|
10499
10578
|
);
|
|
10500
10579
|
if (spreadsheet?.controllerRef) spreadsheet.controllerRef.current = spreadsheetEnabled ? sheet.controller : null;
|
|
10501
|
-
const sheetRef =
|
|
10580
|
+
const sheetRef = useRef15(sheet);
|
|
10502
10581
|
sheetRef.current = sheet;
|
|
10503
|
-
const onSheetSelectionRef =
|
|
10582
|
+
const onSheetSelectionRef = useRef15(spreadsheet?.onSelectionChange);
|
|
10504
10583
|
onSheetSelectionRef.current = spreadsheet?.onSelectionChange;
|
|
10505
10584
|
const sheetSelectionKey = sheet.range ? `${sheet.range.anchor.rowId}\0${sheet.range.anchor.fieldName}\0${sheet.range.focus.rowId}\0${sheet.range.focus.fieldName}\0${sheet.bounds ? `${sheet.bounds.r0}:${sheet.bounds.r1}:${sheet.bounds.c0}:${sheet.bounds.c1}` : ""}` : "";
|
|
10506
|
-
|
|
10585
|
+
useEffect15(() => {
|
|
10507
10586
|
const tell = onSheetSelectionRef.current;
|
|
10508
10587
|
if (!tell) return;
|
|
10509
10588
|
const current = sheetRef.current;
|
|
@@ -10520,7 +10599,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10520
10599
|
tsv: current.selectionTsv()
|
|
10521
10600
|
});
|
|
10522
10601
|
}, [sheetSelectionKey]);
|
|
10523
|
-
const searchValueRef =
|
|
10602
|
+
const searchValueRef = useRef15(searchValue);
|
|
10524
10603
|
searchValueRef.current = searchValue;
|
|
10525
10604
|
const facetsEnabled = Boolean(facets && facets.enabled !== false);
|
|
10526
10605
|
const coreSuggestionsEnabled = facets?.enabled !== false;
|
|
@@ -10535,10 +10614,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10535
10614
|
);
|
|
10536
10615
|
const coreFacetTotal = remoteQuery?.mode === "controlled" ? remoteQuery.totalItems : appendQuery?.pagination.sourceRecords?.total ?? coverage?.matched ?? coverage?.total;
|
|
10537
10616
|
const coreFacetLoaded = appendQuery?.pagination.sourceRecords?.loaded;
|
|
10538
|
-
const facetInputsRef =
|
|
10617
|
+
const facetInputsRef = useRef15({ data, facets, facetReadCell, coreFacetTotal, coreFacetLoaded });
|
|
10539
10618
|
facetInputsRef.current = { data, facets, facetReadCell, coreFacetTotal, coreFacetLoaded };
|
|
10540
|
-
const facetRequestRef =
|
|
10541
|
-
const requestedFacetColumns =
|
|
10619
|
+
const facetRequestRef = useRef15(/* @__PURE__ */ new Map());
|
|
10620
|
+
const requestedFacetColumns = useRef15(/* @__PURE__ */ new Set());
|
|
10542
10621
|
const requestFacets = useCallback4((colId) => {
|
|
10543
10622
|
requestedFacetColumns.current.add(colId);
|
|
10544
10623
|
const { data: rows, facets: config, facetReadCell: readCell, coreFacetTotal: total, coreFacetLoaded: loaded } = facetInputsRef.current;
|
|
@@ -10622,7 +10701,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10622
10701
|
}));
|
|
10623
10702
|
});
|
|
10624
10703
|
}, []);
|
|
10625
|
-
|
|
10704
|
+
useEffect15(() => {
|
|
10626
10705
|
setFacetState((current) => Object.keys(current).length === 0 ? current : {});
|
|
10627
10706
|
for (const [colId, ticket] of facetRequestRef.current) {
|
|
10628
10707
|
facetRequestRef.current.set(colId, ticket + 1);
|
|
@@ -10632,7 +10711,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10632
10711
|
}
|
|
10633
10712
|
}, [facetsEnabled, coreSuggestionsEnabled, data, searchValue, coreFacetTotal, coreFacetLoaded, requestFacets]);
|
|
10634
10713
|
const totalIsKnown = !isLoading && !readView.failure;
|
|
10635
|
-
|
|
10714
|
+
useEffect15(() => {
|
|
10636
10715
|
if (!controlledQuery || !totalIsKnown || controlledQuery.state.page === safePage) return;
|
|
10637
10716
|
emitControlledQueryChange({ page: safePage });
|
|
10638
10717
|
}, [controlledQuery, emitControlledQueryChange, safePage, totalIsKnown]);
|
|
@@ -10673,13 +10752,13 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10673
10752
|
const reportCardTotal = embedded ? tableCard?.reportTotal : void 0;
|
|
10674
10753
|
const cardTotal = appendQuery ? appendQuery.pagination.totalItems : remoteQuery?.mode === "controlled" ? isLoading ? void 0 : remoteQuery.totalItems : isLoading ? void 0 : sourceProcessing ? sourceTotal : data.length;
|
|
10675
10754
|
const embeddedControlledPage = embedded && remoteQuery?.mode === "controlled" ? remoteQuery.state.page : 1;
|
|
10676
|
-
|
|
10755
|
+
useEffect15(() => {
|
|
10677
10756
|
if (embeddedControlledPage !== 1) emitControlledQueryChange({ page: 1 });
|
|
10678
10757
|
}, [embeddedControlledPage]);
|
|
10679
|
-
|
|
10758
|
+
useEffect15(() => {
|
|
10680
10759
|
reportCardTotal?.(cardTotal);
|
|
10681
10760
|
}, [reportCardTotal, cardTotal]);
|
|
10682
|
-
|
|
10761
|
+
useEffect15(() => () => reportCardTotal?.(void 0), [reportCardTotal]);
|
|
10683
10762
|
const [pinnedEl, setPinnedEl] = useState17(null);
|
|
10684
10763
|
const pinnedRowActive = Boolean(
|
|
10685
10764
|
toolbar?.singleRow && toolbar.overflow && toolbar.overflow.mode !== "sheet" && (toolbar.overflow.pinned || toolbar.overflow.mode === "menu")
|
|
@@ -10721,7 +10800,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10721
10800
|
] });
|
|
10722
10801
|
}
|
|
10723
10802
|
const folded = pinnedFolded;
|
|
10724
|
-
toolbarEnd.node = /* @__PURE__ */
|
|
10803
|
+
toolbarEnd.node = /* @__PURE__ */ jsx24(
|
|
10725
10804
|
"span",
|
|
10726
10805
|
{
|
|
10727
10806
|
ref: setPinnedEl,
|
|
@@ -10731,7 +10810,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10731
10810
|
children: folded ? /* @__PURE__ */ jsxs22(Fragment15, { children: [
|
|
10732
10811
|
primary,
|
|
10733
10812
|
/* @__PURE__ */ jsxs22(ToolbarOverflowMenu, { children: [
|
|
10734
|
-
toolbarSearch.node ? /* @__PURE__ */
|
|
10813
|
+
toolbarSearch.node ? /* @__PURE__ */ jsx24("div", { "data-matrx-table-toolbar-folded-search": "", "data-matrx-table-tools-keep-open": "", children: toolbarSearch.node }) : null,
|
|
10735
10814
|
controls,
|
|
10736
10815
|
overflow?.pinned,
|
|
10737
10816
|
overflow?.sheetExtras,
|
|
@@ -10764,10 +10843,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10764
10843
|
return actionSlots;
|
|
10765
10844
|
};
|
|
10766
10845
|
const renderRowActions = (row, controls) => {
|
|
10767
|
-
const actions = rowActions ? /* @__PURE__ */
|
|
10768
|
-
const scopedActions = /* @__PURE__ */
|
|
10846
|
+
const actions = rowActions ? /* @__PURE__ */ jsx24(TableIconActions, { actions: rowActions(row, controls), inline: rowActionsInline, slots: pageActionSlots() }) : null;
|
|
10847
|
+
const scopedActions = /* @__PURE__ */ jsx24(MatrxTableRowControlsScope, { value: controls, children: actions });
|
|
10769
10848
|
if (!effectiveCopy || !showRowCopy) return scopedActions;
|
|
10770
|
-
return /* @__PURE__ */
|
|
10849
|
+
return /* @__PURE__ */ jsx24(
|
|
10771
10850
|
MatrxTableRowAlchemyProvider,
|
|
10772
10851
|
{
|
|
10773
10852
|
copy: tableRowCopyProps(effectiveCopy, row, `${tableCopySourceNamespace}:row:${getRowId(row)}`, copy === void 0 ? readDeclaredCopyColumns : void 0),
|
|
@@ -10825,7 +10904,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10825
10904
|
if (value === null) return "\u2014";
|
|
10826
10905
|
const formatted = kpi.op === "count" ? null : formatColumnValue(col, value);
|
|
10827
10906
|
const text = formatted?.text ?? value.toLocaleString(void 0, { maximumFractionDigits: 2 });
|
|
10828
|
-
return tone ? /* @__PURE__ */
|
|
10907
|
+
return tone ? /* @__PURE__ */ jsx24("span", { className: COLUMN_TONE_CLASS[tone], children: text }) : text;
|
|
10829
10908
|
}
|
|
10830
10909
|
}))
|
|
10831
10910
|
);
|
|
@@ -10893,7 +10972,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10893
10972
|
}
|
|
10894
10973
|
expandedDetail.onExpandedIdChange(expandedDetail.expandedId === id ? null : id);
|
|
10895
10974
|
};
|
|
10896
|
-
const warnedRowWithoutPage =
|
|
10975
|
+
const warnedRowWithoutPage = useRef15(false);
|
|
10897
10976
|
const openRow = (row) => {
|
|
10898
10977
|
if (canExpandRow(row)) {
|
|
10899
10978
|
toggleExpanded(row);
|
|
@@ -10958,7 +11037,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
10958
11037
|
};
|
|
10959
11038
|
const renderedEmptyState = (remoteQuery === null || remoteQueryUsesLocalProcessing) && data.length > 0 && hasActiveFilters ? {
|
|
10960
11039
|
title: "No matching rows",
|
|
10961
|
-
action: /* @__PURE__ */
|
|
11040
|
+
action: /* @__PURE__ */ jsx24(Button, { type: "button", variant: "outline", size: "sm", onClick: clearAllFilters, children: "Clear filters" }),
|
|
10962
11041
|
icon: void 0
|
|
10963
11042
|
} : emptyState;
|
|
10964
11043
|
const commitCell = (rowId, field, next) => {
|
|
@@ -11046,7 +11125,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11046
11125
|
}));
|
|
11047
11126
|
return true;
|
|
11048
11127
|
};
|
|
11049
|
-
const requestCellEditRef =
|
|
11128
|
+
const requestCellEditRef = useRef15(requestCellEdit);
|
|
11050
11129
|
requestCellEditRef.current = requestCellEdit;
|
|
11051
11130
|
const buildRecordControls = (row) => {
|
|
11052
11131
|
const rowId = getRowId(row);
|
|
@@ -11388,16 +11467,16 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11388
11467
|
return [];
|
|
11389
11468
|
}
|
|
11390
11469
|
};
|
|
11391
|
-
const menuSectionsForRef =
|
|
11470
|
+
const menuSectionsForRef = useRef15(menuSectionsFor);
|
|
11392
11471
|
menuSectionsForRef.current = menuSectionsFor;
|
|
11393
11472
|
const hasMenuSections = Boolean(contextMenu?.sections);
|
|
11394
11473
|
const boundarySections = useCallback4(
|
|
11395
11474
|
(target) => menuSectionsForRef.current(target),
|
|
11396
11475
|
[]
|
|
11397
11476
|
);
|
|
11398
|
-
const resolveMenuLevelRef =
|
|
11477
|
+
const resolveMenuLevelRef = useRef15(resolveMenuLevel);
|
|
11399
11478
|
resolveMenuLevelRef.current = resolveMenuLevel;
|
|
11400
|
-
|
|
11479
|
+
useEffect15(() => {
|
|
11401
11480
|
if (!host.rowContextRegistry) return;
|
|
11402
11481
|
return host.rowContextRegistry.register(
|
|
11403
11482
|
tableContextMenuInstanceId,
|
|
@@ -11406,20 +11485,20 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11406
11485
|
}, [host.rowContextRegistry, tableContextMenuInstanceId]);
|
|
11407
11486
|
const showActionsCol = actionsColumn !== "none" && declaredActionsColumn === void 0 && (windowEnabled || Boolean(rowActions) || showInlineRowCopy);
|
|
11408
11487
|
const actionsHeaderCount = visibleColumns.filter((column) => typeof column.header === "string" && column.header.trim().toLowerCase() === "actions").length + (showActionsCol ? 1 : 0);
|
|
11409
|
-
|
|
11488
|
+
useEffect15(() => {
|
|
11410
11489
|
if (actionsHeaderCount > 1) {
|
|
11411
11490
|
console.error(
|
|
11412
11491
|
`[matrx-table] ${actionsHeaderCount} "Actions" columns in one table \u2014 a table has ONE actions column. Declare one customActions column headed "Actions"; the table folds copy, row actions and open-in-window into it.`
|
|
11413
11492
|
);
|
|
11414
11493
|
}
|
|
11415
11494
|
}, [actionsHeaderCount]);
|
|
11416
|
-
const renderWindowOpen = (row) => windowEnabled ? /* @__PURE__ */
|
|
11495
|
+
const renderWindowOpen = (row) => windowEnabled ? /* @__PURE__ */ jsx24(
|
|
11417
11496
|
TapTargetButtonTransparent,
|
|
11418
11497
|
{
|
|
11419
11498
|
"data-matrx-table-icon-action": "",
|
|
11420
11499
|
tone: "muted",
|
|
11421
11500
|
ariaLabel: windowConfig?.openOnRowClick === true ? "Open in side panel" : "Open in window",
|
|
11422
|
-
icon: opensWindowOnRowClick ? /* @__PURE__ */
|
|
11501
|
+
icon: opensWindowOnRowClick ? /* @__PURE__ */ jsx24(PanelRightIcon, { "aria-hidden": true }) : /* @__PURE__ */ jsx24(PanelRightIcon, { "aria-hidden": true }),
|
|
11423
11502
|
onClick: (e) => {
|
|
11424
11503
|
e?.stopPropagation();
|
|
11425
11504
|
if (windowConfig?.openOnRowClick === true) rowLatest.current.openDetail(row);
|
|
@@ -11466,8 +11545,8 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11466
11545
|
});
|
|
11467
11546
|
}, [data, getSelectionId, selectedIdSet]);
|
|
11468
11547
|
const selectedCopyRows = useSelectedCopyRows(data, selectedIdSet, getSelectionId, savedViewsId, selection?.scopeKey);
|
|
11469
|
-
const lastToggledIndex =
|
|
11470
|
-
|
|
11548
|
+
const lastToggledIndex = useRef15(null);
|
|
11549
|
+
useEffect15(() => {
|
|
11471
11550
|
lastToggledIndex.current = null;
|
|
11472
11551
|
}, [savedViewsId, selection?.scopeKey]);
|
|
11473
11552
|
const setSelectedIds = (next) => {
|
|
@@ -11544,7 +11623,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11544
11623
|
};
|
|
11545
11624
|
const drawsOnlyShutSections = paginated.length === 0 && !readFailure && groupedRenderRows !== null && groupedRenderRows.length > 0;
|
|
11546
11625
|
const messageOutsideTable = slackId === void 0 && !fixedLayoutActive && !fitActive && !isLoading && !drillGrouped && (Boolean(readFailure) || paginated.length === 0 && !drawsOnlyShutSections);
|
|
11547
|
-
const tableMessage = /* @__PURE__ */
|
|
11626
|
+
const tableMessage = /* @__PURE__ */ jsx24(
|
|
11548
11627
|
"div",
|
|
11549
11628
|
{
|
|
11550
11629
|
"data-matrx-table-empty-state": readFailure ? void 0 : "",
|
|
@@ -11552,8 +11631,8 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11552
11631
|
style: { width: "100cqw", maxWidth: "100%" },
|
|
11553
11632
|
children: readFailure ?? /* @__PURE__ */ jsxs22(Fragment15, { children: [
|
|
11554
11633
|
renderedEmptyState?.icon,
|
|
11555
|
-
/* @__PURE__ */
|
|
11556
|
-
renderedEmptyState?.description ? /* @__PURE__ */
|
|
11634
|
+
/* @__PURE__ */ jsx24("p", { className: "text-sm font-medium text-foreground", children: renderedEmptyState?.title ?? "No rows" }),
|
|
11635
|
+
renderedEmptyState?.description ? /* @__PURE__ */ jsx24("p", { className: "text-xs text-muted-foreground", children: renderedEmptyState.description }) : null,
|
|
11557
11636
|
renderedEmptyState?.action
|
|
11558
11637
|
] })
|
|
11559
11638
|
}
|
|
@@ -11569,7 +11648,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11569
11648
|
}
|
|
11570
11649
|
} : facet
|
|
11571
11650
|
) : toolbar?.facets;
|
|
11572
|
-
const rowLatest =
|
|
11651
|
+
const rowLatest = useRef15(null);
|
|
11573
11652
|
const renderRecordCell = (row, col, index, suppliedControls) => {
|
|
11574
11653
|
const id = getRowId(row);
|
|
11575
11654
|
const field = col.accessorKey ? String(col.accessorKey) : columnId(col);
|
|
@@ -11577,10 +11656,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11577
11656
|
const displayRow = applyRowEdits(row, rowEdits);
|
|
11578
11657
|
if (col.customActions) {
|
|
11579
11658
|
const controls = suppliedControls ?? liveRecordControls(displayRow);
|
|
11580
|
-
const content = /* @__PURE__ */
|
|
11659
|
+
const content = /* @__PURE__ */ jsx24(MatrxTableRowControlsScope, { value: controls, children: col.customActions(displayRow, controls) });
|
|
11581
11660
|
const copyHere = rowCopyInCustomColumn && effectiveCopy && menuActionsColumn !== void 0 && columnId(col) === columnId(menuActionsColumn);
|
|
11582
11661
|
return /* @__PURE__ */ jsxs22("div", { "data-matrx-table-custom-actions": true, "data-matrx-cell-control": true, className: cn("inline-flex items-center justify-end gap-0", compactRows && "[&_button]:h-6 [&_button]:min-h-6"), onClick: (event) => event.stopPropagation(), children: [
|
|
11583
|
-
copyHere && effectiveCopy ? /* @__PURE__ */
|
|
11662
|
+
copyHere && effectiveCopy ? /* @__PURE__ */ jsx24(
|
|
11584
11663
|
TableRowCopyControl,
|
|
11585
11664
|
{
|
|
11586
11665
|
size: "toolbar",
|
|
@@ -11590,7 +11669,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11590
11669
|
...copy === void 0 ? { defaultColumns: readDeclaredCopyColumns } : {}
|
|
11591
11670
|
}
|
|
11592
11671
|
) : null,
|
|
11593
|
-
effectiveCopy && showRowCopy ? /* @__PURE__ */
|
|
11672
|
+
effectiveCopy && showRowCopy ? /* @__PURE__ */ jsx24(
|
|
11594
11673
|
MatrxTableRowAlchemyProvider,
|
|
11595
11674
|
{
|
|
11596
11675
|
copy: tableRowCopyProps(effectiveCopy, displayRow, `${tableCopySourceNamespace}:row:${getRowId(displayRow)}`, copy === void 0 ? readDeclaredCopyColumns : void 0),
|
|
@@ -11608,7 +11687,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11608
11687
|
const display = renderCell(displayRow, col, index);
|
|
11609
11688
|
const href = col.href?.(row) ?? void 0;
|
|
11610
11689
|
if (editEnabled && col.editable && (col.editableIf?.(row) ?? true)) {
|
|
11611
|
-
return /* @__PURE__ */
|
|
11690
|
+
return /* @__PURE__ */ jsx24(
|
|
11612
11691
|
EditableTableCell,
|
|
11613
11692
|
{
|
|
11614
11693
|
value: rowEdits && field in rowEdits ? rowEdits[field] : getCellValue(row, col),
|
|
@@ -11635,7 +11714,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11635
11714
|
}
|
|
11636
11715
|
);
|
|
11637
11716
|
}
|
|
11638
|
-
return href ? /* @__PURE__ */
|
|
11717
|
+
return href ? /* @__PURE__ */ jsx24(Link, { href, onClick: (event) => event.stopPropagation(), className: "block w-full min-w-0 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring", children: display }) : display;
|
|
11639
11718
|
};
|
|
11640
11719
|
const recordFieldColumns = columns.filter((col) => !col.customActions);
|
|
11641
11720
|
const recordFieldLabel = (col) => col.label ?? (typeof col.header === "string" ? col.header : displayLabel(void 0, columnId(col)));
|
|
@@ -11651,7 +11730,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11651
11730
|
...col.accessorKey !== void 0 || col.accessorFn !== void 0 ? { value: getCellValue(displayRow, col) } : {},
|
|
11652
11731
|
render: () => {
|
|
11653
11732
|
const display = renderCell(displayRow, col, 0);
|
|
11654
|
-
return href ? /* @__PURE__ */
|
|
11733
|
+
return href ? /* @__PURE__ */ jsx24(Link, { href, className: "min-w-0 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring", children: display }) : display;
|
|
11655
11734
|
}
|
|
11656
11735
|
};
|
|
11657
11736
|
});
|
|
@@ -11667,7 +11746,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11667
11746
|
if (!rowHref) return null;
|
|
11668
11747
|
const href = carryTableView(rowHref);
|
|
11669
11748
|
return /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
11670
|
-
/* @__PURE__ */
|
|
11749
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
11671
11750
|
Link,
|
|
11672
11751
|
{
|
|
11673
11752
|
href,
|
|
@@ -11675,10 +11754,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11675
11754
|
"data-matrx-record-page-door": true,
|
|
11676
11755
|
"aria-label": "Open full page",
|
|
11677
11756
|
className: "inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring",
|
|
11678
|
-
children: /* @__PURE__ */
|
|
11757
|
+
children: /* @__PURE__ */ jsx24(Maximize2Icon, { className: "h-4 w-4" })
|
|
11679
11758
|
}
|
|
11680
11759
|
) }),
|
|
11681
|
-
/* @__PURE__ */
|
|
11760
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: "Open full page" })
|
|
11682
11761
|
] });
|
|
11683
11762
|
};
|
|
11684
11763
|
const currentViewSnapshot = useMemo8(
|
|
@@ -11917,7 +11996,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
11917
11996
|
];
|
|
11918
11997
|
const rowEpoch = useRenderEpoch(rowShape.filter((value) => typeof value !== "function" && (typeof value !== "object" || value === null)));
|
|
11919
11998
|
const rowProbe = useRenderEpoch(rowShape.filter((value) => typeof value === "function" || typeof value === "object" && value !== null));
|
|
11920
|
-
const rowDrawings =
|
|
11999
|
+
const rowDrawings = useRef15(null);
|
|
11921
12000
|
rowDrawings.current ??= new RowDrawings();
|
|
11922
12001
|
const drawBodyRow = (rowId, row, index, fresh) => rowDrawings.current.draw(rowId, renderRecordRow(row, index), fresh);
|
|
11923
12002
|
chromeLatest.current = { processed, data, toggleAllOnPage, showMore: progressiveRows.showMore, applySavedView };
|
|
@@ -12130,7 +12209,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12130
12209
|
background.row
|
|
12131
12210
|
),
|
|
12132
12211
|
children: [
|
|
12133
|
-
selection ? /* @__PURE__ */
|
|
12212
|
+
selection ? /* @__PURE__ */ jsx24(
|
|
12134
12213
|
"td",
|
|
12135
12214
|
{
|
|
12136
12215
|
className: cn(
|
|
@@ -12148,7 +12227,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12148
12227
|
),
|
|
12149
12228
|
style: fixedUtilityWidth(selectionColumnWidth),
|
|
12150
12229
|
onClick: (e) => e.stopPropagation(),
|
|
12151
|
-
children: selection.isRowSelectable?.(row) ?? true ? /* @__PURE__ */
|
|
12230
|
+
children: selection.isRowSelectable?.(row) ?? true ? /* @__PURE__ */ jsx24(
|
|
12152
12231
|
"div",
|
|
12153
12232
|
{
|
|
12154
12233
|
"data-matrx-table-selection-target": true,
|
|
@@ -12157,7 +12236,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12157
12236
|
event.currentTarget.querySelector('[role="checkbox"]')?.click();
|
|
12158
12237
|
}
|
|
12159
12238
|
},
|
|
12160
|
-
children: /* @__PURE__ */
|
|
12239
|
+
children: /* @__PURE__ */ jsx24(
|
|
12161
12240
|
Checkbox,
|
|
12162
12241
|
{
|
|
12163
12242
|
className: CHECKBOX_TAP_AREA,
|
|
@@ -12170,7 +12249,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12170
12249
|
) : null
|
|
12171
12250
|
}
|
|
12172
12251
|
) : null,
|
|
12173
|
-
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */
|
|
12252
|
+
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */ jsx24(
|
|
12174
12253
|
"td",
|
|
12175
12254
|
{
|
|
12176
12255
|
"aria-hidden": "true",
|
|
@@ -12274,7 +12353,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12274
12353
|
colIdx === 0 && (hierarchy || canExpandRow(row)) && "flex min-w-0 items-center"
|
|
12275
12354
|
),
|
|
12276
12355
|
children: [
|
|
12277
|
-
colIdx === 0 && hierarchy ? /* @__PURE__ */
|
|
12356
|
+
colIdx === 0 && hierarchy ? /* @__PURE__ */ jsx24(
|
|
12278
12357
|
HierarchyDragHandle,
|
|
12279
12358
|
{
|
|
12280
12359
|
id,
|
|
@@ -12283,7 +12362,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12283
12362
|
}
|
|
12284
12363
|
) : null,
|
|
12285
12364
|
colIdx === 0 && canExpandRow(row) ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
12286
|
-
/* @__PURE__ */
|
|
12365
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
12287
12366
|
Button,
|
|
12288
12367
|
{
|
|
12289
12368
|
type: "button",
|
|
@@ -12303,7 +12382,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12303
12382
|
event.stopPropagation();
|
|
12304
12383
|
rowLatest.current.toggleExpanded(row);
|
|
12305
12384
|
},
|
|
12306
|
-
children: /* @__PURE__ */
|
|
12385
|
+
children: /* @__PURE__ */ jsx24(
|
|
12307
12386
|
ChevronRightIcon,
|
|
12308
12387
|
{
|
|
12309
12388
|
className: cn(
|
|
@@ -12314,9 +12393,9 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12314
12393
|
)
|
|
12315
12394
|
}
|
|
12316
12395
|
) }),
|
|
12317
|
-
/* @__PURE__ */
|
|
12396
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: isRowExpanded(row) ? "Collapse details" : "Expand details" })
|
|
12318
12397
|
] }) : null,
|
|
12319
|
-
/* @__PURE__ */
|
|
12398
|
+
/* @__PURE__ */ jsx24(
|
|
12320
12399
|
"div",
|
|
12321
12400
|
{
|
|
12322
12401
|
"data-matrx-cell-content": true,
|
|
@@ -12328,7 +12407,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12328
12407
|
]
|
|
12329
12408
|
}
|
|
12330
12409
|
),
|
|
12331
|
-
carriesFillHandle ? /* @__PURE__ */
|
|
12410
|
+
carriesFillHandle ? /* @__PURE__ */ jsx24(
|
|
12332
12411
|
"button",
|
|
12333
12412
|
{
|
|
12334
12413
|
type: "button",
|
|
@@ -12343,7 +12422,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12343
12422
|
columnId(col)
|
|
12344
12423
|
);
|
|
12345
12424
|
}),
|
|
12346
|
-
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */
|
|
12425
|
+
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */ jsx24(
|
|
12347
12426
|
"td",
|
|
12348
12427
|
{
|
|
12349
12428
|
"aria-hidden": "true",
|
|
@@ -12353,7 +12432,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12353
12432
|
},
|
|
12354
12433
|
"matrx-column-spacer-end"
|
|
12355
12434
|
) : null,
|
|
12356
|
-
showActionsCol && /* @__PURE__ */
|
|
12435
|
+
showActionsCol && /* @__PURE__ */ jsx24(
|
|
12357
12436
|
"td",
|
|
12358
12437
|
{
|
|
12359
12438
|
"data-matrx-table-row-action-cell": true,
|
|
@@ -12380,7 +12459,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12380
12459
|
),
|
|
12381
12460
|
onClick: (e) => e.stopPropagation(),
|
|
12382
12461
|
children: [
|
|
12383
|
-
showInlineRowCopy && effectiveCopy ? /* @__PURE__ */
|
|
12462
|
+
showInlineRowCopy && effectiveCopy ? /* @__PURE__ */ jsx24(
|
|
12384
12463
|
TableRowCopyControl,
|
|
12385
12464
|
{
|
|
12386
12465
|
size: "toolbar",
|
|
@@ -12402,12 +12481,12 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12402
12481
|
id
|
|
12403
12482
|
);
|
|
12404
12483
|
const wrappedRow = rowWrapper ? rowWrapper(row, rowNode) : rowNode;
|
|
12405
|
-
const inlineDetail = expandedDetail && isRowExpanded(row) ? /* @__PURE__ */
|
|
12484
|
+
const inlineDetail = expandedDetail && isRowExpanded(row) ? /* @__PURE__ */ jsx24(
|
|
12406
12485
|
"tr",
|
|
12407
12486
|
{
|
|
12408
12487
|
"data-matrx-table-expanded-detail": id,
|
|
12409
12488
|
className: cn("bg-muted/20", expandedDetail.className),
|
|
12410
|
-
children: /* @__PURE__ */
|
|
12489
|
+
children: /* @__PURE__ */ jsx24(
|
|
12411
12490
|
"td",
|
|
12412
12491
|
{
|
|
12413
12492
|
colSpan: renderedColSpan,
|
|
@@ -12419,7 +12498,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12419
12498
|
`${id}:expanded-detail`
|
|
12420
12499
|
) : null;
|
|
12421
12500
|
return hierarchy ? /* @__PURE__ */ jsxs22(Fragment14, { children: [
|
|
12422
|
-
/* @__PURE__ */
|
|
12501
|
+
/* @__PURE__ */ jsx24(
|
|
12423
12502
|
HierarchyDroppableRow,
|
|
12424
12503
|
{
|
|
12425
12504
|
id,
|
|
@@ -12433,7 +12512,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12433
12512
|
inlineDetail
|
|
12434
12513
|
] }, id);
|
|
12435
12514
|
};
|
|
12436
|
-
return /* @__PURE__ */
|
|
12515
|
+
return /* @__PURE__ */ jsx24(TooltipProvider, { children: /* @__PURE__ */ jsx24(
|
|
12437
12516
|
ContextMenuBoundary,
|
|
12438
12517
|
{
|
|
12439
12518
|
label: tableId ?? "Data table",
|
|
@@ -12528,7 +12607,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12528
12607
|
commitColumnState(order, effectiveHiddenColumnIds);
|
|
12529
12608
|
},
|
|
12530
12609
|
children: [
|
|
12531
|
-
/* @__PURE__ */
|
|
12610
|
+
/* @__PURE__ */ jsx24(DragCursorMonitor, {}),
|
|
12532
12611
|
/* @__PURE__ */ jsxs22(
|
|
12533
12612
|
"div",
|
|
12534
12613
|
{
|
|
@@ -12542,16 +12621,18 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12542
12621
|
"data-url-state-table": urlState?.id,
|
|
12543
12622
|
"data-matrx-table-appearance": appearance,
|
|
12544
12623
|
"data-matrx-table-embedded": embedded || void 0,
|
|
12624
|
+
style: { "--matrx-table-row-height": `${explicitRowHeight ?? densityRowHeight}px` },
|
|
12545
12625
|
className: cn(
|
|
12546
12626
|
"flex h-full min-h-0 flex-col gap-2 px-0 pt-2 pb-0",
|
|
12547
12627
|
embedded && "h-auto gap-0 pt-0",
|
|
12548
12628
|
className
|
|
12549
12629
|
),
|
|
12550
12630
|
children: [
|
|
12631
|
+
/* @__PURE__ */ jsx24(MultilineRowMarker, {}),
|
|
12551
12632
|
notice,
|
|
12552
|
-
savedViewError ? /* @__PURE__ */
|
|
12553
|
-
toolbarActionError ? /* @__PURE__ */
|
|
12554
|
-
summaryMetrics.length > 0 ? /* @__PURE__ */
|
|
12633
|
+
savedViewError ? /* @__PURE__ */ jsx24(ErrorBox, { className: "shrink-0 text-xs text-destructive-ink", message: savedViewError, operation: "Save or apply a saved view", origin: "design-system/MatrxDataTable" }) : null,
|
|
12634
|
+
toolbarActionError ? /* @__PURE__ */ jsx24(ErrorBox, { className: "shrink-0 text-xs text-destructive-ink", message: toolbarActionError, operation: "Run a table toolbar action", origin: "design-system/MatrxDataTable" }) : null,
|
|
12635
|
+
summaryMetrics.length > 0 ? /* @__PURE__ */ jsx24(
|
|
12555
12636
|
"section",
|
|
12556
12637
|
{
|
|
12557
12638
|
"data-matrx-table-summary": true,
|
|
@@ -12564,23 +12645,23 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12564
12645
|
summary?.variant === "large" ? "grid grid-cols-[repeat(auto-fit,minmax(10rem,1fr))] gap-3" : "flex flex-nowrap items-stretch gap-3 overflow-x-auto overscroll-x-contain"
|
|
12565
12646
|
),
|
|
12566
12647
|
children: summaryMetrics.map((metric) => /* @__PURE__ */ jsxs22("div", { "data-matrx-table-summary-card": true, title: metric.description || void 0, className: cn("min-w-0 whitespace-nowrap rounded-md border border-border bg-card shadow-xs", summary?.variant === "large" ? "px-4 py-3" : "shrink-0 min-w-24 px-3.5 py-2.5"), children: [
|
|
12567
|
-
/* @__PURE__ */
|
|
12648
|
+
/* @__PURE__ */ jsx24("div", { className: "truncate text-sm font-medium text-muted-foreground", children: metric.label }),
|
|
12568
12649
|
/* @__PURE__ */ jsxs22("div", { className: cn("truncate font-semibold tabular-nums text-foreground", summary?.variant === "large" ? "mt-1 text-xl" : "mt-0.5 text-sm"), children: [
|
|
12569
12650
|
metric.value,
|
|
12570
|
-
metric.unavailable ? /* @__PURE__ */
|
|
12651
|
+
metric.unavailable ? /* @__PURE__ */ jsx24(ErrorBox, { as: "span", className: "sr-only", message: `${metric.label} is unavailable`, operation: "Summarize this table", origin: "design-system/MatrxDataTable" }) : null
|
|
12571
12652
|
] }),
|
|
12572
|
-
summary?.hints === "shown" && metric.description ? /* @__PURE__ */
|
|
12653
|
+
summary?.hints === "shown" && metric.description ? /* @__PURE__ */ jsx24("div", { "data-matrx-table-summary-description": true, className: "mt-1 truncate text-xs font-normal text-muted-foreground", children: metric.description }) : null
|
|
12573
12654
|
] }, metric.id))
|
|
12574
12655
|
}
|
|
12575
12656
|
) : null,
|
|
12576
|
-
scopeBar ? /* @__PURE__ */
|
|
12577
|
-
/* @__PURE__ */
|
|
12578
|
-
const tabsNode = viewTabs && viewTabsStore ? /* @__PURE__ */
|
|
12657
|
+
scopeBar ? /* @__PURE__ */ jsx24(TableScopeBar, { ...scopeBar }) : null,
|
|
12658
|
+
/* @__PURE__ */ jsx24(MatrxTableChrome, { part: "toolbar", epoch: toolbarEpoch, render: () => {
|
|
12659
|
+
const tabsNode = viewTabs && viewTabsStore ? /* @__PURE__ */ jsx24(TableViewWorkspace, { snapshot: currentViewSnapshot, onApply: applyLatestSavedView, related: relatedTableActions, ...viewTabsStore ? { store: viewTabsStore } : {} }, savedViewsId ?? "table") : viewTabs && savedViewsId && SavedViews ? /* @__PURE__ */ jsx24(SavedViews, { tableId: savedViewsId, snapshot: currentViewSnapshot, defaultSnapshot: declaredDefaultViewSnapshot, onApply: applyLatestSavedView, presentation: "tabs", related: relatedTableActions }) : void 0;
|
|
12579
12660
|
const tabsPlaced = Boolean(toolbar && "tabsPortalInto" in toolbar);
|
|
12580
12661
|
const tabsTarget = toolbar && "tabsPortalInto" in toolbar ? toolbar.tabsPortalInto : null;
|
|
12581
12662
|
return /* @__PURE__ */ jsxs22(Fragment15, { children: [
|
|
12582
12663
|
tabsPlaced && tabsTarget && tabsNode && !hideToolbar ? createPortal2(
|
|
12583
|
-
/* @__PURE__ */
|
|
12664
|
+
/* @__PURE__ */ jsx24("div", { ...macPortalAttrs, "data-matrx-table-toolbar-tabs": "", "data-matrx-table-tabs-placed": "", className: "flex min-w-0 max-w-full [&_[data-matrx-table-tabs]]:min-w-0 [&_[data-matrx-table-tabs]]:shrink [&_[data-matrx-table-tabs]]:border-b-0", children: tabsNode }),
|
|
12584
12665
|
tabsTarget
|
|
12585
12666
|
) : null,
|
|
12586
12667
|
placeToolbar(!hideToolbar && (showViewTabs || toolbar?.title || toolbar?.titleCount || showSearch || toolbar?.customSearch || toolbar?.anyOf || toolbar?.layeredFilters || toolbar?.facets && toolbar.facets.length > 0 || toolbar?.leading || toolbar?.actions || toolbar?.refresh || toolbar?.add || savedViewsId && SavedViews || hasActiveFilters || showToolbarCopy || columns.length > 0) && /* @__PURE__ */ jsxs22(
|
|
@@ -12590,7 +12671,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12590
12671
|
tabs: tabsPlaced ? void 0 : tabsNode,
|
|
12591
12672
|
...toolbar?.title === void 0 ? {} : { title: toolbar.title },
|
|
12592
12673
|
...toolbar?.titleCount === void 0 ? {} : { count: toolbar.titleCount },
|
|
12593
|
-
context: savedViewsId && SavedViews && !viewTabs ? /* @__PURE__ */
|
|
12674
|
+
context: savedViewsId && SavedViews && !viewTabs ? /* @__PURE__ */ jsx24("span", { "data-matrx-table-view-control": true, children: /* @__PURE__ */ jsx24(
|
|
12594
12675
|
SavedViews,
|
|
12595
12676
|
{
|
|
12596
12677
|
tableId: savedViewsId,
|
|
@@ -12599,7 +12680,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12599
12680
|
onApply: applyLatestSavedView
|
|
12600
12681
|
}
|
|
12601
12682
|
) }) : void 0,
|
|
12602
|
-
search: (toolbarSearch.node = toolbar?.customSearch ?? (showSearch ? intelligentSearchEnabled ? /* @__PURE__ */
|
|
12683
|
+
search: (toolbarSearch.node = toolbar?.customSearch ?? (showSearch ? intelligentSearchEnabled ? /* @__PURE__ */ jsx24(
|
|
12603
12684
|
TableSearch,
|
|
12604
12685
|
{
|
|
12605
12686
|
value: searchValue,
|
|
@@ -12618,7 +12699,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12618
12699
|
toolbar?.searchMatch ? "sm:max-w-md" : "sm:max-w-xs"
|
|
12619
12700
|
),
|
|
12620
12701
|
children: [
|
|
12621
|
-
/* @__PURE__ */
|
|
12702
|
+
/* @__PURE__ */ jsx24(
|
|
12622
12703
|
SearchField,
|
|
12623
12704
|
{
|
|
12624
12705
|
value: searchValue,
|
|
@@ -12626,15 +12707,15 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12626
12707
|
placeholder: toolbar?.searchPlaceholder ?? "Search\u2026",
|
|
12627
12708
|
"aria-label": (toolbar?.searchPlaceholder ?? "Search").replace(/[….]+$/, "") || "Search table",
|
|
12628
12709
|
className: "min-w-0 flex-1",
|
|
12629
|
-
end: searchValue ? /* @__PURE__ */
|
|
12710
|
+
end: searchValue ? /* @__PURE__ */ jsx24("button", { type: "button", "aria-label": "Clear search", title: "Clear search", onClick: () => setSearchValue(""), children: /* @__PURE__ */ jsx24(XIcon, { "aria-hidden": "true" }) }) : void 0
|
|
12630
12711
|
}
|
|
12631
12712
|
),
|
|
12632
12713
|
toolbar?.searchMatch ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
12633
|
-
/* @__PURE__ */
|
|
12714
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
12634
12715
|
Button2,
|
|
12635
12716
|
{
|
|
12636
12717
|
variant: searchMatchMode === "whole_words" ? "primary" : "outline",
|
|
12637
|
-
icon: /* @__PURE__ */
|
|
12718
|
+
icon: /* @__PURE__ */ jsx24(WholeWord, { "aria-hidden": "true" }),
|
|
12638
12719
|
"aria-pressed": searchMatchMode === "whole_words",
|
|
12639
12720
|
"aria-label": `Search match: ${searchMatchMode === "whole_words" ? "whole words" : "contains text"}`,
|
|
12640
12721
|
onClick: () => setSearchMatchMode(
|
|
@@ -12643,13 +12724,13 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12643
12724
|
children: searchMatchMode === "whole_words" ? "Whole words" : "Contains"
|
|
12644
12725
|
}
|
|
12645
12726
|
) }),
|
|
12646
|
-
/* @__PURE__ */
|
|
12727
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: searchMatchMode === "whole_words" ? "Whole words \u2014 click to match text anywhere" : "Contains text \u2014 click to require whole words" })
|
|
12647
12728
|
] }) : null
|
|
12648
12729
|
]
|
|
12649
12730
|
}
|
|
12650
12731
|
) : null), pinnedFolded && pinnedRowActive ? void 0 : toolbarSearch.node),
|
|
12651
12732
|
children: [
|
|
12652
|
-
toolbar?.layeredFilters ? /* @__PURE__ */
|
|
12733
|
+
toolbar?.layeredFilters ? /* @__PURE__ */ jsx24(
|
|
12653
12734
|
LayeredFilterBuilder,
|
|
12654
12735
|
{
|
|
12655
12736
|
fields: toolbar.layeredFilters.fields,
|
|
@@ -12660,8 +12741,8 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12660
12741
|
}
|
|
12661
12742
|
) : null,
|
|
12662
12743
|
toolbar?.anyOf ? /* @__PURE__ */ jsxs22("div", { className: "relative w-full max-w-xs", children: [
|
|
12663
|
-
/* @__PURE__ */
|
|
12664
|
-
/* @__PURE__ */
|
|
12744
|
+
/* @__PURE__ */ jsx24(SearchIcon, { className: "absolute left-2 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground" }),
|
|
12745
|
+
/* @__PURE__ */ jsx24(
|
|
12665
12746
|
Input,
|
|
12666
12747
|
{
|
|
12667
12748
|
value: anyOfValue,
|
|
@@ -12672,21 +12753,21 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12672
12753
|
}
|
|
12673
12754
|
),
|
|
12674
12755
|
anyOfValue ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
12675
|
-
/* @__PURE__ */
|
|
12756
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
12676
12757
|
"button",
|
|
12677
12758
|
{
|
|
12678
12759
|
type: "button",
|
|
12679
12760
|
"aria-label": "Clear match-any search",
|
|
12680
12761
|
className: "absolute right-1.5 top-1/2 -translate-y-1/2 rounded p-0.5 text-muted-foreground hover:text-foreground",
|
|
12681
12762
|
onClick: () => setAnyOfValue(""),
|
|
12682
|
-
children: /* @__PURE__ */
|
|
12763
|
+
children: /* @__PURE__ */ jsx24(XIcon, { className: "h-5 w-5" })
|
|
12683
12764
|
}
|
|
12684
12765
|
) }),
|
|
12685
|
-
/* @__PURE__ */
|
|
12766
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: "Clear match-any search" })
|
|
12686
12767
|
] }) : null
|
|
12687
12768
|
] }) : null,
|
|
12688
|
-
renderedFacets ? /* @__PURE__ */
|
|
12689
|
-
toolbar?.leading ? /* @__PURE__ */
|
|
12769
|
+
renderedFacets ? /* @__PURE__ */ jsx24(ToolbarFacets, { facets: renderedFacets }) : null,
|
|
12770
|
+
toolbar?.leading ? /* @__PURE__ */ jsx24(
|
|
12690
12771
|
"div",
|
|
12691
12772
|
{
|
|
12692
12773
|
"data-matrx-table-toolbar-extras": true,
|
|
@@ -12694,7 +12775,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12694
12775
|
children: toolbar.leading
|
|
12695
12776
|
}
|
|
12696
12777
|
) : null,
|
|
12697
|
-
drill && !drillOwnRow && (drill.question.where.length > 0 || drillIsPeriodWindow(drill.question.window) || (drill.base?.length ?? 0) > 0) ? /* @__PURE__ */
|
|
12778
|
+
drill && !drillOwnRow && (drill.question.where.length > 0 || drillIsPeriodWindow(drill.question.window) || (drill.base?.length ?? 0) > 0) ? /* @__PURE__ */ jsx24(
|
|
12698
12779
|
MatrxDrillTrail,
|
|
12699
12780
|
{
|
|
12700
12781
|
base: drill.base,
|
|
@@ -12721,7 +12802,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12721
12802
|
),
|
|
12722
12803
|
children: [
|
|
12723
12804
|
toolbar?.singleRow && coverageResult && coverageResult.notice ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
12724
|
-
/* @__PURE__ */
|
|
12805
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs22(
|
|
12725
12806
|
"span",
|
|
12726
12807
|
{
|
|
12727
12808
|
"data-matrx-table-coverage": true,
|
|
@@ -12738,21 +12819,21 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12738
12819
|
]
|
|
12739
12820
|
}
|
|
12740
12821
|
) }),
|
|
12741
|
-
/* @__PURE__ */
|
|
12822
|
+
/* @__PURE__ */ jsx24(TooltipContent, { className: "max-w-xs", children: coverageResult.notice })
|
|
12742
12823
|
] }) : null,
|
|
12743
12824
|
renderToolbarControls(/* @__PURE__ */ jsxs22(Fragment15, { children: [
|
|
12744
|
-
hasActiveFilters ? /* @__PURE__ */
|
|
12825
|
+
hasActiveFilters ? /* @__PURE__ */ jsx24(
|
|
12745
12826
|
TableToolbarAction,
|
|
12746
12827
|
{
|
|
12747
12828
|
HostAction: host.ToolbarAction,
|
|
12748
12829
|
ariaLabel: "Clear all filters",
|
|
12749
12830
|
tooltip: "Clear search and filters; keep columns and sort",
|
|
12750
12831
|
onClick: clearAllFilters,
|
|
12751
|
-
children: /* @__PURE__ */
|
|
12832
|
+
children: /* @__PURE__ */ jsx24(Eraser, {})
|
|
12752
12833
|
}
|
|
12753
12834
|
) : null,
|
|
12754
12835
|
drill ? drillOwnRow ? null : /* @__PURE__ */ jsxs22(Fragment15, { children: [
|
|
12755
|
-
drill.windowDimension ? /* @__PURE__ */
|
|
12836
|
+
drill.windowDimension ? /* @__PURE__ */ jsx24(
|
|
12756
12837
|
MatrxDrillWindowMenu,
|
|
12757
12838
|
{
|
|
12758
12839
|
question: drill.question,
|
|
@@ -12760,7 +12841,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12760
12841
|
dimensionLabel: drill.dimensions.find((d) => d.key === drill.windowDimension)?.label ?? drill.windowDimension
|
|
12761
12842
|
}
|
|
12762
12843
|
) : null,
|
|
12763
|
-
drillGrouped ? /* @__PURE__ */
|
|
12844
|
+
drillGrouped ? /* @__PURE__ */ jsx24(
|
|
12764
12845
|
MatrxDrillMeasurePicker,
|
|
12765
12846
|
{
|
|
12766
12847
|
measures: drill.measures,
|
|
@@ -12768,7 +12849,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12768
12849
|
onQuestionChange: drill.onQuestionChange
|
|
12769
12850
|
}
|
|
12770
12851
|
) : null,
|
|
12771
|
-
/* @__PURE__ */
|
|
12852
|
+
/* @__PURE__ */ jsx24(
|
|
12772
12853
|
MatrxDrillGroupByMenu,
|
|
12773
12854
|
{
|
|
12774
12855
|
dimensions: drill.dimensions,
|
|
@@ -12780,7 +12861,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12780
12861
|
// The shared Select (playground review A): the same 28px capsule as every
|
|
12781
12862
|
// other control in the row, never a second select with its own padding.
|
|
12782
12863
|
/* @__PURE__ */ jsxs22("span", { "data-matrx-table-group-by": "", className: "inline-flex", children: [
|
|
12783
|
-
/* @__PURE__ */
|
|
12864
|
+
/* @__PURE__ */ jsx24(
|
|
12784
12865
|
Select2,
|
|
12785
12866
|
{
|
|
12786
12867
|
"aria-label": "Group rows by a column",
|
|
@@ -12800,7 +12881,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12800
12881
|
const chosen = grouping.thenColumnIds ?? [];
|
|
12801
12882
|
if (at2 > chosen.length) return null;
|
|
12802
12883
|
const taken = /* @__PURE__ */ new Set([groupingColumnId, ...chosen.filter((_, i) => i !== at2)]);
|
|
12803
|
-
return /* @__PURE__ */
|
|
12884
|
+
return /* @__PURE__ */ jsx24(
|
|
12804
12885
|
Select2,
|
|
12805
12886
|
{
|
|
12806
12887
|
"aria-label": `Then group rows by a column (level ${at2 + 2})`,
|
|
@@ -12825,17 +12906,17 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12825
12906
|
}) : null
|
|
12826
12907
|
] })
|
|
12827
12908
|
) : null,
|
|
12828
|
-
columns.length > 0 && toolbar?.columns !== false ? /* @__PURE__ */
|
|
12909
|
+
columns.length > 0 && toolbar?.columns !== false ? /* @__PURE__ */ jsx24(
|
|
12829
12910
|
TableToolbarAction,
|
|
12830
12911
|
{
|
|
12831
12912
|
HostAction: host.ToolbarAction,
|
|
12832
12913
|
ariaLabel: "Columns",
|
|
12833
12914
|
tooltip: "Show, hide, or reorder columns",
|
|
12834
12915
|
onClick: () => setColumnManagerOpen(true),
|
|
12835
|
-
children: /* @__PURE__ */
|
|
12916
|
+
children: /* @__PURE__ */ jsx24(SlidersHorizontal, {})
|
|
12836
12917
|
}
|
|
12837
12918
|
) : null,
|
|
12838
|
-
toolbar?.refresh ? /* @__PURE__ */
|
|
12919
|
+
toolbar?.refresh ? /* @__PURE__ */ jsx24(
|
|
12839
12920
|
TableToolbarAction,
|
|
12840
12921
|
{
|
|
12841
12922
|
HostAction: host.ToolbarAction,
|
|
@@ -12857,10 +12938,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12857
12938
|
setToolbarActionPending((current) => ({ ...current, refresh: false }));
|
|
12858
12939
|
});
|
|
12859
12940
|
},
|
|
12860
|
-
children: /* @__PURE__ */
|
|
12941
|
+
children: /* @__PURE__ */ jsx24(RefreshControlIcon, { spinning: isFetching || toolbarActionPending.refresh })
|
|
12861
12942
|
}
|
|
12862
12943
|
) : null,
|
|
12863
|
-
toolbar?.add ? /* @__PURE__ */
|
|
12944
|
+
toolbar?.add ? /* @__PURE__ */ jsx24(
|
|
12864
12945
|
TableToolbarAction,
|
|
12865
12946
|
{
|
|
12866
12947
|
HostAction: host.ToolbarAction,
|
|
@@ -12882,11 +12963,11 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12882
12963
|
setToolbarActionPending((current) => ({ ...current, add: false }));
|
|
12883
12964
|
});
|
|
12884
12965
|
},
|
|
12885
|
-
children: /* @__PURE__ */
|
|
12966
|
+
children: /* @__PURE__ */ jsx24(PlusIcon, {})
|
|
12886
12967
|
}
|
|
12887
12968
|
) : null,
|
|
12888
12969
|
toolbar?.actions
|
|
12889
|
-
] }), showToolbarCopy && effectiveCopy ? /* @__PURE__ */
|
|
12970
|
+
] }), showToolbarCopy && effectiveCopy ? /* @__PURE__ */ jsx24(ToolbarListedLabel, { label: "Copy or export", children: /* @__PURE__ */ jsx24(
|
|
12890
12971
|
CopyButtons,
|
|
12891
12972
|
{
|
|
12892
12973
|
size: "toolbar",
|
|
@@ -12948,7 +13029,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12948
13029
|
] });
|
|
12949
13030
|
} }),
|
|
12950
13031
|
/* @__PURE__ */ jsxs22("div", { "data-matrx-table-body-region": true, className: "flex min-h-0 flex-1 flex-col gap-2", children: [
|
|
12951
|
-
drill && drillOwnRow ? /* @__PURE__ */
|
|
13032
|
+
drill && drillOwnRow ? /* @__PURE__ */ jsx24(MatrxDrillBar, { drill, answers: drillAnswers, rowNoun: grouping?.rowNoun }) : null,
|
|
12952
13033
|
coverageResult && coverageResult.notice && !toolbar?.singleRow ? /* @__PURE__ */ jsxs22(
|
|
12953
13034
|
"div",
|
|
12954
13035
|
{
|
|
@@ -12957,12 +13038,12 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12957
13038
|
role: "status",
|
|
12958
13039
|
className: "flex shrink-0 items-start gap-2 rounded-md border border-amber-300/70 bg-amber-50 px-3 py-2 text-xs text-amber-900 dark:border-amber-500/40 dark:bg-amber-950/40 dark:text-amber-200",
|
|
12959
13040
|
children: [
|
|
12960
|
-
/* @__PURE__ */
|
|
12961
|
-
/* @__PURE__ */
|
|
13041
|
+
/* @__PURE__ */ jsx24("span", { className: "shrink-0 whitespace-nowrap font-semibold", children: coverageResult.badge }),
|
|
13042
|
+
/* @__PURE__ */ jsx24("span", { className: "min-w-0", children: coverageResult.notice })
|
|
12962
13043
|
]
|
|
12963
13044
|
}
|
|
12964
13045
|
) : null,
|
|
12965
|
-
readView.stale ? /* @__PURE__ */
|
|
13046
|
+
readView.stale ? /* @__PURE__ */ jsx24(StaleNoticeView, { error: read?.error ?? true, what: readView.what, onRetry: read?.onRetry }) : null,
|
|
12966
13047
|
/* @__PURE__ */ jsxs22("div", { "data-matrx-table-scroll-frame": "", className: cn("relative min-h-0", frameHeight === "content" ? "flex flex-initial flex-col" : "flex-1"), children: [
|
|
12967
13048
|
mobileCards && cardsMounted ? /* @__PURE__ */ jsxs22(
|
|
12968
13049
|
"div",
|
|
@@ -12988,30 +13069,30 @@ function MatrxDataTableCore(coreProps) {
|
|
|
12988
13069
|
role: "status",
|
|
12989
13070
|
className: "pointer-events-none absolute inset-x-0 top-0 z-20 h-0.5 overflow-hidden bg-primary/15",
|
|
12990
13071
|
children: [
|
|
12991
|
-
/* @__PURE__ */
|
|
12992
|
-
/* @__PURE__ */
|
|
13072
|
+
/* @__PURE__ */ jsx24("div", { className: "h-full w-full animate-pulse bg-primary" }),
|
|
13073
|
+
/* @__PURE__ */ jsx24("span", { className: "sr-only", children: "Refreshing table data" })
|
|
12993
13074
|
]
|
|
12994
13075
|
}
|
|
12995
13076
|
) : null,
|
|
12996
|
-
isLoading ? Array.from({ length: 4 }).map((_, index) => /* @__PURE__ */
|
|
13077
|
+
isLoading ? Array.from({ length: 4 }).map((_, index) => /* @__PURE__ */ jsx24(
|
|
12997
13078
|
Skeleton,
|
|
12998
13079
|
{
|
|
12999
13080
|
className: "col-span-full h-52 w-full shrink-0 rounded-lg"
|
|
13000
13081
|
},
|
|
13001
13082
|
`mobile-card-sk-${index}`
|
|
13002
|
-
)) : readFailure ? /* @__PURE__ */
|
|
13083
|
+
)) : readFailure ? /* @__PURE__ */ jsx24("div", { className: "col-span-full flex min-h-48 flex-1 items-center justify-center px-4 py-12 text-center", children: readFailure }) : paginated.length === 0 && !drawsOnlyShutSections ? /* @__PURE__ */ jsx24("div", { className: "col-span-full flex min-h-48 flex-1 items-center justify-center px-4 py-12 text-center", children: /* @__PURE__ */ jsxs22("div", { className: "flex max-w-sm flex-col items-center gap-2", children: [
|
|
13003
13084
|
renderedEmptyState?.icon,
|
|
13004
|
-
/* @__PURE__ */
|
|
13005
|
-
renderedEmptyState?.description ? /* @__PURE__ */
|
|
13085
|
+
/* @__PURE__ */ jsx24("p", { className: "text-sm font-medium text-foreground", children: renderedEmptyState?.title ?? "No rows" }),
|
|
13086
|
+
renderedEmptyState?.description ? /* @__PURE__ */ jsx24("p", { className: "text-xs text-muted-foreground", children: renderedEmptyState.description }) : null,
|
|
13006
13087
|
renderedEmptyState?.action
|
|
13007
13088
|
] }) }) : /* @__PURE__ */ jsxs22(Fragment15, { children: [
|
|
13008
|
-
effectiveCardWindow ? /* @__PURE__ */
|
|
13089
|
+
effectiveCardWindow ? /* @__PURE__ */ jsx24("div", { "data-matrx-cards-pad": "start", "aria-hidden": "true", className: "col-span-full shrink-0", style: { height: effectiveCardWindow.padStart } }) : null,
|
|
13009
13090
|
((rows) => effectiveCardWindow ? rows.slice(effectiveCardWindow.start, effectiveCardWindow.end) : rows)(
|
|
13010
13091
|
groupedRenderRows ?? paginated.map((row, dataIndex) => ({ kind: "row", row, dataIndex }))
|
|
13011
13092
|
).map((entry) => {
|
|
13012
13093
|
if (entry.kind === "group") {
|
|
13013
13094
|
const count = entry.group.rows.length;
|
|
13014
|
-
return /* @__PURE__ */
|
|
13095
|
+
return /* @__PURE__ */ jsx24(
|
|
13015
13096
|
MatrxTableGroupCardHeader,
|
|
13016
13097
|
{
|
|
13017
13098
|
groupKey: entry.group.key,
|
|
@@ -13032,7 +13113,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13032
13113
|
const displayRow = applyRowEdits(row, edits[id]);
|
|
13033
13114
|
const controls = buildRecordControls(displayRow);
|
|
13034
13115
|
const selectable = selection?.isRowSelectable?.(row) ?? Boolean(selection);
|
|
13035
|
-
return /* @__PURE__ */
|
|
13116
|
+
return /* @__PURE__ */ jsx24("div", { "data-row-id": id, "data-matrx-row-tint": rowTintColor(row, id) ?? void 0, className: "contents", children: mobileCards(displayRow, index, {
|
|
13036
13117
|
renderCell: (columnKey) => {
|
|
13037
13118
|
const column = columns.find((candidate) => columnId(candidate) === columnKey);
|
|
13038
13119
|
return column ? renderRecordCell(row, column, index, controls) : null;
|
|
@@ -13056,7 +13137,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13056
13137
|
className: "inline-flex items-center justify-end gap-0",
|
|
13057
13138
|
onClick: (event) => event.stopPropagation(),
|
|
13058
13139
|
children: [
|
|
13059
|
-
showInlineRowCopy && effectiveCopy ? /* @__PURE__ */
|
|
13140
|
+
showInlineRowCopy && effectiveCopy ? /* @__PURE__ */ jsx24(
|
|
13060
13141
|
TableRowCopyControl,
|
|
13061
13142
|
{
|
|
13062
13143
|
size: "toolbar",
|
|
@@ -13067,7 +13148,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13067
13148
|
}
|
|
13068
13149
|
) : null,
|
|
13069
13150
|
renderRowActions(displayRow, controls),
|
|
13070
|
-
visibleColumns.filter((column) => column.customActions).map((column) => /* @__PURE__ */
|
|
13151
|
+
visibleColumns.filter((column) => column.customActions).map((column) => /* @__PURE__ */ jsx24(Fragment14, { children: renderRecordCell(row, column, index, controls) }, columnId(column)))
|
|
13071
13152
|
]
|
|
13072
13153
|
}
|
|
13073
13154
|
) : null,
|
|
@@ -13079,7 +13160,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13079
13160
|
expandedDetail: expandedDetail && isRowExpanded(row) ? expandedDetail.render(displayRow, controls) : null
|
|
13080
13161
|
}) }, id);
|
|
13081
13162
|
}),
|
|
13082
|
-
effectiveCardWindow ? /* @__PURE__ */
|
|
13163
|
+
effectiveCardWindow ? /* @__PURE__ */ jsx24("div", { "data-matrx-cards-pad": "end", "aria-hidden": "true", className: "col-span-full shrink-0", style: { height: effectiveCardWindow.padEnd } }) : null
|
|
13083
13164
|
] }),
|
|
13084
13165
|
appendQuery !== null && isFetching && !isLoading ? /* @__PURE__ */ jsxs22(
|
|
13085
13166
|
"div",
|
|
@@ -13089,7 +13170,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13089
13170
|
"aria-live": "polite",
|
|
13090
13171
|
className: "sticky bottom-0 z-20 col-span-full flex h-16 w-full max-w-[100cqw] shrink-0 items-center justify-center gap-2 rounded-md border border-border bg-card/95 px-3 text-sm font-medium text-foreground shadow-sm backdrop-blur-sm",
|
|
13091
13172
|
children: [
|
|
13092
|
-
/* @__PURE__ */
|
|
13173
|
+
/* @__PURE__ */ jsx24(
|
|
13093
13174
|
Loader2Icon,
|
|
13094
13175
|
{
|
|
13095
13176
|
"aria-hidden": "true",
|
|
@@ -13147,15 +13228,15 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13147
13228
|
tableClassName
|
|
13148
13229
|
),
|
|
13149
13230
|
children: [
|
|
13150
|
-
spreadsheetEnabled ? /* @__PURE__ */
|
|
13151
|
-
hierarchy && draggedRow ? /* @__PURE__ */
|
|
13231
|
+
spreadsheetEnabled ? /* @__PURE__ */ jsx24("textarea", { ...sheet.typeCatcherProps }) : null,
|
|
13232
|
+
hierarchy && draggedRow ? /* @__PURE__ */ jsx24(
|
|
13152
13233
|
HierarchyRootDropTarget,
|
|
13153
13234
|
{
|
|
13154
13235
|
label: hierarchy.rootDropLabel ?? "Drop here to move to the top level",
|
|
13155
13236
|
draggedLabel: hierarchy.itemLabel?.(draggedRow) ?? "Moving row"
|
|
13156
13237
|
}
|
|
13157
13238
|
) : null,
|
|
13158
|
-
hierarchy && draggedRowId ? /* @__PURE__ */
|
|
13239
|
+
hierarchy && draggedRowId ? /* @__PURE__ */ jsx24(
|
|
13159
13240
|
HierarchyDragIndicatorLayer,
|
|
13160
13241
|
{
|
|
13161
13242
|
scrollRef,
|
|
@@ -13169,12 +13250,12 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13169
13250
|
"data-matrx-table-refreshing": "",
|
|
13170
13251
|
className: "pointer-events-none sticky inset-x-0 top-0 z-40 -mb-0.5 block h-0.5 overflow-hidden bg-primary/15",
|
|
13171
13252
|
children: [
|
|
13172
|
-
/* @__PURE__ */
|
|
13173
|
-
/* @__PURE__ */
|
|
13253
|
+
/* @__PURE__ */ jsx24("div", { className: "h-full w-full animate-pulse bg-primary" }),
|
|
13254
|
+
/* @__PURE__ */ jsx24("span", { className: "sr-only", children: "Refreshing table data" })
|
|
13174
13255
|
]
|
|
13175
13256
|
}
|
|
13176
13257
|
) : null,
|
|
13177
|
-
drillGrouped && drill ? /* @__PURE__ */
|
|
13258
|
+
drillGrouped && drill ? /* @__PURE__ */ jsx24(
|
|
13178
13259
|
MatrxDrillAnswerTable,
|
|
13179
13260
|
{
|
|
13180
13261
|
dimensions: drill.dimensions,
|
|
@@ -13217,7 +13298,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13217
13298
|
"data-matrx-table-fit": fitActive ? "" : void 0,
|
|
13218
13299
|
"data-matrx-table-fit-grow": fitActive && fitTableWidth !== void 0 ? "" : void 0,
|
|
13219
13300
|
children: [
|
|
13220
|
-
/* @__PURE__ */
|
|
13301
|
+
/* @__PURE__ */ jsx24(MatrxTableChrome, { part: "header", epoch: headerEpoch, render: () => /* @__PURE__ */ jsx24(
|
|
13221
13302
|
"thead",
|
|
13222
13303
|
{
|
|
13223
13304
|
ref: tableHeaderRef,
|
|
@@ -13236,7 +13317,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13236
13317
|
stickyHeader && (documentStickyHeader ? "relative translate-y-[var(--matrx-document-sticky-offset)]" : "sticky top-0")
|
|
13237
13318
|
),
|
|
13238
13319
|
children: /* @__PURE__ */ jsxs22("tr", { children: [
|
|
13239
|
-
selection ? /* @__PURE__ */
|
|
13320
|
+
selection ? /* @__PURE__ */ jsx24(
|
|
13240
13321
|
"th",
|
|
13241
13322
|
{
|
|
13242
13323
|
"data-matrx-table-selection-column": true,
|
|
@@ -13246,7 +13327,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13246
13327
|
embedded && "sm:bg-card max-sm:bg-card"
|
|
13247
13328
|
),
|
|
13248
13329
|
style: fixedUtilityWidth(selectionColumnWidth),
|
|
13249
|
-
children: /* @__PURE__ */
|
|
13330
|
+
children: /* @__PURE__ */ jsx24(
|
|
13250
13331
|
"div",
|
|
13251
13332
|
{
|
|
13252
13333
|
"data-matrx-table-selection-target": true,
|
|
@@ -13255,7 +13336,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13255
13336
|
event.currentTarget.querySelector('[role="checkbox"]')?.click();
|
|
13256
13337
|
}
|
|
13257
13338
|
},
|
|
13258
|
-
children: /* @__PURE__ */
|
|
13339
|
+
children: /* @__PURE__ */ jsx24(
|
|
13259
13340
|
Checkbox,
|
|
13260
13341
|
{
|
|
13261
13342
|
className: CHECKBOX_TAP_AREA,
|
|
@@ -13269,7 +13350,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13269
13350
|
)
|
|
13270
13351
|
}
|
|
13271
13352
|
) : null,
|
|
13272
|
-
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */
|
|
13353
|
+
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */ jsx24(
|
|
13273
13354
|
"th",
|
|
13274
13355
|
{
|
|
13275
13356
|
"aria-hidden": "true",
|
|
@@ -13349,7 +13430,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13349
13430
|
...frozenStyle(id)
|
|
13350
13431
|
},
|
|
13351
13432
|
children: [
|
|
13352
|
-
/* @__PURE__ */
|
|
13433
|
+
/* @__PURE__ */ jsx24(ColumnHeaderDropZone, { id, enabled: reorderableColumns && col.reorderable !== false, children: /* @__PURE__ */ jsx24(
|
|
13353
13434
|
ColumnHeaderCell,
|
|
13354
13435
|
{
|
|
13355
13436
|
label: col.header,
|
|
@@ -13408,7 +13489,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13408
13489
|
MenuIcon: host.MenuIcon
|
|
13409
13490
|
}
|
|
13410
13491
|
) }),
|
|
13411
|
-
columnResizable ? /* @__PURE__ */
|
|
13492
|
+
columnResizable ? /* @__PURE__ */ jsx24(
|
|
13412
13493
|
ColumnResizeHandle,
|
|
13413
13494
|
{
|
|
13414
13495
|
columnId: id,
|
|
@@ -13427,7 +13508,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13427
13508
|
id
|
|
13428
13509
|
);
|
|
13429
13510
|
}),
|
|
13430
|
-
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */
|
|
13511
|
+
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */ jsx24(
|
|
13431
13512
|
"th",
|
|
13432
13513
|
{
|
|
13433
13514
|
"aria-hidden": "true",
|
|
@@ -13437,7 +13518,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13437
13518
|
},
|
|
13438
13519
|
"matrx-column-spacer-end"
|
|
13439
13520
|
) : null,
|
|
13440
|
-
showActionsCol && /* @__PURE__ */
|
|
13521
|
+
showActionsCol && /* @__PURE__ */ jsx24(
|
|
13441
13522
|
"th",
|
|
13442
13523
|
{
|
|
13443
13524
|
"data-matrx-table-actions-column": true,
|
|
@@ -13449,14 +13530,14 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13449
13530
|
embedded && "sm:bg-card"
|
|
13450
13531
|
),
|
|
13451
13532
|
style: fixedUtilityWidth(actionsColumnWidth),
|
|
13452
|
-
children: compact && !(toolbar && "portalInto" in toolbar) && !(tableCard && embedded) ? /* @__PURE__ */
|
|
13533
|
+
children: compact && !(toolbar && "portalInto" in toolbar) && !(tableCard && embedded) ? /* @__PURE__ */ jsx24(
|
|
13453
13534
|
"span",
|
|
13454
13535
|
{
|
|
13455
13536
|
ref: setCompactToolbarSlot,
|
|
13456
13537
|
"data-matrx-table-compact-controls": "",
|
|
13457
13538
|
className: "inline-flex items-center justify-center normal-case tracking-normal"
|
|
13458
13539
|
}
|
|
13459
|
-
) : /* @__PURE__ */
|
|
13540
|
+
) : /* @__PURE__ */ jsx24("span", { "data-matrx-table-actions-label": true, className: "inline-block whitespace-nowrap", children: "Actions" })
|
|
13460
13541
|
}
|
|
13461
13542
|
)
|
|
13462
13543
|
] })
|
|
@@ -13474,15 +13555,15 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13474
13555
|
"data-matrx-table-skeleton-row": "",
|
|
13475
13556
|
style: explicitRowHeight !== void 0 ? { height: `${explicitRowHeight}px` } : loadingRowHeight !== void 0 ? { height: `${loadingRowHeight}px` } : void 0,
|
|
13476
13557
|
children: [
|
|
13477
|
-
selection ? /* @__PURE__ */
|
|
13558
|
+
selection ? /* @__PURE__ */ jsx24(
|
|
13478
13559
|
"td",
|
|
13479
13560
|
{
|
|
13480
13561
|
className: cn("px-2 py-1.5 align-middle lg:py-0.5", compactRows && "py-0 lg:py-0"),
|
|
13481
13562
|
style: fixedUtilityWidth(selectionColumnWidth),
|
|
13482
|
-
children: /* @__PURE__ */
|
|
13563
|
+
children: /* @__PURE__ */ jsx24(Skeleton, { className: "h-3.5 w-3.5" })
|
|
13483
13564
|
}
|
|
13484
13565
|
) : null,
|
|
13485
|
-
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */
|
|
13566
|
+
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */ jsx24(
|
|
13486
13567
|
"td",
|
|
13487
13568
|
{
|
|
13488
13569
|
"aria-hidden": "true",
|
|
@@ -13492,7 +13573,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13492
13573
|
},
|
|
13493
13574
|
"matrx-column-spacer-start"
|
|
13494
13575
|
) : null,
|
|
13495
|
-
renderedColumns.map((col) => /* @__PURE__ */
|
|
13576
|
+
renderedColumns.map((col) => /* @__PURE__ */ jsx24(
|
|
13496
13577
|
"td",
|
|
13497
13578
|
{
|
|
13498
13579
|
...col.customActions && col.customActionsGhostRow !== void 0 ? { "data-matrx-table-column-id": columnId(col) } : {},
|
|
@@ -13506,20 +13587,20 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13506
13587
|
col.customActions && col.customActionsGhostRow !== void 0 && "w-px whitespace-nowrap"
|
|
13507
13588
|
),
|
|
13508
13589
|
style: phoneColumnMinStyle(col),
|
|
13509
|
-
children: col.customActions && col.customActionsGhostRow !== void 0 ? /* @__PURE__ */
|
|
13590
|
+
children: col.customActions && col.customActionsGhostRow !== void 0 ? /* @__PURE__ */ jsx24("div", { "aria-hidden": "true", inert: true, className: "invisible", children: renderRecordCell(col.customActionsGhostRow, col, 0) }) : /* @__PURE__ */ jsx24(Skeleton, { className: cn("w-full", compactRows ? "h-4" : "h-6") })
|
|
13510
13591
|
},
|
|
13511
13592
|
columnId(col)
|
|
13512
13593
|
)),
|
|
13513
|
-
showActionsCol && /* @__PURE__ */
|
|
13594
|
+
showActionsCol && /* @__PURE__ */ jsx24(
|
|
13514
13595
|
"td",
|
|
13515
13596
|
{
|
|
13516
13597
|
"data-matrx-table-skeleton-actions": "",
|
|
13517
13598
|
className: cn("px-2 py-1.5 text-right align-middle lg:py-0.5", compactRows && "py-0 lg:py-0"),
|
|
13518
13599
|
style: fixedUtilityWidth(actionsColumnWidth),
|
|
13519
|
-
children: /* @__PURE__ */
|
|
13600
|
+
children: /* @__PURE__ */ jsx24(Skeleton, { className: cn("ml-auto w-10", compactRows ? "h-6" : "h-8") })
|
|
13520
13601
|
}
|
|
13521
13602
|
),
|
|
13522
|
-
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */
|
|
13603
|
+
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */ jsx24(
|
|
13523
13604
|
"td",
|
|
13524
13605
|
{
|
|
13525
13606
|
"aria-hidden": "true",
|
|
@@ -13532,15 +13613,15 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13532
13613
|
]
|
|
13533
13614
|
},
|
|
13534
13615
|
`sk-${i}`
|
|
13535
|
-
)) : readFailure || paginated.length === 0 && !drawsOnlyShutSections ? messageOutsideTable ? null : /* @__PURE__ */
|
|
13616
|
+
)) : readFailure || paginated.length === 0 && !drawsOnlyShutSections ? messageOutsideTable ? null : /* @__PURE__ */ jsx24("tr", { children: /* @__PURE__ */ jsx24("td", { colSpan: renderedColSpan, "data-matrx-table-message-cell": true, className: "overflow-visible! px-0 py-12 text-center", children: tableMessage }) }) : bodyEntries.map((entry) => {
|
|
13536
13617
|
if (entry.kind === "spacer") {
|
|
13537
|
-
return /* @__PURE__ */
|
|
13618
|
+
return /* @__PURE__ */ jsx24(
|
|
13538
13619
|
"tr",
|
|
13539
13620
|
{
|
|
13540
13621
|
"aria-hidden": "true",
|
|
13541
13622
|
"data-matrx-table-virtual-spacer": entry.place,
|
|
13542
13623
|
style: { height: `${entry.height}px` },
|
|
13543
|
-
children: /* @__PURE__ */
|
|
13624
|
+
children: /* @__PURE__ */ jsx24(
|
|
13544
13625
|
"td",
|
|
13545
13626
|
{
|
|
13546
13627
|
className: "border-0 p-0",
|
|
@@ -13552,7 +13633,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13552
13633
|
);
|
|
13553
13634
|
}
|
|
13554
13635
|
if (entry.kind === "group") {
|
|
13555
|
-
return /* @__PURE__ */
|
|
13636
|
+
return /* @__PURE__ */ jsx24(
|
|
13556
13637
|
TableGroupHeaderRow,
|
|
13557
13638
|
{
|
|
13558
13639
|
group: entry.group,
|
|
@@ -13576,7 +13657,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13576
13657
|
const row = entry.row;
|
|
13577
13658
|
const index = entry.index;
|
|
13578
13659
|
const id = getRowId(row);
|
|
13579
|
-
return /* @__PURE__ */
|
|
13660
|
+
return /* @__PURE__ */ jsx24(
|
|
13580
13661
|
MatrxTableBodyRow,
|
|
13581
13662
|
{
|
|
13582
13663
|
rowId: id,
|
|
@@ -13597,9 +13678,9 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13597
13678
|
"aria-label": entryRow.label ?? "New row",
|
|
13598
13679
|
className: "border-b border-border/60 bg-card",
|
|
13599
13680
|
children: [
|
|
13600
|
-
selection ? /* @__PURE__ */
|
|
13601
|
-
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */
|
|
13602
|
-
renderedColumns.map((column) => /* @__PURE__ */
|
|
13681
|
+
selection ? /* @__PURE__ */ jsx24("td", { className: "px-2 py-1.5" }) : null,
|
|
13682
|
+
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */ jsx24("td", { "aria-hidden": "true", className: "border-0 p-0", style: { width: `${columnSpacers.start}px`, minWidth: `${columnSpacers.start}px` } }) : null,
|
|
13683
|
+
renderedColumns.map((column) => /* @__PURE__ */ jsx24(
|
|
13603
13684
|
"td",
|
|
13604
13685
|
{
|
|
13605
13686
|
"data-matrx-table-entry-cell": columnId(column),
|
|
@@ -13612,13 +13693,13 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13612
13693
|
},
|
|
13613
13694
|
columnId(column)
|
|
13614
13695
|
)),
|
|
13615
|
-
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */
|
|
13616
|
-
showActionsCol ? /* @__PURE__ */
|
|
13696
|
+
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */ jsx24("td", { "aria-hidden": "true", className: "border-0 p-0", style: { width: `${columnSpacers.end}px`, minWidth: `${columnSpacers.end}px` } }) : null,
|
|
13697
|
+
showActionsCol ? /* @__PURE__ */ jsx24("td", { className: "px-2 py-1.5", children: entryRow.actions ?? null }) : null
|
|
13617
13698
|
]
|
|
13618
13699
|
}
|
|
13619
13700
|
) : null,
|
|
13620
|
-
entryRow?.below ? /* @__PURE__ */
|
|
13621
|
-
appendQuery !== null && isFetching && !isLoading ? /* @__PURE__ */
|
|
13701
|
+
entryRow?.below ? /* @__PURE__ */ jsx24("tr", { "data-matrx-table-entry-below": "", className: "bg-card", children: /* @__PURE__ */ jsx24("td", { colSpan: renderedColSpan, className: "px-2 py-1.5", children: entryRow.below }) }) : null,
|
|
13702
|
+
appendQuery !== null && isFetching && !isLoading ? /* @__PURE__ */ jsx24("tr", { "data-matrx-table-append-loading-row": true, children: /* @__PURE__ */ jsx24(
|
|
13622
13703
|
"td",
|
|
13623
13704
|
{
|
|
13624
13705
|
colSpan: renderedColSpan,
|
|
@@ -13630,7 +13711,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13630
13711
|
"aria-live": "polite",
|
|
13631
13712
|
className: "sticky left-0 flex h-16 w-fit max-w-[100cqw] items-center justify-center gap-2 px-3 text-sm font-medium text-foreground",
|
|
13632
13713
|
children: [
|
|
13633
|
-
/* @__PURE__ */
|
|
13714
|
+
/* @__PURE__ */ jsx24(
|
|
13634
13715
|
Loader2Icon,
|
|
13635
13716
|
{
|
|
13636
13717
|
"aria-hidden": "true",
|
|
@@ -13646,16 +13727,16 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13646
13727
|
]
|
|
13647
13728
|
}
|
|
13648
13729
|
),
|
|
13649
|
-
/* @__PURE__ */
|
|
13730
|
+
/* @__PURE__ */ jsx24(MatrxTableChrome, { part: "footer", epoch: footerEpoch, render: () => footerRows.length > 0 || hasSummaryTotals ? /* @__PURE__ */ jsxs22("tfoot", { className: cn(
|
|
13650
13731
|
"border-t-2 border-border bg-muted/50 font-semibold",
|
|
13651
13732
|
// Frozen body cells sit at z-20. The sticky totals band is
|
|
13652
13733
|
// a separate stacking context and must sit above them, or a
|
|
13653
13734
|
// frozen first cell covers the totals label at the footer.
|
|
13654
13735
|
hasSummaryTotals && "sticky bottom-0 z-30 bg-muted/95 backdrop-blur-sm"
|
|
13655
13736
|
), children: [
|
|
13656
|
-
hasSummaryTotals ? /* @__PURE__ */
|
|
13657
|
-
selection ? /* @__PURE__ */
|
|
13658
|
-
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */
|
|
13737
|
+
hasSummaryTotals ? /* @__PURE__ */ jsx24(Fragment15, { children: /* @__PURE__ */ jsxs22("tr", { "data-matrx-table-summary-totals": true, "data-matrx-table-summary-scope": summaryUsesSource ? "source" : summaryCoverage, children: [
|
|
13738
|
+
selection ? /* @__PURE__ */ jsx24("td", { className: "px-2 py-2" }) : null,
|
|
13739
|
+
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */ jsx24(
|
|
13659
13740
|
"td",
|
|
13660
13741
|
{
|
|
13661
13742
|
"aria-hidden": "true",
|
|
@@ -13688,17 +13769,17 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13688
13769
|
children: [
|
|
13689
13770
|
columnIndex === 0 ? /* @__PURE__ */ jsxs22("span", { "data-matrx-table-summary-total-label": true, className: "text-sm font-semibold text-foreground", children: [
|
|
13690
13771
|
summaryCaption,
|
|
13691
|
-
readView.stale ? /* @__PURE__ */
|
|
13772
|
+
readView.stale ? /* @__PURE__ */ jsx24("span", { className: "ml-1 text-xs text-amber-700 dark:text-amber-300", children: "Retained rows may be out of date." }) : null
|
|
13692
13773
|
] }) : null,
|
|
13693
|
-
columnIndex === 0 && total?.value != null ? /* @__PURE__ */
|
|
13774
|
+
columnIndex === 0 && total?.value != null ? /* @__PURE__ */ jsx24("span", { className: "ml-2", children: total.value }) : null,
|
|
13694
13775
|
columnIndex !== 0 ? total?.value : null,
|
|
13695
|
-
total?.unavailable ? /* @__PURE__ */
|
|
13776
|
+
total?.unavailable ? /* @__PURE__ */ jsx24(ErrorBox, { as: "span", className: "sr-only", message: `${columnId(column)} total is unavailable`, operation: "Total this column", origin: "design-system/MatrxDataTable" }) : null
|
|
13696
13777
|
]
|
|
13697
13778
|
},
|
|
13698
13779
|
columnId(column)
|
|
13699
13780
|
);
|
|
13700
13781
|
}),
|
|
13701
|
-
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */
|
|
13782
|
+
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */ jsx24(
|
|
13702
13783
|
"td",
|
|
13703
13784
|
{
|
|
13704
13785
|
"aria-hidden": "true",
|
|
@@ -13708,11 +13789,11 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13708
13789
|
},
|
|
13709
13790
|
"matrx-summary-column-spacer-end"
|
|
13710
13791
|
) : null,
|
|
13711
|
-
showActionsCol ? /* @__PURE__ */
|
|
13792
|
+
showActionsCol ? /* @__PURE__ */ jsx24("td", {}) : null
|
|
13712
13793
|
] }) }) : null,
|
|
13713
13794
|
footerRows.map((row, index) => /* @__PURE__ */ jsxs22("tr", { children: [
|
|
13714
|
-
selection ? /* @__PURE__ */
|
|
13715
|
-
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */
|
|
13795
|
+
selection ? /* @__PURE__ */ jsx24("td", { className: "px-2 py-2" }) : null,
|
|
13796
|
+
columnSpacers && columnSpacers.start > 0 ? /* @__PURE__ */ jsx24(
|
|
13716
13797
|
"td",
|
|
13717
13798
|
{
|
|
13718
13799
|
"aria-hidden": "true",
|
|
@@ -13722,7 +13803,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13722
13803
|
},
|
|
13723
13804
|
"matrx-column-spacer-start"
|
|
13724
13805
|
) : null,
|
|
13725
|
-
renderedColumns.map((column) => /* @__PURE__ */
|
|
13806
|
+
renderedColumns.map((column) => /* @__PURE__ */ jsx24(
|
|
13726
13807
|
"td",
|
|
13727
13808
|
{
|
|
13728
13809
|
className: cn(
|
|
@@ -13742,7 +13823,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13742
13823
|
},
|
|
13743
13824
|
columnId(column)
|
|
13744
13825
|
)),
|
|
13745
|
-
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */
|
|
13826
|
+
columnSpacers && columnSpacers.end > 0 ? /* @__PURE__ */ jsx24(
|
|
13746
13827
|
"td",
|
|
13747
13828
|
{
|
|
13748
13829
|
"aria-hidden": "true",
|
|
@@ -13752,18 +13833,18 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13752
13833
|
},
|
|
13753
13834
|
"matrx-column-spacer-end"
|
|
13754
13835
|
) : null,
|
|
13755
|
-
showActionsCol ? /* @__PURE__ */
|
|
13836
|
+
showActionsCol ? /* @__PURE__ */ jsx24("td", {}) : null
|
|
13756
13837
|
] }, `footer-${index}`))
|
|
13757
13838
|
] }) : null })
|
|
13758
13839
|
]
|
|
13759
13840
|
}
|
|
13760
13841
|
),
|
|
13761
|
-
messageOutsideTable ? /* @__PURE__ */
|
|
13842
|
+
messageOutsideTable ? /* @__PURE__ */ jsx24("div", { "data-matrx-table-message-outside": true, className: "py-12 text-center", children: tableMessage }) : null
|
|
13762
13843
|
]
|
|
13763
13844
|
}
|
|
13764
13845
|
),
|
|
13765
13846
|
scrollHintLeft ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
13766
|
-
/* @__PURE__ */
|
|
13847
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
13767
13848
|
Button,
|
|
13768
13849
|
{
|
|
13769
13850
|
type: "button",
|
|
@@ -13775,13 +13856,13 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13775
13856
|
...scrollHintTop === null ? {} : { style: { top: scrollHintTop } },
|
|
13776
13857
|
className: cn(scrollHintTop === null ? "top-1/2 h-11 w-11" : "h-7 w-7", "absolute left-1.5 z-30 hidden -translate-y-1/2 rounded-full border border-glass-edge bg-glass p-0 text-foreground shadow-glass backdrop-blur-glass backdrop-saturate-glass hover:bg-glass-hover active:bg-glass-active sm:inline-flex"),
|
|
13777
13858
|
onClick: () => scrollTableHorizontally("left"),
|
|
13778
|
-
children: /* @__PURE__ */
|
|
13859
|
+
children: /* @__PURE__ */ jsx24(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
13779
13860
|
}
|
|
13780
13861
|
) }),
|
|
13781
|
-
/* @__PURE__ */
|
|
13862
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: "More columns to the left" })
|
|
13782
13863
|
] }) : null,
|
|
13783
13864
|
scrollHintRight ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
13784
|
-
/* @__PURE__ */
|
|
13865
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
13785
13866
|
Button,
|
|
13786
13867
|
{
|
|
13787
13868
|
type: "button",
|
|
@@ -13793,10 +13874,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13793
13874
|
style: scrollHintTop === null ? { right: scrollHintRightInset } : { right: scrollHintRightInset, top: scrollHintTop },
|
|
13794
13875
|
className: cn(scrollHintTop === null ? "top-1/2 h-11 w-11" : "h-7 w-7", "transition-[background-color,box-shadow,opacity] absolute z-30 hidden -translate-y-1/2 rounded-full border border-glass-edge bg-glass p-0 text-foreground shadow-glass backdrop-blur-glass backdrop-saturate-glass hover:bg-glass-hover active:bg-glass-active sm:inline-flex"),
|
|
13795
13876
|
onClick: () => scrollTableHorizontally("right"),
|
|
13796
|
-
children: /* @__PURE__ */
|
|
13877
|
+
children: /* @__PURE__ */ jsx24(ChevronRightIcon, { className: "h-5 w-5" })
|
|
13797
13878
|
}
|
|
13798
13879
|
) }),
|
|
13799
|
-
/* @__PURE__ */
|
|
13880
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: "More columns to the right" })
|
|
13800
13881
|
] }) : null
|
|
13801
13882
|
] }),
|
|
13802
13883
|
appendQuery ? /* @__PURE__ */ jsxs22(
|
|
@@ -13812,7 +13893,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13812
13893
|
...isFetching && !isLoading ? {} : { role: "status", "aria-live": "polite" },
|
|
13813
13894
|
className: "flex w-full min-w-0 items-center gap-2 text-xs text-muted-foreground sm:w-auto sm:flex-1",
|
|
13814
13895
|
children: [
|
|
13815
|
-
isLoading ? /* @__PURE__ */
|
|
13896
|
+
isLoading ? /* @__PURE__ */ jsx24(
|
|
13816
13897
|
Loader2Icon,
|
|
13817
13898
|
{
|
|
13818
13899
|
"data-matrx-table-append-loader": true,
|
|
@@ -13821,19 +13902,19 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13821
13902
|
}
|
|
13822
13903
|
) : null,
|
|
13823
13904
|
/* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 flex-1 flex-wrap items-center gap-x-2", children: [
|
|
13824
|
-
/* @__PURE__ */
|
|
13905
|
+
/* @__PURE__ */ jsx24("p", { className: "min-w-0 break-words font-medium text-foreground", children: isLoading ? "Loading rows\u2026" : readView.failure ? "Nothing loaded \u2014 the read failed" : appendQuery.pagination.sourceRecords ? `${formatCount10(processed.length)} ${appendQuery.pagination.sourceRecords.rowLabel}${appendQuery.pagination.sourceRecords.matchedRecords === void 0 ? "" : ` (${formatCount10(appendQuery.pagination.sourceRecords.matchedRecords)} matching ${appendQuery.pagination.sourceRecords.label})`} \xB7 ${formatCount10(appendQuery.pagination.sourceRecords.loaded)}${appendQuery.pagination.sourceRecords.total === void 0 ? "" : ` / ${formatCount10(appendQuery.pagination.sourceRecords.total)}`} ${appendQuery.pagination.sourceRecords.label} loaded` : `${processed.length === data.length ? "" : `${formatCount10(processed.length)} matching loaded ${processed.length === 1 ? "row" : "rows"} \xB7 `}${formatCount10(data.length)} loaded${appendQuery.pagination.totalItems === void 0 ? "" : ` of ${formatCount10(appendQuery.pagination.totalItems)}`}` }),
|
|
13825
13906
|
appendQuery.pagination.sourceUntil || appendUsesLocalProcessing ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
13826
|
-
/* @__PURE__ */
|
|
13907
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24("button", { type: "button", "aria-label": "Source coverage", className: "shrink-0 text-xs text-muted-foreground underline decoration-dotted underline-offset-4", children: "Source info" }) }),
|
|
13827
13908
|
/* @__PURE__ */ jsxs22(TooltipContent, { children: [
|
|
13828
13909
|
appendQuery.pagination.sourceUntil ? /* @__PURE__ */ jsxs22("p", { children: [
|
|
13829
13910
|
"Source fixed through ",
|
|
13830
13911
|
new Date(appendQuery.pagination.sourceUntil).toLocaleString(),
|
|
13831
13912
|
"."
|
|
13832
13913
|
] }) : null,
|
|
13833
|
-
/* @__PURE__ */
|
|
13914
|
+
/* @__PURE__ */ jsx24("p", { children: !isLoading && !isFetching && !appendQuery.pagination.loadAll?.isLoading && !scrollPagination.error && !appendQuery.pagination.hasNextPage && appendQuery.pagination.totalItems !== void 0 && data.length === appendQuery.pagination.totalItems ? "All source rows are loaded." : appendUsesLocalProcessing ? sourceOwnsColumnFilters ? "Local processing covers loaded rows; source-owned column filters are applied by the source." : "Local search and filters cover loaded rows." : "Source paging is active." })
|
|
13834
13915
|
] })
|
|
13835
13916
|
] }) : null,
|
|
13836
|
-
scrollPagination.error ? /* @__PURE__ */
|
|
13917
|
+
scrollPagination.error ? /* @__PURE__ */ jsx24(
|
|
13837
13918
|
ErrorBox,
|
|
13838
13919
|
{
|
|
13839
13920
|
className: "text-destructive-ink",
|
|
@@ -13857,21 +13938,21 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13857
13938
|
value: String(appendQuery.pagination.sourcePageSize.value),
|
|
13858
13939
|
onValueChange: (value) => appendQuery.pagination.sourcePageSize?.onChange(Number(value)),
|
|
13859
13940
|
children: [
|
|
13860
|
-
/* @__PURE__ */
|
|
13941
|
+
/* @__PURE__ */ jsx24(
|
|
13861
13942
|
SelectTrigger,
|
|
13862
13943
|
{
|
|
13863
13944
|
"aria-label": "Rows per load",
|
|
13864
13945
|
className: "h-8 min-w-20 shrink-0 rounded-md border border-border bg-card px-3 text-sm [&_svg]:size-5",
|
|
13865
13946
|
disabled: isLoading || isFetching || appendQuery.pagination.loadAll?.isLoading,
|
|
13866
|
-
children: /* @__PURE__ */
|
|
13947
|
+
children: /* @__PURE__ */ jsx24(SelectValue, {})
|
|
13867
13948
|
}
|
|
13868
13949
|
),
|
|
13869
|
-
/* @__PURE__ */
|
|
13950
|
+
/* @__PURE__ */ jsx24(SelectContent, { children: appendQuery.pagination.sourcePageSize.options.map((size) => /* @__PURE__ */ jsx24(SelectItem, { value: String(size), children: size }, size)) })
|
|
13870
13951
|
]
|
|
13871
13952
|
}
|
|
13872
13953
|
) : null,
|
|
13873
13954
|
/* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 max-w-full flex-wrap gap-0", children: [
|
|
13874
|
-
/* @__PURE__ */
|
|
13955
|
+
/* @__PURE__ */ jsx24(
|
|
13875
13956
|
Button,
|
|
13876
13957
|
{
|
|
13877
13958
|
type: "button",
|
|
@@ -13882,7 +13963,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13882
13963
|
children: "Load more"
|
|
13883
13964
|
}
|
|
13884
13965
|
),
|
|
13885
|
-
appendQuery.pagination.loadAll ? /* @__PURE__ */
|
|
13966
|
+
appendQuery.pagination.loadAll ? /* @__PURE__ */ jsx24(
|
|
13886
13967
|
Button,
|
|
13887
13968
|
{
|
|
13888
13969
|
type: "button",
|
|
@@ -13894,7 +13975,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13894
13975
|
}
|
|
13895
13976
|
) : null
|
|
13896
13977
|
] }),
|
|
13897
|
-
appendQuery.pagination.loadAll?.isLoading ? /* @__PURE__ */
|
|
13978
|
+
appendQuery.pagination.loadAll?.isLoading ? /* @__PURE__ */ jsx24(
|
|
13898
13979
|
Button,
|
|
13899
13980
|
{
|
|
13900
13981
|
type: "button",
|
|
@@ -13903,7 +13984,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13903
13984
|
onClick: appendQuery.pagination.loadAll.stop,
|
|
13904
13985
|
children: "Stop loading"
|
|
13905
13986
|
}
|
|
13906
|
-
) : scrollPagination.error ? /* @__PURE__ */
|
|
13987
|
+
) : scrollPagination.error ? /* @__PURE__ */ jsx24(
|
|
13907
13988
|
Button,
|
|
13908
13989
|
{
|
|
13909
13990
|
type: "button",
|
|
@@ -13912,7 +13993,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13912
13993
|
onClick: appendQuery.pagination.retrySource ?? (appendQuery.pagination.hasNextPage ? appendQuery.pagination.loadNextPage : appendQuery.pagination.refresh),
|
|
13913
13994
|
children: appendQuery.pagination.retrySource ? "Retry source" : appendQuery.pagination.hasNextPage ? "Retry" : "Reload rows"
|
|
13914
13995
|
}
|
|
13915
|
-
) : !isLoading && appendQuery.pagination.totalItems !== void 0 && data.length === appendQuery.pagination.totalItems ? /* @__PURE__ */
|
|
13996
|
+
) : !isLoading && appendQuery.pagination.totalItems !== void 0 && data.length === appendQuery.pagination.totalItems ? /* @__PURE__ */ jsx24("span", { className: "min-w-0 max-w-full break-words whitespace-normal px-3 text-xs text-muted-foreground sm:text-sm", children: "All rows loaded" }) : null
|
|
13916
13997
|
]
|
|
13917
13998
|
}
|
|
13918
13999
|
) : embedded && !hidePagination && !drillGrouped && (localProgressiveEnabled || pageCount <= 1 || remoteQuery?.mode === "controlled") ? (
|
|
@@ -13920,7 +14001,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13920
14001
|
// rows than the card's first batch, ONE quiet "Show more" with its honest count, drawn
|
|
13921
14002
|
// in the card's footer row beside "+ Add" when the card has one. Rows held locally are
|
|
13922
14003
|
// revealed; a server-paged source is asked for a bigger first page (a real fetch).
|
|
13923
|
-
localProgressiveEnabled && progressiveRows.hasMore ? /* @__PURE__ */
|
|
14004
|
+
localProgressiveEnabled && progressiveRows.hasMore ? /* @__PURE__ */ jsx24(
|
|
13924
14005
|
MatrxTableCardShowMore,
|
|
13925
14006
|
{
|
|
13926
14007
|
card: tableCard,
|
|
@@ -13928,7 +14009,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13928
14009
|
total: totalItems,
|
|
13929
14010
|
onShowMore: () => void chromeLatest.current.showMore()
|
|
13930
14011
|
}
|
|
13931
|
-
) : remoteQuery?.mode === "controlled" && !isLoading && totalItems > data.length ? /* @__PURE__ */
|
|
14012
|
+
) : remoteQuery?.mode === "controlled" && !isLoading && totalItems > data.length ? /* @__PURE__ */ jsx24(
|
|
13932
14013
|
MatrxTableCardShowMore,
|
|
13933
14014
|
{
|
|
13934
14015
|
card: tableCard,
|
|
@@ -13942,7 +14023,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13942
14023
|
// Keep the footer and disabled page controls in place for an empty table,
|
|
13943
14024
|
// including an unfiltered empty source. The empty-state copy explains why
|
|
13944
14025
|
// there are no records; the stable footer preserves the table controls.
|
|
13945
|
-
/* @__PURE__ */
|
|
14026
|
+
/* @__PURE__ */ jsx24(MatrxTableChrome, { part: "pagination", epoch: paginationEpoch, render: () => /* @__PURE__ */ jsx24("div", { className: "shrink-0", children: /* @__PURE__ */ jsx24(
|
|
13946
14027
|
GenericTablePagination,
|
|
13947
14028
|
{
|
|
13948
14029
|
totalItems,
|
|
@@ -13994,7 +14075,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
13994
14075
|
]
|
|
13995
14076
|
}
|
|
13996
14077
|
),
|
|
13997
|
-
offerSelectAllMatching && selectionMatchingTotal !== void 0 ? /* @__PURE__ */
|
|
14078
|
+
offerSelectAllMatching && selectionMatchingTotal !== void 0 ? /* @__PURE__ */ jsx24(
|
|
13998
14079
|
Button2,
|
|
13999
14080
|
{
|
|
14000
14081
|
type: "button",
|
|
@@ -14004,12 +14085,12 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14004
14085
|
children: `Select all ${formatCount10(selectionMatchingTotal)}`
|
|
14005
14086
|
}
|
|
14006
14087
|
) : null,
|
|
14007
|
-
/* @__PURE__ */
|
|
14088
|
+
/* @__PURE__ */ jsx24(
|
|
14008
14089
|
Button2,
|
|
14009
14090
|
{
|
|
14010
14091
|
type: "button",
|
|
14011
14092
|
variant: "quiet",
|
|
14012
|
-
icon: /* @__PURE__ */
|
|
14093
|
+
icon: /* @__PURE__ */ jsx24(XIcon, { "aria-hidden": "true" }),
|
|
14013
14094
|
onClick: () => {
|
|
14014
14095
|
lastToggledIndex.current = null;
|
|
14015
14096
|
if (allMatching) setAllMatching(false);
|
|
@@ -14024,7 +14105,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14024
14105
|
"data-matrx-table-bulk-actions": true,
|
|
14025
14106
|
className: "flex min-w-0 flex-1 flex-nowrap items-center justify-start gap-0 overflow-x-auto sm:justify-end [&>*]:shrink-0",
|
|
14026
14107
|
children: [
|
|
14027
|
-
effectiveCopy ? /* @__PURE__ */
|
|
14108
|
+
effectiveCopy ? /* @__PURE__ */ jsx24(
|
|
14028
14109
|
CopyButtons,
|
|
14029
14110
|
{
|
|
14030
14111
|
size: "icon",
|
|
@@ -14063,7 +14144,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14063
14144
|
}
|
|
14064
14145
|
) : null
|
|
14065
14146
|
] }),
|
|
14066
|
-
/* @__PURE__ */
|
|
14147
|
+
/* @__PURE__ */ jsx24(
|
|
14067
14148
|
ColumnManager,
|
|
14068
14149
|
{
|
|
14069
14150
|
open: columnManagerOpen,
|
|
@@ -14075,7 +14156,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14075
14156
|
defaults: columnManagerDefaults
|
|
14076
14157
|
}
|
|
14077
14158
|
),
|
|
14078
|
-
detailEnabled && selectedRow ? /* @__PURE__ */
|
|
14159
|
+
detailEnabled && selectedRow ? /* @__PURE__ */ jsx24(
|
|
14079
14160
|
SidePanelSurface,
|
|
14080
14161
|
{
|
|
14081
14162
|
title: resolveStringTitle(
|
|
@@ -14088,7 +14169,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14088
14169
|
openRequest,
|
|
14089
14170
|
defaultWidth: detail?.defaultWidth ?? 480,
|
|
14090
14171
|
headerActions: /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-1", children: [
|
|
14091
|
-
effectiveCopy && showRowCopy ? /* @__PURE__ */
|
|
14172
|
+
effectiveCopy && showRowCopy ? /* @__PURE__ */ jsx24(
|
|
14092
14173
|
TableRowCopyControl,
|
|
14093
14174
|
{
|
|
14094
14175
|
size: "icon",
|
|
@@ -14102,7 +14183,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14102
14183
|
detail?.headerActions?.(selectedRow),
|
|
14103
14184
|
renderRecordPageDoor(selectedRow),
|
|
14104
14185
|
windowEnabled ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
14105
|
-
/* @__PURE__ */
|
|
14186
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
14106
14187
|
Button,
|
|
14107
14188
|
{
|
|
14108
14189
|
type: "button",
|
|
@@ -14112,10 +14193,10 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14112
14193
|
className: "h-7 w-7",
|
|
14113
14194
|
"aria-label": "Open in window",
|
|
14114
14195
|
onClick: () => openWindow(selectedRow),
|
|
14115
|
-
children: /* @__PURE__ */
|
|
14196
|
+
children: /* @__PURE__ */ jsx24(PanelRightIcon, { className: "h-5 w-5" })
|
|
14116
14197
|
}
|
|
14117
14198
|
) }),
|
|
14118
|
-
/* @__PURE__ */
|
|
14199
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: "Open in window" })
|
|
14119
14200
|
] }) : null
|
|
14120
14201
|
] }),
|
|
14121
14202
|
children: detail?.render ? (
|
|
@@ -14126,7 +14207,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14126
14207
|
// fixes the whole class at once — a custom body that already
|
|
14127
14208
|
// scrolls (`h-full` + `overflow-y-auto` root) still resolves to
|
|
14128
14209
|
// this container's height, so no second scrollbar appears.
|
|
14129
|
-
/* @__PURE__ */
|
|
14210
|
+
/* @__PURE__ */ jsx24("div", { className: "h-full min-h-0 overflow-y-auto", children: detail.render(selectedRow, {
|
|
14130
14211
|
closeDetail: () => setSelectedId(null),
|
|
14131
14212
|
openDetail: () => openDetail(selectedRow),
|
|
14132
14213
|
openWindow: () => openWindow(selectedRow),
|
|
@@ -14134,7 +14215,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14134
14215
|
hasPendingEdits: Boolean(edits[getRowId(selectedRow)]),
|
|
14135
14216
|
discardPendingEdits: () => discardRowEdits(getRowId(selectedRow))
|
|
14136
14217
|
}) })
|
|
14137
|
-
) : /* @__PURE__ */
|
|
14218
|
+
) : /* @__PURE__ */ jsx24(
|
|
14138
14219
|
DataRowInspector,
|
|
14139
14220
|
{
|
|
14140
14221
|
row: selectedRow,
|
|
@@ -14148,7 +14229,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14148
14229
|
)
|
|
14149
14230
|
}
|
|
14150
14231
|
) : null,
|
|
14151
|
-
windowRow ? /* @__PURE__ */
|
|
14232
|
+
windowRow ? /* @__PURE__ */ jsx24(
|
|
14152
14233
|
DataRowWindow,
|
|
14153
14234
|
{
|
|
14154
14235
|
isOpen: true,
|
|
@@ -14162,7 +14243,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14162
14243
|
headerActions: /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-1", children: [
|
|
14163
14244
|
renderRecordPageDoor(windowRow),
|
|
14164
14245
|
windowConfig?.openOnRowClick === true && detail?.enabled === true ? /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
14165
|
-
/* @__PURE__ */
|
|
14246
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
14166
14247
|
Button,
|
|
14167
14248
|
{
|
|
14168
14249
|
type: "button",
|
|
@@ -14175,12 +14256,12 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14175
14256
|
closeWindow();
|
|
14176
14257
|
openDetail(windowRow);
|
|
14177
14258
|
},
|
|
14178
|
-
children: /* @__PURE__ */
|
|
14259
|
+
children: /* @__PURE__ */ jsx24(PanelRightIcon, { className: "h-5 w-5" })
|
|
14179
14260
|
}
|
|
14180
14261
|
) }),
|
|
14181
|
-
/* @__PURE__ */
|
|
14262
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: "Open in side panel" })
|
|
14182
14263
|
] }) : null,
|
|
14183
|
-
effectiveCopy && showRowCopy ? /* @__PURE__ */
|
|
14264
|
+
effectiveCopy && showRowCopy ? /* @__PURE__ */ jsx24(
|
|
14184
14265
|
TableRowCopyControl,
|
|
14185
14266
|
{
|
|
14186
14267
|
size: "icon",
|
|
@@ -14199,7 +14280,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14199
14280
|
closeWindow,
|
|
14200
14281
|
hasPendingEdits: Boolean(edits[getRowId(windowRow)]),
|
|
14201
14282
|
discardPendingEdits: () => discardRowEdits(getRowId(windowRow))
|
|
14202
|
-
}) ?? /* @__PURE__ */
|
|
14283
|
+
}) ?? /* @__PURE__ */ jsx24(
|
|
14203
14284
|
DataRowInspector,
|
|
14204
14285
|
{
|
|
14205
14286
|
row: windowRow,
|
|
@@ -14228,7 +14309,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14228
14309
|
discardPendingEdits: () => discardRowEdits(getRowId(windowRow))
|
|
14229
14310
|
}) : editableFieldColumns(windowRow).length > 0 ? (
|
|
14230
14311
|
// THE DEFAULT EDIT TAB: the editable columns with the grid's own editors.
|
|
14231
|
-
/* @__PURE__ */
|
|
14312
|
+
/* @__PURE__ */ jsx24(
|
|
14232
14313
|
DataRowInspector,
|
|
14233
14314
|
{
|
|
14234
14315
|
row: windowRow,
|
|
@@ -14248,7 +14329,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14248
14329
|
})
|
|
14249
14330
|
}
|
|
14250
14331
|
) : null,
|
|
14251
|
-
missingWindowRowId ? /* @__PURE__ */
|
|
14332
|
+
missingWindowRowId ? /* @__PURE__ */ jsx24(
|
|
14252
14333
|
DataRowWindow,
|
|
14253
14334
|
{
|
|
14254
14335
|
isOpen: true,
|
|
@@ -14257,7 +14338,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14257
14338
|
width: 520,
|
|
14258
14339
|
height: 360,
|
|
14259
14340
|
windowId: `matrx-data-row-${urlState?.id ?? "local"}-missing-${missingWindowRowId}`,
|
|
14260
|
-
viewContent: /* @__PURE__ */
|
|
14341
|
+
viewContent: /* @__PURE__ */ jsx24(
|
|
14261
14342
|
MissingRowNotice,
|
|
14262
14343
|
{
|
|
14263
14344
|
id: missingWindowRowId,
|
|
@@ -14275,8 +14356,8 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14275
14356
|
"data-matrx-foreign-drafts": true,
|
|
14276
14357
|
className: "fixed inset-x-3 bottom-20 z-50 flex flex-wrap items-center justify-center gap-2 rounded-lg border border-amber-500/40 bg-card px-3 py-2 text-xs shadow-lg sm:inset-x-auto sm:left-1/2 sm:-translate-x-1/2 sm:flex-nowrap",
|
|
14277
14358
|
children: [
|
|
14278
|
-
/* @__PURE__ */
|
|
14279
|
-
/* @__PURE__ */
|
|
14359
|
+
/* @__PURE__ */ jsx24("span", { children: "Unsaved edits from previous results" }),
|
|
14360
|
+
/* @__PURE__ */ jsx24(
|
|
14280
14361
|
CopyButtons,
|
|
14281
14362
|
{
|
|
14282
14363
|
size: "xs",
|
|
@@ -14285,11 +14366,11 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14285
14366
|
json: () => foreignDraftPayload
|
|
14286
14367
|
}
|
|
14287
14368
|
),
|
|
14288
|
-
/* @__PURE__ */
|
|
14369
|
+
/* @__PURE__ */ jsx24(Button, { type: "button", size: "sm", variant: "ghost", className: "h-7 text-xs text-destructive-ink", onClick: () => setConfirmForeignDraftDiscard(true), children: "Discard drafts" })
|
|
14289
14370
|
]
|
|
14290
14371
|
}
|
|
14291
14372
|
) : null,
|
|
14292
|
-
/* @__PURE__ */
|
|
14373
|
+
/* @__PURE__ */ jsx24(
|
|
14293
14374
|
ConfirmDialog,
|
|
14294
14375
|
{
|
|
14295
14376
|
open: confirmForeignDraftDiscard,
|
|
@@ -14309,7 +14390,7 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14309
14390
|
}
|
|
14310
14391
|
}
|
|
14311
14392
|
),
|
|
14312
|
-
/* @__PURE__ */
|
|
14393
|
+
/* @__PURE__ */ jsx24(
|
|
14313
14394
|
DirtySavePill,
|
|
14314
14395
|
{
|
|
14315
14396
|
changeCount,
|
|
@@ -14322,11 +14403,11 @@ function MatrxDataTableCore(coreProps) {
|
|
|
14322
14403
|
]
|
|
14323
14404
|
}
|
|
14324
14405
|
),
|
|
14325
|
-
/* @__PURE__ */
|
|
14406
|
+
/* @__PURE__ */ jsx24(DragOverlay, { children: draggedRow ? (
|
|
14326
14407
|
// w-max: the overlay inherits the ACTIVE node's size, and the active
|
|
14327
14408
|
// node is the 16px grip handle — without it the label wraps to one
|
|
14328
14409
|
// character per line.
|
|
14329
|
-
/* @__PURE__ */
|
|
14410
|
+
/* @__PURE__ */ jsx24("div", { className: "w-max max-w-xs truncate rounded border border-border bg-card px-2.5 py-1.5 text-sm font-medium text-foreground shadow-md", children: hierarchy?.itemLabel?.(draggedRow) ?? "Moving row" })
|
|
14330
14411
|
) : null })
|
|
14331
14412
|
]
|
|
14332
14413
|
}
|
|
@@ -14343,7 +14424,7 @@ function HierarchyDragHandle({
|
|
|
14343
14424
|
id,
|
|
14344
14425
|
disabled
|
|
14345
14426
|
});
|
|
14346
|
-
return /* @__PURE__ */
|
|
14427
|
+
return /* @__PURE__ */ jsx24(
|
|
14347
14428
|
"button",
|
|
14348
14429
|
{
|
|
14349
14430
|
ref: setNodeRef,
|
|
@@ -14355,7 +14436,7 @@ function HierarchyDragHandle({
|
|
|
14355
14436
|
onClick: (event) => event.stopPropagation(),
|
|
14356
14437
|
...attributes,
|
|
14357
14438
|
...listeners,
|
|
14358
|
-
children: /* @__PURE__ */
|
|
14439
|
+
children: /* @__PURE__ */ jsx24(GripVerticalIcon, { className: "h-3.5 w-3.5" })
|
|
14359
14440
|
}
|
|
14360
14441
|
);
|
|
14361
14442
|
}
|
|
@@ -14374,8 +14455,8 @@ function HierarchyRootDropTarget({
|
|
|
14374
14455
|
isOver && "border-solid bg-primary/20 shadow-md shadow-primary/25"
|
|
14375
14456
|
),
|
|
14376
14457
|
children: [
|
|
14377
|
-
/* @__PURE__ */
|
|
14378
|
-
/* @__PURE__ */
|
|
14458
|
+
/* @__PURE__ */ jsx24("span", { className: "truncate", children: draggedLabel }),
|
|
14459
|
+
/* @__PURE__ */ jsx24("span", { className: "text-primary-ink/75", children: label })
|
|
14379
14460
|
]
|
|
14380
14461
|
}
|
|
14381
14462
|
);
|
|
@@ -14424,7 +14505,7 @@ function HierarchyDragIndicatorLayer({
|
|
|
14424
14505
|
const { preview } = indicator;
|
|
14425
14506
|
const indent = indicator.left + 10 + preview.depth * 12;
|
|
14426
14507
|
if (preview.position === "inside") {
|
|
14427
|
-
return /* @__PURE__ */
|
|
14508
|
+
return /* @__PURE__ */ jsx24(
|
|
14428
14509
|
"div",
|
|
14429
14510
|
{
|
|
14430
14511
|
"aria-hidden": "true",
|
|
@@ -14451,7 +14532,7 @@ function HierarchyDragIndicatorLayer({
|
|
|
14451
14532
|
);
|
|
14452
14533
|
}
|
|
14453
14534
|
const lineTop = preview.position === "before" ? indicator.top - 1 : indicator.top + indicator.height - 1;
|
|
14454
|
-
return /* @__PURE__ */
|
|
14535
|
+
return /* @__PURE__ */ jsx24(
|
|
14455
14536
|
"div",
|
|
14456
14537
|
{
|
|
14457
14538
|
"aria-hidden": "true",
|
|
@@ -14463,7 +14544,7 @@ function HierarchyDragIndicatorLayer({
|
|
|
14463
14544
|
width: Math.max(0, indicator.left + indicator.width - indent - 8)
|
|
14464
14545
|
},
|
|
14465
14546
|
children: /* @__PURE__ */ jsxs22("div", { className: "relative h-0.5 rounded-full bg-primary", children: [
|
|
14466
|
-
/* @__PURE__ */
|
|
14547
|
+
/* @__PURE__ */ jsx24("span", { className: "absolute -left-1 top-1/2 h-2 w-2 -translate-y-1/2 rounded-full border-2 border-primary bg-card" }),
|
|
14467
14548
|
/* @__PURE__ */ jsxs22(
|
|
14468
14549
|
"span",
|
|
14469
14550
|
{
|
|
@@ -14505,7 +14586,7 @@ function ColumnHeaderDropZone({
|
|
|
14505
14586
|
disabled: !enabled,
|
|
14506
14587
|
data: { matrxDragKind: "column-header", columnId: id }
|
|
14507
14588
|
});
|
|
14508
|
-
return /* @__PURE__ */
|
|
14589
|
+
return /* @__PURE__ */ jsx24("div", { ref: setNodeRef, className: "flex min-w-0 items-center", children });
|
|
14509
14590
|
}
|
|
14510
14591
|
function fixedUtilityWidth(width) {
|
|
14511
14592
|
return width === void 0 ? void 0 : { width: `${width}px`, minWidth: `${width}px`, maxWidth: `${width}px` };
|
|
@@ -14554,7 +14635,7 @@ function TableGroupHeaderRow({
|
|
|
14554
14635
|
const qualifier = sourceCount !== null || scope === "all" ? "" : scope === "page" ? " on this page" : " loaded";
|
|
14555
14636
|
const summary = `${formatCount10(count)} ${noun}${qualifier}`;
|
|
14556
14637
|
const [first, ...rest] = columns;
|
|
14557
|
-
return /* @__PURE__ */
|
|
14638
|
+
return /* @__PURE__ */ jsx24(
|
|
14558
14639
|
MatrxTableGroupHeaderRow,
|
|
14559
14640
|
{
|
|
14560
14641
|
groupKey: group.key,
|
|
@@ -14611,7 +14692,7 @@ function DefaultJsonCell({ value }) {
|
|
|
14611
14692
|
const summary = Array.isArray(value) ? `${value.length} items` : Object.keys(value).slice(0, 3).join(", ") || "Empty object";
|
|
14612
14693
|
return /* @__PURE__ */ jsxs22(Fragment15, { children: [
|
|
14613
14694
|
/* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
14614
|
-
/* @__PURE__ */
|
|
14695
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs22("button", { type: "button", className: "block max-w-full truncate text-left", onClick: (event) => {
|
|
14615
14696
|
event.stopPropagation();
|
|
14616
14697
|
setOpen(true);
|
|
14617
14698
|
}, style: { display: "-webkit-box", WebkitLineClamp: 2, WebkitBoxOrient: "vertical", overflow: "hidden", whiteSpace: "normal", overflowWrap: "anywhere" }, "aria-label": "Open JSON value", children: [
|
|
@@ -14619,9 +14700,9 @@ function DefaultJsonCell({ value }) {
|
|
|
14619
14700
|
" ",
|
|
14620
14701
|
summary
|
|
14621
14702
|
] }) }),
|
|
14622
|
-
/* @__PURE__ */
|
|
14703
|
+
/* @__PURE__ */ jsx24(TooltipContent, { className: "max-w-md max-h-80 overflow-auto whitespace-pre-wrap break-words", children: text })
|
|
14623
14704
|
] }),
|
|
14624
|
-
/* @__PURE__ */
|
|
14705
|
+
/* @__PURE__ */ jsx24(DataRowWindow, { isOpen: open, onClose: () => setOpen(false), title: "JSON value", row: value, viewContent: Viewer ? /* @__PURE__ */ jsx24(Viewer, { data: value }) : /* @__PURE__ */ jsx24("pre", { className: "overflow-auto whitespace-pre-wrap p-3 text-xs", children: text }) })
|
|
14625
14706
|
] });
|
|
14626
14707
|
}
|
|
14627
14708
|
function DefaultMarkerCell({
|
|
@@ -14631,7 +14712,7 @@ function DefaultMarkerCell({
|
|
|
14631
14712
|
const label = marker === "favorite" ? value ? "Favorite" : "Not favorite" : value ? "Pinned" : "Not pinned";
|
|
14632
14713
|
const Icon = marker === "favorite" ? StarIcon : PinIcon;
|
|
14633
14714
|
return /* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
14634
|
-
/* @__PURE__ */
|
|
14715
|
+
/* @__PURE__ */ jsx24(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx24(
|
|
14635
14716
|
"span",
|
|
14636
14717
|
{
|
|
14637
14718
|
role: "img",
|
|
@@ -14640,10 +14721,10 @@ function DefaultMarkerCell({
|
|
|
14640
14721
|
"inline-flex size-5 items-center justify-center",
|
|
14641
14722
|
value ? "text-amber-500" : "text-muted-foreground/45"
|
|
14642
14723
|
),
|
|
14643
|
-
children: /* @__PURE__ */
|
|
14724
|
+
children: /* @__PURE__ */ jsx24(Icon, { className: "size-4", ...value ? { fill: "currentColor" } : {} })
|
|
14644
14725
|
}
|
|
14645
14726
|
) }),
|
|
14646
|
-
/* @__PURE__ */
|
|
14727
|
+
/* @__PURE__ */ jsx24(TooltipContent, { children: label })
|
|
14647
14728
|
] });
|
|
14648
14729
|
}
|
|
14649
14730
|
function renderFooterCell(row, col, index) {
|
|
@@ -14653,7 +14734,7 @@ function renderFooterCell(row, col, index) {
|
|
|
14653
14734
|
function renderCell(row, col, index) {
|
|
14654
14735
|
if (col.loading?.(row)) {
|
|
14655
14736
|
const align = alignForFormat(col);
|
|
14656
|
-
return /* @__PURE__ */
|
|
14737
|
+
return /* @__PURE__ */ jsx24(
|
|
14657
14738
|
Skeleton,
|
|
14658
14739
|
{
|
|
14659
14740
|
"data-matrx-table-cell-loading": "",
|
|
@@ -14664,13 +14745,13 @@ function renderCell(row, col, index) {
|
|
|
14664
14745
|
if (col.cell) return col.cell(row, index);
|
|
14665
14746
|
const raw = getCellValue(row, col);
|
|
14666
14747
|
const formattedByDeclaration = formatColumnValue(col, raw);
|
|
14667
|
-
if (formattedByDeclaration) return /* @__PURE__ */
|
|
14748
|
+
if (formattedByDeclaration) return /* @__PURE__ */ jsx24(FormattedCell, { result: formattedByDeclaration });
|
|
14668
14749
|
const kind = col.cellKind ?? "auto";
|
|
14669
14750
|
const asUuid = kind === "uuid" || kind === "fk" || kind === "auto" && isUuidValue(raw);
|
|
14670
14751
|
if (asUuid && typeof raw === "string") {
|
|
14671
14752
|
const forbidden = typeof col.fk?.forbidden === "function" ? col.fk.forbidden(raw, row) : Boolean(col.fk?.forbidden);
|
|
14672
14753
|
const declaredToken = typeof col.fk?.token === "function" ? col.fk.token(row) : col.fk?.token;
|
|
14673
|
-
return /* @__PURE__ */
|
|
14754
|
+
return /* @__PURE__ */ jsx24(
|
|
14674
14755
|
RecordId,
|
|
14675
14756
|
{
|
|
14676
14757
|
value: raw,
|
|
@@ -14682,14 +14763,14 @@ function renderCell(row, col, index) {
|
|
|
14682
14763
|
}
|
|
14683
14764
|
);
|
|
14684
14765
|
}
|
|
14685
|
-
if (raw !== null && typeof raw === "object" && !(raw instanceof Date)) return /* @__PURE__ */
|
|
14766
|
+
if (raw !== null && typeof raw === "object" && !(raw instanceof Date)) return /* @__PURE__ */ jsx24(DefaultJsonCell, { value: raw });
|
|
14686
14767
|
if (typeof raw === "boolean") {
|
|
14687
14768
|
const marker = resolveColumnMarker(col);
|
|
14688
|
-
if (marker) return /* @__PURE__ */
|
|
14689
|
-
return /* @__PURE__ */
|
|
14769
|
+
if (marker) return /* @__PURE__ */ jsx24(DefaultMarkerCell, { marker, value: raw });
|
|
14770
|
+
return /* @__PURE__ */ jsx24("span", { className: raw ? "rounded bg-emerald-500/10 px-1.5 py-0.5 text-xs text-emerald-600" : "rounded bg-slate-500/10 px-1.5 py-0.5 text-xs text-muted-foreground", children: raw ? "Yes" : "No" });
|
|
14690
14771
|
}
|
|
14691
14772
|
const formatted = formatTableDisplayValue(raw);
|
|
14692
|
-
return /* @__PURE__ */
|
|
14773
|
+
return /* @__PURE__ */ jsx24("span", { className: "block", title: formatted, style: { display: "-webkit-box", WebkitLineClamp: 2, WebkitBoxOrient: "vertical", overflow: "hidden", overflowWrap: "anywhere" }, children: formatted });
|
|
14693
14774
|
}
|
|
14694
14775
|
function resolveStringTitle(title, fallback) {
|
|
14695
14776
|
if (typeof title === "string" && title.trim()) return title;
|
|
@@ -14699,7 +14780,7 @@ function resolveStringTitle(title, fallback) {
|
|
|
14699
14780
|
|
|
14700
14781
|
// src/data-table/MatrxTableCard.tsx
|
|
14701
14782
|
import { useMemo as useMemo9, useState as useState18 } from "react";
|
|
14702
|
-
import { Fragment as Fragment16, jsx as
|
|
14783
|
+
import { Fragment as Fragment16, jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
14703
14784
|
function nounText(noun) {
|
|
14704
14785
|
return `${noun.count.toLocaleString()} ${noun.count === 1 ? noun.singular : noun.plural}`;
|
|
14705
14786
|
}
|
|
@@ -14738,8 +14819,8 @@ function MatrxTableCard({
|
|
|
14738
14819
|
...facts ?? []
|
|
14739
14820
|
];
|
|
14740
14821
|
const ghostButton = cn(buttonVariants({ variant: "ghost", size: "sm" }), "h-8 gap-1 px-2");
|
|
14741
|
-
const renderLink = (href, className2, content) => Link ? /* @__PURE__ */
|
|
14742
|
-
return /* @__PURE__ */
|
|
14822
|
+
const renderLink = (href, className2, content) => Link ? /* @__PURE__ */ jsx25(Link, { href, className: className2, children: content }) : /* @__PURE__ */ jsx25("a", { href, className: className2, children: content });
|
|
14823
|
+
return /* @__PURE__ */ jsx25(MatrxTableCardContext.Provider, { value: context, children: /* @__PURE__ */ jsxs23(
|
|
14743
14824
|
"section",
|
|
14744
14825
|
{
|
|
14745
14826
|
"data-matrx-table-card": true,
|
|
@@ -14748,10 +14829,10 @@ function MatrxTableCard({
|
|
|
14748
14829
|
className
|
|
14749
14830
|
),
|
|
14750
14831
|
children: [
|
|
14751
|
-
railClassName ? /* @__PURE__ */
|
|
14832
|
+
railClassName ? /* @__PURE__ */ jsx25("span", { "aria-hidden": true, className: cn("absolute inset-y-0 left-0 w-1 opacity-70", railClassName) }) : null,
|
|
14752
14833
|
/* @__PURE__ */ jsxs23("header", { "data-matrx-table-card-header": true, className: "mb-4 flex flex-wrap items-start justify-between gap-3", children: [
|
|
14753
14834
|
/* @__PURE__ */ jsxs23("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
14754
|
-
icon ? /* @__PURE__ */
|
|
14835
|
+
icon ? /* @__PURE__ */ jsx25(
|
|
14755
14836
|
"div",
|
|
14756
14837
|
{
|
|
14757
14838
|
"aria-hidden": true,
|
|
@@ -14760,24 +14841,24 @@ function MatrxTableCard({
|
|
|
14760
14841
|
}
|
|
14761
14842
|
) : null,
|
|
14762
14843
|
/* @__PURE__ */ jsxs23("div", { className: "min-w-0", children: [
|
|
14763
|
-
/* @__PURE__ */
|
|
14764
|
-
countsLine.length > 0 ? /* @__PURE__ */
|
|
14844
|
+
/* @__PURE__ */ jsx25(Heading, { className: "truncate text-lg font-semibold text-foreground", children: title }),
|
|
14845
|
+
countsLine.length > 0 ? /* @__PURE__ */ jsx25("p", { "data-matrx-table-card-counts": true, className: "text-xs text-muted-foreground", children: countsLine.map((part, index) => /* @__PURE__ */ jsxs23("span", { children: [
|
|
14765
14846
|
index > 0 ? " \xB7 " : null,
|
|
14766
14847
|
part
|
|
14767
14848
|
] }, index)) }) : null
|
|
14768
14849
|
] })
|
|
14769
14850
|
] }),
|
|
14770
14851
|
/* @__PURE__ */ jsxs23("div", { "data-matrx-table-card-actions": true, className: "flex min-w-0 flex-auto flex-wrap items-center justify-end gap-1", children: [
|
|
14771
|
-
/* @__PURE__ */
|
|
14852
|
+
/* @__PURE__ */ jsx25("div", { ref: setToolbarSlot, "data-matrx-table-card-toolbar": true, className: "flex min-w-0 flex-auto justify-end empty:hidden" }),
|
|
14772
14853
|
headerActions,
|
|
14773
14854
|
edit ? "href" in edit ? renderLink(
|
|
14774
14855
|
edit.href,
|
|
14775
14856
|
ghostButton,
|
|
14776
14857
|
/* @__PURE__ */ jsxs23(Fragment16, { children: [
|
|
14777
|
-
/* @__PURE__ */
|
|
14778
|
-
/* @__PURE__ */
|
|
14858
|
+
/* @__PURE__ */ jsx25(PencilIcon, { className: "h-3.5 w-3.5" }),
|
|
14859
|
+
/* @__PURE__ */ jsx25("span", { className: "sr-only", children: edit.label ?? `Edit ${title}` })
|
|
14779
14860
|
] })
|
|
14780
|
-
) : /* @__PURE__ */
|
|
14861
|
+
) : /* @__PURE__ */ jsx25(
|
|
14781
14862
|
"button",
|
|
14782
14863
|
{
|
|
14783
14864
|
type: "button",
|
|
@@ -14785,7 +14866,7 @@ function MatrxTableCard({
|
|
|
14785
14866
|
onClick: edit.onEdit,
|
|
14786
14867
|
"aria-label": edit.label ?? `Edit ${title}`,
|
|
14787
14868
|
title: edit.label ?? `Edit ${title}`,
|
|
14788
|
-
children: /* @__PURE__ */
|
|
14869
|
+
children: /* @__PURE__ */ jsx25(PencilIcon, { className: "h-3.5 w-3.5" })
|
|
14789
14870
|
}
|
|
14790
14871
|
) : null,
|
|
14791
14872
|
open ? renderLink(
|
|
@@ -14793,32 +14874,32 @@ function MatrxTableCard({
|
|
|
14793
14874
|
ghostButton,
|
|
14794
14875
|
/* @__PURE__ */ jsxs23(Fragment16, { children: [
|
|
14795
14876
|
open.label ?? "Open",
|
|
14796
|
-
/* @__PURE__ */
|
|
14797
|
-
/* @__PURE__ */
|
|
14877
|
+
/* @__PURE__ */ jsx25(ChevronRightIcon, { className: "h-3.5 w-3.5" }),
|
|
14878
|
+
/* @__PURE__ */ jsx25("span", { className: "sr-only", children: ` ${title}` })
|
|
14798
14879
|
] })
|
|
14799
14880
|
) : null
|
|
14800
14881
|
] })
|
|
14801
14882
|
] }),
|
|
14802
|
-
/* @__PURE__ */
|
|
14883
|
+
/* @__PURE__ */ jsx25("div", { "data-matrx-table-card-body": true, className: "-mx-2 min-w-0", children }),
|
|
14803
14884
|
/* @__PURE__ */ jsxs23(
|
|
14804
14885
|
"footer",
|
|
14805
14886
|
{
|
|
14806
14887
|
"data-matrx-table-card-footer": true,
|
|
14807
14888
|
className: cn("flex flex-wrap items-center justify-between gap-2", (add || adding) && "mt-3"),
|
|
14808
14889
|
children: [
|
|
14809
|
-
adding ? /* @__PURE__ */
|
|
14890
|
+
adding ? /* @__PURE__ */ jsx25("div", { className: "w-full", children: adding }) : add ? /* @__PURE__ */ jsxs23(
|
|
14810
14891
|
"button",
|
|
14811
14892
|
{
|
|
14812
14893
|
type: "button",
|
|
14813
14894
|
onClick: add.onAdd,
|
|
14814
14895
|
className: cn(ghostButton, "text-muted-foreground hover:text-foreground"),
|
|
14815
14896
|
children: [
|
|
14816
|
-
/* @__PURE__ */
|
|
14897
|
+
/* @__PURE__ */ jsx25(PlusIcon, { className: "h-3.5 w-3.5" }),
|
|
14817
14898
|
add.label
|
|
14818
14899
|
]
|
|
14819
14900
|
}
|
|
14820
14901
|
) : null,
|
|
14821
|
-
/* @__PURE__ */
|
|
14902
|
+
/* @__PURE__ */ jsx25("div", { ref: setFooterSlot, "data-matrx-table-card-pager": true, className: "ml-auto flex items-center gap-2 empty:hidden" })
|
|
14822
14903
|
]
|
|
14823
14904
|
}
|
|
14824
14905
|
)
|
|
@@ -14828,9 +14909,9 @@ function MatrxTableCard({
|
|
|
14828
14909
|
}
|
|
14829
14910
|
function MatrxTableCardEmpty({ message, action, children }) {
|
|
14830
14911
|
return /* @__PURE__ */ jsxs23("div", { "data-matrx-table-card-empty": true, className: "mx-2 rounded-lg border-2 border-dashed border-border py-6 text-center", children: [
|
|
14831
|
-
/* @__PURE__ */
|
|
14912
|
+
/* @__PURE__ */ jsx25("p", { className: "mb-3 text-sm text-muted-foreground", children: message }),
|
|
14832
14913
|
action ? /* @__PURE__ */ jsxs23("button", { type: "button", onClick: action.onClick, className: cn(buttonVariants({ size: "sm" }), "gap-1.5"), children: [
|
|
14833
|
-
/* @__PURE__ */
|
|
14914
|
+
/* @__PURE__ */ jsx25(PlusIcon, { className: "h-3.5 w-3.5" }),
|
|
14834
14915
|
action.label
|
|
14835
14916
|
] }) : null,
|
|
14836
14917
|
children
|
|
@@ -14839,7 +14920,7 @@ function MatrxTableCardEmpty({ message, action, children }) {
|
|
|
14839
14920
|
|
|
14840
14921
|
// src/data-table/SavedViewsControl.tsx
|
|
14841
14922
|
import { useId as useId3, useState as useState19 } from "react";
|
|
14842
|
-
import { Fragment as Fragment17, jsx as
|
|
14923
|
+
import { Fragment as Fragment17, jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
14843
14924
|
function SavedViewsControl({
|
|
14844
14925
|
views,
|
|
14845
14926
|
activeId = null,
|
|
@@ -14933,7 +15014,7 @@ function SavedViewsControl({
|
|
|
14933
15014
|
const activeName = activeId ? views.find((view) => view.id === activeId)?.name : void 0;
|
|
14934
15015
|
return /* @__PURE__ */ jsxs24("div", { className: "flex min-w-0 flex-wrap items-center gap-1", "data-matrx-table-saved-views": true, children: [
|
|
14935
15016
|
presentation === "tabs" ? /* @__PURE__ */ jsxs24(Fragment17, { children: [
|
|
14936
|
-
/* @__PURE__ */
|
|
15017
|
+
/* @__PURE__ */ jsx26(
|
|
14937
15018
|
TableViewTabs,
|
|
14938
15019
|
{
|
|
14939
15020
|
tabs: [{ id: "default", label: "Default view" }, ...views.map((view) => ({ id: view.id, label: view.name }))],
|
|
@@ -14954,10 +15035,10 @@ function SavedViewsControl({
|
|
|
14954
15035
|
related
|
|
14955
15036
|
}
|
|
14956
15037
|
),
|
|
14957
|
-
loading ? /* @__PURE__ */
|
|
15038
|
+
loading ? /* @__PURE__ */ jsx26("span", { role: "status", className: "text-xs text-muted-foreground", children: "Loading views\u2026" }) : null
|
|
14958
15039
|
] }) : /* @__PURE__ */ jsxs24(DropdownMenu, { children: [
|
|
14959
15040
|
/* @__PURE__ */ jsxs24(Tooltip, { children: [
|
|
14960
|
-
/* @__PURE__ */
|
|
15041
|
+
/* @__PURE__ */ jsx26(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx26(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs24(
|
|
14961
15042
|
Button2,
|
|
14962
15043
|
{
|
|
14963
15044
|
variant: "quiet",
|
|
@@ -14965,74 +15046,74 @@ function SavedViewsControl({
|
|
|
14965
15046
|
"aria-label": `Table view: ${loading ? "Loading views" : activeName ?? "Default view"}${dirty ? ", unsaved changes" : ""}`,
|
|
14966
15047
|
"aria-describedby": dirty ? unsavedChangesId : void 0,
|
|
14967
15048
|
disabled: saving,
|
|
14968
|
-
iconEnd: /* @__PURE__ */
|
|
15049
|
+
iconEnd: /* @__PURE__ */ jsx26(ChevronDownIcon, { "aria-hidden": "true" }),
|
|
14969
15050
|
children: [
|
|
14970
|
-
/* @__PURE__ */
|
|
14971
|
-
dirty ? /* @__PURE__ */
|
|
15051
|
+
/* @__PURE__ */ jsx26("span", { className: "min-w-0 flex-1 truncate", children: loading ? "Loading views\u2026" : activeName ?? "Default view" }),
|
|
15052
|
+
dirty ? /* @__PURE__ */ jsx26("span", { "aria-hidden": "true", className: "size-1.5 shrink-0 rounded-full bg-amber-500" }) : null
|
|
14972
15053
|
]
|
|
14973
15054
|
}
|
|
14974
15055
|
) }) }),
|
|
14975
|
-
/* @__PURE__ */
|
|
15056
|
+
/* @__PURE__ */ jsx26(TooltipContent, { children: "Choose or save a table view" })
|
|
14976
15057
|
] }),
|
|
14977
15058
|
/* @__PURE__ */ jsxs24(DropdownMenuContent, { align: "end", children: [
|
|
14978
|
-
/* @__PURE__ */
|
|
15059
|
+
/* @__PURE__ */ jsx26(DropdownMenuLabel, { children: "Views" }),
|
|
14979
15060
|
/* @__PURE__ */ jsxs24(DropdownMenuRadioGroup, { value: activeId ?? "__default__", onValueChange: (value) => select(value === "__default__" ? null : value), children: [
|
|
14980
|
-
/* @__PURE__ */
|
|
14981
|
-
views.map((view) => /* @__PURE__ */
|
|
15061
|
+
/* @__PURE__ */ jsx26(DropdownMenuRadioItem, { value: "__default__", children: "Default view" }),
|
|
15062
|
+
views.map((view) => /* @__PURE__ */ jsx26(DropdownMenuRadioItem, { value: view.id, children: view.name }, view.id))
|
|
14982
15063
|
] }),
|
|
14983
|
-
/* @__PURE__ */
|
|
14984
|
-
/* @__PURE__ */
|
|
15064
|
+
/* @__PURE__ */ jsx26(DropdownMenuSeparator, {}),
|
|
15065
|
+
/* @__PURE__ */ jsx26(DropdownMenuItem, { disabled: saving, onSelect: () => {
|
|
14985
15066
|
setActionError(null);
|
|
14986
15067
|
setSaveOpen(true);
|
|
14987
15068
|
}, children: "Save current view\u2026" }),
|
|
14988
|
-
activeId && onUpdate ? /* @__PURE__ */
|
|
14989
|
-
activeId && onRemove ? /* @__PURE__ */
|
|
14990
|
-
onReload ? /* @__PURE__ */
|
|
15069
|
+
activeId && onUpdate ? /* @__PURE__ */ jsx26(DropdownMenuItem, { disabled: saving, onSelect: () => void update(), children: "Update current view" }) : null,
|
|
15070
|
+
activeId && onRemove ? /* @__PURE__ */ jsx26(DropdownMenuItem, { disabled: saving || removing, onSelect: () => requestRemove(activeId), children: "Delete current view\u2026" }) : null,
|
|
15071
|
+
onReload ? /* @__PURE__ */ jsx26(DropdownMenuItem, { disabled: saving || loading, onSelect: () => void reload(), children: "Reload views" }) : null
|
|
14991
15072
|
] })
|
|
14992
15073
|
] }),
|
|
14993
|
-
dirty ? /* @__PURE__ */
|
|
14994
|
-
dirty ? onUpdate ? /* @__PURE__ */
|
|
14995
|
-
visibleError && !saveOpen && !pendingRemove ? /* @__PURE__ */
|
|
14996
|
-
/* @__PURE__ */
|
|
14997
|
-
/* @__PURE__ */
|
|
14998
|
-
visibleError ? /* @__PURE__ */
|
|
14999
|
-
/* @__PURE__ */
|
|
15074
|
+
dirty ? /* @__PURE__ */ jsx26("span", { id: unsavedChangesId, role: "status", className: "sr-only", children: "Unsaved changes" }) : null,
|
|
15075
|
+
dirty ? onUpdate ? /* @__PURE__ */ jsx26(Button2, { variant: "quiet", disabled: saving, onClick: () => void update(), children: "Save changes" }) : /* @__PURE__ */ jsx26(Button2, { variant: "quiet", disabled: saving, onClick: () => setSaveOpen(true), children: "Save as view" }) : null,
|
|
15076
|
+
visibleError && !saveOpen && !pendingRemove ? /* @__PURE__ */ jsx26(ErrorBox, { className: "basis-full break-words text-xs text-destructive-ink", message: visibleError, operation: "Load or save a saved view", origin: "design-system/SavedViewsControl" }) : null,
|
|
15077
|
+
/* @__PURE__ */ jsx26(Dialog, { open: saveOpen, onOpenChange: setSaveOpen, children: /* @__PURE__ */ jsxs24(DialogContent, { children: [
|
|
15078
|
+
/* @__PURE__ */ jsx26(DialogHeader, { children: /* @__PURE__ */ jsx26(DialogTitle, { children: "Save current view" }) }),
|
|
15079
|
+
visibleError ? /* @__PURE__ */ jsx26(ErrorBox, { className: "text-sm text-destructive-ink", message: visibleError, operation: "Save a view", origin: "design-system/SavedViewsControl" }) : null,
|
|
15080
|
+
/* @__PURE__ */ jsx26(Input, { "aria-label": "View name", value: name, onChange: (event) => setName(event.target.value), placeholder: "View name", autoFocus: true }),
|
|
15000
15081
|
/* @__PURE__ */ jsxs24(DialogFooter, { children: [
|
|
15001
|
-
/* @__PURE__ */
|
|
15002
|
-
/* @__PURE__ */
|
|
15082
|
+
/* @__PURE__ */ jsx26(Button, { type: "button", variant: "outline", onClick: () => setSaveOpen(false), children: "Cancel" }),
|
|
15083
|
+
/* @__PURE__ */ jsx26(Button, { type: "button", disabled: !name.trim() || saving, onClick: () => void save(), children: saving ? "Saving\u2026" : "Save view" })
|
|
15003
15084
|
] })
|
|
15004
15085
|
] }) }),
|
|
15005
|
-
/* @__PURE__ */
|
|
15086
|
+
/* @__PURE__ */ jsx26(Dialog, { open: pendingSelect !== void 0, onOpenChange: (open) => {
|
|
15006
15087
|
if (!open) setPendingSelect(void 0);
|
|
15007
15088
|
}, children: /* @__PURE__ */ jsxs24(DialogContent, { children: [
|
|
15008
|
-
/* @__PURE__ */
|
|
15009
|
-
/* @__PURE__ */
|
|
15089
|
+
/* @__PURE__ */ jsx26(DialogHeader, { children: /* @__PURE__ */ jsx26(DialogTitle, { children: "Unsaved view changes" }) }),
|
|
15090
|
+
/* @__PURE__ */ jsx26(DialogDescription, { children: "Switching views will discard the changes you have not saved." }),
|
|
15010
15091
|
/* @__PURE__ */ jsxs24(DialogFooter, { children: [
|
|
15011
|
-
/* @__PURE__ */
|
|
15012
|
-
/* @__PURE__ */
|
|
15092
|
+
/* @__PURE__ */ jsx26(Button, { type: "button", variant: "outline", onClick: () => setPendingSelect(void 0), children: "Stay on this view" }),
|
|
15093
|
+
/* @__PURE__ */ jsx26(Button, { type: "button", onClick: () => {
|
|
15013
15094
|
const next = pendingSelect;
|
|
15014
15095
|
setPendingSelect(void 0);
|
|
15015
15096
|
if (next !== void 0) onSelect(next);
|
|
15016
15097
|
}, children: "Discard changes and switch" })
|
|
15017
15098
|
] })
|
|
15018
15099
|
] }) }),
|
|
15019
|
-
/* @__PURE__ */
|
|
15100
|
+
/* @__PURE__ */ jsx26(Dialog, { open: pendingRemove !== null, onOpenChange: (open) => {
|
|
15020
15101
|
if (!open && !removing) setPendingRemove(null);
|
|
15021
15102
|
}, children: /* @__PURE__ */ jsxs24(DialogContent, { children: [
|
|
15022
|
-
/* @__PURE__ */
|
|
15103
|
+
/* @__PURE__ */ jsx26(DialogHeader, { children: /* @__PURE__ */ jsxs24(DialogTitle, { children: [
|
|
15023
15104
|
"Delete ",
|
|
15024
15105
|
pendingRemove ? `\u201C${pendingRemove.name}\u201D` : "saved view",
|
|
15025
15106
|
"?"
|
|
15026
15107
|
] }) }),
|
|
15027
|
-
actionError ? /* @__PURE__ */
|
|
15108
|
+
actionError ? /* @__PURE__ */ jsx26(ErrorBox, { className: "text-sm text-destructive-ink", message: actionError, operation: "Delete a saved view", origin: "design-system/SavedViewsControl" }) : null,
|
|
15028
15109
|
/* @__PURE__ */ jsxs24(DialogDescription, { children: [
|
|
15029
15110
|
"This removes the saved view from your account",
|
|
15030
15111
|
activeId === pendingRemove?.id && dirty ? " and discards its unsaved layout changes" : "",
|
|
15031
15112
|
"."
|
|
15032
15113
|
] }),
|
|
15033
15114
|
/* @__PURE__ */ jsxs24(DialogFooter, { children: [
|
|
15034
|
-
/* @__PURE__ */
|
|
15035
|
-
/* @__PURE__ */
|
|
15115
|
+
/* @__PURE__ */ jsx26(Button, { type: "button", variant: "outline", disabled: removing, onClick: () => setPendingRemove(null), children: "Cancel" }),
|
|
15116
|
+
/* @__PURE__ */ jsx26(Button, { type: "button", variant: "destructive", disabled: removing, onClick: () => void remove(), children: removing ? "Deleting\u2026" : "Delete view" })
|
|
15036
15117
|
] })
|
|
15037
15118
|
] }) })
|
|
15038
15119
|
] });
|
|
@@ -15117,7 +15198,7 @@ function comparisonGridRecords(grid) {
|
|
|
15117
15198
|
}
|
|
15118
15199
|
|
|
15119
15200
|
// src/data-table/MatrxComparisonTable.tsx
|
|
15120
|
-
import { jsx as
|
|
15201
|
+
import { jsx as jsx27, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
15121
15202
|
var ROW_COLUMN_ID = "__comparison_row";
|
|
15122
15203
|
var subjectColumnId = (subject) => `subject:${subject.id}`;
|
|
15123
15204
|
function buildGridRows(rows, subjects, footer) {
|
|
@@ -15131,7 +15212,7 @@ function buildGridRows(rows, subjects, footer) {
|
|
|
15131
15212
|
});
|
|
15132
15213
|
}
|
|
15133
15214
|
function PlaceBadge({ place }) {
|
|
15134
|
-
return /* @__PURE__ */
|
|
15215
|
+
return /* @__PURE__ */ jsx27(Badge, { tone: place === 1 ? "success" : "neutral", title: `${comparisonOrdinal(place)} place on this row`, children: comparisonOrdinal(place) });
|
|
15135
15216
|
}
|
|
15136
15217
|
function MatrxComparisonTable({
|
|
15137
15218
|
subjects: rawSubjects,
|
|
@@ -15180,11 +15261,11 @@ function MatrxComparisonTable({
|
|
|
15180
15261
|
minWidth: 120,
|
|
15181
15262
|
accessorFn: (line) => line.row.label,
|
|
15182
15263
|
copyValue: (line) => line.row.label,
|
|
15183
|
-
cell: (line) => line.row.header ?? /* @__PURE__ */
|
|
15264
|
+
cell: (line) => line.row.header ?? /* @__PURE__ */ jsx27("span", { className: line.row.emphasized || line.footer ? "font-semibold text-foreground" : "text-foreground", children: line.row.label })
|
|
15184
15265
|
},
|
|
15185
15266
|
...subjects.map((subject, index) => ({
|
|
15186
15267
|
id: subjectColumnId(subject),
|
|
15187
|
-
header: subject.header ? /* @__PURE__ */
|
|
15268
|
+
header: subject.header ? /* @__PURE__ */ jsx27("span", { title: subject.title, children: subject.header }) : /* @__PURE__ */ jsx27("span", { title: subject.title, children: subject.label }),
|
|
15188
15269
|
label: subject.label,
|
|
15189
15270
|
width: subjectWidth,
|
|
15190
15271
|
minWidth: 96,
|
|
@@ -15200,7 +15281,7 @@ function MatrxComparisonTable({
|
|
|
15200
15281
|
},
|
|
15201
15282
|
cell: (line) => {
|
|
15202
15283
|
const cell = line.cells[index];
|
|
15203
|
-
if (!cell) return /* @__PURE__ */
|
|
15284
|
+
if (!cell) return /* @__PURE__ */ jsx27("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
15204
15285
|
const place = places ? line.ranking.places[subject.id] : null;
|
|
15205
15286
|
return /* @__PURE__ */ jsxs25(
|
|
15206
15287
|
"span",
|
|
@@ -15208,8 +15289,8 @@ function MatrxComparisonTable({
|
|
|
15208
15289
|
className: align === "right" ? "inline-flex items-center justify-end gap-1.5" : "inline-flex items-center gap-1.5",
|
|
15209
15290
|
"data-comparison-highlight": line.ranking.highlights[subject.id] ?? void 0,
|
|
15210
15291
|
children: [
|
|
15211
|
-
cell.node ?? /* @__PURE__ */
|
|
15212
|
-
place != null ? /* @__PURE__ */
|
|
15292
|
+
cell.node ?? /* @__PURE__ */ jsx27("span", { children: cell.text }),
|
|
15293
|
+
place != null ? /* @__PURE__ */ jsx27(PlaceBadge, { place }) : null
|
|
15213
15294
|
]
|
|
15214
15295
|
}
|
|
15215
15296
|
);
|
|
@@ -15261,7 +15342,7 @@ function MatrxComparisonTable({
|
|
|
15261
15342
|
};
|
|
15262
15343
|
}
|
|
15263
15344
|
};
|
|
15264
|
-
return /* @__PURE__ */
|
|
15345
|
+
return /* @__PURE__ */ jsx27(
|
|
15265
15346
|
MatrxDataTable,
|
|
15266
15347
|
{
|
|
15267
15348
|
data,
|
|
@@ -15292,8 +15373,8 @@ function MatrxComparisonTable({
|
|
|
15292
15373
|
}
|
|
15293
15374
|
|
|
15294
15375
|
// src/data-table/MatrxBatchGrid.tsx
|
|
15295
|
-
import { useLayoutEffect as useLayoutEffect3, useRef as
|
|
15296
|
-
import { Fragment as Fragment18, jsx as
|
|
15376
|
+
import { useLayoutEffect as useLayoutEffect3, useRef as useRef16, useState as useState20 } from "react";
|
|
15377
|
+
import { Fragment as Fragment18, jsx as jsx28, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
15297
15378
|
var BATCH_COLUMN_FLOOR_CAP_PX = 480;
|
|
15298
15379
|
function freeColumnId(wanted, fallback, taken) {
|
|
15299
15380
|
if (!taken.has(wanted)) return wanted;
|
|
@@ -15309,13 +15390,13 @@ var TONE_CLASS = {
|
|
|
15309
15390
|
};
|
|
15310
15391
|
function BatchRowStatusIcon({ status }) {
|
|
15311
15392
|
const Glyph = status.tone === "ready" ? CircleCheck : AlertTriangleIcon;
|
|
15312
|
-
return /* @__PURE__ */
|
|
15393
|
+
return /* @__PURE__ */ jsx28("span", { role: "img", "aria-label": status.label, title: status.label, "data-matrx-batch-status": status.tone, children: /* @__PURE__ */ jsx28(Glyph, { className: cn("h-4 w-4 shrink-0", TONE_CLASS[status.tone]) }) });
|
|
15313
15394
|
}
|
|
15314
15395
|
function BatchRowKindBadge({
|
|
15315
15396
|
kind,
|
|
15316
15397
|
words
|
|
15317
15398
|
}) {
|
|
15318
|
-
return /* @__PURE__ */
|
|
15399
|
+
return /* @__PURE__ */ jsx28(
|
|
15319
15400
|
"span",
|
|
15320
15401
|
{
|
|
15321
15402
|
"data-matrx-batch-kind": kind,
|
|
@@ -15333,12 +15414,12 @@ function BatchFillButton({ fill, disabled }) {
|
|
|
15333
15414
|
const [value, setValue] = useState20(void 0);
|
|
15334
15415
|
const stop = (event) => event.stopPropagation();
|
|
15335
15416
|
return /* @__PURE__ */ jsxs26(Popover, { open, onOpenChange: setOpen, children: [
|
|
15336
|
-
/* @__PURE__ */
|
|
15417
|
+
/* @__PURE__ */ jsx28(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx28(
|
|
15337
15418
|
Button2,
|
|
15338
15419
|
{
|
|
15339
15420
|
type: "button",
|
|
15340
15421
|
variant: "quiet",
|
|
15341
|
-
icon: /* @__PURE__ */
|
|
15422
|
+
icon: /* @__PURE__ */ jsx28(ArrowDownToLine, { className: "h-3.5 w-3.5" }),
|
|
15342
15423
|
disabled,
|
|
15343
15424
|
"data-matrx-batch-fill": true,
|
|
15344
15425
|
title: fill.title,
|
|
@@ -15362,9 +15443,9 @@ function BatchFillButton({ fill, disabled }) {
|
|
|
15362
15443
|
onPointerDown: stop,
|
|
15363
15444
|
onMouseDown: stop,
|
|
15364
15445
|
children: [
|
|
15365
|
-
/* @__PURE__ */
|
|
15446
|
+
/* @__PURE__ */ jsx28("p", { className: "type-meta text-muted-foreground", children: fill.limits }),
|
|
15366
15447
|
fill.renderControl(value, setValue),
|
|
15367
|
-
/* @__PURE__ */
|
|
15448
|
+
/* @__PURE__ */ jsx28(
|
|
15368
15449
|
Button,
|
|
15369
15450
|
{
|
|
15370
15451
|
type: "button",
|
|
@@ -15386,12 +15467,12 @@ function ColumnHeader({ column, disabled }) {
|
|
|
15386
15467
|
return /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 items-start gap-1.5", "data-matrx-batch-header": column.id, children: [
|
|
15387
15468
|
/* @__PURE__ */ jsxs26("span", { className: "min-w-0", children: [
|
|
15388
15469
|
/* @__PURE__ */ jsxs26("span", { className: "flex items-center gap-1", children: [
|
|
15389
|
-
/* @__PURE__ */
|
|
15390
|
-
column.required ? /* @__PURE__ */
|
|
15470
|
+
/* @__PURE__ */ jsx28("span", { className: "truncate", children: column.header }),
|
|
15471
|
+
column.required ? /* @__PURE__ */ jsx28("span", { className: "text-destructive-ink", title: "Required", "aria-label": "Required", children: "*" }) : null
|
|
15391
15472
|
] }),
|
|
15392
|
-
column.caption ? /* @__PURE__ */
|
|
15473
|
+
column.caption ? /* @__PURE__ */ jsx28("span", { className: "type-meta block truncate font-normal normal-case tracking-normal text-muted-foreground", children: column.caption }) : null
|
|
15393
15474
|
] }),
|
|
15394
|
-
column.fill ? /* @__PURE__ */
|
|
15475
|
+
column.fill ? /* @__PURE__ */ jsx28("span", { className: "ml-auto pt-0.5", children: /* @__PURE__ */ jsx28(BatchFillButton, { fill: column.fill, disabled }) }) : null
|
|
15395
15476
|
] });
|
|
15396
15477
|
}
|
|
15397
15478
|
function MatrxBatchGrid({
|
|
@@ -15421,7 +15502,7 @@ function MatrxBatchGrid({
|
|
|
15421
15502
|
const host = useMatrxDataTableHost();
|
|
15422
15503
|
const density = ownDensity ?? host.defaultDensity ?? "condensed";
|
|
15423
15504
|
const [folded, setFolded] = useState20(/* @__PURE__ */ new Set());
|
|
15424
|
-
const gridRef =
|
|
15505
|
+
const gridRef = useRef16(null);
|
|
15425
15506
|
const [floors, setFloors] = useState20({});
|
|
15426
15507
|
useLayoutEffect3(() => {
|
|
15427
15508
|
const root = gridRef.current;
|
|
@@ -15467,10 +15548,10 @@ function MatrxBatchGrid({
|
|
|
15467
15548
|
const health = status?.(row) ?? null;
|
|
15468
15549
|
const rowKind = kind?.(row) ?? null;
|
|
15469
15550
|
return /* @__PURE__ */ jsxs26("span", { className: "flex min-w-0 items-center gap-2", "data-matrx-batch-row": id, children: [
|
|
15470
|
-
done ? /* @__PURE__ */
|
|
15471
|
-
rowKind ? /* @__PURE__ */
|
|
15472
|
-
/* @__PURE__ */
|
|
15473
|
-
done ? /* @__PURE__ */
|
|
15551
|
+
done ? /* @__PURE__ */ jsx28(BatchRowStatusIcon, { status: { tone: "ready", label: doneLabel } }) : health ? /* @__PURE__ */ jsx28(BatchRowStatusIcon, { status: health }) : null,
|
|
15552
|
+
rowKind ? /* @__PURE__ */ jsx28(BatchRowKindBadge, { kind: rowKind, words: kindWords }) : null,
|
|
15553
|
+
/* @__PURE__ */ jsx28("span", { className: "min-w-0 flex-1", children: rowHeader.render ? rowHeader.render(row) : rowHeader.label(row) }),
|
|
15554
|
+
done ? /* @__PURE__ */ jsx28("span", { className: "type-meta shrink-0 text-success-ink", children: doneLabel }) : null
|
|
15474
15555
|
] });
|
|
15475
15556
|
}
|
|
15476
15557
|
};
|
|
@@ -15478,7 +15559,7 @@ function MatrxBatchGrid({
|
|
|
15478
15559
|
const typed = column.type !== void 0 && column.render === void 0;
|
|
15479
15560
|
const def = {
|
|
15480
15561
|
id: column.id,
|
|
15481
|
-
header: /* @__PURE__ */
|
|
15562
|
+
header: /* @__PURE__ */ jsx28(ColumnHeader, { column, disabled }),
|
|
15482
15563
|
label: column.header,
|
|
15483
15564
|
...column.helpText ? { helpText: column.helpText } : {},
|
|
15484
15565
|
accessorFn: (row) => banded(row) ? null : column.read(row),
|
|
@@ -15497,7 +15578,7 @@ function MatrxBatchGrid({
|
|
|
15497
15578
|
def.editableIf = (row) => !banded(row) && (column.editableIf ? column.editableIf(row) : true);
|
|
15498
15579
|
} else if (column.render) {
|
|
15499
15580
|
const draw = column.render;
|
|
15500
|
-
def.cell = (row) => banded(row) ? null : /* @__PURE__ */
|
|
15581
|
+
def.cell = (row) => banded(row) ? null : /* @__PURE__ */ jsx28("div", { ...{ [CELL_EDITOR_ATTR]: "" }, "data-matrx-batch-cell": column.id, className: "min-w-0", children: draw(row) });
|
|
15501
15582
|
}
|
|
15502
15583
|
return def;
|
|
15503
15584
|
});
|
|
@@ -15530,7 +15611,7 @@ function MatrxBatchGrid({
|
|
|
15530
15611
|
data.map(getRowId).filter((id) => !folded.has(id) && hasDetail(byId.get(id)))
|
|
15531
15612
|
);
|
|
15532
15613
|
return /* @__PURE__ */ jsxs26("div", { ref: gridRef, className: "min-w-0", "data-matrx-batch-grid": tableId, children: [
|
|
15533
|
-
/* @__PURE__ */
|
|
15614
|
+
/* @__PURE__ */ jsx28(
|
|
15534
15615
|
MatrxDataTable,
|
|
15535
15616
|
{
|
|
15536
15617
|
tableId,
|
|
@@ -15586,8 +15667,8 @@ function MatrxBatchGrid({
|
|
|
15586
15667
|
onExpandedIdsChange: (next) => setFolded(new Set(data.map(getRowId).filter((id) => !next.has(id)))),
|
|
15587
15668
|
canExpand: hasDetail,
|
|
15588
15669
|
render: (row) => /* @__PURE__ */ jsxs26(Fragment18, { children: [
|
|
15589
|
-
banded(row) ? /* @__PURE__ */
|
|
15590
|
-
notesOf(row).length > 0 ? /* @__PURE__ */
|
|
15670
|
+
banded(row) ? /* @__PURE__ */ jsx28("div", { "data-matrx-batch-band": true, className: "px-3 py-1.5 text-sm text-muted-foreground", children: bandOf(row) }) : null,
|
|
15671
|
+
notesOf(row).length > 0 ? /* @__PURE__ */ jsx28(BatchRowNotes, { notes: notesOf(row) }) : null
|
|
15591
15672
|
] })
|
|
15592
15673
|
},
|
|
15593
15674
|
...onRemoveRow ? {
|
|
@@ -15607,12 +15688,12 @@ function MatrxBatchGrid({
|
|
|
15607
15688
|
} : {}
|
|
15608
15689
|
}
|
|
15609
15690
|
),
|
|
15610
|
-
footnote ? /* @__PURE__ */
|
|
15691
|
+
footnote ? /* @__PURE__ */ jsx28("div", { className: "type-meta px-3 py-2 text-muted-foreground", children: footnote }) : null
|
|
15611
15692
|
] });
|
|
15612
15693
|
}
|
|
15613
15694
|
function BatchRowNotes({ notes }) {
|
|
15614
15695
|
const blocked = notes.some((note) => note.tone === "blocked");
|
|
15615
|
-
return /* @__PURE__ */
|
|
15696
|
+
return /* @__PURE__ */ jsx28(
|
|
15616
15697
|
"ul",
|
|
15617
15698
|
{
|
|
15618
15699
|
"data-matrx-batch-notes": true,
|
|
@@ -15621,8 +15702,8 @@ function BatchRowNotes({ notes }) {
|
|
|
15621
15702
|
blocked ? "bg-destructive/5" : "bg-warning/10"
|
|
15622
15703
|
),
|
|
15623
15704
|
children: notes.map((note) => /* @__PURE__ */ jsxs26("li", { className: "flex items-start gap-1.5", children: [
|
|
15624
|
-
/* @__PURE__ */
|
|
15625
|
-
/* @__PURE__ */
|
|
15705
|
+
/* @__PURE__ */ jsx28(AlertTriangleIcon, { className: cn("mt-0.5 h-3.5 w-3.5 shrink-0", note.tone === "blocked" ? "text-destructive-ink" : "text-warning-ink") }),
|
|
15706
|
+
/* @__PURE__ */ jsx28("span", { children: note.text })
|
|
15626
15707
|
] }, note.text))
|
|
15627
15708
|
}
|
|
15628
15709
|
);
|
|
@@ -15700,14 +15781,14 @@ function detailGridText(rows, columns, labelHeader = "Field") {
|
|
|
15700
15781
|
}
|
|
15701
15782
|
|
|
15702
15783
|
// src/data-table/MatrxDetailGrid.tsx
|
|
15703
|
-
import { Fragment as Fragment19, jsx as
|
|
15784
|
+
import { Fragment as Fragment19, jsx as jsx29, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
15704
15785
|
var DEFAULT_COLUMNS = [{ key: "value", label: "Value" }];
|
|
15705
15786
|
var DEFAULT_CLAMP = 400;
|
|
15706
15787
|
function JsonValue({ data }) {
|
|
15707
15788
|
const host = useMatrxDataTableHost();
|
|
15708
15789
|
const Viewer = host.JsonViewer;
|
|
15709
|
-
if (Viewer) return /* @__PURE__ */
|
|
15710
|
-
return /* @__PURE__ */
|
|
15790
|
+
if (Viewer) return /* @__PURE__ */ jsx29(Viewer, { data });
|
|
15791
|
+
return /* @__PURE__ */ jsx29("pre", { className: "max-h-96 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted/40 p-2 font-mono text-xs leading-relaxed text-foreground", children: detailValueText(data) });
|
|
15711
15792
|
}
|
|
15712
15793
|
function ClampedText({ text, clampChars, mono }) {
|
|
15713
15794
|
const [open, setOpen] = useState21(false);
|
|
@@ -15715,7 +15796,7 @@ function ClampedText({ text, clampChars, mono }) {
|
|
|
15715
15796
|
const shown = long && !open ? `${text.slice(0, clampChars).trimEnd()}\u2026` : text;
|
|
15716
15797
|
return /* @__PURE__ */ jsxs27("span", { className: cn("block min-w-0 whitespace-pre-wrap break-words", mono && "font-mono"), children: [
|
|
15717
15798
|
shown,
|
|
15718
|
-
long ? /* @__PURE__ */
|
|
15799
|
+
long ? /* @__PURE__ */ jsx29(
|
|
15719
15800
|
Button2,
|
|
15720
15801
|
{
|
|
15721
15802
|
type: "button",
|
|
@@ -15732,7 +15813,7 @@ function ClampedText({ text, clampChars, mono }) {
|
|
|
15732
15813
|
function CollectedValue({ data }) {
|
|
15733
15814
|
const [open, setOpen] = useState21(false);
|
|
15734
15815
|
return /* @__PURE__ */ jsxs27("span", { className: "block min-w-0", children: [
|
|
15735
|
-
/* @__PURE__ */
|
|
15816
|
+
/* @__PURE__ */ jsx29(
|
|
15736
15817
|
Button2,
|
|
15737
15818
|
{
|
|
15738
15819
|
type: "button",
|
|
@@ -15744,7 +15825,7 @@ function CollectedValue({ data }) {
|
|
|
15744
15825
|
children: collectedDetailSummary(data)
|
|
15745
15826
|
}
|
|
15746
15827
|
),
|
|
15747
|
-
open ? /* @__PURE__ */
|
|
15828
|
+
open ? /* @__PURE__ */ jsx29("span", { className: "mt-1 block", children: /* @__PURE__ */ jsx29(JsonValue, { data }) }) : null
|
|
15748
15829
|
] });
|
|
15749
15830
|
}
|
|
15750
15831
|
function MatrxDetailValue({
|
|
@@ -15755,13 +15836,13 @@ function MatrxDetailValue({
|
|
|
15755
15836
|
clampChars = DEFAULT_CLAMP
|
|
15756
15837
|
}) {
|
|
15757
15838
|
if (isBlankDetailValue(value)) {
|
|
15758
|
-
return /* @__PURE__ */
|
|
15839
|
+
return /* @__PURE__ */ jsx29("span", { className: "italic text-muted-foreground", "data-matrx-detail-empty": "", children: emptyLabel });
|
|
15759
15840
|
}
|
|
15760
|
-
if (isUuidValue(value)) return /* @__PURE__ */
|
|
15841
|
+
if (isUuidValue(value)) return /* @__PURE__ */ jsx29(RecordId, { value, label });
|
|
15761
15842
|
const collected = collectedDetailValue(value);
|
|
15762
|
-
if (collected) return /* @__PURE__ */
|
|
15843
|
+
if (collected) return /* @__PURE__ */ jsx29(CollectedValue, { data: collected });
|
|
15763
15844
|
const text = Array.isArray(value) ? value.map((item) => detailValueText(item)).join(", ") : typeof value === "string" ? value : formatTableDisplayValue(value);
|
|
15764
|
-
return /* @__PURE__ */
|
|
15845
|
+
return /* @__PURE__ */ jsx29(ClampedText, { text, clampChars, mono });
|
|
15765
15846
|
}
|
|
15766
15847
|
function MatrxDetailGrid({
|
|
15767
15848
|
rows,
|
|
@@ -15793,14 +15874,14 @@ function MatrxDetailGrid({
|
|
|
15793
15874
|
const value = row.values[column.key];
|
|
15794
15875
|
if (!copy || isBlankDetailValue(value)) return null;
|
|
15795
15876
|
const label = columns.length > 1 ? `${row.label} \xB7 ${column.label}` : row.label;
|
|
15796
|
-
return /* @__PURE__ */
|
|
15877
|
+
return /* @__PURE__ */ jsx29(
|
|
15797
15878
|
"span",
|
|
15798
15879
|
{
|
|
15799
15880
|
className: cn(
|
|
15800
15881
|
"shrink-0 opacity-0 transition-opacity focus-within:opacity-100 group-hover/detail:opacity-100",
|
|
15801
15882
|
floating && "absolute right-1 top-0.5 rounded-md bg-card"
|
|
15802
15883
|
),
|
|
15803
|
-
children: /* @__PURE__ */
|
|
15884
|
+
children: /* @__PURE__ */ jsx29(
|
|
15804
15885
|
DeferredCopyButtons,
|
|
15805
15886
|
{
|
|
15806
15887
|
size: "xs",
|
|
@@ -15819,12 +15900,12 @@ function MatrxDetailGrid({
|
|
|
15819
15900
|
);
|
|
15820
15901
|
};
|
|
15821
15902
|
if (rows.length === 0) {
|
|
15822
|
-
return /* @__PURE__ */
|
|
15903
|
+
return /* @__PURE__ */ jsx29("div", { className: cn("type-secondary text-muted-foreground", className), children: empty ?? "Nothing to show" });
|
|
15823
15904
|
}
|
|
15824
15905
|
const showHeader = header ?? columns.length > 1;
|
|
15825
15906
|
const singleRecord = columns.length === 1 && !showHeader;
|
|
15826
15907
|
const footer = /* @__PURE__ */ jsxs27(Fragment19, { children: [
|
|
15827
|
-
filtered.length > limit ? /* @__PURE__ */
|
|
15908
|
+
filtered.length > limit ? /* @__PURE__ */ jsx29(
|
|
15828
15909
|
Button2,
|
|
15829
15910
|
{
|
|
15830
15911
|
type: "button",
|
|
@@ -15835,7 +15916,7 @@ function MatrxDetailGrid({
|
|
|
15835
15916
|
children: `Show all ${filtered.length}`
|
|
15836
15917
|
}
|
|
15837
15918
|
) : null,
|
|
15838
|
-
held > rows.length ? /* @__PURE__ */
|
|
15919
|
+
held > rows.length ? /* @__PURE__ */ jsx29("div", { className: "mt-1 type-meta text-muted-foreground", "data-matrx-detail-held": "", children: `${rows.length} of ${held} rows shown` }) : null
|
|
15839
15920
|
] });
|
|
15840
15921
|
if (singleRecord) {
|
|
15841
15922
|
const column = columns[0];
|
|
@@ -15854,18 +15935,18 @@ function MatrxDetailGrid({
|
|
|
15854
15935
|
...meta ? { meta } : {}
|
|
15855
15936
|
};
|
|
15856
15937
|
if (custom === void 0 && isBlankDetailValue(value)) {
|
|
15857
|
-
return /* @__PURE__ */
|
|
15938
|
+
return /* @__PURE__ */ jsx29(PropertyRow, { ...common, missing: column.emptyLabel ?? true }, row.key);
|
|
15858
15939
|
}
|
|
15859
15940
|
if (collected) {
|
|
15860
|
-
return /* @__PURE__ */
|
|
15941
|
+
return /* @__PURE__ */ jsx29(PropertyRow, { ...common, data: collected, expanded: /* @__PURE__ */ jsx29(JsonValue, { data: collected }) }, row.key);
|
|
15861
15942
|
}
|
|
15862
|
-
return /* @__PURE__ */
|
|
15943
|
+
return /* @__PURE__ */ jsx29(PropertyRow, { ...common, mono: Boolean(row.mono ?? column.mono), children: custom ?? /* @__PURE__ */ jsx29(MatrxDetailValue, { value, label: row.label, mono: row.mono ?? column.mono, clampChars }) }, row.key);
|
|
15863
15944
|
}),
|
|
15864
15945
|
footer
|
|
15865
15946
|
] });
|
|
15866
15947
|
}
|
|
15867
15948
|
const template = `minmax(5rem, 11rem) repeat(${columns.length}, minmax(0, 1fr))`;
|
|
15868
|
-
const copyAll = copy ? /* @__PURE__ */
|
|
15949
|
+
const copyAll = copy ? /* @__PURE__ */ jsx29(
|
|
15869
15950
|
DeferredCopyButtons,
|
|
15870
15951
|
{
|
|
15871
15952
|
size: "xs",
|
|
@@ -15883,8 +15964,8 @@ function MatrxDetailGrid({
|
|
|
15883
15964
|
return /* @__PURE__ */ jsxs27("div", { className: cn("min-w-0", className), "data-matrx-detail-grid": reviewing ? "review" : "grid", "data-matrx-table-look": macLook, children: [
|
|
15884
15965
|
reviewing ? /* @__PURE__ */ jsxs27("div", { className: "mb-1 flex min-h-7 items-center gap-2", "data-matrx-detail-bar": "", children: [
|
|
15885
15966
|
reviewing ? /* @__PURE__ */ jsxs27(Fragment19, { children: [
|
|
15886
|
-
/* @__PURE__ */
|
|
15887
|
-
changedCount > 0 && changedCount < rows.length ? /* @__PURE__ */
|
|
15967
|
+
/* @__PURE__ */ jsx29("span", { className: "type-secondary text-muted-foreground", "data-matrx-detail-changed-count": "", children: `${changedCount} changed` }),
|
|
15968
|
+
changedCount > 0 && changedCount < rows.length ? /* @__PURE__ */ jsx29(
|
|
15888
15969
|
Button2,
|
|
15889
15970
|
{
|
|
15890
15971
|
type: "button",
|
|
@@ -15897,10 +15978,10 @@ function MatrxDetailGrid({
|
|
|
15897
15978
|
}
|
|
15898
15979
|
) : null
|
|
15899
15980
|
] }) : null,
|
|
15900
|
-
copyAll ? /* @__PURE__ */
|
|
15981
|
+
copyAll ? /* @__PURE__ */ jsx29("span", { className: "ml-auto", children: copyAll }) : null
|
|
15901
15982
|
] }) : null,
|
|
15902
15983
|
/* @__PURE__ */ jsxs27("div", { className: "group/detail-grid relative", children: [
|
|
15903
|
-
!reviewing && copyAll ? /* @__PURE__ */
|
|
15984
|
+
!reviewing && copyAll ? /* @__PURE__ */ jsx29(
|
|
15904
15985
|
"span",
|
|
15905
15986
|
{
|
|
15906
15987
|
"data-matrx-detail-copy-all": "",
|
|
@@ -15908,17 +15989,17 @@ function MatrxDetailGrid({
|
|
|
15908
15989
|
children: copyAll
|
|
15909
15990
|
}
|
|
15910
15991
|
) : null,
|
|
15911
|
-
/* @__PURE__ */
|
|
15992
|
+
/* @__PURE__ */ jsx29("div", { className: "overflow-x-auto rounded-md border border-border", children: /* @__PURE__ */ jsxs27("div", { role: "table", className: "grid min-w-max sm:min-w-0", style: { gridTemplateColumns: template }, children: [
|
|
15912
15993
|
showHeader ? /* @__PURE__ */ jsxs27("div", { role: "row", className: "contents", children: [
|
|
15913
|
-
/* @__PURE__ */
|
|
15914
|
-
columns.map((column) => /* @__PURE__ */
|
|
15994
|
+
/* @__PURE__ */ jsx29("div", { role: "columnheader", className: "border-b border-border bg-muted/40 px-2 py-1 type-label text-muted-foreground", children: labelHeader }),
|
|
15995
|
+
columns.map((column) => /* @__PURE__ */ jsx29("div", { role: "columnheader", className: "border-b border-border bg-muted/40 px-2 py-1 type-label text-muted-foreground", children: column.label }, column.key))
|
|
15915
15996
|
] }) : null,
|
|
15916
15997
|
shown.map((row, index) => {
|
|
15917
15998
|
const changed = reviewing && isDetailRowChanged(row, columns);
|
|
15918
15999
|
const last = index === shown.length - 1;
|
|
15919
16000
|
const edge = last ? "" : "border-b border-border";
|
|
15920
16001
|
return /* @__PURE__ */ jsxs27("div", { role: "row", className: "contents", "data-matrx-detail-row": row.key, ...changed ? { "data-changed": "" } : {}, children: [
|
|
15921
|
-
/* @__PURE__ */
|
|
16002
|
+
/* @__PURE__ */ jsx29("div", { role: "rowheader", className: cn("px-2 py-1 type-secondary text-muted-foreground", edge), children: row.label }),
|
|
15922
16003
|
columns.map((column) => {
|
|
15923
16004
|
const value = row.values[column.key];
|
|
15924
16005
|
const emphasise = changed && column.key === after;
|
|
@@ -15935,7 +16016,7 @@ function MatrxDetailGrid({
|
|
|
15935
16016
|
),
|
|
15936
16017
|
...emphasise ? { "data-changed-cell": "" } : {},
|
|
15937
16018
|
children: [
|
|
15938
|
-
/* @__PURE__ */
|
|
16019
|
+
/* @__PURE__ */ jsx29("span", { className: "block min-w-0", children: row.render?.[column.key] ?? /* @__PURE__ */ jsx29(
|
|
15939
16020
|
MatrxDetailValue,
|
|
15940
16021
|
{
|
|
15941
16022
|
value,
|
|
@@ -15983,7 +16064,7 @@ function versionTimelineRows(versions, currentNumber) {
|
|
|
15983
16064
|
}
|
|
15984
16065
|
|
|
15985
16066
|
// src/data-table/MatrxVersionTimeline.tsx
|
|
15986
|
-
import { Fragment as Fragment20, jsx as
|
|
16067
|
+
import { Fragment as Fragment20, jsx as jsx30, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
15987
16068
|
var lucide = (props) => ({
|
|
15988
16069
|
width: 24,
|
|
15989
16070
|
height: 24,
|
|
@@ -15997,25 +16078,25 @@ var lucide = (props) => ({
|
|
|
15997
16078
|
});
|
|
15998
16079
|
function CompareIcon(props) {
|
|
15999
16080
|
return /* @__PURE__ */ jsxs28("svg", { ...lucide(props), children: [
|
|
16000
|
-
/* @__PURE__ */
|
|
16001
|
-
/* @__PURE__ */
|
|
16002
|
-
/* @__PURE__ */
|
|
16003
|
-
/* @__PURE__ */
|
|
16004
|
-
/* @__PURE__ */
|
|
16005
|
-
/* @__PURE__ */
|
|
16081
|
+
/* @__PURE__ */ jsx30("circle", { cx: "5", cy: "6", r: "3" }),
|
|
16082
|
+
/* @__PURE__ */ jsx30("path", { d: "M12 6h5a2 2 0 0 1 2 2v7" }),
|
|
16083
|
+
/* @__PURE__ */ jsx30("path", { d: "m15 9-3-3 3-3" }),
|
|
16084
|
+
/* @__PURE__ */ jsx30("circle", { cx: "19", cy: "18", r: "3" }),
|
|
16085
|
+
/* @__PURE__ */ jsx30("path", { d: "M12 18H7a2 2 0 0 1-2-2V9" }),
|
|
16086
|
+
/* @__PURE__ */ jsx30("path", { d: "m9 15 3 3-3 3" })
|
|
16006
16087
|
] });
|
|
16007
16088
|
}
|
|
16008
16089
|
function RestoreIcon(props) {
|
|
16009
16090
|
return /* @__PURE__ */ jsxs28("svg", { ...lucide(props), children: [
|
|
16010
|
-
/* @__PURE__ */
|
|
16011
|
-
/* @__PURE__ */
|
|
16091
|
+
/* @__PURE__ */ jsx30("path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }),
|
|
16092
|
+
/* @__PURE__ */ jsx30("path", { d: "M3 3v5h5" })
|
|
16012
16093
|
] });
|
|
16013
16094
|
}
|
|
16014
16095
|
function NextIcon(props) {
|
|
16015
|
-
return /* @__PURE__ */
|
|
16096
|
+
return /* @__PURE__ */ jsx30(ArrowRightIcon, { ...props });
|
|
16016
16097
|
}
|
|
16017
16098
|
function LoadIcon(props) {
|
|
16018
|
-
return /* @__PURE__ */
|
|
16099
|
+
return /* @__PURE__ */ jsx30(ChevronDownIcon, { ...props });
|
|
16019
16100
|
}
|
|
16020
16101
|
function formatWhen(at2) {
|
|
16021
16102
|
if (!at2) return "";
|
|
@@ -16025,7 +16106,7 @@ function formatWhen(at2) {
|
|
|
16025
16106
|
}
|
|
16026
16107
|
function VersionCell({ row }) {
|
|
16027
16108
|
return /* @__PURE__ */ jsxs28("span", { className: "inline-flex items-center gap-1.5", "data-matrx-version": row.entry.number, children: [
|
|
16028
|
-
/* @__PURE__ */
|
|
16109
|
+
/* @__PURE__ */ jsx30(
|
|
16029
16110
|
"span",
|
|
16030
16111
|
{
|
|
16031
16112
|
"aria-hidden": true,
|
|
@@ -16036,8 +16117,8 @@ function VersionCell({ row }) {
|
|
|
16036
16117
|
)
|
|
16037
16118
|
}
|
|
16038
16119
|
),
|
|
16039
|
-
/* @__PURE__ */
|
|
16040
|
-
row.isCurrent ? /* @__PURE__ */
|
|
16120
|
+
/* @__PURE__ */ jsx30("span", { className: cn("font-mono font-medium tabular-nums", row.isCurrent ? "font-semibold text-foreground" : "text-foreground"), children: `v${row.entry.number}` }),
|
|
16121
|
+
row.isCurrent ? /* @__PURE__ */ jsx30("span", { className: "sr-only", children: "Current" }) : null
|
|
16041
16122
|
] });
|
|
16042
16123
|
}
|
|
16043
16124
|
function MatrxVersionTimeline({
|
|
@@ -16066,7 +16147,7 @@ function MatrxVersionTimeline({
|
|
|
16066
16147
|
header: "Version",
|
|
16067
16148
|
accessorFn: (row) => row.entry.number,
|
|
16068
16149
|
copyValue: (row) => `v${row.entry.number}`,
|
|
16069
|
-
cell: (row) => /* @__PURE__ */
|
|
16150
|
+
cell: (row) => /* @__PURE__ */ jsx30(VersionCell, { row }),
|
|
16070
16151
|
format: { id: "integer" },
|
|
16071
16152
|
width: 96,
|
|
16072
16153
|
frozen: true
|
|
@@ -16085,7 +16166,7 @@ function MatrxVersionTimeline({
|
|
|
16085
16166
|
id: "at",
|
|
16086
16167
|
header: "When",
|
|
16087
16168
|
accessorFn: (row) => row.entry.at instanceof Date ? row.entry.at.toISOString() : row.entry.at ?? "",
|
|
16088
|
-
cell: (row) => /* @__PURE__ */
|
|
16169
|
+
cell: (row) => /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: formatWhen(row.entry.at) }),
|
|
16089
16170
|
format: { id: "datetime" },
|
|
16090
16171
|
width: 160
|
|
16091
16172
|
});
|
|
@@ -16106,14 +16187,14 @@ function MatrxVersionTimeline({
|
|
|
16106
16187
|
header: "Changes",
|
|
16107
16188
|
accessorFn: (row) => [row.entry.note, row.entry.changesText].filter(Boolean).join(" \xB7 "),
|
|
16108
16189
|
cell: (row) => /* @__PURE__ */ jsxs28("div", { className: "min-w-0 space-y-1", children: [
|
|
16109
|
-
row.entry.note ? /* @__PURE__ */
|
|
16110
|
-
row.entry.changes ?? (row.entry.loaded === false ? onLoad ? null : /* @__PURE__ */
|
|
16111
|
-
row.entry.loaded === false && onLoad ? /* @__PURE__ */
|
|
16190
|
+
row.entry.note ? /* @__PURE__ */ jsx30("div", { className: "text-muted-foreground", children: row.entry.note }) : null,
|
|
16191
|
+
row.entry.changes ?? (row.entry.loaded === false ? onLoad ? null : /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: "\u2014" }) : row.previous ? row.entry.changesText ? /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: row.entry.changesText }) : /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: "No changes" }) : /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: "First version" })),
|
|
16192
|
+
row.entry.loaded === false && onLoad ? /* @__PURE__ */ jsx30(
|
|
16112
16193
|
Button2,
|
|
16113
16194
|
{
|
|
16114
16195
|
type: "button",
|
|
16115
16196
|
variant: "link",
|
|
16116
|
-
icon: /* @__PURE__ */
|
|
16197
|
+
icon: /* @__PURE__ */ jsx30(LoadIcon, { className: "size-3", "aria-hidden": true }),
|
|
16117
16198
|
"data-matrx-version-load": "",
|
|
16118
16199
|
className: "shrink-0",
|
|
16119
16200
|
onClick: (event) => {
|
|
@@ -16160,7 +16241,7 @@ function MatrxVersionTimeline({
|
|
|
16160
16241
|
};
|
|
16161
16242
|
const words = pendingRestore && restore ? restore.confirm(pendingRestore) : null;
|
|
16162
16243
|
return /* @__PURE__ */ jsxs28(Fragment20, { children: [
|
|
16163
|
-
/* @__PURE__ */
|
|
16244
|
+
/* @__PURE__ */ jsx30(
|
|
16164
16245
|
MatrxDataTable,
|
|
16165
16246
|
{
|
|
16166
16247
|
tableId,
|
|
@@ -16186,7 +16267,7 @@ function MatrxVersionTimeline({
|
|
|
16186
16267
|
} : {}
|
|
16187
16268
|
}
|
|
16188
16269
|
),
|
|
16189
|
-
words ? /* @__PURE__ */
|
|
16270
|
+
words ? /* @__PURE__ */ jsx30(
|
|
16190
16271
|
ConfirmDialog,
|
|
16191
16272
|
{
|
|
16192
16273
|
open: true,
|