@addsign/moje-agenda-shared-lib 1.0.40 → 1.0.42

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();
@@ -21759,9 +21760,18 @@ function DataTableServer({
21759
21760
  if (currentPage === void 0)
21760
21761
  return;
21761
21762
  setIsLoading(true);
21763
+ const filteredMergedFilters = Object.entries(mergedFilters).reduce(
21764
+ (acc, [key, value]) => {
21765
+ if (value !== null && value !== "") {
21766
+ acc[key] = value;
21767
+ }
21768
+ return acc;
21769
+ },
21770
+ {}
21771
+ );
21762
21772
  federationContext.apiClient.get(url, {
21763
21773
  params: {
21764
- ...mergedFilters,
21774
+ ...filteredMergedFilters,
21765
21775
  pageSize: itemsPerPageLocal,
21766
21776
  page: currentPage,
21767
21777
  sortBy: sortConfig == null ? void 0 : sortConfig.sortParam,
@@ -21891,9 +21901,11 @@ function DataTableServer({
21891
21901
  };
21892
21902
  const handleSelectItem = (item) => {
21893
21903
  setSelectedItems((prevSelectedItems) => {
21894
- if (prevSelectedItems.find((selectedItem) => selectedItem.id === item.id)) {
21904
+ if (prevSelectedItems.find(
21905
+ (selectedItem) => selectedItem[selectedItemKey] === item[selectedItemKey]
21906
+ )) {
21895
21907
  return prevSelectedItems.filter(
21896
- (selectedItem) => selectedItem.id !== item.id
21908
+ (selectedItem) => selectedItem[selectedItemKey] !== item[selectedItemKey]
21897
21909
  );
21898
21910
  } else {
21899
21911
  return [...prevSelectedItems, item];
@@ -21907,9 +21919,14 @@ function DataTableServer({
21907
21919
  setSelectedItems(data.content);
21908
21920
  }
21909
21921
  };
21910
- const isSelected = (item) => {
21911
- return selectedItems.some((selectedItem) => selectedItem.id === item.id);
21912
- };
21922
+ const isSelected = useCallback(
21923
+ (item) => {
21924
+ return selectedItems.some(
21925
+ (selectedItem) => selectedItem[selectedItemKey] === item[selectedItemKey]
21926
+ );
21927
+ },
21928
+ [selectedItems, selectedItemKey]
21929
+ );
21913
21930
  const nextPage = () => {
21914
21931
  setCurrentPage((currentPage || 0) + 1);
21915
21932
  };
@@ -22218,7 +22235,7 @@ function DataTableServer({
22218
22235
  data.content.map((item, rowIndex) => /* @__PURE__ */ jsxs(
22219
22236
  "tr",
22220
22237
  {
22221
- className: `${item._isHighlighted ? "bg-gray-200" : ""} hover:bg-gray-100 border-gray-200 border-b text-sm`,
22238
+ className: `${item._isHighlighted || isSelected(item) ? "bg-gray-50" : ""} hover:bg-gray-100 border-gray-200 border-b text-sm`,
22222
22239
  children: [
22223
22240
  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(
22224
22241
  "input",