@jmruthers/pace-core 0.5.79 → 0.5.81

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 (146) hide show
  1. package/dist/{DataTable-BCBW5SCL.js → DataTable-OBT663FS.js} +6 -6
  2. package/dist/{UnifiedAuthProvider-TSHK77PL.js → UnifiedAuthProvider-K2IZAY5F.js} +3 -3
  3. package/dist/{chunk-TI67X46U.js → chunk-3FV24IOD.js} +7 -7
  4. package/dist/{chunk-WYKXRCXB.js → chunk-5BN3YGNK.js} +157 -53
  5. package/dist/{chunk-WYKXRCXB.js.map → chunk-5BN3YGNK.js.map} +1 -1
  6. package/dist/{chunk-RMK6FOHF.js → chunk-CACHCRZS.js} +158 -79
  7. package/dist/{chunk-RMK6FOHF.js.map → chunk-CACHCRZS.js.map} +1 -1
  8. package/dist/{chunk-GXWREXH7.js → chunk-CBSD3BZ3.js} +2 -2
  9. package/dist/{chunk-CALYF6HH.js → chunk-I2VVV5PQ.js} +2 -2
  10. package/dist/{chunk-3WFKFBVQ.js → chunk-KUYWZVR2.js} +4 -4
  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/__tests__/styles.test.ts +5 -5
  125. package/src/components/DataTable/components/DataTableCore.tsx +125 -18
  126. package/src/components/DataTable/components/PaginationControls.tsx +78 -77
  127. package/src/components/DataTable/components/UnifiedTableBody.tsx +12 -4
  128. package/src/components/DataTable/hooks/useDataTableConfiguration.ts +29 -16
  129. package/src/components/DataTable/hooks/useEffectiveColumnOrder.ts +6 -4
  130. package/src/components/DataTable/hooks/useTableColumns.ts +20 -19
  131. package/src/components/DataTable/hooks/useTableHandlers.ts +8 -3
  132. package/src/components/DataTable/styles.ts +1 -1
  133. package/src/providers/services/UnifiedAuthProvider.tsx +175 -54
  134. package/src/styles/core.css +1 -2
  135. package/src/styles/base.css +0 -208
  136. /package/dist/{DataTable-BCBW5SCL.js.map → DataTable-OBT663FS.js.map} +0 -0
  137. /package/dist/{UnifiedAuthProvider-TSHK77PL.js.map → UnifiedAuthProvider-K2IZAY5F.js.map} +0 -0
  138. /package/dist/{chunk-TI67X46U.js.map → chunk-3FV24IOD.js.map} +0 -0
  139. /package/dist/{chunk-GXWREXH7.js.map → chunk-CBSD3BZ3.js.map} +0 -0
  140. /package/dist/{chunk-CALYF6HH.js.map → chunk-I2VVV5PQ.js.map} +0 -0
  141. /package/dist/{chunk-3WFKFBVQ.js.map → chunk-KUYWZVR2.js.map} +0 -0
  142. /package/dist/{chunk-LVV6J6ZF.js.map → chunk-NTW3KGS4.js.map} +0 -0
  143. /package/dist/{chunk-HQ7KTKC3.js.map → chunk-RIXPZJUB.js.map} +0 -0
  144. /package/dist/{chunk-JYCP4L55.js.map → chunk-S3JKDMD5.js.map} +0 -0
  145. /package/dist/{chunk-OBXLAL3J.js.map → chunk-V5SWX6KL.js.map} +0 -0
  146. /package/dist/{chunk-IQFITAE3.js.map → chunk-YVUZWLQG.js.map} +0 -0
@@ -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";
@@ -5600,7 +5600,7 @@ IconButton.displayName = "IconButton";
5600
5600
  // src/components/DataTable/styles.ts
5601
5601
  var tableStyles = {
5602
5602
  // Main table container
5603
- table: "w-full caption-bottom text-sm",
5603
+ table: "w-full caption-top text-sm",
5604
5604
  tableFixed: "w-full table-fixed",
5605
5605
  // Table sections
5606
5606
  header: "[&_tr]:border-b",
@@ -7537,9 +7537,6 @@ var RowComponent = React8.memo(({
7537
7537
  })
7538
7538
  ] });
7539
7539
  }
