@algorithm-shift/design-system 1.2.973 → 1.2.975

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/index.js CHANGED
@@ -29381,7 +29381,7 @@ function LazyMultiSelectDropdown({
29381
29381
  {
29382
29382
  type: "text",
29383
29383
  placeholder: selectedOptions.length ? "" : placeholder,
29384
- className: "flex-1 min-w-[60px] p-1 outline-none",
29384
+ className: "flex-1 min-w-[60px] p-1 outline-none text-xs disabled:cursor-not-allowed",
29385
29385
  value: isOpen ? searchTerm : "",
29386
29386
  onChange: handleSearch,
29387
29387
  readOnly,
@@ -29631,7 +29631,7 @@ var sanitizeValue = (val) => {
29631
29631
  }
29632
29632
  return String(val);
29633
29633
  };
29634
- var cellRendererFactory = (renderer, rendererProps, value, row, customRenderers = {}, format3, customFormatters = {}) => {
29634
+ var cellRendererFactory = (renderer, rendererProps, value, row, customRenderers = {}, format3, customFormatters = {}, info) => {
29635
29635
  const formattedValue = valueFormatter(value, format3, customFormatters);
29636
29636
  const rowValue = row?.[rendererProps?.rowField];
29637
29637
  switch (renderer) {
@@ -29754,6 +29754,16 @@ var cellRendererFactory = (renderer, rendererProps, value, row, customRenderers
29754
29754
  i
29755
29755
  )) });
29756
29756
  }
29757
+ case "checkbox":
29758
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
29759
+ "input",
29760
+ {
29761
+ type: "checkbox",
29762
+ checked: info.row.getIsSelected(),
29763
+ disabled: !info.row.getCanSelect(),
29764
+ onChange: info.row.getToggleSelectedHandler()
29765
+ }
29766
+ );
29757
29767
  /* -------------------- ADVANCED -------------------- */
29758
29768
  case "custom": {
29759
29769
  const CustomRenderer = customRenderers[rendererProps?.customRendererId] || customRenderers[rendererProps?.rendererId];
@@ -29793,9 +29803,18 @@ var useDynamicColumns = (config, customRenderers = {}, customFormatters = {}) =>
29793
29803
  }
29794
29804
  return sanitizeValue(row[accessorKey]);
29795
29805
  };
29806
+ const existingMeta = col.meta || {};
29807
+ const additional = {};
29808
+ if (col.size && col.size > 0) {
29809
+ Object.assign(additional, { size: col.size });
29810
+ } else {
29811
+ Object.assign(additional, { size: 180, minSize: 0, maxSize: Number.MAX_SAFE_INTEGER });
29812
+ Object.assign(existingMeta, { className: "w-full" });
29813
+ }
29796
29814
  return columnHelper.accessor(accessorFn, {
29797
29815
  ...col,
29798
- size: col.size && col.size > 0 ? col.size : 180,
29816
+ ...additional,
29817
+ // size: (col.size && col.size > 0) ? col.size : 180,
29799
29818
  id: col.id ?? accessorKey,
29800
29819
  header: col.header,
29801
29820
  cell: (info) => {
@@ -29808,12 +29827,18 @@ var useDynamicColumns = (config, customRenderers = {}, customFormatters = {}) =>
29808
29827
  row,
29809
29828
  customRenderers,
29810
29829
  col.format,
29811
- customFormatters
29830
+ customFormatters,
29831
+ info
29812
29832
  );
29813
29833
  },
29814
29834
  enableSorting: col.enableSorting,
29815
29835
  enableColumnFilter: col.enableColumnFilter,
29816
- meta: col.meta
29836
+ // Merge existing meta to preserve headerLabel and other properties
29837
+ meta: {
29838
+ ...existingMeta,
29839
+ // Preserve headerLabel if it exists
29840
+ ...existingMeta.headerLabel ? { headerLabel: existingMeta.headerLabel } : {}
29841
+ }
29817
29842
  });
29818
29843
  });
29819
29844
  };
@@ -29836,14 +29861,40 @@ function DataTable({
29836
29861
  globalSearch,
29837
29862
  onCellClick,
29838
29863
  onDeleteRow,
29839
- rowActions
29864
+ rowActions,
29865
+ enableRowSelection = false,
29866
+ getRowSelection
29840
29867
  }) {
29841
29868
  const [columnFilters, setColumnFilters] = React9.useState([]);
29842
29869
  const [columnVisibility, setColumnVisibility] = React9.useState({});
29843
29870
  const [manualSort, setManualSort] = React9.useState(null);
29844
29871
  const [searchTerm, setSearchTerm] = React9.useState("");
29845
29872
  const tableData = Array.isArray(data) ? data : [];
29846
- const dynamicCols = useDynamicColumns({ columns });
29873
+ const finalCols = [...columns];
29874
+ if (enableRowSelection) {
29875
+ finalCols.unshift({
29876
+ id: "__select__",
29877
+ renderer: "checkbox",
29878
+ size: 40,
29879
+ header: ({ table: table2 }) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
29880
+ "input",
29881
+ {
29882
+ type: "checkbox",
29883
+ checked: table2.getIsAllRowsSelected(),
29884
+ onChange: table2.getToggleAllRowsSelectedHandler()
29885
+ }
29886
+ ),
29887
+ meta: {
29888
+ cellClass: "",
29889
+ cellStyle: {},
29890
+ headerLabel: "Select"
29891
+ },
29892
+ enableSorting: false,
29893
+ enableColumnFilter: false
29894
+ });
29895
+ }
29896
+ const dynamicCols = useDynamicColumns({ columns: finalCols, enableRowSelection });
29897
+ const [rowSelection, setRowSelection] = React9.useState({});
29847
29898
  const [localPageSize, setLocalPageSize] = React9.useState(pageSize);
29848
29899
  const table = (0, import_react_table2.useReactTable)({
29849
29900
  data: tableData,
@@ -29851,6 +29902,7 @@ function DataTable({
29851
29902
  state: {
29852
29903
  columnFilters,
29853
29904
  columnVisibility,
29905
+ rowSelection,
29854
29906
  ...paginationMode === "server" ? {
29855
29907
  pagination: {
29856
29908
  pageIndex: controlledPageIndex ?? 0,
@@ -29858,6 +29910,15 @@ function DataTable({
29858
29910
  }
29859
29911
  } : {}
29860
29912
  },
29913
+ enableRowSelection: !!enableRowSelection,
29914
+ onRowSelectionChange: (updater) => {
29915
+ setRowSelection((old) => {
29916
+ const newState = typeof updater === "function" ? updater(old) : updater;
29917
+ const selectedData = Object.keys(newState).filter((key) => newState[key]).map((rowId) => tableData[Number(rowId)]);
29918
+ getRowSelection?.(selectedData);
29919
+ return newState;
29920
+ });
29921
+ },
29861
29922
  onColumnFiltersChange: setColumnFilters,
29862
29923
  onColumnVisibilityChange: setColumnVisibility,
29863
29924
  getCoreRowModel: (0, import_react_table2.getCoreRowModel)(),