@jmruthers/pace-core 0.5.123 → 0.5.125
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/{DataTable-WTS4IRF2.js → DataTable-IHD4JP4W.js} +2 -2
- package/dist/{chunk-ZPJMYGEP.js → chunk-HC7AOIC2.js} +2 -2
- package/dist/{chunk-DHMFMXFV.js → chunk-JJVLYIEO.js} +75 -17
- package/dist/chunk-JJVLYIEO.js.map +1 -0
- package/dist/components.js +2 -2
- package/dist/index.js +2 -2
- package/dist/utils.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RoleManagementResult.md +1 -1
- 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 +2 -2
- package/package.json +1 -1
- package/src/components/DataTable/components/DataTableCore.tsx +62 -11
- package/src/components/DataTable/components/UnifiedTableBody.tsx +27 -5
- package/dist/chunk-DHMFMXFV.js.map +0 -1
- /package/dist/{DataTable-WTS4IRF2.js.map → DataTable-IHD4JP4W.js.map} +0 -0
- /package/dist/{chunk-ZPJMYGEP.js.map → chunk-HC7AOIC2.js.map} +0 -0
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
sortHierarchicalDataWithSorting,
|
|
55
55
|
validateHierarchicalData,
|
|
56
56
|
validatePaginationConfig
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-JJVLYIEO.js";
|
|
58
58
|
import "./chunk-35ZDPMBM.js";
|
|
59
59
|
import "./chunk-WP5I5GLN.js";
|
|
60
60
|
import "./chunk-3DBFLLLU.js";
|
|
@@ -157,4 +157,4 @@ export {
|
|
|
157
157
|
validateHierarchicalData,
|
|
158
158
|
validatePaginationConfig
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=DataTable-
|
|
160
|
+
//# sourceMappingURL=DataTable-IHD4JP4W.js.map
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
SelectSeparator,
|
|
26
26
|
SelectTrigger,
|
|
27
27
|
SelectValue
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-JJVLYIEO.js";
|
|
29
29
|
import {
|
|
30
30
|
useCan,
|
|
31
31
|
usePermissions,
|
|
@@ -4566,4 +4566,4 @@ export {
|
|
|
4566
4566
|
PublicPageDiagnostic,
|
|
4567
4567
|
PublicPageContextChecker
|
|
4568
4568
|
};
|
|
4569
|
-
//# sourceMappingURL=chunk-
|
|
4569
|
+
//# sourceMappingURL=chunk-HC7AOIC2.js.map
|
|
@@ -7648,7 +7648,12 @@ function SelectEditField2({
|
|
|
7648
7648
|
const [isOpen, setIsOpen] = React10.useState(false);
|
|
7649
7649
|
const [showCreateOption, setShowCreateOption] = React10.useState(false);
|
|
7650
7650
|
React10.useEffect(() => {
|
|
7651
|
-
if (!isOpen || !isSearchable || !isCreatable)
|
|
7651
|
+
if (!isOpen || !isSearchable || !isCreatable || !columnDef.onCreateNew) {
|
|
7652
|
+
if (!isOpen || !isCreatable || !columnDef.onCreateNew) {
|
|
7653
|
+
setShowCreateOption(false);
|
|
7654
|
+
}
|
|
7655
|
+
return;
|
|
7656
|
+
}
|
|
7652
7657
|
const findAndAttachSearchInput = () => {
|
|
7653
7658
|
let searchInput = null;
|
|
7654
7659
|
if (selectRef.current) {
|
|
@@ -7681,7 +7686,19 @@ function SelectEditField2({
|
|
|
7681
7686
|
return false;
|
|
7682
7687
|
};
|
|
7683
7688
|
const hasMatch = (columnDef.fieldOptions || []).some(checkMatch);
|
|
7684
|
-
|
|
7689
|
+
const shouldShow = !hasMatch && isCreatable && !!columnDef.onCreateNew;
|
|
7690
|
+
if (import.meta.env.MODE === "development" && isCreatable) {
|
|
7691
|
+
logger.debug("[SelectEditField] Creatable select check:", {
|
|
7692
|
+
searchTerm: currentSearch,
|
|
7693
|
+
searchLower,
|
|
7694
|
+
hasMatch,
|
|
7695
|
+
isCreatable,
|
|
7696
|
+
hasOnCreateNew: !!columnDef.onCreateNew,
|
|
7697
|
+
shouldShow,
|
|
7698
|
+
fieldOptionsCount: columnDef.fieldOptions?.length || 0
|
|
7699
|
+
});
|
|
7700
|
+
}
|
|
7701
|
+
setShowCreateOption(shouldShow);
|
|
7685
7702
|
} else {
|
|
7686
7703
|
setShowCreateOption(false);
|
|
7687
7704
|
}
|
|
@@ -7702,7 +7719,8 @@ function SelectEditField2({
|
|
|
7702
7719
|
return false;
|
|
7703
7720
|
};
|
|
7704
7721
|
const hasMatch = (columnDef.fieldOptions || []).some(checkMatch);
|
|
7705
|
-
|
|
7722
|
+
const shouldShow = !hasMatch && isCreatable && !!columnDef.onCreateNew;
|
|
7723
|
+
setShowCreateOption(shouldShow);
|
|
7706
7724
|
} else {
|
|
7707
7725
|
setShowCreateOption(false);
|
|
7708
7726
|
}
|
|
@@ -7724,7 +7742,7 @@ function SelectEditField2({
|
|
|
7724
7742
|
};
|
|
7725
7743
|
}
|
|
7726
7744
|
return cleanup;
|
|
7727
|
-
}, [isOpen, isSearchable, isCreatable, columnDef.fieldOptions]);
|
|
7745
|
+
}, [isOpen, isSearchable, isCreatable, columnDef.fieldOptions, columnDef.onCreateNew]);
|
|
7728
7746
|
const handleCreateNew = React10.useCallback(async () => {
|
|
7729
7747
|
if (!isCreatable || !columnDef.onCreateNew || !searchTerm.trim()) return;
|
|
7730
7748
|
try {
|
|
@@ -7782,7 +7800,7 @@ function SelectEditField2({
|
|
|
7782
7800
|
}
|
|
7783
7801
|
return null;
|
|
7784
7802
|
}),
|
|
7785
|
-
showCreateOption && isCreatable && searchTerm.trim() && /* @__PURE__ */ jsxs10(
|
|
7803
|
+
showCreateOption && isCreatable && searchTerm.trim() && columnDef.onCreateNew && /* @__PURE__ */ jsxs10(
|
|
7786
7804
|
SelectItem,
|
|
7787
7805
|
{
|
|
7788
7806
|
value: `__create_new__${searchTerm}`,
|
|
@@ -11714,6 +11732,15 @@ function DataTableInternal({
|
|
|
11714
11732
|
[incomingFeatures]
|
|
11715
11733
|
);
|
|
11716
11734
|
const { permissions, secureFeatures, effectivePageId } = useDataTablePermissions(rbac, requestedFeatures);
|
|
11735
|
+
if (import.meta.env.MODE === "development") {
|
|
11736
|
+
logger.debug("[DataTableCore] Creation feature check:", {
|
|
11737
|
+
"incomingFeatures.creation": incomingFeatures.creation,
|
|
11738
|
+
"requestedFeatures.creation": requestedFeatures.creation,
|
|
11739
|
+
"secureFeatures.creation": secureFeatures.creation,
|
|
11740
|
+
"permissions.canCreate.can": permissions.canCreate.can,
|
|
11741
|
+
"onCreateRow prop provided": !!onCreateRow
|
|
11742
|
+
});
|
|
11743
|
+
}
|
|
11717
11744
|
const effectiveColumnOrder = useEffectiveColumnOrder({
|
|
11718
11745
|
columns,
|
|
11719
11746
|
externalColumnOrder,
|
|
@@ -11968,29 +11995,60 @@ function DataTableInternal({
|
|
|
11968
11995
|
fetchServerData,
|
|
11969
11996
|
cleanup
|
|
11970
11997
|
});
|
|
11971
|
-
const secureHandlers = useMemo14(() =>
|
|
11972
|
-
|
|
11973
|
-
|
|
11974
|
-
|
|
11975
|
-
|
|
11976
|
-
|
|
11977
|
-
|
|
11978
|
-
|
|
11998
|
+
const secureHandlers = useMemo14(() => {
|
|
11999
|
+
const handlers = {
|
|
12000
|
+
onEditRow: permissions.canUpdate.can ? onEditRow : void 0,
|
|
12001
|
+
onDeleteRow: permissions.canDelete.can ? onDeleteRow : void 0,
|
|
12002
|
+
onCreateRow: permissions.canCreate.can ? onCreateRow : void 0,
|
|
12003
|
+
onImport: permissions.canImport.can ? onImport : void 0,
|
|
12004
|
+
onExport: permissions.canExport.can ? onExport : void 0,
|
|
12005
|
+
onDeleteSelected: permissions.canDelete.can ? onDeleteSelected : void 0
|
|
12006
|
+
};
|
|
12007
|
+
if (import.meta.env.MODE === "development") {
|
|
12008
|
+
logger.debug("[DataTableCore] Creation handler check:", {
|
|
12009
|
+
"permissions.canCreate.can": permissions.canCreate.can,
|
|
12010
|
+
"onCreateRow prop provided": !!onCreateRow,
|
|
12011
|
+
"secureHandlers.onCreateRow": !!handlers.onCreateRow,
|
|
12012
|
+
"secureFeatures.creation": secureFeatures.creation,
|
|
12013
|
+
"will pass onCreateRow to toolbar": secureFeatures.creation && !!handlers.onCreateRow
|
|
12014
|
+
});
|
|
12015
|
+
}
|
|
12016
|
+
return handlers;
|
|
12017
|
+
}, [permissions.canUpdate.can, permissions.canDelete.can, permissions.canCreate.can, permissions.canImport.can, permissions.canExport.can, onEditRow, onDeleteRow, onCreateRow, onImport, onExport, onDeleteSelected, secureFeatures.creation, logger]);
|
|
12018
|
+
if (import.meta.env.MODE === "development") {
|
|
12019
|
+
logger.debug("[DataTableCore] \u26A0\uFE0F CREATION BUTTON DIAGNOSIS:", {
|
|
12020
|
+
"\u2705 permissions.canCreate.can": permissions.canCreate.can,
|
|
12021
|
+
"\u2753 features.creation enabled": secureFeatures.creation,
|
|
12022
|
+
"\u2753 onCreateRow handler provided": !!onCreateRow,
|
|
12023
|
+
"\u2753 secureHandlers.onCreateRow": !!secureHandlers.onCreateRow,
|
|
12024
|
+
"\u{1F50D} WILL SHOW BUTTON": secureFeatures.creation && permissions.canCreate.can && !!onCreateRow,
|
|
12025
|
+
"\u{1F4A1} SOLUTION": !secureFeatures.creation ? "Enable features={{ creation: true }} in DataTable props" : !onCreateRow ? "Provide onCreateRow handler in DataTable props" : "All conditions met - button should be visible"
|
|
12026
|
+
});
|
|
12027
|
+
}
|
|
11979
12028
|
const effectiveActions = useMemo14(() => {
|
|
11980
12029
|
const result = [...actions];
|
|
11981
12030
|
logger.debug("Action Configuration Debug:", {
|
|
11982
12031
|
originalActions: actions.length,
|
|
11983
12032
|
secureFeatures: {
|
|
11984
12033
|
editing: secureFeatures.editing,
|
|
11985
|
-
deletion: secureFeatures.deletion
|
|
12034
|
+
deletion: secureFeatures.deletion,
|
|
12035
|
+
creation: secureFeatures.creation,
|
|
12036
|
+
import: secureFeatures.import,
|
|
12037
|
+
export: secureFeatures.export
|
|
11986
12038
|
},
|
|
11987
12039
|
secureHandlers: {
|
|
11988
12040
|
onEditRow: !!secureHandlers.onEditRow,
|
|
11989
|
-
onDeleteRow: !!secureHandlers.onDeleteRow
|
|
12041
|
+
onDeleteRow: !!secureHandlers.onDeleteRow,
|
|
12042
|
+
onCreateRow: !!secureHandlers.onCreateRow,
|
|
12043
|
+
onImport: !!secureHandlers.onImport,
|
|
12044
|
+
onExport: !!secureHandlers.onExport
|
|
11990
12045
|
},
|
|
11991
12046
|
permissions: {
|
|
11992
12047
|
canUpdate: permissions.canUpdate.can,
|
|
11993
|
-
canDelete: permissions.canDelete.can
|
|
12048
|
+
canDelete: permissions.canDelete.can,
|
|
12049
|
+
canCreate: permissions.canCreate.can,
|
|
12050
|
+
canImport: permissions.canImport.can,
|
|
12051
|
+
canExport: permissions.canExport.can
|
|
11994
12052
|
}
|
|
11995
12053
|
});
|
|
11996
12054
|
if (secureFeatures.editing && secureHandlers.onEditRow && !result.some((a) => a.label === "Edit")) {
|
|
@@ -12756,4 +12814,4 @@ lodash/lodash.js:
|
|
|
12756
12814
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
12757
12815
|
*)
|
|
12758
12816
|
*/
|
|
12759
|
-
//# sourceMappingURL=chunk-
|
|
12817
|
+
//# sourceMappingURL=chunk-JJVLYIEO.js.map
|