@jmruthers/pace-core 0.5.79 → 0.5.80

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.
Files changed (143) hide show
  1. package/dist/{DataTable-BCBW5SCL.js → DataTable-OOZS7YTJ.js} +6 -6
  2. package/dist/{UnifiedAuthProvider-TSHK77PL.js → UnifiedAuthProvider-K2IZAY5F.js} +3 -3
  3. package/dist/{chunk-WYKXRCXB.js → chunk-5BN3YGNK.js} +157 -53
  4. package/dist/{chunk-WYKXRCXB.js.map → chunk-5BN3YGNK.js.map} +1 -1
  5. package/dist/{chunk-GXWREXH7.js → chunk-CBSD3BZ3.js} +2 -2
  6. package/dist/{chunk-CALYF6HH.js → chunk-I2VVV5PQ.js} +2 -2
  7. package/dist/{chunk-3WFKFBVQ.js → chunk-KUYWZVR2.js} +4 -4
  8. package/dist/{chunk-TI67X46U.js → chunk-MJWN5JKI.js} +7 -7
  9. package/dist/{chunk-RMK6FOHF.js → chunk-MVFZYTIZ.js} +142 -75
  10. package/dist/{chunk-RMK6FOHF.js.map → chunk-MVFZYTIZ.js.map} +1 -1
  11. package/dist/{chunk-LVV6J6ZF.js → chunk-NTW3KGS4.js} +5 -5
  12. package/dist/{chunk-HQ7KTKC3.js → chunk-RIXPZJUB.js} +2 -2
  13. package/dist/{chunk-JYCP4L55.js → chunk-S3JKDMD5.js} +3 -3
  14. package/dist/{chunk-OBXLAL3J.js → chunk-V5SWX6KL.js} +4 -4
  15. package/dist/{chunk-IQFITAE3.js → chunk-YVUZWLQG.js} +3 -3
  16. package/dist/components.js +8 -8
  17. package/dist/hooks.js +7 -7
  18. package/dist/index.js +11 -11
  19. package/dist/providers.js +2 -2
  20. package/dist/rbac/index.js +7 -7
  21. package/dist/utils.js +1 -1
  22. package/docs/api/classes/ColumnFactory.md +1 -1
  23. package/docs/api/classes/ErrorBoundary.md +1 -1
  24. package/docs/api/classes/InvalidScopeError.md +1 -1
  25. package/docs/api/classes/MissingUserContextError.md +1 -1
  26. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  27. package/docs/api/classes/PermissionDeniedError.md +1 -1
  28. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  29. package/docs/api/classes/RBACAuditManager.md +1 -1
  30. package/docs/api/classes/RBACCache.md +1 -1
  31. package/docs/api/classes/RBACEngine.md +1 -1
  32. package/docs/api/classes/RBACError.md +1 -1
  33. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  34. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  35. package/docs/api/classes/StorageUtils.md +1 -1
  36. package/docs/api/enums/FileCategory.md +1 -1
  37. package/docs/api/interfaces/AggregateConfig.md +1 -1
  38. package/docs/api/interfaces/ButtonProps.md +1 -1
  39. package/docs/api/interfaces/CardProps.md +1 -1
  40. package/docs/api/interfaces/ColorPalette.md +1 -1
  41. package/docs/api/interfaces/ColorShade.md +1 -1
  42. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  43. package/docs/api/interfaces/DataRecord.md +1 -1
  44. package/docs/api/interfaces/DataTableAction.md +1 -1
  45. package/docs/api/interfaces/DataTableColumn.md +1 -1
  46. package/docs/api/interfaces/DataTableProps.md +1 -1
  47. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  48. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  49. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  50. package/docs/api/interfaces/EventLogoProps.md +1 -1
  51. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  52. package/docs/api/interfaces/FileMetadata.md +1 -1
  53. package/docs/api/interfaces/FileReference.md +1 -1
  54. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  55. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  56. package/docs/api/interfaces/FileUploadProps.md +1 -1
  57. package/docs/api/interfaces/FooterProps.md +1 -1
  58. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  59. package/docs/api/interfaces/InputProps.md +1 -1
  60. package/docs/api/interfaces/LabelProps.md +1 -1
  61. package/docs/api/interfaces/LoginFormProps.md +1 -1
  62. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  63. package/docs/api/interfaces/NavigationContextType.md +1 -1
  64. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  65. package/docs/api/interfaces/NavigationItem.md +1 -1
  66. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  67. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  68. package/docs/api/interfaces/Organisation.md +1 -1
  69. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  70. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  71. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  72. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  73. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  74. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  75. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  76. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  77. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  78. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  79. package/docs/api/interfaces/PaletteData.md +1 -1
  80. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  81. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  82. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  83. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  84. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  85. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  86. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  87. package/docs/api/interfaces/RBACConfig.md +1 -1
  88. package/docs/api/interfaces/RBACLogger.md +1 -1
  89. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  90. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  91. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  92. package/docs/api/interfaces/RouteConfig.md +1 -1
  93. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  94. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  95. package/docs/api/interfaces/StorageConfig.md +1 -1
  96. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  97. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  98. package/docs/api/interfaces/StorageListOptions.md +1 -1
  99. package/docs/api/interfaces/StorageListResult.md +1 -1
  100. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  101. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  102. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  103. package/docs/api/interfaces/StyleImport.md +1 -1
  104. package/docs/api/interfaces/SwitchProps.md +1 -1
  105. package/docs/api/interfaces/ToastActionElement.md +1 -1
  106. package/docs/api/interfaces/ToastProps.md +1 -1
  107. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  108. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  109. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  110. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  111. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  112. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  113. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  114. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  115. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  116. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  117. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  118. package/docs/api/interfaces/UserEventAccess.md +1 -1
  119. package/docs/api/interfaces/UserMenuProps.md +1 -1
  120. package/docs/api/interfaces/UserProfile.md +1 -1
  121. package/docs/api/modules.md +3 -3
  122. package/docs/architecture/rpc-function-standards.md +757 -0
  123. package/package.json +1 -1
  124. package/src/components/DataTable/components/DataTableCore.tsx +105 -18
  125. package/src/components/DataTable/components/PaginationControls.tsx +78 -77
  126. package/src/components/DataTable/hooks/useDataTableConfiguration.ts +29 -16
  127. package/src/components/DataTable/hooks/useEffectiveColumnOrder.ts +6 -4
  128. package/src/components/DataTable/hooks/useTableColumns.ts +20 -19
  129. package/src/components/DataTable/hooks/useTableHandlers.ts +8 -3
  130. package/src/providers/services/UnifiedAuthProvider.tsx +175 -54
  131. package/src/styles/core.css +1 -2
  132. package/src/styles/base.css +0 -208
  133. /package/dist/{DataTable-BCBW5SCL.js.map → DataTable-OOZS7YTJ.js.map} +0 -0
  134. /package/dist/{UnifiedAuthProvider-TSHK77PL.js.map → UnifiedAuthProvider-K2IZAY5F.js.map} +0 -0
  135. /package/dist/{chunk-GXWREXH7.js.map → chunk-CBSD3BZ3.js.map} +0 -0
  136. /package/dist/{chunk-CALYF6HH.js.map → chunk-I2VVV5PQ.js.map} +0 -0
  137. /package/dist/{chunk-3WFKFBVQ.js.map → chunk-KUYWZVR2.js.map} +0 -0
  138. /package/dist/{chunk-TI67X46U.js.map → chunk-MJWN5JKI.js.map} +0 -0
  139. /package/dist/{chunk-LVV6J6ZF.js.map → chunk-NTW3KGS4.js.map} +0 -0
  140. /package/dist/{chunk-HQ7KTKC3.js.map → chunk-RIXPZJUB.js.map} +0 -0
  141. /package/dist/{chunk-JYCP4L55.js.map → chunk-S3JKDMD5.js.map} +0 -0
  142. /package/dist/{chunk-OBXLAL3J.js.map → chunk-V5SWX6KL.js.map} +0 -0
  143. /package/dist/{chunk-IQFITAE3.js.map → chunk-YVUZWLQG.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  init_useOrganisationService,
4
4
  useEventService2 as useEventService,
5
5
  useOrganisationService2 as useOrganisationService
6
- } from "./chunk-WYKXRCXB.js";
6
+ } from "./chunk-5BN3YGNK.js";
7
7
  import {
8
8
  __esm
9
9
  } from "./chunk-PLDDJCW6.js";
