@bigbinary/neeto-atoms 1.0.25 → 1.0.26

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.
@@ -3534,11 +3534,11 @@ const ResizeHandle = ({ header }) => {
3534
3534
  : "bg-border opacity-0 group-hover/head:opacity-100") }));
3535
3535
  };
3536
3536
 
3537
- const BulkSelectCallout = ({ bulkSelectAllRowsProps, isAllPageRowsSelected, isBulkAllSelected, }) => {
3538
- if (!isAllPageRowsSelected)
3537
+ const BulkSelectCallout = ({ bulkSelectAllRowsProps, isAllPageRowsSelected, isBulkAllSelected, onBulkSelectAll, onClearBulkSelection, }) => {
3538
+ if (!isAllPageRowsSelected && !isBulkAllSelected)
3539
3539
  return null;
3540
- const { selectAllRowMessage, selectAllRowButtonLabel, setBulkSelectedAllRows, allRowsSelectedMessage, clearSelectionButtonLabel, } = bulkSelectAllRowsProps;
3541
- return (jsx("div", { className: "mb-2 flex items-center justify-center gap-1 rounded-lg bg-primary/10 px-4 py-1.5 text-sm text-primary", children: isBulkAllSelected ? (jsxs(Fragment, { children: [jsx("span", { children: allRowsSelectedMessage ?? selectAllRowMessage }), clearSelectionButtonLabel && (jsx(Button, { variant: "link", onClick: () => setBulkSelectedAllRows(false), children: clearSelectionButtonLabel }))] })) : (jsxs(Fragment, { children: [jsx("span", { children: selectAllRowMessage }), jsx(Button, { variant: "link", onClick: () => setBulkSelectedAllRows(true), children: selectAllRowButtonLabel })] })) }));
3540
+ const { selectAllRowMessage, selectAllRowButtonLabel, allRowsSelectedMessage, clearSelectionButtonLabel, } = bulkSelectAllRowsProps;
3541
+ return (jsx("div", { className: "mb-2 flex items-center justify-center gap-1 rounded-lg bg-primary/10 px-4 py-1.5 text-sm text-primary", children: isBulkAllSelected ? (jsxs(Fragment, { children: [jsx("span", { children: allRowsSelectedMessage ?? selectAllRowMessage }), jsx(Button, { variant: "link", onClick: onClearBulkSelection, children: clearSelectionButtonLabel ?? "Clear selection" })] })) : (jsxs(Fragment, { children: [jsx("span", { children: selectAllRowMessage }), jsx(Button, { variant: "link", onClick: onBulkSelectAll, children: selectAllRowButtonLabel })] })) }));
3542
3542
  };
3543
3543
 
3544
3544
  const DataTablePagination = ({ currentPage, pageCount, onPageChange, }) => {
@@ -3586,7 +3586,7 @@ const HeaderCellMenu = ({ column, enableAddColumn, enableColumnFreeze, isColumnP
3586
3586
  }) }))] })] }) }));
3587
3587
  };
3588
3588
 
