@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
@@ -0,0 +1,809 @@
1
+ import { S as SEARCH_TERM_KEY, a as SEGMENT_ID_KEY, _ as _defineProperty, D as DATE_OPTIONS, T as TIME_OPTIONS, b as DATE_RULES } from './constants-8f6e851e.js';
2
+ import i18next, { t } from 'i18next';
3
+ import { findBy, isNotEmpty, capitalize, removeBy } from '@bigbinary/neeto-cist';
4
+ import { buildUrl, getQueryParams } from '@bigbinary/neeto-commons-frontend/utils';
5
+ import { groupBy, anyPass, isNil, isEmpty, any, concat, omit, mergeLeft, toLower, identity, mergeRight, toPairs, pluck, either, not, has, equals, pick } from 'ramda';
6
+ import dayjs from 'dayjs';
7
+ import timezone from 'dayjs/plugin/timezone';
8
+ import utc from 'dayjs/plugin/utc';
9
+ import weekday from 'dayjs/plugin/weekday';
10
+ import Help from '@bigbinary/neeto-icons/Help';
11
+
12
+ function _arrayLikeToArray(arr, len) {
13
+ if (len == null || len > arr.length) len = arr.length;
14
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
15
+ return arr2;
16
+ }
17
+
18
+ function _arrayWithoutHoles(arr) {
19
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
20
+ }
21
+
22
+ function _iterableToArray(iter) {
23
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
24
+ }
25
+
26
+ function _unsupportedIterableToArray(o, minLen) {
27
+ if (!o) return;
28
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
29
+ var n = Object.prototype.toString.call(o).slice(8, -1);
30
+ if (n === "Object" && o.constructor) n = o.constructor.name;
31
+ if (n === "Map" || n === "Set") return Array.from(o);
32
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
33
+ }
34
+
35
+ function _nonIterableSpread() {
36
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
37
+ }
38
+
39
+ function _toConsumableArray(arr) {
40
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
41
+ }
42
+
43
+ function _arrayWithHoles(arr) {
44
+ if (Array.isArray(arr)) return arr;
45
+ }
46
+
47
+ function _iterableToArrayLimit(r, l) {
48
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
49
+ if (null != t) {
50
+ var e,
51
+ n,
52
+ i,
53
+ u,
54
+ a = [],
55
+ f = !0,
56
+ o = !1;
57
+ try {
58
+ if (i = (t = t.call(r)).next, 0 === l) {
59
+ if (Object(t) !== t) return;
60
+ f = !1;
61
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
62
+ } catch (r) {
63
+ o = !0, n = r;
64
+ } finally {
65
+ try {
66
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
67
+ } finally {
68
+ if (o) throw n;
69
+ }
70
+ }
71
+ return a;
72
+ }
73
+ }
74
+
75
+ function _nonIterableRest() {
76
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
+ }
78
+
79
+ function _slicedToArray(arr, i) {
80
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
81
+ }
82
+
83
+ dayjs.extend(utc);
84
+ dayjs.extend(timezone);
85
+ dayjs.extend(weekday);
86
+ dayjs.Ls.en.weekStart = 1;
87
+
88
+ var NUMBER_RULES = [{
89
+ label: t("neetoFilters.rules.is"),
90
+ value: "is"
91
+ }, {
92
+ label: t("neetoFilters.rules.isNot"),
93
+ value: "is_not"
94
+ }, {
95
+ label: t("neetoFilters.rules.greaterThan"),
96
+ value: "greater_than"
97
+ }, {
98
+ label: t("neetoFilters.rules.lessThan"),
99
+ value: "less_than"
100
+ }];
101
+ var TEXT_RULES = [{
102
+ label: t("neetoFilters.rules.contains"),
103
+ value: "contains"
104
+ }, {
105
+ label: t("neetoFilters.rules.doesNotContain"),
106
+ value: "does_not_contain"
107
+ }, {
108
+ label: t("neetoFilters.rules.is"),
109
+ value: "is"
110
+ }, {
111
+ label: t("neetoFilters.rules.isNot"),
112
+ value: "is_not"
113
+ }, {
114
+ label: t("neetoFilters.rules.startsWith"),
115
+ value: "starts_with"
116
+ }, {
117
+ label: t("neetoFilters.rules.doesNotStartWith"),
118
+ value: "does_not_start_with"
119
+ }, {
120
+ label: t("neetoFilters.rules.endsWith"),
121
+ value: "ends_with"
122
+ }, {
123
+ label: t("neetoFilters.rules.doesNotEndWith"),
124
+ value: "does_not_end_with"
125
+ }];
126
+ var MULTI_DROPDOWN_RULES = [{
127
+ label: t("neetoFilters.rules.in"),
128
+ value: "in"
129
+ }, {
130
+ label: t("neetoFilters.rules.notIn"),
131
+ value: "not_in"
132
+ }, {
133
+ label: t("neetoFilters.rules.isEmpty"),
134
+ value: "is_unknown"
135
+ }];
136
+ var SINGLE_DROPDOWN_RULES = [{
137
+ label: t("neetoFilters.rules.is"),
138
+ value: "is"
139
+ }, {
140
+ label: t("neetoFilters.rules.isNot"),
141
+ value: "is_not"
142
+ }, {
143
+ label: t("neetoFilters.rules.isEmpty"),
144
+ value: "is_unknown"
145
+ }];
146
+ var DEFAULT_BOOLEAN_OPTIONS = [{
147
+ label: t("neetoFilters.common.yes"),
148
+ value: "true"
149
+ }, {
150
+ label: t("neetoFilters.common.no"),
151
+ value: "false"
152
+ }];
153
+ var TREE_SELECT_RULES = [{
154
+ label: t("neetoFilters.rules.in"),
155
+ value: "in"
156
+ }, {
157
+ label: t("neetoFilters.rules.notIn"),
158
+ value: "not_in"
159
+ }, {
160
+ label: t("neetoFilters.rules.isEmpty"),
161
+ value: "is_unknown"
162
+ }];
163
+ var DEFAULT_HELP_ICON_PROPS = {
164
+ icon: Help
165
+ };
166
+ var TIME_FORMAT = "h:mm A";
167
+
168
+ 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; }
169
+ 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; }
170
+ var groupByGroup = groupBy(function (_ref) {
171
+ var group = _ref.group;
172
+ return group || "individual";
173
+ });
174
+ var standardizeColumnType = function standardizeColumnType(kind) {
175
+ // neeto-fields-nano supports `monetary` and `number` as type of fields, which will be acting as `decimal` in action.
176
+ if (["custom.monetary", "custom.number"].includes(kind)) {
177
+ return "custom.decimal";
178
+ }
179
+ return kind;
180
+ };
181
+ var getSnakeCasedQueryParams = function getSnakeCasedQueryParams() {
182
+ return getQueryParams({
183
+ toCamelCase: false
184
+ });
185
+ };
186
+ var isBoolean = function isBoolean(type) {
187
+ return type === "boolean" || type === "custom.boolean";
188
+ };
189
+ var isCheckbox = function isCheckbox(type) {
190
+ return type === "checkbox" || type === "custom.checkbox";
191
+ };
192
+ var isDate = function isDate(type) {
193
+ return type === "date" || type === "custom.date" || type === "custom.datetime";
194
+ };
195
+ var isSingleDate = function isSingleDate(type) {
196
+ return type === "single_date" || type === "custom.single_date";
197
+ };
198
+ var isSingleTime = function isSingleTime(type) {
199
+ return type === "single_time" || type === "custom.single_time";
200
+ };
201
+ var isTime = function isTime(type) {
202
+ return type === "time" || type === "custom.time";
203
+ };
204
+ var isMulti = function isMulti(type) {
205
+ return type === "multi_option" || type === "custom.multi_option";
206
+ };
207
+ var isSingle = function isSingle(type) {
208
+ return type === "single_option" || type === "custom.single_option";
209
+ };
210
+ var isText = function isText(type) {
211
+ return type === "text" || type === "custom.text";
212
+ };
213
+ var isDigit = function isDigit(type) {
214
+ return ["number", "decimal", "custom.decimal", "custom.number"].includes(type);
215
+ };
216
+ var isTreeSelect = function isTreeSelect(type) {
217
+ return type === "tree_select";
218
+ };
219
+ var isCustomDateRange = function isCustomDateRange(value) {
220
+ return !pluck("value", DATE_OPTIONS).includes(value);
221
+ };
222
+ var isCustomTimeRange = function isCustomTimeRange(value) {
223
+ return !pluck("value", TIME_OPTIONS).includes(value);
224
+ };
225
+ var isMultiModelFilter = function isMultiModelFilter(_ref2) {
226
+ var _ref2$model = _ref2.model,
227
+ model = _ref2$model === void 0 ? "" : _ref2$model;
228
+ return model.split(",").length > 1;
229
+ };
230
+ var getTimezone = function getTimezone() {
231
+ return dayjs.tz.guess();
232
+ };
233
+ var getLabelFromBool = function getLabelFromBool(_ref3) {
234
+ var value = _ref3.value,
235
+ values = _ref3.values;
236
+ return findBy({
237
+ value: value
238
+ }, either(isEmpty, isNil)(values) ? DEFAULT_BOOLEAN_OPTIONS : values).label;
239
+ };
240
+ var getBoolFromLabel = function getBoolFromLabel(_ref4) {
241
+ var label = _ref4.label,
242
+ values = _ref4.values;
243
+ return findBy({
244
+ label: label
245
+ }, either(isEmpty, isNil)(values) ? DEFAULT_BOOLEAN_OPTIONS : values).value;
246
+ };
247
+ var buildRuleOptions = function buildRuleOptions(_ref5) {
248
+ var defaultType = _ref5.defaultType;
249
+ if (isText(defaultType)) return TEXT_RULES;else if (isDigit(defaultType)) return NUMBER_RULES;
250
+ return [];
251
+ };
252
+ var getDefaultRuleValue = function getDefaultRuleValue(defaultType) {
253
+ var _buildRuleOptions;
254
+ return ((_buildRuleOptions = buildRuleOptions({
255
+ defaultType: defaultType
256
+ })) === null || _buildRuleOptions === void 0 || (_buildRuleOptions = _buildRuleOptions[0]) === null || _buildRuleOptions === void 0 ? void 0 : _buildRuleOptions.value) || "";
257
+ };
258
+ var isUndefinedOrEmpty = anyPass([isNil, isEmpty, any(isNil)]);
259
+
260
+ // Following function split node on comma followed by non-comma characters and a dot
261
+ var splitNode = function splitNode(joinedNodes) {
262
+ return joinedNodes.split(/,(?=[^,]*\.)/);
263
+ };
264
+ var splitFilter = function splitFilter(multiColumnFilter) {
265
+ var splittedNodes = splitNode(multiColumnFilter.node);
266
+ var splittedModels = multiColumnFilter.model.split(",");
267
+ return splittedNodes.map(function (node, index) {
268
+ return mergeLeft({
269
+ node: node,
270
+ model: splittedModels[index],
271
+ conditions_join_type: index < splittedNodes.length - 1 ? "or" : "and"
272
+ }, omit(["key", "label", "values", "setValue"], multiColumnFilter));
273
+ });
274
+ };
275
+ var buildDateValue = function buildDateValue(_ref6) {
276
+ var value = _ref6.value;
277
+ var rule = DATE_RULES[value] || "between";
278
+ var dateValue = ["before", "after", "custom-date-range"].includes(value) ? "" : value;
279
+ return {
280
+ value: dateValue,
281
+ rule: rule,
282
+ timezone: getTimezone()
283
+ };
284
+ };
285
+ var buildTimeValue = function buildTimeValue(_ref7) {
286
+ var value = _ref7.value;
287
+ var dateValue = value === "custom-time-range" ? "" : value;
288
+ return {
289
+ value: dateValue,
290
+ rule: "between"
291
+ };
292
+ };
293
+ var buildUpdatedFilter = function buildUpdatedFilter(_ref8) {
294
+ var column = _ref8.column,
295
+ defaultType = _ref8.defaultType,
296
+ option = _ref8.option,
297
+ _ref8$rule = _ref8.rule,
298
+ rule = _ref8$rule === void 0 ? "" : _ref8$rule,
299
+ _ref8$value = _ref8.value,
300
+ value = _ref8$value === void 0 ? "" : _ref8$value;
301
+ var filter = omit(["values", "preprocessor"], column);
302
+ if (isMulti(defaultType)) {
303
+ return mergeLeft(filter, {
304
+ value: pluck("value", option),
305
+ rule: rule
306
+ });
307
+ } else if (isDate(defaultType)) {
308
+ return mergeLeft(filter, buildDateValue(option));
309
+ } else if (isSingleDate(defaultType)) {
310
+ return mergeLeft(filter, {
311
+ value: value,
312
+ rule: rule,
313
+ timezone: getTimezone()
314
+ });
315
+ } else if (isText(defaultType) || isDigit(defaultType)) {
316
+ var _column$preprocessor;
317
+ return mergeLeft(filter, {
318
+ rule: rule,
319
+ value: (column === null || column === void 0 || (_column$preprocessor = column.preprocessor) === null || _column$preprocessor === void 0 ? void 0 : _column$preprocessor.call(column, value)) || value
320
+ });
321
+ } else if (isSingleTime(defaultType)) {
322
+ return mergeLeft(filter, {
323
+ value: value,
324
+ rule: rule
325
+ });
326
+ } else if (isTime(defaultType)) {
327
+ return mergeLeft(filter, buildTimeValue(option));
328
+ } else if (isSingle(defaultType)) {
329
+ return mergeLeft(filter, {
330
+ value: option.value,
331
+ rule: rule
332
+ });
333
+ } else if (isTreeSelect(defaultType)) {
334
+ return mergeLeft(filter, {
335
+ value: option,
336
+ rule: rule
337
+ });
338
+ }
339
+ return mergeLeft(filter, {
340
+ value: option.value,
341
+ rule: "is"
342
+ });
343
+ };
344
+ var buildFiltersFromSearchParams = function buildFiltersFromSearchParams(columns) {
345
+ var skipEmpty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
346
+ var searchParams = getSnakeCasedQueryParams();
347
+ return columns.map(function (column) {
348
+ var value = searchParams[column.key];
349
+ var defaultType = column.defaultType || column.type;
350
+ if (!skipEmpty && value === "") {
351
+ return mergeLeft({
352
+ value: ""
353
+ }, column);
354
+ } else if (isNil(value) || value === "" || column.key === "keyword") {
355
+ return null;
356
+ } else if (column.key === SEARCH_TERM_KEY) {
357
+ if (isNil(column.node)) return null;
358
+ return mergeLeft({
359
+ value: value,
360
+ type: "text",
361
+ rule: "contains"
362
+ }, column);
363
+ } else if (isDate(defaultType) && isCustomDateRange(value)) {
364
+ return mergeLeft({
365
+ value: value
366
+ }, column);
367
+ } else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
368
+ var _value$split = value.split("+rule-"),
369
+ _value$split2 = _slicedToArray(_value$split, 2),
370
+ filterValue = _value$split2[0],
371
+ rule = _value$split2[1];
372
+ return mergeLeft({
373
+ rule: rule !== null && rule !== void 0 ? rule : "in",
374
+ value: filterValue.split("|")
375
+ }, column);
376
+ } else if (isSingle(defaultType)) {
377
+ var _value$split3 = value.split("+rule-"),
378
+ _value$split4 = _slicedToArray(_value$split3, 2),
379
+ _filterValue = _value$split4[0],
380
+ _rule = _value$split4[1];
381
+ return mergeLeft({
382
+ rule: _rule !== null && _rule !== void 0 ? _rule : "in",
383
+ value: _filterValue
384
+ }, column);
385
+ } else if (isDigit(defaultType) || isText(defaultType)) {
386
+ var _value$split5 = value.split("+rule-"),
387
+ _value$split6 = _slicedToArray(_value$split5, 2),
388
+ _filterValue2 = _value$split6[0],
389
+ _rule2 = _value$split6[1];
390
+ return mergeLeft({
391
+ rule: _rule2,
392
+ value: _filterValue2
393
+ }, column);
394
+ } else if (isTime(defaultType) && isCustomTimeRange(value)) {
395
+ return mergeLeft({
396
+ value: value
397
+ }, column);
398
+ } else if (isSingleDate(defaultType)) {
399
+ var _value$split7 = value.split("+rule-"),
400
+ _value$split8 = _slicedToArray(_value$split7, 2),
401
+ _filterValue3 = _value$split8[0],
402
+ _rule3 = _value$split8[1];
403
+ return mergeLeft({
404
+ rule: _rule3,
405
+ value: _rule3 === "between" ? _filterValue3.split(",") : _filterValue3
406
+ }, column);
407
+ } else if (isSingleTime(defaultType)) {
408
+ var _value$split9 = value.split("+rule-"),
409
+ _value$split10 = _slicedToArray(_value$split9, 2),
410
+ _filterValue4 = _value$split10[0],
411
+ _rule4 = _value$split10[1];
412
+ return mergeLeft({
413
+ rule: _rule4,
414
+ value: _rule4 === "between" ? _filterValue4.split(",") : _filterValue4
415
+ }, column);
416
+ } else if (isBoolean(defaultType)) {
417
+ return mergeLeft({
418
+ rule: "is",
419
+ value: getBoolFromLabel({
420
+ label: value,
421
+ values: column.values
422
+ })
423
+ }, column);
424
+ }
425
+ return mergeLeft({
426
+ rule: "is",
427
+ value: value
428
+ }, column);
429
+ }).filter(identity);
430
+ };
431
+ var buildTimePayload = function buildTimePayload(value) {
432
+ var timeValue = {
433
+ "this-hour": [dayjs().startOf("hour"), dayjs().endOf("hour")],
434
+ "last-hour": [dayjs().add(-1, "hour").startOf("hour"), dayjs().add(-1, "hour").endOf("hour")],
435
+ "next-hour": [dayjs().add(1, "hour").startOf("hour"), dayjs().add(1, "hour").endOf("hour")]
436
+ };
437
+ if (isCustomTimeRange(value)) {
438
+ return {
439
+ value: value ? value.join(",") : "",
440
+ rule: "between"
441
+ };
442
+ }
443
+ return {
444
+ value: timeValue[value].map(function (time) {
445
+ return time.toISOString();
446
+ }).join(","),
447
+ rule: "between"
448
+ };
449
+ };
450
+ var buildDatePayload = function buildDatePayload(value) {
451
+ var dateValue = {
452
+ "this-week": [dayjs().startOf("week"), dayjs().endOf("week")],
453
+ "last-week": [dayjs().add(-1, "week").startOf("week"), dayjs().add(-1, "week").endOf("week")],
454
+ "this-month": [dayjs().startOf("month"), dayjs().endOf("month")],
455
+ "last-month": [dayjs().add(-1, "month").startOf("month"), dayjs().add(-1, "month").endOf("month")],
456
+ "this-year": [dayjs().startOf("year"), dayjs().endOf("year")],
457
+ "last-year": [dayjs().add(-1, "year").startOf("year"), dayjs().add(-1, "year").endOf("year")]
458
+ };
459
+ if (value === "today") {
460
+ return {
461
+ value: dayjs().toISOString(),
462
+ rule: "on",
463
+ timezone: getTimezone()
464
+ };
465
+ } else if (value === "yesterday") {
466
+ return {
467
+ value: dayjs().add(-1, "day").toISOString(),
468
+ rule: "on",
469
+ timezone: getTimezone()
470
+ };
471
+ } else if (value === "all-time") {
472
+ return {
473
+ value: dayjs().toISOString(),
474
+ rule: "before",
475
+ timezone: getTimezone(),
476
+ type: "datetime"
477
+ };
478
+ } else if (isCustomDateRange(value)) {
479
+ //custom-date-range
480
+ return {
481
+ value: value ? value.join(",") : "",
482
+ rule: "between",
483
+ timezone: getTimezone()
484
+ };
485
+ }
486
+ return {
487
+ value: dateValue[value].map(function (date) {
488
+ return date.toISOString();
489
+ }).join(","),
490
+ rule: "between",
491
+ timezone: getTimezone()
492
+ };
493
+ };
494
+ var buildSingleDatePayload = function buildSingleDatePayload(filter) {
495
+ var value = filter.value;
496
+ var filterValue = Array.isArray(value) ? value.join(",") : value;
497
+ return _objectSpread(_objectSpread({}, filter), {}, {
498
+ value: filterValue,
499
+ type: "date"
500
+ });
501
+ };
502
+ var buildSingleTimePayload = function buildSingleTimePayload(filter) {
503
+ var value = filter.value;
504
+ var filterValue = Array.isArray(value) ? value.join(",") : value;
505
+ return _objectSpread(_objectSpread({}, filter), {}, {
506
+ value: filterValue,
507
+ type: "time"
508
+ });
509
+ };
510
+ var flattenPayload = function flattenPayload(payload) {
511
+ var flattenedPayload = [];
512
+ payload.forEach(function (item) {
513
+ return Array.isArray(item) ? flattenedPayload.unshift.apply(flattenedPayload, _toConsumableArray(item)) : flattenedPayload.push(item);
514
+ }, []);
515
+ return flattenedPayload;
516
+ };
517
+ var buildMultiOptionPayload = function buildMultiOptionPayload(values) {
518
+ return values.map(function (value) {
519
+ return value.toString();
520
+ }).join("|");
521
+ };
522
+ var buildFiltersPayload = function buildFiltersPayload(filters) {
523
+ var payload = removeBy({
524
+ value: ""
525
+ }, filters).map(function (filter) {
526
+ if (filter.key === SEARCH_TERM_KEY && isMultiModelFilter(filter)) {
527
+ return splitFilter(filter);
528
+ }
529
+ var filterPayload = omit(["key", "label", "values", "setValue"], filter);
530
+ var _filterPayload$defaul = filterPayload.defaultType,
531
+ defaultType = _filterPayload$defaul === void 0 ? filterPayload.type : _filterPayload$defaul,
532
+ value = filterPayload.value;
533
+ if (isMultiModelFilter(filterPayload)) {
534
+ throw i18next.t("neetoFilters.errors.cannotPassMultipleModels");
535
+ }
536
+ if (isDate(defaultType)) {
537
+ return mergeRight(filterPayload, buildDatePayload(value));
538
+ } else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
539
+ return mergeRight(filterPayload, {
540
+ value: buildMultiOptionPayload(value)
541
+ });
542
+ } else if (isSingleDate(defaultType)) {
543
+ return mergeRight(filterPayload, buildSingleDatePayload(filterPayload));
544
+ } else if (isSingleTime(defaultType)) {
545
+ return mergeRight(filterPayload, buildSingleTimePayload(filterPayload));
546
+ } else if (isTime(defaultType)) {
547
+ return mergeRight(filterPayload, buildTimePayload(value));
548
+ }
549
+ return filterPayload;
550
+ });
551
+ return isEmpty(payload) ? [] : [{
552
+ conditions: flattenPayload(payload)
553
+ }];
554
+ };
555
+ var buildSegmentsPayload = function buildSegmentsPayload(filters) {
556
+ var childrenKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
557
+ var payload = removeBy({
558
+ value: ""
559
+ }, filters).map(function (filter) {
560
+ if (filter.key === SEARCH_TERM_KEY) {
561
+ return false;
562
+ }
563
+ var filterPayload = omit(["label", "values", "setValue", "defaultValue"], filter);
564
+ var _filterPayload$defaul2 = filterPayload.defaultType,
565
+ defaultType = _filterPayload$defaul2 === void 0 ? filterPayload.type : _filterPayload$defaul2,
566
+ value = filterPayload.value;
567
+ if (filter.key !== SEARCH_TERM_KEY && isMultiModelFilter(filterPayload)) {
568
+ throw i18next.t("neetoFilters.errors.cannotPassMultipleModels");
569
+ }
570
+ if (isMulti(defaultType)) {
571
+ return mergeRight(filterPayload, {
572
+ value: buildMultiOptionPayload(value)
573
+ });
574
+ }
575
+ return filterPayload;
576
+ });
577
+ var searchParams = getSnakeCasedQueryParams();
578
+ var modifiedPayload = childrenKeys.reduce(function (acc, key) {
579
+ if (has(key, searchParams)) {
580
+ var filterPayload = {
581
+ key: key,
582
+ node: "children",
583
+ value: searchParams[key]
584
+ };
585
+ return acc.concat(filterPayload);
586
+ }
587
+ return acc;
588
+ }, payload);
589
+ return isEmpty(modifiedPayload) ? [] : [{
590
+ conditions: flattenPayload(modifiedPayload)
591
+ }];
592
+ };
593
+ var buildFiltersFromURL = function buildFiltersFromURL(columns) {
594
+ return buildFiltersPayload(buildFiltersFromSearchParams(columns.filter(function (column) {
595
+ return !isNil(column.node);
596
+ })));
597
+ };
598
+ var buildSelectorsFromURL = function buildSelectorsFromURL(columns) {
599
+ var searchParams = getSnakeCasedQueryParams();
600
+ var selectors = {};
601
+ columns.filter(function (_ref9) {
602
+ var node = _ref9.node;
603
+ return !node;
604
+ }).forEach(function (_ref10) {
605
+ var key = _ref10.key,
606
+ defaultType = _ref10.defaultType,
607
+ type = _ref10.type;
608
+ var value = searchParams[key];
609
+ if (value) {
610
+ selectors[key] = isMulti(defaultType || type) ? value.split("|") : value;
611
+ }
612
+ });
613
+ return selectors;
614
+ };
615
+ var compareFilters = function compareFilters(oldFilters, newFilters) {
616
+ var formatFilters = function formatFilters(filters) {
617
+ return removeBy({
618
+ value: ""
619
+ }, filters).map(pick(["key", "rule", "value"]));
620
+ };
621
+ return equals(formatFilters(oldFilters), formatFilters(newFilters));
622
+ };
623
+ var buildFilteredColumns = function buildFilteredColumns(_ref11) {
624
+ var _ref11$searchTerm = _ref11.searchTerm,
625
+ searchTerm = _ref11$searchTerm === void 0 ? "" : _ref11$searchTerm,
626
+ columns = _ref11.columns;
627
+ var groupedColumsObject = groupByGroup(columns.filter(function (_ref12) {
628
+ var label = _ref12.label,
629
+ _ref12$hidden = _ref12.hidden,
630
+ hidden = _ref12$hidden === void 0 ? false : _ref12$hidden;
631
+ return label.toLocaleLowerCase().includes(searchTerm.trim().toLocaleLowerCase()) && !hidden;
632
+ }));
633
+ return {
634
+ groupedColumns: toPairs(omit(["individual"], groupedColumsObject)).map(function (_ref13) {
635
+ var _ref14 = _slicedToArray(_ref13, 2),
636
+ group = _ref14[0],
637
+ columns = _ref14[1];
638
+ return {
639
+ group: group,
640
+ columns: columns
641
+ };
642
+ }),
643
+ ungroupedColumns: groupedColumsObject.individual
644
+ };
645
+ };
646
+ var buildDefaultFilters = function buildDefaultFilters(columns, filters) {
647
+ return columns.filter(function (column) {
648
+ return !isUndefinedOrEmpty(column.defaultValue) && !findBy({
649
+ key: column.key
650
+ }, filters);
651
+ }).map(function (column) {
652
+ var defaultType = column.defaultType || column.type;
653
+ return buildUpdatedFilter({
654
+ column: column,
655
+ defaultType: defaultType,
656
+ rule: getDefaultRuleValue(defaultType),
657
+ option: column.defaultValue,
658
+ value: column.defaultValue
659
+ });
660
+ });
661
+ };
662
+ var createUrlParamString = function createUrlParamString(_ref15) {
663
+ var filter = _ref15.filter,
664
+ columns = _ref15.columns;
665
+ var key = filter.key,
666
+ value = filter.value,
667
+ _filter$defaultType = filter.defaultType,
668
+ defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
669
+ rule = filter.rule;
670
+ if (key === SEARCH_TERM_KEY) {
671
+ return value;
672
+ } else if (isDigit(defaultType) || isText(defaultType)) {
673
+ return "".concat(value, "+rule-").concat(rule);
674
+ } else if (isSingleDate(defaultType) || isSingleTime(defaultType)) {
675
+ return value && "".concat(value, "+rule-").concat(rule) || value;
676
+ } else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
677
+ return "".concat(value.join("|"), "+rule-").concat(rule);
678
+ } else if (isSingle(defaultType)) {
679
+ return "".concat(value, "+rule-").concat(rule);
680
+ } else if (isBoolean(defaultType)) {
681
+ return getLabelFromBool({
682
+ value: value,
683
+ values: findBy({
684
+ key: key
685
+ }, columns).values
686
+ });
687
+ }
688
+ return value;
689
+ };
690
+ var buildUrlFromFilters = function buildUrlFromFilters(_ref16) {
691
+ var columns = _ref16.columns,
692
+ filters = _ref16.filters,
693
+ _ref16$isClearAll = _ref16.isClearAll,
694
+ isClearAll = _ref16$isClearAll === void 0 ? false : _ref16$isClearAll,
695
+ _ref16$childrenKeys = _ref16.childrenKeys,
696
+ childrenKeys = _ref16$childrenKeys === void 0 ? [] : _ref16$childrenKeys;
697
+ var searchParams = getSnakeCasedQueryParams();
698
+ var isKeywordFilterPresent = findBy({
699
+ key: SEARCH_TERM_KEY
700
+ }, filters);
701
+ columns.forEach(function (_ref17) {
702
+ var key = _ref17.key,
703
+ defaultValue = _ref17.defaultValue;
704
+ return !defaultValue && delete searchParams[key];
705
+ });
706
+ if (isClearAll) {
707
+ childrenKeys.forEach(function (key) {
708
+ return delete searchParams[key];
709
+ });
710
+ delete searchParams[SEGMENT_ID_KEY];
711
+ }
712
+ var defaultFilters = buildDefaultFilters(columns, filters);
713
+ isKeywordFilterPresent && delete searchParams[SEARCH_TERM_KEY];
714
+ concat(filters, defaultFilters).forEach(function (filter) {
715
+ searchParams[filter.key] = createUrlParamString({
716
+ filter: filter,
717
+ columns: columns
718
+ });
719
+ });
720
+ if (isEmpty(omit([SEGMENT_ID_KEY], searchParams))) {
721
+ delete searchParams[SEGMENT_ID_KEY];
722
+ }
723
+ return buildUrl("", searchParams).slice(1);
724
+ };
725
+ var createUrlParamStringForSegments = function createUrlParamStringForSegments(_ref18) {
726
+ var filter = _ref18.filter,
727
+ columns = _ref18.columns;
728
+ var value = filter.value,
729
+ _filter$defaultType2 = filter.defaultType,
730
+ defaultType = _filter$defaultType2 === void 0 ? filter.type : _filter$defaultType2;
731
+ if (isMulti(defaultType)) {
732
+ return value;
733
+ }
734
+ return createUrlParamString({
735
+ filter: filter,
736
+ columns: columns
737
+ });
738
+ };
739
+ var buildUrlFromSegment = function buildUrlFromSegment(_ref19) {
740
+ var columns = _ref19.columns,
741
+ filters = _ref19.filters,
742
+ id = _ref19.id;
743
+ var searchParams = getSnakeCasedQueryParams();
744
+ columns.forEach(function (_ref20) {
745
+ var key = _ref20.key,
746
+ defaultValue = _ref20.defaultValue;
747
+ return !defaultValue && delete searchParams[key];
748
+ });
749
+ delete searchParams[SEARCH_TERM_KEY];
750
+ var defaultFilters = buildDefaultFilters(columns, filters);
751
+ var newSearchParams = concat(filters, defaultFilters).reduce(function (acc, filter) {
752
+ acc[filter.key] = createUrlParamStringForSegments({
753
+ filter: filter,
754
+ columns: columns
755
+ });
756
+ return acc;
757
+ }, isNotEmpty(id) ? _defineProperty({}, SEGMENT_ID_KEY, id) : {});
758
+ return buildUrl("", mergeLeft(newSearchParams, searchParams)).slice(1);
759
+ };
760
+ var getSearchTermFromUrl = function getSearchTermFromUrl() {
761
+ return getQueryParams().searchTerm || "";
762
+ };
763
+ var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(_ref22) {
764
+ var fields = _ref22.fields,
765
+ _ref22$selectedFields = _ref22.selectedFields,
766
+ selectedFields = _ref22$selectedFields === void 0 ? [] : _ref22$selectedFields,
767
+ _ref22$showRuleSelect = _ref22.showRuleSelector,
768
+ showRuleSelector = _ref22$showRuleSelect === void 0 ? false : _ref22$showRuleSelect,
769
+ groupName = _ref22.groupName;
770
+ return fields.reduce(function (columns, field) {
771
+ if (isEmpty(selectedFields) || selectedFields.includes(field.name)) {
772
+ var id = field.id,
773
+ name = field.name,
774
+ kind = field.kind;
775
+ var column = _objectSpread({
776
+ key: toLower(name),
777
+ node: "".concat(name, ":").concat(id),
778
+ label: capitalize(name),
779
+ type: "custom.".concat(kind),
780
+ showRuleSelector: showRuleSelector
781
+ }, groupName && {
782
+ group: groupName
783
+ });
784
+ if (kind === "single_option" || kind === "multi_option") {
785
+ column.values = field.data.map(function (item) {
786
+ return {
787
+ label: capitalize(item.label),
788
+ value: item.id
789
+ };
790
+ });
791
+ }
792
+ columns.push(column);
793
+ }
794
+ return columns;
795
+ }, []);
796
+ };
797
+ var getColumnsWithStandardizedType = function getColumnsWithStandardizedType(columns) {
798
+ return columns.map(function (column) {
799
+ return _objectSpread(_objectSpread({}, column), {}, {
800
+ type: standardizeColumnType(column.type)
801
+ });
802
+ });
803
+ };
804
+ var isKeywordFilterPresent = function isKeywordFilterPresent(keyworFilter) {
805
+ return not(isEmpty(keyworFilter.node));
806
+ };
807
+
808
+ export { isSingleTime as A, isBoolean as B, isCheckbox as C, DEFAULT_HELP_ICON_PROPS as D, getLabelFromBool as E, TEXT_RULES as F, isSingle as G, buildSegmentsPayload as H, buildUrlFromSegment as I, buildFiltersFromURL as J, buildFilterColumnsFromFields as K, MULTI_DROPDOWN_RULES as M, NUMBER_RULES as N, SINGLE_DROPDOWN_RULES as S, TIME_FORMAT as T, _slicedToArray as _, buildDefaultFilters as a, buildFiltersFromSearchParams as b, buildUrlFromFilters as c, _toConsumableArray as d, compareFilters as e, buildSelectorsFromURL as f, getSearchTermFromUrl as g, getSnakeCasedQueryParams as h, isKeywordFilterPresent as i, buildFiltersPayload as j, getColumnsWithStandardizedType as k, buildFilteredColumns as l, isMulti as m, isTreeSelect as n, DEFAULT_BOOLEAN_OPTIONS as o, buildUpdatedFilter as p, isCustomDateRange as q, buildRuleOptions as r, isUndefinedOrEmpty as s, isCustomTimeRange as t, TREE_SELECT_RULES as u, isText as v, isDigit as w, isDate as x, isTime as y, isSingleDate as z };
809
+ //# sourceMappingURL=utils-9ea34335.js.map