@monolith-forensics/monolith-ui 1.2.60 → 1.2.62

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.
@@ -7,10 +7,11 @@ import { DefaultOperators } from "./DefaultOperators";
7
7
  import Input from "../Input";
8
8
  import DateInput from "../DateInput";
9
9
  import { useDebouncedCallback } from "use-debounce";
10
+ import moment from "moment";
10
11
  const StyledContainer = styled.div `
11
12
  display: flex;
12
13
  flex-direction: row;
13
- gap: 1.5px;
14
+ gap: 2px;
14
15
  `;
15
16
  const RuleContainer = styled(StyledContainer) `
16
17
  // first child
@@ -34,10 +35,14 @@ const RuleContainer = styled(StyledContainer) `
34
35
  const FilterContainer = styled(StyledContainer) `
35
36
  gap: 10px;
36
37
  flex-wrap: wrap;
38
+
39
+ button.mfui-DropDownMenu:hover {
40
+ border-color: ${({ theme }) => theme.palette.primary.main};
41
+ }
37
42
  `;
38
43
  const StyledButton = styled(Button) `
39
44
  border-radius: 0;
40
- font-size: 11px;
45
+ font-size: 12px;
41
46
  height: 20px;
42
47
 
43
48
  padding: 3px 5px;
@@ -58,11 +63,11 @@ const BaseLabel = styled.div `
58
63
 
59
64
  background-color: ${({ theme }) => theme.palette.background.secondary};
60
65
 
61
- font-size: 11px;
66
+ font-size: 12px;
62
67
 
63
68
  height: 20px;
64
69
 
65
- padding: 2px 4px;
70
+ padding: 3px 5px;
66
71
 
67
72
  overflow: hidden;
68
73
  white-space: nowrap;
@@ -81,8 +86,8 @@ const StyledInput = styled(Input) `
81
86
  min-height: 20px;
82
87
  width: 100px;
83
88
  border-radius: 0;
84
- font-size: 11px;
85
- padding: 2px 4px;
89
+ font-size: 12px;
90
+ padding: 3px 5px;
86
91
 
87
92
  border-color: transparent;
88
93
  background-color: ${({ theme }) => theme.palette.background.secondary};
@@ -93,37 +98,79 @@ const StyledInput = styled(Input) `
93
98
  `;
94
99
  const StyledDateInput = styled(DateInput) `
95
100
  height: 20px;
96
- // width: 100px;
97
- font-size: 11px;
101
+ font-size: 12px;
98
102
  border-radius: 0;
99
103
  border-color: transparent;
100
104
  background-color: ${({ theme }) => theme.palette.background.secondary};
