@bigbinary/neeto-filters-frontend 4.3.32 → 4.3.33

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.
Files changed (79) hide show
  1. package/README.md +0 -2
  2. package/dist/.ready +1 -0
  3. package/dist/Bar.js +9 -22
  4. package/dist/Bar.js.map +1 -1
  5. package/dist/Filters.js +6 -9
  6. package/dist/Filters.js.map +1 -1
  7. package/dist/Segments.js +9 -8
  8. package/dist/Segments.js.map +1 -1
  9. package/dist/cjs/Bar.js +11 -24
  10. package/dist/cjs/Bar.js.map +1 -1
  11. package/dist/cjs/Filters.js +6 -9
  12. package/dist/cjs/Filters.js.map +1 -1
  13. package/dist/cjs/Segments.js +6 -5
  14. package/dist/cjs/Segments.js.map +1 -1
  15. package/dist/cjs/hooks.js +1 -1
  16. package/dist/cjs/index.js +7 -4
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/utils.js +2 -1
  19. package/dist/cjs/utils.js.map +1 -1
  20. package/dist/cjs/v2/Bar.js +673 -0
  21. package/dist/cjs/v2/Bar.js.map +1 -0
  22. package/dist/cjs/v2/Filters.js +1282 -0
  23. package/dist/cjs/v2/Filters.js.map +1 -0
  24. package/dist/cjs/v2/Segments.js +532 -0
  25. package/dist/cjs/v2/Segments.js.map +1 -0
  26. package/dist/cjs/v2/index.js +70 -0
  27. package/dist/cjs/v2/index.js.map +1 -0
  28. package/dist/cjs/v2/utils.js +70 -0
  29. package/dist/cjs/v2/utils.js.map +1 -0
  30. package/dist/dayjs-9rsrbiYS.js +6 -0
  31. package/dist/dayjs-9rsrbiYS.js.map +1 -0
  32. package/dist/dayjs-DNGB9yJD.js +4 -0
  33. package/dist/dayjs-DNGB9yJD.js.map +1 -0
  34. package/dist/hooks.js +1 -1
  35. package/dist/{index-Bq32eLIG.js → index-00KCfktU.js} +4 -4
  36. package/dist/{index-Bq32eLIG.js.map → index-00KCfktU.js.map} +1 -1
  37. package/dist/{index-Rn6zFKPg.js → index-4MKjSNsp.js} +28 -27
  38. package/dist/{index-Rn6zFKPg.js.map → index-4MKjSNsp.js.map} +1 -1
  39. package/dist/{index-CzUm_HaL.js → index-BiqUQPwR.js} +11 -10
  40. package/dist/{index-CzUm_HaL.js.map → index-BiqUQPwR.js.map} +1 -1
  41. package/dist/index-BzkSk3Jh.js +5 -0
  42. package/dist/index-BzkSk3Jh.js.map +1 -0
  43. package/dist/{index-BYRIatjo.js → index-D5wjkRUM.js} +4 -4
  44. package/dist/{index-BYRIatjo.js.map → index-D5wjkRUM.js.map} +1 -1
  45. package/dist/index-DX0qF4mf.js +7 -0
  46. package/dist/index-DX0qF4mf.js.map +1 -0
  47. package/dist/index.js +7 -4
  48. package/dist/index.js.map +1 -1
  49. package/dist/keyboardShortcuts-DcgoM1dR.js +20 -0
  50. package/dist/keyboardShortcuts-DcgoM1dR.js.map +1 -0
  51. package/dist/keyboardShortcuts-oiJyIaFr.js +18 -0
  52. package/dist/keyboardShortcuts-oiJyIaFr.js.map +1 -0
  53. package/dist/{useSegmentsApi-wYy0UPCH.js → useSegmentsApi-0Le3BZOo.js} +3 -3
  54. package/dist/{useSegmentsApi-wYy0UPCH.js.map → useSegmentsApi-0Le3BZOo.js.map} +1 -1
  55. package/dist/{useSegmentsApi-CDE1HWEv.js → useSegmentsApi-DlvMy4A9.js} +2 -2
  56. package/dist/{useSegmentsApi-CDE1HWEv.js.map → useSegmentsApi-DlvMy4A9.js.map} +1 -1
  57. package/dist/utils-ClTYBS1C.js +865 -0
  58. package/dist/utils-ClTYBS1C.js.map +1 -0
  59. package/dist/{utils-BuCOQsNv.js → utils-CzRCzZ3I.js} +3 -4
  60. package/dist/utils-CzRCzZ3I.js.map +1 -0
  61. package/dist/utils-Dqmvcb8M.js +802 -0
  62. package/dist/utils-Dqmvcb8M.js.map +1 -0
  63. package/dist/{utils-CxVWpPGf.js → utils-l0QK_DBo.js} +7 -8
  64. package/dist/utils-l0QK_DBo.js.map +1 -0
  65. package/dist/utils.js +2 -1
  66. package/dist/utils.js.map +1 -1
  67. package/dist/v2/Bar.js +671 -0
  68. package/dist/v2/Bar.js.map +1 -0
  69. package/dist/v2/Filters.js +1280 -0
  70. package/dist/v2/Filters.js.map +1 -0
  71. package/dist/v2/Segments.js +530 -0
  72. package/dist/v2/Segments.js.map +1 -0
  73. package/dist/v2/index.js +54 -0
  74. package/dist/v2/index.js.map +1 -0
  75. package/dist/v2/utils.js +12 -0
  76. package/dist/v2/utils.js.map +1 -0
  77. package/package.json +41 -28
  78. package/dist/utils-BuCOQsNv.js.map +0 -1
  79. package/dist/utils-CxVWpPGf.js.map +0 -1
