@bigbinary/neeto-filters-frontend 4.0.0 → 4.1.0

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 (47) hide show
  1. package/dist/Bar.js +667 -0
  2. package/dist/Bar.js.map +1 -0
  3. package/dist/Filters.js +368 -0
  4. package/dist/Filters.js.map +1 -0
  5. package/dist/Segments.js +529 -0
  6. package/dist/Segments.js.map +1 -0
  7. package/dist/cjs/Bar.js +681 -0
  8. package/dist/cjs/Bar.js.map +1 -0
  9. package/dist/cjs/Filters.js +379 -0
  10. package/dist/cjs/Filters.js.map +1 -0
  11. package/dist/cjs/Segments.js +543 -0
  12. package/dist/cjs/Segments.js.map +1 -0
  13. package/dist/cjs/hooks.js +17 -0
  14. package/dist/cjs/hooks.js.map +1 -0
  15. package/dist/cjs/index.js +72 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/utils.js +24 -0
  18. package/dist/cjs/utils.js.map +1 -0
  19. package/dist/constants-8f6e851e.js +125 -0
  20. package/dist/constants-8f6e851e.js.map +1 -0
  21. package/dist/constants-fb0f688a.js +135 -0
  22. package/dist/constants-fb0f688a.js.map +1 -0
  23. package/dist/hooks.js +7 -0
  24. package/dist/hooks.js.map +1 -0
  25. package/dist/index-03114015.js +336 -0
  26. package/dist/index-03114015.js.map +1 -0
  27. package/dist/index-2d1d9838.js +971 -0
  28. package/dist/index-2d1d9838.js.map +1 -0
  29. package/dist/index-31aaf3e4.js +302 -0
  30. package/dist/index-31aaf3e4.js.map +1 -0
  31. package/dist/index-95fe069e.js +958 -0
  32. package/dist/index-95fe069e.js.map +1 -0
  33. package/dist/index.js +53 -3716
  34. package/dist/index.js.map +1 -1
  35. package/dist/useSegmentsApi-003055eb.js +96 -0
  36. package/dist/useSegmentsApi-003055eb.js.map +1 -0
  37. package/dist/useSegmentsApi-c514647d.js +86 -0
  38. package/dist/useSegmentsApi-c514647d.js.map +1 -0
  39. package/dist/utils-61b4223d.js +861 -0
  40. package/dist/utils-61b4223d.js.map +1 -0
  41. package/dist/utils-9ea34335.js +809 -0
  42. package/dist/utils-9ea34335.js.map +1 -0
  43. package/dist/utils.js +12 -0
  44. package/dist/utils.js.map +1 -0
  45. package/package.json +27 -13
  46. package/dist/index.cjs.js +0 -3786
  47. package/dist/index.cjs.js.map +0 -1