@@ -61,4 +61,4 @@ export {
61
61
  init_useOrganisations,
62
62
  useEvents
63
63
  };
64
- //# sourceMappingURL=chunk-GXWREXH7.js.map
64
+ //# sourceMappingURL=chunk-CBSD3BZ3.js.map
@@ -4,7 +4,7 @@ import {
4
4
  init_InactivityServiceProvider,
5
5
  init_OrganisationServiceProvider,
6
6
  init_UnifiedAuthProvider
7
- } from "./chunk-WYKXRCXB.js";
7
+ } from "./chunk-5BN3YGNK.js";
8
8
 
9
9
  // src/providers/index.ts
10
10
  init_UnifiedAuthProvider();
@@ -12,4 +12,4 @@ init_EventServiceProvider();
12
12
  init_OrganisationServiceProvider();
13
13
  init_InactivityServiceProvider();
14
14
  init_AuthServiceProvider();
15
- //# sourceMappingURL=chunk-CALYF6HH.js.map
15
+ //# sourceMappingURL=chunk-I2VVV5PQ.js.map
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  init_useOrganisations,
3
3
  useOrganisations
4
- } from "./chunk-GXWREXH7.js";
4
+ } from "./chunk-CBSD3BZ3.js";
5
5
  import {
6
6
  init_UnifiedAuthProvider
7
- } from "./chunk-HQ7KTKC3.js";
7
+ } from "./chunk-RIXPZJUB.js";
8
8
  import {
9
9
  OrganisationServiceContext,
10
10
  OrganisationServiceProvider,
11
11
  init_OrganisationServiceProvider,
12
12
  useOrganisationService,
13
13
  useUnifiedAuth
14
- } from "./chunk-WYKXRCXB.js";
14
+ } from "./chunk-5BN3YGNK.js";
15
15
  import {
16
16
  __esm,
17
17
  __export
@@ -417,4 +417,4 @@ export {
417
417
  clearPublicLogoCache,
418
418
  getPublicLogoCacheStats
419
419
  };
420
- //# sourceMappingURL=chunk-3WFKFBVQ.js.map
420
+ //# sourceMappingURL=chunk-KUYWZVR2.js.map
@@ -22,7 +22,7 @@ import {
22
22
  SelectSeparator,
23
23
  SelectTrigger,
24
24
  SelectValue
25
- } from "./chunk-RMK6FOHF.js";
25
+ } from "./chunk-MVFZYTIZ.js";
26
26
  import {
27
27
  isPermitted,
28
28
  isSuperAdmin
@@ -34,25 +34,25 @@ import {
34
34
  useAppConfig,
35
35
  usePublicEventLogo,
36
36
  usePublicPageContext
37
- } from "./chunk-3WFKFBVQ.js";
37
+ } from "./chunk-KUYWZVR2.js";
38
38
  import {
39
39
  useToast
40
40
  } from "./chunk-YCKPEMJA.js";
