@monolith-forensics/monolith-ui 1.2.72 → 1.2.74

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.
@@ -36,7 +36,7 @@ export interface FilterDefinition {
36
36
  style?: React.CSSProperties;
37
37
  };
38
38
  editorType?: EditorType;
39
- query?: UseQueryOptions & {
39
+ query?: Omit<UseQueryOptions, "select"> & {
40
40
  select: (data: unknown) => DropDownItem[];
41
41
  };
42
42
  }
@@ -1,6 +1,20 @@
1
+ import { UseQueryOptions } from "@tanstack/react-query";
1
2
  import { FilterDefinition } from "./types";
3
+ import { DropDownItem } from "../DropDownMenu";
4
+ /** Override Filters Type
5
+ * some properties have been overridden to allow for partial overrides
6
+ */
7
+ type FilterDefinitionOverride = Partial<Omit<FilterDefinition, "query" | "dataField">> & {
8
+ dataField: string;
9
+ query?: Omit<Partial<UseQueryOptions>, "select" | "queryKey"> & {
10
+ select?: (data: unknown) => DropDownItem[];
11
+ queryKey?: UseQueryOptions["queryKey"];
12
+ };
13
+ };
2
14
  export interface UserFilterDefinitionsParams {
3
15
  filterDef: FilterDefinition[];
16
+ overrides?: FilterDefinitionOverride[];
4
17
  }
5
18
  export type UseFilterDefinitionsType = (p: UserFilterDefinitionsParams) => FilterDefinition[];
6
- export declare function useFilterDefinitions({ filterDef, }: UserFilterDefinitionsParams): FilterDefinition[];
19
+ export declare function useFilterDefinitions({ filterDef, overrides, }: UserFilterDefinitionsParams): FilterDefinition[];
20
+ export {};
@@ -1,7 +1,44 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
1
12
  import { useQueries } from "@tanstack/react-query";
2
- export function useFilterDefinitions({ filterDef, }) {
13
+ const mergeOverrides = (filterDef, overrides) => {
14
+ return filterDef.map((f) => {
15
+ var _a, _b, _c;
16
+ const override = overrides.find((o) => o.dataField === f.dataField);
17
+ if (!override) {
18
+ return f;
19
+ }
20
+ const { query, dropDownOptions } = override, rest = __rest(override, ["query", "dropDownOptions"]);
21
+ // Handle merge directly on query and dropDownOptions
22
+ // prevents overriding the entire query object
23
+ // allows user to override specific properties
24
+ if (query) {
25
+ f.query = Object.assign(Object.assign(Object.assign({}, f.query), query), { queryFn: query.queryFn || ((_a = f === null || f === void 0 ? void 0 : f.query) === null || _a === void 0 ? void 0 : _a.queryFn) || (() => { }), queryKey: query.queryKey || ((_b = f === null || f === void 0 ? void 0 : f.query) === null || _b === void 0 ? void 0 : _b.queryKey) || [], select: query.select || ((_c = f === null || f === void 0 ? void 0 : f.query) === null || _c === void 0 ? void 0 : _c.select) || (() => []) });
26
+ }
27
+ if (dropDownOptions) {
28
+ f.dropDownOptions = Object.assign(Object.assign({}, f.dropDownOptions), dropDownOptions);
29
+ }
30
+ // Merge override with original filter def
31
+ return Object.assign(Object.assign({}, f), rest);
32
+ });
33
+ };
34
+ export function useFilterDefinitions({ filterDef, overrides, }) {
35
+ let _filterDef = filterDef;
36
+ if (!!overrides) {
37
+ _filterDef = mergeOverrides(filterDef, overrides);
38
+ }
3
39
  // Keeps track of filters that have queries
4
40
  const queryIndex = [];
41
+ // Get query options from filter defs
5
42
  const queries = filterDef
6
43
  .filter((f, i) => {
7
44
  // Track array index of filter def that has a query
@@ -10,9 +47,11 @@ export function useFilterDefinitions({ filterDef, }) {
10
47
  return hasQuery;
11
48
  })
12
49
  .map((filter) => filter.query);
50
+ // run queries from filter defs
13
51
  const result = useQueries({
14
52
  queries,
15
53
  });
54
+ // Add useQueries result data to filter def as options
16
55
  queryIndex.forEach((index, i) => {
17
56
  var _a;
18
57
  // User query index to add useQueries result data to filter def as options
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monolith-forensics/monolith-ui",
3
- "version": "1.2.72",
3
+ "version": "1.2.74",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "author": "Matt Danner (Monolith Forensics LLC)",