package/dist/index.cjs.js DELETED
@@ -1,3786 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var reactQuery = require('@tanstack/react-query');
7
- var classnames = require('classnames');
8
- var i18next = require('i18next');
9
- var neetoCist = require('@bigbinary/neeto-cist');
10
- var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
11
- var ramda = require('ramda');
12
- var Delete$1 = require('@bigbinary/neeto-icons/Delete');
13
- var Accordion = require('@bigbinary/neetoui/Accordion');
14
- var Button = require('@bigbinary/neetoui/Button');
15
- var Pane$1 = require('@bigbinary/neetoui/Pane');
16
- var Typography = require('@bigbinary/neetoui/Typography');
17
- var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
18
- var Form = require('@bigbinary/neetoui/formik/Form');
19
- var Input$1 = require('@bigbinary/neetoui/formik/Input');
20
- var reactI18next = require('react-i18next');
21
- var reactRouterDom_min = require('react-router-dom/cjs/react-router-dom.min');
22
- var Select = require('@bigbinary/neetoui/Select');
23
- var utils = require('@bigbinary/neeto-commons-frontend/utils');
24
- var dayjs = require('dayjs');
25
- var timezone = require('dayjs/plugin/timezone');
26
- var utc = require('dayjs/plugin/utc');
27
- var weekday = require('dayjs/plugin/weekday');
28
- var Help = require('@bigbinary/neeto-icons/Help');
29
- var jsxRuntime = require('react/jsx-runtime');
30
- var DatePicker = require('@bigbinary/neetoui/DatePicker');
31
- var TimePickerInput = require('@bigbinary/neetoui/TimePickerInput');
32
- var Input = require('@bigbinary/neetoui/Input');
33
- var NeetoUITreeSelect = require('@bigbinary/neetoui/TreeSelect');
34
- var Plus = require('@bigbinary/neeto-icons/Plus');
35
- var yup = require('yup');
36
- var reactRouterDom = require('react-router-dom');
37
- var useHotkeys = require('@bigbinary/neeto-hotkeys');
38
- var Close = require('@bigbinary/neeto-icons/Close');
39
- var Tooltip = require('@bigbinary/neetoui/Tooltip');
40
- var axios = require('axios');
41
- var Dropdown$2 = require('@bigbinary/neetoui/Dropdown');
42
- var Search = require('@bigbinary/neeto-molecules/Search');
43
- var constants = require('@bigbinary/neeto-commons-frontend/constants');
44
- var Alert = require('@bigbinary/neetoui/Alert');
45
- var Spinner = require('@bigbinary/neetoui/Spinner');
46
- var dnd = require('@hello-pangea/dnd');
47
- var Down = require('@bigbinary/neeto-icons/Down');
48
- var MenuBar = require('@bigbinary/neeto-molecules/MenuBar');
49
- var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
50
-
51
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
52
-
53
- function _interopNamespace(e) {
54
- if (e && e.__esModule) return e;
55
- var n = Object.create(null);
56
- if (e) {
57
- Object.keys(e).forEach(function (k) {
58
- if (k !== 'default') {
59
- var d = Object.getOwnPropertyDescriptor(e, k);
60
- Object.defineProperty(n, k, d.get ? d : {
61
- enumerable: true,
62
- get: function () { return e[k]; }
63
- });
64
- }
65
- });
66
- }
67
- n["default"] = e;
68
- return Object.freeze(n);
69
- }
70
-
71
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
72
- var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
73
- var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
74
- var Delete__default = /*#__PURE__*/_interopDefaultLegacy(Delete$1);
75
- var Accordion__default = /*#__PURE__*/_interopDefaultLegacy(Accordion);
76
- var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
77
- var Pane__default = /*#__PURE__*/_interopDefaultLegacy(Pane$1);
78
- var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
79
- var ActionBlock__default = /*#__PURE__*/_interopDefaultLegacy(ActionBlock);
80
- var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
81
- var Input__default$1 = /*#__PURE__*/_interopDefaultLegacy(Input$1);
82
- var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
83
- var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
84
- var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
85
- var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
86
- var weekday__default = /*#__PURE__*/_interopDefaultLegacy(weekday);
87
- var Help__default = /*#__PURE__*/_interopDefaultLegacy(Help);
88
- var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker);
89
- var TimePickerInput__default = /*#__PURE__*/_interopDefaultLegacy(TimePickerInput);
90
- var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
91
- var NeetoUITreeSelect__default = /*#__PURE__*/_interopDefaultLegacy(NeetoUITreeSelect);
92
- var Plus__default = /*#__PURE__*/_interopDefaultLegacy(Plus);
93
- var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
94
- var useHotkeys__default = /*#__PURE__*/_interopDefaultLegacy(useHotkeys);
95
- var Close__default = /*#__PURE__*/_interopDefaultLegacy(Close);
96
- var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
97
- var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
98
- var Dropdown__default = /*#__PURE__*/_interopDefaultLegacy(Dropdown$2);
99
- var Search__default = /*#__PURE__*/_interopDefaultLegacy(Search);
100
- var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
101
- var Spinner__default = /*#__PURE__*/_interopDefaultLegacy(Spinner);
102
- var Down__default = /*#__PURE__*/_interopDefaultLegacy(Down);
103
- var MenuBar__default = /*#__PURE__*/_interopDefaultLegacy(MenuBar);
104
- var MoreDropdown__default = /*#__PURE__*/_interopDefaultLegacy(MoreDropdown);
105
-
106
- function _typeof(o) {
107
- "@babel/helpers - typeof";
108
-
109
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
110
- return typeof o;
111
- } : function (o) {
112
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
113
- }, _typeof(o);
114
- }
115
-
116
- function _toPrimitive(input, hint) {
117
- if (_typeof(input) !== "object" || input === null) return input;
118
- var prim = input[Symbol.toPrimitive];
119
- if (prim !== undefined) {
120
- var res = prim.call(input, hint || "default");
121
- if (_typeof(res) !== "object") return res;
122
- throw new TypeError("@@toPrimitive must return a primitive value.");
123
- }
124
- return (hint === "string" ? String : Number)(input);
125
- }
126
-
127
- function _toPropertyKey(arg) {
128
- var key = _toPrimitive(arg, "string");
129
- return _typeof(key) === "symbol" ? key : String(key);
130
- }
131
-
132
- function _defineProperty(obj, key, value) {
133
- key = _toPropertyKey(key);
134
- if (key in obj) {
135
- Object.defineProperty(obj, key, {
136
- value: value,
137
- enumerable: true,
138
- configurable: true,
139
- writable: true
140
- });
141
- } else {
142
- obj[key] = value;
143
- }
144
- return obj;
145
- }
146
-
147
- function _arrayLikeToArray(arr, len) {
148
- if (len == null || len > arr.length) len = arr.length;
149
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
150
- return arr2;
151
- }
152
-
153
- function _arrayWithoutHoles(arr) {
154
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
155
- }
156
-
157
- function _iterableToArray(iter) {
158
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
159
- }
160
-
161
- function _unsupportedIterableToArray(o, minLen) {
162
- if (!o) return;
163
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
164
- var n = Object.prototype.toString.call(o).slice(8, -1);
165
- if (n === "Object" && o.constructor) n = o.constructor.name;
166
- if (n === "Map" || n === "Set") return Array.from(o);
167
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
168
- }
169
-
170
- function _nonIterableSpread() {
171
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
172
- }
173
-
174
- function _toConsumableArray(arr) {
175
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
176
- }
177
-
178
- function _arrayWithHoles(arr) {
179
- if (Array.isArray(arr)) return arr;
180
- }
181
-
182
- function _iterableToArrayLimit(r, l) {
183
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
184
- if (null != t) {
185
- var e,
186
- n,
187
- i,
188
- u,
189
- a = [],
190
- f = !0,
191
- o = !1;
192
- try {
193
- if (i = (t = t.call(r)).next, 0 === l) {
194
- if (Object(t) !== t) return;
195
- f = !1;
196
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
197
- } catch (r) {
198
- o = !0, n = r;
199
- } finally {
200
- try {
201
- if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
202
- } finally {
203
- if (o) throw n;
204
- }
205
- }
206
- return a;
207
- }
208
- }
209
-
210
- function _nonIterableRest() {
211
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
212
- }
213
-
214
- function _slicedToArray(arr, i) {
215
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
216
- }
217
-
218
- var SEGMENTS_BASE_URL = "/neeto_filters/segments";
219
- var DATE_OPTIONS = [{
220
- label: "Today",
221
- value: "today"
222
- }, {
223
- label: "Yesterday",
224
- value: "yesterday"
225
- }, {
226
- label: "This week",
227
- value: "this-week"
228
- }, {
229
- label: "Last week",
230
- value: "last-week"
231
- }, {
232
- label: "This month",
233
- value: "this-month"
234
- }, {
235
- label: "Last month",
236
- value: "last-month"
237
- }, {
238
- label: "This year",
239
- value: "this-year"
240
- }, {
241
- label: "Last year",
242
- value: "last-year"
243
- }, {
244
- label: "All time",
245
- value: "all-time"
246
- }, {
247
- label: "After",
248
- value: "after"
249
- }, {
250
- label: "Before",
251
- value: "before"
252
- }, {
253
- label: "Custom date range",
254
- value: "custom-date-range"
255
- }];
256
- var SINGLE_DATE_OPTIONS = [{
257
- label: "On",
258
- value: "on"
259
- }, {
260
- label: "After",
261
- value: "after"
262
- }, {
263
- label: "Before",
264
- value: "before"
265
- }, {
266
- label: "Between",
267
- value: "between"
268
- }];
269
- var SINGLE_TIME_OPTIONS = [{
270
- label: "At",
271
- value: "at"
272
- }, {
273
- label: "After",
274
- value: "after"
275
- }, {
276
- label: "Before",
277
- value: "before"
278
- }, {
279
- label: "Between",
280
- value: "between"
281
- }];
282
- var TIME_OPTIONS = [{
283
- label: "This hour",
284
- value: "this-hour"
285
- }, {
286
- label: "Last hour",
287
- value: "last-hour"
288
- }, {
289
- label: "Custom time range",
290
- value: "custom-time-range"
291
- }];
292
- var DATE_RULES = {
293
- today: "on",
294
- yesterday: "on",
295
- "all-time": "before"
296
- };
297
- var SEARCH_TERM_KEY = "search_term";
298
- var SEGMENT_ID_KEY = "segment_id";
299
-
300
- dayjs__default["default"].extend(utc__default["default"]);
301
- dayjs__default["default"].extend(timezone__default["default"]);
302
- dayjs__default["default"].extend(weekday__default["default"]);
303
- dayjs__default["default"].Ls.en.weekStart = 1;
304
-
305
- var NUMBER_RULES = [{
306
- label: i18next.t("neetoFilters.rules.is"),
307
- value: "is"
308
- }, {
309
- label: i18next.t("neetoFilters.rules.isNot"),
310
- value: "is_not"
311
- }, {
312
- label: i18next.t("neetoFilters.rules.greaterThan"),
313
- value: "greater_than"
314
- }, {
315
- label: i18next.t("neetoFilters.rules.lessThan"),
316
- value: "less_than"
317
- }];
318
- var TEXT_RULES = [{
319
- label: i18next.t("neetoFilters.rules.contains"),
320
- value: "contains"
321
- }, {
322
- label: i18next.t("neetoFilters.rules.doesNotContain"),
323
- value: "does_not_contain"
324
- }, {
325
- label: i18next.t("neetoFilters.rules.is"),
326
- value: "is"
327
- }, {
328
- label: i18next.t("neetoFilters.rules.isNot"),
329
- value: "is_not"
330
- }, {
331
- label: i18next.t("neetoFilters.rules.startsWith"),
332
- value: "starts_with"
333
- }, {
334
- label: i18next.t("neetoFilters.rules.doesNotStartWith"),
335
- value: "does_not_start_with"
336
- }, {
337
- label: i18next.t("neetoFilters.rules.endsWith"),
338
- value: "ends_with"
339
- }, {
340
- label: i18next.t("neetoFilters.rules.doesNotEndWith"),
341
- value: "does_not_end_with"
342
- }];
343
- var MULTI_DROPDOWN_RULES = [{
344
- label: i18next.t("neetoFilters.rules.in"),
345
- value: "in"
346
- }, {
347
- label: i18next.t("neetoFilters.rules.notIn"),
348
- value: "not_in"
349
- }, {
350
- label: i18next.t("neetoFilters.rules.isEmpty"),
351
- value: "is_unknown"
352
- }];
353
- var SINGLE_DROPDOWN_RULES = [{
354
- label: i18next.t("neetoFilters.rules.is"),
355
- value: "is"
356
- }, {
357
- label: i18next.t("neetoFilters.rules.isNot"),
358
- value: "is_not"
359
- }, {
360
- label: i18next.t("neetoFilters.rules.isEmpty"),
361
- value: "is_unknown"
362
- }];
363
- var DEFAULT_BOOLEAN_OPTIONS = [{
364
- label: i18next.t("neetoFilters.common.yes"),
365
- value: "true"
366
- }, {
367
- label: i18next.t("neetoFilters.common.no"),
368
- value: "false"
369
- }];
370
- var TREE_SELECT_RULES = [{
371
- label: i18next.t("neetoFilters.rules.in"),
372
- value: "in"
373
- }, {
374
- label: i18next.t("neetoFilters.rules.notIn"),
375
- value: "not_in"
376
- }, {
377
- label: i18next.t("neetoFilters.rules.isEmpty"),
378
- value: "is_unknown"
379
- }];
380
- var DEFAULT_HELP_ICON_PROPS = {
381
- icon: Help__default["default"]
382
- };
383
-
384
- function ownKeys$e(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; }
385
- function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
386
- var groupByGroup = ramda.groupBy(function (_ref) {
387
- var group = _ref.group;
388
- return group || "individual";
389
- });
390
- var standardizeColumnType = function standardizeColumnType(kind) {
391
- // neeto-fields-nano supports `monetary` and `number` as type of fields, which will be acting as `decimal` in action.
392
- if (["custom.monetary", "custom.number"].includes(kind)) {
393
- return "custom.decimal";
394
- }
395
- return kind;
396
- };
397
- var getSnakeCasedQueryParams = function getSnakeCasedQueryParams() {
398
- return utils.getQueryParams({
399
- toCamelCase: false
400
- });
401
- };
402
- var isBoolean = function isBoolean(type) {
403
- return type === "boolean" || type === "custom.boolean";
404
- };
405
- var isCheckbox = function isCheckbox(type) {
406
- return type === "checkbox" || type === "custom.checkbox";
407
- };
408
- var isDate = function isDate(type) {
409
- return type === "date" || type === "custom.date" || type === "custom.datetime";
410
- };
411
- var isSingleDate = function isSingleDate(type) {
412
- return type === "single_date" || type === "custom.single_date";
413
- };
414
- var isSingleTime = function isSingleTime(type) {
415
- return type === "single_time" || type === "custom.single_time";
416
- };
417
- var isTime = function isTime(type) {
418
- return type === "time" || type === "custom.time";
419
- };
420
- var isMulti = function isMulti(type) {
421
- return type === "multi_option" || type === "custom.multi_option";
422
- };
423
- var isSingle = function isSingle(type) {
424
- return type === "single_option" || type === "custom.single_option";
425
- };
426
- var isText = function isText(type) {
427
- return type === "text" || type === "custom.text";
428
- };
429
- var isDigit = function isDigit(type) {
430
- return ["number", "decimal", "custom.decimal", "custom.number"].includes(type);
431
- };
432
- var isTreeSelect = function isTreeSelect(type) {
433
- return type === "tree_select";
434
- };
435
- var isCustomDateRange = function isCustomDateRange(value) {
436
- return !ramda.pluck("value", DATE_OPTIONS).includes(value);
437
- };
438
- var isCustomTimeRange = function isCustomTimeRange(value) {
439
- return !ramda.pluck("value", TIME_OPTIONS).includes(value);
440
- };
441
- var isMultiModelFilter = function isMultiModelFilter(_ref2) {
442
- var _ref2$model = _ref2.model,
443
- model = _ref2$model === void 0 ? "" : _ref2$model;
444
- return model.split(",").length > 1;
445
- };
446
- var getTimezone = function getTimezone() {
447
- return dayjs__default["default"].tz.guess();
448
- };
449
- var getLabelFromBool = function getLabelFromBool(_ref3) {
450
- var value = _ref3.value,
451
- values = _ref3.values;
452
- return neetoCist.findBy({
453
- value: value
454
- }, ramda.either(ramda.isEmpty, ramda.isNil)(values) ? DEFAULT_BOOLEAN_OPTIONS : values).label;
455
- };
456
- var getBoolFromLabel = function getBoolFromLabel(_ref4) {
457
- var label = _ref4.label,
458
- values = _ref4.values;
459
- return neetoCist.findBy({
460
- label: label
461
- }, ramda.either(ramda.isEmpty, ramda.isNil)(values) ? DEFAULT_BOOLEAN_OPTIONS : values).value;
462
- };
463
- var buildRuleOptions = function buildRuleOptions(_ref5) {
464
- var defaultType = _ref5.defaultType;
465
- if (isText(defaultType)) return TEXT_RULES;else if (isDigit(defaultType)) return NUMBER_RULES;
466
- return [];
467
- };
468
- var getDefaultRuleValue = function getDefaultRuleValue(defaultType) {
469
- var _buildRuleOptions;
470
- return ((_buildRuleOptions = buildRuleOptions({
471
- defaultType: defaultType
472
- })) === null || _buildRuleOptions === void 0 || (_buildRuleOptions = _buildRuleOptions[0]) === null || _buildRuleOptions === void 0 ? void 0 : _buildRuleOptions.value) || "";
473
- };
474
- var isUndefinedOrEmpty = ramda.anyPass([ramda.isNil, ramda.isEmpty, ramda.any(ramda.isNil)]);
475
-
476
- // Following function split node on comma followed by non-comma characters and a dot
477
- var splitNode = function splitNode(joinedNodes) {
478
- return joinedNodes.split(/,(?=[^,]*\.)/);
479
- };
480
- var splitFilter = function splitFilter(multiColumnFilter) {
481
- var splittedNodes = splitNode(multiColumnFilter.node);
482
- var splittedModels = multiColumnFilter.model.split(",");
483
- return splittedNodes.map(function (node, index) {
484
- return ramda.mergeLeft({
485
- node: node,
486
- model: splittedModels[index],
487
- conditions_join_type: index < splittedNodes.length - 1 ? "or" : "and"
488
- }, ramda.omit(["key", "label", "values", "setValue"], multiColumnFilter));
489
- });
490
- };
491
- var buildDateValue = function buildDateValue(_ref6) {
492
- var value = _ref6.value;
493
- var rule = DATE_RULES[value] || "between";
494
- var dateValue = ["before", "after", "custom-date-range"].includes(value) ? "" : value;
495
- return {
496
- value: dateValue,
497
- rule: rule,
498
- timezone: getTimezone()
499
- };
500
- };
501
- var buildTimeValue = function buildTimeValue(_ref7) {
502
- var value = _ref7.value;
503
- var dateValue = value === "custom-time-range" ? "" : value;
504
- return {
505
- value: dateValue,
506
- rule: "between"
507
- };
508
- };
509
- var buildUpdatedFilter = function buildUpdatedFilter(_ref8) {
510
- var column = _ref8.column,
511
- defaultType = _ref8.defaultType,
512
- option = _ref8.option,
513
- _ref8$rule = _ref8.rule,
514
- rule = _ref8$rule === void 0 ? "" : _ref8$rule,
515
- _ref8$value = _ref8.value,
516
- value = _ref8$value === void 0 ? "" : _ref8$value;
517
- var filter = ramda.omit(["values", "preprocessor"], column);
518
- if (isMulti(defaultType)) {
519
- return ramda.mergeLeft(filter, {
520
- value: ramda.pluck("value", option),
521
- rule: rule
522
- });
523
- } else if (isDate(defaultType)) {
524
- return ramda.mergeLeft(filter, buildDateValue(option));
525
- } else if (isSingleDate(defaultType)) {
526
- return ramda.mergeLeft(filter, {
527
- value: value,
528
- rule: rule,
529
- timezone: getTimezone()
530
- });
531
- } else if (isText(defaultType) || isDigit(defaultType)) {
532
- var _column$preprocessor;
533
- return ramda.mergeLeft(filter, {
534
- rule: rule,
535
- value: (column === null || column === void 0 || (_column$preprocessor = column.preprocessor) === null || _column$preprocessor === void 0 ? void 0 : _column$preprocessor.call(column, value)) || value
536
- });
537
- } else if (isSingleTime(defaultType)) {
538
- return ramda.mergeLeft(filter, {
539
- value: value,
540
- rule: rule
541
- });
542
- } else if (isTime(defaultType)) {
543
- return ramda.mergeLeft(filter, buildTimeValue(option));
544
- } else if (isSingle(defaultType)) {
545
- return ramda.mergeLeft(filter, {
546
- value: option.value,
547
- rule: rule
548
- });
549
- } else if (isTreeSelect(defaultType)) {
550
- return ramda.mergeLeft(filter, {
551
- value: option,
552
- rule: rule
553
- });
554
- }
555
- return ramda.mergeLeft(filter, {
556
- value: option.value,
557
- rule: "is"
558
- });
559
- };
560
- var buildFiltersFromSearchParams = function buildFiltersFromSearchParams(columns) {
561
- var skipEmpty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
562
- var searchParams = getSnakeCasedQueryParams();
563
- return columns.map(function (column) {
564
- var value = searchParams[column.key];
565
- var defaultType = column.defaultType || column.type;
566
- if (!skipEmpty && value === "") {
567
- return ramda.mergeLeft({
568
- value: ""
569
- }, column);
570
- } else if (ramda.isNil(value) || value === "" || column.key === "keyword") {
571
- return null;
572
- } else if (column.key === SEARCH_TERM_KEY) {
573
- if (ramda.isNil(column.node)) return null;
574
- return ramda.mergeLeft({
575
- value: value,
576
- type: "text",
577
- rule: "contains"
578
- }, column);
579
- } else if (isDate(defaultType) && isCustomDateRange(value)) {
580
- return ramda.mergeLeft({
581
- value: value
582
- }, column);
583
- } else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
584
- var _value$split = value.split("+rule-"),
585
- _value$split2 = _slicedToArray(_value$split, 2),
586
- filterValue = _value$split2[0],
587
- rule = _value$split2[1];
588
- return ramda.mergeLeft({
589
- rule: rule !== null && rule !== void 0 ? rule : "in",
590
- value: filterValue.split("|")
591
- }, column);
592
- } else if (isSingle(defaultType)) {
593
- var _value$split3 = value.split("+rule-"),
594
- _value$split4 = _slicedToArray(_value$split3, 2),
595
- _filterValue = _value$split4[0],
596
- _rule = _value$split4[1];
597
- return ramda.mergeLeft({
598
- rule: _rule !== null && _rule !== void 0 ? _rule : "in",
599
- value: _filterValue
600
- }, column);
601
- } else if (isDigit(defaultType) || isText(defaultType)) {
602
- var _value$split5 = value.split("+rule-"),
603
- _value$split6 = _slicedToArray(_value$split5, 2),
604
- _filterValue2 = _value$split6[0],
605
- _rule2 = _value$split6[1];
606
- return ramda.mergeLeft({
607
- rule: _rule2,
608
- value: _filterValue2
609
- }, column);
610
- } else if (isTime(defaultType) && isCustomTimeRange(value)) {
611
- return ramda.mergeLeft({
612
- value: value
613
- }, column);
614
- } else if (isSingleDate(defaultType)) {
615
- var _value$split7 = value.split("+rule-"),
616
- _value$split8 = _slicedToArray(_value$split7, 2),
617
- _filterValue3 = _value$split8[0],
618
- _rule3 = _value$split8[1];
619
- return ramda.mergeLeft({
620
- rule: _rule3,
621
- value: _rule3 === "between" ? _filterValue3.split(",") : _filterValue3
622
- }, column);
623
- } else if (isSingleTime(defaultType)) {
624
- var _value$split9 = value.split("+rule-"),
625
- _value$split10 = _slicedToArray(_value$split9, 2),
626
- _filterValue4 = _value$split10[0],
627
- _rule4 = _value$split10[1];
628
- return ramda.mergeLeft({
629
- rule: _rule4,
630
- value: _rule4 === "between" ? _filterValue4.split(",") : _filterValue4
631
- }, column);
632
- } else if (isBoolean(defaultType)) {
633
- return ramda.mergeLeft({
634
- rule: "is",
635
- value: getBoolFromLabel({
636
- label: value,
637
- values: column.values
638
- })
639
- }, column);
640
- }
641
- return ramda.mergeLeft({
642
- rule: "is",
643
- value: value
644
- }, column);
645
- }).filter(ramda.identity);
646
- };
647
- var buildTimePayload = function buildTimePayload(value) {
648
- var timeValue = {
649
- "this-hour": [dayjs__default["default"]().startOf("hour"), dayjs__default["default"]().endOf("hour")],
650
- "last-hour": [dayjs__default["default"]().add(-1, "hour").startOf("hour"), dayjs__default["default"]().add(-1, "hour").endOf("hour")],
651
- "next-hour": [dayjs__default["default"]().add(1, "hour").startOf("hour"), dayjs__default["default"]().add(1, "hour").endOf("hour")]
652
- };
653
- if (isCustomTimeRange(value)) {
654
- return {
655
- value: value ? value.join(",") : "",
656
- rule: "between"
657
- };
658
- }
659
- return {
660
- value: timeValue[value].map(function (time) {
661
- return time.toISOString();
662
- }).join(","),
663
- rule: "between"
664
- };
665
- };
666
- var buildDatePayload = function buildDatePayload(value) {
667
- var dateValue = {
668
- "this-week": [dayjs__default["default"]().startOf("week"), dayjs__default["default"]().endOf("week")],
669
- "last-week": [dayjs__default["default"]().add(-1, "week").startOf("week"), dayjs__default["default"]().add(-1, "week").endOf("week")],
670
- "this-month": [dayjs__default["default"]().startOf("month"), dayjs__default["default"]().endOf("month")],
671
- "last-month": [dayjs__default["default"]().add(-1, "month").startOf("month"), dayjs__default["default"]().add(-1, "month").endOf("month")],
672
- "this-year": [dayjs__default["default"]().startOf("year"), dayjs__default["default"]().endOf("year")],
673
- "last-year": [dayjs__default["default"]().add(-1, "year").startOf("year"), dayjs__default["default"]().add(-1, "year").endOf("year")]
674
- };
675
- if (value === "today") {
676
- return {
677
- value: dayjs__default["default"]().toISOString(),
678
- rule: "on",
679
- timezone: getTimezone()
680
- };
681
- } else if (value === "yesterday") {
682
- return {
683
- value: dayjs__default["default"]().add(-1, "day").toISOString(),
684
- rule: "on",
685
- timezone: getTimezone()
686
- };
687
- } else if (value === "all-time") {
688
- return {
689
- value: dayjs__default["default"]().toISOString(),
690
- rule: "before",
691
- timezone: getTimezone(),
692
- type: "datetime"
693
- };
694
- } else if (isCustomDateRange(value)) {
695
- //custom-date-range
696
- return {
697
- value: value ? value.join(",") : "",
698
- rule: "between",
699
- timezone: getTimezone()
700
- };
701
- }
702
- return {
703
- value: dateValue[value].map(function (date) {
704
- return date.toISOString();
705
- }).join(","),
706
- rule: "between",
707
- timezone: getTimezone()
708
- };
709
- };
710
- var buildSingleDatePayload = function buildSingleDatePayload(filter) {
711
- var value = filter.value;
712
- var filterValue = Array.isArray(value) ? value.join(",") : value;
713
- return _objectSpread$e(_objectSpread$e({}, filter), {}, {
714
- value: filterValue,
715
- type: "date"
716
- });
717
- };
718
- var buildSingleTimePayload = function buildSingleTimePayload(filter) {
719
- var value = filter.value;
720
- var filterValue = Array.isArray(value) ? value.join(",") : value;
721
- return _objectSpread$e(_objectSpread$e({}, filter), {}, {
722
- value: filterValue,
723
- type: "time"
724
- });
725
- };
726
- var flattenPayload = function flattenPayload(payload) {
727
- var flattenedPayload = [];
728
- payload.forEach(function (item) {
729
- return Array.isArray(item) ? flattenedPayload.unshift.apply(flattenedPayload, _toConsumableArray(item)) : flattenedPayload.push(item);
730
- }, []);
731
- return flattenedPayload;
732
- };
733
- var buildMultiOptionPayload = function buildMultiOptionPayload(values) {
734
- return values.map(function (value) {
735
- return value.toString();
736
- }).join("|");
737
- };
738
- var buildFiltersPayload = function buildFiltersPayload(filters) {
739
- var payload = neetoCist.removeBy({
740
- value: ""
741
- }, filters).map(function (filter) {
742
- if (filter.key === SEARCH_TERM_KEY && isMultiModelFilter(filter)) {
743
- return splitFilter(filter);
744
- }
745
- var filterPayload = ramda.omit(["key", "label", "values", "setValue"], filter);
746
- var _filterPayload$defaul = filterPayload.defaultType,
747
- defaultType = _filterPayload$defaul === void 0 ? filterPayload.type : _filterPayload$defaul,
748
- value = filterPayload.value;
749
- if (isMultiModelFilter(filterPayload)) {
750
- throw i18next__default["default"].t("neetoFilters.errors.cannotPassMultipleModels");
751
- }
752
- if (isDate(defaultType)) {
753
- return ramda.mergeRight(filterPayload, buildDatePayload(value));
754
- } else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
755
- return ramda.mergeRight(filterPayload, {
756
- value: buildMultiOptionPayload(value)
757
- });
758
- } else if (isSingleDate(defaultType)) {
759
- return ramda.mergeRight(filterPayload, buildSingleDatePayload(filterPayload));
760
- } else if (isSingleTime(defaultType)) {
761
- return ramda.mergeRight(filterPayload, buildSingleTimePayload(filterPayload));
762
- } else if (isTime(defaultType)) {
763
- return ramda.mergeRight(filterPayload, buildTimePayload(value));
764
- }
765
- return filterPayload;
766
- });
767
- return ramda.isEmpty(payload) ? [] : [{
768
- conditions: flattenPayload(payload)
769
- }];
770
- };
771
- var buildSegmentsPayload = function buildSegmentsPayload(filters) {
772
- var childrenKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
773
- var payload = neetoCist.removeBy({
774
- value: ""
775
- }, filters).map(function (filter) {
776
- if (filter.key === SEARCH_TERM_KEY) {
777
- return false;
778
- }
779
- var filterPayload = ramda.omit(["label", "values", "setValue", "defaultValue"], filter);
780
- var _filterPayload$defaul2 = filterPayload.defaultType,
781
- defaultType = _filterPayload$defaul2 === void 0 ? filterPayload.type : _filterPayload$defaul2,
782
- value = filterPayload.value;
783
- if (filter.key !== SEARCH_TERM_KEY && isMultiModelFilter(filterPayload)) {
784
- throw i18next__default["default"].t("neetoFilters.errors.cannotPassMultipleModels");
785
- }
786
- if (isMulti(defaultType)) {
787
- return ramda.mergeRight(filterPayload, {
788
- value: buildMultiOptionPayload(value)
789
- });
790
- }
791
- return filterPayload;
792
- });
793
- var searchParams = getSnakeCasedQueryParams();
794
- var modifiedPayload = childrenKeys.reduce(function (acc, key) {
795
- if (ramda.has(key, searchParams)) {
796
- var filterPayload = {
797
- key: key,
798
- node: "children",
799
- value: searchParams[key]
800
- };
801
- return acc.concat(filterPayload);
802
- }
803
- return acc;
804
- }, payload);
805
- return ramda.isEmpty(modifiedPayload) ? [] : [{
806
- conditions: flattenPayload(modifiedPayload)
807
- }];
808
- };
809
- var buildFiltersFromURL = function buildFiltersFromURL(columns) {
810
- return buildFiltersPayload(buildFiltersFromSearchParams(columns.filter(function (column) {
811
- return !ramda.isNil(column.node);
812
- })));
813
- };
814
- var buildSelectorsFromURL = function buildSelectorsFromURL(columns) {
815
- var searchParams = getSnakeCasedQueryParams();
816
- var selectors = {};
817
- columns.filter(function (_ref9) {
818
- var node = _ref9.node;
819
- return !node;
820
- }).forEach(function (_ref10) {
821
- var key = _ref10.key,
822
- defaultType = _ref10.defaultType,
823
- type = _ref10.type;
824
- var value = searchParams[key];
825
- if (value) {
826
- selectors[key] = isMulti(defaultType || type) ? value.split("|") : value;
827
- }
828
- });
829
- return selectors;
830
- };
831
- var compareFilters = function compareFilters(oldFilters, newFilters) {
832
- var formatFilters = function formatFilters(filters) {
833
- return neetoCist.removeBy({
834
- value: ""
835
- }, filters).map(ramda.pick(["key", "rule", "value"]));
836
- };
837
- return ramda.equals(formatFilters(oldFilters), formatFilters(newFilters));
838
- };
839
- var buildFilteredColumns = function buildFilteredColumns(_ref11) {
840
- var _ref11$searchTerm = _ref11.searchTerm,
841
- searchTerm = _ref11$searchTerm === void 0 ? "" : _ref11$searchTerm,
842
- columns = _ref11.columns;
843
- var groupedColumsObject = groupByGroup(columns.filter(function (_ref12) {
844
- var label = _ref12.label,
845
- _ref12$hidden = _ref12.hidden,
846
- hidden = _ref12$hidden === void 0 ? false : _ref12$hidden;
847
- return label.toLocaleLowerCase().includes(searchTerm.trim().toLocaleLowerCase()) && !hidden;
848
- }));
849
- return {
850
- groupedColumns: ramda.toPairs(ramda.omit(["individual"], groupedColumsObject)).map(function (_ref13) {
851
- var _ref14 = _slicedToArray(_ref13, 2),
852
- group = _ref14[0],
853
- columns = _ref14[1];
854
- return {
855
- group: group,
856
- columns: columns
857
- };
858
- }),
859
- ungroupedColumns: groupedColumsObject.individual
860
- };
861
- };
862
- var buildDefaultFilters = function buildDefaultFilters(columns, filters) {
863
- return columns.filter(function (column) {
864
- return !isUndefinedOrEmpty(column.defaultValue) && !neetoCist.findBy({
865
- key: column.key
866
- }, filters);
867
- }).map(function (column) {
868
- var defaultType = column.defaultType || column.type;
869
- return buildUpdatedFilter({
870
- column: column,
871
- defaultType: defaultType,
872
- rule: getDefaultRuleValue(defaultType),
873
- option: column.defaultValue,
874
- value: column.defaultValue
875
- });
876
- });
877
- };
878
- var createUrlParamString = function createUrlParamString(_ref15) {
879
- var filter = _ref15.filter,
880
- columns = _ref15.columns;
881
- var key = filter.key,
882
- value = filter.value,
883
- _filter$defaultType = filter.defaultType,
884
- defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
885
- rule = filter.rule;
886
- if (key === SEARCH_TERM_KEY) {
887
- return value;
888
- } else if (isDigit(defaultType) || isText(defaultType)) {
889
- return "".concat(value, "+rule-").concat(rule);
890
- } else if (isSingleDate(defaultType) || isSingleTime(defaultType)) {
891
- return value && "".concat(value, "+rule-").concat(rule) || value;
892
- } else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
893
- return "".concat(value.join("|"), "+rule-").concat(rule);
894
- } else if (isSingle(defaultType)) {
895
- return "".concat(value, "+rule-").concat(rule);
896
- } else if (isBoolean(defaultType)) {
897
- return getLabelFromBool({
898
- value: value,
899
- values: neetoCist.findBy({
900
- key: key
901
- }, columns).values
902
- });
903
- }
904
- return value;
905
- };
906
- var buildUrlFromFilters = function buildUrlFromFilters(_ref16) {
907
- var columns = _ref16.columns,
908
- filters = _ref16.filters,
909
- _ref16$isClearAll = _ref16.isClearAll,
910
- isClearAll = _ref16$isClearAll === void 0 ? false : _ref16$isClearAll,
911
- _ref16$childrenKeys = _ref16.childrenKeys,
912
- childrenKeys = _ref16$childrenKeys === void 0 ? [] : _ref16$childrenKeys;
913
- var searchParams = getSnakeCasedQueryParams();
914
- var isKeywordFilterPresent = neetoCist.findBy({
915
- key: SEARCH_TERM_KEY
916
- }, filters);
917
- columns.forEach(function (_ref17) {
918
- var key = _ref17.key,
919
- defaultValue = _ref17.defaultValue;
920
- return !defaultValue && delete searchParams[key];
921
- });
922
- if (isClearAll) {
923
- childrenKeys.forEach(function (key) {
924
- return delete searchParams[key];
925
- });
926
- delete searchParams[SEGMENT_ID_KEY];
927
- }
928
- var defaultFilters = buildDefaultFilters(columns, filters);
929
- isKeywordFilterPresent && delete searchParams[SEARCH_TERM_KEY];
930
- ramda.concat(filters, defaultFilters).forEach(function (filter) {
931
- searchParams[filter.key] = createUrlParamString({
932
- filter: filter,
933
- columns: columns
934
- });
935
- });
936
- if (ramda.isEmpty(ramda.omit([SEGMENT_ID_KEY], searchParams))) {
937
- delete searchParams[SEGMENT_ID_KEY];
938
- }
939
- return utils.buildUrl("", searchParams).slice(1);
940
- };
941
- var createUrlParamStringForSegments = function createUrlParamStringForSegments(_ref18) {
942
- var filter = _ref18.filter,
943
- columns = _ref18.columns;
944
- var value = filter.value,
945
- _filter$defaultType2 = filter.defaultType,
946
- defaultType = _filter$defaultType2 === void 0 ? filter.type : _filter$defaultType2;
947
- if (isMulti(defaultType)) {
948
- return value;
949
- }
950
- return createUrlParamString({
951
- filter: filter,
952
- columns: columns
953
- });
954
- };
955
- var buildUrlFromSegment = function buildUrlFromSegment(_ref19) {
956
- var columns = _ref19.columns,
957
- filters = _ref19.filters,
958
- id = _ref19.id;
959
- var searchParams = getSnakeCasedQueryParams();
960
- columns.forEach(function (_ref20) {
961
- var key = _ref20.key,
962
- defaultValue = _ref20.defaultValue;
963
- return !defaultValue && delete searchParams[key];
964
- });
965
- delete searchParams[SEARCH_TERM_KEY];
966
- var defaultFilters = buildDefaultFilters(columns, filters);
967
- var newSearchParams = ramda.concat(filters, defaultFilters).reduce(function (acc, filter) {
968
- acc[filter.key] = createUrlParamStringForSegments({
969
- filter: filter,
970
- columns: columns
971
- });
972
- return acc;
973
- }, neetoCist.isNotEmpty(id) ? _defineProperty({}, SEGMENT_ID_KEY, id) : {});
974
- return utils.buildUrl("", ramda.mergeLeft(newSearchParams, searchParams)).slice(1);
975
- };
976
- var getSearchTermFromUrl = function getSearchTermFromUrl() {
977
- return utils.getQueryParams().searchTerm || "";
978
- };
979
- var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(_ref22) {
980
- var fields = _ref22.fields,
981
- _ref22$selectedFields = _ref22.selectedFields,
982
- selectedFields = _ref22$selectedFields === void 0 ? [] : _ref22$selectedFields,
983
- _ref22$showRuleSelect = _ref22.showRuleSelector,
984
- showRuleSelector = _ref22$showRuleSelect === void 0 ? false : _ref22$showRuleSelect,
985
- groupName = _ref22.groupName;
986
- return fields.reduce(function (columns, field) {
987
- if (ramda.isEmpty(selectedFields) || selectedFields.includes(field.name)) {
988
- var id = field.id,
989
- name = field.name,
990
- kind = field.kind;
991
- var column = _objectSpread$e({
992
- key: ramda.toLower(name),
993
- node: "".concat(name, ":").concat(id),
994
- label: neetoCist.capitalize(name),
995
- type: "custom.".concat(kind),
996
- showRuleSelector: showRuleSelector
997
- }, groupName && {
998
- group: groupName
999
- });
1000
- if (kind === "single_option" || kind === "multi_option") {
1001
- column.values = field.data.map(function (item) {
1002
- return {
1003
- label: neetoCist.capitalize(item.label),
1004
- value: item.id
1005
- };
1006
- });
1007
- }
1008
- columns.push(column);
1009
- }
1010
- return columns;
1011
- }, []);
1012
- };
1013
- var getColumnsWithStandardizedType = function getColumnsWithStandardizedType(columns) {
1014
- return columns.map(function (column) {
1015
- return _objectSpread$e(_objectSpread$e({}, column), {}, {
1016
- type: standardizeColumnType(column.type)
1017
- });
1018
- });
1019
- };
1020
- var isKeywordFilterPresent = function isKeywordFilterPresent(keyworFilter) {
1021
- return ramda.not(ramda.isEmpty(keyworFilter.node));
1022
- };
1023
- var isNilOrEmpty = function isNilOrEmpty(param) {
1024
- return ramda.isNil(param) || ramda.isEmpty(param);
1025
- };
1026
-
1027
- var buildDropdownValue = function buildDropdownValue(_ref) {
1028
- var defaultType = _ref.defaultType,
1029
- filter = _ref.filter,
1030
- options = _ref.options;
1031
- if (!filter) return null;
1032
- if (isMulti(defaultType) || isTreeSelect(defaultType)) {
1033
- return options.filter(function (_ref2) {
1034
- var value = _ref2.value;
1035
- return filter.value.includes(value);
1036
- });
1037
- }
1038
- return neetoCist.findBy({
1039
- value: filter.value
1040
- }, options);
1041
- };
1042
- var buildSingleTimeValue = function buildSingleTimeValue(filter) {
1043
- var _findBy2;
1044
- if (!filter) return null;
1045
- return (_findBy2 = neetoCist.findBy({
1046
- value: filter.value
1047
- }, TIME_OPTIONS)) !== null && _findBy2 !== void 0 ? _findBy2 : ramda.last(TIME_OPTIONS);
1048
- };
1049
- var getOtherProps = function getOtherProps(props) {
1050
- return ramda.omit(["key", "node", "label", "type", "values", "model", "showRuleSelector"], props);
1051
- };
1052
- var buildDropdownOptions = function buildDropdownOptions(_ref3) {
1053
- var defaultType = _ref3.defaultType,
1054
- filter = _ref3.filter,
1055
- options = _ref3.options;
1056
- options = options.map(ramda.modify("value", function (value) {
1057
- return value === null || value === void 0 ? void 0 : value.toString();
1058
- }));
1059
- if (!filter) return options;
1060
- if (isMulti(defaultType)) {
1061
- var selectedOptions = filter.value.map(function (value) {
1062
- return neetoCist.findBy({
1063
- value: value
1064
- }, options) || neetoCist.toLabelAndValue(value);
1065
- });
1066
- var nonSelectedOptions = options.filter(function (option) {
1067
- return !filter.value.includes(option.value);
1068
- });
1069
- return ramda.concat(selectedOptions, nonSelectedOptions);
1070
- }
1071
- if (!neetoCist.findBy({
1072
- value: filter.value
1073
- }, options)) {
1074
- return ramda.append(neetoCist.toLabelAndValue(filter.value), options);
1075
- }
1076
- return options;
1077
- };
1078
- var initializeDateRule = function initializeDateRule(filter) {
1079
- return filter ? neetoCist.findBy({
1080
- value: filter === null || filter === void 0 ? void 0 : filter.value
1081
- }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
1082
- };
1083
- var getDateValue = function getDateValue(value, rule) {
1084
- if (ramda.isEmpty(value) || ramda.isNil(value)) {
1085
- return null;
1086
- }
1087
- if (rule.value === "custom-date-range") {
1088
- return value;
1089
- }
1090
- return rule.value === "before" ? dayjs__default["default"](value[1]).add(1, "day") : dayjs__default["default"](value[0]).subtract(1, "day");
1091
- };
1092
- var findDateOption = function findDateOption(filter, options) {
1093
- var value = filter.value;
1094
- var isBeforeOrAfter = dayjs__default["default"](value[1]).diff(dayjs__default["default"](value[0]), "year") >= 90;
1095
- if (ramda.not(isBeforeOrAfter)) {
1096
- return ramda.last(options);
1097
- }
1098
- var currentMoment = dayjs__default["default"]();
1099
- var diffWithStart = Math.abs(currentMoment.diff(dayjs__default["default"](value[0]), "year"));
1100
- var diffWithEnd = Math.abs(currentMoment.diff(dayjs__default["default"](value[1]), "year"));
1101
- return diffWithStart < diffWithEnd ? neetoCist.findBy({
1102
- value: "after"
1103
- }, options) : neetoCist.findBy({
1104
- value: "before"
1105
- }, options);
1106
- };
1107
- var buildDateValues = function buildDateValues(dates, selectedRule) {
1108
- if (selectedRule.value === "after") {
1109
- return [dates.add(1, "day"), dates.add(100, "year")];
1110
- } else if (selectedRule.value === "before") {
1111
- return [dates.subtract(100, "year"), dates.subtract(1, "day")];
1112
- }
1113
- return dates;
1114
- };
1115
- var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
1116
- return ramda.mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
1117
- };
1118
- var hasInvalidTimes = function hasInvalidTimes(times) {
1119
- if (Array.isArray(times)) {
1120
- return times.some(function (time) {
1121
- return time.isValid();
1122
- }) === false;
1123
- }
1124
- return !times.isValid();
1125
- };
1126
- var areCustomTimeRangeValuesNotValid = function areCustomTimeRangeValuesNotValid(times) {
1127
- return !times.every(function (time) {
1128
- return time.isValid();
1129
- });
1130
- };
1131
-
1132
- // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
1133
- var formatSingleTime = function formatSingleTime(time) {
1134
- return dayjs__default["default"](time).format("HH:mm:ss");
1135
- };
1136
- var formatTime = function formatTime(value, timePickerType) {
1137
- if (isNilOrEmpty(value)) return null;
1138
- if (timePickerType === "range") {
1139
- return value.map(formatSingleTime);
1140
- }
1141
- return formatSingleTime(value);
1142
- };
1143
- var isRuleEmpty = function isRuleEmpty(rule) {
1144
- return ramda.equals(rule, "is_unknown");
1145
- };
1146
-
1147
- function ownKeys$d(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; }
1148
- function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1149
- var Boolean = function Boolean(_ref) {
1150
- var column = _ref.column,
1151
- filter = _ref.filter,
1152
- handleApplyFilter = _ref.handleApplyFilter,
1153
- autoFocus = _ref.autoFocus;
1154
- var key = column.key,
1155
- _column$defaultType = column.defaultType,
1156
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1157
- label = column.label,
1158
- values = column.values,
1159
- _column$helpIconProps = column.helpIconProps,
1160
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1161
- var options = ramda.isNil(values) || ramda.isEmpty(values) ? DEFAULT_BOOLEAN_OPTIONS : values;
1162
- var otherProps = getOtherProps(column);
1163
- var value = buildDropdownValue({
1164
- defaultType: defaultType,
1165
- filter: filter,
1166
- options: options
1167
- });
1168
- var _useTranslation = reactI18next.useTranslation(),
1169
- t = _useTranslation.t;
1170
- var handleChange = function handleChange(option) {
1171
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1172
- handleApplyFilter({
1173
- _delete: true
1174
- });
1175
- return;
1176
- }
1177
- var updatedFilter = buildUpdatedFilter({
1178
- column: column,
1179
- defaultType: defaultType,
1180
- option: option
1181
- });
1182
- handleApplyFilter(updatedFilter);
1183
- };
1184
- return /*#__PURE__*/jsxRuntime.jsx("div", {
1185
- className: "neeto-filters-pane-filter__item-wrapper",
1186
- children: /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], _objectSpread$d(_objectSpread$d({
1187
- autoFocus: autoFocus,
1188
- label: label,
1189
- options: options,
1190
- value: value,
1191
- isClearable: true
1192
- }, neetoCist.isNotEmpty(helpIconProps) && {
1193
- labelProps: {
1194
- helpIconProps: buildHelpIconProps(helpIconProps)
1195
- }
1196
- }), {}, {
1197
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1198
- strategy: "fixed",
1199
- placeholder: t("neetoFilters.messages.selectOption", {
1200
- resource: label
1201
- }),
1202
- onChange: handleChange
1203
- }, otherProps))
1204
- });
1205
- };
1206
- var Boolean$1 = /*#__PURE__*/React__default["default"].memo(Boolean);
1207
-
1208
- function ownKeys$c(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; }
1209
- function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1210
- var Datetime = function Datetime(_ref) {
1211
- var column = _ref.column,
1212
- filter = _ref.filter,
1213
- handleApplyFilter = _ref.handleApplyFilter,
1214
- autoFocus = _ref.autoFocus;
1215
- var _useState = React.useState(initializeDateRule(filter)),
1216
- _useState2 = _slicedToArray(_useState, 2),
1217
- selectedRule = _useState2[0],
1218
- setSelectedRule = _useState2[1];
1219
- var _useTranslation = reactI18next.useTranslation(),
1220
- t = _useTranslation.t;
1221
- var key = column.key,
1222
- _column$defaultType = column.defaultType,
1223
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1224
- label = column.label,
1225
- _column$helpIconProps = column.helpIconProps,
1226
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1227
- var isDatePickerShown = filter && isCustomDateRange(filter.value);
1228
- var otherProps = getOtherProps(column);
1229
- var handleChange = function handleChange(option) {
1230
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1231
- handleApplyFilter({
1232
- _delete: true
1233
- });
1234
- setSelectedRule({});
1235
- return;
1236
- }
1237
- setSelectedRule(option);
1238
- var updatedFilter = buildUpdatedFilter({
1239
- column: column,
1240
- defaultType: defaultType,
1241
- option: option
1242
- });
1243
- handleApplyFilter(updatedFilter);
1244
- };
1245
- var handleDateRangeChange = function handleDateRangeChange(dates) {
1246
- if (ramda.isEmpty(dates) || ramda.isNil(dates)) {
1247
- handleApplyFilter({
1248
- _delete: true
1249
- });
1250
- setSelectedRule({});
1251
- return;
1252
- }
1253
- var updatedFilter = buildUpdatedFilter({
1254
- column: column,
1255
- defaultType: defaultType,
1256
- option: {
1257
- value: ramda.pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
1258
- return date.toISOString();
1259
- })
1260
- }
1261
- });
1262
- handleApplyFilter(updatedFilter);
1263
- };
1264
- React.useEffect(function () {
1265
- ramda.isNil(filter) && setSelectedRule({});
1266
- }, [filter]);
1267
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1268
- className: "neeto-filters-pane-filter__item-wrapper",
1269
- children: [/*#__PURE__*/jsxRuntime.jsx(Select__default["default"], _objectSpread$c(_objectSpread$c({
1270
- autoFocus: autoFocus,
1271
- label: label,
1272
- isClearable: true,
1273
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1274
- options: DATE_OPTIONS,
1275
- strategy: "fixed",
1276
- value: selectedRule,
1277
- placeholder: t("neetoFilters.messages.selectResource", {
1278
- resource: label
1279
- })
1280
- }, neetoCist.isNotEmpty(helpIconProps) && {
1281
- labelProps: {
1282
- helpIconProps: buildHelpIconProps(helpIconProps)
1283
- }
1284
- }), {}, {
1285
- onChange: handleChange
1286
- })), isDatePickerShown && /*#__PURE__*/jsxRuntime.jsx(DatePicker__default["default"], _objectSpread$c({
1287
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-date-range"),
1288
- getPopupContainer: ramda.prop("parentNode"),
1289
- type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
1290
- value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
1291
- onChange: handleDateRangeChange
1292
- }, otherProps))]
1293
- });
1294
- };
1295
- var Datetime$1 = /*#__PURE__*/React__default["default"].memo(Datetime);
1296
-
1297
- function ownKeys$b(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; }
1298
- function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1299
- var Dropdown = function Dropdown(_ref) {
1300
- var column = _ref.column,
1301
- filter = _ref.filter,
1302
- handleApplyFilter = _ref.handleApplyFilter,
1303
- autoFocus = _ref.autoFocus,
1304
- filters = _ref.filters;
1305
- var key = column.key,
1306
- label = column.label,
1307
- values = column.values,
1308
- defaultValue = column.defaultValue,
1309
- _column$defaultType = column.defaultType,
1310
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1311
- _column$showRuleSelec = column.showRuleSelector,
1312
- showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
1313
- _column$isClearable = column.isClearable,
1314
- isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
1315
- _column$helpIconProps = column.helpIconProps,
1316
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1317
- var otherProps = getOtherProps(column);
1318
- var options = buildDropdownOptions({
1319
- defaultType: defaultType,
1320
- filter: filter,
1321
- options: values
1322
- });
1323
- var dropdownRules = isMulti(defaultType) ? MULTI_DROPDOWN_RULES : SINGLE_DROPDOWN_RULES;
1324
- var value = buildDropdownValue({
1325
- defaultType: defaultType,
1326
- filter: filter,
1327
- options: options
1328
- });
1329
- var _useState = React.useState(neetoCist.findBy({
1330
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1331
- }, dropdownRules) || dropdownRules[0]),
1332
- _useState2 = _slicedToArray(_useState, 2),
1333
- selectedRule = _useState2[0],
1334
- setSelectedRule = _useState2[1];
1335
- var _useTranslation = reactI18next.useTranslation(),
1336
- t = _useTranslation.t;
1337
- var getOption = function getOption(isSelectedRuleEmpty, options, value) {
1338
- if (isSelectedRuleEmpty) {
1339
- return isMulti(defaultType) ? [options[0]] : options[0];
1340
- }
1341
- return value;
1342
- };
1343
- var handleRuleChange = function handleRuleChange(rule) {
1344
- var isPreviousRuleEmpty = isRuleEmpty(selectedRule.value);
1345
- var isNewRuleEmpty = isRuleEmpty(rule.value);
1346
- setSelectedRule(rule);
1347
- if (isPreviousRuleEmpty || !isNewRuleEmpty && neetoCist.isNotPresent(filter === null || filter === void 0 ? void 0 : filter.value)) {
1348
- handleApplyFilter({
1349
- _delete: true
1350
- });
1351
- return;
1352
- }
1353
- var updatedFilter = buildUpdatedFilter({
1354
- column: column,
1355
- defaultType: defaultType,
1356
- rule: rule.value,
1357
- option: getOption(isNewRuleEmpty, options, value)
1358
- });
1359
- handleApplyFilter(updatedFilter);
1360
- };
1361
- var handleChange = function handleChange(option) {
1362
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1363
- handleApplyFilter({
1364
- _delete: true
1365
- });
1366
- return;
1367
- }
1368
- var updatedFilter = buildUpdatedFilter({
1369
- column: column,
1370
- defaultType: defaultType,
1371
- option: option,
1372
- rule: selectedRule.value
1373
- });
1374
- handleApplyFilter(updatedFilter);
1375
- };
1376
- React.useEffect(function () {
1377
- if (!ramda.isEmpty(filters)) return;
1378
- isRuleEmpty(selectedRule.value) && setSelectedRule(dropdownRules[0]);
1379
- }, [filters]);
1380
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1381
- className: "neeto-filters-pane-filter__item-wrapper",
1382
- children: [showRuleSelector && /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
1383
- label: label,
1384
- defaultValue: dropdownRules[0],
1385
- options: dropdownRules,
1386
- value: selectedRule,
1387
- onChange: handleRuleChange
1388
- }), !isRuleEmpty(selectedRule.value) && /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], _objectSpread$b(_objectSpread$b({
1389
- autoFocus: autoFocus,
1390
- options: options,
1391
- value: value,
1392
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1393
- isClearable: !defaultValue && isClearable,
1394
- isMulti: isMulti(defaultType),
1395
- label: !showRuleSelector && label,
1396
- strategy: "fixed",
1397
- placeholder: t("neetoFilters.messages.selectResource", {
1398
- resource: label
1399
- })
1400
- }, neetoCist.isNotEmpty(helpIconProps) && {
1401
- labelProps: {
1402
- helpIconProps: buildHelpIconProps(helpIconProps)
1403
- }
1404
- }), {}, {
1405
- onChange: handleChange
1406
- }, otherProps))]
1407
- });
1408
- };
1409
- var Dropdown$1 = /*#__PURE__*/React__default["default"].memo(Dropdown);
1410
-
1411
- function ownKeys$a(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; }
1412
- function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1413
- var SingleDatetime = function SingleDatetime(_ref) {
1414
- var column = _ref.column,
1415
- filter = _ref.filter,
1416
- filters = _ref.filters,
1417
- handleApplyFilter = _ref.handleApplyFilter,
1418
- autoFocus = _ref.autoFocus;
1419
- var _useState = React.useState(function () {
1420
- return neetoCist.findBy({
1421
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1422
- }, SINGLE_DATE_OPTIONS) || SINGLE_DATE_OPTIONS[0];
1423
- }),
1424
- _useState2 = _slicedToArray(_useState, 2),
1425
- selectedRule = _useState2[0],
1426
- setSelectedRule = _useState2[1];
1427
- var key = column.key,
1428
- _column$defaultType = column.defaultType,
1429
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1430
- label = column.label,
1431
- _column$helpIconProps = column.helpIconProps,
1432
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1433
- var otherProps = getOtherProps(column);
1434
- var datePickerType = selectedRule.value === "between" ? "range" : "date";
1435
- var value = filter === null || filter === void 0 ? void 0 : filter.value;
1436
-
1437
- // Reset states when "Clear filters" button is clicked.
1438
- React.useEffect(function () {
1439
- if (!ramda.isEmpty(filters)) return;
1440
- setSelectedRule(SINGLE_DATE_OPTIONS[0]);
1441
- }, [filters]);
1442
- var handleRuleChange = function handleRuleChange(ruleOption) {
1443
- setSelectedRule(ruleOption);
1444
-
1445
- // Clear value if switched between incompatable types
1446
- var updateValue = value;
1447
- if (datePickerType === "range" && ruleOption.value !== "between" || datePickerType === "date" && ruleOption.value === "between") {
1448
- updateValue = "";
1449
- }
1450
- var updatedFilter = buildUpdatedFilter({
1451
- column: column,
1452
- defaultType: defaultType,
1453
- option: {},
1454
- rule: ruleOption.value,
1455
- value: updateValue
1456
- });
1457
- handleApplyFilter(updatedFilter);
1458
- };
1459
- var handleChange = function handleChange(dates) {
1460
- if (ramda.isEmpty(dates) || ramda.isNil(dates)) {
1461
- handleApplyFilter({
1462
- _delete: true
1463
- });
1464
- return;
1465
- }
1466
- var value = datePickerType === "range" ? ramda.pluck("$d", dates).map(function (date) {
1467
- return date.toISOString();
1468
- }) : dates["$d"];
1469
- var updatedFilter = buildUpdatedFilter({
1470
- column: column,
1471
- defaultType: defaultType,
1472
- option: {},
1473
- rule: selectedRule.value,
1474
- value: value
1475
- });
1476
- handleApplyFilter(updatedFilter);
1477
- };
1478
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1479
- className: "neeto-filters-pane-filter__item-wrapper",
1480
- children: [/*#__PURE__*/jsxRuntime.jsx(Select__default["default"], _objectSpread$a(_objectSpread$a({
1481
- label: label,
1482
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter-rule"),
1483
- defaultValue: SINGLE_DATE_OPTIONS[0],
1484
- options: SINGLE_DATE_OPTIONS,
1485
- strategy: "fixed",
1486
- value: selectedRule
1487
- }, neetoCist.isNotEmpty(helpIconProps) && {
1488
- labelProps: {
1489
- helpIconProps: buildHelpIconProps(helpIconProps)
1490
- }
1491
- }), {}, {
1492
- onChange: handleRuleChange
1493
- })), /*#__PURE__*/jsxRuntime.jsx(DatePicker__default["default"], _objectSpread$a({
1494
- autoFocus: autoFocus,
1495
- value: value,
1496
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1497
- getPopupContainer: ramda.prop("parentNode"),
1498
- type: datePickerType,
1499
- onChange: handleChange
1500
- }, otherProps))]
1501
- });
1502
- };
1503
-
1504
- 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; }
1505
- 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), !0).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; }
1506
- var SingleTime = function SingleTime(_ref) {
1507
- var column = _ref.column,
1508
- filter = _ref.filter,
1509
- filters = _ref.filters,
1510
- handleApplyFilter = _ref.handleApplyFilter,
1511
- autoFocus = _ref.autoFocus;
1512
- var _useState = React.useState(function () {
1513
- return neetoCist.findBy({
1514
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1515
- }, SINGLE_TIME_OPTIONS) || SINGLE_TIME_OPTIONS[0];
1516
- }),
1517
- _useState2 = _slicedToArray(_useState, 2),
1518
- selectedRule = _useState2[0],
1519
- setSelectedRule = _useState2[1];
1520
- var key = column.key,
1521
- _column$defaultType = column.defaultType,
1522
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1523
- label = column.label,
1524
- _column$helpIconProps = column.helpIconProps,
1525
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1526
- var otherProps = getOtherProps(column);
1527
- var timePickerType = selectedRule.value === "between" ? "range" : "time";
1528
- var value = filter === null || filter === void 0 ? void 0 : filter.value;
1529
- React.useEffect(function () {
1530
- if (!ramda.isEmpty(filters)) return;
1531
- setSelectedRule(SINGLE_TIME_OPTIONS[0]);
1532
- }, [filters]);
1533
- var handleRuleChange = function handleRuleChange(ruleOption) {
1534
- setSelectedRule(ruleOption);
1535
-
1536
- // Clear value if switched between incompatible types
1537
- var updateValue = value;
1538
- if (timePickerType === "range" && ruleOption.value !== "between" || timePickerType === "time" && ruleOption.value === "between") {
1539
- updateValue = "";
1540
- }
1541
- var updatedFilter = buildUpdatedFilter({
1542
- column: column,
1543
- defaultType: defaultType,
1544
- option: {},
1545
- rule: ruleOption.value,
1546
- value: updateValue
1547
- });
1548
- handleApplyFilter(updatedFilter);
1549
- };
1550
- var handleChange = function handleChange(times) {
1551
- if (hasInvalidTimes(times)) {
1552
- handleApplyFilter({
1553
- _delete: true
1554
- });
1555
- return;
1556
- }
1557
- if (timePickerType === "range" && areCustomTimeRangeValuesNotValid(times)) {
1558
- return;
1559
- }
1560
- var value = timePickerType === "range" ? ramda.pluck("$d", times).map(function (time) {
1561
- return time.toISOString();
1562
- }) : times["$d"].toISOString();
1563
- var updatedFilter = buildUpdatedFilter({
1564
- column: column,
1565
- defaultType: defaultType,
1566
- option: {},
1567
- rule: selectedRule.value,
1568
- value: value
1569
- });
1570
- handleApplyFilter(updatedFilter);
1571
- };
1572
- var formattedTime = formatTime(value, timePickerType);
1573
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1574
- className: "neeto-filters-pane-filter__item-wrapper",
1575
- children: [/*#__PURE__*/jsxRuntime.jsx(Select__default["default"], _objectSpread$9(_objectSpread$9({
1576
- label: label,
1577
- defaultValue: SINGLE_TIME_OPTIONS[0],
1578
- options: SINGLE_TIME_OPTIONS,
1579
- strategy: "fixed",
1580
- value: selectedRule
1581
- }, neetoCist.isNotEmpty(helpIconProps) && {
1582
- labelProps: {
1583
- helpIconProps: buildHelpIconProps(helpIconProps)
1584
- }
1585
- }), {}, {
1586
- onChange: handleRuleChange
1587
- })), /*#__PURE__*/jsxRuntime.jsx(TimePickerInput__default["default"], _objectSpread$9({
1588
- autoFocus: autoFocus,
1589
- className: "w-full",
1590
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1591
- type: timePickerType,
1592
- value: formattedTime,
1593
- onChange: handleChange
1594
- }, otherProps))]
1595
- });
1596
- };
1597
-
1598
- 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; }
1599
- 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), !0).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; }
1600
- var Text = function Text(_ref) {
1601
- var column = _ref.column,
1602
- filter = _ref.filter,
1603
- filters = _ref.filters,
1604
- handleApplyFilter = _ref.handleApplyFilter,
1605
- autoFocus = _ref.autoFocus,
1606
- onClose = _ref.onClose;
1607
- var key = column.key,
1608
- _column$defaultType = column.defaultType,
1609
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1610
- label = column.label,
1611
- _column$showRuleSelec = column.showRuleSelector,
1612
- showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
1613
- _column$helpIconProps = column.helpIconProps,
1614
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1615
- var otherProps = getOtherProps(column);
1616
- var ruleOptions = buildRuleOptions({
1617
- defaultType: defaultType
1618
- });
1619
- var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
1620
- var _useState = React.useState(filter === null || filter === void 0 ? void 0 : filter.value),
1621
- _useState2 = _slicedToArray(_useState, 2),
1622
- inputValue = _useState2[0],
1623
- setInputValue = _useState2[1];
1624
- var _useState3 = React.useState(function () {
1625
- return neetoCist.findBy({
1626
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1627
- }, ruleOptions) || ruleOptions[0];
1628
- }),
1629
- _useState4 = _slicedToArray(_useState3, 2),
1630
- selectedRule = _useState4[0],
1631
- setSelectedRule = _useState4[1];
1632
- var debouncedInputValue = reactUtils.useDebounce(inputValue);
1633
- var _useTranslation = reactI18next.useTranslation(),
1634
- t = _useTranslation.t;
1635
- var handleUpdateAndApplyFilter = function handleUpdateAndApplyFilter() {
1636
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : debouncedInputValue;
1637
- var rule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedRule;
1638
- if (ramda.equals(filter === null || filter === void 0 ? void 0 : filter.value, value) && ramda.equals(selectedRule, rule)) return;
1639
- var updatedFilter = buildUpdatedFilter({
1640
- column: column,
1641
- defaultType: defaultType,
1642
- option: {},
1643
- rule: rule.value,
1644
- value: value.trim()
1645
- });
1646
- handleApplyFilter(updatedFilter);
1647
- };
1648
- var handleKeydown = function handleKeydown(e) {
1649
- if (!(e.key === "Enter")) return;
1650
- handleUpdateAndApplyFilter(inputValue);
1651
- onClose();
1652
- };
1653
- var handleRuleChange = function handleRuleChange(ruleOption) {
1654
- setSelectedRule(ruleOption);
1655
- if (!debouncedInputValue) return;
1656
- handleUpdateAndApplyFilter(debouncedInputValue, ruleOption);
1657
- };
1658
-
1659
- // Reset states when "Clear filters" button is clicked.
1660
- React.useEffect(function () {
1661
- (ramda.isEmpty(filters) || ramda.isNil(filter)) && setInputValue("");
1662
- }, [filter]);
1663
- React.useEffect(function () {
1664
- if (!debouncedInputValue) {
1665
- !isUndefinedOrEmpty(filter) && handleApplyFilter({
1666
- _delete: true
1667
- });
1668
- return;
1669
- }
1670
- handleUpdateAndApplyFilter();
1671
- }, [debouncedInputValue]);
1672
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1673
- className: "neeto-filters-pane-filter__item-wrapper",
1674
- children: [showRuleSelector && /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], _objectSpread$8({
1675
- label: label,
1676
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter-rule"),
1677
- defaultValue: ruleOptions[0],
1678
- options: ruleOptions,
1679
- strategy: "fixed",
1680
- value: selectedRule,
1681
- onChange: handleRuleChange
1682
- }, neetoCist.isNotEmpty(helpIconProps) && {
1683
- labelProps: {
1684
- helpIconProps: buildHelpIconProps(helpIconProps)
1685
- }
1686
- })), /*#__PURE__*/jsxRuntime.jsx(Input__default["default"], _objectSpread$8(_objectSpread$8({
1687
- autoFocus: autoFocus,
1688
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1689
- label: !showRuleSelector && label,
1690
- type: inputType,
1691
- value: inputValue
1692
- }, neetoCist.isNotEmpty(helpIconProps) && {
1693
- labelProps: {
1694
- helpIconProps: buildHelpIconProps(helpIconProps)
1695
- }
1696
- }), {}, {
1697
- placeholder: t("neetoFilters.messages.enterResource", {
1698
- resource: label
1699
- }),
1700
- onChange: function onChange(event) {
1701
- return setInputValue(event.target.value);
1702
- },
1703
- onKeyDown: handleKeydown
1704
- }, otherProps))]
1705
- });
1706
- };
1707
-
1708
- 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; }
1709
- 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), !0).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; }
1710
- var Time = function Time(_ref) {
1711
- var column = _ref.column,
1712
- filter = _ref.filter,
1713
- handleApplyFilter = _ref.handleApplyFilter,
1714
- autoFocus = _ref.autoFocus;
1715
- var key = column.key,
1716
- _column$defaultType = column.defaultType,
1717
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1718
- label = column.label,
1719
- _column$helpIconProps = column.helpIconProps,
1720
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1721
- var otherProps = getOtherProps(column);
1722
- var value = buildSingleTimeValue(filter);
1723
- var isCustomTimeRangeShown = filter && isCustomTimeRange(filter.value);
1724
- var _useTranslation = reactI18next.useTranslation(),
1725
- t = _useTranslation.t;
1726
- var handleChange = function handleChange(option) {
1727
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1728
- handleApplyFilter({
1729
- _delete: true
1730
- });
1731
- return;
1732
- }
1733
- var updatedFilter = buildUpdatedFilter({
1734
- column: column,
1735
- defaultType: defaultType,
1736
- option: option
1737
- });
1738
- handleApplyFilter(updatedFilter);
1739
- };
1740
- var handleTimeRangeChange = function handleTimeRangeChange(times) {
1741
- if (hasInvalidTimes(times)) {
1742
- handleApplyFilter({
1743
- _delete: true
1744
- });
1745
- return;
1746
- }
1747
- if (isCustomTimeRangeShown && areCustomTimeRangeValuesNotValid(times)) {
1748
- return;
1749
- }
1750
- var updatedFilter = buildUpdatedFilter({
1751
- column: column,
1752
- defaultType: defaultType,
1753
- option: {
1754
- value: ramda.pluck("$d", times).map(function (time) {
1755
- return time.toISOString();
1756
- })
1757
- }
1758
- });
1759
- handleApplyFilter(updatedFilter);
1760
- };
1761
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1762
- className: "neeto-filters-pane-filter__item-wrapper",
1763
- children: [/*#__PURE__*/jsxRuntime.jsx(Select__default["default"], _objectSpread$7(_objectSpread$7({
1764
- autoFocus: autoFocus,
1765
- label: label,
1766
- value: value,
1767
- isClearable: true,
1768
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1769
- options: TIME_OPTIONS,
1770
- strategy: "fixed",
1771
- placeholder: t("neetoFilters.messages.selectResource", {
1772
- resource: label
1773
- })
1774
- }, neetoCist.isNotEmpty(helpIconProps) && {
1775
- labelProps: {
1776
- helpIconProps: buildHelpIconProps(helpIconProps)
1777
- }
1778
- }), {}, {
1779
- onChange: handleChange
1780
- })), isCustomTimeRangeShown && /*#__PURE__*/jsxRuntime.jsx(TimePickerInput__default["default"], _objectSpread$7({
1781
- className: "w-full",
1782
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-date-range"),
1783
- type: "range",
1784
- value: formatTime(filter.value, "range"),
1785
- onChange: handleTimeRangeChange
1786
- }, otherProps))]
1787
- });
1788
- };
1789
- var Time$1 = /*#__PURE__*/React__default["default"].memo(Time);
1790
-
1791
- 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; }
1792
- 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), !0).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; }
1793
- var TreeSelect = function TreeSelect(_ref) {
1794
- var _findBy;
1795
- var autoFocus = _ref.autoFocus,
1796
- column = _ref.column,
1797
- filter = _ref.filter,
1798
- handleApplyFilter = _ref.handleApplyFilter;
1799
- var key = column.key,
1800
- label = column.label,
1801
- _column$defaultType = column.defaultType,
1802
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1803
- defaultValue = column.defaultValue,
1804
- _column$helpIconProps = column.helpIconProps,
1805
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps,
1806
- _column$isClearable = column.isClearable,
1807
- isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
1808
- _column$showRuleSelec = column.showRuleSelector,
1809
- showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
1810
- options = column.values;
1811
- var initialRule = (_findBy = neetoCist.findBy({
1812
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1813
- }, TREE_SELECT_RULES)) !== null && _findBy !== void 0 ? _findBy : TREE_SELECT_RULES[0];
1814
- var _useState = React.useState(initialRule),
1815
- _useState2 = _slicedToArray(_useState, 2),
1816
- selectedRule = _useState2[0],
1817
- setSelectedRule = _useState2[1];
1818
- var _useTranslation = reactI18next.useTranslation(),
1819
- t = _useTranslation.t;
1820
- var selectedOption = buildDropdownValue({
1821
- defaultType: defaultType,
1822
- filter: filter,
1823
- options: options
1824
- });
1825
- var handleChange = function handleChange(option) {
1826
- if (neetoCist.isNotPresent(option)) return handleApplyFilter({
1827
- _delete: true
1828
- });
1829
- var updatedFilter = buildUpdatedFilter({
1830
- column: column,
1831
- defaultType: defaultType,
1832
- option: option,
1833
- rule: selectedRule.value
1834
- });
1835
- return handleApplyFilter(updatedFilter);
1836
- };
1837
- var handleRuleChange = function handleRuleChange(rule) {
1838
- var isPreviousRuleEmpty = isRuleEmpty(selectedRule.value);
1839
- var isNewRuleEmpty = isRuleEmpty(rule.value);
1840
- setSelectedRule(rule);
1841
- if (isPreviousRuleEmpty || !isNewRuleEmpty && neetoCist.isNotPresent(filter === null || filter === void 0 ? void 0 : filter.value)) {
1842
- return handleApplyFilter({
1843
- _delete: true
1844
- });
1845
- }
1846
- var updatedFilter = buildUpdatedFilter({
1847
- column: column,
1848
- defaultType: defaultType,
1849
- option: isNewRuleEmpty ? [options[0]] : selectedOption,
1850
- rule: rule.value
1851
- });
1852
- return handleApplyFilter(updatedFilter);
1853
- };
1854
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
1855
- className: "neeto-filters-pane-filter__item-wrapper",
1856
- children: [showRuleSelector && /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
1857
- label: label,
1858
- defaultValue: TREE_SELECT_RULES[0],
1859
- options: TREE_SELECT_RULES,
1860
- value: selectedRule,
1861
- onChange: handleRuleChange
1862
- }), !isRuleEmpty(selectedRule.value) &&
1863
- /*#__PURE__*/
1864
- // eslint-disable-next-line @bigbinary/neeto/merge-spread-attributes
1865
- jsxRuntime.jsx(NeetoUITreeSelect__default["default"], _objectSpread$6(_objectSpread$6({
1866
- autoFocus: autoFocus,
1867
- multiple: true,
1868
- showSearch: true,
1869
- treeDataSimpleMode: true,
1870
- allowClear: !defaultValue && isClearable,
1871
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1872
- label: !showRuleSelector && label,
1873
- treeData: options,
1874
- value: selectedOption,
1875
- placeholder: t("neetoFilters.messages.selectResource", {
1876
- resource: label
1877
- }),
1878
- onChange: handleChange
1879
- }, neetoCist.isNotEmpty(helpIconProps) && {
1880
- labelProps: {
1881
- helpIconProps: buildHelpIconProps(helpIconProps)
1882
- }
1883
- }), getOtherProps(column)))]
1884
- });
1885
- };
1886
- var TreeSelect$1 = /*#__PURE__*/React__default["default"].memo(TreeSelect);
1887
-
1888
- var Item = function Item(_ref) {
1889
- var column = _ref.column,
1890
- filters = _ref.filters,
1891
- onChange = _ref.onChange,
1892
- autoFocus = _ref.autoFocus,
1893
- _ref$onClose = _ref.onClose,
1894
- onClose = _ref$onClose === void 0 ? neetoCist.noop : _ref$onClose;
1895
- var key = column.key,
1896
- _column$defaultType = column.defaultType,
1897
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType;
1898
- var filter = React.useMemo(function () {
1899
- return neetoCist.findBy({
1900
- key: key
1901
- }, filters);
1902
- }, [filters, key]);
1903
- var handleApplyFilter = function handleApplyFilter(updatedFilter) {
1904
- if (updatedFilter._delete) onChange(neetoCist.removeBy({
1905
- key: key
1906
- }, filters));else if (!filter) onChange(ramda.append(updatedFilter, filters));else onChange(neetoCist.replaceBy({
1907
- key: key
1908
- }, updatedFilter, filters));
1909
- };
1910
- if (isText(defaultType) || isDigit(defaultType)) {
1911
- return /*#__PURE__*/jsxRuntime.jsx(Text, {
1912
- autoFocus: autoFocus,
1913
- column: column,
1914
- filter: filter,
1915
- filters: filters,
1916
- handleApplyFilter: handleApplyFilter,
1917
- onClose: onClose
1918
- });
1919
- }
1920
- if (isDate(defaultType)) {
1921
- return /*#__PURE__*/jsxRuntime.jsx(Datetime$1, {
1922
- autoFocus: autoFocus,
1923
- column: column,
1924
- filter: filter,
1925
- handleApplyFilter: handleApplyFilter
1926
- });
1927
- }
1928
- if (isTime(defaultType)) {
1929
- return /*#__PURE__*/jsxRuntime.jsx(Time$1, {
1930
- autoFocus: autoFocus,
1931
- column: column,
1932
- filter: filter,
1933
- handleApplyFilter: handleApplyFilter
1934
- });
1935
- }
1936
- if (isSingleDate(defaultType)) {
1937
- return /*#__PURE__*/jsxRuntime.jsx(SingleDatetime, {
1938
- autoFocus: autoFocus,
1939
- column: column,
1940
- filter: filter,
1941
- filters: filters,
1942
- handleApplyFilter: handleApplyFilter
1943
- });
1944
- }
1945
- if (isSingleTime(defaultType)) {
1946
- return /*#__PURE__*/jsxRuntime.jsx(SingleTime, {
1947
- autoFocus: autoFocus,
1948
- column: column,
1949
- filter: filter,
1950
- filters: filters,
1951
- handleApplyFilter: handleApplyFilter
1952
- });
1953
- }
1954
- if (isBoolean(defaultType) || isCheckbox(defaultType)) {
1955
- return /*#__PURE__*/jsxRuntime.jsx(Boolean$1, {
1956
- autoFocus: autoFocus,
1957
- column: column,
1958
- filter: filter,
1959
- handleApplyFilter: handleApplyFilter
1960
- });
1961
- }
1962
- if (isTreeSelect(defaultType)) {
1963
- return /*#__PURE__*/jsxRuntime.jsx(TreeSelect$1, {
1964
- autoFocus: autoFocus,
1965
- column: column,
1966
- filter: filter,
1967
- handleApplyFilter: handleApplyFilter
1968
- });
1969
- }
1970
- return /*#__PURE__*/jsxRuntime.jsx(Dropdown$1, {
1971
- autoFocus: autoFocus,
1972
- column: column,
1973
- filter: filter,
1974
- filters: filters,
1975
- handleApplyFilter: handleApplyFilter
1976
- });
1977
- };
1978
-
1979
- var STEPS = {
1980
- ADD: "add",
1981
- COLUMN: "column",
1982
- VALUE: "value"
1983
- };
1984
-
1985
- var AddFilter = function AddFilter(_ref) {
1986
- var _findBy;
1987
- var columns = _ref.columns,
1988
- filters = _ref.filters,
1989
- handleChange = _ref.handleChange,
1990
- handleClearFilter = _ref.handleClearFilter,
1991
- _ref$disabled = _ref.disabled,
1992
- disabled = _ref$disabled === void 0 ? false : _ref$disabled;
1993
- var _useTranslation = reactI18next.useTranslation(),
1994
- t = _useTranslation.t;
1995
- var _useState = React.useState({
1996
- step: STEPS.ADD,
1997
- column: {}
1998
- }),
1999
- _useState2 = _slicedToArray(_useState, 2),
2000
- selectedColumn = _useState2[0],
2001
- setSelectedColumn = _useState2[1];
2002
-
2003
- // Disable the add button when
2004
- // 1. No value is entered for previous filter
2005
- // 2. There are no more columns
2006
- var disableAddButton = selectedColumn.step !== STEPS.ADD && neetoCist.isNotPresent((_findBy = neetoCist.findBy({
2007
- key: selectedColumn.column.key
2008
- }, filters)) === null || _findBy === void 0 ? void 0 : _findBy.value) || ramda.isEmpty(columns);
2009
- return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
2010
- children: selectedColumn.step !== STEPS.ADD ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2011
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
2012
- className: "flex w-full gap-4",
2013
- children: [selectedColumn.step === STEPS.COLUMN && /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
2014
- isSearchable: true,
2015
- label: t("neetoFilters.segments.newFilter"),
2016
- optionRemapping: {
2017
- label: "label",
2018
- value: "key"
2019
- },
2020
- options: columns,
2021
- placeholder: t("neetoFilters.segments.selectFilter"),
2022
- onChange: function onChange(column) {
2023
- return setSelectedColumn({
2024
- step: STEPS.VALUE,
2025
- column: column
2026
- });
2027
- }
2028
- }), selectedColumn.step === STEPS.VALUE && /*#__PURE__*/jsxRuntime.jsx(Item, {
2029
- filters: filters,
2030
- autoFocus: true,
2031
- column: selectedColumn.column,
2032
- onChange: handleChange
2033
- }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
2034
- className: "mt-6 self-center",
2035
- icon: Delete__default["default"],
2036
- style: "text",
2037
- onClick: function onClick() {
2038
- handleClearFilter(selectedColumn.column);
2039
- setSelectedColumn(ramda.assoc("step", STEPS.ADD));
2040
- }
2041
- })]
2042
- }), /*#__PURE__*/jsxRuntime.jsx(AddFilter, {
2043
- filters: filters,
2044
- handleChange: handleChange,
2045
- handleClearFilter: handleClearFilter,
2046
- columns: columns.filter(function (_ref2) {
2047
- var key = _ref2.key;
2048
- return !neetoCist.existsBy({
2049
- key: key
2050
- }, filters);
2051
- }),
2052
- disabled: disableAddButton
2053
- })]
2054
- }) : /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
2055
- disabled: disabled,
2056
- className: "self-start",
2057
- icon: Plus__default["default"],
2058
- iconPosition: "left",
2059
- label: t("neetoFilters.segments.addFilter"),
2060
- style: "link",
2061
- onClick: function onClick() {
2062
- return setSelectedColumn(ramda.assoc("step", STEPS.COLUMN));
2063
- }
2064
- })
2065
- });
2066
- };
2067
-
2068
- var buildSegmentsValidationSchema = function buildSegmentsValidationSchema(defaultSegmentName) {
2069
- return yup__namespace.object({
2070
- name: yup__namespace.string().trim().required(i18next.t("neetoFilters.segments.nameIsRequired")).test({
2071
- name: "not-default-segment-name",
2072
- test: function test(value) {
2073
- return (value === null || value === void 0 ? void 0 : value.toLocaleLowerCase()) !== defaultSegmentName.toLocaleLowerCase();
2074
- },
2075
- message: i18next.t("neetoFilters.segments.reservedNameErrorMessage")
2076
- })
2077
- });
2078
- };
2079
-
2080
- 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; }
2081
- 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), !0).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; }
2082
- var SegmentForm = function SegmentForm(_ref) {
2083
- var _ref$isEdit = _ref.isEdit,
2084
- isEdit = _ref$isEdit === void 0 ? false : _ref$isEdit,
2085
- segmentFormInitialRef = _ref.segmentFormInitialRef,
2086
- isOpen = _ref.isOpen,
2087
- onClose = _ref.onClose,
2088
- isSubmitting = _ref.isSubmitting,
2089
- handleSubmit = _ref.handleSubmit,
2090
- defaultSegmentName = _ref.defaultSegmentName,
2091
- initialValues = _ref.initialValues,
2092
- customFilters = _ref.customFilters,
2093
- columns = _ref.columns,
2094
- filters = _ref.filters,
2095
- childrenKeys = _ref.childrenKeys;
2096
- var history = reactRouterDom_min.useHistory();
2097
- var _useTranslation = reactI18next.useTranslation(),
2098
- t = _useTranslation.t;
2099
- var _buildFilteredColumns = buildFilteredColumns({
2100
- searchTerm: "",
2101
- columns: columns
2102
- }),
2103
- _buildFilteredColumns2 = _buildFilteredColumns.groupedColumns,
2104
- groupedColumns = _buildFilteredColumns2 === void 0 ? [] : _buildFilteredColumns2,
2105
- _buildFilteredColumns3 = _buildFilteredColumns.ungroupedColumns,
2106
- ungroupedColumns = _buildFilteredColumns3 === void 0 ? [] : _buildFilteredColumns3;
2107
- var handleChange = function handleChange(newFilters) {
2108
- var isClearAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2109
- var params = buildUrlFromFilters(_objectSpread$5({
2110
- columns: columns,
2111
- filters: newFilters
2112
- }, isClearAll && {
2113
- isClearAll: true,
2114
- childrenKeys: childrenKeys
2115
- }));
2116
- history.push({
2117
- search: params
2118
- });
2119
- };
2120
- var handleClearFilter = function handleClearFilter(column, values, setFieldValue) {
2121
- var formState = [{
2122
- conditions: neetoCist.removeBy({
2123
- key: column.key
2124
- }, values.filters[0].conditions)
2125
- }];
2126
- var globalState = neetoCist.removeBy({
2127
- key: column.key
2128
- }, filters);
2129
- setFieldValue("filters", formState);
2130
- handleChange(globalState);
2131
- };
2132
- return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], {
2133
- isOpen: isOpen,
2134
- onClose: onClose,
2135
- initialFocusRef: segmentFormInitialRef,
2136
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
2137
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
2138
- style: "h2",
2139
- weight: "semibold",
2140
- children: isEdit ? t("neetoFilters.segments.editSegment") : t("neetoFilters.segments.addNewSegment")
2141
- })
2142
- }), /*#__PURE__*/jsxRuntime.jsx(Form__default["default"], {
2143
- className: "w-full",
2144
- formProps: {
2145
- noValidate: true
2146
- },
2147
- formikProps: {
2148
- initialValues: initialValues,
2149
- validateOnChange: true,
2150
- validateOnBlur: true,
2151
- validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
2152
- onSubmit: handleSubmit
2153
- },
2154
- children: function children(_ref2) {
2155
- var errors = _ref2.errors,
2156
- values = _ref2.values,
2157
- setFieldValue = _ref2.setFieldValue;
2158
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2159
- children: [/*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Body, {
2160
- children: [/*#__PURE__*/jsxRuntime.jsx(Input__default$1["default"], {
2161
- className: "w-full flex-grow-0",
2162
- error: errors.name,
2163
- label: t("neetoFilters.segments.name"),
2164
- name: "name",
2165
- placeholder: t("neetoFilters.segments.segmentName"),
2166
- ref: segmentFormInitialRef
2167
- }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
2168
- className: "mb-2 mt-4",
2169
- style: "h4",
2170
- children: t("neetoFilters.common.filters")
2171
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
2172
- className: "neeto-filters-pane-filter__body flex w-full flex-col gap-5",
2173
- children: [ungroupedColumns.filter(function (_ref3) {
2174
- var key = _ref3.key;
2175
- return neetoCist._existsBy({
2176
- key: key
2177
- }, values.filters[0].conditions);
2178
- }).map(function (column) {
2179
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
2180
- className: "flex w-full gap-4",
2181
- children: [/*#__PURE__*/jsxRuntime.jsx(Item, {
2182
- column: column,
2183
- filters: filters,
2184
- autoFocus: column.key === isOpen,
2185
- onChange: function onChange(filters) {
2186
- setFieldValue("filters", [{
2187
- conditions: filters
2188
- }]);
2189
- handleChange(filters);
2190
- }
2191
- }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
2192
- className: "mt-6 self-center",
2193
- icon: Delete__default["default"],
2194
- style: "text",
2195
- onClick: function onClick() {
2196
- return handleClearFilter(column, values, setFieldValue);
2197
- }
2198
- })]
2199
- }, column.key);
2200
- }), neetoCist.isPresent(groupedColumns) && /*#__PURE__*/jsxRuntime.jsx(Accordion__default["default"], {
2201
- children: groupedColumns.map(function (_ref4) {
2202
- var group = _ref4.group,
2203
- columns = _ref4.columns;
2204
- return /*#__PURE__*/jsxRuntime.jsx(Accordion__default["default"].Item, {
2205
- className: "accordion_item",
2206
- title: group,
2207
- children: columns.map(function (column) {
2208
- return /*#__PURE__*/React.createElement(Item, {
2209
- column: column,
2210
- filters: filters,
2211
- autoFocus: column.key === isOpen,
2212
- key: column.key,
2213
- onChange: handleChange
2214
- });
2215
- })
2216
- }, group);
2217
- })
2218
- }), ramda.isEmpty([].concat(_toConsumableArray(groupedColumns), _toConsumableArray(ungroupedColumns))) && /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
2219
- style: "body2",
2220
- children: t("neetoFilters.messages.noResourcesFound", {
2221
- resources: t("neetoFilters.common.columns")
2222
- })
2223
- }), customFilters, /*#__PURE__*/jsxRuntime.jsx(AddFilter, {
2224
- filters: filters,
2225
- handleChange: handleChange,
2226
- columns: ungroupedColumns.filter(function (_ref5) {
2227
- var key = _ref5.key;
2228
- return !neetoCist.existsBy({
2229
- key: key
2230
- }, filters);
2231
- }),
2232
- handleClearFilter: function handleClearFilter(_ref6) {
2233
- var key = _ref6.key;
2234
- return handleChange(neetoCist.removeBy({
2235
- key: key
2236
- }, filters));
2237
- }
2238
- })]
2239
- })]
2240
- }), /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Footer, {
2241
- children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
2242
- isSubmitting: isSubmitting,
2243
- cancelButtonProps: {
2244
- onClick: onClose
2245
- },
2246
- submitButtonProps: {
2247
- disabled: isSubmitting || ramda.isEmpty(filters)
2248
- }
2249
- })
2250
- })]
2251
- });
2252
- }
2253
- })]
2254
- });
2255
- };
2256
-
2257
- var QUERY_KEYS = {
2258
- SEGMENTS_LIST: "segments-list"
2259
- };
2260
- var SEGMENTS_STALE_TIME = 900000; // 15 mins
2261
-
2262
- var DEFAULT_SEGMENTS_CACHE = {
2263
- segments: []
2264
- };
2265
- var SEGMENT_ACTIONS$1 = {
2266
- EDIT: "edit",
2267
- CREATE: "create"
2268
- };
2269
-
2270
- var SHORTCUTS = {
2271
- closePane: {
2272
- sequence: "escape",
2273
- description: i18next.t("neetoFilters.shortcuts.closePane")
2274
- },
2275
- deleteBlock: {
2276
- sequence: "backspace",
2277
- description: i18next.t("neetoFilters.shortcuts.deleteBlock")
2278
- },
2279
- openFilterPane: {
2280
- sequence: "enter",
2281
- description: i18next.t("neetoFilters.shortcuts.openFilterPane")
2282
- }
2283
- };
2284
-
2285
- var buildCustomDateValue = function buildCustomDateValue(value) {
2286
- var isBeforeOrAfter = Math.abs(dayjs__default["default"](value[1]).diff(dayjs__default["default"](value[0]), "year")) >= 90;
2287
- if (isBeforeOrAfter) {
2288
- var currentMoment = dayjs__default["default"]();
2289
- var diffWithStart = Math.abs(currentMoment.diff(dayjs__default["default"](value[0]), "year"));
2290
- var diffWithEnd = Math.abs(currentMoment.diff(dayjs__default["default"](value[1]), "year"));
2291
- return diffWithStart < diffWithEnd ? "after-".concat(utils.dateFormat.date(dayjs__default["default"](value[0]).subtract(1, "day"))) : "before-".concat(utils.dateFormat.date(dayjs__default["default"](value[1]).add(1, "day")));
2292
- }
2293
- return value.map(utils.dateFormat.date).join(" - ");
2294
- };
2295
- var buildFilterValue = function buildFilterValue(filter) {
2296
- var _findBy2;
2297
- var _filter$defaultType = filter.defaultType,
2298
- defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
2299
- value = filter.value,
2300
- rule = filter.rule,
2301
- _filter$values = filter.values,
2302
- initialValues = _filter$values === void 0 ? [] : _filter$values;
2303
- var values = initialValues.map(ramda.modify("value", function (value) {
2304
- return value.toString();
2305
- }));
2306
- if (isDate(defaultType) && isCustomDateRange(value)) {
2307
- return buildCustomDateValue(value);
2308
- } else if (isTime(defaultType) && isCustomTimeRange(value)) {
2309
- return value.map(utils.dateFormat.time).join(" - ");
2310
- } else if (isDate(defaultType) || isTime(defaultType)) {
2311
- return neetoCist.humanize(value);
2312
- } else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
2313
- return value.map(function (value) {
2314
- var _findBy;
2315
- return ((_findBy = neetoCist.findBy({
2316
- value: value
2317
- }, values)) === null || _findBy === void 0 ? void 0 : _findBy.label) || value;
2318
- }).join(", ");
2319
- } else if (isSingleDate(defaultType)) {
2320
- return rule === "between" ? value.map(utils.dateFormat.date).join(" - ") : utils.dateFormat.date(value);
2321
- } else if (isSingleTime(defaultType)) {
2322
- return rule === "between" ? value.map(utils.dateFormat.time).join(" - ") : utils.dateFormat.time(value);
2323
- } else if (isBoolean(defaultType)) {
2324
- return getLabelFromBool({
2325
- value: value,
2326
- values: values
2327
- });
2328
- }
2329
- return ((_findBy2 = neetoCist.findBy({
2330
- value: value
2331
- }, values)) === null || _findBy2 === void 0 ? void 0 : _findBy2.label) || value;
2332
- };
2333
- var buildRuleValue = function buildRuleValue(_ref) {
2334
- var rule = _ref.rule,
2335
- defaultType = _ref.defaultType;
2336
- if (isText(defaultType)) {
2337
- return neetoCist.findBy({
2338
- value: rule
2339
- }, TEXT_RULES).label;
2340
- } else if (isDigit(defaultType)) {
2341
- return neetoCist.findBy({
2342
- value: rule
2343
- }, NUMBER_RULES).label;
2344
- } else if (isSingleDate(defaultType)) {
2345
- return neetoCist.findBy({
2346
- value: rule
2347
- }, SINGLE_DATE_OPTIONS).label;
2348
- } else if (isSingleTime(defaultType)) {
2349
- return neetoCist.findBy({
2350
- value: rule
2351
- }, SINGLE_TIME_OPTIONS).label;
2352
- } else if (isMulti(defaultType) || isSingle(defaultType) || isTreeSelect(defaultType)) {
2353
- return isRuleEmpty(rule) ? i18next.t("neetoFilters.rules.isEmpty") : "";
2354
- }
2355
- return "";
2356
- };
2357
- var hasOnlyKeywordFilter = function hasOnlyKeywordFilter(filters) {
2358
- return filters.length === 1 && filters[0].key === SEARCH_TERM_KEY;
2359
- };
2360
- var deepCompare = function deepCompare(segments, filters) {
2361
- var comparisonHelper = function comparisonHelper(filters) {
2362
- return ramda.sortBy(ramda.prop("key"), neetoCist.removeBy({
2363
- key: SEARCH_TERM_KEY
2364
- }, ramda.project(["key", "rule", "value", "label"], filters)));
2365
- };
2366
- return ramda.reject(function (filters) {
2367
- var segment = neetoCist.findBy({
2368
- key: filters.key
2369
- }, segments);
2370
- return segment && segment.value === filters.value;
2371
- }, comparisonHelper(filters));
2372
- };
2373
-
2374
- var Block = function Block(_ref) {
2375
- var filter = _ref.filter,
2376
- handleDelete = _ref.handleDelete,
2377
- setIsPaneOpen = _ref.setIsPaneOpen;
2378
- var key = filter.key,
2379
- _filter$defaultType = filter.defaultType,
2380
- defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
2381
- label = filter.label,
2382
- rule = filter.rule,
2383
- defaultValue = filter.defaultValue;
2384
- var filterValue = buildFilterValue(filter);
2385
- var ruleContent = buildRuleValue({
2386
- rule: rule,
2387
- defaultType: defaultType
2388
- });
2389
- var blockLength = label.length + ruleContent.length + filterValue.length;
2390
- var toolTipDisabled = blockLength <= 50;
2391
- var blockContent = !toolTipDisabled ? "".concat(filterValue.slice(0, 50 - blockLength), "...") : filterValue;
2392
- var deleteBlockHotKeyRef = useHotkeys__default["default"](SHORTCUTS.deleteBlock.sequence, function () {
2393
- return handleDelete(key);
2394
- }, {
2395
- mode: "scoped"
2396
- });
2397
- var openFilterPaneHotKeyRef = useHotkeys__default["default"](SHORTCUTS.openFilterPane.sequence, function () {
2398
- return setIsPaneOpen(key);
2399
- }, {
2400
- mode: "scoped"
2401
- });
2402
- return /*#__PURE__*/jsxRuntime.jsx(Tooltip__default["default"], {
2403
- content: filterValue,
2404
- disabled: toolTipDisabled,
2405
- position: "bottom",
2406
- theme: "light",
2407
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
2408
- className: "neeto-filters-bar__block",
2409
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-block"),
2410
- tabIndex: 0,
2411
- ref: function ref(node) {
2412
- deleteBlockHotKeyRef.current = node;
2413
- openFilterPaneHotKeyRef.current = node;
2414
- },
2415
- onClick: function onClick() {
2416
- return setIsPaneOpen(key);
2417
- },
2418
- children: [/*#__PURE__*/jsxRuntime.jsxs(Typography__default["default"], {
2419
- style: "body2",
2420
- children: [label, ":"]
2421
- }), /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
2422
- className: "neeto-ui-text-gray-600",
2423
- style: "body2",
2424
- children: ruleContent
2425
- }), !isRuleEmpty(rule) && /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
2426
- style: "body2",
2427
- children: blockContent
2428
- }), !defaultValue && /*#__PURE__*/jsxRuntime.jsx("div", {
2429
- className: "neeto-filters-bar__block-close",
2430
- children: /*#__PURE__*/jsxRuntime.jsx(Close__default["default"], {
2431
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-block-close-btn"),
2432
- size: 16,
2433
- strokeWidth: 2,
2434
- onClick: function onClick(event) {
2435
- event.stopPropagation();
2436
- handleDelete(key);
2437
- }
2438
- })
2439
- })]
2440
- })
2441
- });
2442
- };
2443
-
2444
- var ChildBlock = function ChildBlock(_ref) {
2445
- var childKey = _ref.childKey,
2446
- setIsPaneOpen = _ref.setIsPaneOpen,
2447
- handleDelete = _ref.handleDelete;
2448
- var deleteBlockHotKeyRef = useHotkeys__default["default"](SHORTCUTS.deleteBlock.sequence, function () {
2449
- return handleDelete(childKey);
2450
- }, {
2451
- mode: "scoped"
2452
- });
2453
- var openFilterPaneHotKeyRef = useHotkeys__default["default"](SHORTCUTS.openFilterPane.sequence, function () {
2454
- return setIsPaneOpen(childKey);
2455
- }, {
2456
- mode: "scoped"
2457
- });
2458
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
2459
- className: "neeto-filters-bar__block",
2460
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(childKey), "-block"),
2461
- tabIndex: 0,
2462
- ref: function ref(node) {
2463
- deleteBlockHotKeyRef.current = node;
2464
- openFilterPaneHotKeyRef.current = node;
2465
- },
2466
- onClick: function onClick() {
2467
- return setIsPaneOpen(childKey);
2468
- },
2469
- children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
2470
- style: "body2",
2471
- weight: "medium",
2472
- children: childKey
2473
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
2474
- className: "neeto-filters-bar__block-close",
2475
- children: /*#__PURE__*/jsxRuntime.jsx(Close__default["default"], {
2476
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(childKey), "-block-close-btn"),
2477
- size: 16,
2478
- strokeWidth: 2,
2479
- onClick: function onClick(event) {
2480
- event.stopPropagation();
2481
- handleDelete(childKey);
2482
- }
2483
- })
2484
- })]
2485
- });
2486
- };
2487
-
2488
- var FilterBar = function FilterBar(_ref) {
2489
- var entity = _ref.entity,
2490
- filters = _ref.filters,
2491
- setIsSavePaneOpen = _ref.setIsSavePaneOpen,
2492
- setIsPaneOpen = _ref.setIsPaneOpen,
2493
- childrenKeys = _ref.childrenKeys,
2494
- nonHiddenFilters = _ref.nonHiddenFilters,
2495
- childrenFiltersApplied = _ref.childrenFiltersApplied,
2496
- keywordFilter = _ref.keywordFilter,
2497
- handleApplyFilters = _ref.handleApplyFilters;
2498
- var _useTranslation = reactI18next.useTranslation(),
2499
- t = _useTranslation.t;
2500
- var history = reactRouterDom.useHistory();
2501
- var searchParams = reactUtils.useQueryParams({
2502
- toCamelCase: false
2503
- });
2504
- var handleDelete = function handleDelete(key) {
2505
- if (key === SEARCH_TERM_KEY) {
2506
- var params = ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams());
2507
- var pathname = window.location.pathname;
2508
- history.push(utils.buildUrl(pathname, params));
2509
- return;
2510
- }
2511
- if (childrenKeys.includes(key)) {
2512
- var _params = ramda.omit([key], getSnakeCasedQueryParams());
2513
- var _pathname = window.location.pathname;
2514
- history.push(utils.buildUrl(_pathname, _params));
2515
- }
2516
- var newFilters = neetoCist.removeBy({
2517
- key: key
2518
- }, filters);
2519
- handleApplyFilters(newFilters);
2520
- };
2521
- var handleClearAll = function handleClearAll() {
2522
- var params = isKeywordFilterPresent(keywordFilter) ? ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
2523
- var pathname = window.location.pathname;
2524
- history.push(utils.buildUrl(pathname, params));
2525
- handleApplyFilters([], true);
2526
- };
2527
- var hideClearButton = nonHiddenFilters.every(function (_ref2) {
2528
- var defaultValue = _ref2.defaultValue,
2529
- isClearable = _ref2.isClearable;
2530
- return defaultValue && !isClearable;
2531
- }) && !childrenFiltersApplied;
2532
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2533
- children: [nonHiddenFilters.map(function (filter) {
2534
- var _filter$suffixCompone;
2535
- return /*#__PURE__*/jsxRuntime.jsxs(React__default["default"].Fragment, {
2536
- children: [/*#__PURE__*/jsxRuntime.jsx(Block, {
2537
- filter: filter,
2538
- handleDelete: handleDelete,
2539
- setIsPaneOpen: setIsPaneOpen
2540
- }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/jsxRuntime.jsx("div", {
2541
- className: "neeto-filters-bar--separator"
2542
- })]
2543
- }, filter.key);
2544
- }), childrenKeys.filter(function (childKey) {
2545
- return ramda.has(childKey, searchParams);
2546
- }).map(function (childKey) {
2547
- return /*#__PURE__*/jsxRuntime.jsxs(React__default["default"].Fragment, {
2548
- children: [/*#__PURE__*/jsxRuntime.jsx(ChildBlock, {
2549
- childKey: childKey,
2550
- handleDelete: handleDelete,
2551
- setIsPaneOpen: setIsPaneOpen
2552
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
2553
- className: "neeto-filters-bar--separator"
2554
- })]
2555
- }, childKey);
2556
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
2557
- className: "flex items-center gap-x-2",
2558
- children: [neetoCist.isPresent(entity) && !hasOnlyKeywordFilter(filters) && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
2559
- "data-cy": "save-segment-button",
2560
- label: t("neetoFilters.segments.saveAsNewSegment"),
2561
- style: "secondary",
2562
- onClick: function onClick() {
2563
- setIsPaneOpen(false);
2564
- setIsSavePaneOpen({
2565
- action: SEGMENT_ACTIONS$1.CREATE
2566
- });
2567
- }
2568
- }), !hideClearButton && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
2569
- "data-cy": "neeto-filters-bar-clear-btn",
2570
- label: t("neetoFilters.common.clearFilters"),
2571
- style: "text",
2572
- onClick: handleClearAll
2573
- })]
2574
- })]
2575
- });
2576
- };
2577
-
2578
- var fetch = function fetch(params) {
2579
- return axios__default["default"].get(SEGMENTS_BASE_URL, {
2580
- params: params
2581
- });
2582
- };
2583
- var show = function show(id) {
2584
- return axios__default["default"].get("".concat(SEGMENTS_BASE_URL, "/").concat(id), {
2585
- transformResponseCase: false
2586
- });
2587
- };
2588
- var create = function create(payload) {
2589
- return axios__default["default"].post(SEGMENTS_BASE_URL, {
2590
- segment: payload
2591
- }, {
2592
- showToastr: false
2593
- });
2594
- };
2595
- var update = function update(_ref) {
2596
- var id = _ref.id,
2597
- payload = _ref.payload,
2598
- _ref$showToastr = _ref.showToastr,
2599
- showToastr = _ref$showToastr === void 0 ? true : _ref$showToastr;
2600
- return axios__default["default"].put("".concat(SEGMENTS_BASE_URL, "/").concat(id), payload, {
2601
- showToastr: showToastr
2602
- });
2603
- };
2604
- var destroy = function destroy(id) {
2605
- return axios__default["default"]["delete"]("".concat(SEGMENTS_BASE_URL, "/").concat(id));
2606
- };
2607
- var segmentsApi = {
2608
- fetch: fetch,
2609
- show: show,
2610
- create: create,
2611
- update: update,
2612
- destroy: destroy
2613
- };
2614
-
2615
- 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; }
2616
- 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), !0).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; }
2617
- var SEGMENTS_LIST = QUERY_KEYS.SEGMENTS_LIST;
2618
- var useFetchSegments = function useFetchSegments(_ref) {
2619
- var entity = _ref.entity,
2620
- _ref$searchTerm = _ref.searchTerm,
2621
- searchTerm = _ref$searchTerm === void 0 ? "" : _ref$searchTerm;
2622
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2623
- return reactQuery.useQuery(_objectSpread$4({
2624
- queryKey: [SEGMENTS_LIST, entity, searchTerm],
2625
- queryFn: function queryFn() {
2626
- return segmentsApi.fetch({
2627
- entity: entity,
2628
- searchTerm: searchTerm
2629
- });
2630
- },
2631
- select: ramda.prop("segments"),
2632
- staleTime: SEGMENTS_STALE_TIME
2633
- }, options));
2634
- };
2635
- var useCreateSegment = function useCreateSegment(options) {
2636
- return reactUtils.useMutationWithInvalidation(segmentsApi.create, _objectSpread$4({
2637
- keysToInvalidate: [[SEGMENTS_LIST]]
2638
- }, options));
2639
- };
2640
- var useUpdateSegment = function useUpdateSegment(options) {
2641
- return reactUtils.useMutationWithInvalidation(segmentsApi.update, _objectSpread$4({
2642
- keysToInvalidate: [[SEGMENTS_LIST]]
2643
- }, options));
2644
- };
2645
- var useDestroySegment = function useDestroySegment(options) {
2646
- return reactUtils.useMutationWithInvalidation(segmentsApi.destroy, _objectSpread$4({
2647
- keysToInvalidate: [[SEGMENTS_LIST]]
2648
- }, options));
2649
- };
2650
-
2651
- 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; }
2652
- 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), !0).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; }
2653
- var useSegment = function useSegment(_ref) {
2654
- var entity = _ref.entity,
2655
- keyword = _ref.keyword,
2656
- columns = _ref.columns,
2657
- childrenKeys = _ref.childrenKeys;
2658
- var history = reactRouterDom.useHistory();
2659
- var _useTranslation = reactI18next.useTranslation(),
2660
- t = _useTranslation.t;
2661
- var initialRenderRef = React.useRef(true);
2662
- var _useQueryParams = reactUtils.useQueryParams(),
2663
- segmentId = _useQueryParams.segmentId;
2664
- var _useState = React.useState({
2665
- action: undefined
2666
- }),
2667
- _useState2 = _slicedToArray(_useState, 2),
2668
- isSavePaneOpen = _useState2[0],
2669
- setIsSavePaneOpen = _useState2[1];
2670
- var _useCreateSegment = useCreateSegment(),
2671
- createSegment = _useCreateSegment.mutate,
2672
- isCreating = _useCreateSegment.isPending;
2673
- var _useUpdateSegment = useUpdateSegment(),
2674
- updateSegment = _useUpdateSegment.mutate,
2675
- isUpdating = _useUpdateSegment.isPending;
2676
- var isSubmitting = isCreating || isUpdating;
2677
- var searchParams = reactUtils.useQueryParams({
2678
- toCamelCase: false
2679
- });
2680
- var keywordValue = searchParams[SEARCH_TERM_KEY] || "";
2681
- var isEdit = isSavePaneOpen.action === SEGMENT_ACTIONS$1.EDIT;
2682
- var keywordFilter = _objectSpread$3(_objectSpread$3({
2683
- type: "text",
2684
- rule: "contains",
2685
- label: t("neetoFilters.common.searchTerm")
2686
- }, keyword), {}, {
2687
- key: SEARCH_TERM_KEY,
2688
- value: keywordValue
2689
- });
2690
- var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
2691
- var nonHiddenFilters = neetoCist.removeBy({
2692
- hidden: true
2693
- }, filters);
2694
- var handleApplyFilters = function handleApplyFilters(newFilters, isClearAll) {
2695
- var params = buildUrlFromFilters(_objectSpread$3({
2696
- columns: columns,
2697
- filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
2698
- }, isClearAll && {
2699
- isClearAll: true,
2700
- childrenKeys: childrenKeys
2701
- }));
2702
- history.push({
2703
- search: params
2704
- });
2705
- };
2706
- var childrenFiltersApplied = childrenKeys.some(function (key) {
2707
- return ramda.has(key, searchParams);
2708
- });
2709
- React.useEffect(function () {
2710
- if (initialRenderRef.current) {
2711
- initialRenderRef.current = false;
2712
- return neetoCist.noop;
2713
- }
2714
- var handler = setTimeout(function () {
2715
- handleApplyFilters(filters);
2716
- }, 500);
2717
- return function () {
2718
- return clearTimeout(handler);
2719
- };
2720
- }, [keywordValue]);
2721
- var handleCreateSuccess = function handleCreateSuccess(_ref2) {
2722
- var _filters$;
2723
- var _ref2$segment = _ref2.segment,
2724
- id = _ref2$segment.id,
2725
- filters = _ref2$segment.filters;
2726
- history.push({
2727
- search: buildUrlFromSegment({
2728
- columns: columns,
2729
- filters: (_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions,
2730
- id: id
2731
- })
2732
- });
2733
- setIsSavePaneOpen({
2734
- action: undefined
2735
- });
2736
- utils.showThumbsUpToastr();
2737
- };
2738
- var handleCreate = function handleCreate(_ref3, _ref4) {
2739
- var name = _ref3.name;
2740
- var setFieldError = _ref4.setFieldError;
2741
- var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
2742
- createSegment({
2743
- name: name,
2744
- entity: entity,
2745
- filters: filtersPayload
2746
- }, {
2747
- onSuccess: handleCreateSuccess,
2748
- onError: function onError(error) {
2749
- return setFieldError("name", error.response.data.error);
2750
- }
2751
- });
2752
- };
2753
- var handleUpdate = function handleUpdate(_ref5, _ref6) {
2754
- var name = _ref5.name;
2755
- var setFieldError = _ref6.setFieldError;
2756
- var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
2757
- updateSegment({
2758
- id: segmentId,
2759
- payload: {
2760
- name: name,
2761
- filters: filtersPayload
2762
- }
2763
- }, {
2764
- onSuccess: function onSuccess() {
2765
- setIsSavePaneOpen({
2766
- action: undefined
2767
- });
2768
- utils.showThumbsUpToastr();
2769
- },
2770
- onError: function onError(error) {
2771
- return setFieldError("name", error.response.data.error);
2772
- }
2773
- });
2774
- };
2775
- return {
2776
- isEdit: isEdit,
2777
- filters: filters,
2778
- keywordFilter: keywordFilter,
2779
- isSubmitting: isSubmitting,
2780
- nonHiddenFilters: nonHiddenFilters,
2781
- isSavePaneOpen: isSavePaneOpen,
2782
- setIsSavePaneOpen: setIsSavePaneOpen,
2783
- handleApplyFilters: handleApplyFilters,
2784
- childrenFiltersApplied: childrenFiltersApplied,
2785
- handleSubmit: isEdit ? handleUpdate : handleCreate
2786
- };
2787
- };
2788
-
2789
- var Menu = Dropdown__default["default"].Menu,
2790
- MenuItem = Dropdown__default["default"].MenuItem;
2791
- var SegmentBar = function SegmentBar(_ref) {
2792
- var entity = _ref.entity,
2793
- filters = _ref.filters,
2794
- setIsSavePaneOpen = _ref.setIsSavePaneOpen,
2795
- setIsPaneOpen = _ref.setIsPaneOpen,
2796
- handleApplyFilters = _ref.handleApplyFilters,
2797
- childrenKeys = _ref.childrenKeys;
2798
- var _useTranslation = reactI18next.useTranslation(),
2799
- t = _useTranslation.t;
2800
- var history = reactRouterDom.useHistory();
2801
- var _useQueryParams = reactUtils.useQueryParams(),
2802
- segmentId = _useQueryParams.segmentId;
2803
- var queryClient = reactQuery.useQueryClient();
2804
- var cachedSegments = queryClient.getQueryData([QUERY_KEYS.SEGMENTS_LIST, entity, ""]) || DEFAULT_SEGMENTS_CACHE;
2805
- var segment = neetoCist.findById(segmentId, cachedSegments.segments);
2806
- if (neetoCist.isNotPresent(segment)) return null;
2807
- var handleDelete = function handleDelete(key) {
2808
- if (key === SEARCH_TERM_KEY) {
2809
- var params = ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams());
2810
- var pathname = window.location.pathname;
2811
- history.push(utils.buildUrl(pathname, params));
2812
- return;
2813
- }
2814
- if (childrenKeys.includes(key)) {
2815
- var _params = ramda.omit([key], getSnakeCasedQueryParams());
2816
- var _pathname = window.location.pathname;
2817
- history.push(utils.buildUrl(_pathname, _params));
2818
- }
2819
- var newFilters = neetoCist.removeBy({
2820
- key: key
2821
- }, filters);
2822
- handleApplyFilters(newFilters);
2823
- };
2824
- var changedFilters = deepCompare(segment.filters[0].conditions, filters);
2825
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2826
- children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
2827
- className: "neeto-ui-text-gray-600 mr-4 px-2",
2828
- "data-cy": "neeto-filters-segment-name",
2829
- style: "h4",
2830
- children: segment.name
2831
- }), neetoCist.isNotEmpty(changedFilters) && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2832
- children: [/*#__PURE__*/jsxRuntime.jsx(Dropdown__default["default"], {
2833
- buttonProps: {
2834
- className: "mr-2"
2835
- },
2836
- buttonStyle: "secondary",
2837
- label: t("neetoFilters.segments.updateSegment"),
2838
- children: /*#__PURE__*/jsxRuntime.jsxs(Menu, {
2839
- children: [/*#__PURE__*/jsxRuntime.jsx(MenuItem.Button, {
2840
- onClick: function onClick() {
2841
- return setIsSavePaneOpen({
2842
- action: SEGMENT_ACTIONS$1.EDIT
2843
- });
2844
- },
2845
- children: t("neetoFilters.segments.updateSegment")
2846
- }), /*#__PURE__*/jsxRuntime.jsx(MenuItem.Button, {
2847
- onClick: function onClick() {
2848
- setIsPaneOpen(false);
2849
- setIsSavePaneOpen({
2850
- action: SEGMENT_ACTIONS$1.CREATE
2851
- });
2852
- },
2853
- children: t("neetoFilters.segments.saveAsNewSegment")
2854
- })]
2855
- })
2856
- }), changedFilters.map(function (filter) {
2857
- var _filter$suffixCompone;
2858
- return /*#__PURE__*/jsxRuntime.jsxs(React__default["default"].Fragment, {
2859
- children: [/*#__PURE__*/jsxRuntime.jsx(Block, {
2860
- filter: filter,
2861
- handleDelete: handleDelete,
2862
- setIsPaneOpen: setIsPaneOpen
2863
- }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/jsxRuntime.jsx("div", {
2864
- className: "neeto-filters-bar--separator"
2865
- })]
2866
- }, filter.key);
2867
- })]
2868
- })]
2869
- });
2870
- };
2871
-
2872
- var Bar = function Bar(_ref) {
2873
- var entity = _ref.entity,
2874
- className = _ref.className,
2875
- _ref$columns = _ref.columns,
2876
- columns = _ref$columns === void 0 ? [] : _ref$columns,
2877
- _ref$keyword = _ref.keyword,
2878
- keyword = _ref$keyword === void 0 ? {
2879
- node: "",
2880
- value: "",
2881
- setValue: neetoCist.noop
2882
- } : _ref$keyword,
2883
- _ref$setIsPaneOpen = _ref.setIsPaneOpen,
2884
- setIsPaneOpen = _ref$setIsPaneOpen === void 0 ? ramda.identity : _ref$setIsPaneOpen,
2885
- _ref$childrenKeys = _ref.childrenKeys,
2886
- childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
2887
- _ref$defaultSegmentNa = _ref.defaultSegmentName,
2888
- defaultSegmentName = _ref$defaultSegmentNa === void 0 ? i18next.t("neetoFilters.common.allResults") : _ref$defaultSegmentNa,
2889
- customFilters = _ref.customFilters;
2890
- var queryClient = reactQuery.useQueryClient();
2891
- var _useQueryParams = reactUtils.useQueryParams(),
2892
- segmentId = _useQueryParams.segmentId;
2893
- var segmentFormInitialRef = React.useRef(null);
2894
- var _useSegment = useSegment({
2895
- entity: entity,
2896
- keyword: keyword,
2897
- columns: columns,
2898
- childrenKeys: childrenKeys
2899
- }),
2900
- isEdit = _useSegment.isEdit,
2901
- filters = _useSegment.filters,
2902
- handleSubmit = _useSegment.handleSubmit,
2903
- isSubmitting = _useSegment.isSubmitting,
2904
- keywordFilter = _useSegment.keywordFilter,
2905
- isSavePaneOpen = _useSegment.isSavePaneOpen,
2906
- nonHiddenFilters = _useSegment.nonHiddenFilters,
2907
- setIsSavePaneOpen = _useSegment.setIsSavePaneOpen,
2908
- handleApplyFilters = _useSegment.handleApplyFilters,
2909
- childrenFiltersApplied = _useSegment.childrenFiltersApplied;
2910
- var BarComponent = segmentId ? SegmentBar : FilterBar;
2911
- var cachedSegments = queryClient.getQueryData([QUERY_KEYS.SEGMENTS_LIST, entity, ""]) || DEFAULT_SEGMENTS_CACHE;
2912
- var segment = neetoCist.findById(segmentId, cachedSegments.segments);
2913
- if (ramda.isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
2914
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
2915
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
2916
- className: classnames__default["default"]("neeto-filters-bar", _defineProperty({}, className, className)),
2917
- children: /*#__PURE__*/jsxRuntime.jsx(BarComponent, {
2918
- childrenFiltersApplied: childrenFiltersApplied,
2919
- childrenKeys: childrenKeys,
2920
- entity: entity,
2921
- filters: filters,
2922
- handleApplyFilters: handleApplyFilters,
2923
- keywordFilter: keywordFilter,
2924
- nonHiddenFilters: nonHiddenFilters,
2925
- setIsPaneOpen: setIsPaneOpen,
2926
- setIsSavePaneOpen: setIsSavePaneOpen
2927
- })
2928
- }), /*#__PURE__*/jsxRuntime.jsx(SegmentForm, {
2929
- childrenKeys: childrenKeys,
2930
- columns: columns,
2931
- customFilters: customFilters,
2932
- defaultSegmentName: defaultSegmentName,
2933
- filters: filters,
2934
- handleSubmit: handleSubmit,
2935
- isEdit: isEdit,
2936
- isSubmitting: isSubmitting,
2937
- keywordFilter: keywordFilter,
2938
- segmentFormInitialRef: segmentFormInitialRef,
2939
- isOpen: neetoCist.isPresent(isSavePaneOpen.action),
2940
- initialValues: isEdit ? ramda.assoc("filters", [{
2941
- conditions: filters
2942
- }], segment) : {
2943
- name: "",
2944
- filters: [{
2945
- conditions: filters
2946
- }]
2947
- },
2948
- onClose: function onClose() {
2949
- return setIsSavePaneOpen({
2950
- action: undefined
2951
- });
2952
- }
2953
- })]
2954
- });
2955
- };
2956
-
2957
- function _objectWithoutPropertiesLoose(source, excluded) {
2958
- if (source == null) return {};
2959
- var target = {};
2960
- var sourceKeys = Object.keys(source);
2961
- var key, i;
2962
- for (i = 0; i < sourceKeys.length; i++) {
2963
- key = sourceKeys[i];
2964
- if (excluded.indexOf(key) >= 0) continue;
2965
- target[key] = source[key];
2966
- }
2967
- return target;
2968
- }
2969
-
2970
- function _objectWithoutProperties(source, excluded) {
2971
- if (source == null) return {};
2972
- var target = _objectWithoutPropertiesLoose(source, excluded);
2973
- var key, i;
2974
- if (Object.getOwnPropertySymbols) {
2975
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
2976
- for (i = 0; i < sourceSymbolKeys.length; i++) {
2977
- key = sourceSymbolKeys[i];
2978
- if (excluded.indexOf(key) >= 0) continue;
2979
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
2980
- target[key] = source[key];
2981
- }
2982
- }
2983
- return target;
2984
- }
2985
-
2986
- var useFilters = function useFilters(_ref) {
2987
- var onFiltersChange = _ref.onFiltersChange,
2988
- columns = _ref.columns,
2989
- keywordFilter = _ref.keywordFilter,
2990
- onSelectorsChange = _ref.onSelectorsChange;
2991
- var _useTransition = React.useTransition(),
2992
- _useTransition2 = _slicedToArray(_useTransition, 2);
2993
- _useTransition2[0];
2994
- var startTransition = _useTransition2[1];
2995
- var initialRender = React.useRef(true);
2996
- var prevFilters = React.useRef([]);
2997
- var location = reactRouterDom.useLocation();
2998
- var filters = buildFiltersFromSearchParams(columns, false);
2999
- var history = reactRouterDom.useHistory();
3000
- var defaultValuesOfColumns = JSON.stringify(ramda.pluck("defaultValue", columns));
3001
- var handlePrecenseOfDefaultFilters = function handlePrecenseOfDefaultFilters(defaultFilters) {
3002
- var params = buildUrlFromFilters({
3003
- columns: columns,
3004
- filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(defaultFilters), [keywordFilter]) : defaultFilters
3005
- });
3006
- history.replace({
3007
- search: params
3008
- });
3009
- };
3010
- var handleFiltersChange = function handleFiltersChange(filtersPayload) {
3011
- startTransition(function () {
3012
- onFiltersChange(buildFiltersPayload(filtersPayload.filter(function (filter) {
3013
- return !ramda.isNil(filter.node);
3014
- })));
3015
- });
3016
- };
3017
-
3018
- //This function sends the updated filters to host via callbacks.
3019
- var sendUpdatedFilters = function sendUpdatedFilters() {
3020
- if (compareFilters(ramda.append(keywordFilter, filters), prevFilters.current)) {
3021
- return;
3022
- }
3023
- var newFilters = buildFiltersFromSearchParams(columns);
3024
- var filtersPayload = isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? ramda.append(keywordFilter, newFilters) : newFilters;
3025
- handleFiltersChange(filtersPayload);
3026
- onSelectorsChange(buildSelectorsFromURL(columns));
3027
- };
3028
- var handleChangesInURL = function handleChangesInURL() {
3029
- var defaultFilters = buildDefaultFilters(columns, filters);
3030
- var searchParams = getSnakeCasedQueryParams();
3031
- var keys = ramda.pluck("key", ramda.append(keywordFilter, columns));
3032
- if (keys.every(function (key) {
3033
- return ramda.isNil(searchParams[key]);
3034
- }) && !ramda.isEmpty(defaultFilters)) {
3035
- history.replace({
3036
- search: buildUrlFromFilters({
3037
- columns: columns,
3038
- filters: ramda.concat(defaultFilters, filters)
3039
- })
3040
- });
3041
- filters = buildFiltersFromSearchParams(columns, false);
3042
- }
3043
- };
3044
- React.useEffect(function () {
3045
- if (initialRender.current) {
3046
- initialRender.current = false;
3047
- var keywordValue = getSearchTermFromUrl();
3048
- var defaultFilters = buildDefaultFilters(columns, filters);
3049
- neetoCist.isNotEmpty(defaultFilters) && handlePrecenseOfDefaultFilters(defaultFilters);
3050
- prevFilters.current = ramda.append(ramda.mergeRight(keywordFilter, {
3051
- value: keywordValue
3052
- }), filters);
3053
- } else {
3054
- handleChangesInURL();
3055
- sendUpdatedFilters();
3056
- prevFilters.current = ramda.append(keywordFilter, filters);
3057
- }
3058
- }, [location.search, defaultValuesOfColumns]);
3059
- return filters;
3060
- };
3061
-
3062
- var _excluded = ["isOpen", "onClose", "columns", "onChange", "isSearchable", "keyword", "onSelectorsChange", "childrenKeys", "children", "className"];
3063
- 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; }
3064
- 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), !0).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; }
3065
- var Pane = function Pane(_ref) {
3066
- var isOpen = _ref.isOpen,
3067
- onClose = _ref.onClose,
3068
- columns = _ref.columns,
3069
- onChange = _ref.onChange,
3070
- isSearchable = _ref.isSearchable,
3071
- keyword = _ref.keyword,
3072
- onSelectorsChange = _ref.onSelectorsChange,
3073
- _ref$childrenKeys = _ref.childrenKeys,
3074
- childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
3075
- children = _ref.children,
3076
- className = _ref.className,
3077
- otherProps = _objectWithoutProperties(_ref, _excluded);
3078
- var searchParams = reactUtils.useQueryParams({
3079
- toCamelCase: false
3080
- });
3081
- var _useState = React.useState(""),
3082
- _useState2 = _slicedToArray(_useState, 2),
3083
- searchTerm = _useState2[0],
3084
- setSearchTerm = _useState2[1];
3085
- var history = reactRouterDom.useHistory();
3086
- var _useTranslation = reactI18next.useTranslation(),
3087
- t = _useTranslation.t;
3088
- columns = React.useMemo(function () {
3089
- return getColumnsWithStandardizedType(columns);
3090
- }, [columns]);
3091
- var _buildFilteredColumns = buildFilteredColumns({
3092
- searchTerm: searchTerm,
3093
- columns: columns
3094
- }),
3095
- _buildFilteredColumns2 = _buildFilteredColumns.groupedColumns,
3096
- groupedColumns = _buildFilteredColumns2 === void 0 ? [] : _buildFilteredColumns2,
3097
- _buildFilteredColumns3 = _buildFilteredColumns.ungroupedColumns,
3098
- ungroupedColumns = _buildFilteredColumns3 === void 0 ? [] : _buildFilteredColumns3;
3099
- var keywordFilter = _objectSpread$2(_objectSpread$2({
3100
- type: "text",
3101
- rule: "contains",
3102
- label: t("neetoFilters.common.searchTerm")
3103
- }, keyword), {}, {
3104
- key: SEARCH_TERM_KEY,
3105
- value: searchParams[SEARCH_TERM_KEY] || ""
3106
- });
3107
- var filters = useFilters({
3108
- onFiltersChange: onChange,
3109
- columns: columns,
3110
- keywordFilter: keywordFilter,
3111
- onSelectorsChange: onSelectorsChange
3112
- });
3113
- var handleChange = function handleChange(newFilters) {
3114
- var isClearAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
3115
- var params = buildUrlFromFilters(_objectSpread$2({
3116
- columns: columns,
3117
- filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
3118
- }, isClearAll && {
3119
- isClearAll: true,
3120
- childrenKeys: childrenKeys
3121
- }));
3122
- history.push({
3123
- search: params
3124
- });
3125
- };
3126
- var handleClearAll = function handleClearAll() {
3127
- var params = isKeywordFilterPresent(keywordFilter) ? ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
3128
- var pathname = window.location.pathname;
3129
- history.push(utils.buildUrl(pathname, params));
3130
- handleChange([], true);
3131
- };
3132
- var handleClearTermAndClose = function handleClearTermAndClose() {
3133
- setSearchTerm("");
3134
- onClose();
3135
- };
3136
- var handleClose = function handleClose() {
3137
- columns.forEach(function (_ref2) {
3138
- var key = _ref2.key;
3139
- var filter = neetoCist.findBy({
3140
- key: key
3141
- }, filters);
3142
- if ((filter === null || filter === void 0 ? void 0 : filter.value) === "") delete searchParams[key];
3143
- });
3144
- handleClearTermAndClose();
3145
- };
3146
- var isClearFiltersDisabled = !filters.some(function (_ref3) {
3147
- var value = _ref3.value,
3148
- defaultValue = _ref3.defaultValue;
3149
- return neetoCist.isPresent(value) && value !== defaultValue;
3150
- }) && !childrenKeys.some(function (key) {
3151
- return searchParams[key];
3152
- });
3153
- return /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], _objectSpread$2(_objectSpread$2({
3154
- isOpen: isOpen,
3155
- backdropClassName: "neeto-filters-pane-backdrop",
3156
- className: classnames__default["default"]("neeto-filters-pane-filter", _defineProperty({}, className, className)),
3157
- onClose: handleClose
3158
- }, otherProps), {}, {
3159
- children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
3160
- "data-cy": "neeto-filters-pane-header",
3161
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
3162
- style: "h2",
3163
- weight: "semibold",
3164
- children: t("neetoFilters.common.filters")
3165
- })
3166
- }), /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Body, {
3167
- className: "neeto-filters-pane-filter__body neeto-ui-pt-2",
3168
- children: [isSearchable && /*#__PURE__*/jsxRuntime.jsx(Search__default["default"], {
3169
- "data-cy": "neeto-filters-column-search",
3170
- placeholder: t("neetoFilters.messages.searchResources", {
3171
- resources: t("neetoFilters.common.filters")
3172
- }),
3173
- onSearch: function onSearch(value) {
3174
- return setSearchTerm(value);
3175
- }
3176
- }), ungroupedColumns.map(function (column) {
3177
- return /*#__PURE__*/React.createElement(Item, {
3178
- column: column,
3179
- filters: filters,
3180
- autoFocus: column.key === isOpen,
3181
- key: column.key,
3182
- onChange: handleChange,
3183
- onClose: handleClearTermAndClose
3184
- });
3185
- }), neetoCist.isPresent(groupedColumns) && /*#__PURE__*/jsxRuntime.jsx(Accordion__default["default"], {
3186
- defaultActiveKey: groupedColumns.findIndex(function (_ref4) {
3187
- var columns = _ref4.columns;
3188
- return neetoCist.existsBy({
3189
- key: isOpen
3190
- }, columns);
3191
- }),
3192
- children: groupedColumns.map(function (_ref5) {
3193
- var group = _ref5.group,
3194
- columns = _ref5.columns;
3195
- return /*#__PURE__*/jsxRuntime.jsx(Accordion__default["default"].Item, {
3196
- className: "accordion_item",
3197
- title: group,
3198
- children: columns.map(function (column) {
3199
- return /*#__PURE__*/React.createElement(Item, {
3200
- column: column,
3201
- filters: filters,
3202
- autoFocus: column.key === isOpen,
3203
- key: column.key,
3204
- onChange: handleChange,
3205
- onClose: handleClearTermAndClose
3206
- });
3207
- })
3208
- }, group);
3209
- })
3210
- }), ramda.isEmpty(ungroupedColumns) && ramda.isEmpty(groupedColumns) && /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
3211
- style: "body2",
3212
- children: t("neetoFilters.messages.noResourcesFound", {
3213
- resources: t("neetoFilters.common.columns")
3214
- })
3215
- }), children]
3216
- }), /*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"].Footer, {
3217
- className: "gap-x-2",
3218
- children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
3219
- "data-cy": "neeto-filters-done-btn",
3220
- label: t("neetoFilters.common.done"),
3221
- onClick: handleClearTermAndClose
3222
- }), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
3223
- "data-cy": "neeto-filters-clear-btn",
3224
- disabled: isClearFiltersDisabled,
3225
- label: t("neetoFilters.common.clearFilters"),
3226
- style: "text",
3227
- onClick: handleClearAll
3228
- })]
3229
- })]
3230
- }));
3231
- };
3232
-
3233
- var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
3234
-
3235
- var css = ".neeto-filters-bar{align-items:center;display:flex;flex-wrap:wrap}.neeto-filters-bar__block{border-radius:var(--neeto-ui-rounded);display:flex;gap:4px;margin:4px 0;max-width:384px;overflow:hidden;padding:4px 8px;position:relative;transition:var(--neeto-ui-transition);white-space:nowrap}.neeto-filters-bar__block p:first-child{color:rgb(var(--neeto-ui-gray-700))}.neeto-filters-bar__block-close{background-image:linear-gradient(90deg,rgba(var(--neeto-ui-gray-200),.5) 0,rgba(var(--neeto-ui-gray-200),1) 25%);color:rgb(var(--neeto-ui-gray-800));opacity:0;padding:8px;position:absolute;right:0;top:0;transition:var(--neeto-ui-transition)}.neeto-filters-bar__block:active,.neeto-filters-bar__block:hover{background-color:rgb(var(--neeto-ui-gray-200));cursor:pointer}.neeto-filters-bar__block:active .neeto-filters-bar__block-close,.neeto-filters-bar__block:hover .neeto-filters-bar__block-close{border-radius:var(--neeto-ui-rounded);color:rgb(var(--neeto-ui-black));opacity:1}.neeto-filters-bar__block:focus{box-shadow:0 0 0 3px rgba(var(--neeto-ui-gray-800),15%);outline:none}.neeto-filters-bar--separator{align-self:stretch;border-left:1px solid rgb(var(--neeto-ui-gray-400));margin:12px 8px}.neeto-filters-pane-filter{overflow:visible;width:360px}.neeto-filters-pane-filter__body{align-items:stretch!important;gap:20px}.neeto-filters-pane-filter__body>*{flex-grow:0!important}.neeto-filters-pane-filter__body p{text-align:center}.neeto-filters-pane-filter__body .neeto-filters-pane-filter__item-wrapper{display:flex;flex:1;flex-direction:column;gap:8px}.neeto-filters-pane-filter__body .accordion_item .neeto-filters-pane-filter__item-wrapper{flex:1;margin-top:16px}.neeto-filters-pane-filter__body .accordion_item .neeto-filters-pane-filter__item-wrapper:first-of-type{margin-top:0}.neeto-filters-pane-filter__body .accordion_item:first-of-type .neeto-ui-accordion__item{padding-top:0}.neeto-filters-pane-filter__body .neeto-ui-accordion__wrapper--last-item{border-bottom:thin solid rgb(var(--neeto-ui-gray-300))}@media screen and (max-width:767px){.neeto-filters-pane-filter{width:100vw}}.neeto-filters-pane-backdrop{-webkit-backdrop-filter:blur(0)!important;backdrop-filter:blur(0)!important;background-color:rgba(var(--neeto-ui-gray-700),.2)}.neeto-filters-segment--active{border-color:rgb(var(--neeto-ui-primary-500))!important;box-shadow:0 0 0 1px rgb(var(--neeto-ui-primary-500))!important}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19iYXIuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9pbmRleC5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2ZpbHRlcnMuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9hYnN0cmFjdHMvX21peGlucy5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3NlZ21lbnRzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBR0Usa0JBQUEsQ0FGQSxZQUFBLENBQ0EsY0NFRixDRENFLDBCQUtFLHFDQUFBLENBSEEsWUFBQSxDQUVBLE9BQUEsQ0FHQSxZQUFBLENBQ0EsZUFBQSxDQUVBLGVBQUEsQ0FUQSxlQUFBLENBRUEsaUJBQUEsQ0FHQSxxQ0FBQSxDQUdBLGtCQ0VKLENEQ0ksd0NBQ0UsbUNDQ04sQ0RFSSxnQ0FRRSxnSEFBQSxDQUZBLG1DQUFBLENBREEsU0FBQSxDQURBLFdBQUEsQ0FIQSxpQkFBQSxDQUVBLE9BQUEsQ0FEQSxLQUFBLENBS0EscUNDQ04sQ0RPSSxpRUFFRSw4Q0FBQSxDQUNBLGNDTk4sQ0RRTSxpSUFHRSxxQ0FBQSxDQURBLGdDQUFBLENBREEsU0NKUixDRFVJLGdDQUVFLHVEQUFBLENBREEsWUNQTixDRFlFLDhCQUdFLGtCQUFBLENBRkEsbURBQUEsQ0FDQSxlQ1RKLENDL0NBLDJCQUVFLGdCQUFBLENBREEsV0RtREYsQ0NoREUsaUNBQ0UsNkJBQUEsQ0FDQSxRRGtESixDQ2hESSxtQ0FDRSxxQkRrRE4sQ0MvQ0ksbUNBQ0UsaUJEaUROLENDOUNJLDBFQUNFLFlBQUEsQ0FHQSxNQUFBLENBRkEscUJBQUEsQ0FDQSxPRGlETixDQzVDTSwwRkFFRSxNQUFBLENBREEsZUQrQ1IsQ0M1Q1Esd0dBQ0UsWUQ4Q1YsQ0MxQ1EseUZBQ0UsYUQ0Q1YsQ0N4Q0kseUVBQ0Usc0REMENOLENFbkVJLG9DRGRKLDJCQTRDSSxXRHlDRixDQUNGLENDdENBLDZCQUNFLHlDQUFBLENBQUEsaUNBQUEsQ0FDQSxrRER5Q0YsQ0czRkEsK0JBQ0UsdURBQUEsQ0FDQSwrREg4RkYiLCJzb3VyY2VzQ29udGVudCI6WyIubmVldG8tZmlsdGVycy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgJl9fYmxvY2sge1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ2FwOiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmVldG8tdWktcm91bmRlZCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgbWFyZ2luOiA0cHggMDtcbiAgICBtYXgtd2lkdGg6IDM4NHB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIHA6Zmlyc3QtY2hpbGQge1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTcwMCkpO1xuICAgIH1cblxuICAgICYtY2xvc2Uge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICAgICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIDkwZGVnLFxuICAgICAgICByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSxcbiAgICAgICAgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrLWNsb3NlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ibGFjaykpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZWV0by11aS1yb3VuZGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTgwMCksIDE1JSk7XG4gICAgfVxuICB9XG5cbiAgJi0tc2VwYXJhdG9yIHtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTQwMCkpO1xuICAgIG1hcmdpbjogMTJweCA4cHg7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxufVxuIiwiLm5lZXRvLWZpbHRlcnMtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jayB7XG4gIHBhZGRpbmc6IDRweCA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiA0cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgbWFyZ2luOiA0cHggMDtcbiAgbWF4LXdpZHRoOiAzODRweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2sgcDpmaXJzdC1jaGlsZCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6IDhweDtcbiAgb3BhY2l0eTogMDtcbiAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSwgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JSk7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyLCAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2UsIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2s6YWN0aXZlIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBvcGFjaXR5OiAxO1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWJsYWNrKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jazpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSwgMTUlKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhci0tc2VwYXJhdG9yIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS00MDApKTtcbiAgbWFyZ2luOiAxMnB4IDhweDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXIge1xuICB3aWR0aDogMzYwcHg7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkge1xuICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICBnYXA6IDIwcHg7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSA+ICoge1xuICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IHAge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiA4cHg7XG4gIGZsZXg6IDE7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSAuYWNjb3JkaW9uX2l0ZW0gLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlciB7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIGZsZXg6IDE7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSAuYWNjb3JkaW9uX2l0ZW0gLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlcjpmaXJzdC1vZi10eXBlIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbTpmaXJzdC1vZi10eXBlIC5uZWV0by11aS1hY2NvcmRpb25fX2l0ZW0ge1xuICBwYWRkaW5nLXRvcDogMDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5uZWV0by11aS1hY2NvcmRpb25fX3dyYXBwZXItLWxhc3QtaXRlbSB7XG4gIGJvcmRlci1ib3R0b206IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlciB7XG4gICAgd2lkdGg6IDEwMHZ3O1xuICB9XG59XG5cbi5uZWV0by1maWx0ZXJzLXBhbmUtYmFja2Ryb3Age1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktNzAwKSwgMC4yKTtcbn1cblxuLm5lZXRvLWZpbHRlcnMtc2VnbWVudC0tYWN0aXZlIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktcHJpbWFyeS01MDApKSAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiKHZhcigtLW5lZXRvLXVpLXByaW1hcnktNTAwKSkgIWltcG9ydGFudDtcbn0iLCIubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlciB7XG4gIHdpZHRoOiAzNjBweDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG5cbiAgJl9fYm9keSB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgICBnYXA6IDIwcHg7XG5cbiAgICA+ICoge1xuICAgICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGdhcDogOHB4O1xuICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICAuYWNjb3JkaW9uX2l0ZW0ge1xuICAgICAgLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAubmVldG8tdWktYWNjb3JkaW9uX19pdGVtIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAubmVldG8tdWktYWNjb3JkaW9uX193cmFwcGVyLS1sYXN0LWl0ZW0ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSB2aWV3cG9ydChtb2IpIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gIH1cbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1iYWNrZHJvcCB7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS03MDApLCAwLjIpO1xufVxuIiwiQG1peGluIHZpZXdwb3J0KCRtZWRpYSkge1xuICBAaWYgJG1lZGlhPT1kZXNrIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWVkaWE9PXRhYi1taW4ge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtZWRpYT09dGFiLW9ubHkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT1tb2Ige1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT14cy1tb2Ige1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ3OXB4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi5uZWV0by1maWx0ZXJzLXNlZ21lbnQtLWFjdGl2ZSB7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLXByaW1hcnktNTAwKSkgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYih2YXIoLS1uZWV0by11aS1wcmltYXJ5LTUwMCkpICFpbXBvcnRhbnQ7XG59XG4iXX0= */";
3236
- n(css,{});
3237
-
3238
- 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; }
3239
- 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), !0).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; }
3240
- var Filters = reactUtils.withT(function (_ref) {
3241
- var t = _ref.t,
3242
- _ref$isOpen = _ref.isOpen,
3243
- isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
3244
- _ref$setIsOpen = _ref.setIsOpen,
3245
- setIsOpen = _ref$setIsOpen === void 0 ? ramda.identity : _ref$setIsOpen,
3246
- _ref$columns = _ref.columns,
3247
- columns = _ref$columns === void 0 ? [] : _ref$columns,
3248
- _ref$onChange = _ref.onChange,
3249
- onChange = _ref$onChange === void 0 ? ramda.identity : _ref$onChange,
3250
- _ref$buttonProps = _ref.buttonProps,
3251
- buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
3252
- _ref$paneProps = _ref.paneProps,
3253
- paneProps = _ref$paneProps === void 0 ? {} : _ref$paneProps,
3254
- _ref$isSearchable = _ref.isSearchable,
3255
- isSearchable = _ref$isSearchable === void 0 ? false : _ref$isSearchable,
3256
- className = _ref.className,
3257
- _ref$onSelectorsChang = _ref.onSelectorsChange,
3258
- onSelectorsChange = _ref$onSelectorsChang === void 0 ? neetoCist.noop : _ref$onSelectorsChang,
3259
- _ref$keyword = _ref.keyword,
3260
- keyword = _ref$keyword === void 0 ? {
3261
- node: "",
3262
- value: "",
3263
- setValue: neetoCist.noop
3264
- } : _ref$keyword,
3265
- childrenKeys = _ref.childrenKeys,
3266
- children = _ref.children;
3267
- return /*#__PURE__*/jsxRuntime.jsxs("span", {
3268
- className: classnames__default["default"](_defineProperty({}, className, className)),
3269
- children: [/*#__PURE__*/jsxRuntime.jsx(Button__default["default"], _objectSpread$1({
3270
- "data-cy": "neeto-filters-toggle-btn",
3271
- label: t("neetoFilters.common.filter"),
3272
- style: "secondary",
3273
- onClick: function onClick() {
3274
- return setIsOpen(true);
3275
- }
3276
- }, buttonProps)), /*#__PURE__*/jsxRuntime.jsx(Pane, _objectSpread$1(_objectSpread$1({
3277
- onClose: function onClose() {
3278
- return setIsOpen(false);
3279
- }
3280
- }, _objectSpread$1({
3281
- childrenKeys: childrenKeys,
3282
- columns: columns,
3283
- isOpen: isOpen,
3284
- isSearchable: isSearchable,
3285
- keyword: keyword,
3286
- onChange: onChange,
3287
- onSelectorsChange: onSelectorsChange
3288
- }, paneProps)), {}, {
3289
- children: children
3290
- }))]
3291
- });
3292
- });
3293
-
3294
- var ITEMS_MAX_COUNT = 20;
3295
- var SEGMENT_ACTIONS = {
3296
- EDIT: "edit",
3297
- DELETE: "delete"
3298
- };
3299
- var ALL_RESULTS = i18next.t("neetoFilters.common.allResults");
3300
-
3301
- var Delete = function Delete(_ref) {
3302
- var isOpen = _ref.isOpen,
3303
- onClose = _ref.onClose,
3304
- _ref$segment = _ref.segment,
3305
- segment = _ref$segment === void 0 ? {} : _ref$segment,
3306
- _ref$columns = _ref.columns,
3307
- columns = _ref$columns === void 0 ? [] : _ref$columns;
3308
- var _useTranslation = reactI18next.useTranslation(),
3309
- t = _useTranslation.t;
3310
- var history = reactRouterDom.useHistory();
3311
- var _getQueryParams = utils.getQueryParams(),
3312
- segmentId = _getQueryParams.segmentId;
3313
- var _useDestroySegment = useDestroySegment(),
3314
- deleteSegment = _useDestroySegment.mutate,
3315
- isDeleting = _useDestroySegment.isPending;
3316
- var handleClearAll = function handleClearAll() {
3317
- var params = buildUrlFromFilters({
3318
- columns: columns,
3319
- filters: [],
3320
- isClearAll: true
3321
- });
3322
- history.push({
3323
- search: params
3324
- });
3325
- };
3326
- var handleDelete = function handleDelete() {
3327
- ramda.equals(segment.id, segmentId) && handleClearAll();
3328
- deleteSegment(segment.id, {
3329
- onSuccess: onClose
3330
- });
3331
- };
3332
- return /*#__PURE__*/jsxRuntime.jsx(Alert__default["default"], {
3333
- isOpen: isOpen,
3334
- onClose: onClose,
3335
- isSubmitting: isDeleting,
3336
- submitButtonLabel: t("neetoFilters.common.delete"),
3337
- title: t("neetoFilters.segments.deleteAlertTitle"),
3338
- message: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
3339
- i18nKey: "neetoFilters.segments.deleteAlertMessage",
3340
- values: {
3341
- entity: segment.name
3342
- }
3343
- }),
3344
- onSubmit: handleDelete
3345
- });
3346
- };
3347
-
3348
- var reorderList = function reorderList(list, startIndex, endIndex) {
3349
- var result = Array.from(list);
3350
- var _result$splice = result.splice(startIndex, 1),
3351
- _result$splice2 = _slicedToArray(_result$splice, 1),
3352
- removed = _result$splice2[0];
3353
- result.splice(endIndex, 0, removed);
3354
- return result;
3355
- };
3356
-
3357
- var useSegments = function useSegments(_ref) {
3358
- var entity = _ref.entity,
3359
- columns = _ref.columns,
3360
- childrenKeys = _ref.childrenKeys;
3361
- var _useTranslation = reactI18next.useTranslation(),
3362
- t = _useTranslation.t;
3363
- var history = reactRouterDom.useHistory();
3364
- var appliedFilters = buildFiltersFromURL(columns);
3365
- var _useFetchSegments = useFetchSegments({
3366
- entity: entity
3367
- }),
3368
- fetchedSegments = _useFetchSegments.data,
3369
- isLoading = _useFetchSegments.isLoading;
3370
- var _useState = React.useState(fetchedSegments),
3371
- _useState2 = _slicedToArray(_useState, 2),
3372
- segments = _useState2[0],
3373
- setSegments = _useState2[1];
3374
- var _useUpdateSegment = useUpdateSegment(),
3375
- updateSegment = _useUpdateSegment.mutate,
3376
- isUpdating = _useUpdateSegment.isPending;
3377
- var _useState3 = React.useState({
3378
- action: "",
3379
- segment: undefined
3380
- }),
3381
- _useState4 = _slicedToArray(_useState3, 2),
3382
- confirmAction = _useState4[0],
3383
- setConfirmAction = _useState4[1];
3384
- var handleSegmentsReorder = function handleSegmentsReorder(_ref2) {
3385
- var source = _ref2.source,
3386
- destination = _ref2.destination;
3387
- if (!destination || source.index === destination.index) return;
3388
- var reorderedSegments = reorderList(segments, source.index, destination.index);
3389
- updateSegment({
3390
- id: segments[source.index].id,
3391
- payload: {
3392
- position: destination.index + 1
3393
- },
3394
- showToastr: false
3395
- });
3396
- setSegments(reorderedSegments);
3397
- };
3398
- var clearAppliedFilters = function clearAppliedFilters() {
3399
- var _filters$, _filters$2;
3400
- var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : appliedFilters;
3401
- history.push({
3402
- search: buildUrlFromFilters({
3403
- columns: columns,
3404
- filters: [],
3405
- isClearAll: true,
3406
- childrenKeys: ((_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions) && ramda.pluck("key", neetoCist.filterBy({
3407
- node: "children"
3408
- }, (_filters$2 = filters[0]) === null || _filters$2 === void 0 ? void 0 : _filters$2.conditions))
3409
- })
3410
- });
3411
- };
3412
- var handleSelectSegment = function handleSelectSegment(_ref3) {
3413
- var _filters$3;
3414
- var id = _ref3.id,
3415
- filters = _ref3.filters;
3416
- history.push({
3417
- search: buildUrlFromSegment({
3418
- columns: columns,
3419
- filters: (_filters$3 = filters[0]) === null || _filters$3 === void 0 ? void 0 : _filters$3.conditions,
3420
- id: id
3421
- })
3422
- });
3423
- };
3424
- React.useEffect(function () {
3425
- setSegments(fetchedSegments);
3426
- }, [fetchedSegments]);
3427
- if (isLoading) {
3428
- return /*#__PURE__*/jsxRuntime.jsx(Spinner__default["default"], {});
3429
- }
3430
- if (ramda.isEmpty(segments)) {
3431
- return /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
3432
- style: "body2",
3433
- children: t("neetoFilters.segments.noSegmentsFound")
3434
- });
3435
- }
3436
- var handleUpdate = function handleUpdate(_ref4, _ref5) {
3437
- var name = _ref4.name;
3438
- var setFieldError = _ref5.setFieldError;
3439
- var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
3440
- updateSegment({
3441
- id: confirmAction.segment.id,
3442
- payload: {
3443
- name: name,
3444
- filters: filtersPayload
3445
- },
3446
- showToastr: false
3447
- }, {
3448
- onSuccess: function onSuccess() {
3449
- utils.showThumbsUpToastr();
3450
- setConfirmAction({
3451
- action: "",
3452
- segment: undefined
3453
- });
3454
- },
3455
- onError: function onError(error) {
3456
- return setFieldError("name", error.response.data.error);
3457
- }
3458
- });
3459
- };
3460
- var filters = buildFiltersFromSearchParams(columns);
3461
- return {
3462
- appliedFilters: appliedFilters,
3463
- segments: segments,
3464
- clearAppliedFilters: clearAppliedFilters,
3465
- handleSelectSegment: handleSelectSegment,
3466
- handleSegmentsReorder: handleSegmentsReorder,
3467
- setConfirmAction: setConfirmAction,
3468
- isUpdating: isUpdating,
3469
- handleUpdate: handleUpdate,
3470
- filters: filters,
3471
- onClose: function onClose() {
3472
- return setConfirmAction({
3473
- action: "",
3474
- segment: undefined
3475
- });
3476
- },
3477
- selectedSegment: confirmAction.segment,
3478
- isDeleteAlertOpen: confirmAction.action === SEGMENT_ACTIONS.DELETE,
3479
- isEditPaneOpen: confirmAction.action === SEGMENT_ACTIONS.EDIT
3480
- };
3481
- };
3482
-
3483
- var Segment = function Segment(_ref) {
3484
- var id = _ref.id,
3485
- isActive = _ref.isActive,
3486
- label = _ref.label,
3487
- onClick = _ref.onClick,
3488
- _ref$shouldShowDropdo = _ref.shouldShowDropdown,
3489
- shouldShowDropdown = _ref$shouldShowDropdo === void 0 ? false : _ref$shouldShowDropdo,
3490
- segments = _ref.segments,
3491
- setConfirmAction = _ref.setConfirmAction;
3492
- var _useTranslation = reactI18next.useTranslation(),
3493
- t = _useTranslation.t;
3494
- var menuItems = [{
3495
- key: "edit",
3496
- label: t("neetoFilters.common.edit"),
3497
- onClick: function onClick() {
3498
- return setConfirmAction({
3499
- action: SEGMENT_ACTIONS.EDIT,
3500
- segment: neetoCist.findById(id, segments)
3501
- });
3502
- }
3503
- }, {
3504
- key: "delete",
3505
- label: t("neetoFilters.common.delete"),
3506
- onClick: function onClick() {
3507
- return setConfirmAction({
3508
- action: SEGMENT_ACTIONS.DELETE,
3509
- segment: neetoCist.findById(id, segments)
3510
- });
3511
- }
3512
- }];
3513
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
3514
- onClick: onClick,
3515
- "data-cy": "neeto-filters-segment-block-".concat(neetoCist.hyphenate(label)),
3516
- className: classnames__default["default"]("neeto-ui-border-gray-400 neeto-ui-bg-white hover:neeto-ui-bg-gray-200 neeto-ui-rounded-lg mb-2 flex h-10 cursor-pointer items-center gap-2 border p-3 transition-all duration-300 ease-in-out", {
3517
- "neeto-filters-segment--active": isActive
3518
- }),
3519
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
3520
- className: "flex flex-grow items-center gap-2 overflow-hidden",
3521
- "data-cy": "new-element-field",
3522
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
3523
- className: "truncate leading-snug",
3524
- "data-cy": neetoCist.hyphenate(label),
3525
- style: "body2",
3526
- children: label
3527
- })
3528
- }), shouldShowDropdown && /*#__PURE__*/jsxRuntime.jsx(MoreDropdown__default["default"], {
3529
- menuItems: menuItems,
3530
- dropdownButtonProps: {
3531
- className: "min-h-0 flex-shrink-0",
3532
- "data-cy": "".concat(neetoCist.hyphenate(label), "-more-dropdown")
3533
- }
3534
- })]
3535
- });
3536
- };
3537
-
3538
- 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; }
3539
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).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; }
3540
- var MenuBlocks = function MenuBlocks(_ref) {
3541
- var entity = _ref.entity,
3542
- segments = _ref.segments,
3543
- segmentId = _ref.segmentId,
3544
- isUpdating = _ref.isUpdating,
3545
- appliedFilters = _ref.appliedFilters,
3546
- setConfirmAction = _ref.setConfirmAction,
3547
- defaultSegmentName = _ref.defaultSegmentName,
3548
- handleSelectSegment = _ref.handleSelectSegment,
3549
- clearAppliedFilters = _ref.clearAppliedFilters,
3550
- handleSegmentsReorder = _ref.handleSegmentsReorder;
3551
- var _useTranslation = reactI18next.useTranslation(),
3552
- t = _useTranslation.t;
3553
- var _useState = React.useState(false),
3554
- _useState2 = _slicedToArray(_useState, 2),
3555
- showAll = _useState2[0],
3556
- setShowAll = _useState2[1];
3557
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
3558
- children: [/*#__PURE__*/jsxRuntime.jsx(MenuBar__default["default"].SubTitle, {
3559
- children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
3560
- component: "h4",
3561
- style: "h5",
3562
- textTransform: "uppercase",
3563
- weight: "bold",
3564
- children: t("neetoFilters.common.segments")
3565
- })
3566
- }), segments.length > ITEMS_MAX_COUNT && /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
3567
- icon: Down__default["default"],
3568
- style: "link",
3569
- label: showAll ? t("neetoFilters.segments.showLess") : t("neetoFilters.segments.showMoreNumbers", {
3570
- entity: segments.length - ITEMS_MAX_COUNT
3571
- }),
3572
- onClick: function onClick() {
3573
- return setShowAll(function (open) {
3574
- return !open;
3575
- });
3576
- }
3577
- }), /*#__PURE__*/jsxRuntime.jsx(Segment, {
3578
- isActive: ramda.isEmpty(appliedFilters),
3579
- label: defaultSegmentName,
3580
- onClick: clearAppliedFilters
3581
- }), /*#__PURE__*/jsxRuntime.jsx(dnd.DragDropContext, {
3582
- onDragEnd: handleSegmentsReorder,
3583
- children: /*#__PURE__*/jsxRuntime.jsx(dnd.Droppable, {
3584
- droppableId: "neeto-filters-segments-".concat(entity),
3585
- children: function children(_ref2) {
3586
- var innerRef = _ref2.innerRef,
3587
- droppableProps = _ref2.droppableProps,
3588
- placeholder = _ref2.placeholder;
3589
- return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
3590
- ref: innerRef
3591
- }, droppableProps), {}, {
3592
- children: [segments.slice(0, showAll ? segments.length : ITEMS_MAX_COUNT).map(function (segment, index) {
3593
- return /*#__PURE__*/React.createElement(dnd.Draggable, {
3594
- index: index,
3595
- draggableId: segment.id.toString(),
3596
- isDragDisabled: isUpdating,
3597
- key: segment.id.toString()
3598
- }, function (_ref3) {
3599
- var innerRef = _ref3.innerRef,
3600
- draggableProps = _ref3.draggableProps,
3601
- dragHandleProps = _ref3.dragHandleProps;
3602
- return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread(_objectSpread({
3603
- ref: innerRef
3604
- }, draggableProps), dragHandleProps), {}, {
3605
- children: /*#__PURE__*/React.createElement(Segment, {
3606
- segments: segments,
3607
- setConfirmAction: setConfirmAction,
3608
- shouldShowDropdown: true,
3609
- id: segment.id,
3610
- isActive: segment.id === segmentId,
3611
- key: segment.id,
3612
- label: segment.name,
3613
- onClick: function onClick() {
3614
- return handleSelectSegment(segment);
3615
- }
3616
- })
3617
- }));
3618
- });
3619
- }), placeholder]
3620
- }));
3621
- }
3622
- })
3623
- })]
3624
- });
3625
- };
3626
- var MenuBlocks$1 = /*#__PURE__*/React__default["default"].memo(MenuBlocks);
3627
-
3628
- var SidebarBlock = function SidebarBlock(_ref) {
3629
- var id = _ref.id,
3630
- isActive = _ref.isActive,
3631
- label = _ref.label,
3632
- onClick = _ref.onClick,
3633
- segments = _ref.segments,
3634
- setConfirmAction = _ref.setConfirmAction;
3635
- var _useTranslation = reactI18next.useTranslation(),
3636
- t = _useTranslation.t;
3637
- var menuItems = [{
3638
- key: "edit",
3639
- label: t("neetoFilters.common.edit"),
3640
- onClick: function onClick() {
3641
- return setConfirmAction({
3642
- action: SEGMENT_ACTIONS.EDIT,
3643
- segment: neetoCist.findById(id, segments)
3644
- });
3645
- }
3646
- }, {
3647
- key: "delete",
3648
- label: t("neetoFilters.common.delete"),
3649
- onClick: function onClick() {
3650
- return setConfirmAction({
3651
- action: SEGMENT_ACTIONS.DELETE,
3652
- segment: neetoCist.findById(id, segments)
3653
- });
3654
- }
3655
- }];
3656
- var dataCyPrefix = neetoCist.hyphenate(label);
3657
- return /*#__PURE__*/jsxRuntime.jsxs("button", {
3658
- onClick: onClick,
3659
- "data-cy": "".concat(dataCyPrefix, "-segment-link"),
3660
- className: classnames__default["default"]("neeto-molecules-sidebar-segment neeto-molecules-sidebar__sublink neeto-ui-flex neeto-ui-items-center neeto-ui-select-none mb-0 w-full py-1", {
3661
- active: isActive
3662
- }),
3663
- children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
3664
- className: "neeto-molecules-sidebar__link-sub-label neeto-molecules-sidebar-segment__label neeto-ui-flex-grow min-w-0",
3665
- component: "span",
3666
- "data-cy": "".concat(dataCyPrefix, "-sub-link-label"),
3667
- style: "body2",
3668
- children: label
3669
- }), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown__default["default"], {
3670
- menuItems: menuItems,
3671
- dropdownButtonProps: {
3672
- "data-testid": "segment-more-menu-".concat(dataCyPrefix),
3673
- className: "flex-shrink-0",
3674
- size: "small",
3675
- style: "secondary"
3676
- },
3677
- dropdownProps: {
3678
- position: "bottom-end",
3679
- strategy: "fixed",
3680
- autoWidth: true
3681
- }
3682
- })]
3683
- });
3684
- };
3685
-
3686
- var Segments = function Segments(_ref) {
3687
- var entity = _ref.entity,
3688
- columns = _ref.columns,
3689
- _ref$defaultSegmentNa = _ref.defaultSegmentName,
3690
- defaultSegmentName = _ref$defaultSegmentNa === void 0 ? ALL_RESULTS : _ref$defaultSegmentNa,
3691
- customFilters = _ref.customFilters,
3692
- _ref$childrenKeys = _ref.childrenKeys,
3693
- childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
3694
- _ref$isIndependent = _ref.isIndependent,
3695
- isIndependent = _ref$isIndependent === void 0 ? true : _ref$isIndependent;
3696
- var _useTranslation = reactI18next.useTranslation(),
3697
- t = _useTranslation.t;
3698
- var _useQueryParams = reactUtils.useQueryParams(),
3699
- segmentId = _useQueryParams.segmentId;
3700
- var segmentFormInitialRef = React.useRef(null);
3701
- var _useSegments = useSegments({
3702
- entity: entity,
3703
- columns: columns,
3704
- childrenKeys: childrenKeys
3705
- }),
3706
- _useSegments$segments = _useSegments.segments,
3707
- segments = _useSegments$segments === void 0 ? [] : _useSegments$segments,
3708
- clearAppliedFilters = _useSegments.clearAppliedFilters,
3709
- handleSelectSegment = _useSegments.handleSelectSegment,
3710
- handleSegmentsReorder = _useSegments.handleSegmentsReorder,
3711
- onClose = _useSegments.onClose,
3712
- setConfirmAction = _useSegments.setConfirmAction,
3713
- selectedSegment = _useSegments.selectedSegment,
3714
- isDeleteAlertOpen = _useSegments.isDeleteAlertOpen,
3715
- isEditPaneOpen = _useSegments.isEditPaneOpen,
3716
- isUpdating = _useSegments.isUpdating,
3717
- handleUpdate = _useSegments.handleUpdate,
3718
- filters = _useSegments.filters,
3719
- appliedFilters = _useSegments.appliedFilters;
3720
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
3721
- "data-testid": "neeto-filters-segments",
3722
- children: [isIndependent ? /*#__PURE__*/jsxRuntime.jsx(MenuBlocks$1, {
3723
- appliedFilters: appliedFilters,
3724
- clearAppliedFilters: clearAppliedFilters,
3725
- defaultSegmentName: defaultSegmentName,
3726
- entity: entity,
3727
- handleSegmentsReorder: handleSegmentsReorder,
3728
- handleSelectSegment: handleSelectSegment,
3729
- isUpdating: isUpdating,
3730
- segmentId: segmentId,
3731
- segments: segments,
3732
- setConfirmAction: setConfirmAction
3733
- }) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
3734
- children: [neetoCist.isNotEmpty(segments) && /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
3735
- style: "body3",
3736
- weight: "semibold",
3737
- className: "neeto-molecules-sidebar-segments-header neeto-ui-text-transform-capitalize neeto-ui-text-gray-600 py-2 uppercase",
3738
- children: t("neetoFilters.segments.segment", constants.PLURAL)
3739
- }), segments.map(function (segment) {
3740
- return /*#__PURE__*/React.createElement(SidebarBlock, {
3741
- segments: segments,
3742
- setConfirmAction: setConfirmAction,
3743
- id: segment.id,
3744
- isActive: segment.id === segmentId,
3745
- key: segment.id,
3746
- label: segment.name,
3747
- onClick: function onClick() {
3748
- return handleSelectSegment(segment);
3749
- }
3750
- });
3751
- })]
3752
- }), /*#__PURE__*/jsxRuntime.jsx(SegmentForm, {
3753
- childrenKeys: childrenKeys,
3754
- columns: columns,
3755
- customFilters: customFilters,
3756
- defaultSegmentName: defaultSegmentName,
3757
- filters: filters,
3758
- onClose: onClose,
3759
- segmentFormInitialRef: segmentFormInitialRef,
3760
- isEdit: true,
3761
- handleSubmit: handleUpdate,
3762
- initialValues: selectedSegment,
3763
- isOpen: isEditPaneOpen,
3764
- isSubmitting: isUpdating
3765
- }), /*#__PURE__*/jsxRuntime.jsx(Delete, {
3766
- columns: columns,
3767
- onClose: onClose,
3768
- isOpen: isDeleteAlertOpen,
3769
- segment: selectedSegment
3770
- })]
3771
- });
3772
- };
3773
- var index = /*#__PURE__*/React__default["default"].memo(Segments);
3774
-
3775
- exports.Bar = Bar;
3776
- exports.Filters = Filters;
3777
- exports.Segments = index;
3778
- exports.buildFilterColumnsFromFields = buildFilterColumnsFromFields;
3779
- exports.buildFiltersFromURL = buildFiltersFromURL;
3780
- exports.buildSelectorsFromURL = buildSelectorsFromURL;
3781
- exports.buildUrlFromFilters = buildUrlFromFilters;
3782
- exports.buildUrlFromSegment = buildUrlFromSegment;
3783
- exports.useDestroySegment = useDestroySegment;
3784
- exports.useFetchSegments = useFetchSegments;
3785
- exports.useUpdateSegment = useUpdateSegment;
3786
- //# sourceMappingURL=index.cjs.js.map