41
41
  import {
42
42
  useEvents,
43
43
  useOrganisations
44
- } from "./chunk-GXWREXH7.js";
44
+ } from "./chunk-CBSD3BZ3.js";
45
45
  import {
46
46
  UnifiedAuthProvider_exports,
47
47
  init_UnifiedAuthProvider
48
- } from "./chunk-HQ7KTKC3.js";
48
+ } from "./chunk-RIXPZJUB.js";
49
49
  import {
50
50
  EventServiceContext,
51
51
  EventServiceProvider,
52
52
  init_EventServiceProvider,
53
53
  useEventService,
54
54
  useUnifiedAuth
55
- } from "./chunk-WYKXRCXB.js";
55
+ } from "./chunk-5BN3YGNK.js";
56
56
  import {
57
57
  LoadingSpinner
58
58
  } from "./chunk-CDQ3PX7L.js";
@@ -1398,7 +1398,7 @@ function PaceAppLayout({
1398
1398
  }
1399
1399
  }
1400
1400
  if (hasAccess && currentRoute.roles && currentRoute.roles.length > 0 && user?.id) {
1401
- const { useUnifiedAuth: useUnifiedAuth2 } = await import("./UnifiedAuthProvider-TSHK77PL.js");
1401
+ const { useUnifiedAuth: useUnifiedAuth2 } = await import("./UnifiedAuthProvider-K2IZAY5F.js");
1402
1402
  hasAccess = true;
1403
1403
  }
