@_linked/shape-ui 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/columns.d.ts +58 -0
- package/lib/esm/columns.js +173 -0
- package/lib/esm/columns.js.map +1 -0
- package/lib/esm/components/AddInstanceForms.d.ts +38 -0
- package/lib/esm/components/AddInstanceForms.js +143 -0
- package/lib/esm/components/AddInstanceForms.js.map +1 -0
- package/lib/esm/components/AddInstanceForms.module.css +12 -0
- package/lib/esm/components/BatchEditDrawer.d.ts +13 -0
- package/lib/esm/components/BatchEditDrawer.js +122 -0
- package/lib/esm/components/BatchEditDrawer.js.map +1 -0
- package/lib/esm/components/BatchEditDrawer.module.css +193 -0
- package/lib/esm/components/CustomMultiSelect.d.ts +26 -0
- package/lib/esm/components/CustomMultiSelect.js +344 -0
- package/lib/esm/components/CustomMultiSelect.js.map +1 -0
- package/lib/esm/components/CustomMultiSelect.module.css +291 -0
- package/lib/esm/components/DynamicFormField.d.ts +21 -0
- package/lib/esm/components/DynamicFormField.js +149 -0
- package/lib/esm/components/DynamicFormField.js.map +1 -0
- package/lib/esm/components/DynamicFormField.module.css +169 -0
- package/lib/esm/components/EditInstanceForms.d.ts +15 -0
- package/lib/esm/components/EditInstanceForms.js +118 -0
- package/lib/esm/components/EditInstanceForms.js.map +1 -0
- package/lib/esm/components/FilterBadge.d.ts +20 -0
- package/lib/esm/components/FilterBadge.js +26 -0
- package/lib/esm/components/FilterBadge.js.map +1 -0
- package/lib/esm/components/FilterBadge.module.css +25 -0
- package/lib/esm/components/FormField.d.ts +18 -0
- package/lib/esm/components/FormField.js +9 -0
- package/lib/esm/components/FormField.js.map +1 -0
- package/lib/esm/components/FormField.module.css +57 -0
- package/lib/esm/components/InstanceDeletionDialog.d.ts +17 -0
- package/lib/esm/components/InstanceDeletionDialog.js +83 -0
- package/lib/esm/components/InstanceDeletionDialog.js.map +1 -0
- package/lib/esm/components/InstanceDeletionDialog.module.css +59 -0
- package/lib/esm/components/InstanceOverview.d.ts +37 -0
- package/lib/esm/components/InstanceOverview.js +233 -0
- package/lib/esm/components/InstanceOverview.js.map +1 -0
- package/lib/esm/components/InstanceOverview.module.css +35 -0
- package/lib/esm/components/InstanceView.d.ts +29 -0
- package/lib/esm/components/InstanceView.js +97 -0
- package/lib/esm/components/InstanceView.js.map +1 -0
- package/lib/esm/components/InstanceView.module.css +157 -0
- package/lib/esm/components/NodeBadge.d.ts +25 -0
- package/lib/esm/components/NodeBadge.js +29 -0
- package/lib/esm/components/NodeBadge.js.map +1 -0
- package/lib/esm/components/NodeValuesEditor.d.ts +15 -0
- package/lib/esm/components/NodeValuesEditor.js +29 -0
- package/lib/esm/components/NodeValuesEditor.js.map +1 -0
- package/lib/esm/components/NodeValuesEditor.module.css +4 -0
- package/lib/esm/components/ReactTable.d.ts +50 -0
- package/lib/esm/components/ReactTable.js +370 -0
- package/lib/esm/components/ReactTable.js.map +1 -0
- package/lib/esm/components/ReactTable.module.css +950 -0
- package/lib/esm/components/TextfieldEditor.d.ts +1 -2
- package/lib/esm/components/TextfieldEditor.js +2 -2
- package/lib/esm/components/TextfieldEditor.js.map +1 -1
- package/lib/esm/components/forms.module.css +96 -0
- package/lib/esm/host.d.ts +196 -0
- package/lib/esm/host.js +25 -0
- package/lib/esm/host.js.map +1 -0
- package/lib/esm/hostContext.d.ts +34 -0
- package/lib/esm/hostContext.js +95 -0
- package/lib/esm/hostContext.js.map +1 -0
- package/lib/esm/index.d.ts +64 -10
- package/lib/esm/index.js +63 -14
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/read.d.ts +48 -0
- package/lib/esm/read.js +96 -0
- package/lib/esm/read.js.map +1 -0
- package/lib/esm/search.d.ts +32 -0
- package/lib/esm/search.js +87 -0
- package/lib/esm/search.js.map +1 -0
- package/lib/esm/shape/contracts.d.ts +58 -0
- package/lib/esm/shape/contracts.js +15 -0
- package/lib/esm/shape/contracts.js.map +1 -0
- package/lib/esm/shape/naming.d.ts +30 -0
- package/lib/esm/shape/naming.js +52 -0
- package/lib/esm/shape/naming.js.map +1 -0
- package/lib/esm/shape/nodeDisplay.d.ts +36 -0
- package/lib/esm/shape/nodeDisplay.js +117 -0
- package/lib/esm/shape/nodeDisplay.js.map +1 -0
- package/lib/esm/shape/propertyTypes.d.ts +12 -0
- package/lib/esm/shape/propertyTypes.js +60 -0
- package/lib/esm/shape/propertyTypes.js.map +1 -0
- package/lib/esm/shape/propertyVisibility.d.ts +56 -0
- package/lib/esm/shape/propertyVisibility.js +112 -0
- package/lib/esm/shape/propertyVisibility.js.map +1 -0
- package/lib/esm/shape/shapeDependencies.d.ts +41 -0
- package/lib/esm/shape/shapeDependencies.js +141 -0
- package/lib/esm/shape/shapeDependencies.js.map +1 -0
- package/lib/esm/shape/tableFilters.d.ts +35 -0
- package/lib/esm/shape/tableFilters.js +171 -0
- package/lib/esm/shape/tableFilters.js.map +1 -0
- package/lib/esm/shape/useFormDependencies.d.ts +38 -0
- package/lib/esm/shape/useFormDependencies.js +178 -0
- package/lib/esm/shape/useFormDependencies.js.map +1 -0
- package/lib/esm/shape/validation.d.ts +15 -0
- package/lib/esm/shape/validation.js +106 -0
- package/lib/esm/shape/validation.js.map +1 -0
- package/lib/esm/tokens.css +25 -0
- package/lib/esm/types.d.ts +22 -0
- package/lib/esm/types.js +1 -0
- package/lib/esm/types.js.map +1 -0
- package/lib/esm/write.d.ts +51 -0
- package/lib/esm/write.js +99 -0
- package/lib/esm/write.js.map +1 -0
- package/package.json +44 -18
- package/src/backend.ts +1 -0
- package/src/columns.regression.test.ts +143 -0
- package/src/columns.test.ts +200 -0
- package/src/columns.ts +228 -0
- package/src/components/AddInstanceForms.module.css +12 -0
- package/src/components/AddInstanceForms.tsx +321 -0
- package/src/components/AvatarEditor.tsx +34 -0
- package/src/components/BatchEditDrawer.module.css +193 -0
- package/src/components/BatchEditDrawer.tsx +295 -0
- package/src/components/CheckboxEditor.module.css +6 -0
- package/src/components/CheckboxEditor.tsx +86 -0
- package/src/components/CustomMultiSelect.module.css +291 -0
- package/src/components/CustomMultiSelect.tsx +527 -0
- package/src/components/DateEditor.tsx +50 -0
- package/src/components/DynamicFormField.module.css +169 -0
- package/src/components/DynamicFormField.tsx +357 -0
- package/src/components/EditInstanceForms.tsx +260 -0
- package/src/components/FilterBadge.module.css +25 -0
- package/src/components/FilterBadge.tsx +70 -0
- package/src/components/FormField.module.css +57 -0
- package/src/components/FormField.tsx +59 -0
- package/src/components/ImageValueEditor.module.css +3 -0
- package/src/components/ImageValueEditor.tsx +82 -0
- package/src/components/InstanceDeletionDialog.module.css +59 -0
- package/src/components/InstanceDeletionDialog.tsx +175 -0
- package/src/components/InstanceOverview.module.css +35 -0
- package/src/components/InstanceOverview.tsx +374 -0
- package/src/components/InstanceView.module.css +157 -0
- package/src/components/InstanceView.tsx +212 -0
- package/src/components/NodeBadge.tsx +60 -0
- package/src/components/NodeValuesEditor.module.css +4 -0
- package/src/components/NodeValuesEditor.tsx +64 -0
- package/src/components/RadioButtonEditor.module.css +22 -0
- package/src/components/RadioButtonEditor.tsx +96 -0
- package/src/components/ReactTable.module.css +950 -0
- package/src/components/ReactTable.tsx +991 -0
- package/src/components/SelectEditor.tsx +85 -0
- package/src/components/ShapeTable.module.css +394 -0
- package/src/components/SwitchEditor.tsx +60 -0
- package/src/components/TextareaEditor.tsx +55 -0
- package/src/components/TextfieldEditor.tsx +67 -0
- package/src/components/ToggleEditor.tsx +63 -0
- package/src/components/forms.module.css +96 -0
- package/src/host.ts +226 -0
- package/src/hostContext.tsx +114 -0
- package/src/index.ts +99 -0
- package/src/package.ts +21 -0
- package/src/read.ts +148 -0
- package/src/search.test.ts +174 -0
- package/src/search.ts +108 -0
- package/src/shape/contracts.ts +66 -0
- package/src/shape/naming.ts +52 -0
- package/src/shape/nodeDisplay.ts +114 -0
- package/src/shape/propertyTypes.ts +86 -0
- package/src/shape/propertyVisibility.ts +180 -0
- package/src/shape/shapeDependencies.ts +183 -0
- package/src/shape/tableFilters.ts +223 -0
- package/src/shape/types.ts +1158 -0
- package/src/shape/useFormDependencies.ts +257 -0
- package/src/shape/validation.ts +121 -0
- package/src/tokens.css +25 -0
- package/src/types.ts +20 -0
- package/src/utils/helper.ts +35 -0
- package/src/write.test.ts +174 -0
- package/src/write.ts +114 -0
- package/.changeset/README.md +0 -20
- package/.changeset/config.json +0 -14
- package/.github/workflows/changeset-check.yml +0 -44
- package/.github/workflows/ci.yml +0 -43
- package/.github/workflows/publish.yml +0 -158
- package/CHANGELOG.md +0 -30
- package/lib/esm/components/AvatarEditor.d.ts +0 -20
- package/lib/esm/components/AvatarEditor.js +0 -7
- package/lib/esm/components/AvatarEditor.js.map +0 -1
- package/lib/esm/components/CheckboxEditor.d.ts +0 -21
- package/lib/esm/components/CheckboxEditor.js +0 -44
- package/lib/esm/components/CheckboxEditor.js.map +0 -1
- package/lib/esm/components/DateEditor.d.ts +0 -20
- package/lib/esm/components/DateEditor.js +0 -22
- package/lib/esm/components/DateEditor.js.map +0 -1
- package/lib/esm/components/RadioButtonEditor.d.ts +0 -23
- package/lib/esm/components/RadioButtonEditor.js +0 -41
- package/lib/esm/components/RadioButtonEditor.js.map +0 -1
- package/lib/esm/components/SelectEditor.d.ts +0 -21
- package/lib/esm/components/SelectEditor.js +0 -30
- package/lib/esm/components/SelectEditor.js.map +0 -1
- package/lib/esm/components/SwitchEditor.d.ts +0 -21
- package/lib/esm/components/SwitchEditor.js +0 -23
- package/lib/esm/components/SwitchEditor.js.map +0 -1
- package/lib/esm/components/TextareaEditor.d.ts +0 -23
- package/lib/esm/components/TextareaEditor.js +0 -15
- package/lib/esm/components/TextareaEditor.js.map +0 -1
- package/lib/esm/components/ToggleEditor.d.ts +0 -22
- package/lib/esm/components/ToggleEditor.js +0 -23
- package/lib/esm/components/ToggleEditor.js.map +0 -1
- package/lib/esm/ontologies/lincd-ui.d.ts +0 -6
- package/lib/esm/ontologies/lincd-ui.js +0 -18
- package/lib/esm/ontologies/lincd-ui.js.map +0 -1
- package/lib/esm/package.d.ts +0 -3
- package/lib/esm/package.js +0 -4
- package/lib/esm/package.js.map +0 -1
- package/tsconfig-cjs.json +0 -8
- package/tsconfig-esm.json +0 -9
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PropertyShapeWire, NodeShapeWire } from '@_linked/core/shapes/nodeShapeWire';
|
|
2
|
+
interface NodeValuesEditorProps {
|
|
3
|
+
property: PropertyShapeWire;
|
|
4
|
+
of: any;
|
|
5
|
+
/**
|
|
6
|
+
* The shape being edited. Passed down rather than read from the route: the picker needs
|
|
7
|
+
* it to say which shape the answer belongs to, and the form above already knows.
|
|
8
|
+
*/
|
|
9
|
+
sourceShape?: NodeShapeWire;
|
|
10
|
+
onBeforeNavigate?: () => Promise<string | void> | string | void;
|
|
11
|
+
narrowedIds?: string[] | null;
|
|
12
|
+
isNarrowing?: boolean;
|
|
13
|
+
}
|
|
14
|
+
declare const NodeValuesEditor: ({ property, of, sourceShape, onBeforeNavigate, narrowedIds, isNarrowing }: NodeValuesEditorProps) => import("react").JSX.Element;
|
|
15
|
+
export default NodeValuesEditor;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import CustomMultiSelect from './CustomMultiSelect.js';
|
|
3
|
+
import style from './NodeValuesEditor.module.css';
|
|
4
|
+
const NodeValuesEditor = ({ property, of, sourceShape, onBeforeNavigate, narrowedIds, isNarrowing }) => {
|
|
5
|
+
let valueShape = property.valueShape;
|
|
6
|
+
// let shapeClass = getShapeClass(of.targetClass);
|
|
7
|
+
if (!valueShape) {
|
|
8
|
+
// valueShape = Thing;
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
}
|
|
12
|
+
// let instanceValues = (
|
|
13
|
+
// getShapeClass(valueShape.namedNode) as any
|
|
14
|
+
// ).getLocalInstances();
|
|
15
|
+
const values = of[property.label];
|
|
16
|
+
// let potentialValues = property.inList;
|
|
17
|
+
return (_jsx("div", { className: style.Root, children: _jsx(CustomMultiSelect, { values: values, property: property, sourceShape: sourceShape, onBeforeNavigate: onBeforeNavigate, narrowedIds: narrowedIds, isNarrowing: isNarrowing, onChange: (selected) => {
|
|
18
|
+
// Write back to form data object (same mutation pattern as DynamicFormField)
|
|
19
|
+
// Include label so draft restore can display friendly names
|
|
20
|
+
of[property.label] =
|
|
21
|
+
selected.length === 0
|
|
22
|
+
? undefined
|
|
23
|
+
: property.maxCount === 1
|
|
24
|
+
? { id: selected[0].id, label: selected[0].label }
|
|
25
|
+
: selected.map((v) => ({ id: v.id, label: v.label }));
|
|
26
|
+
} }) }));
|
|
27
|
+
};
|
|
28
|
+
export default NodeValuesEditor;
|
|
29
|
+
//# sourceMappingURL=NodeValuesEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeValuesEditor.js","sourceRoot":"","sources":["../../../src/components/NodeValuesEditor.tsx"],"names":[],"mappings":";AACA,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAqBlD,MAAM,gBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAyB,EAAE,EAAE;IAC5H,IAAI,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACrC,kDAAkD;IAElD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,sBAAsB;IACxB,CAAC;SAAM,CAAC;IACR,CAAC;IACD,yBAAyB;IACzB,+CAA+C;IAC/C,yBAAyB;IAEzB,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,yCAAyC;IAGzC,OAAO,CACL,cAAK,SAAS,EAAE,KAAK,CAAC,IAAI,YACxB,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACrB,6EAA6E;gBAC7E,4DAA4D;gBAC5D,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAChB,QAAQ,CAAC,MAAM,KAAK,CAAC;wBACnB,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;4BACvB,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;4BAClD,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC,GACD,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ColumnDef } from '@tanstack/react-table';
|
|
2
|
+
import type { ShapeInstancesQueryConfig } from '../shape/contracts.js';
|
|
3
|
+
import type { PropertyShapeWire, NodeShapeWire } from '@_linked/core/shapes/nodeShapeWire';
|
|
4
|
+
import { ShapeSet } from '@_linked/core/collections/ShapeSet';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import type { TableMode } from '../columns.js';
|
|
7
|
+
import type { BatchResult } from './InstanceOverview.js';
|
|
8
|
+
import { type InstanceDeletionDialogProps } from './InstanceDeletionDialog.js';
|
|
9
|
+
export interface ReactTableProps {
|
|
10
|
+
data: any[] | ShapeSet<any>;
|
|
11
|
+
columns: ColumnDef<any>[];
|
|
12
|
+
toggleSelectAll: () => void;
|
|
13
|
+
isRowSelected: (uri: string) => boolean;
|
|
14
|
+
selectedUris: Set<string>;
|
|
15
|
+
toggleRowSelection: (uri: string) => void;
|
|
16
|
+
clearSelection: () => void;
|
|
17
|
+
removeFromSelection: (uris: string[]) => void;
|
|
18
|
+
hasSelection: boolean;
|
|
19
|
+
shape: NodeShapeWire;
|
|
20
|
+
properties?: Record<string, PropertyShapeWire>;
|
|
21
|
+
isLoading?: boolean;
|
|
22
|
+
config: ShapeInstancesQueryConfig;
|
|
23
|
+
setConfig: (updated: ShapeInstancesQueryConfig) => void;
|
|
24
|
+
isPickMode?: boolean;
|
|
25
|
+
onPickInstance?: (instance: {
|
|
26
|
+
id: string;
|
|
27
|
+
label: string;
|
|
28
|
+
image?: string;
|
|
29
|
+
}) => void;
|
|
30
|
+
onPickInstances?: (instances: {
|
|
31
|
+
id: string;
|
|
32
|
+
label: string;
|
|
33
|
+
image?: string;
|
|
34
|
+
}[]) => void;
|
|
35
|
+
pickMaxCount?: number;
|
|
36
|
+
pickAlreadySelected?: {
|
|
37
|
+
id: string;
|
|
38
|
+
label: string;
|
|
39
|
+
image?: string;
|
|
40
|
+
}[];
|
|
41
|
+
deletionProjectId?: string;
|
|
42
|
+
previewDeletion?: InstanceDeletionDialogProps['previewDeletion'];
|
|
43
|
+
executeDeletion?: InstanceDeletionDialogProps['executeDeletion'];
|
|
44
|
+
onInstancesDeleted?: (uris: string[]) => void;
|
|
45
|
+
onBatchUpdate?: (changes: Record<string, any>, uris: string[]) => Promise<BatchResult>;
|
|
46
|
+
tableMode?: TableMode;
|
|
47
|
+
onTableModeChange?: (mode: TableMode) => void;
|
|
48
|
+
}
|
|
49
|
+
declare function ReactTable({ data, columns, toggleSelectAll, isRowSelected, selectedUris, toggleRowSelection, clearSelection, removeFromSelection, hasSelection, shape, properties: propertiesMap, isLoading, config, setConfig, isPickMode, onPickInstance, onPickInstances, pickMaxCount, pickAlreadySelected, deletionProjectId, previewDeletion, executeDeletion, onInstancesDeleted, onBatchUpdate, tableMode, onTableModeChange, }: ReactTableProps): React.JSX.Element;
|
|
50
|
+
export default ReactTable;
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from '@tanstack/react-table';
|
|
3
|
+
import { AnimatePresence, motion } from 'framer-motion';
|
|
4
|
+
import { Button } from '@_linked/primitives/components/Button';
|
|
5
|
+
import { Checkbox } from '@_linked/primitives/components/Checkbox';
|
|
6
|
+
import { Drawer } from '@_linked/primitives/components/Drawer';
|
|
7
|
+
import { IconButton } from '@_linked/primitives/components/IconButton';
|
|
8
|
+
import { Input } from '@_linked/primitives/components/Input';
|
|
9
|
+
import { Label } from '@_linked/primitives/components/Label';
|
|
10
|
+
import { Select } from '@_linked/primitives/components/Select';
|
|
11
|
+
import { Typography } from '@_linked/primitives/components/Typography';
|
|
12
|
+
import { cl } from '@_linked/react/utils/ClassNames';
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { getNodeDisplay, humanizeEnumLabel, enumOptions } from '../shape/nodeDisplay.js';
|
|
15
|
+
import { formatShapeLabel } from '../shape/naming.js';
|
|
16
|
+
import { tableStaggerContainer, tableRowItem, useReducedMotion, } from '@_linked/primitives/motion';
|
|
17
|
+
import { Icons } from '@_linked/icons';
|
|
18
|
+
import { Spinner } from '@_linked/primitives/components/Spinner';
|
|
19
|
+
import { FilterBadge } from './FilterBadge.js';
|
|
20
|
+
import { TableRowSkeleton } from '@_linked/primitives/components/SkeletonLoader';
|
|
21
|
+
import { TruncatedText } from '@_linked/primitives/components/TruncatedText';
|
|
22
|
+
import { applyAllFilters, generateFilterId, getOperatorsForProperty, formatFilterLabel, } from '../shape/tableFilters.js';
|
|
23
|
+
import { getPropertyUiType } from '../shape/propertyTypes.js';
|
|
24
|
+
import { useDataManagerHost } from '../hostContext.js';
|
|
25
|
+
import BatchEditDrawer from './BatchEditDrawer.js';
|
|
26
|
+
import { InstanceDeletionDialog } from './InstanceDeletionDialog.js';
|
|
27
|
+
import style from './ReactTable.module.css';
|
|
28
|
+
function ReactTable({ data, columns, toggleSelectAll, isRowSelected, selectedUris, toggleRowSelection, clearSelection, removeFromSelection, hasSelection, shape, properties: propertiesMap, isLoading = false, config, setConfig, isPickMode = false, onPickInstance, onPickInstances, pickMaxCount, pickAlreadySelected, deletionProjectId, previewDeletion, executeDeletion, onInstancesDeleted, onBatchUpdate, tableMode, onTableModeChange, }) {
|
|
29
|
+
var _a;
|
|
30
|
+
// ─── Filter state ──────────────────────────────────────────────────
|
|
31
|
+
const [filters, setFilters] = React.useState([]);
|
|
32
|
+
const [selectedColumn, setSelectedColumn] = React.useState('');
|
|
33
|
+
const [selectedOperator, setSelectedOperator] = React.useState('');
|
|
34
|
+
const [filterValue, setFilterValue] = React.useState('');
|
|
35
|
+
const [enumSelections, setEnumSelections] = React.useState([]);
|
|
36
|
+
const reducedMotion = useReducedMotion();
|
|
37
|
+
// Row actions go through the host. Building `${ROUTES.data.path}/…/edit?s0=…` here
|
|
38
|
+
// assumed CN's URL layout; where "edit this row" leads is the host's decision.
|
|
39
|
+
const host = useDataManagerHost();
|
|
40
|
+
// Deletion needs THREE things, not one: somewhere to scope the impact query, a way to
|
|
41
|
+
// preview the cascade, and a way to perform it. Gating the affordance on the project id
|
|
42
|
+
// alone offered a Delete button whose dialog then called an undefined `previewDeletion`
|
|
43
|
+
// — which is exactly what the overview page did, because it passed the id and neither
|
|
44
|
+
// callback. An affordance that cannot complete should not be offered.
|
|
45
|
+
const canDelete = Boolean(deletionProjectId && previewDeletion && executeDeletion);
|
|
46
|
+
// ─── Batch operation state ─────────────────────────────────────────
|
|
47
|
+
const [batchEditOpen, setBatchEditOpen] = React.useState(false);
|
|
48
|
+
const [batchOperationPending, setBatchOperationPending] = React.useState(false);
|
|
49
|
+
const [batchResult, setBatchResult] = React.useState(null);
|
|
50
|
+
// Build a map of column IDs to property details for filter type detection.
|
|
51
|
+
const propertyMap = React.useMemo(() => {
|
|
52
|
+
if (propertiesMap)
|
|
53
|
+
return propertiesMap;
|
|
54
|
+
const map = {};
|
|
55
|
+
if (shape === null || shape === void 0 ? void 0 : shape.propertyShapes) {
|
|
56
|
+
for (const prop of shape.propertyShapes) {
|
|
57
|
+
map[prop.label] = prop;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return map;
|
|
61
|
+
}, [propertiesMap, shape === null || shape === void 0 ? void 0 : shape.propertyShapes]);
|
|
62
|
+
// Get available operators when column changes
|
|
63
|
+
const selectedProperty = selectedColumn ? propertyMap[selectedColumn] || null : null;
|
|
64
|
+
const availableOperators = selectedProperty
|
|
65
|
+
? getOperatorsForProperty(selectedProperty)
|
|
66
|
+
: [];
|
|
67
|
+
const selectedUiType = selectedProperty ? getPropertyUiType(selectedProperty) : null;
|
|
68
|
+
const isEnumColumn = selectedUiType === 'enum-literal' || selectedUiType === 'enum-iri';
|
|
69
|
+
// Reset operator/value when column changes
|
|
70
|
+
React.useEffect(() => {
|
|
71
|
+
if (availableOperators.length > 0) {
|
|
72
|
+
setSelectedOperator(availableOperators[0].value);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
setSelectedOperator('');
|
|
76
|
+
}
|
|
77
|
+
setFilterValue('');
|
|
78
|
+
setEnumSelections([]);
|
|
79
|
+
}, [selectedColumn]);
|
|
80
|
+
// Apply filters to data (client-side)
|
|
81
|
+
const filteredData = React.useMemo(() => {
|
|
82
|
+
const activeFilters = filters.filter((f) => f.isActive);
|
|
83
|
+
if (activeFilters.length === 0)
|
|
84
|
+
return data;
|
|
85
|
+
return data.filter((row) => applyAllFilters(row, activeFilters));
|
|
86
|
+
}, [data, filters]);
|
|
87
|
+
const setPagination = (updater) => {
|
|
88
|
+
// react-table passes a functional updater; resolve it against the current config.
|
|
89
|
+
const newVal = typeof updater === 'function' ? updater(config) : updater;
|
|
90
|
+
// Skip no-op pagination updates. react-table re-fires onPaginationChange whenever
|
|
91
|
+
// the data changes; propagating an identical-but-new config object would change
|
|
92
|
+
// `tableConfig` and re-trigger the parent's fetch effect — an infinite refetch loop.
|
|
93
|
+
if (newVal &&
|
|
94
|
+
newVal.pageIndex === config.pageIndex &&
|
|
95
|
+
newVal.pageSize === config.pageSize) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
setConfig(newVal);
|
|
99
|
+
};
|
|
100
|
+
const table = useReactTable({
|
|
101
|
+
columns,
|
|
102
|
+
data: filteredData,
|
|
103
|
+
getCoreRowModel: getCoreRowModel(),
|
|
104
|
+
getSortedRowModel: getSortedRowModel(),
|
|
105
|
+
getFilteredRowModel: getFilteredRowModel(),
|
|
106
|
+
getPaginationRowModel: getPaginationRowModel(),
|
|
107
|
+
onPaginationChange: setPagination,
|
|
108
|
+
state: {
|
|
109
|
+
pagination: config,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
// Compute whether we've hit the maxCount limit for pick mode
|
|
113
|
+
const pickLimitReached = isPickMode && pickMaxCount != null && selectedUris.size >= pickMaxCount;
|
|
114
|
+
const handleFilterSubmit = () => {
|
|
115
|
+
if (!selectedColumn || !selectedOperator)
|
|
116
|
+
return;
|
|
117
|
+
const value = isEnumColumn && selectedOperator === 'in'
|
|
118
|
+
? enumSelections
|
|
119
|
+
: filterValue.trim();
|
|
120
|
+
if (Array.isArray(value) ? value.length === 0 : !value)
|
|
121
|
+
return;
|
|
122
|
+
const newFilter = {
|
|
123
|
+
id: generateFilterId(),
|
|
124
|
+
columnId: selectedColumn,
|
|
125
|
+
columnLabel: selectedColumn
|
|
126
|
+
.replace(/([A-Z])/g, ' $1')
|
|
127
|
+
.replace(/_/g, ' ')
|
|
128
|
+
.replace(/^./, (c) => c.toUpperCase()),
|
|
129
|
+
operator: selectedOperator,
|
|
130
|
+
value,
|
|
131
|
+
isActive: true,
|
|
132
|
+
};
|
|
133
|
+
setFilters([...filters, newFilter]);
|
|
134
|
+
setFilterValue('');
|
|
135
|
+
setEnumSelections([]);
|
|
136
|
+
};
|
|
137
|
+
const handleFilterToggle = (index) => {
|
|
138
|
+
setFilters(filters.map((filter, i) => i === index ? { ...filter, isActive: !filter.isActive } : filter));
|
|
139
|
+
};
|
|
140
|
+
const handleFilterRemove = (index) => {
|
|
141
|
+
setFilters(filters.filter((_, i) => i !== index));
|
|
142
|
+
};
|
|
143
|
+
const rowToPickInstance = (row) => {
|
|
144
|
+
var _a;
|
|
145
|
+
const original = row.original;
|
|
146
|
+
const labelKey = Object.keys(original).find((k) => k !== 'id' && original[k]);
|
|
147
|
+
const rawLabel = labelKey ? original[labelKey] : original.id;
|
|
148
|
+
const label = typeof rawLabel === 'object' && (rawLabel === null || rawLabel === void 0 ? void 0 : rawLabel.label)
|
|
149
|
+
? rawLabel.label
|
|
150
|
+
: typeof rawLabel === 'string'
|
|
151
|
+
? rawLabel
|
|
152
|
+
: String(original.id || '');
|
|
153
|
+
const image = ((_a = original.image) === null || _a === void 0 ? void 0 : _a.contentUrl) || original.image;
|
|
154
|
+
return {
|
|
155
|
+
id: original.id,
|
|
156
|
+
label,
|
|
157
|
+
...(typeof image === 'string' ? { image } : {}),
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
const handlePick = (row) => {
|
|
161
|
+
if (!onPickInstance)
|
|
162
|
+
return;
|
|
163
|
+
onPickInstance(rowToPickInstance(row));
|
|
164
|
+
};
|
|
165
|
+
const handlePickSelected = () => {
|
|
166
|
+
const rows = table.getRowModel().rows;
|
|
167
|
+
const picked = rows
|
|
168
|
+
.filter((r) => { var _a; return selectedUris.has((_a = r.original) === null || _a === void 0 ? void 0 : _a.id); })
|
|
169
|
+
.map(rowToPickInstance);
|
|
170
|
+
if (picked.length === 1 && onPickInstance) {
|
|
171
|
+
onPickInstance(picked[0]);
|
|
172
|
+
}
|
|
173
|
+
else if (picked.length > 0 && onPickInstances) {
|
|
174
|
+
onPickInstances(picked);
|
|
175
|
+
}
|
|
176
|
+
else if (picked.length > 0 && onPickInstance) {
|
|
177
|
+
onPickInstance(picked[0]);
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
const handleEdit = (row) => {
|
|
181
|
+
var _a;
|
|
182
|
+
// Single-instance edit: always `s0` (the edit page reads `s0`). `row.id` is
|
|
183
|
+
// react-table's row index, not a query-subject index — using it produced
|
|
184
|
+
// `?s1=` for later rows, which the edit page couldn't read ("Missing instance id").
|
|
185
|
+
const subject = row.original.id;
|
|
186
|
+
(_a = host.navigate) === null || _a === void 0 ? void 0 : _a.toEdit(shape === null || shape === void 0 ? void 0 : shape.id, subject);
|
|
187
|
+
};
|
|
188
|
+
const handleView = (row) => {
|
|
189
|
+
var _a;
|
|
190
|
+
const subject = row.original.id;
|
|
191
|
+
(_a = host.navigate) === null || _a === void 0 ? void 0 : _a.toInstance(shape === null || shape === void 0 ? void 0 : shape.id, subject);
|
|
192
|
+
};
|
|
193
|
+
// ─── Preview-required instance deletion ────────────────────────────
|
|
194
|
+
const [deletionTarget, setDeletionTarget] = React.useState(null);
|
|
195
|
+
const handleDelete = (row) => {
|
|
196
|
+
var _a, _b, _c;
|
|
197
|
+
const uri = (_a = row.original) === null || _a === void 0 ? void 0 : _a.id;
|
|
198
|
+
const label = ((_b = row.original) === null || _b === void 0 ? void 0 : _b.label) || ((_c = row.original) === null || _c === void 0 ? void 0 : _c.name) || getNodeDisplay(row.original) || '';
|
|
199
|
+
setDeletionTarget({
|
|
200
|
+
kind: 'single',
|
|
201
|
+
targets: [{ instanceId: uri, shapeIri: shape.id }],
|
|
202
|
+
labels: { [uri]: label },
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
// ─── Batch delete ──────────────────────────────────────────────────
|
|
206
|
+
const handleDeleteCollectively = () => {
|
|
207
|
+
if (!canDelete || selectedUris.size === 0)
|
|
208
|
+
return;
|
|
209
|
+
const uris = Array.from(selectedUris);
|
|
210
|
+
const labels = {};
|
|
211
|
+
for (const row of data) {
|
|
212
|
+
if (selectedUris.has(row === null || row === void 0 ? void 0 : row.id)) {
|
|
213
|
+
labels[row.id] = row.label || row.name || getNodeDisplay(row) || row.id;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
setDeletionTarget({
|
|
217
|
+
kind: 'batch',
|
|
218
|
+
targets: uris.map((instanceId) => ({ instanceId, shapeIri: shape.id })),
|
|
219
|
+
labels,
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
const handleDeletionCompleted = (result) => {
|
|
223
|
+
if (!deletionTarget)
|
|
224
|
+
return;
|
|
225
|
+
const requested = deletionTarget.targets.map(({ instanceId }) => instanceId);
|
|
226
|
+
const deleted = result.deleted.map(({ instanceId }) => instanceId);
|
|
227
|
+
const deletedSet = new Set(deleted);
|
|
228
|
+
const failed = requested.filter((uri) => !deletedSet.has(uri));
|
|
229
|
+
onInstancesDeleted === null || onInstancesDeleted === void 0 ? void 0 : onInstancesDeleted(deleted);
|
|
230
|
+
if (deletionTarget.kind === 'batch') {
|
|
231
|
+
if (failed.length > 0) {
|
|
232
|
+
removeFromSelection(deleted);
|
|
233
|
+
setBatchResult({
|
|
234
|
+
message: `Deleted ${deleted.length} of ${requested.length}. ${failed.length} failed and remain selected.`,
|
|
235
|
+
isError: true,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
clearSelection();
|
|
240
|
+
setBatchResult({
|
|
241
|
+
message: `Successfully deleted ${deleted.length} items.`,
|
|
242
|
+
isError: false,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
// ─── Batch edit ────────────────────────────────────────────────────
|
|
248
|
+
const handleBatchApply = async (changes) => {
|
|
249
|
+
if (!onBatchUpdate)
|
|
250
|
+
return;
|
|
251
|
+
const uris = Array.from(selectedUris);
|
|
252
|
+
setBatchOperationPending(true);
|
|
253
|
+
setBatchResult(null);
|
|
254
|
+
try {
|
|
255
|
+
const result = await onBatchUpdate(changes, uris);
|
|
256
|
+
setBatchEditOpen(false);
|
|
257
|
+
if (result.failed.length > 0) {
|
|
258
|
+
removeFromSelection(result.succeeded);
|
|
259
|
+
setBatchResult({
|
|
260
|
+
message: `Updated ${result.succeeded.length} of ${uris.length}. ${result.failed.length} failed.`,
|
|
261
|
+
isError: true,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
clearSelection();
|
|
266
|
+
setBatchResult({
|
|
267
|
+
message: `Successfully updated ${result.succeeded.length} items.`,
|
|
268
|
+
isError: false,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
setBatchResult({
|
|
274
|
+
message: `Batch update failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
275
|
+
isError: true,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
finally {
|
|
279
|
+
setBatchOperationPending(false);
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
// Auto-clear result message after 5 seconds
|
|
283
|
+
React.useEffect(() => {
|
|
284
|
+
if (!batchResult)
|
|
285
|
+
return;
|
|
286
|
+
const timer = setTimeout(() => setBatchResult(null), 5000);
|
|
287
|
+
return () => clearTimeout(timer);
|
|
288
|
+
}, [batchResult]);
|
|
289
|
+
const getCellStyle = (cell) => {
|
|
290
|
+
const value = cell.getValue();
|
|
291
|
+
if (value === 'Yes') {
|
|
292
|
+
return style.green;
|
|
293
|
+
}
|
|
294
|
+
return '';
|
|
295
|
+
};
|
|
296
|
+
const renderCellContent = (cell) => {
|
|
297
|
+
const value = cell.getValue();
|
|
298
|
+
if (typeof value === 'string' && value.length > 80) {
|
|
299
|
+
return _jsx(TruncatedText, { text: value, maxLength: 50 });
|
|
300
|
+
}
|
|
301
|
+
return flexRender(cell.column.columnDef.cell, cell.getContext());
|
|
302
|
+
};
|
|
303
|
+
const hasFilters = filters.length > 0;
|
|
304
|
+
const selectionCount = selectedUris.size;
|
|
305
|
+
return (_jsxs("div", { className: style.tableWrapper, children: [_jsxs("div", { className: cl(style.action, !hasFilters && !hasSelection && style.withBorder), children: [_jsxs(Button, { size: "small", onClick: () => { var _a; return (shape === null || shape === void 0 ? void 0 : shape.id) && ((_a = host.navigate) === null || _a === void 0 ? void 0 : _a.toAdd(shape.id)); }, disabled: !(shape === null || shape === void 0 ? void 0 : shape.id) || !host.navigate, children: [_jsx(Icons.UserPlus, { width: 18, height: 18 }), "New ", shape ? formatShapeLabel(shape.label) : ''] }), _jsxs(Drawer.Root, { direction: "right", handleOnly: true, children: [_jsx(Drawer.Trigger, { asChild: true, children: _jsx(IconButton, { size: "small", variant: "outline", "aria-label": "Open filters", children: _jsx(Icons.ListFilter, { width: 20, height: 20 }) }) }), _jsx(Drawer.Content, { hideHandle: true, className: style.filterDrawer, children: _jsxs("div", { className: style.filterDrawerContent, children: [_jsxs(Drawer.Header, { className: style.filterDrawerHeader, children: [_jsx(Drawer.Title, { children: "Filters" }), _jsx(Drawer.Description, { children: filters.length > 0
|
|
306
|
+
? `${filters.length} filter${filters.length > 1 ? 's' : ''} applied`
|
|
307
|
+
: 'No filters applied' })] }), _jsxs("div", { className: style.filterDrawerBody, children: [_jsxs("div", { className: style.form, children: [_jsxs("div", { className: style.formSection, children: [_jsx(Label, { children: "Column" }), _jsxs(Select.Root, { value: selectedColumn, onValueChange: setSelectedColumn, children: [_jsx(Select.Trigger, { "aria-label": "Select Column", children: _jsx(Select.Value, { placeholder: "Select column..." }) }), _jsx(Select.Content, { children: _jsx(Select.Group, { children: (_a = shape === null || shape === void 0 ? void 0 : shape.propertyShapes) === null || _a === void 0 ? void 0 : _a.filter((p) => p.label !== 'id').map((prop) => (_jsx(Select.Item, { value: prop.label, children: prop.label
|
|
308
|
+
.replace(/([A-Z])/g, ' $1')
|
|
309
|
+
.replace(/_/g, ' ')
|
|
310
|
+
.replace(/^./, (c) => c.toUpperCase()) }, prop.label))) }) })] })] }), selectedColumn && availableOperators.length > 0 && (_jsxs("div", { className: style.formSection, children: [_jsx(Label, { children: "Operator" }), _jsxs(Select.Root, { value: selectedOperator, onValueChange: (val) => setSelectedOperator(val), children: [_jsx(Select.Trigger, { "aria-label": "Select Operator", children: _jsx(Select.Value, { placeholder: "Select operator..." }) }), _jsx(Select.Content, { children: _jsx(Select.Group, { children: availableOperators.map((op) => (_jsx(Select.Item, { value: op.value, children: op.label }, op.value))) }) })] })] })), selectedColumn && selectedOperator && (_jsxs("div", { className: style.formSection, children: [_jsx(Label, { children: "Value" }), isEnumColumn &&
|
|
311
|
+
selectedOperator === 'in' &&
|
|
312
|
+
selectedProperty &&
|
|
313
|
+
enumOptions(selectedProperty).length > 0 ? (_jsx("div", { className: style.enumCheckboxes, children: enumOptions(selectedProperty).map((item) => {
|
|
314
|
+
const val = item.id;
|
|
315
|
+
const checked = enumSelections.includes(val);
|
|
316
|
+
return (_jsxs("label", { className: style.enumCheckboxLabel, children: [_jsx(Checkbox, { checked: checked, onCheckedChange: () => {
|
|
317
|
+
setEnumSelections((prev) => checked
|
|
318
|
+
? prev.filter((v) => v !== val)
|
|
319
|
+
: [...prev, val]);
|
|
320
|
+
} }), _jsx("span", { children: humanizeEnumLabel(val) })] }, val));
|
|
321
|
+
}) })) : selectedUiType === 'boolean' ? (_jsxs(Select.Root, { value: filterValue, onValueChange: setFilterValue, children: [_jsx(Select.Trigger, { "aria-label": "Select Value", children: _jsx(Select.Value, { placeholder: "Select..." }) }), _jsx(Select.Content, { children: _jsxs(Select.Group, { children: [_jsx(Select.Item, { value: "true", children: "Yes" }), _jsx(Select.Item, { value: "false", children: "No" })] }) })] })) : (_jsx(Input, { name: "filterValue", type: selectedUiType === 'number' ? 'number' : selectedUiType === 'date' || selectedUiType === 'datetime' ? 'date' : 'text', placeholder: "Enter value...", value: filterValue, onChange: (e) => setFilterValue(e.target.value), onKeyDown: (e) => {
|
|
322
|
+
if (e.key === 'Enter')
|
|
323
|
+
handleFilterSubmit();
|
|
324
|
+
} }))] }))] }), _jsx(Typography, { className: style.filterNotice, children: "Filters apply to loaded rows only" })] }), _jsxs(Drawer.Footer, { className: style.filterDrawerFooter, children: [_jsx(Drawer.Close, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Cancel" }) }), _jsx(Drawer.Close, { asChild: true, children: _jsx(Button, { onClick: handleFilterSubmit, children: "Apply Filter" }) })] })] }) })] }), tableMode && onTableModeChange && (_jsxs("div", { className: style.tableModeToggle, children: [_jsx(Button, { size: "small", variant: tableMode === 'auto' ? 'solid' : 'outline', onClick: () => onTableModeChange('auto'), children: "Smart" }), _jsx(Button, { size: "small", variant: tableMode === 'full' ? 'solid' : 'outline', onClick: () => onTableModeChange('full'), children: "All" })] })), isPickMode && selectionCount > 0 && (_jsxs(Button, { size: "small", onClick: handlePickSelected, style: { marginLeft: 'auto' }, children: [_jsx(Icons.Check, { width: "16", height: "16" }), "Use Selected (", selectionCount, pickMaxCount != null ? ` / ${pickMaxCount}` : '', ")"] }))] }), _jsx(AnimatePresence, { children: hasSelection && !isPickMode && (_jsxs(motion.div, { className: style.selectionBar, initial: { opacity: 0, height: 0 }, animate: { opacity: 1, height: 'auto' }, exit: { opacity: 0, height: 0 }, transition: { duration: reducedMotion ? 0 : 0.2, ease: [0.4, 0, 0.2, 1] }, children: [_jsxs("span", { className: style.selectionCount, children: [selectionCount, " selected"] }), _jsxs("div", { className: style.selectionActions, children: [_jsx(Button, { size: "small", variant: "ghost", onClick: clearSelection, disabled: batchOperationPending, children: "Clear" }), onBatchUpdate && (_jsxs(Button, { size: "small", onClick: () => setBatchEditOpen(true), disabled: batchOperationPending, children: [_jsx(Icons.Pencil, { width: 16, height: 16 }), "Edit Selected (", selectionCount, ")"] })), canDelete && (_jsxs(Button, { size: "small", variant: "outline", className: style.deleteDataButton, onClick: handleDeleteCollectively, disabled: batchOperationPending, children: [batchOperationPending ? _jsx(Spinner, { size: "small" }) : _jsx(Icons.Trash2, { width: 16, height: 16 }), "Delete (", selectionCount, ")"] }))] })] })) }), _jsx(AnimatePresence, { children: batchResult && (_jsxs(motion.div, { className: cl(style.batchResultBar, batchResult.isError && style.batchResultError), initial: { opacity: 0, height: 0 }, animate: { opacity: 1, height: 'auto' }, exit: { opacity: 0, height: 0 }, transition: { duration: reducedMotion ? 0 : 0.2 }, children: [batchResult.message, _jsx("button", { className: style.batchResultDismiss, onClick: () => setBatchResult(null), children: _jsx(Icons.X, { width: 14, height: 14 }) })] })) }), _jsx(AnimatePresence, { children: filters.length > 0 && (_jsx(motion.div, { className: style.tableBar, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, exit: { opacity: 0, x: -20 }, transition: {
|
|
325
|
+
duration: reducedMotion ? 0 : 0.25,
|
|
326
|
+
ease: [0.4, 0, 0.2, 1],
|
|
327
|
+
}, children: _jsx("div", { className: style.filterBar, children: _jsxs(_Fragment, { children: [_jsx(motion.div, { initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, transition: {
|
|
328
|
+
duration: reducedMotion ? 0 : 0.2,
|
|
329
|
+
ease: [0.4, 0, 0.2, 1],
|
|
330
|
+
}, children: _jsxs(Typography, { className: style.filterLabel, children: ["Filters (", filteredData.length, " of ", data.length, "):"] }) }), filters.map((filter, index) => (_jsx(motion.div, { initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, exit: { opacity: 0, x: -10, scale: 0.9 }, transition: {
|
|
331
|
+
duration: reducedMotion ? 0 : 0.2,
|
|
332
|
+
delay: reducedMotion ? 0 : 0.1 + index * 0.05,
|
|
333
|
+
ease: [0.4, 0, 0.2, 1],
|
|
334
|
+
}, children: _jsx(FilterBadge, { label: formatFilterLabel(filter), isActive: filter.isActive, onToggle: () => handleFilterToggle(index), onRemove: () => handleFilterRemove(index) }) }, filter.id))), filters.length > 1 && (_jsx(Button, { size: "small", variant: "ghost", onClick: () => setFilters([]), children: "Clear all" }))] }) }) })) }), _jsx("div", { className: style.tableContainer, children: _jsxs("table", { className: style.table, children: [_jsx("thead", { children: table.getHeaderGroups().map((headerGroup) => (_jsxs("tr", { className: style.tr, children: [_jsx("th", { className: cl(style.th, style.sticky, style.stickyLeft), children: _jsx(Checkbox, { onCheckedChange: toggleSelectAll }) }), headerGroup.headers.map((header, index) => {
|
|
335
|
+
var _a;
|
|
336
|
+
return (_jsx("th", { colSpan: header.colSpan, className: style.th, children: index === 0 ? (_jsx("div", { children: flexRender(header.column.columnDef.header, header.getContext()) })) : (_jsxs("div", { className: header.column.getCanSort()
|
|
337
|
+
? style.canSort
|
|
338
|
+
: '',
|
|
339
|
+
onClick: header.column.getToggleSortingHandler(), children: [flexRender(header.column.columnDef.header, header.getContext()), (_a = {
|
|
340
|
+
asc: _jsx(Icons.ChevronUp, { width: 14, height: 14 }),
|
|
341
|
+
desc: _jsx(Icons.ChevronDown, { width: 14, height: 14 }),
|
|
342
|
+
}[header.column.getIsSorted()]) !== null && _a !== void 0 ? _a : (_jsx(Icons.ChevronsLeftRight, { width: 14, height: 14 }))] })) }, header.id));
|
|
343
|
+
}), _jsx("th", { className: cl(style.th, style.sticky, style.stickyRight), children: "Actions" })] }, headerGroup.id))) }), _jsx(motion.tbody, { variants: tableStaggerContainer, initial: "initial", animate: "animate", children: isLoading
|
|
344
|
+
? Array.from({ length: config.pageSize }, (_, index) => (_jsx(TableRowSkeleton, { columns: 1 }, `skeleton-${index}`)))
|
|
345
|
+
: table.getRowModel().rows.map((row) => {
|
|
346
|
+
var _a;
|
|
347
|
+
const rowUri = (_a = row.original) === null || _a === void 0 ? void 0 : _a.id;
|
|
348
|
+
const rowSelected = rowUri ? isRowSelected(rowUri) : false;
|
|
349
|
+
return (_jsxs(motion.tr, { className: cl(style.tr, isPickMode && style.pickableRow, isPickMode && pickLimitReached && !rowSelected && style.pickDisabledRow), variants: reducedMotion ? undefined : tableRowItem, layout: true, onClick: isPickMode ? () => {
|
|
350
|
+
if (!rowUri)
|
|
351
|
+
return;
|
|
352
|
+
if (pickLimitReached && !rowSelected)
|
|
353
|
+
return;
|
|
354
|
+
toggleRowSelection(rowUri);
|
|
355
|
+
} : undefined, style: isPickMode ? { cursor: pickLimitReached && !rowSelected ? 'not-allowed' : 'pointer' } : undefined, children: [_jsx("td", { className: cl(style.td, style.sticky, style.stickyLeft), onClick: isPickMode ? (e) => e.stopPropagation() : undefined, children: _jsx(Checkbox, { onCheckedChange: () => {
|
|
356
|
+
if (!rowUri)
|
|
357
|
+
return;
|
|
358
|
+
if (isPickMode && pickLimitReached && !rowSelected)
|
|
359
|
+
return;
|
|
360
|
+
toggleRowSelection(rowUri);
|
|
361
|
+
}, checked: rowSelected, disabled: isPickMode && pickLimitReached && !rowSelected }) }), row.getVisibleCells().map((cell) => {
|
|
362
|
+
return (_jsx("td", { className: cl(style.td, getCellStyle(cell)), children: renderCellContent(cell) }, cell.id));
|
|
363
|
+
}), _jsx("td", { className: cl(style.td, style.sticky, style.stickyRight), children: isPickMode ? (_jsxs(Button, { size: "small", onClick: () => handlePick(row), disabled: pickLimitReached && !rowSelected, children: [_jsx(Icons.Check, { width: "16", height: "16" }), "Select"] })) : (_jsxs("div", { className: style.actionButtons, children: [_jsx(IconButton, { size: "small", variant: "ghost", "aria-label": "View", className: cl(style.actionTableButton, style.viewAction), onClick: () => handleView(row), children: _jsx(Icons.Eye, { width: 16, height: 16 }) }), _jsx(IconButton, { size: "small", variant: "ghost", "aria-label": "Edit", className: cl(style.actionTableButton, style.editAction), onClick: () => handleEdit(row), children: _jsx(Icons.Pencil, { width: 16, height: 16 }) }), canDelete && (_jsx(IconButton, { size: "small", variant: "ghost", "aria-label": "Delete", className: cl(style.actionTableButton, style.removeAction), onClick: () => handleDelete(row), children: _jsx(Icons.Trash2, { width: 16, height: 16 }) }))] })) })] }, row.id));
|
|
364
|
+
}) })] }) }), _jsxs("div", { className: style.pagination, children: [_jsxs(Typography, { className: style.pageInfo, children: ["Page", ' ', _jsxs("strong", { children: [table.getState().pagination.pageIndex + 1, " of", ' ', table.getPageCount().toLocaleString()] })] }), _jsx("div", { className: style.pageInput, children: _jsx(Input, { size: "small", type: "number", className: style.goToPageForm, value: table.getState().pagination.pageIndex + 1, onChange: (e) => {
|
|
365
|
+
const page = e.target.value ? Number(e.target.value) - 1 : 0;
|
|
366
|
+
table.setPageIndex(page);
|
|
367
|
+
} }) }), _jsx("div", { className: style.pageShowItem, children: _jsxs(Select.Root, { value: table.getState().pagination.pageSize.toString(), onValueChange: (value) => table.setPageSize(Number(value)), children: [_jsx(Select.Trigger, { size: "small", children: _jsx(Select.Value, { placeholder: "Show Rows" }) }), _jsx(Select.Content, { children: _jsx(Select.Group, { children: [10, 20, 30, 40, 50].map((pageSize) => (_jsxs(Select.Item, { value: pageSize.toString(), children: ["Show ", pageSize] }, pageSize))) }) })] }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.firstPage(), disabled: !table.getCanPreviousPage(), children: _jsx(Icons.ChevronsLeft, { width: 18, height: 18 }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: _jsx(Icons.ChevronLeft, { width: 18, height: 18 }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: _jsx(Icons.ChevronRight, { width: 18, height: 18 }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.lastPage(), disabled: !table.getCanNextPage(), children: _jsx(Icons.ChevronsRight, { width: 18, height: 18 }) })] }), deletionTarget && canDelete && (_jsx(InstanceDeletionDialog, { isOpen: true, projectId: deletionProjectId, targets: deletionTarget.targets, labels: deletionTarget.labels, onClose: () => setDeletionTarget(null), onDeleted: handleDeletionCompleted, previewDeletion: previewDeletion, executeDeletion: executeDeletion })), onBatchUpdate && propertiesMap && (_jsx(BatchEditDrawer, { isOpen: batchEditOpen, onClose: () => setBatchEditOpen(false), shape: shape, properties: propertiesMap, selectedCount: selectionCount, onApply: handleBatchApply, isLoading: batchOperationPending }))] }));
|
|
368
|
+
}
|
|
369
|
+
export default ReactTable;
|
|
370
|
+
//# sourceMappingURL=ReactTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactTable.js","sourceRoot":"","sources":["../../../src/components/ReactTable.tsx"],"names":[],"mappings":"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"}
|