@addsign/moje-agenda-shared-lib 1.0.39 → 1.0.41

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.
@@ -11,11 +11,12 @@ interface DataTableServerProps<T> {
11
11
  rowAction?: (item: T) => void;
12
12
  bulkAction?: (items: T[]) => JSX.Element;
13
13
  filters?: object;
14
+ selectedItemKey?: string;
14
15
  }
15
16
  type DataTableInternalItems = {
16
17
  _isHighlighted?: boolean;
17
18
  id: string;
18
19
  };
19
20
  export declare const resetAllDataTablePaging: () => void;
20
- declare function DataTableServer<T extends DataTableInternalItems>({ id, url, columns, title, subtitle, allowSearch, showHeader, rowAction, bulkAction, filters, }: DataTableServerProps<T>): import("react/jsx-runtime").JSX.Element;
21
+ declare function DataTableServer<T extends DataTableInternalItems>({ id, url, columns, title, subtitle, allowSearch, showHeader, rowAction, bulkAction, filters, selectedItemKey, }: DataTableServerProps<T>): import("react/jsx-runtime").JSX.Element;
21
22
  export default DataTableServer;
@@ -21702,7 +21702,8 @@ function DataTableServer({
21702
21702
  showHeader = true,
21703
21703
  rowAction,
21704
21704
  bulkAction,
21705
- filters
21705
+ filters,
21706
+ selectedItemKey = "id"
21706
21707
  }) {
21707
21708
  var _a, _b, _c;
21708
21709
  const [itemsPerPageLocal, setItemsPerPageLocal] = useState();
@@ -21859,6 +21860,9 @@ function DataTableServer({
21859
21860
  };
21860
21861
  updateFilterOptions();
21861
21862
  }, [columns, federationContext.apiClient]);
21863
+ const hasSomeColFilters = useMemo(() => {
21864
+ return columns.some((column) => !!column.filterParam);
21865
+ }, [columns]);
21862
21866
  const requestSort = (sortParam) => {
21863
21867
  setSortConfig((prevSortConfig) => {
21864
21868
  if ((prevSortConfig == null ? void 0 : prevSortConfig.sortParam) === sortParam && prevSortConfig.direction !== null) {
@@ -21888,9 +21892,11 @@ function DataTableServer({
21888
21892
  };
21889
21893
  const handleSelectItem = (item) => {
21890
21894
  setSelectedItems((prevSelectedItems) => {
21891
- if (prevSelectedItems.find((selectedItem) => selectedItem.id === item.id)) {
21895
+ if (prevSelectedItems.find(
21896
+ (selectedItem) => selectedItem[selectedItemKey] === item[selectedItemKey]
21897
+ )) {
21892
21898
  return prevSelectedItems.filter(
21893
- (selectedItem) => selectedItem.id !== item.id
21899
+ (selectedItem) => selectedItem[selectedItemKey] !== item[selectedItemKey]
21894
21900
  );
21895
21901
  } else {
21896
21902
  return [...prevSelectedItems, item];
@@ -21904,9 +21910,14 @@ function DataTableServer({
21904
21910
  setSelectedItems(data.content);
21905
21911
  }
21906
21912
  };
21907
- const isSelected = (item) => {
21908
- return selectedItems.some((selectedItem) => selectedItem.id === item.id);
21909
- };
21913
+ const isSelected = useCallback(
21914
+ (item) => {
21915
+ return selectedItems.some(
21916
+ (selectedItem) => selectedItem[selectedItemKey] === item[selectedItemKey]
21917
+ );
21918
+ },
21919
+ [selectedItems, selectedItemKey]
21920
+ );
21910
21921
  const nextPage = () => {
21911
21922
  setCurrentPage((currentPage || 0) + 1);
21912
21923
  };
@@ -22037,7 +22048,7 @@ function DataTableServer({
22037
22048
  onExport: exportToXLSX
22038
22049
  }
22039
22050
  ),
22040
- /* @__PURE__ */ jsxs(
22051
+ hasSomeColFilters && /* @__PURE__ */ jsxs(
22041
22052
  "div",
22042
22053
  {
22043
22054
  className: "flex items-center text-xl h-full p-3 cursor-pointer text-gray-500 hover:text-black",
@@ -22215,7 +22226,7 @@ function DataTableServer({
22215
22226
  data.content.map((item, rowIndex) => /* @__PURE__ */ jsxs(
22216
22227
  "tr",
22217
22228
  {
22218
- className: `${item._isHighlighted ? "bg-gray-200" : ""} hover:bg-gray-100 border-gray-200 border-b text-sm`,
22229
+ className: `${item._isHighlighted || isSelected(item) ? "bg-gray-50" : ""} hover:bg-gray-100 border-gray-200 border-b text-sm`,
22219
22230
  children: [
22220
22231
  bulkAction && /* @__PURE__ */ jsx("td", { className: "w-[20px] h-[52px] hover:bg-gray-200 font-medium text-xs text-center text-gray-600 cursor-pointer", children: /* @__PURE__ */ jsx("label", { className: "w-full h-full flex items-center justify-center cursor-pointer px-2", children: /* @__PURE__ */ jsx(
22221
22232
  "input",