105
+
106
+ cursor: pointer;
107
+
108
+ &:hover {
109
+ border-color: ${({ theme }) => theme.palette.primary.main};
110
+ }
101
111
  `;
112
+ const dateFormatResolver = (resolution) => {
113
+ switch (resolution) {
114
+ case "day":
115
+ return "YYYY-MM-DD";
116
+ // case "month":
117
+ // return "YYYY-MM";
118
+ // case "year":
119
+ // return "YYYY";
120
+ // case "hour":
121
+ // return "YYYY-MM-DD HH";
122
+ // case "minute":
123
+ // return "YYYY-MM-DD HH:mm";
124
+ case "second":
125
+ return "YYYY-MM-DD HH:mm:ss";
126
+ case "millisecond":
127
+ return "YYYY-MM-DD HH:mm:ss.SSS";
128
+ default:
129
+ return "YYYY-MM-DD HH:mm:ss";
130
+ }
131
+ };
102
132
  const ValueEditor = ({ rule, inputType, filterDef, onChange }) => {
103
- var _a, _b, _c;
133
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
104
134
  const theme = useTheme();
105
135
  const handleInputChange = useDebouncedCallback((e) => {
106
136
  const value = e.target.value;
107
- onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value }));
137
+ onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: value ? [value] : undefined }));
108
138
  }, 250);
109
139
  const handleMultiSelectChange = useDebouncedCallback((selected) => {
110
140
  onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: selected.map((s) => s.value) }));
111
141
  }, 100);
112
142
  const handleTimestampChange = useDebouncedCallback((timestamp) => {
113
- onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: timestamp }));
143
+ let formattedValue = timestamp;
144
+ if (formattedValue && filterDef.resolution) {
145
+ const date = moment(formattedValue);
146
+ switch (filterDef.resolution) {
147
+ case "day":
148
+ date.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });
149
+ break;
150
+ case "second":
151
+ date.set({ millisecond: 0 });
152
+ break;
153
+ case "millisecond":
154
+ break;
155
+ default:
156
+ break;
157
+ }
158
+ formattedValue = date.toISOString();
159
+ }
160
+ onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: formattedValue ? [formattedValue] : undefined }));
114
161
  }, 100);
115
162
  switch (inputType) {
116
163
  case "text":
117
- return (_jsx(StyledInput, { placeholder: "Enter Value...", defaultValue: rule.value, onChange: handleInputChange }));
164
+ return (_jsx(StyledInput, { placeholder: "Enter Value...", defaultValue: (_a = rule === null || rule === void 0 ? void 0 : rule.value) === null || _a === void 0 ? void 0 : _a[0], onChange: handleInputChange }));
118
165
  case "number":
119
- return (_jsx(StyledInput, { type: "number", placeholder: "Enter Value...", defaultValue: rule.value, onChange: handleInputChange }));
166
+ return (_jsx(StyledInput, { type: "number", placeholder: "Enter Value...", defaultValue: (_b = rule === null || rule === void 0 ? void 0 : rule.value) === null || _b === void 0 ? void 0 : _b[0], onChange: handleInputChange }));
120
167
  case "date":
121
- return (_jsx(StyledDateInput, { arrow: true, enableCalendar: true, format: "YYYY-MM-DD", defaultValue: rule.value, onChange: handleTimestampChange }));
168
+ return (_jsx(StyledDateInput, { arrow: false, enableCalendar: true, format: "YYYY-MM-DD", defaultValue: ((_c = rule.value) === null || _c === void 0 ? void 0 : _c[0]) === "" ? undefined : (_d = rule.value) === null || _d === void 0 ? void 0 : _d[0], onChange: handleTimestampChange }));
122
169
  case "datetime":
123
- return (_jsx(StyledDateInput, { arrow: true, enableCalendar: true, format: "YYYY-MM-DD HH:mm:ss", defaultValue: rule.value, onChange: handleTimestampChange }));
170
+ return (_jsx(StyledDateInput, { arrow: false, enableCalendar: true, format: dateFormatResolver(filterDef === null || filterDef === void 0 ? void 0 : filterDef.resolution), defaultValue: ((_e = rule.value) === null || _e === void 0 ? void 0 : _e[0]) === "" ? undefined : (_f = rule.value) === null || _f === void 0 ? void 0 : _f[0], onChange: handleTimestampChange }));
124
171
  case "multiselect":
125
172
  let display = Array.isArray(rule.value) && rule.value.length > 0
126
- ? ((_b = (_a = filterDef === null || filterDef === void 0 ? void 0 : filterDef.selectOptions) === null || _a === void 0 ? void 0 : _a.filter((o) => rule.value.includes(o.value))) === null || _b === void 0 ? void 0 : _b.map((o) => o.label).join(", ")) || "Select Value"
173
+ ? ((_h = (_g = filterDef === null || filterDef === void 0 ? void 0 : filterDef.selectOptions) === null || _g === void 0 ? void 0 : _g.filter((o) => rule.value.includes(o.value))) === null || _h === void 0 ? void 0 : _h.map((o) => o.label).join(", ")) || "Select Value"
127
174
  : "Select Value";
128
175
  if (Array.isArray(rule.value) && rule.value.length > 1) {
129
176
  display = `${rule.value.length} ${(filterDef === null || filterDef === void 0 ? void 0 : filterDef.pluralLabel) || "Values"}`;
@@ -148,19 +195,20 @@ const ValueEditor = ({ rule, inputType, filterDef, onChange }) => {
148
195
  },
149
196
  }, dropDownProps: {
150
197
  style: { width: 175, maxWidth: 400 },
151
- }, defaultValue: (_c = filterDef === null || filterDef === void 0 ? void 0 : filterDef.selectOptions) === null || _c === void 0 ? void 0 : _c.filter((o) => Array.isArray(rule.value) &&
198
+ }, defaultValue: (_j = filterDef === null || filterDef === void 0 ? void 0 : filterDef.selectOptions) === null || _j === void 0 ? void 0 : _j.filter((o) => Array.isArray(rule.value) &&
152
199
  !!rule.value.find((v) => v == o.value)), onChange: handleMultiSelectChange, children: display }));
153
200
  default:
154
201
  return (_jsx(StyledInput, { placeholder: "Enter Value...", onChange: handleInputChange }));
155
202
  }
156
203
  };
157
- const ValueSelector = ({ rule, inputType, filterDef, onChange, }) => {
204
+ const ValueSelector = ({ rule, inputType, filterDef, onChange }) => {
205
+ var _a;
158
206
  const isBetween = rule.operator.value.toLowerCase().includes("between");
159
207
  const handleValueChange = (e) => {
160
208
  const currentValue = rule.value;
161
209
  if (isBetween) {
162
- const newValue = [e.value];
163
- if (Array.isArray(currentValue) && currentValue.length === 2) {
210
+ const newValue = (e === null || e === void 0 ? void 0 : e.value) || [""];
211
+ if (currentValue === null || currentValue === void 0 ? void 0 : currentValue[1]) {
164
212
  newValue.push(currentValue[1]);
165
213
  }
166
214
  onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: newValue }));
@@ -169,19 +217,10 @@ const ValueSelector = ({ rule, inputType, filterDef, onChange, }) => {
169
217
  onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: e.value }));
170
218
  };
171
219
  const handleSecondaryValueChange = (e) => {
172
- const currentValue = rule.value;
173
- if (isBetween) {
174
- // current value already an array?
175
- if (Array.isArray(currentValue)) {
176
- onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: [currentValue[0], e.value] }));
177
- return;
178
- }
179
- const newValue = [currentValue, e.value];
180
- onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: newValue }));
181
- }
182
- return;
220
+ var _a, _b;
221
+ onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, rule), { value: [((_a = rule === null || rule === void 0 ? void 0 : rule.value) === null || _a === void 0 ? void 0 : _a[0]) || "", ((_b = e.value) === null || _b === void 0 ? void 0 : _b[0]) || ""] }));
183
222
  };
184
- return (_jsxs(_Fragment, { children: [_jsx(ValueEditor, { rule: rule, inputType: inputType, filterDef: filterDef, onChange: handleValueChange }), isBetween && (_jsxs(_Fragment, { children: [_jsx(FieldLabel, { children: "and" }), _jsx(ValueEditor, { rule: rule, inputType: inputType, onChange: handleSecondaryValueChange })] }))] }));
223
+ return (_jsxs(_Fragment, { children: [_jsx(ValueEditor, { rule: rule, inputType: inputType, filterDef: filterDef, onChange: handleValueChange }), isBetween && (_jsxs(_Fragment, { children: [_jsx(FieldLabel, { children: "and" }), _jsx(ValueEditor, { rule: Object.assign(Object.assign({}, rule), { value: [((_a = rule === null || rule === void 0 ? void 0 : rule.value) === null || _a === void 0 ? void 0 : _a[1]) || ""] }), inputType: inputType, filterDef: filterDef, onChange: handleSecondaryValueChange })] }))] }));
185
224
  };
186
225
  const CloseLabel = styled(StyledButton) `