@@ -0,0 +1,1280 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import { Select, DatePicker, TimePicker, Input, TreeSelect as TreeSelect$2, Sheet, Accordion, Typography, Button } from '@bigbinary/neeto-atoms';
3
+ import classnames from 'classnames';
4
+ import { isNotEmpty, findBy, toLabelAndValue, isNotPresent, hyphenate, noop, removeBy, replaceBy, isPresent, existsBy } from '@bigbinary/neeto-cist';
5
+ import { useDebounce, useQueryParams, withT } from '@bigbinary/neeto-commons-frontend/react-utils';
6
+ import { pluck, append, mergeRight, isNil, isEmpty, concat, omit, mergeDeepRight, equals, modify, not, last, prop, identity } from 'ramda';
7
+ import '../index-BzkSk3Jh.js';
8
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
9
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
11
+ import { useTransition, useRef, useEffect, memo, useState, useMemo, createElement } from 'react';
12
+ import { dayjs, buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
13
+ import Search from '@bigbinary/neeto-molecules/Search';
14
+ import { useTranslation } from 'react-i18next';
15
+ import { useLocation, useHistory } from 'react-router-dom';
16
+ import { D as DATE_OPTIONS, f as DATE_RANGE_OPTIONS, g as TIME_RANGE_OPTIONS, d as SINGLE_DATE_OPTIONS, e as SINGLE_TIME_OPTIONS, T as TIME_OPTIONS, S as SEARCH_TERM_KEY } from '../constants-8DtAPJaA.js';
17
+ import { u as buildFiltersFromSearchParams, v as getSearchTermFromUrl, w as buildDefaultFilters, d as buildUrlFromFilters, t as isKeywordFilterPresent, s as getSnakeCasedQueryParams, x as compareFilters, c as buildSelectorsFromURL, y as buildFiltersPayload, D as DEFAULT_HELP_ICON_PROPS, z as isDateRange, A as isTimeRange, j as isMulti, C as CHECKBOX_OPTIONS, B as DEFAULT_BOOLEAN_OPTIONS, M as MULTI_DROPDOWN_RULES, S as SINGLE_DROPDOWN_RULES, E as buildUpdatedFilter$1, F as TIME_FORMAT, G as TREE_SELECT_RULES, p as isText, q as isDigit, i as isDate, g as isTime, l as isSingleDate, m as isSingleTime, n as isBoolean, H as isCheckbox$1, k as isTreeSelect, I as getColumnsWithStandardizedType, J as buildFilteredColumns } from '../utils-Dqmvcb8M.js';
18
+ import { F as isCheckbox, I as buildUpdatedFilter, p as isCustomDateRange, K as buildRuleOptions, L as isUndefinedOrEmpty, r as isCustomTimeRange } from '../utils-l0QK_DBo.js';
19
+ import '../dayjs-DNGB9yJD.js';
20
+ import { jsx, jsxs } from 'react/jsx-runtime';
21
+ import 'i18next';
22
+ import 'lucide-react';
23
+ import '@bigbinary/neeto-icons/Help';
24
+
25
+ var useFilters = function useFilters(_ref) {
26
+ var onFiltersChange = _ref.onFiltersChange,
27
+ columns = _ref.columns,
28
+ keywordFilter = _ref.keywordFilter,
29
+ onSelectorsChange = _ref.onSelectorsChange;
30
+ var _useTransition = useTransition(),
31
+ _useTransition2 = _slicedToArray(_useTransition, 2);
32
+ _useTransition2[0];
33
+ var startTransition = _useTransition2[1];
34
+ var initialRender = useRef(true);
35
+ var prevFilters = useRef([]);
36
+ var location = useLocation();
37
+ var filters = buildFiltersFromSearchParams(columns, false);
38
+ var history = useHistory();
39
+ var defaultValuesOfColumns = JSON.stringify(pluck("defaultValue", columns));
40
+ var handlePrecenseOfDefaultFilters = function handlePrecenseOfDefaultFilters(defaultFilters) {
41
+ var params = buildUrlFromFilters({
42
+ columns: columns,
43
+ filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(defaultFilters), [keywordFilter]) : defaultFilters
44
+ });
45
+ history.replace({
46
+ search: params
47
+ });
48
+ };
49
+ var handleFiltersChange = function handleFiltersChange(filtersPayload) {
50
+ startTransition(function () {
51
+ onFiltersChange(buildFiltersPayload(filtersPayload.filter(function (filter) {
52
+ return !isNil(filter.node);
53
+ })));
54
+ });
55
+ };
56
+
57
+ //This function sends the updated filters to host via callbacks.
58
+ var sendUpdatedFilters = function sendUpdatedFilters() {
59
+ if (compareFilters(append(keywordFilter, filters), prevFilters.current)) {
60
+ return;
61
+ }
62
+ var newFilters = buildFiltersFromSearchParams(columns);
63
+ var filtersPayload = isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? append(keywordFilter, newFilters) : newFilters;
64
+ handleFiltersChange(filtersPayload);
65
+ onSelectorsChange(buildSelectorsFromURL(columns));
66
+ };
67
+ var handleChangesInURL = function handleChangesInURL() {
68
+ var defaultFilters = buildDefaultFilters(columns, filters);
69
+ var searchParams = getSnakeCasedQueryParams();
70
+ var keys = pluck("key", append(keywordFilter, columns));
71
+ if (keys.every(function (key) {
72
+ return isNil(searchParams[key]);
73
+ }) && !isEmpty(defaultFilters)) {
74
+ history.replace({
75
+ search: buildUrlFromFilters({
76
+ columns: columns,
77
+ filters: concat(defaultFilters, filters)
78
+ })
79
+ });
80
+ filters = buildFiltersFromSearchParams(columns, false);
81
+ }
82
+ };
83
+ useEffect(function () {
84
+ if (initialRender.current) {
85
+ initialRender.current = false;
86
+ var keywordValue = getSearchTermFromUrl();
87
+ var defaultFilters = buildDefaultFilters(columns, filters);
88
+ isNotEmpty(defaultFilters) && handlePrecenseOfDefaultFilters(defaultFilters);
89
+ prevFilters.current = append(mergeRight(keywordFilter, {
90
+ value: keywordValue
91
+ }), filters);
92
+ } else {
93
+ handleChangesInURL();
94
+ sendUpdatedFilters();
95
+ prevFilters.current = append(keywordFilter, filters);
96
+ }
97
+ }, [location.search, defaultValuesOfColumns]);
98
+ return filters;
99
+ };
100
+
101
+ var getOtherProps = function getOtherProps(props) {
102
+ return omit(["key", "node", "label", "type", "values", "model", "showRuleSelector"], props);
103
+ };
104
+ var buildDropdownOptions = function buildDropdownOptions(_ref3) {
105
+ var defaultType = _ref3.defaultType,
106
+ filter = _ref3.filter,
107
+ _ref3$options = _ref3.options,
108
+ options = _ref3$options === void 0 ? [] : _ref3$options;
109
+ if (isEmpty(options)) {
110
+ if (isDateRange(defaultType)) {
111
+ options = DATE_RANGE_OPTIONS;
112
+ } else if (isTimeRange(defaultType)) {
113
+ options = TIME_RANGE_OPTIONS;
114
+ }
115
+ }
116
+ options = options.map(modify("value", function (value) {
117
+ return value === null || value === void 0 ? void 0 : value.toString();
118
+ }));
119
+ if (!filter) return options;
120
+ if (isMulti(defaultType)) {
121
+ var selectedOptions = filter.value.map(function (value) {
122
+ return findBy({
123
+ value: value
124
+ }, options) || toLabelAndValue(value);
125
+ });
126
+ var nonSelectedOptions = options.filter(function (option) {
127
+ return !filter.value.includes(option.value);
128
+ });
129
+ return concat(selectedOptions, nonSelectedOptions);
130
+ }
131
+ if (!findBy({
132
+ value: filter.value
133
+ }, options)) {
134
+ return append(toLabelAndValue(filter.value), options);
135
+ }
136
+ return options;
137
+ };
138
+ var initializeDateRule = function initializeDateRule(filter) {
139
+ return filter ? findBy({
140
+ value: filter === null || filter === void 0 ? void 0 : filter.value
141
+ }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
142
+ };
143
+ var getDateValue = function getDateValue(value, rule) {
144
+ if (isEmpty(value) || isNil(value)) {
145
+ return null;
146
+ }
147
+ if (rule.value === "custom-date-range") {
148
+ return value;
149
+ }
150
+ return rule.value === "before" ? dayjs(value[1]).add(1, "day") : dayjs(value[0]).subtract(1, "day");
151
+ };
152
+ var findDateOption = function findDateOption(filter, options) {
153
+ var value = filter.value;
154
+ var isBeforeOrAfter = dayjs(value[1]).diff(dayjs(value[0]), "year") >= 90;
155
+ if (not(isBeforeOrAfter)) {
156
+ return last(options);
157
+ }
158
+ var currentMoment = dayjs();
159
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
160
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
161
+ return diffWithStart < diffWithEnd ? findBy({
162
+ value: "after"
163
+ }, options) : findBy({
164
+ value: "before"
165
+ }, options);
166
+ };
167
+ var buildDateValues = function buildDateValues(dates, selectedRule) {
168
+ if (selectedRule.value === "after") {
169
+ return [dates.add(1, "day"), dates.add(100, "year")];
170
+ } else if (selectedRule.value === "before") {
171
+ return [dates.subtract(100, "year"), dates.subtract(1, "day")];
172
+ }
173
+ return dates;
174
+ };
175
+ var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
176
+ return mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
177
+ };
178
+ var hasInvalidTimes = function hasInvalidTimes(times) {
179
+ if (isNotPresent(times)) return false;
180
+ if (Array.isArray(times)) {
181
+ return times.some(function (time) {
182
+ return time.isValid();
183
+ }) === false;
184
+ }
185
+ return !times.isValid();
186
+ };
187
+ var areCustomTimeRangeValuesNotValid = function areCustomTimeRangeValuesNotValid(times) {
188
+ return !times.every(function (time) {
189
+ return time.isValid();
190
+ });
191
+ };
192
+ var isRuleEmpty = function isRuleEmpty(rule) {
193
+ return equals(rule, "is_unknown");
194
+ };
195
+
196
+ function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
197
+ function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
198
+ var Boolean$1 = function Boolean(_ref) {
199
+ var _filter$value;
200
+ var column = _ref.column,
201
+ filter = _ref.filter,
202
+ handleApplyFilter = _ref.handleApplyFilter,
203
+ autoFocus = _ref.autoFocus;
204
+ var key = column.key,
205
+ _column$defaultType = column.defaultType,
206
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
207
+ label = column.label,
208
+ values = column.values,
209
+ _column$helpIconProps = column.helpIconProps,
210
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
211
+ var options = isNotPresent(values) ? isCheckbox(defaultType) ? CHECKBOX_OPTIONS : DEFAULT_BOOLEAN_OPTIONS : values;
212
+ var otherProps = getOtherProps(column);
213
+ var value = (_filter$value = filter === null || filter === void 0 ? void 0 : filter.value) !== null && _filter$value !== void 0 ? _filter$value : null;
214
+ var _useTranslation = useTranslation(),
215
+ t = _useTranslation.t;
216
+ var handleChange = function handleChange(selectedValue) {
217
+ if (isEmpty(selectedValue) || isNil(selectedValue)) {
218
+ handleApplyFilter({
219
+ _delete: true
220
+ });
221
+ return;
222
+ }
223
+ var option = findBy({
224
+ value: selectedValue
225
+ }, options);
226
+ var updatedFilter = buildUpdatedFilter({
227
+ column: column,
228
+ defaultType: defaultType,
229
+ option: option
230
+ });
231
+ handleApplyFilter(updatedFilter);
232
+ };
233
+ return /*#__PURE__*/jsx("div", {
234
+ className: "neeto-filters-pane-filter__item-wrapper",
235
+ children: /*#__PURE__*/jsx(Select, _objectSpread$9(_objectSpread$9({
236
+ autoFocus: autoFocus,
237
+ label: label,
238
+ options: options,
239
+ value: value,
240
+ isClearable: true
241
+ }, isNotEmpty(helpIconProps) && {
242
+ labelProps: {
243
+ helpIconProps: buildHelpIconProps(helpIconProps)
244
+ }
245
+ }), {}, {
246
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
247
+ strategy: "fixed",
248
+ placeholder: t("neetoFilters.messages.selectOption", {
249
+ resource: label
250
+ }),
251
+ onChange: handleChange
252
+ }, otherProps))
253
+ });
254
+ };
255
+ var Boolean = /*#__PURE__*/memo(Boolean$1);
256
+
257
+ function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
258
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
259
+ var Datetime$1 = function Datetime(_ref) {
260
+ var column = _ref.column,
261
+ filter = _ref.filter,
262
+ handleApplyFilter = _ref.handleApplyFilter,
263
+ autoFocus = _ref.autoFocus;
264
+ var _useState = useState(function () {
265
+ var _initializeDateRule$v, _initializeDateRule;
266
+ return (_initializeDateRule$v = (_initializeDateRule = initializeDateRule(filter)) === null || _initializeDateRule === void 0 ? void 0 : _initializeDateRule.value) !== null && _initializeDateRule$v !== void 0 ? _initializeDateRule$v : null;
267
+ }),
268
+ _useState2 = _slicedToArray(_useState, 2),
269
+ selectedRule = _useState2[0],
270
+ setSelectedRule = _useState2[1];
271
+ var _useTranslation = useTranslation(),
272
+ t = _useTranslation.t;
273
+ var key = column.key,
274
+ _column$defaultType = column.defaultType,
275
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
276
+ label = column.label,
277
+ _column$helpIconProps = column.helpIconProps,
278
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
279
+ var isDatePickerShown = filter && isCustomDateRange(filter.value);
280
+ var otherProps = getOtherProps(column);
281
+ var handleChange = function handleChange(selectedValue) {
282
+ if (isEmpty(selectedValue) || isNil(selectedValue)) {
283
+ handleApplyFilter({
284
+ _delete: true
285
+ });
286
+ setSelectedRule(null);
287
+ return;
288
+ }
289
+ setSelectedRule(selectedValue);
290
+ var option = findBy({
291
+ value: selectedValue
292
+ }, DATE_OPTIONS);
293
+ var updatedFilter = buildUpdatedFilter({
294
+ column: column,
295
+ defaultType: defaultType,
296
+ option: option
297
+ });
298
+ handleApplyFilter(updatedFilter);
299
+ };
300
+ var handleDateRangeChange = function handleDateRangeChange(dates) {
301
+ if (isEmpty(dates) || isNil(dates)) {
302
+ handleApplyFilter({
303
+ _delete: true
304
+ });
305
+ setSelectedRule(null);
306
+ return;
307
+ }
308
+ var updatedFilter = buildUpdatedFilter({
309
+ column: column,
310
+ defaultType: defaultType,
311
+ option: {
312
+ value: buildDateValues(dates, {
313
+ value: selectedRule
314
+ }).map(function (date) {
315
+ return date.toISOString();
316
+ })
317
+ }
318
+ });
319
+ handleApplyFilter(updatedFilter);
320
+ };
321
+ useEffect(function () {
322
+ isNil(filter) && setSelectedRule(null);
323
+ }, [filter]);
324
+ return /*#__PURE__*/jsxs("div", {
325
+ className: "neeto-filters-pane-filter__item-wrapper",
326
+ children: [/*#__PURE__*/jsx(Select, _objectSpread$8(_objectSpread$8({
327
+ autoFocus: autoFocus,
328
+ label: label,
329
+ isClearable: true,
330
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
331
+ options: DATE_OPTIONS,
332
+ strategy: "fixed",
333
+ value: selectedRule,
334
+ placeholder: t("neetoFilters.messages.selectResource", {
335
+ resource: label
336
+ })
337
+ }, isNotEmpty(helpIconProps) && {
338
+ labelProps: {
339
+ helpIconProps: buildHelpIconProps(helpIconProps)
340
+ }
341
+ }), {}, {
342
+ onChange: handleChange
343
+ })), isDatePickerShown && /*#__PURE__*/jsx(DatePicker, _objectSpread$8({
344
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-date-range"),
345
+ getPopupContainer: prop("parentNode"),
346
+ type: selectedRule === "custom-date-range" ? "range" : "date",
347
+ value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, {
348
+ value: selectedRule
349
+ }),
350
+ onChange: handleDateRangeChange
351
+ }, otherProps))]
352
+ });
353
+ };
354
+ var Datetime = /*#__PURE__*/memo(Datetime$1);
355
+
356
+ function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
357
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
358
+ var Dropdown$1 = function Dropdown(_ref) {
359
+ var _filter$value, _filter$value2;
360
+ var column = _ref.column,
361
+ filter = _ref.filter,
362
+ handleApplyFilter = _ref.handleApplyFilter,
363
+ autoFocus = _ref.autoFocus,
364
+ filters = _ref.filters;
365
+ var key = column.key,
366
+ label = column.label,
367
+ values = column.values,
368
+ defaultValue = column.defaultValue,
369
+ _column$defaultType = column.defaultType,
370
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
371
+ _column$showRuleSelec = column.showRuleSelector,
372
+ showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
373
+ _column$isClearable = column.isClearable,
374
+ isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
375
+ _column$helpIconProps = column.helpIconProps,
376
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
377
+ var otherProps = getOtherProps(column);
378
+ var options = buildDropdownOptions({
379
+ defaultType: defaultType,
380
+ filter: filter,
381
+ options: values
382
+ });
383
+ var dropdownRules = isMulti(defaultType) ? MULTI_DROPDOWN_RULES : SINGLE_DROPDOWN_RULES;
384
+ var value = isMulti(defaultType) ? (_filter$value = filter === null || filter === void 0 ? void 0 : filter.value) !== null && _filter$value !== void 0 ? _filter$value : [] : (_filter$value2 = filter === null || filter === void 0 ? void 0 : filter.value) !== null && _filter$value2 !== void 0 ? _filter$value2 : null;
385
+ var _useState = useState(function () {
386
+ return (findBy({
387
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
388
+ }, dropdownRules) || dropdownRules[0]).value;
389
+ }),
390
+ _useState2 = _slicedToArray(_useState, 2),
391
+ selectedRule = _useState2[0],
392
+ setSelectedRule = _useState2[1];
393
+ var _useTranslation = useTranslation(),
394
+ t = _useTranslation.t;
395
+ var getOption = function getOption(isSelectedRuleEmpty, options, value) {
396
+ if (isSelectedRuleEmpty) {
397
+ return isMulti(defaultType) ? [options[0]] : options[0];
398
+ }
399
+ if (isMulti(defaultType)) {
400
+ return options.filter(function (o) {
401
+ return value === null || value === void 0 ? void 0 : value.includes(o.value);
402
+ });
403
+ }
404
+ return findBy({
405
+ value: value
406
+ }, options);
407
+ };
408
+ var handleRuleChange = function handleRuleChange(ruleValue) {
409
+ var isPreviousRuleEmpty = isRuleEmpty(selectedRule);
410
+ var isNewRuleEmpty = isRuleEmpty(ruleValue);
411
+ setSelectedRule(ruleValue);
412
+ if (isPreviousRuleEmpty || !isNewRuleEmpty && isNotPresent(filter === null || filter === void 0 ? void 0 : filter.value)) {
413
+ handleApplyFilter({
414
+ _delete: true
415
+ });
416
+ return;
417
+ }
418
+ var updatedFilter = buildUpdatedFilter$1({
419
+ column: column,
420
+ defaultType: defaultType,
421
+ rule: ruleValue,
422
+ option: getOption(isNewRuleEmpty, options, value)
423
+ });
424
+ handleApplyFilter(updatedFilter);
425
+ };
426
+ var handleChange = function handleChange(selectedValue) {
427
+ if (isEmpty(selectedValue) || isNil(selectedValue)) {
428
+ handleApplyFilter({
429
+ _delete: true
430
+ });
431
+ return;
432
+ }
433
+ var option = isMulti(defaultType) ? options.filter(function (o) {
434
+ return selectedValue.includes(o.value);
435
+ }) : findBy({
436
+ value: selectedValue
437
+ }, options);
438
+ var updatedFilter = buildUpdatedFilter$1({
439
+ column: column,
440
+ defaultType: defaultType,
441
+ option: option,
442
+ rule: selectedRule
443
+ });
444
+ handleApplyFilter(updatedFilter);
445
+ };
446
+ useEffect(function () {
447
+ if (!isEmpty(filters)) return;
448
+ isRuleEmpty(selectedRule) && setSelectedRule(dropdownRules[0].value);
449
+ }, [filters]);
450
+ return /*#__PURE__*/jsxs("div", {
451
+ className: "neeto-filters-pane-filter__item-wrapper",
452
+ children: [showRuleSelector && /*#__PURE__*/jsx(Select, {
453
+ label: label,
454
+ defaultValue: dropdownRules[0].value,
455
+ options: dropdownRules,
456
+ value: selectedRule,
457
+ onChange: handleRuleChange
458
+ }), !isRuleEmpty(selectedRule) && /*#__PURE__*/jsx(Select, _objectSpread$7(_objectSpread$7({
459
+ autoFocus: autoFocus,
460
+ options: options,
461
+ value: value,
462
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
463
+ isClearable: !defaultValue && isClearable,
464
+ isMulti: isMulti(defaultType),
465
+ label: !showRuleSelector && label,
466
+ strategy: "fixed",
467
+ placeholder: t("neetoFilters.messages.selectResource", {
468
+ resource: label
469
+ })
470
+ }, isNotEmpty(helpIconProps) && {
471
+ labelProps: {
472
+ helpIconProps: buildHelpIconProps(helpIconProps)
473
+ }
474
+ }), {}, {
475
+ onChange: handleChange
476
+ }, otherProps))]
477
+ });
478
+ };
479
+ var Dropdown = /*#__PURE__*/memo(Dropdown$1);
480
+
481
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
482
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
483
+ var SingleDatetime = function SingleDatetime(_ref) {
484
+ var column = _ref.column,
485
+ filter = _ref.filter,
486
+ filters = _ref.filters,
487
+ handleApplyFilter = _ref.handleApplyFilter,
488
+ autoFocus = _ref.autoFocus;
489
+ var _useState = useState(function () {
490
+ return (findBy({
491
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
492
+ }, SINGLE_DATE_OPTIONS) || SINGLE_DATE_OPTIONS[0]).value;
493
+ }),
494
+ _useState2 = _slicedToArray(_useState, 2),
495
+ selectedRule = _useState2[0],
496
+ setSelectedRule = _useState2[1];
497
+ var key = column.key,
498
+ _column$defaultType = column.defaultType,
499
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
500
+ label = column.label,
501
+ _column$helpIconProps = column.helpIconProps,
502
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
503
+ var otherProps = getOtherProps(column);
504
+ var datePickerType = selectedRule === "between" ? "range" : "date";
505
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
506
+
507
+ // Reset states when "Clear filters" button is clicked.
508
+ useEffect(function () {
509
+ if (!isEmpty(filters)) return;
510
+ setSelectedRule(SINGLE_DATE_OPTIONS[0].value);
511
+ }, [filters]);
512
+ var handleRuleChange = function handleRuleChange(ruleValue) {
513
+ setSelectedRule(ruleValue);
514
+
515
+ // Clear value if switched between incompatible types
516
+ var updateValue = value;
517
+ if (datePickerType === "range" && ruleValue !== "between" || datePickerType === "date" && ruleValue === "between") {
518
+ updateValue = "";
519
+ }
520
+ var updatedFilter = buildUpdatedFilter({
521
+ column: column,
522
+ defaultType: defaultType,
523
+ option: {},
524
+ rule: ruleValue,
525
+ value: updateValue
526
+ });
527
+ handleApplyFilter(updatedFilter);
528
+ };
529
+ var handleChange = function handleChange(dates) {
530
+ if (isEmpty(dates) || isNil(dates)) {
531
+ handleApplyFilter({
532
+ _delete: true
533
+ });
534
+ return;
535
+ }
536
+ var value = datePickerType === "range" ? dates.map(function (date) {
537
+ return date.toISOString();
538
+ }) : dates;
539
+ var updatedFilter = buildUpdatedFilter({
540
+ column: column,
541
+ defaultType: defaultType,
542
+ option: {},
543
+ rule: selectedRule,
544
+ value: value
545
+ });
546
+ handleApplyFilter(updatedFilter);
547
+ };
548
+ return /*#__PURE__*/jsxs("div", {
549
+ className: "neeto-filters-pane-filter__item-wrapper",
550
+ children: [/*#__PURE__*/jsx(Select, _objectSpread$6(_objectSpread$6({
551
+ label: label,
552
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
553
+ defaultValue: SINGLE_DATE_OPTIONS[0].value,
554
+ options: SINGLE_DATE_OPTIONS,
555
+ strategy: "fixed",
556
+ value: selectedRule
557
+ }, isNotEmpty(helpIconProps) && {
558
+ labelProps: {
559
+ helpIconProps: buildHelpIconProps(helpIconProps)
560
+ }
561
+ }), {}, {
562
+ onChange: handleRuleChange
563
+ })), /*#__PURE__*/jsx(DatePicker, _objectSpread$6({
564
+ autoFocus: autoFocus,
565
+ value: value,
566
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
567
+ getPopupContainer: prop("parentNode"),
568
+ type: datePickerType,
569
+ onChange: handleChange
570
+ }, otherProps))]
571
+ });
572
+ };
573
+
574
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
575
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
576
+ var SingleTime = function SingleTime(_ref) {
577
+ var column = _ref.column,
578
+ filter = _ref.filter,
579
+ filters = _ref.filters,
580
+ handleApplyFilter = _ref.handleApplyFilter,
581
+ autoFocus = _ref.autoFocus;
582
+ var _useState = useState(function () {
583
+ return (findBy({
584
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
585
+ }, SINGLE_TIME_OPTIONS) || SINGLE_TIME_OPTIONS[0]).value;
586
+ }),
587
+ _useState2 = _slicedToArray(_useState, 2),
588
+ selectedRule = _useState2[0],
589
+ setSelectedRule = _useState2[1];
590
+ var key = column.key,
591
+ _column$defaultType = column.defaultType,
592
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
593
+ label = column.label,
594
+ _column$helpIconProps = column.helpIconProps,
595
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
596
+ var otherProps = getOtherProps(column);
597
+ var timePickerType = selectedRule === "between" ? "range" : "time";
598
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
599
+ useEffect(function () {
600
+ if (!isEmpty(filters)) return;
601
+ setSelectedRule(SINGLE_TIME_OPTIONS[0].value);
602
+ }, [filters]);
603
+ var handleRuleChange = function handleRuleChange(ruleValue) {
604
+ setSelectedRule(ruleValue);
605
+
606
+ // Clear value if switched between incompatible types
607
+ var updateValue = value;
608
+ if (timePickerType === "range" && ruleValue !== "between" || timePickerType === "time" && ruleValue === "between") {
609
+ updateValue = "";
610
+ }
611
+ var updatedFilter = buildUpdatedFilter({
612
+ column: column,
613
+ defaultType: defaultType,
614
+ option: {},
615
+ rule: ruleValue,
616
+ value: updateValue
617
+ });
618
+ handleApplyFilter(updatedFilter);
619
+ };
620
+ var handleChange = function handleChange(times) {
621
+ if (hasInvalidTimes(times)) {
622
+ handleApplyFilter({
623
+ _delete: true
624
+ });
625
+ return;
626
+ }
627
+ if (timePickerType === "range" && areCustomTimeRangeValuesNotValid(times)) {
628
+ return;
629
+ }
630
+ var value = timePickerType === "range" ? times === null || times === void 0 ? void 0 : times.map(function (time) {
631
+ return time.toISOString();
632
+ }) : times === null || times === void 0 ? void 0 : times.toISOString();
633
+ var updatedFilter = buildUpdatedFilter({
634
+ column: column,
635
+ defaultType: defaultType,
636
+ option: {},
637
+ rule: selectedRule,
638
+ value: value
639
+ });
640
+ handleApplyFilter(updatedFilter);
641
+ };
642
+ return /*#__PURE__*/jsxs("div", {
643
+ className: "neeto-filters-pane-filter__item-wrapper",
644
+ children: [/*#__PURE__*/jsx(Select, _objectSpread$5(_objectSpread$5({
645
+ label: label,
646
+ defaultValue: SINGLE_TIME_OPTIONS[0].value,
647
+ options: SINGLE_TIME_OPTIONS,
648
+ strategy: "fixed",
649
+ value: selectedRule
650
+ }, isNotEmpty(helpIconProps) && {
651
+ labelProps: {
652
+ helpIconProps: buildHelpIconProps(helpIconProps)
653
+ }
654
+ }), {}, {
655
+ onChange: handleRuleChange
656
+ })), /*#__PURE__*/jsx(TimePicker, _objectSpread$5({
657
+ autoFocus: autoFocus,
658
+ value: value,
659
+ className: "w-full",
660
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
661
+ format: TIME_FORMAT,
662
+ type: timePickerType,
663
+ onChange: handleChange
664
+ }, otherProps))]
665
+ });
666
+ };
667
+
668
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
669
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
670
+ var Text = function Text(_ref) {
671
+ var column = _ref.column,
672
+ filter = _ref.filter,
673
+ filters = _ref.filters,
674
+ handleApplyFilter = _ref.handleApplyFilter,
675
+ autoFocus = _ref.autoFocus,
676
+ onClose = _ref.onClose;
677
+ var key = column.key,
678
+ _column$defaultType = column.defaultType,
679
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
680
+ label = column.label,
681
+ _column$showRuleSelec = column.showRuleSelector,
682
+ showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
683
+ _column$helpIconProps = column.helpIconProps,
684
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
685
+ var otherProps = getOtherProps(column);
686
+ var ruleOptions = buildRuleOptions({
687
+ defaultType: defaultType
688
+ });
689
+ var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
690
+ var _useState = useState(filter === null || filter === void 0 ? void 0 : filter.value),
691
+ _useState2 = _slicedToArray(_useState, 2),
692
+ inputValue = _useState2[0],
693
+ setInputValue = _useState2[1];
694
+ var _useState3 = useState(function () {
695
+ return (findBy({
696
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
697
+ }, ruleOptions) || ruleOptions[0]).value;
698
+ }),
699
+ _useState4 = _slicedToArray(_useState3, 2),
700
+ selectedRule = _useState4[0],
701
+ setSelectedRule = _useState4[1];
702
+ var debouncedInputValue = useDebounce(inputValue);
703
+ var _useTranslation = useTranslation(),
704
+ t = _useTranslation.t;
705
+ var handleUpdateAndApplyFilter = function handleUpdateAndApplyFilter() {
706
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : debouncedInputValue;
707
+ var ruleValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedRule;
708
+ if (equals(filter === null || filter === void 0 ? void 0 : filter.value, value) && equals(selectedRule, ruleValue)) return;
709
+ var updatedFilter = buildUpdatedFilter({
710
+ column: column,
711
+ defaultType: defaultType,
712
+ option: {},
713
+ rule: ruleValue,
714
+ value: value.trim()
715
+ });
716
+ handleApplyFilter(updatedFilter);
717
+ };
718
+ var handleKeydown = function handleKeydown(e) {
719
+ if (!(e.key === "Enter")) return;
720
+ handleUpdateAndApplyFilter(inputValue);
721
+ onClose();
722
+ };
723
+ var handleRuleChange = function handleRuleChange(ruleValue) {
724
+ setSelectedRule(ruleValue);
725
+ if (!debouncedInputValue) return;
726
+ handleUpdateAndApplyFilter(debouncedInputValue, ruleValue);
727
+ };
728
+
729
+ // Reset states when "Clear filters" button is clicked.
730
+ useEffect(function () {
731
+ (isEmpty(filters) || isNil(filter)) && setInputValue("");
732
+ }, [filter]);
733
+ useEffect(function () {
734
+ if (!debouncedInputValue) {
735
+ !isUndefinedOrEmpty(filter) && handleApplyFilter({
736
+ _delete: true
737
+ });
738
+ return;
739
+ }
740
+ handleUpdateAndApplyFilter();
741
+ }, [debouncedInputValue]);
742
+ return /*#__PURE__*/jsxs("div", {
743
+ className: "neeto-filters-pane-filter__item-wrapper",
744
+ children: [showRuleSelector && /*#__PURE__*/jsx(Select, _objectSpread$4({
745
+ label: label,
746
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
747
+ defaultValue: ruleOptions[0].value,
748
+ options: ruleOptions,
749
+ strategy: "fixed",
750
+ value: selectedRule,
751
+ onChange: handleRuleChange
752
+ }, isNotEmpty(helpIconProps) && {
753
+ labelProps: {
754
+ helpIconProps: buildHelpIconProps(helpIconProps)
755
+ }
756
+ })), /*#__PURE__*/jsx(Input, _objectSpread$4(_objectSpread$4({
757
+ autoFocus: autoFocus,
758
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
759
+ label: !showRuleSelector && label,
760
+ type: inputType,
761
+ value: inputValue
762
+ }, isNotEmpty(helpIconProps) && {
763
+ labelProps: {
764
+ helpIconProps: buildHelpIconProps(helpIconProps)
765
+ }
766
+ }), {}, {
767
+ placeholder: t("neetoFilters.messages.enterResource", {
768
+ resource: label
769
+ }),
770
+ onChange: function onChange(event) {
771
+ return setInputValue(event.target.value);
772
+ },
773
+ onKeyDown: handleKeydown
774
+ }, otherProps))]
775
+ });
776
+ };
777
+
778
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
779
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
780
+ var Time$1 = function Time(_ref) {
781
+ var _filter$value;
782
+ var column = _ref.column,
783
+ filter = _ref.filter,
784
+ handleApplyFilter = _ref.handleApplyFilter,
785
+ autoFocus = _ref.autoFocus;
786
+ var key = column.key,
787
+ _column$defaultType = column.defaultType,
788
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
789
+ label = column.label,
790
+ _column$helpIconProps = column.helpIconProps,
791
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
792
+ var otherProps = getOtherProps(column);
793
+ var value = (_filter$value = filter === null || filter === void 0 ? void 0 : filter.value) !== null && _filter$value !== void 0 ? _filter$value : null;
794
+ var isCustomTimeRangeShown = filter && isCustomTimeRange(filter.value);
795
+ var _useTranslation = useTranslation(),
796
+ t = _useTranslation.t;
797
+ var handleChange = function handleChange(selectedValue) {
798
+ if (isEmpty(selectedValue) || isNil(selectedValue)) {
799
+ handleApplyFilter({
800
+ _delete: true
801
+ });
802
+ return;
803
+ }
804
+ var option = findBy({
805
+ value: selectedValue
806
+ }, TIME_OPTIONS);
807
+ var updatedFilter = buildUpdatedFilter({
808
+ column: column,
809
+ defaultType: defaultType,
810
+ option: option
811
+ });
812
+ handleApplyFilter(updatedFilter);
813
+ };
814
+ var handleTimeRangeChange = function handleTimeRangeChange(times) {
815
+ if (hasInvalidTimes(times)) {
816
+ handleApplyFilter({
817
+ _delete: true
818
+ });
819
+ return;
820
+ }
821
+ if (isCustomTimeRangeShown && areCustomTimeRangeValuesNotValid(times)) {
822
+ return;
823
+ }
824
+ var updatedFilter = buildUpdatedFilter({
825
+ column: column,
826
+ defaultType: defaultType,
827
+ option: {
828
+ value: times.map(function (time) {
829
+ return time.toISOString();
830
+ })
831
+ }
832
+ });
833
+ handleApplyFilter(updatedFilter);
834
+ };
835
+ return /*#__PURE__*/jsxs("div", {
836
+ className: "neeto-filters-pane-filter__item-wrapper",
837
+ children: [/*#__PURE__*/jsx(Select, _objectSpread$3(_objectSpread$3({
838
+ autoFocus: autoFocus,
839
+ label: label,
840
+ value: value,
841
+ isClearable: true,
842
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
843
+ options: TIME_OPTIONS,
844
+ strategy: "fixed",
845
+ placeholder: t("neetoFilters.messages.selectResource", {
846
+ resource: label
847
+ })
848
+ }, isNotEmpty(helpIconProps) && {
849
+ labelProps: {
850
+ helpIconProps: buildHelpIconProps(helpIconProps)
851
+ }
852
+ }), {}, {
853
+ onChange: handleChange
854
+ })), isCustomTimeRangeShown && /*#__PURE__*/jsx(TimePicker, _objectSpread$3({
855
+ className: "w-full",
856
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-date-range"),
857
+ format: TIME_FORMAT,
858
+ type: "range",
859
+ value: filter.value,
860
+ onChange: handleTimeRangeChange
861
+ }, otherProps))]
862
+ });
863
+ };
864
+ var Time = /*#__PURE__*/memo(Time$1);
865
+
866
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
867
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
868
+ var TreeSelect$1 = function TreeSelect(_ref) {
869
+ var _findBy, _filter$value;
870
+ var autoFocus = _ref.autoFocus,
871
+ column = _ref.column,
872
+ filter = _ref.filter,
873
+ handleApplyFilter = _ref.handleApplyFilter;
874
+ var key = column.key,
875
+ label = column.label,
876
+ _column$defaultType = column.defaultType,
877
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
878
+ defaultValue = column.defaultValue,
879
+ _column$helpIconProps = column.helpIconProps,
880
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps,
881
+ _column$isClearable = column.isClearable,
882
+ isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
883
+ _column$showRuleSelec = column.showRuleSelector,
884
+ showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
885
+ options = column.values;
886
+ var initialRule = ((_findBy = findBy({
887
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
888
+ }, TREE_SELECT_RULES)) !== null && _findBy !== void 0 ? _findBy : TREE_SELECT_RULES[0]).value;
889
+ var _useState = useState(initialRule),
890
+ _useState2 = _slicedToArray(_useState, 2),
891
+ selectedRule = _useState2[0],
892
+ setSelectedRule = _useState2[1];
893
+ var _useTranslation = useTranslation(),
894
+ t = _useTranslation.t;
895
+ var selectedOption = (_filter$value = filter === null || filter === void 0 ? void 0 : filter.value) !== null && _filter$value !== void 0 ? _filter$value : [];
896
+ var handleChange = function handleChange(option) {
897
+ if (isNotPresent(option)) return handleApplyFilter({
898
+ _delete: true
899
+ });
900
+ var updatedFilter = buildUpdatedFilter({
901
+ column: column,
902
+ defaultType: defaultType,
903
+ option: option,
904
+ rule: selectedRule
905
+ });
906
+ return handleApplyFilter(updatedFilter);
907
+ };
908
+ var handleRuleChange = function handleRuleChange(ruleValue) {
909
+ var isPreviousRuleEmpty = isRuleEmpty(selectedRule);
910
+ var isNewRuleEmpty = isRuleEmpty(ruleValue);
911
+ setSelectedRule(ruleValue);
912
+ if (isPreviousRuleEmpty || !isNewRuleEmpty && isNotPresent(filter === null || filter === void 0 ? void 0 : filter.value)) {
913
+ return handleApplyFilter({
914
+ _delete: true
915
+ });
916
+ }
917
+ var updatedFilter = buildUpdatedFilter({
918
+ column: column,
919
+ defaultType: defaultType,
920
+ option: isNewRuleEmpty ? [options[0]] : selectedOption,
921
+ rule: ruleValue
922
+ });
923
+ return handleApplyFilter(updatedFilter);
924
+ };
925
+ return /*#__PURE__*/jsxs("div", {
926
+ className: "neeto-filters-pane-filter__item-wrapper",
927
+ children: [showRuleSelector && /*#__PURE__*/jsx(Select, {
928
+ label: label,
929
+ defaultValue: TREE_SELECT_RULES[0].value,
930
+ options: TREE_SELECT_RULES,
931
+ value: selectedRule,
932
+ onChange: handleRuleChange
933
+ }), !isRuleEmpty(selectedRule) &&
934
+ /*#__PURE__*/
935
+ // eslint-disable-next-line @bigbinary/neeto/merge-spread-attributes
936
+ jsx(TreeSelect$2, _objectSpread$2(_objectSpread$2({
937
+ autoFocus: autoFocus,
938
+ multiple: true,
939
+ showSearch: true,
940
+ treeDataSimpleMode: true,
941
+ allowClear: !defaultValue && isClearable,
942
+ "data-testid": "neeto-filters-".concat(hyphenate(key), "-filter"),
943
+ label: !showRuleSelector && label,
944
+ treeData: options,
945
+ value: selectedOption,
946
+ placeholder: t("neetoFilters.messages.selectResource", {
947
+ resource: label
948
+ }),
949
+ onChange: handleChange
950
+ }, isNotEmpty(helpIconProps) && {
951
+ labelProps: {
952
+ helpIconProps: buildHelpIconProps(helpIconProps)
953
+ }
954
+ }), getOtherProps(column)))]
955
+ });
956
+ };
957
+ var TreeSelect = /*#__PURE__*/memo(TreeSelect$1);
958
+
959
+ var Item = function Item(_ref) {
960
+ var column = _ref.column,
961
+ filters = _ref.filters,
962
+ onChange = _ref.onChange,
963
+ autoFocus = _ref.autoFocus,
964
+ _ref$onClose = _ref.onClose,
965
+ onClose = _ref$onClose === void 0 ? noop : _ref$onClose;
966
+ var key = column.key,
967
+ _column$defaultType = column.defaultType,
968
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType;
969
+ var filter = useMemo(function () {
970
+ return findBy({
971
+ key: key
972
+ }, filters);
973
+ }, [filters, key]);
974
+ var handleApplyFilter = function handleApplyFilter(updatedFilter) {
975
+ if (updatedFilter._delete) onChange(removeBy({
976
+ key: key
977
+ }, filters));else if (!filter) onChange(append(updatedFilter, filters));else onChange(replaceBy({
978
+ key: key
979
+ }, updatedFilter, filters));
980
+ };
981
+ if (isText(defaultType) || isDigit(defaultType)) {
982
+ return /*#__PURE__*/jsx(Text, {
983
+ autoFocus: autoFocus,
984
+ column: column,
985
+ filter: filter,
986
+ filters: filters,
987
+ handleApplyFilter: handleApplyFilter,
988
+ onClose: onClose
989
+ });
990
+ }
991
+ if (isDate(defaultType)) {
992
+ return /*#__PURE__*/jsx(Datetime, {
993
+ autoFocus: autoFocus,
994
+ column: column,
995
+ filter: filter,
996
+ handleApplyFilter: handleApplyFilter
997
+ });
998
+ }
999
+ if (isTime(defaultType)) {
1000
+ return /*#__PURE__*/jsx(Time, {
1001
+ autoFocus: autoFocus,
1002
+ column: column,
1003
+ filter: filter,
1004
+ handleApplyFilter: handleApplyFilter
1005
+ });
1006
+ }
1007
+ if (isSingleDate(defaultType)) {
1008
+ return /*#__PURE__*/jsx(SingleDatetime, {
1009
+ autoFocus: autoFocus,
1010
+ column: column,
1011
+ filter: filter,
1012
+ filters: filters,
1013
+ handleApplyFilter: handleApplyFilter
1014
+ });
1015
+ }
1016
+ if (isSingleTime(defaultType)) {
1017
+ return /*#__PURE__*/jsx(SingleTime, {
1018
+ autoFocus: autoFocus,
1019
+ column: column,
1020
+ filter: filter,
1021
+ filters: filters,
1022
+ handleApplyFilter: handleApplyFilter
1023
+ });
1024
+ }
1025
+ if (isBoolean(defaultType) || isCheckbox$1(defaultType)) {
1026
+ return /*#__PURE__*/jsx(Boolean, {
1027
+ autoFocus: autoFocus,
1028
+ column: column,
1029
+ defaultType: defaultType,
1030
+ filter: filter,
1031
+ handleApplyFilter: handleApplyFilter
1032
+ });
1033
+ }
1034
+ if (isTreeSelect(defaultType)) {
1035
+ return /*#__PURE__*/jsx(TreeSelect, {
1036
+ autoFocus: autoFocus,
1037
+ column: column,
1038
+ filter: filter,
1039
+ handleApplyFilter: handleApplyFilter
1040
+ });
1041
+ }
1042
+ return /*#__PURE__*/jsx(Dropdown, {
1043
+ autoFocus: autoFocus,
1044
+ column: column,
1045
+ filter: filter,
1046
+ filters: filters,
1047
+ handleApplyFilter: handleApplyFilter
1048
+ });
1049
+ };
1050
+
1051
+ var _excluded = ["isOpen", "onClose", "columns", "onChange", "isSearchable", "keyword", "onSelectorsChange", "childrenKeys", "children", "className"];
1052
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1053
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1054
+ var Pane = function Pane(_ref) {
1055
+ var isOpen = _ref.isOpen,
1056
+ onClose = _ref.onClose,
1057
+ columns = _ref.columns,
1058
+ onChange = _ref.onChange,
1059
+ isSearchable = _ref.isSearchable,
1060
+ keyword = _ref.keyword,
1061
+ onSelectorsChange = _ref.onSelectorsChange,
1062
+ _ref$childrenKeys = _ref.childrenKeys,
1063
+ childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
1064
+ children = _ref.children,
1065
+ className = _ref.className,
1066
+ otherProps = _objectWithoutProperties(_ref, _excluded);
1067
+ var searchParams = useQueryParams({
1068
+ toCamelCase: false
1069
+ });
1070
+ var _useState = useState(""),
1071
+ _useState2 = _slicedToArray(_useState, 2),
1072
+ searchTerm = _useState2[0],
1073
+ setSearchTerm = _useState2[1];
1074
+ var history = useHistory();
1075
+ var _useTranslation = useTranslation(),
1076
+ t = _useTranslation.t;
1077
+ columns = useMemo(function () {
1078
+ return getColumnsWithStandardizedType(columns);
1079
+ }, [columns]);
1080
+ var _buildFilteredColumns = buildFilteredColumns({
1081
+ searchTerm: searchTerm,
1082
+ columns: columns
1083
+ }),
1084
+ _buildFilteredColumns2 = _buildFilteredColumns.groupedColumns,
1085
+ groupedColumns = _buildFilteredColumns2 === void 0 ? [] : _buildFilteredColumns2,
1086
+ _buildFilteredColumns3 = _buildFilteredColumns.ungroupedColumns,
1087
+ ungroupedColumns = _buildFilteredColumns3 === void 0 ? [] : _buildFilteredColumns3;
1088
+ var keywordFilter = _objectSpread$1(_objectSpread$1({
1089
+ type: "text",
1090
+ rule: "contains",
1091
+ label: t("neetoFilters.common.searchTerm")
1092
+ }, keyword), {}, {
1093
+ key: SEARCH_TERM_KEY,
1094
+ value: searchParams[SEARCH_TERM_KEY] || ""
1095
+ });
1096
+ var filters = useFilters({
1097
+ onFiltersChange: onChange,
1098
+ columns: columns,
1099
+ keywordFilter: keywordFilter,
1100
+ onSelectorsChange: onSelectorsChange
1101
+ });
1102
+ var handleChange = function handleChange(newFilters) {
1103
+ var isClearAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1104
+ var params = buildUrlFromFilters(_objectSpread$1({
1105
+ columns: columns,
1106
+ filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
1107
+ }, isClearAll && {
1108
+ isClearAll: true,
1109
+ childrenKeys: childrenKeys
1110
+ }));
1111
+ history.push({
1112
+ search: params
1113
+ });
1114
+ };
1115
+ var handleClearAll = function handleClearAll() {
1116
+ var params = isKeywordFilterPresent(keywordFilter) ? omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
1117
+ var pathname = window.location.pathname;
1118
+ history.push(buildUrl(pathname, params));
1119
+ handleChange([], true);
1120
+ };
1121
+ var handleClearTermAndClose = function handleClearTermAndClose() {
1122
+ setSearchTerm("");
1123
+ onClose();
1124
+ };
1125
+ var handleClose = function handleClose() {
1126
+ columns.forEach(function (_ref2) {
1127
+ var key = _ref2.key;
1128
+ var filter = findBy({
1129
+ key: key
1130
+ }, filters);
1131
+ if ((filter === null || filter === void 0 ? void 0 : filter.value) === "") delete searchParams[key];
1132
+ });
1133
+ handleClearTermAndClose();
1134
+ };
1135
+ var isClearFiltersDisabled = !filters.some(function (_ref3) {
1136
+ var value = _ref3.value,
1137
+ defaultValue = _ref3.defaultValue;
1138
+ return isPresent(value) && value !== defaultValue;
1139
+ }) && !childrenKeys.some(function (key) {
1140
+ return searchParams[key];
1141
+ });
1142
+ return /*#__PURE__*/jsxs(Sheet, _objectSpread$1(_objectSpread$1({
1143
+ isOpen: isOpen,
1144
+ backdropClassName: "neeto-filters-pane-backdrop",
1145
+ className: classnames("neeto-filters-pane-filter", _defineProperty({}, className, className)),
1146
+ onClose: handleClose
1147
+ }, otherProps), {}, {
1148
+ children: [/*#__PURE__*/jsx(Sheet.Header, {
1149
+ "data-testid": "neeto-filters-pane-header",
1150
+ children: /*#__PURE__*/jsx(Sheet.Title, {
1151
+ weight: "semibold",
1152
+ children: t("neetoFilters.common.filters")
1153
+ })
1154
+ }), /*#__PURE__*/jsxs(Sheet.Body, {
1155
+ className: "neeto-filters-pane-filter__body pb-6",
1156
+ children: [isSearchable && /*#__PURE__*/jsx(Search, {
1157
+ "data-testid": "neeto-filters-column-search",
1158
+ placeholder: t("neetoFilters.messages.searchResources", {
1159
+ resources: t("neetoFilters.common.filters")
1160
+ }),
1161
+ onSearch: function onSearch(value) {
1162
+ return setSearchTerm(value);
1163
+ }
1164
+ }), ungroupedColumns.map(function (column) {
1165
+ return /*#__PURE__*/createElement(Item, {
1166
+ column: column,
1167
+ filters: filters,
1168
+ autoFocus: column.key === isOpen,
1169
+ key: column.key,
1170
+ onChange: handleChange,
1171
+ onClose: handleClearTermAndClose
1172
+ });
1173
+ }), isPresent(groupedColumns) && /*#__PURE__*/jsx(Accordion, {
1174
+ collapsible: true,
1175
+ type: "single",
1176
+ defaultValue: "item-".concat(groupedColumns.findIndex(function (_ref4) {
1177
+ var columns = _ref4.columns;
1178
+ return existsBy({
1179
+ key: isOpen
1180
+ }, columns);
1181
+ })),
1182
+ children: groupedColumns.map(function (_ref5) {
1183
+ var group = _ref5.group,
1184
+ columns = _ref5.columns;
1185
+ return /*#__PURE__*/jsx(Accordion.Item, {
1186
+ className: "accordion_item",
1187
+ title: group,
1188
+ children: columns.map(function (column) {
1189
+ return /*#__PURE__*/createElement(Item, {
1190
+ column: column,
1191
+ filters: filters,
1192
+ autoFocus: column.key === isOpen,
1193
+ key: column.key,
1194
+ onChange: handleChange,
1195
+ onClose: handleClearTermAndClose
1196
+ });
1197
+ })
1198
+ }, group);
1199
+ })
1200
+ }), isEmpty(ungroupedColumns) && isEmpty(groupedColumns) && /*#__PURE__*/jsx(Typography, {
1201
+ variant: "body2",
1202
+ children: t("neetoFilters.messages.noResourcesFound", {
1203
+ resources: t("neetoFilters.common.columns")
1204
+ })
1205
+ }), children]
1206
+ }), /*#__PURE__*/jsxs(Sheet.Footer, {
1207
+ className: "gap-x-2",
1208
+ children: [/*#__PURE__*/jsx(Button, {
1209
+ "data-testid": "neeto-filters-done-btn",
1210
+ label: t("neetoFilters.common.done"),
1211
+ onClick: handleClearTermAndClose
1212
+ }), /*#__PURE__*/jsx(Button, {
1213
+ "data-testid": "neeto-filters-clear-btn",
1214
+ disabled: isClearFiltersDisabled,
1215
+ label: t("neetoFilters.common.clearFilters"),
1216
+ variant: "ghost",
1217
+ onClick: handleClearAll
1218
+ })]
1219
+ })]
1220
+ }));
1221
+ };
1222
+
1223
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1224
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1225
+ var Filters = withT(function (_ref) {
1226
+ var t = _ref.t,
1227
+ _ref$isOpen = _ref.isOpen,
1228
+ isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
1229
+ _ref$setIsOpen = _ref.setIsOpen,
1230
+ setIsOpen = _ref$setIsOpen === void 0 ? identity : _ref$setIsOpen,
1231
+ _ref$columns = _ref.columns,
1232
+ columns = _ref$columns === void 0 ? [] : _ref$columns,
1233
+ _ref$onChange = _ref.onChange,
1234
+ onChange = _ref$onChange === void 0 ? identity : _ref$onChange,
1235
+ _ref$buttonProps = _ref.buttonProps,
1236
+ buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
1237
+ _ref$paneProps = _ref.paneProps,
1238
+ paneProps = _ref$paneProps === void 0 ? {} : _ref$paneProps,
1239
+ _ref$isSearchable = _ref.isSearchable,
1240
+ isSearchable = _ref$isSearchable === void 0 ? false : _ref$isSearchable,
1241
+ className = _ref.className,
1242
+ _ref$onSelectorsChang = _ref.onSelectorsChange,
1243
+ onSelectorsChange = _ref$onSelectorsChang === void 0 ? noop : _ref$onSelectorsChang,
1244
+ _ref$keyword = _ref.keyword,
1245
+ keyword = _ref$keyword === void 0 ? {
1246
+ node: "",
1247
+ value: "",
1248
+ setValue: noop
1249
+ } : _ref$keyword,
1250
+ childrenKeys = _ref.childrenKeys,
1251
+ children = _ref.children;
1252
+ return /*#__PURE__*/jsxs("span", {
1253
+ className: classnames(_defineProperty({}, className, className)),
1254
+ children: [/*#__PURE__*/jsx(Button, _objectSpread({
1255
+ "data-testid": "neeto-filters-toggle-btn",
1256
+ label: t("neetoFilters.common.filter"),
1257
+ variant: "secondary",
1258
+ onClick: function onClick() {
1259
+ return setIsOpen(true);
1260
+ }
1261
+ }, buttonProps)), /*#__PURE__*/jsx(Pane, _objectSpread(_objectSpread({
1262
+ onClose: function onClose() {
1263
+ return setIsOpen(false);
1264
+ }
1265
+ }, _objectSpread({
1266
+ childrenKeys: childrenKeys,
1267
+ columns: columns,
1268
+ isOpen: isOpen,
1269
+ isSearchable: isSearchable,
1270
+ keyword: keyword,
1271
+ onChange: onChange,
1272
+ onSelectorsChange: onSelectorsChange
1273
+ }, paneProps)), {}, {
1274
+ children: children
1275
+ }))]
1276
+ });
1277
+ });
1278
+
1279
+ export { Filters as default };
1280
+ //# sourceMappingURL=Filters.js.map