7540
- if (grouping.length > 0 && typeof row.getParentRow === "function" && row.getParentRow() && (!row.getIsGrouped || !row.getIsGrouped())) {
7541
- return null;
7542
- }
7543
7540
  if (isEditing && editingData && onEditingDataChange && onSaveEditing && onCancelEditing) {
7544
7541
  return /* @__PURE__ */ jsx14(
7545
7542
  EditableRow,
@@ -8043,9 +8040,9 @@ function PaginationControls({
8043
8040
  "footer",
8044
8041
  {
8045
8042
  "aria-label": "pagination",
8046
- className: "mx-auto grid grid-cols-[auto_auto_1fr_auto_auto_auto_auto] gap-4",
8043
+ className: "mx-auto grid grid-cols-[auto_auto_1fr_auto_auto_auto_auto] gap-4 items-center my-2",
8047
8044
  children: [
8048
- /* @__PURE__ */ jsx15("p", { className: "text-sm text-sec-600", children: "Rows per page" }),
8045
+ /* @__PURE__ */ jsx15("label", { className: "text-sec-600", children: "Rows per page" }),
8049
8046
  /* @__PURE__ */ jsxs11(
8050
8047
  Select,
8051
8048
  {
@@ -8073,7 +8070,7 @@ function PaginationControls({
8073
8070
  getModeIcon(),
8074
8071
  /* @__PURE__ */ jsx15("span", { children: getModeLabel() })
8075
8072
  ] }),
8076
- /* @__PURE__ */ jsxs11("p", { className: "justify-self-center text-sm text-sec-600", children: [
8073
+ /* @__PURE__ */ jsxs11("p", { className: "justify-self-center text-sm text-sec-600 my-0 py-0", children: [
8077
8074
  "Page ",
8078
8075
  currentPageIndex + 1,
8079
8076
  " of ",
@@ -9662,10 +9659,11 @@ function useEffectiveColumnOrder({
9662
9659
  return columns.map((column) => column.id || column.accessorKey || "").filter((identifier) => Boolean(identifier));
9663
9660
  }, [columns, externalColumnOrder]);
9664
9661
  return useMemo9(() => {
9665
- if (selectionEnabled && !baseOrder.includes("select")) {
9666
- return ["select", ...baseOrder];
9662
+ if (!selectionEnabled) {
9663
+ return baseOrder;
9667
9664
  }
9668
- return baseOrder;
9665
+ const orderWithoutSelect = baseOrder.filter((id) => id !== "select");
9666
+ return ["select", ...orderWithoutSelect];
9669
9667
  }, [baseOrder, selectionEnabled]);
9670
9668
  }
9671
9669
 
@@ -9726,12 +9724,13 @@ function useTableHandlers({
9726
9724
  }, [actions, stateSnapshot.pagination]);
9727
9725
  const handleColumnOrderChange = useCallback8((updaterOrValue) => {
9728
9726
  const nextValue = typeof updaterOrValue === "function" ? updaterOrValue(stateSnapshot.columnOrder) : updaterOrValue;
9729
- actions.setColumnOrder(nextValue);
9727
+ const normalizedOrder = nextValue.includes("select") ? ["select", ...nextValue.filter((id) => id !== "select")] : nextValue;
9728
+ actions.setColumnOrder(normalizedOrder);
9730
9729
  if (canPersistOrder) {
9731
- updateColumnOrder(nextValue);
9730
+ updateColumnOrder(normalizedOrder);
9732
9731
  }
9733
9732
  onLayoutChange?.({
9734
- columnOrder: nextValue,
9733
+ columnOrder: normalizedOrder,
9735
9734
  columnVisibility: stateSnapshot.columnVisibility
9736
9735
  });
9737
9736
  }, [actions, stateSnapshot.columnOrder, stateSnapshot.columnVisibility, canPersistOrder, updateColumnOrder, onLayoutChange]);
@@ -9777,38 +9776,45 @@ function useDataTableConfiguration({
9777
9776
  finalDataCount,
9778
9777
  pageSize
9779
9778
  }) {
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
- }), [
9779
+ return useMemo11(() => {
9780
+ let normalizedColumnOrder = [...stateSnapshot.columnOrder];
9781
+ if (features.selection) {
9782
+ normalizedColumnOrder = normalizedColumnOrder.filter((id) => id !== "select");
9783
+ normalizedColumnOrder = ["select", ...normalizedColumnOrder];
9784
+ }
9785
+ return {
9786
+ data,
9787
+ columns,
9788
+ state: {
9789
+ sorting: stateSnapshot.sorting,
9790
+ columnFilters: stateSnapshot.columnFilters,
9791
+ columnVisibility: stateSnapshot.columnVisibility,
9792
+ rowSelection: stateSnapshot.rowSelection,
9793
+ grouping: stateSnapshot.grouping,
9794
+ expanded: stateSnapshot.expanded,
9795
+ pagination: stateSnapshot.pagination,
9796
+ globalFilter: stateSnapshot.globalFilter,
9797
+ columnOrder: normalizedColumnOrder
9798
+ },
9799
+ initialState: {
9800
+ expanded: features.grouping ? {} : void 0
9801
+ },
9802
+ enableRowSelection: features.selection,
9803
+ enableGrouping: features.grouping,
9804
+ getRowId,
9805
+ ...handlers,
9806
+ getCoreRowModel: getCoreRowModel(),
9807
+ getFilteredRowModel: finalPaginationMode === "client" ? getFilteredRowModel() : void 0,
9808
+ getSortedRowModel: finalPaginationMode === "client" ? getSortedRowModel() : void 0,
9809
+ getPaginationRowModel: features.pagination ? getPaginationRowModel() : void 0,
9810
+ getGroupedRowModel: features.grouping ? getGroupedRowModel() : void 0,
9811
+ getExpandedRowModel: features.grouping ? getExpandedRowModel() : void 0,
9812
+ manualSorting: finalPaginationMode === "server",
9813
+ manualFiltering: finalPaginationMode === "server",
9814
+ manualPagination: finalPaginationMode === "server",
9815
+ pageCount: finalPaginationMode === "server" ? Math.ceil(finalDataCount / pageSize) : void 0
9816
+ };
9817
+ }, [
9812
9818
  data,
9813
9819
  columns,
9814
9820
  stateSnapshot,
@@ -10472,16 +10478,18 @@ function useTableColumns({
10472
10478
  meta: { align: "right" }
10473
10479
  }) : null;
10474
10480
  const finalColumns = [];
10481
+ if (selectionColumn) {
10482
+ finalColumns.push(selectionColumn);
10483
+ }
10475
10484
  if (columnOrder && columnOrder.length > 0) {
10476
- const usedColumnIds = new Set(columnOrder);
10477
- if (selectionColumn && !usedColumnIds.has("select")) {
10478
- finalColumns.unshift(selectionColumn);
10479
- }
10485
+ const usedColumnIds = new Set(
10486
+ columnOrder.filter((id) => id !== "select" && id !== "actions")
10487
+ );
10480
10488
  for (const columnId of columnOrder) {
10481
- if (columnId === "select" && selectionColumn) {
10482
- finalColumns.push(selectionColumn);
10489
+ if (columnId === "select") {
10490
+ continue;
10483
10491
  } else if (columnId === "actions" && actionsColumn) {
10484
- finalColumns.push(actionsColumn);
10492
+ continue;
10485
10493
  } else {
10486
10494
  const dataColumn = baseColumns.find(
10487
10495
  (col) => col.id === columnId || "accessorKey" in col && String(col.accessorKey) === columnId
@@ -10496,13 +10504,10 @@ function useTableColumns({
10496
10504
  return !usedColumnIds.has(colId);
10497
10505
  });
10498
10506
  finalColumns.push(...remainingDataColumns);
10499
- if (actionsColumn && !usedColumnIds.has("actions")) {
10507
+ if (actionsColumn) {
10500
10508
  finalColumns.push(actionsColumn);
10501
10509
  }
10502
10510
  } else {
10503
- if (selectionColumn) {
10504
- finalColumns.push(selectionColumn);
10505
- }
10506
10511
  finalColumns.push(...baseColumns);
10507
10512
  if (actionsColumn) {
10508
10513
  finalColumns.push(actionsColumn);
@@ -11138,9 +11143,25 @@ function DataTableInternal({
11138
11143
  });
11139
11144
  useEffect12(() => {
11140
11145
  if (secureFeatures.columnReordering && isColumnOrderLoaded && savedColumnOrder && savedColumnOrder.length > 0) {
11141
- stateActions.setColumnOrder(savedColumnOrder);
11146
+ const normalizedOrder = secureFeatures.selection && savedColumnOrder.includes("select") ? ["select", ...savedColumnOrder.filter((id) => id !== "select")] : savedColumnOrder;
11147
+ stateActions.setColumnOrder(normalizedOrder);
11148
+ }
11149
+ }, [secureFeatures.columnReordering, secureFeatures.selection, isColumnOrderLoaded, savedColumnOrder, stateActions]);
11150
+ useEffect12(() => {
11151
+ if (secureFeatures.selection && state.columnOrder.includes("select") && state.columnOrder[0] !== "select") {
11152
+ const normalizedOrder = ["select", ...state.columnOrder.filter((id) => id !== "select")];
11153
+ if (import.meta.env?.MODE === "development") {
11154
+ console.warn("[DataTable] Correcting column order state - moving select to first position:", {
11155
+ before: state.columnOrder,
11156
+ after: normalizedOrder
11157
+ });
11158
+ }
11159
+ stateActions.setColumnOrder(normalizedOrder);
11160
+ if (secureFeatures.columnReordering) {
11161
+ updateColumnOrder(normalizedOrder);
11162
+ }
11142
11163
  }
11143
- }, [secureFeatures.columnReordering, isColumnOrderLoaded, savedColumnOrder, stateActions]);
11164
+ }, [secureFeatures.selection, secureFeatures.columnReordering, state.columnOrder, stateActions, updateColumnOrder]);
11144
11165
  const finalPageSizeOptions = optimizedPageSizeOptions;
11145
11166
  const validatedInitialPageSize = useMemo14(() => {
11146
11167
  if (!secureFeatures.pagination || !finalPageSizeOptions.length) {
@@ -11160,6 +11181,39 @@ function DataTableInternal({
11160
11181
  }
11161
11182
  return closestOption;
11162
11183
  }, [initialPageSize, finalPageSizeOptions, secureFeatures.pagination]);
11184
+ const effectivePageSize = useMemo14(() => {
11185
+ if (!secureFeatures.pagination || !finalPageSizeOptions.length) {
11186
+ return state.pagination.pageSize;
11187
+ }
11188
+ if (!finalPageSizeOptions.includes(state.pagination.pageSize)) {
11189
+ return validatedInitialPageSize;
11190
+ }
11191
+ return state.pagination.pageSize;
11192
+ }, [state.pagination.pageSize, validatedInitialPageSize, secureFeatures.pagination, finalPageSizeOptions]);
11193
+ useEffect12(() => {
11194
+ if (secureFeatures.pagination && finalPageSizeOptions.length > 0) {
11195
+ const needsFix = !finalPageSizeOptions.includes(state.pagination.pageSize);
11196
+ const currentPageSize = effectivePageSize || validatedInitialPageSize;
11197
+ const totalPages = currentPageSize > 0 ? Math.ceil(finalDataCount / currentPageSize) : 0;
11198
+ const pageIndexOutOfBounds = totalPages > 0 && state.pagination.pageIndex >= totalPages;
11199
+ if (needsFix || pageIndexOutOfBounds) {
11200
+ stateActions.setPagination({
11201
+ pageSize: validatedInitialPageSize,
11202
+ pageIndex: 0
11203
+ // Reset to first page when correcting pagination issues
11204
+ });
11205
+ }
11206
+ }
11207
+ }, [
11208
+ secureFeatures.pagination,
11209
+ finalPageSizeOptions,
11210
+ state.pagination.pageSize,
11211
+ state.pagination.pageIndex,
11212
+ validatedInitialPageSize,
11213
+ stateActions,
11214
+ effectivePageSize,
11215
+ finalDataCount
11216
+ ]);
11163
11217
  const isLoading = externalIsLoading || performanceLoading;
11164
11218
  const handleSearch = useCallback10((value) => {
11165
11219
  stateActions.setSearchQuery(value);
@@ -11246,32 +11300,56 @@ function DataTableInternal({
11246
11300
  }
11247
11301
  return result;
11248
11302
  }, [actions, secureFeatures, permissions, secureHandlers, resolvedGetRowId, stateActions, data]);
11303
+ const normalizedColumnOrderForColumns = useMemo14(() => {
11304
+ if (secureFeatures.selection && state.columnOrder.includes("select")) {
11305
+ return ["select", ...state.columnOrder.filter((id) => id !== "select")];
11306
+ }
11307
+ return state.columnOrder;
11308
+ }, [state.columnOrder, secureFeatures.selection]);
11249
11309
  const { enhancedColumns } = useTableColumns({
11250
11310
  columns,
11251
11311
  features: secureFeatures,
11252
11312
  effectiveActions,
11253
- columnOrder: state.columnOrder
11313
+ columnOrder: normalizedColumnOrderForColumns
11254
11314
  });
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
- }), [
11315
+ const paginationStateWithValidatedSize = useMemo14(() => ({
11316
+ ...state.pagination,
11317
+ pageSize: effectivePageSize
11318
+ }), [state.pagination, effectivePageSize]);
11319
+ const tableStateSnapshot = useMemo14(() => {
11320
+ const normalizedColumnOrder = secureFeatures.selection && state.columnOrder.includes("select") ? ["select", ...state.columnOrder.filter((id) => id !== "select")] : state.columnOrder;
11321
+ if (import.meta.env?.MODE === "development" && secureFeatures.selection) {
11322
+ if (state.columnOrder[0] !== "select") {
11323
+ console.warn("[DataTable] Column order normalized:", {
11324
+ original: state.columnOrder,
11325
+ normalized: normalizedColumnOrder,
11326
+ firstColumnOriginal: state.columnOrder[0],
11327
+ firstColumnNormalized: normalizedColumnOrder[0]
11328
+ });
11329
+ }
11330
+ }
11331
+ return {
11332
+ sorting: state.sorting,
11333
+ columnFilters: state.columnFilters,
11334
+ columnVisibility: state.columnVisibility,
11335
+ rowSelection,
11336
+ grouping: state.grouping,
11337
+ expanded: state.expanded,
11338
+ pagination: paginationStateWithValidatedSize,
11339
+ globalFilter: searchQuery,
11340
+ columnOrder: normalizedColumnOrder
11341
+ };
11342
+ }, [
11266
11343
  state.sorting,
11267
11344
  state.columnFilters,
11268
11345
  state.columnVisibility,
11269
11346
  rowSelection,
11270
11347
  state.grouping,
11271
11348
  state.expanded,
11272
- state.pagination,
11349
+ paginationStateWithValidatedSize,
11273
11350
  searchQuery,
11274
- state.columnOrder
11351
+ state.columnOrder,
11352
+ secureFeatures.selection
11275
11353
  ]);
11276
11354
  const tableHandlers = useTableHandlers({
11277
11355
  state,
@@ -11295,7 +11373,7 @@ function DataTableInternal({
11295
11373
  getRowId: resolvedGetRowId,
11296
11374
  finalPaginationMode,
11297
11375
  finalDataCount,
11298
- pageSize: state.pagination.pageSize
11376
+ pageSize: effectivePageSize
11299
11377
  });
11300
11378
  const table = useReactTable(tableConfig);
11301
11379
  if (!user) {
@@ -11319,7 +11397,8 @@ function DataTableInternal({
11319
11397
  "table",
11320
11398
  {
11321
11399
  className: getTableClasses({
11322
- isFixed: true,
11400
+ isFixed: false,
11401
+ // Use auto table-layout so columns size based on content
11323
11402
  variant,
11324
11403
  className: cn("border-collapse relative w-full", className)
11325
11404
  }),
@@ -11393,7 +11472,7 @@ function DataTableInternal({
11393
11472
  ) })
11394
11473
  ] }),
11395
11474
  /* @__PURE__ */ jsxs17("colgroup", { children: [
11396
- hasSelectColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "select", className: "w-12" }),
11475
+ hasSelectColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "select" }),
11397
11476
  /* @__PURE__ */ jsx24("col", { span: dataColumns, "data-col-type": "data" }),
11398
11477
  hasActionsColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "actions" })
11399
11478
  ] }),
@@ -11793,4 +11872,4 @@ lodash/lodash.js:
11793
11872
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
11794
11873
  *)
11795
11874
  */
11796
- //# sourceMappingURL=chunk-RMK6FOHF.js.map
11875
+ //# sourceMappingURL=chunk-CACHCRZS.js.map