3589
- const DataTable = ({ columns, data, getRowId: getRowIdProp, sorting: sortingProp, onSortingChange: onSortingChangeProp, enableSorting = true, enableURLSort = true, totalCount, pageSize = DEFAULT_PAGE_SIZE, currentPage: currentPageProp, onPageChange: onPageChangeProp, enableURLPagination = true, enableRowSelection: enableRowSelectionProp, selectedRowKeys, onRowSelect, bulkSelectAllRowsProps, enableColumnResize = true, enableColumnFreeze = true, columnPinning: columnPinningProp, onColumnPinningChange: onColumnPinningChangeProp, localStorageKeyPrefix, columnVisibility: columnVisibilityProp, onColumnVisibilityChange: onColumnVisibilityChangeProp, onColumnHide: onColumnHideProp, enableColumnReorder = false, columnOrder: columnOrderProp, onColumnOrderChange: onColumnOrderChangeProp, enableAddColumn = false, onColumnAdd, onColumnDelete, onColumnUpdate, onMoreActionClick, enableHeaderMenu, loading = false, bordered = true, className, emptyMessage, onRowClick, allowRowClick = true, }) => {
3589
+ const DataTable = ({ columns, data, getRowId: getRowIdProp, sorting: sortingProp, onSortingChange: onSortingChangeProp, enableSorting = false, enableURLSort = true, totalCount, pageSize = DEFAULT_PAGE_SIZE, currentPage: currentPageProp, onPageChange: onPageChangeProp, enableURLPagination = true, enableRowSelection: enableRowSelectionProp, selectedRowKeys, onRowSelect, bulkSelectAllRowsProps, enableColumnResize = true, enableColumnFreeze = true, columnPinning: columnPinningProp, onColumnPinningChange: onColumnPinningChangeProp, localStorageKeyPrefix, columnVisibility: columnVisibilityProp, onColumnVisibilityChange: onColumnVisibilityChangeProp, onColumnHide: onColumnHideProp, enableColumnReorder = false, columnOrder: columnOrderProp, onColumnOrderChange: onColumnOrderChangeProp, enableAddColumn = false, onColumnAdd, onColumnDelete, onColumnUpdate, onMoreActionClick, enableHeaderMenu, loading = false, bordered = true, className, emptyMessage, onRowClick, allowRowClick = true, }) => {
3590
3590
  const getRowId = useMemo(() => getRowIdProp ??
3591
3591
  ((row) => row.id), [getRowIdProp]);
3592
3592
  const { sorting, onSortingChange } = useTableSort({
@@ -3601,13 +3601,21 @@ const DataTable = ({ columns, data, getRowId: getRowIdProp, sorting: sortingProp
3601
3601
  onPageChange: onPageChangeProp,
3602
3602
  enableURLPagination,
3603
3603
  });
3604
- const { rowSelection, onRowSelectionChange, selectionColumn, enableRowSelection, } = useTableSelection({
3604
+ const { rowSelection, onRowSelectionChange: originalOnRowSelectionChange, selectionColumn, enableRowSelection, } = useTableSelection({
3605
3605
  enableRowSelection: enableRowSelectionProp,
3606
3606
  selectedRowKeys,
3607
3607
  onRowSelect,
3608
3608
  data,
3609
3609
  getRowId,
3610
3610
  });
3611
+ // Wrap selection change to detect manual deselection while in bulk mode
3612
+ const onRowSelectionChange = useCallback((updaterOrValue) => {
3613
+ if (bulkSelectedRef.current && !isAutoSelectingRef.current) {
3614
+ setBulkSelectedAllRowsInternal(false);
3615
+ bulkSelectAllRowsProps?.setBulkSelectedAllRows(false);
3616
+ }
3617
+ originalOnRowSelectionChange(updaterOrValue);
3618
+ }, [originalOnRowSelectionChange, bulkSelectAllRowsProps]);
3611
3619
  const { columnPinning, onColumnPinningChange, toggleColumnPin, isColumnPinned, } = useColumnPinning({
3612
3620
  enabled: enableColumnFreeze,
3613
3621
  columnPinning: columnPinningProp,
@@ -3680,7 +3688,37 @@ const DataTable = ({ columns, data, getRowId: getRowIdProp, sorting: sortingProp
3680
3688
  onColumnVisibilityChange,
3681
3689
  onColumnOrderChange,
3682
3690
  });
3683
- const isBulkAllSelected = !!bulkSelectAllRowsProps && table.getIsAllPageRowsSelected();
3691
+ const [bulkSelectedAllRows, setBulkSelectedAllRowsInternal] = useState(false);
3692
+ const isAutoSelectingRef = useRef(false);
3693
+ const bulkSelectedRef = useRef(false);
3694
+ bulkSelectedRef.current = bulkSelectedAllRows;
3695
+ // Auto-select all page rows when in bulk mode (handles page navigation)
3696
+ useEffect(() => {
3697
+ if (bulkSelectedAllRows) {
3698
+ isAutoSelectingRef.current = true;
3699
+ table.toggleAllPageRowsSelected(true);
3700
+ // Reset flag after React processes the state update
3701
+ requestAnimationFrame(() => {
3702
+ isAutoSelectingRef.current = false;
3703
+ });
3704
+ }
3705
+ }, [bulkSelectedAllRows, data]);
3706
+ const isAllPageRowsSelected = table.getIsAllPageRowsSelected();
3707
+ const showSelectAllCallout = !!bulkSelectAllRowsProps &&
3708
+ isAllPageRowsSelected &&
3709
+ pageCount > 1 &&
3710
+ !bulkSelectedAllRows;
3711
+ const showAllSelectedCallout = !!bulkSelectAllRowsProps && bulkSelectedAllRows;
3712
+ const handleBulkSelectAll = () => {
3713
+ setBulkSelectedAllRowsInternal(true);
3714
+ bulkSelectAllRowsProps?.setBulkSelectedAllRows(true);
3715
+ };
3716
+ const handleClearBulkSelection = () => {
3717
+ setBulkSelectedAllRowsInternal(false);
3718
+ bulkSelectAllRowsProps?.setBulkSelectedAllRows(false);
3719
+ table.toggleAllPageRowsSelected(false);
3720
+ onRowSelect?.([], []);
3721
+ };
3684
3722
  const handleSort = (columnId, desc) => {
3685
3723
  const isSameSort = sorting.length > 0 &&
3686
3724
  sorting[0].id === columnId &&
@@ -3692,8 +3730,7 @@ const DataTable = ({ columns, data, getRowId: getRowIdProp, sorting: sortingProp
3692
3730
  onSortingChange([{ id: columnId, desc }]);
3693
3731
  }
3694
3732
  };
3695
- return (jsxs("div", { className: cn("relative flex min-h-0 w-full flex-col", className), children: [loading && jsx(LoadingOverlay, {}), bulkSelectAllRowsProps &&
3696
- (data.length !== totalCount || isBulkAllSelected) && (jsx(BulkSelectCallout, { bulkSelectAllRowsProps: bulkSelectAllRowsProps, isAllPageRowsSelected: table.getIsAllPageRowsSelected(), isBulkAllSelected: isBulkAllSelected })), jsx("div", { className: cn("min-h-0 flex-1 overflow-auto", bordered && "rounded-lg border"), children: jsxs(Table, { children: [jsx(TableHeader, { className: "sticky top-0 z-20 bg-muted", children: table.getHeaderGroups().map(headerGroup => {
3733
+ return (jsxs("div", { className: cn("relative flex min-h-0 w-full flex-col", className), children: [loading && jsx(LoadingOverlay, {}), (showSelectAllCallout || showAllSelectedCallout) && (jsx(BulkSelectCallout, { bulkSelectAllRowsProps: bulkSelectAllRowsProps, isAllPageRowsSelected: isAllPageRowsSelected, isBulkAllSelected: bulkSelectedAllRows, onBulkSelectAll: handleBulkSelectAll, onClearBulkSelection: handleClearBulkSelection })), jsx("div", { className: cn("min-h-0 flex-1 overflow-auto", bordered && "rounded-lg border"), children: jsxs(Table, { children: [jsx(TableHeader, { className: "sticky top-0 z-20 bg-muted", children: table.getHeaderGroups().map(headerGroup => {
3697
3734
  const dataHeaders = headerGroup.headers.filter(h => h.column.id !== "_selection");
3698
3735
  const totalDataSize = dataHeaders.reduce((sum, h) => sum + h.getSize(), 0);
3699
3736
  return (jsx(TableRow, { className: "hover:bg-muted", children: headerGroup.headers.map((header, headerIndex) => {
@@ -3732,7 +3769,7 @@ const DataTable = ({ columns, data, getRowId: getRowIdProp, sorting: sortingProp
3732
3769
  const isPinned = cell.column.getIsPinned();
3733
3770
  const isSelCell = cell.column.id === "_selection";
3734
3771
  return (jsx(TableCell, { className: cn(isPinned &&
3735
- "sticky z-10 bg-background group-data-[state=selected]:bg-muted"), style: {
3772
+ "sticky z-10 bg-background group-hover:bg-muted/50 group-data-[state=selected]:bg-muted"), style: {
3736
3773
  width: selectionColumn && isSelCell
3737
3774
  ? 0
3738
3775
  : cell.column.getSize(),
@@ -3754,4 +3791,4 @@ const DataTable = ({ columns, data, getRowId: getRowIdProp, sorting: sortingProp
3754
3791
  };
3755
3792
 
3756
3793
  export { DataTable as D, useColumnPinning as a, useColumnVisibility as b, useTablePagination as c, useTableSelection as d, useTableSort as e, useColumnOrdering as u };
3757
- //# sourceMappingURL=DataTable-Dre7vc3w.js.map
3794
+ //# sourceMappingURL=DataTable-DYam_kUE.js.map