1404
1404
  if (!isMounted) return;
@@ -3883,4 +3883,4 @@ export {
3883
3883
  PublicPageDiagnostic,
3884
3884
  PublicPageContextChecker
3885
3885
  };
3886
- //# sourceMappingURL=chunk-TI67X46U.js.map
3886
+ //# sourceMappingURL=chunk-MJWN5JKI.js.map
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  useCan,
3
3
  useResolvedScope
4
- } from "./chunk-IQFITAE3.js";
4
+ } from "./chunk-YVUZWLQG.js";
5
5
  import {
6
6
  toast,
7
7
  useDataTablePerformance
8
8
  } from "./chunk-YCKPEMJA.js";
9
9
  import {
10
10
  init_UnifiedAuthProvider
11
- } from "./chunk-HQ7KTKC3.js";
11
+ } from "./chunk-RIXPZJUB.js";
12
12
  import {
13
13
  useUnifiedAuth
14
- } from "./chunk-WYKXRCXB.js";
14
+ } from "./chunk-5BN3YGNK.js";
15
15
  import {
16
16
  cn
17
17
  } from "./chunk-PYUXFQJ3.js";
@@ -8043,9 +8043,9 @@ function PaginationControls({
8043
8043
  "footer",
8044
8044
  {
8045
8045
  "aria-label": "pagination",
8046
- className: "mx-auto grid grid-cols-[auto_auto_1fr_auto_auto_auto_auto] gap-4",
8046
+ className: "mx-auto grid grid-cols-[auto_auto_1fr_auto_auto_auto_auto] gap-4 items-center my-2",
8047
8047
  children: [
8048
- /* @__PURE__ */ jsx15("p", { className: "text-sm text-sec-600", children: "Rows per page" }),
8048
+ /* @__PURE__ */ jsx15("label", { className: "text-sec-600", children: "Rows per page" }),
8049
8049
  /* @__PURE__ */ jsxs11(
8050
8050
  Select,
8051
8051
  {
@@ -8073,7 +8073,7 @@ function PaginationControls({
8073
8073
  getModeIcon(),
8074
8074
  /* @__PURE__ */ jsx15("span", { children: getModeLabel() })
8075
8075
  ] }),
8076
- /* @__PURE__ */ jsxs11("p", { className: "justify-self-center text-sm text-sec-600", children: [
8076
+ /* @__PURE__ */ jsxs11("p", { className: "justify-self-center text-sm text-sec-600 my-0 py-0", children: [
8077
8077
  "Page ",
8078
8078
  currentPageIndex + 1,
8079
8079
  " of ",
@@ -9662,10 +9662,11 @@ function useEffectiveColumnOrder({
9662
9662
  return columns.map((column) => column.id || column.accessorKey || "").filter((identifier) => Boolean(identifier));
9663
9663
  }, [columns, externalColumnOrder]);
9664
9664
  return useMemo9(() => {
9665
- if (selectionEnabled && !baseOrder.includes("select")) {
9666
- return ["select", ...baseOrder];
9665
+ if (!selectionEnabled) {
9666
+ return baseOrder;
9667
9667
  }
9668
- return baseOrder;
9668
+ const orderWithoutSelect = baseOrder.filter((id) => id !== "select");
9669
+ return ["select", ...orderWithoutSelect];
9669
9670
  }, [baseOrder, selectionEnabled]);
9670
9671
  }
9671
9672
 
@@ -9726,12 +9727,13 @@ function useTableHandlers({
9726
9727
  }, [actions, stateSnapshot.pagination]);
9727
9728
  const handleColumnOrderChange = useCallback8((updaterOrValue) => {
9728
9729
  const nextValue = typeof updaterOrValue === "function" ? updaterOrValue(stateSnapshot.columnOrder) : updaterOrValue;
9729
- actions.setColumnOrder(nextValue);
9730
+ const normalizedOrder = nextValue.includes("select") ? ["select", ...nextValue.filter((id) => id !== "select")] : nextValue;
9731
+ actions.setColumnOrder(normalizedOrder);
9730
9732
  if (canPersistOrder) {
9731
- updateColumnOrder(nextValue);
9733
+ updateColumnOrder(normalizedOrder);
9732
9734
  }
9733
9735
  onLayoutChange?.({
9734
- columnOrder: nextValue,
9736
+ columnOrder: normalizedOrder,
9735
9737
  columnVisibility: stateSnapshot.columnVisibility
9736
9738
  });
9737
9739
  }, [actions, stateSnapshot.columnOrder, stateSnapshot.columnVisibility, canPersistOrder, updateColumnOrder, onLayoutChange]);
@@ -9777,38 +9779,45 @@ function useDataTableConfiguration({
9777
9779
  finalDataCount,
9778
9780
  pageSize
9779
9781
  }) {
9780
- return useMemo11(() => ({
9781
- data,
9782
- columns,
9783
- state: {
9784
- sorting: stateSnapshot.sorting,
9785
- columnFilters: stateSnapshot.columnFilters,
9786
- columnVisibility: stateSnapshot.columnVisibility,
9787
- rowSelection: stateSnapshot.rowSelection,
9788
- grouping: stateSnapshot.grouping,
9789
- expanded: stateSnapshot.expanded,
9790
- pagination: stateSnapshot.pagination,
9791
- globalFilter: stateSnapshot.globalFilter,
9792
- columnOrder: stateSnapshot.columnOrder
9793
- },
9794
- initialState: {
9795
- expanded: features.grouping ? {} : void 0
9796
- },
9797
- enableRowSelection: features.selection,
9798
- enableGrouping: features.grouping,
9799
- getRowId,
9800
- ...handlers,
9801
- getCoreRowModel: getCoreRowModel(),
9802
- getFilteredRowModel: finalPaginationMode === "client" ? getFilteredRowModel() : void 0,
9803
- getSortedRowModel: finalPaginationMode === "client" ? getSortedRowModel() : void 0,
9804
- getPaginationRowModel: features.pagination ? getPaginationRowModel() : void 0,
9805
- getGroupedRowModel: features.grouping ? getGroupedRowModel() : void 0,
9806
- getExpandedRowModel: features.grouping ? getExpandedRowModel() : void 0,
9807
- manualSorting: finalPaginationMode === "server",
9808
- manualFiltering: finalPaginationMode === "server",
9809
- manualPagination: finalPaginationMode === "server",
9810
- pageCount: finalPaginationMode === "server" ? Math.ceil(finalDataCount / pageSize) : void 0
9811
- }), [
9782
+ return useMemo11(() => {
9783
+ let normalizedColumnOrder = [...stateSnapshot.columnOrder];
9784
+ if (features.selection) {
9785
+ normalizedColumnOrder = normalizedColumnOrder.filter((id) => id !== "select");
9786
+ normalizedColumnOrder = ["select", ...normalizedColumnOrder];
9787
+ }
9788
+ return {
9789
+ data,
9790
+ columns,
9791
+ state: {
9792
+ sorting: stateSnapshot.sorting,
9793
+ columnFilters: stateSnapshot.columnFilters,
9794
+ columnVisibility: stateSnapshot.columnVisibility,
9795
+ rowSelection: stateSnapshot.rowSelection,
9796
+ grouping: stateSnapshot.grouping,
9797
+ expanded: stateSnapshot.expanded,
9798
+ pagination: stateSnapshot.pagination,
9799
+ globalFilter: stateSnapshot.globalFilter,
9800
+ columnOrder: normalizedColumnOrder
9801
+ },
9802
+ initialState: {
9803
+ expanded: features.grouping ? {} : void 0
9804
+ },
9805
+ enableRowSelection: features.selection,
9806
+ enableGrouping: features.grouping,
9807
+ getRowId,
9808
+ ...handlers,
9809
+ getCoreRowModel: getCoreRowModel(),
9810
+ getFilteredRowModel: finalPaginationMode === "client" ? getFilteredRowModel() : void 0,
9811
+ getSortedRowModel: finalPaginationMode === "client" ? getSortedRowModel() : void 0,
9812
+ getPaginationRowModel: features.pagination ? getPaginationRowModel() : void 0,
9813
+ getGroupedRowModel: features.grouping ? getGroupedRowModel() : void 0,
9814
+ getExpandedRowModel: features.grouping ? getExpandedRowModel() : void 0,
9815
+ manualSorting: finalPaginationMode === "server",
9816
+ manualFiltering: finalPaginationMode === "server",
9817
+ manualPagination: finalPaginationMode === "server",
9818
+ pageCount: finalPaginationMode === "server" ? Math.ceil(finalDataCount / pageSize) : void 0
9819
+ };
9820
+ }, [
9812
9821
  data,
9813
9822
  columns,
9814
9823
  stateSnapshot,
@@ -10472,16 +10481,18 @@ function useTableColumns({
10472
10481
  meta: { align: "right" }
10473
10482
  }) : null;
10474
10483
  const finalColumns = [];
10484
+ if (selectionColumn) {
10485
+ finalColumns.push(selectionColumn);
10486
+ }
10475
10487
  if (columnOrder && columnOrder.length > 0) {
10476
- const usedColumnIds = new Set(columnOrder);
10477
- if (selectionColumn && !usedColumnIds.has("select")) {
10478
- finalColumns.unshift(selectionColumn);
10479
- }
10488
+ const usedColumnIds = new Set(
10489
+ columnOrder.filter((id) => id !== "select" && id !== "actions")
10490
+ );
10480
10491
  for (const columnId of columnOrder) {
10481
- if (columnId === "select" && selectionColumn) {
10482
- finalColumns.push(selectionColumn);
10492
+ if (columnId === "select") {
10493
+ continue;
10483
10494
  } else if (columnId === "actions" && actionsColumn) {
10484
- finalColumns.push(actionsColumn);
10495
+ continue;
10485
10496
  } else {
10486
10497
  const dataColumn = baseColumns.find(
10487
10498
  (col) => col.id === columnId || "accessorKey" in col && String(col.accessorKey) === columnId
@@ -10496,13 +10507,10 @@ function useTableColumns({
10496
10507
  return !usedColumnIds.has(colId);
10497
10508
  });
10498
10509
  finalColumns.push(...remainingDataColumns);
10499
- if (actionsColumn && !usedColumnIds.has("actions")) {
10510
+ if (actionsColumn) {
10500
10511
  finalColumns.push(actionsColumn);
10501
10512
  }
10502
10513
  } else {
10503
- if (selectionColumn) {
10504
- finalColumns.push(selectionColumn);
10505
- }
10506
10514
  finalColumns.push(...baseColumns);
10507
10515
  if (actionsColumn) {
10508
10516
  finalColumns.push(actionsColumn);
@@ -11138,9 +11146,25 @@ function DataTableInternal({
11138
11146
  });
11139
11147
  useEffect12(() => {
11140
11148
  if (secureFeatures.columnReordering && isColumnOrderLoaded && savedColumnOrder && savedColumnOrder.length > 0) {
11141
- stateActions.setColumnOrder(savedColumnOrder);
11149
+ const normalizedOrder = secureFeatures.selection && savedColumnOrder.includes("select") ? ["select", ...savedColumnOrder.filter((id) => id !== "select")] : savedColumnOrder;
11150
+ stateActions.setColumnOrder(normalizedOrder);
11151
+ }
11152
+ }, [secureFeatures.columnReordering, secureFeatures.selection, isColumnOrderLoaded, savedColumnOrder, stateActions]);
11153
+ useEffect12(() => {
11154
+ if (secureFeatures.selection && state.columnOrder.includes("select") && state.columnOrder[0] !== "select") {
11155
+ const normalizedOrder = ["select", ...state.columnOrder.filter((id) => id !== "select")];
11156
+ if (import.meta.env?.MODE === "development") {
11157
+ console.warn("[DataTable] Correcting column order state - moving select to first position:", {
11158
+ before: state.columnOrder,
11159
+ after: normalizedOrder
11160
+ });
11161
+ }
11162
+ stateActions.setColumnOrder(normalizedOrder);
11163
+ if (secureFeatures.columnReordering) {
11164
+ updateColumnOrder(normalizedOrder);
11165
+ }
11142
11166
  }
11143
- }, [secureFeatures.columnReordering, isColumnOrderLoaded, savedColumnOrder, stateActions]);
11167
+ }, [secureFeatures.selection, secureFeatures.columnReordering, state.columnOrder, stateActions, updateColumnOrder]);
11144
11168
  const finalPageSizeOptions = optimizedPageSizeOptions;
11145
11169
  const validatedInitialPageSize = useMemo14(() => {
11146
11170
  if (!secureFeatures.pagination || !finalPageSizeOptions.length) {
@@ -11160,6 +11184,24 @@ function DataTableInternal({
11160
11184
  }
11161
11185
  return closestOption;
11162
11186
  }, [initialPageSize, finalPageSizeOptions, secureFeatures.pagination]);
11187
+ useEffect12(() => {
11188
+ if (secureFeatures.pagination && validatedInitialPageSize !== state.pagination.pageSize && finalPageSizeOptions.includes(validatedInitialPageSize)) {
11189
+ stateActions.setPagination({
11190
+ ...state.pagination,
11191
+ pageSize: validatedInitialPageSize,
11192
+ pageIndex: 0
11193
+ });
11194
+ }
11195
+ }, [validatedInitialPageSize, secureFeatures.pagination, finalPageSizeOptions, stateActions, state.pagination.pageSize]);
11196
+ const effectivePageSize = useMemo14(() => {
11197
+ if (!secureFeatures.pagination || !finalPageSizeOptions.length) {
11198
+ return state.pagination.pageSize;
11199
+ }
11200
+ if (!finalPageSizeOptions.includes(state.pagination.pageSize)) {
11201
+ return validatedInitialPageSize;
11202
+ }
11203
+ return state.pagination.pageSize;
11204
+ }, [state.pagination.pageSize, validatedInitialPageSize, secureFeatures.pagination, finalPageSizeOptions]);
11163
11205
  const isLoading = externalIsLoading || performanceLoading;
11164
11206
  const handleSearch = useCallback10((value) => {
11165
11207
  stateActions.setSearchQuery(value);
@@ -11246,32 +11288,56 @@ function DataTableInternal({
11246
11288
  }
11247
11289
  return result;
11248
11290
  }, [actions, secureFeatures, permissions, secureHandlers, resolvedGetRowId, stateActions, data]);
11291
+ const normalizedColumnOrderForColumns = useMemo14(() => {
11292
+ if (secureFeatures.selection && state.columnOrder.includes("select")) {
11293
+ return ["select", ...state.columnOrder.filter((id) => id !== "select")];
11294
+ }
11295
+ return state.columnOrder;
11296
+ }, [state.columnOrder, secureFeatures.selection]);
11249
11297
  const { enhancedColumns } = useTableColumns({
11250
11298
  columns,
11251
11299
  features: secureFeatures,
11252
11300
  effectiveActions,
11253
- columnOrder: state.columnOrder
11301
+ columnOrder: normalizedColumnOrderForColumns
11254
11302
  });
11255
- const tableStateSnapshot = useMemo14(() => ({
11256
- sorting: state.sorting,
11257
- columnFilters: state.columnFilters,
11258
- columnVisibility: state.columnVisibility,
11259
- rowSelection,
11260
- grouping: state.grouping,
11261
- expanded: state.expanded,
11262
- pagination: state.pagination,
11263
- globalFilter: searchQuery,
11264
- columnOrder: state.columnOrder
11265
- }), [
11303
+ const paginationStateWithValidatedSize = useMemo14(() => ({
11304
+ ...state.pagination,
11305
+ pageSize: effectivePageSize
11306
+ }), [state.pagination, effectivePageSize]);
11307
+ const tableStateSnapshot = useMemo14(() => {
11308
+ const normalizedColumnOrder = secureFeatures.selection && state.columnOrder.includes("select") ? ["select", ...state.columnOrder.filter((id) => id !== "select")] : state.columnOrder;
11309
+ if (import.meta.env?.MODE === "development" && secureFeatures.selection) {
11310
+ if (state.columnOrder[0] !== "select") {
11311
+ console.warn("[DataTable] Column order normalized:", {
11312
+ original: state.columnOrder,
11313
+ normalized: normalizedColumnOrder,
11314
+ firstColumnOriginal: state.columnOrder[0],
11315
+ firstColumnNormalized: normalizedColumnOrder[0]
11316
+ });
11317
+ }
11318
+ }
11319
+ return {
11320
+ sorting: state.sorting,
11321
+ columnFilters: state.columnFilters,
11322
+ columnVisibility: state.columnVisibility,
11323
+ rowSelection,
11324
+ grouping: state.grouping,
11325
+ expanded: state.expanded,
11326
+ pagination: paginationStateWithValidatedSize,
11327
+ globalFilter: searchQuery,
11328
+ columnOrder: normalizedColumnOrder
11329
+ };
11330
+ }, [
11266
11331
  state.sorting,
11267
11332
  state.columnFilters,
11268
11333
  state.columnVisibility,
11269
11334
  rowSelection,
11270
11335
  state.grouping,
11271
11336
  state.expanded,
11272
- state.pagination,
11337
+ paginationStateWithValidatedSize,
11273
11338
  searchQuery,
11274
- state.columnOrder
11339
+ state.columnOrder,
11340
+ secureFeatures.selection
11275
11341
  ]);
11276
11342
  const tableHandlers = useTableHandlers({
11277
11343
  state,
@@ -11295,7 +11361,7 @@ function DataTableInternal({
11295
11361
  getRowId: resolvedGetRowId,
11296
11362
  finalPaginationMode,
11297
11363
  finalDataCount,
11298
- pageSize: state.pagination.pageSize
11364
+ pageSize: effectivePageSize
11299
11365
  });
11300
11366
  const table = useReactTable(tableConfig);
11301
11367
  if (!user) {
@@ -11319,7 +11385,8 @@ function DataTableInternal({
11319
11385
  "table",
11320
11386
  {
11321
11387
  className: getTableClasses({
11322
- isFixed: true,
11388
+ isFixed: false,
11389
+ // Use auto table-layout so columns size based on content
11323
11390
  variant,
11324
11391
  className: cn("border-collapse relative w-full", className)
11325
11392
  }),
@@ -11393,7 +11460,7 @@ function DataTableInternal({
11393
11460
  ) })
11394
11461
  ] }),
11395
11462
  /* @__PURE__ */ jsxs17("colgroup", { children: [
11396
- hasSelectColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "select", className: "w-12" }),
11463
+ hasSelectColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "select" }),
11397
11464
  /* @__PURE__ */ jsx24("col", { span: dataColumns, "data-col-type": "data" }),
11398
11465
  hasActionsColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "actions" })
11399
11466
  ] }),
@@ -11793,4 +11860,4 @@ lodash/lodash.js:
11793
11860
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
11794
11861
  *)
11795
11862
  */
11796
- //# sourceMappingURL=chunk-RMK6FOHF.js.map
11863
+ //# sourceMappingURL=chunk-MVFZYTIZ.js.map