@jmruthers/pace-core 0.5.114 → 0.5.116
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/dist/{AuthService-CVgsgtaZ.d.ts → AuthService-D4646R4b.d.ts} +9 -4
- package/dist/{DataTable-3JRLZXER.js → DataTable-ZOAKQ3SU.js} +10 -9
- package/dist/{UnifiedAuthProvider-KZZUO27W.js → UnifiedAuthProvider-YFN7YGVN.js} +4 -3
- package/dist/{api-PKU4PUBO.js → api-TNIBJWLM.js} +3 -3
- package/dist/{audit-H4YJJF7R.js → audit-T36HM7IM.js} +2 -2
- package/dist/{chunk-4OX5PXHX.js → chunk-2GJ5GL77.js} +4 -5
- package/dist/chunk-2GJ5GL77.js.map +1 -0
- package/dist/{chunk-5YIZFEUQ.js → chunk-2LM4QQGH.js} +31 -35
- package/dist/chunk-2LM4QQGH.js.map +1 -0
- package/dist/{chunk-3OGQLOJM.js → chunk-3DBFLLLU.js} +30 -1
- package/dist/chunk-3DBFLLLU.js.map +1 -0
- package/dist/{chunk-KTHLNIMA.js → chunk-ECOVPXYS.js} +13 -62
- package/dist/chunk-ECOVPXYS.js.map +1 -0
- package/dist/{chunk-OO3V7W4H.js → chunk-KA3PSVNV.js} +87 -40
- package/dist/chunk-KA3PSVNV.js.map +1 -0
- package/dist/{chunk-HKWQN44G.js → chunk-KMPWND3F.js} +15 -15
- package/dist/{chunk-L36JW4KV.js → chunk-LFS45U62.js} +2 -2
- package/dist/{chunk-NEONKMTU.js → chunk-LZYHAL7Y.js} +9 -4
- package/dist/{chunk-NEONKMTU.js.map → chunk-LZYHAL7Y.js.map} +1 -1
- package/dist/{chunk-BUN7NMV7.js → chunk-O3FTRYEU.js} +2 -2
- package/dist/{chunk-F6QB26OS.js → chunk-P3PUOL6B.js} +80 -8
- package/dist/chunk-P3PUOL6B.js.map +1 -0
- package/dist/{chunk-ZPXWJA4H.js → chunk-PHDAXDHB.js} +131 -5
- package/dist/chunk-PHDAXDHB.js.map +1 -0
- package/dist/chunk-UJI6WSMD.js +201 -0
- package/dist/{chunk-5CDJCTOO.js.map → chunk-UJI6WSMD.js.map} +1 -1
- package/dist/{chunk-JHWQNJP3.js → chunk-UKZWNQMB.js} +65 -19
- package/dist/{chunk-JHWQNJP3.js.map → chunk-UKZWNQMB.js.map} +1 -1
- package/dist/{chunk-7H75SHXZ.js → chunk-VN3OOE35.js} +2 -2
- package/dist/{chunk-QKIVSZ2O.js → chunk-WP5I5GLN.js} +2 -2
- package/dist/components.d.ts +1 -1
- package/dist/components.js +12 -11
- package/dist/components.js.map +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +10 -9
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +19 -16
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +2 -2
- package/dist/providers.js +3 -2
- package/dist/rbac/index.d.ts +82 -1
- package/dist/rbac/index.js +13 -10
- package/dist/{useToast-DRah6K-g.d.ts → useToast-Cs_g32bg.d.ts} +8 -6
- package/dist/utils.js +6 -4
- package/dist/utils.js.map +1 -1
- package/dist/validation.js +3 -1
- package/dist/validation.js.map +1 -1
- package/docs/README.md +4 -0
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +1 -1
- package/docs/api/classes/MissingUserContextError.md +1 -1
- package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
- package/docs/api/classes/PermissionDeniedError.md +1 -1
- package/docs/api/classes/PublicErrorBoundary.md +1 -1
- package/docs/api/classes/RBACAuditManager.md +35 -12
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +1 -1
- package/docs/api/classes/RBACError.md +1 -1
- package/docs/api/classes/RBACNotInitializedError.md +1 -1
- package/docs/api/classes/SecureSupabaseClient.md +1 -1
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +1 -1
- package/docs/api/interfaces/ButtonProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +1 -1
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +1 -1
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +1 -1
- package/docs/api/interfaces/DataTableColumn.md +1 -1
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
- package/docs/api/interfaces/EmptyStateConfig.md +1 -1
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/EventAppRoleData.md +71 -0
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +1 -1
- package/docs/api/interfaces/FileReference.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +1 -1
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/GrantEventAppRoleParams.md +122 -0
- package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +1 -1
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
- package/docs/api/interfaces/NavigationContextType.md +1 -1
- package/docs/api/interfaces/NavigationGuardProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +27 -27
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PageAccessRecord.md +1 -1
- package/docs/api/interfaces/PagePermissionContextType.md +1 -1
- package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
- package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
- package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
- package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
- package/docs/api/interfaces/RBACConfig.md +1 -1
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RevokeEventAppRoleParams.md +100 -0
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RoleManagementResult.md +52 -0
- package/docs/api/interfaces/RouteAccessRecord.md +1 -1
- package/docs/api/interfaces/RouteConfig.md +1 -1
- package/docs/api/interfaces/SecureDataContextType.md +1 -1
- package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +1 -1
- package/docs/api/interfaces/UserMenuProps.md +1 -1
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +43 -16
- package/docs/architecture/rpc-function-standards.md +193 -0
- package/package.json +1 -1
- package/src/__tests__/TEST_STANDARD.md +244 -2
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +46 -16
- package/src/components/DataTable/__tests__/keyboard.test.tsx +276 -217
- package/src/components/DataTable/components/DataTableCore.tsx +32 -17
- package/src/components/DataTable/components/DataTableToolbar.tsx +3 -2
- package/src/components/DataTable/components/EditableRow.tsx +18 -1
- package/src/components/DataTable/components/ImportModal.tsx +25 -2
- package/src/components/DataTable/components/ViewRowModal.tsx +1 -1
- package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +735 -0
- package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +572 -0
- package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.test.tsx +708 -0
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +451 -0
- package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +456 -0
- package/src/components/DataTable/components/__tests__/EditableRow.test.tsx +454 -0
- package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +462 -0
- package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +423 -0
- package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +393 -0
- package/src/components/DataTable/components/__tests__/GroupingDropdown.test.tsx +617 -0
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +734 -0
- package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +412 -0
- package/src/components/DataTable/hooks/useTableHandlers.ts +4 -0
- package/src/components/EventSelector/EventSelector.tsx +5 -25
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +12 -7
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +4 -0
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +7 -2
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +13 -8
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +109 -100
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +18 -13
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +17 -12
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +2 -0
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +11 -1
- package/src/components/PasswordReset/PasswordChangeForm.test.tsx +2 -2
- package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +648 -0
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +10 -7
- package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +4 -12
- package/src/components/Select/Select.tsx +8 -0
- package/src/components/Toast/Toast.test.tsx +8 -7
- package/src/components/Toast/Toast.tsx +4 -4
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +367 -3
- package/src/hooks/__tests__/usePublicFileDisplay.test.ts +916 -0
- package/src/hooks/useEventTheme.ts +49 -18
- package/src/hooks/usePermissionCache.ts +5 -3
- package/src/hooks/useSecureDataAccess.ts +11 -1
- package/src/hooks/useToast.ts +11 -12
- package/src/providers/services/EventServiceProvider.tsx +15 -8
- package/src/rbac/__tests__/cache-invalidation.test.ts +385 -0
- package/src/rbac/audit.test.ts +206 -0
- package/src/rbac/audit.ts +37 -2
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +26 -23
- package/src/rbac/errors.test.ts +340 -0
- package/src/rbac/hooks/index.ts +9 -0
- package/src/rbac/hooks/useResolvedScope.test.ts +1063 -0
- package/src/rbac/hooks/useRoleManagement.test.ts +908 -0
- package/src/rbac/hooks/useRoleManagement.ts +255 -0
- package/src/services/AuthService.ts +10 -0
- package/src/services/EventService.ts +111 -50
- package/src/services/__tests__/AuthService.test.ts +1 -1
- package/src/services/__tests__/EventService.test.ts +60 -45
- package/src/services/interfaces/IEventService.ts +1 -1
- package/src/utils/__tests__/deviceFingerprint.unit.test.ts +320 -0
- package/src/utils/__tests__/logger.unit.test.ts +398 -0
- package/src/utils/__tests__/validation.unit.test.ts +225 -1
- package/src/utils/file-reference.test.ts +214 -0
- package/dist/chunk-3OGQLOJM.js.map +0 -1
- package/dist/chunk-4OX5PXHX.js.map +0 -1
- package/dist/chunk-5CDJCTOO.js +0 -190
- package/dist/chunk-5YIZFEUQ.js.map +0 -1
- package/dist/chunk-F6QB26OS.js.map +0 -1
- package/dist/chunk-KTHLNIMA.js.map +0 -1
- package/dist/chunk-OO3V7W4H.js.map +0 -1
- package/dist/chunk-ZPXWJA4H.js.map +0 -1
- package/src/rbac/audit-enhanced.ts +0 -351
- /package/dist/{DataTable-3JRLZXER.js.map → DataTable-ZOAKQ3SU.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-KZZUO27W.js.map → UnifiedAuthProvider-YFN7YGVN.js.map} +0 -0
- /package/dist/{api-PKU4PUBO.js.map → api-TNIBJWLM.js.map} +0 -0
- /package/dist/{audit-H4YJJF7R.js.map → audit-T36HM7IM.js.map} +0 -0
- /package/dist/{chunk-HKWQN44G.js.map → chunk-KMPWND3F.js.map} +0 -0
- /package/dist/{chunk-L36JW4KV.js.map → chunk-LFS45U62.js.map} +0 -0
- /package/dist/{chunk-BUN7NMV7.js.map → chunk-O3FTRYEU.js.map} +0 -0
- /package/dist/{chunk-7H75SHXZ.js.map → chunk-VN3OOE35.js.map} +0 -0
- /package/dist/{chunk-QKIVSZ2O.js.map → chunk-WP5I5GLN.js.map} +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useCan,
|
|
3
3
|
useResolvedScope
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PHDAXDHB.js";
|
|
5
5
|
import {
|
|
6
6
|
toast,
|
|
7
7
|
useDataTablePerformance
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2GJ5GL77.js";
|
|
9
9
|
import {
|
|
10
10
|
init_UnifiedAuthProvider
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VN3OOE35.js";
|
|
12
12
|
import {
|
|
13
13
|
useUnifiedAuth
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KA3PSVNV.js";
|
|
15
15
|
import {
|
|
16
16
|
cn
|
|
17
17
|
} from "./chunk-PYUXFQJ3.js";
|
|
@@ -6074,8 +6074,14 @@ var SelectTrigger = React5.forwardRef(
|
|
|
6074
6074
|
const hasChevron = childChildren.some(
|
|
6075
6075
|
(child) => React5.isValidElement(child) && (child.type === ChevronDown || child.type === "svg" && child.props["data-testid"] === "chevron-down" || typeof child === "object" && "type" in child && typeof child.type === "function" && child.type.name === "ChevronDown")
|
|
6076
6076
|
);
|
|
6077
|
+
const childClassName = children.props.className;
|
|
6078
|
+
const mergedClassName = cn(
|
|
6079
|
+
triggerProps.className,
|
|
6080
|
+
childClassName
|
|
6081
|
+
);
|
|
6077
6082
|
return React5.cloneElement(children, {
|
|
6078
6083
|
...triggerProps,
|
|
6084
|
+
className: mergedClassName,
|
|
6079
6085
|
children: hasChevron ? childChildren : [
|
|
6080
6086
|
...childChildren,
|
|
6081
6087
|
/* @__PURE__ */ jsx4(
|
|
@@ -6616,6 +6622,7 @@ function DataTableToolbar({
|
|
|
6616
6622
|
{
|
|
6617
6623
|
variant: "outline",
|
|
6618
6624
|
onClick: onImportClick,
|
|
6625
|
+
"data-restore-target": "datatable-import-button",
|
|
6619
6626
|
children: [
|
|
6620
6627
|
/* @__PURE__ */ jsx8(Upload, { className: "h-4 w-4 mr-2 flex-shrink-0" }),
|
|
6621
6628
|
/* @__PURE__ */ jsx8("span", { className: "truncate", children: "Import" })
|
|
@@ -7348,6 +7355,19 @@ function EditableRow({
|
|
|
7348
7355
|
}
|
|
7349
7356
|
}) : /* @__PURE__ */ jsx13("span", { className: "text-sm text-gray-600", children: String(cell.getValue() ?? "") });
|
|
7350
7357
|
}
|
|
7358
|
+
if (cell.column.columnDef.cell) {
|
|
7359
|
+
return flexRender(cell.column.columnDef.cell, {
|
|
7360
|
+
...cell.getContext(),
|
|
7361
|
+
getIsEditing: () => true,
|
|
7362
|
+
setValue: (value) => {
|
|
7363
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof Date)) {
|
|
7364
|
+
onEditingDataChange({ ...editingData, ...value });
|
|
7365
|
+
} else {
|
|
7366
|
+
onEditingDataChange({ ...editingData, [cell.column.id]: value });
|
|
7367
|
+
}
|
|
7368
|
+
}
|
|
7369
|
+
});
|
|
7370
|
+
}
|
|
7351
7371
|
const shouldGetRef = !hasAssignedRef.current;
|
|
7352
7372
|
if (shouldGetRef) {
|
|
7353
7373
|
hasAssignedRef.current = true;
|
|
@@ -8993,6 +9013,19 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
|
|
|
8993
9013
|
isMountedRef.current = false;
|
|
8994
9014
|
};
|
|
8995
9015
|
}, []);
|
|
9016
|
+
useEffect5(() => {
|
|
9017
|
+
if (!isOpen) {
|
|
9018
|
+
setFile(null);
|
|
9019
|
+
setPreviewData(null);
|
|
9020
|
+
setTotalCount(0);
|
|
9021
|
+
setError(null);
|
|
9022
|
+
setValidationErrors([]);
|
|
9023
|
+
setIsProcessing(false);
|
|
9024
|
+
if (fileInputRef.current) {
|
|
9025
|
+
fileInputRef.current.value = "";
|
|
9026
|
+
}
|
|
9027
|
+
}
|
|
9028
|
+
}, [isOpen]);
|
|
8996
9029
|
const {
|
|
8997
9030
|
title = "Import Data",
|
|
8998
9031
|
description = "Upload a CSV file to import multiple records at once.",
|
|
@@ -9162,14 +9195,14 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
|
|
|
9162
9195
|
] })
|
|
9163
9196
|
] })
|
|
9164
9197
|
] }),
|
|
9165
|
-
previewData && previewData.length > 0
|
|
9198
|
+
file && previewData && previewData.length > 0 ? /* @__PURE__ */ jsxs14("div", { className: "space-y-3", children: [
|
|
9166
9199
|
/* @__PURE__ */ jsx18("h4", { className: "text-sec-900", children: previewHeaderText }),
|
|
9167
9200
|
/* @__PURE__ */ jsx18("div", { className: "border rounded-lg overflow-hidden", children: /* @__PURE__ */ jsx18("div", { className: "overflow-x-auto max-h-48", children: /* @__PURE__ */ jsxs14("table", { className: "min-w-full text-xs", children: [
|
|
9168
9201
|
/* @__PURE__ */ jsx18("thead", { className: "bg-sec-50", children: /* @__PURE__ */ jsx18("tr", { children: Object.keys(previewData[0]).map((header) => /* @__PURE__ */ jsx18("th", { className: "px-2 py-1 text-left font-medium text-sec-900 border-b", children: header }, header)) }) }),
|
|
9169
9202
|
/* @__PURE__ */ jsx18("tbody", { children: previewData.map((row, index) => /* @__PURE__ */ jsx18("tr", { className: index % 2 === 0 ? "bg-app-main-50" : "bg-sec-50", children: Object.values(row).map((value, cellIndex) => /* @__PURE__ */ jsx18("td", { className: "px-2 py-1 text-sec-700 border-b", children: String(value) }, cellIndex)) }, index)) })
|
|
9170
9203
|
] }) }) }),
|
|
9171
9204
|
/* @__PURE__ */ jsx18("p", { className: "text-sec-500", children: totalRowsText.replace("{count}", totalCount.toString()) })
|
|
9172
|
-
] }),
|
|
9205
|
+
] }) : !file ? /* @__PURE__ */ jsx18("div", { className: "border rounded-lg p-6 text-center bg-sec-50", children: /* @__PURE__ */ jsx18("p", { className: "text-sec-500", children: "Select a CSV file to preview" }) }) : null,
|
|
9173
9206
|
/* @__PURE__ */ jsxs14("div", { className: "flex justify-end gap-2", children: [
|
|
9174
9207
|
/* @__PURE__ */ jsx18(Button, { variant: "outline", onClick: handleClose, children: cancelButtonText }),
|
|
9175
9208
|
/* @__PURE__ */ jsx18(
|
|
@@ -10205,6 +10238,7 @@ function useTableHandlers({
|
|
|
10205
10238
|
const nextSelection = typeof updaterOrValue === "function" ? updaterOrValue(currentSelection) : updaterOrValue;
|
|
10206
10239
|
if (selection === void 0) {
|
|
10207
10240
|
actions.setRowSelection(nextSelection);
|
|
10241
|
+
onRowSelectionChange?.(nextSelection);
|
|
10208
10242
|
return;
|
|
10209
10243
|
}
|
|
10210
10244
|
onRowSelectionChange?.(nextSelection);
|
|
@@ -11707,15 +11741,32 @@ function DataTableInternal({
|
|
|
11707
11741
|
// Column resizing is not currently supported
|
|
11708
11742
|
}
|
|
11709
11743
|
);
|
|
11744
|
+
const lastFocusedElementRef = useRef7(null);
|
|
11745
|
+
const wasImportModalOpenRef = useRef7(false);
|
|
11710
11746
|
useEffect12(() => {
|
|
11711
11747
|
if (state.showImportModal) {
|
|
11748
|
+
wasImportModalOpenRef.current = true;
|
|
11712
11749
|
keyboardNavigation.storeFocus();
|
|
11750
|
+
if (document.activeElement instanceof HTMLElement) {
|
|
11751
|
+
lastFocusedElementRef.current = document.activeElement;
|
|
11752
|
+
}
|
|
11713
11753
|
}
|
|
11714
11754
|
}, [state.showImportModal, keyboardNavigation]);
|
|
11715
11755
|
useEffect12(() => {
|
|
11716
11756
|
if (!state.showImportModal) {
|
|
11757
|
+
if (!wasImportModalOpenRef.current) {
|
|
11758
|
+
return;
|
|
11759
|
+
}
|
|
11760
|
+
wasImportModalOpenRef.current = false;
|
|
11717
11761
|
setTimeout(() => {
|
|
11718
|
-
|
|
11762
|
+
const storedElement = lastFocusedElementRef.current;
|
|
11763
|
+
lastFocusedElementRef.current = null;
|
|
11764
|
+
const elementToRestore = storedElement?.isConnected ? storedElement : document.querySelector('[data-restore-target="datatable-import-button"]');
|
|
11765
|
+
if (elementToRestore && typeof elementToRestore.focus === "function") {
|
|
11766
|
+
elementToRestore.focus();
|
|
11767
|
+
} else {
|
|
11768
|
+
keyboardNavigation.restoreFocus();
|
|
11769
|
+
}
|
|
11719
11770
|
}, 100);
|
|
11720
11771
|
}
|
|
11721
11772
|
}, [state.showImportModal, keyboardNavigation]);
|
|
@@ -12158,7 +12209,12 @@ function DataTableInternal({
|
|
|
12158
12209
|
stateActions.setColumnVisibility({ ...state.columnVisibility, [columnId]: visible });
|
|
12159
12210
|
},
|
|
12160
12211
|
onCreateRow: secureFeatures.creation && secureHandlers.onCreateRow ? () => stateActions.setCreating(true) : void 0,
|
|
12161
|
-
onImportClick: () =>
|
|
12212
|
+
onImportClick: () => {
|
|
12213
|
+
if (document.activeElement instanceof HTMLElement) {
|
|
12214
|
+
lastFocusedElementRef.current = document.activeElement;
|
|
12215
|
+
}
|
|
12216
|
+
stateActions.setImportModal(true);
|
|
12217
|
+
},
|
|
12162
12218
|
onExport: secureHandlers.onExport || (async () => {
|
|
12163
12219
|
try {
|
|
12164
12220
|
const tableRows = table.getFilteredRowModel().rows;
|
|
@@ -12187,16 +12243,6 @@ function DataTableInternal({
|
|
|
12187
12243
|
// Preserve accessorFn if present (will use getValue() if available)
|
|
12188
12244
|
accessorFn: hasAccessorFn ? originalCol.accessorFn : void 0
|
|
12189
12245
|
});
|
|
12190
|
-
if (hasAccessorFn && editAccessorKey) {
|
|
12191
|
-
const idHeader = `${displayHeader} (ID)`;
|
|
12192
|
-
visibleColumns2.push({
|
|
12193
|
-
id: editAccessorKey,
|
|
12194
|
-
accessorKey: editAccessorKey,
|
|
12195
|
-
header: idHeader,
|
|
12196
|
-
isIdColumn: true,
|
|
12197
|
-
editAccessorKey
|
|
12198
|
-
});
|
|
12199
|
-
}
|
|
12200
12246
|
});
|
|
12201
12247
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
12202
12248
|
const filename = title ? `${title.replace(/[^a-z0-9]/gi, "_").toLowerCase()}_${timestamp}.csv` : `data_export_${timestamp}.csv`;
|
|
@@ -12708,4 +12754,4 @@ lodash/lodash.js:
|
|
|
12708
12754
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
12709
12755
|
*)
|
|
12710
12756
|
*/
|
|
12711
|
-
//# sourceMappingURL=chunk-
|
|
12757
|
+
//# sourceMappingURL=chunk-UKZWNQMB.js.map
|