187
226
  padding: 2px;
@@ -192,26 +231,51 @@ const CloseLabel = styled(StyledButton) `
192
231
  border-color: ${({ theme }) => theme.palette.primary.main};
193
232
  }
194
233
  `;
195
- const Rules = ({ rules = [], combinator, showCombinator, filterDefinitions, onDelete, onUpdate, }) => {
196
- return (_jsxs(_Fragment, { children: [showCombinator === true && (_jsx(FieldLabel, { children: combinator.toUpperCase() })), rules.map((rule, index) => {
234
+ const Rules = ({ rules = [], combinator, showCombinator, filterDefinitions, onDelete, onUpdate, onUpdateRootCombinator, }) => {
235
+ const handleCombinatorChange = (e) => {
236
+ onUpdateRootCombinator(e);
237
+ };
238
+ const handleOperatorChange = (rule, operator) => {
239
+ onUpdate(Object.assign(Object.assign({}, rule), { operator }));
240
+ };
241
+ return (_jsxs(_Fragment, { children: [showCombinator === true && (_jsx(DropDownMenu, { variant: "outlined", data: [
242
+ { label: "AND", value: "and" },
243
+ { label: "OR", value: "or" },
244
+ ],
245
+ // arrow={true}
246
+ size: "sm", buttonProps: {
247
+ title: "Chain these query filters together using AND | OR logic",
248
+ variant: "contained",
249
+ style: {
250
+ fontWeight: "normal",
251
+ fontSize: 12,
252
+ padding: "3px 5px",
253
+ height: 20,
254
+ borderRadius: 4,
255
+ },
256
+ }, onItemSelect: (e) => handleCombinatorChange(e.value), dropDownProps: {
257
+ style: { width: 175, maxWidth: 400 },
258
+ }, children: combinator.toUpperCase() })), rules.map((rule) => {
197
259
  const filterDef = filterDefinitions.find((f) => f.dataField === rule.dataField);
260
+ if (!filterDef)
261
+ throw new Error(`Filter Definition not found for dataField: ${rule.dataField}`);
198
262
  const operatorOptions = (filterDef === null || filterDef === void 0 ? void 0 : filterDef.operators) || DefaultOperators;
199
263
  const inputType = (filterDef === null || filterDef === void 0 ? void 0 : filterDef.inputType) || "text";
200
264
  return (_jsxs(RuleContainer, { "data-rule-id": rule.id, children: [_jsx(FieldLabel, { children: rule.label }), _jsx(DropDownMenu, { variant: "outlined", data: operatorOptions,
201
265
  // arrow={true}
202
- buttonProps: {
266
+ size: "sm", buttonProps: {
203
267
  title: "Select Operator",
204
268
  variant: "contained",
205
- size: "xxs",
206
269
  style: {
207
270
  fontWeight: "normal",
271
+ fontSize: 12,
208
272
  padding: "3px 5px",
209
273
  height: 20,
210
274
  borderRadius: 0,
211
275
  },
212
- }, onItemSelect: (e) => onUpdate(Object.assign(Object.assign({}, rule), { operator: e })), dropDownProps: {
276
+ }, onItemSelect: (e) => handleOperatorChange(rule, e), dropDownProps: {
213
277
  style: { width: 175, maxWidth: 400 },
214
- }, children: rule.operator.label }), _jsx(ValueSelector, { rule: rule, inputType: inputType, filterDef: filterDef, onChange: onUpdate }), _jsx(CloseLabel, { variant: "contained", size: "xxs", onClick: () => onDelete(rule), children: _jsx(XIcon, { size: 16 }) })] }, rule.id));
278
+ }, children: rule.operator.label }), _jsx(ValueSelector, { rule: rule, inputType: inputType, filterDef: filterDef, onChange: onUpdate }), _jsx(CloseLabel, { variant: "contained", onClick: () => onDelete(rule), children: _jsx(XIcon, { size: 16 }) })] }, rule.id));
215
279
  })] }));
216
280
  };
217
281
  export const QueryFilter = ({ queryFilter, }) => {
@@ -219,5 +283,5 @@ export const QueryFilter = ({ queryFilter, }) => {
219
283
  const { filter, filterDefinitions, showCombinator } = queryFilter;
220
284
  if (((_a = filter === null || filter === void 0 ? void 0 : filter.rules) === null || _a === void 0 ? void 0 : _a.length) == 0)
221
285
  return null;
222
- return (_jsx(FilterContainer, { className: "mfui-QueryFilter", children: _jsx(Rules, { rules: filter.rules, combinator: filter.combinator, showCombinator: showCombinator, filterDefinitions: filterDefinitions, onDelete: (rule) => queryFilter.removeRule(rule.id), onUpdate: (rule) => queryFilter.updateRule(rule) }) }));
286
+ return (_jsx(FilterContainer, { className: "mfui-QueryFilter", children: _jsx(Rules, { rules: filter.rules, combinator: filter.combinator, showCombinator: showCombinator, filterDefinitions: filterDefinitions, onDelete: (rule) => queryFilter.removeRule(rule.id), onUpdate: (rule) => queryFilter.updateRule(rule), onUpdateRootCombinator: (e) => queryFilter.updateRootCombinator(e) }) }));
223
287
  };
@@ -12,6 +12,7 @@ export type QueryFilterType = {
12
12
  addRule: (rule: Rule) => void;
13
13
  removeRule: (id: string) => void;
14
14
  updateRule: (rule: Rule) => void;
15
+ updateRootCombinator: (combinator: Combinator) => void;
15
16
  };
16
17
  export type UseQueryFilter = (args: UseQueryFilterProps) => QueryFilterType;
17
18
  export type Combinator = "and" | "or";
@@ -26,6 +27,7 @@ export interface FilterDefinition {
26
27
  pluralLabel?: string;
27
28
  operators?: Operator[];
28
29
  inputType?: HTMLInputElement["type"];
30
+ resolution?: "day" | "second" | "millisecond";
29
31
  placeholder?: string;
30
32
  selectOptions?: DropDownItem[];
31
33
  editorType?: EditorType;
@@ -39,7 +41,7 @@ export interface FilterDefinition {
39
41
  export interface Rule {
40
42
  id?: string;
41
43
  dataField: string;
42
- value: string | string[] | number | number[];
44
+ value?: string[];
43
45
  operator: Operator;
44
46
  label: string;
45
47
  }
@@ -20,6 +20,9 @@ export const useQueryFilter = (args) => {
20
20
  const rules = filter.rules.map((r) => (r.id === rule.id ? rule : r));
21
21
  setFilter(Object.assign(Object.assign({}, filter), { rules }));
22
22
  };
23
+ const updateRootCombinator = (combinator) => {
24
+ setFilter(Object.assign(Object.assign({}, filter), { combinator }));
25
+ };
23
26
  useEffect(() => {
24
27
  var _a;
25
28
  (_a = args === null || args === void 0 ? void 0 : args.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(args, filter);
@@ -28,6 +31,7 @@ export const useQueryFilter = (args) => {
28
31
  filter,
29
32
  filterDefinitions: args.filterDefinitions,
30
33
  showCombinator: args.showCombinator,
34
+ updateRootCombinator,
31
35
  addRule,
32
36
  removeRule,
33
37
  updateRule,
@@ -35,6 +35,7 @@ const TableMenu = () => {
35
35
  const queryFilter = useQueryFilter({
36
36
  defaultFilter: filterState,
37
37
  filterDefinitions: (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filterDefinitions) || [],
38
+ showCombinator: true,
38
39
  onFilterChange: (q) => {
39
40
  var _a;
40
41
  handleFilterChange(q);
@@ -54,11 +55,11 @@ const TableMenu = () => {
54
55
  id: shortUUID.generate(),
55
56
  dataField: item.value,
56
57
  operator: ((_a = data === null || data === void 0 ? void 0 : data.operators) === null || _a === void 0 ? void 0 : _a[0]) || DefaultOperators[0],
57
- value: "",
58
+ value: undefined,
58
59
  label: item.label,
59
60
  });
60
61
  };
61
- return (_jsxs(StyledContainer, { children: [_jsxs(FlexedRow, { className: "justify-sb", children: [_jsxs(FlexedRow, { children: [(addButtonOptions === null || addButtonOptions === void 0 ? void 0 : addButtonOptions.enabled) === true && (_jsx(Button, { color: "primary", variant: "contained", size: "xxs", onClick: () => { var _a, _b; return (_b = (_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a); }, children: ((_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.label) || "+ Add Record" })), (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.enabled) === true && (_jsx(DropDownMenu, { variant: "outlined", size: "xs", data: ((_b = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filterDefinitions) === null || _b === void 0 ? void 0 : _b.map((filter) => ({
62
+ return (_jsxs(StyledContainer, { children: [_jsxs(FlexedRow, { className: "justify-sb", children: [_jsxs(FlexedRow, { children: [(addButtonOptions === null || addButtonOptions === void 0 ? void 0 : addButtonOptions.enabled) === true && (_jsx(Button, { color: "primary", variant: "contained", size: "xxs", onClick: () => { var _a, _b; return (_b = (_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a); }, children: ((_a = tableMenuOptions === null || tableMenuOptions === void 0 ? void 0 : tableMenuOptions.addButtonOptions) === null || _a === void 0 ? void 0 : _a.label) || "+ Add Record" })), (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.enabled) === true && (_jsx(DropDownMenu, { variant: "outlined", size: "sm", data: ((_b = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filterDefinitions) === null || _b === void 0 ? void 0 : _b.map((filter) => ({
62
63
  label: filter.label,
63
64
  value: filter.dataField,
64
65
  data: filter,
@@ -170,74 +170,74 @@ const TableProvider = (_a) => {
170
170
  for (const rule of rules) {
171
171
  const column = columnState.find((col) => col.dataField === rule.dataField);
172
172
  const { value, operator, dataField } = rule;
173
- if (!value) {
173
+ if (!value || value.length === 0) {
174
174
  continue;
175
175
  }
176
176
  switch (operator.value) {
177
177
  case "=":
178
178
  processedData = processedData.filter((row) => {
179
179
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
180
- return moment(row[dataField]).isSame(moment(value), "day");
180
+ return moment(row[dataField]).isSame(moment(value[0]), "day");
181
181
  }
182
182
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
183
- return moment(row[dataField]).isSame(moment(value));
183
+ return moment(row[dataField]).isSame(moment(value[0]));
184
184
  }
185
- return row[dataField] == value;
185
+ return row[dataField] == value[0];
186
186
  });
187
187
  break;
188
188
  case "!=":
189
189
  processedData = processedData.filter((row) => {
190
190
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
191
- return !moment(row[dataField]).isSame(moment(value), "day");
191
+ return !moment(row[dataField]).isSame(moment(value[0]), "day");
192
192
  }
193
193
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
194
- return !moment(row[dataField]).isSame(moment(value));
194
+ return !moment(row[dataField]).isSame(moment(value[0]));
195
195
  }
196
- return row[dataField] != value;
196
+ return row[dataField] != value[0];
197
197
  });
198
198
  break;
199
199
  case ">":
200
200
  processedData = processedData.filter((row) => {
201
201
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
202
- return moment(row[dataField]).isAfter(moment(value), "day");
202
+ return moment(row[dataField]).isAfter(moment(value[0]), "day");
203
203
  }
204
204
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
205
- return moment(row[dataField]).isAfter(moment(value));
205
+ return moment(row[dataField]).isAfter(moment(value[0]));
206
206
  }
207
- return row[dataField] > value;
207
+ return row[dataField] > value[0];
208
208
  });
209
209
  break;
210
210
  case "<":
211
211
  processedData = processedData.filter((row) => {
212
212
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
213
- return moment(row[dataField]).isBefore(moment(value), "day");
213
+ return moment(row[dataField]).isBefore(moment(value[0]), "day");
214
214
  }
215
215
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
216
- return moment(row[dataField]).isBefore(moment(value));
216
+ return moment(row[dataField]).isBefore(moment(value[0]));
217
217
  }
218
- return row[dataField] < value;
218
+ return row[dataField] < value[0];
219
219
  });
220
220
  break;
221
221
  case ">=":
222
222
  processedData = processedData.filter((row) => {
223
223
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
224
- return moment(row[dataField]).isSameOrAfter(moment(value), "day");
224
+ return moment(row[dataField]).isSameOrAfter(moment(value[0]), "day");
225
225
  }
226
226
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
227
- return moment(row[dataField]).isSameOrAfter(moment(value));
227
+ return moment(row[dataField]).isSameOrAfter(moment(value[0]));
228
228
  }
229
- return row[dataField] >= value;
229
+ return row[dataField] >= value[0];
230
230
  });
231
231
  break;
232
232
  case "<=":
233
233
  processedData = processedData.filter((row) => {
234
234
  if ((column === null || column === void 0 ? void 0 : column.dataType) === "date") {
235
- return moment(row[dataField]).isSameOrBefore(moment(value), "day");
235
+ return moment(row[dataField]).isSameOrBefore(moment(value[0]), "day");
236
236
  }
237
237
  else if ((column === null || column === void 0 ? void 0 : column.dataType) === "datetime") {
238
- return moment(row[dataField]).isSameOrBefore(moment(value));
238
+ return moment(row[dataField]).isSameOrBefore(moment(value[0]));
239
239
  }
240
- return row[dataField] <= value;
240
+ return row[dataField] <= value[0];
241
241
  });
242
242
  break;
243
243
  case "between":
@@ -266,16 +266,18 @@ const TableProvider = (_a) => {
266
266
  break;
267
267
  case "contains":
268
268
  processedData = processedData.filter((row) => {
269
+ var _a;
269
270
  return row[dataField]
270
271
  .toLowerCase()
271
- .includes(value.toLowerCase());
272
+ .includes((_a = value[0]) === null || _a === void 0 ? void 0 : _a.toString().toLowerCase());
272
273
  });
273
274
  break;
274
275
  case "doesNotContain":
275
276
  processedData = processedData.filter((row) => {
277
+ var _a;
276
278
  return !row[dataField]
277
279
  .toLowerCase()
278
- .includes(value.toLowerCase());
280
+ .includes((_a = value[0]) === null || _a === void 0 ? void 0 : _a.toString().toLowerCase());
279
281
  });
280
282
  break;
281
283
  case "in":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monolith-forensics/monolith-ui",
3
- "version": "1.2.60",
3
+ "version": "1.2.62",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "author": "Matt Danner (Monolith Forensics LLC)",