@bigbinary/neeto-filters-frontend 3.2.3 → 3.3.0-beta.2

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.
package/dist/index.js CHANGED
@@ -1,53 +1,23 @@
1
- import React, { useState, useRef, useEffect, useTransition, useMemo } from 'react';
1
+ import React, { useState, useEffect, useMemo, useRef, useTransition } from 'react';
2
2
  import classnames from 'classnames';
3
3
  import i18next, { t as t$1 } from 'i18next';
4
- import { findBy, isNotEmpty, capitalize, removeBy, humanize, hyphenate, noop, toLabelAndValue, replaceBy, isPresent, existsBy, isNotPresent, filterBy } from '@bigbinary/neeto-cist';
5
- import { useMutationWithInvalidation, useQueryParams, useDebounce, withT } from '@bigbinary/neeto-commons-frontend/react-utils';
6
- import { buildUrl, getQueryParams, dateFormat } from '@bigbinary/neeto-commons-frontend/utils';
7
- import { Tooltip, Typography, Dropdown as Dropdown$2, Button, Pane as Pane$1, Alert, Select, DatePicker, TimePicker, Input as Input$1, Accordion, Spinner } from '@bigbinary/neetoui';
8
- import { groupBy, anyPass, isNil, isEmpty, any, concat, omit, mergeLeft, toLower, identity, mergeRight, toPairs, not, pluck, either, has, equals, pick, modify, prop, isNotNil, append, last, mergeDeepRight } from 'ramda';
4
+ import { findBy, isNotEmpty, capitalize, removeBy, toLabelAndValue, hyphenate, noop, replaceBy, isNotPresent, existsBy, _existsBy, isPresent, notEqualsDeep, humanize, findById, filterBy } from '@bigbinary/neeto-cist';
5
+ import { useDebounce, useQueryParams, useMutationWithInvalidation, withT } from '@bigbinary/neeto-commons-frontend/react-utils';
6
+ import { groupBy, anyPass, isNil, isEmpty, any, concat, omit, mergeLeft, toLower, identity, mergeRight, toPairs, pluck, either, not, has, equals, pick, last, modify, append, mergeDeepRight, prop, assoc, sortBy, project } from 'ramda';
7
+ import { useQuery, useQueryClient } from 'react-query';
8
+ import { Help, Delete as Delete$1, Plus, Close, Down } from '@bigbinary/neeto-icons';
9
+ import { Select, DatePicker, TimePicker, Input, Button, Pane as Pane$1, Typography, Accordion, Tooltip, Dropdown as Dropdown$2, Alert, Spinner } from '@bigbinary/neetoui';
10
+ import { Form, Input as Input$1, ActionBlock } from '@bigbinary/neetoui/formik';
9
11
  import { useTranslation, Trans } from 'react-i18next';
10
- import { useHistory, useLocation } from 'react-router-dom';
12
+ import { useHistory } from 'react-router-dom/cjs/react-router-dom.min';
13
+ import { buildUrl, getQueryParams, dateFormat, showThumbsUpToastr } from '@bigbinary/neeto-commons-frontend/utils';
14
+ import * as yup from 'yup';
11
15
  import useHotkeys from '@bigbinary/neeto-hotkeys';
12
- import { Help, Close, MenuHorizontal, Down, Settings } from '@bigbinary/neeto-icons';
13
- import { Form, Input, ActionBlock } from '@bigbinary/neetoui/formik';
14
- import { useQuery } from 'react-query';
16
+ import { useHistory as useHistory$1, useLocation } from 'react-router-dom';
15
17
  import axios from 'axios';
16
- import * as yup from 'yup';
17
18
  import Search from '@bigbinary/neeto-molecules/Search';
18
19
  import MenuBar from '@bigbinary/neeto-molecules/MenuBar';
19
- import { FormikInlineInput } from '@bigbinary/neeto-molecules/InlineInput';
20
-
21
- function _arrayLikeToArray(arr, len) {
22
- if (len == null || len > arr.length) len = arr.length;
23
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
24
- return arr2;
25
- }
26
-
27
- function _arrayWithoutHoles(arr) {
28
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
29
- }
30
-
31
- function _iterableToArray(iter) {
32
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
33
- }
34
-
35
- function _unsupportedIterableToArray(o, minLen) {
36
- if (!o) return;
37
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
38
- var n = Object.prototype.toString.call(o).slice(8, -1);
39
- if (n === "Object" && o.constructor) n = o.constructor.name;
40
- if (n === "Map" || n === "Set") return Array.from(o);
41
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
42
- }
43
-
44
- function _nonIterableSpread() {
45
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
46
- }
47
-
48
- function _toConsumableArray(arr) {
49
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
50
- }
20
+ import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
51
21
 
52
22
  function _typeof(o) {
53
23
  "@babel/helpers - typeof";
@@ -90,6 +60,92 @@ function _defineProperty(obj, key, value) {
90
60
  return obj;
91
61
  }
92
62
 
63
+ function _arrayLikeToArray(arr, len) {
64
+ if (len == null || len > arr.length) len = arr.length;
65
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
66
+ return arr2;
67
+ }
68
+
69
+ function _arrayWithoutHoles(arr) {
70
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
71
+ }
72
+
73
+ function _iterableToArray(iter) {
74
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
75
+ }
76
+
77
+ function _unsupportedIterableToArray(o, minLen) {
78
+ if (!o) return;
79
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
80
+ var n = Object.prototype.toString.call(o).slice(8, -1);
81
+ if (n === "Object" && o.constructor) n = o.constructor.name;
82
+ if (n === "Map" || n === "Set") return Array.from(o);
83
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
84
+ }
85
+
86
+ function _nonIterableSpread() {
87
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
88
+ }
89
+
90
+ function _toConsumableArray(arr) {
91
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
92
+ }
93
+
94
+ function _extends() {
95
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
96
+ for (var i = 1; i < arguments.length; i++) {
97
+ var source = arguments[i];
98
+ for (var key in source) {
99
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
100
+ target[key] = source[key];
101
+ }
102
+ }
103
+ }
104
+ return target;
105
+ };
106
+ return _extends.apply(this, arguments);
107
+ }
108
+
109
+ function _arrayWithHoles(arr) {
110
+ if (Array.isArray(arr)) return arr;
111
+ }
112
+
113
+ function _iterableToArrayLimit(r, l) {
114
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
115
+ if (null != t) {
116
+ var e,
117
+ n,
118
+ i,
119
+ u,
120
+ a = [],
121
+ f = !0,
122
+ o = !1;
123
+ try {
124
+ if (i = (t = t.call(r)).next, 0 === l) {
125
+ if (Object(t) !== t) return;
126
+ f = !1;
127
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
128
+ } catch (r) {
129
+ o = !0, n = r;
130
+ } finally {
131
+ try {
132
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
133
+ } finally {
134
+ if (o) throw n;
135
+ }
136
+ }
137
+ return a;
138
+ }
139
+ }
140
+
141
+ function _nonIterableRest() {
142
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
143
+ }
144
+
145
+ function _slicedToArray(arr, i) {
146
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
147
+ }
148
+
93
149
  var SEGMENTS_BASE_URL = "/neeto_filters/segments";
94
150
  var DATE_OPTIONS = [{
95
151
  label: "Today",
@@ -172,21 +228,6 @@ var DATE_RULES = {
172
228
  var SEARCH_TERM_KEY = "search_term";
173
229
  var SEGMENT_ID_KEY = "segment_id";
174
230
 
175
- var SHORTCUTS = {
176
- closePane: {
177
- sequence: "escape",
178
- description: t$1("neetoFilters.shortcuts.closePane")
179
- },
180
- deleteBlock: {
181
- sequence: "backspace",
182
- description: t$1("neetoFilters.shortcuts.deleteBlock")
183
- },
184
- openFilterPane: {
185
- sequence: "enter",
186
- description: t$1("neetoFilters.shortcuts.openFilterPane")
187
- }
188
- };
189
-
190
231
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
191
232
 
192
233
  function getDefaultExportFromCjs (x) {
@@ -204,6 +245,44 @@ dayjs_min.exports;
204
245
  var dayjs_minExports = dayjs_min.exports;
205
246
  var dayjs = /*@__PURE__*/getDefaultExportFromCjs(dayjs_minExports);
206
247
 
248
+ var timezone$1 = {exports: {}};
249
+
250
+ timezone$1.exports;
251
+
252
+ (function (module, exports) {
253
+ !function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||"short",o=t+"|"+i,r=e[o];return r||(r=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10));}var d=r[3],l=24===d?0:d,v=r[0]+"-"+r[1]+"-"+r[2]+" "+l+":"+r[4]+":"+r[5]+":000",h=+e;return (o.utc(v).valueOf()-(h-=h%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString("en-US",{timeZone:t}),u=Math.round((i-new Date(a))/1e3/60),f=o(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-u,!0);if(e){var s=f.utcOffset();f=f.add(n-s,"minute");}return f.$x.$timezone=t,f},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return "timezonename"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if("string"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return [i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t;};}}));
254
+ } (timezone$1, timezone$1.exports));
255
+
256
+ var timezoneExports = timezone$1.exports;
257
+ var timezone = /*@__PURE__*/getDefaultExportFromCjs(timezoneExports);
258
+
259
+ var utc$1 = {exports: {}};
260
+
261
+ utc$1.exports;
262
+
263
+ (function (module, exports) {
264
+ !function(t,i){module.exports=i();}(commonjsGlobal,(function(){var t="minute",i=/[+-]\d\d(?::?\d\d)?/g,e=/([+-]|\d\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t);};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds();}else r.call(this);};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if("string"==typeof s&&(s=function(t){void 0===t&&(t="");var s=t.match(i);if(!s)return null;var f=(""+s[0]).match(e)||["-",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:"+"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r;}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return !!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return "s"===t&&this.$offset?n(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)};}}));
265
+ } (utc$1, utc$1.exports));
266
+
267
+ var utcExports = utc$1.exports;
268
+ var utc = /*@__PURE__*/getDefaultExportFromCjs(utcExports);
269
+
270
+ var weekday$1 = {exports: {}};
271
+
272
+ weekday$1.exports;
273
+
274
+ (function (module, exports) {
275
+ !function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i<t?i+7:i)-t;return this.$utils().u(e)?n:this.subtract(n,"day").add(e,"day")};}}));
276
+ } (weekday$1, weekday$1.exports));
277
+
278
+ var weekdayExports = weekday$1.exports;
279
+ var weekday = /*@__PURE__*/getDefaultExportFromCjs(weekdayExports);
280
+
281
+ dayjs.extend(utc);
282
+ dayjs.extend(timezone);
283
+ dayjs.extend(weekday);
284
+ dayjs.Ls.en.weekStart = 1;
285
+
207
286
  var NUMBER_RULES = [{
208
287
  label: t$1("neetoFilters.rules.is"),
209
288
  value: "is"
@@ -256,86 +335,8 @@ var DEFAULT_HELP_ICON_PROPS = {
256
335
  }
257
336
  };
258
337
 
259
- function _arrayWithHoles(arr) {
260
- if (Array.isArray(arr)) return arr;
261
- }
262
-
263
- function _iterableToArrayLimit(r, l) {
264
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
265
- if (null != t) {
266
- var e,
267
- n,
268
- i,
269
- u,
270
- a = [],
271
- f = !0,
272
- o = !1;
273
- try {
274
- if (i = (t = t.call(r)).next, 0 === l) {
275
- if (Object(t) !== t) return;
276
- f = !1;
277
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
278
- } catch (r) {
279
- o = !0, n = r;
280
- } finally {
281
- try {
282
- if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
283
- } finally {
284
- if (o) throw n;
285
- }
286
- }
287
- return a;
288
- }
289
- }
290
-
291
- function _nonIterableRest() {
292
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
293
- }
294
-
295
- function _slicedToArray(arr, i) {
296
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
297
- }
298
-
299
- var timezone$1 = {exports: {}};
300
-
301
- timezone$1.exports;
302
-
303
- (function (module, exports) {
304
- !function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||"short",o=t+"|"+i,r=e[o];return r||(r=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10));}var d=r[3],l=24===d?0:d,v=r[0]+"-"+r[1]+"-"+r[2]+" "+l+":"+r[4]+":"+r[5]+":000",h=+e;return (o.utc(v).valueOf()-(h-=h%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString("en-US",{timeZone:t}),u=Math.round((i-new Date(a))/1e3/60),f=o(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-u,!0);if(e){var s=f.utcOffset();f=f.add(n-s,"minute");}return f.$x.$timezone=t,f},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return "timezonename"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if("string"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return [i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t;};}}));
305
- } (timezone$1, timezone$1.exports));
306
-
307
- var timezoneExports = timezone$1.exports;
308
- var timezone = /*@__PURE__*/getDefaultExportFromCjs(timezoneExports);
309
-
310
- var utc$1 = {exports: {}};
311
-
312
- utc$1.exports;
313
-
314
- (function (module, exports) {
315
- !function(t,i){module.exports=i();}(commonjsGlobal,(function(){var t="minute",i=/[+-]\d\d(?::?\d\d)?/g,e=/([+-]|\d\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t);};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds();}else r.call(this);};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if("string"==typeof s&&(s=function(t){void 0===t&&(t="");var s=t.match(i);if(!s)return null;var f=(""+s[0]).match(e)||["-",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:"+"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r;}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return !!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return "s"===t&&this.$offset?n(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)};}}));
316
- } (utc$1, utc$1.exports));
317
-
318
- var utcExports = utc$1.exports;
319
- var utc = /*@__PURE__*/getDefaultExportFromCjs(utcExports);
320
-
321
- var weekday$1 = {exports: {}};
322
-
323
- weekday$1.exports;
324
-
325
- (function (module, exports) {
326
- !function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i<t?i+7:i)-t;return this.$utils().u(e)?n:this.subtract(n,"day").add(e,"day")};}}));
327
- } (weekday$1, weekday$1.exports));
328
-
329
- var weekdayExports = weekday$1.exports;
330
- var weekday = /*@__PURE__*/getDefaultExportFromCjs(weekdayExports);
331
-
332
- dayjs.extend(utc);
333
- dayjs.extend(timezone);
334
- dayjs.extend(weekday);
335
- dayjs.Ls.en.weekStart = 1;
336
-
337
- 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; }
338
- 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; }
338
+ 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; }
339
+ 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; }
339
340
  var groupByGroup = groupBy(function (_ref) {
340
341
  var group = _ref.group;
341
342
  return group || "individual";
@@ -634,7 +635,7 @@ var buildDatePayload = function buildDatePayload(value) {
634
635
  var buildSingleDatePayload = function buildSingleDatePayload(filter) {
635
636
  var value = filter.value;
636
637
  var filterValue = Array.isArray(value) ? value.join(",") : value;
637
- return _objectSpread$4(_objectSpread$4({}, filter), {}, {
638
+ return _objectSpread$5(_objectSpread$5({}, filter), {}, {
638
639
  value: filterValue,
639
640
  type: "date"
640
641
  });
@@ -642,7 +643,7 @@ var buildSingleDatePayload = function buildSingleDatePayload(filter) {
642
643
  var buildSingleTimePayload = function buildSingleTimePayload(filter) {
643
644
  var value = filter.value;
644
645
  var filterValue = Array.isArray(value) ? value.join(",") : value;
645
- return _objectSpread$4(_objectSpread$4({}, filter), {}, {
646
+ return _objectSpread$5(_objectSpread$5({}, filter), {}, {
646
647
  value: filterValue,
647
648
  type: "time"
648
649
  });
@@ -910,7 +911,7 @@ var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(_ref22)
910
911
  var id = field.id,
911
912
  name = field.name,
912
913
  kind = field.kind;
913
- var column = _objectSpread$4({
914
+ var column = _objectSpread$5({
914
915
  key: toLower(name),
915
916
  node: "".concat(name, ":").concat(id),
916
917
  label: capitalize(name),
@@ -934,7 +935,7 @@ var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(_ref22)
934
935
  };
935
936
  var getColumnsWithStandardizedType = function getColumnsWithStandardizedType(columns) {
936
937
  return columns.map(function (column) {
937
- return _objectSpread$4(_objectSpread$4({}, column), {}, {
938
+ return _objectSpread$5(_objectSpread$5({}, column), {}, {
938
939
  type: standardizeColumnType(column.type)
939
940
  });
940
941
  });
@@ -943,271 +944,831 @@ var isKeywordFilterPresent = function isKeywordFilterPresent(keyworFilter) {
943
944
  return not(isEmpty(keyworFilter.node));
944
945
  };
945
946
 
946
- var buildCustomDateValue = function buildCustomDateValue(value) {
947
- var isBeforeOrAfter = Math.abs(dayjs(value[1]).diff(dayjs(value[0]), "year")) >= 90;
948
- if (isBeforeOrAfter) {
949
- var currentMoment = dayjs();
950
- var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
951
- var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
952
- return diffWithStart < diffWithEnd ? "after-".concat(dateFormat.date(dayjs(value[0]).subtract(1, "day"))) : "before-".concat(dateFormat.date(dayjs(value[1]).add(1, "day")));
947
+ var buildDropdownValue = function buildDropdownValue(_ref) {
948
+ var defaultType = _ref.defaultType,
949
+ filter = _ref.filter,
950
+ options = _ref.options;
951
+ if (!filter) return null;
952
+ if (isMulti(defaultType)) {
953
+ return options.filter(function (_ref2) {
954
+ var value = _ref2.value;
955
+ return filter.value.includes(value);
956
+ });
953
957
  }
954
- return value.map(dateFormat.date).join(" - ");
958
+ return findBy({
959
+ value: filter.value
960
+ }, options);
955
961
  };
956
- var buildFilterValue = function buildFilterValue(filter) {
962
+ var buildSingleTimeValue = function buildSingleTimeValue(filter) {
957
963
  var _findBy2;
958
- var _filter$defaultType = filter.defaultType,
959
- defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
960
- value = filter.value,
961
- rule = filter.rule,
962
- _filter$values = filter.values,
963
- initialValues = _filter$values === void 0 ? [] : _filter$values;
964
- var values = initialValues.map(modify("value", function (value) {
965
- return value.toString();
964
+ if (!filter) return null;
965
+ return (_findBy2 = findBy({
966
+ value: filter.value
967
+ }, TIME_OPTIONS)) !== null && _findBy2 !== void 0 ? _findBy2 : last(TIME_OPTIONS);
968
+ };
969
+ var getOtherProps = function getOtherProps(props) {
970
+ return omit(["key", "node", "label", "type", "values", "model", "showRuleSelector"], props);
971
+ };
972
+ var buildDropdownOptions = function buildDropdownOptions(_ref3) {
973
+ var defaultType = _ref3.defaultType,
974
+ filter = _ref3.filter,
975
+ options = _ref3.options;
976
+ options = options.map(modify("value", function (value) {
977
+ return value === null || value === void 0 ? void 0 : value.toString();
966
978
  }));
967
- if (isDate(defaultType) && isCustomDateRange(value)) {
968
- return buildCustomDateValue(value);
969
- } else if (isTime(defaultType) && isCustomTimeRange(value)) {
970
- return value.map(dateFormat.time).join(" - ");
971
- } else if (isDate(defaultType) || isTime(defaultType)) {
972
- return humanize(value);
973
- } else if (isMulti(defaultType)) {
974
- return value.map(function (value) {
975
- var _findBy;
976
- return ((_findBy = findBy({
979
+ if (!filter) return options;
980
+ if (isMulti(defaultType)) {
981
+ var selectedOptions = filter.value.map(function (value) {
982
+ return findBy({
977
983
  value: value
978
- }, values)) === null || _findBy === void 0 ? void 0 : _findBy.label) || value;
979
- }).join(", ");
980
- } else if (isSingleDate(defaultType)) {
981
- return rule === "between" ? value.map(dateFormat.date).join(" - ") : dateFormat.date(value);
982
- } else if (isSingleTime(defaultType)) {
983
- return rule === "between" ? value.map(dateFormat.time).join(" - ") : dateFormat.time(value);
984
- } else if (isBoolean(defaultType)) {
985
- return getLabelFromBool({
986
- value: value,
987
- values: values
984
+ }, options) || toLabelAndValue(value);
985
+ });
986
+ var nonSelectedOptions = options.filter(function (option) {
987
+ return !filter.value.includes(option.value);
988
988
  });
989
+ return concat(selectedOptions, nonSelectedOptions);
989
990
  }
990
- return ((_findBy2 = findBy({
991
- value: value
992
- }, values)) === null || _findBy2 === void 0 ? void 0 : _findBy2.label) || value;
991
+ if (!findBy({
992
+ value: filter.value
993
+ }, options)) {
994
+ return append(toLabelAndValue(filter.value), options);
995
+ }
996
+ return options;
993
997
  };
994
- var buildRuleValue = function buildRuleValue(_ref) {
995
- var rule = _ref.rule,
996
- defaultType = _ref.defaultType;
997
- if (isText(defaultType)) {
998
- return findBy({
999
- value: rule
1000
- }, TEXT_RULES).label;
1001
- } else if (isDigit(defaultType)) {
1002
- return findBy({
1003
- value: rule
1004
- }, NUMBER_RULES).label;
1005
- } else if (isSingleDate(defaultType)) {
1006
- return findBy({
1007
- value: rule
1008
- }, SINGLE_DATE_OPTIONS).label;
1009
- } else if (isSingleTime(defaultType)) {
1010
- return findBy({
1011
- value: rule
1012
- }, SINGLE_TIME_OPTIONS).label;
998
+ var initializeDateRule = function initializeDateRule(filter) {
999
+ return filter ? findBy({
1000
+ value: filter === null || filter === void 0 ? void 0 : filter.value
1001
+ }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
1002
+ };
1003
+ var getDateValue = function getDateValue(value, rule) {
1004
+ if (isEmpty(value) || isNil(value)) {
1005
+ return null;
1013
1006
  }
1014
- return "";
1007
+ if (rule.value === "custom-date-range") {
1008
+ return value;
1009
+ }
1010
+ return rule.value === "before" ? dayjs(value[1]).add(1, "day") : dayjs(value[0]).subtract(1, "day");
1015
1011
  };
1016
- var hasOnlyKeywordFilter = function hasOnlyKeywordFilter(filters) {
1017
- return filters.length === 1 && filters[0].key === SEARCH_TERM_KEY;
1012
+ var findDateOption = function findDateOption(filter, options) {
1013
+ var value = filter.value;
1014
+ var isBeforeOrAfter = dayjs(value[1]).diff(dayjs(value[0]), "year") >= 90;
1015
+ if (not(isBeforeOrAfter)) {
1016
+ return last(options);
1017
+ }
1018
+ var currentMoment = dayjs();
1019
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
1020
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
1021
+ return diffWithStart < diffWithEnd ? findBy({
1022
+ value: "after"
1023
+ }, options) : findBy({
1024
+ value: "before"
1025
+ }, options);
1026
+ };
1027
+ var buildDateValues = function buildDateValues(dates, selectedRule) {
1028
+ if (selectedRule.value === "after") {
1029
+ return [dates.add(1, "day"), dates.add(100, "year")];
1030
+ } else if (selectedRule.value === "before") {
1031
+ return [dates.subtract(100, "year"), dates.subtract(1, "day")];
1032
+ }
1033
+ return dates;
1034
+ };
1035
+ var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
1036
+ return mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
1018
1037
  };
1019
1038
 
1020
- var Block = function Block(_ref) {
1021
- var filter = _ref.filter,
1022
- handleDelete = _ref.handleDelete,
1023
- setIsPaneOpen = _ref.setIsPaneOpen;
1024
- var key = filter.key,
1025
- _filter$defaultType = filter.defaultType,
1026
- defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
1027
- label = filter.label,
1028
- rule = filter.rule,
1029
- defaultValue = filter.defaultValue;
1030
- var filterValue = buildFilterValue(filter);
1031
- var ruleContent = buildRuleValue({
1032
- rule: rule,
1033
- defaultType: defaultType
1034
- });
1035
- var blockLength = label.length + ruleContent.length + filterValue.length;
1036
- var toolTipDisabled = blockLength <= 50;
1037
- var blockContent = !toolTipDisabled ? "".concat(filterValue.slice(0, 50 - blockLength), "...") : filterValue;
1038
- var deleteBlockHotKeyRef = useHotkeys(SHORTCUTS.deleteBlock.sequence, function () {
1039
- return handleDelete(key);
1040
- }, {
1041
- mode: "scoped"
1042
- });
1043
- var openFilterPaneHotKeyRef = useHotkeys(SHORTCUTS.openFilterPane.sequence, function () {
1044
- return setIsPaneOpen(key);
1045
- }, {
1046
- mode: "scoped"
1039
+ var Boolean = function Boolean(_ref) {
1040
+ var column = _ref.column,
1041
+ filter = _ref.filter,
1042
+ handleApplyFilter = _ref.handleApplyFilter,
1043
+ autoFocus = _ref.autoFocus;
1044
+ var key = column.key,
1045
+ _column$defaultType = column.defaultType,
1046
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1047
+ label = column.label,
1048
+ values = column.values,
1049
+ _column$helpIconProps = column.helpIconProps,
1050
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1051
+ var options = isNil(values) || isEmpty(values) ? DEFAULT_BOOLEAN_OPTIONS : values;
1052
+ var otherProps = getOtherProps(column);
1053
+ var value = buildDropdownValue({
1054
+ defaultType: defaultType,
1055
+ filter: filter,
1056
+ options: options
1047
1057
  });
1048
- return /*#__PURE__*/React.createElement(Tooltip, {
1049
- content: filterValue,
1050
- disabled: toolTipDisabled,
1051
- position: "bottom",
1052
- theme: "light"
1053
- }, /*#__PURE__*/React.createElement("div", {
1054
- className: "neeto-filters-bar__block",
1055
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-block"),
1056
- tabIndex: 0,
1057
- ref: function ref(node) {
1058
- deleteBlockHotKeyRef.current = node;
1059
- openFilterPaneHotKeyRef.current = node;
1060
- },
1061
- onClick: function onClick() {
1062
- return setIsPaneOpen(key);
1058
+ var _useTranslation = useTranslation(),
1059
+ t = _useTranslation.t;
1060
+ var handleChange = function handleChange(option) {
1061
+ if (isEmpty(option) || isNil(option)) {
1062
+ handleApplyFilter({
1063
+ _delete: true
1064
+ });
1065
+ return;
1063
1066
  }
1064
- }, /*#__PURE__*/React.createElement(Typography, {
1065
- style: "body2"
1066
- }, label, ":"), /*#__PURE__*/React.createElement(Typography, {
1067
- className: "neeto-ui-text-gray-600",
1068
- style: "body2"
1069
- }, ruleContent), /*#__PURE__*/React.createElement(Typography, {
1070
- style: "body2"
1071
- }, blockContent), !defaultValue && /*#__PURE__*/React.createElement("div", {
1072
- className: "neeto-filters-bar__block-close"
1073
- }, /*#__PURE__*/React.createElement(Close, {
1074
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-block-close-btn"),
1075
- size: 16,
1076
- strokeWidth: 2,
1077
- onClick: function onClick(event) {
1078
- event.stopPropagation();
1079
- handleDelete(key);
1067
+ var updatedFilter = buildUpdatedFilter({
1068
+ column: column,
1069
+ defaultType: defaultType,
1070
+ option: option
1071
+ });
1072
+ handleApplyFilter(updatedFilter);
1073
+ };
1074
+ return /*#__PURE__*/React.createElement("div", {
1075
+ className: "neeto-filters-pane-filter__item-wrapper"
1076
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1077
+ autoFocus: autoFocus,
1078
+ label: label,
1079
+ options: options,
1080
+ value: value,
1081
+ isClearable: true
1082
+ }, isNotEmpty(helpIconProps) && {
1083
+ labelProps: {
1084
+ helpIconProps: buildHelpIconProps(helpIconProps)
1080
1085
  }
1081
- }))));
1086
+ }, {
1087
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1088
+ strategy: "fixed",
1089
+ placeholder: t("neetoFilters.messages.selectOption", {
1090
+ resource: label
1091
+ }),
1092
+ onChange: handleChange
1093
+ }, otherProps)));
1082
1094
  };
1095
+ var Boolean$1 = /*#__PURE__*/React.memo(Boolean);
1083
1096
 
1084
- var ChildBlock = function ChildBlock(_ref) {
1085
- var childKey = _ref.childKey,
1086
- setIsPaneOpen = _ref.setIsPaneOpen,
1087
- handleDelete = _ref.handleDelete;
1088
- var deleteBlockHotKeyRef = useHotkeys(SHORTCUTS.deleteBlock.sequence, function () {
1089
- return handleDelete(childKey);
1097
+ var Datetime = function Datetime(_ref) {
1098
+ var column = _ref.column,
1099
+ filter = _ref.filter,
1100
+ handleApplyFilter = _ref.handleApplyFilter,
1101
+ autoFocus = _ref.autoFocus;
1102
+ var _useState = useState(initializeDateRule(filter)),
1103
+ _useState2 = _slicedToArray(_useState, 2),
1104
+ selectedRule = _useState2[0],
1105
+ setSelectedRule = _useState2[1];
1106
+ var _useTranslation = useTranslation(),
1107
+ t = _useTranslation.t;
1108
+ var key = column.key,
1109
+ _column$defaultType = column.defaultType,
1110
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1111
+ label = column.label,
1112
+ _column$helpIconProps = column.helpIconProps,
1113
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1114
+ var isDatePickerShown = filter && isCustomDateRange(filter.value);
1115
+ var otherProps = getOtherProps(column);
1116
+ var handleChange = function handleChange(option) {
1117
+ if (isEmpty(option) || isNil(option)) {
1118
+ handleApplyFilter({
1119
+ _delete: true
1120
+ });
1121
+ setSelectedRule({});
1122
+ return;
1123
+ }
1124
+ setSelectedRule(option);
1125
+ var updatedFilter = buildUpdatedFilter({
1126
+ column: column,
1127
+ defaultType: defaultType,
1128
+ option: option
1129
+ });
1130
+ handleApplyFilter(updatedFilter);
1131
+ };
1132
+ var handleDateRangeChange = function handleDateRangeChange(dates) {
1133
+ if (isEmpty(dates) || isNil(dates)) {
1134
+ handleApplyFilter({
1135
+ _delete: true
1136
+ });
1137
+ setSelectedRule({});
1138
+ return;
1139
+ }
1140
+ var updatedFilter = buildUpdatedFilter({
1141
+ column: column,
1142
+ defaultType: defaultType,
1143
+ option: {
1144
+ value: pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
1145
+ return date.toISOString();
1146
+ })
1147
+ }
1148
+ });
1149
+ handleApplyFilter(updatedFilter);
1150
+ };
1151
+ useEffect(function () {
1152
+ isNil(filter) && setSelectedRule({});
1153
+ }, [filter]);
1154
+ return /*#__PURE__*/React.createElement("div", {
1155
+ className: "neeto-filters-pane-filter__item-wrapper"
1156
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1157
+ autoFocus: autoFocus,
1158
+ label: label,
1159
+ isClearable: true,
1160
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1161
+ options: DATE_OPTIONS,
1162
+ strategy: "fixed",
1163
+ value: selectedRule,
1164
+ placeholder: t("neetoFilters.messages.selectResource", {
1165
+ resource: label
1166
+ })
1167
+ }, isNotEmpty(helpIconProps) && {
1168
+ labelProps: {
1169
+ helpIconProps: buildHelpIconProps(helpIconProps)
1170
+ }
1090
1171
  }, {
1091
- mode: "scoped"
1172
+ onChange: handleChange
1173
+ })), isDatePickerShown && /*#__PURE__*/React.createElement(DatePicker, _extends({
1174
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-date-range"),
1175
+ getPopupContainer: prop("parentNode"),
1176
+ type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
1177
+ value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
1178
+ onChange: handleDateRangeChange
1179
+ }, otherProps)));
1180
+ };
1181
+ var Datetime$1 = /*#__PURE__*/React.memo(Datetime);
1182
+
1183
+ var Dropdown = function Dropdown(_ref) {
1184
+ var column = _ref.column,
1185
+ filter = _ref.filter,
1186
+ handleApplyFilter = _ref.handleApplyFilter,
1187
+ autoFocus = _ref.autoFocus;
1188
+ var key = column.key,
1189
+ label = column.label,
1190
+ values = column.values,
1191
+ defaultValue = column.defaultValue,
1192
+ _column$defaultType = column.defaultType,
1193
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1194
+ _column$isClearable = column.isClearable,
1195
+ isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
1196
+ _column$helpIconProps = column.helpIconProps,
1197
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1198
+ var otherProps = getOtherProps(column);
1199
+ var options = buildDropdownOptions({
1200
+ defaultType: defaultType,
1201
+ filter: filter,
1202
+ options: values
1092
1203
  });
1093
- var openFilterPaneHotKeyRef = useHotkeys(SHORTCUTS.openFilterPane.sequence, function () {
1094
- return setIsPaneOpen(childKey);
1204
+ var value = buildDropdownValue({
1205
+ defaultType: defaultType,
1206
+ filter: filter,
1207
+ options: options
1208
+ });
1209
+ var _useTranslation = useTranslation(),
1210
+ t = _useTranslation.t;
1211
+ var handleChange = function handleChange(option) {
1212
+ if (isEmpty(option) || isNil(option)) {
1213
+ handleApplyFilter({
1214
+ _delete: true
1215
+ });
1216
+ return;
1217
+ }
1218
+ var updatedFilter = buildUpdatedFilter({
1219
+ column: column,
1220
+ defaultType: defaultType,
1221
+ option: option
1222
+ });
1223
+ handleApplyFilter(updatedFilter);
1224
+ };
1225
+ return /*#__PURE__*/React.createElement("div", {
1226
+ className: "neeto-filters-pane-filter__item-wrapper"
1227
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1228
+ autoFocus: autoFocus,
1229
+ label: label,
1230
+ options: options,
1231
+ value: value,
1232
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1233
+ isClearable: !defaultValue && isClearable,
1234
+ isMulti: isMulti(defaultType),
1235
+ strategy: "fixed",
1236
+ placeholder: t("neetoFilters.messages.selectResource", {
1237
+ resource: label
1238
+ })
1239
+ }, isNotEmpty(helpIconProps) && {
1240
+ labelProps: {
1241
+ helpIconProps: buildHelpIconProps(helpIconProps)
1242
+ }
1095
1243
  }, {
1096
- mode: "scoped"
1244
+ onChange: handleChange
1245
+ }, otherProps)));
1246
+ };
1247
+ var Dropdown$1 = /*#__PURE__*/React.memo(Dropdown);
1248
+
1249
+ var SingleDatetime = function SingleDatetime(_ref) {
1250
+ var column = _ref.column,
1251
+ filter = _ref.filter,
1252
+ filters = _ref.filters,
1253
+ handleApplyFilter = _ref.handleApplyFilter,
1254
+ autoFocus = _ref.autoFocus;
1255
+ var _useState = useState(function () {
1256
+ return findBy({
1257
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
1258
+ }, SINGLE_DATE_OPTIONS) || SINGLE_DATE_OPTIONS[0];
1259
+ }),
1260
+ _useState2 = _slicedToArray(_useState, 2),
1261
+ selectedRule = _useState2[0],
1262
+ setSelectedRule = _useState2[1];
1263
+ var key = column.key,
1264
+ _column$defaultType = column.defaultType,
1265
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1266
+ label = column.label,
1267
+ _column$helpIconProps = column.helpIconProps,
1268
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1269
+ var otherProps = getOtherProps(column);
1270
+ var datePickerType = selectedRule.value === "between" ? "range" : "date";
1271
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
1272
+
1273
+ // Reset states when "Clear filters" button is clicked.
1274
+ useEffect(function () {
1275
+ if (!isEmpty(filters)) return;
1276
+ setSelectedRule(SINGLE_DATE_OPTIONS[0]);
1277
+ }, [filters]);
1278
+ var handleRuleChange = function handleRuleChange(ruleOption) {
1279
+ setSelectedRule(ruleOption);
1280
+
1281
+ // Clear value if switched between incompatable types
1282
+ var updateValue = value;
1283
+ if (datePickerType === "range" && ruleOption.value !== "between" || datePickerType === "date" && ruleOption.value === "between") {
1284
+ updateValue = "";
1285
+ }
1286
+ var updatedFilter = buildUpdatedFilter({
1287
+ column: column,
1288
+ defaultType: defaultType,
1289
+ option: {},
1290
+ rule: ruleOption.value,
1291
+ value: updateValue
1292
+ });
1293
+ handleApplyFilter(updatedFilter);
1294
+ };
1295
+ var handleChange = function handleChange(dates) {
1296
+ if (isEmpty(dates) || isNil(dates)) {
1297
+ handleApplyFilter({
1298
+ _delete: true
1299
+ });
1300
+ return;
1301
+ }
1302
+ var value = datePickerType === "range" ? pluck("$d", dates).map(function (date) {
1303
+ return date.toISOString();
1304
+ }) : dates["$d"];
1305
+ var updatedFilter = buildUpdatedFilter({
1306
+ column: column,
1307
+ defaultType: defaultType,
1308
+ option: {},
1309
+ rule: selectedRule.value,
1310
+ value: value
1311
+ });
1312
+ handleApplyFilter(updatedFilter);
1313
+ };
1314
+ return /*#__PURE__*/React.createElement("div", {
1315
+ className: "neeto-filters-pane-filter__item-wrapper"
1316
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1317
+ label: label,
1318
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
1319
+ defaultValue: SINGLE_DATE_OPTIONS[0],
1320
+ options: SINGLE_DATE_OPTIONS,
1321
+ strategy: "fixed",
1322
+ value: selectedRule
1323
+ }, isNotEmpty(helpIconProps) && {
1324
+ labelProps: {
1325
+ helpIconProps: buildHelpIconProps(helpIconProps)
1326
+ }
1327
+ }, {
1328
+ onChange: handleRuleChange
1329
+ })), /*#__PURE__*/React.createElement(DatePicker, _extends({
1330
+ autoFocus: autoFocus,
1331
+ value: value,
1332
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1333
+ getPopupContainer: prop("parentNode"),
1334
+ type: datePickerType,
1335
+ onChange: handleChange
1336
+ }, otherProps)));
1337
+ };
1338
+
1339
+ var SingleTime = function SingleTime(_ref) {
1340
+ var column = _ref.column,
1341
+ filter = _ref.filter,
1342
+ filters = _ref.filters,
1343
+ handleApplyFilter = _ref.handleApplyFilter,
1344
+ autoFocus = _ref.autoFocus;
1345
+ var _useState = useState(function () {
1346
+ return findBy({
1347
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
1348
+ }, SINGLE_TIME_OPTIONS) || SINGLE_TIME_OPTIONS[0];
1349
+ }),
1350
+ _useState2 = _slicedToArray(_useState, 2),
1351
+ selectedRule = _useState2[0],
1352
+ setSelectedRule = _useState2[1];
1353
+ var key = column.key,
1354
+ _column$defaultType = column.defaultType,
1355
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1356
+ label = column.label,
1357
+ _column$helpIconProps = column.helpIconProps,
1358
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1359
+ var otherProps = getOtherProps(column);
1360
+ var timePickerType = selectedRule.value === "between" ? "range" : "time";
1361
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
1362
+ useEffect(function () {
1363
+ if (!isEmpty(filters)) return;
1364
+ setSelectedRule(SINGLE_TIME_OPTIONS[0]);
1365
+ }, [filters]);
1366
+ var handleRuleChange = function handleRuleChange(ruleOption) {
1367
+ setSelectedRule(ruleOption);
1368
+
1369
+ // Clear value if switched between incompatible types
1370
+ var updateValue = value;
1371
+ if (timePickerType === "range" && ruleOption.value !== "between" || timePickerType === "time" && ruleOption.value === "between") {
1372
+ updateValue = "";
1373
+ }
1374
+ var updatedFilter = buildUpdatedFilter({
1375
+ column: column,
1376
+ defaultType: defaultType,
1377
+ option: {},
1378
+ rule: ruleOption.value,
1379
+ value: updateValue
1380
+ });
1381
+ handleApplyFilter(updatedFilter);
1382
+ };
1383
+ var handleChange = function handleChange(times) {
1384
+ var value = timePickerType === "range" ? pluck("$d", times).map(function (time) {
1385
+ return time.toISOString();
1386
+ }) : times["$d"].toISOString();
1387
+ var updatedFilter = buildUpdatedFilter({
1388
+ column: column,
1389
+ defaultType: defaultType,
1390
+ option: {},
1391
+ rule: selectedRule.value,
1392
+ value: value
1393
+ });
1394
+ handleApplyFilter(updatedFilter);
1395
+ };
1396
+ return /*#__PURE__*/React.createElement("div", {
1397
+ className: "neeto-filters-pane-filter__item-wrapper"
1398
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1399
+ label: label,
1400
+ defaultValue: SINGLE_TIME_OPTIONS[0],
1401
+ options: SINGLE_TIME_OPTIONS,
1402
+ strategy: "fixed",
1403
+ value: selectedRule
1404
+ }, isNotEmpty(helpIconProps) && {
1405
+ labelProps: {
1406
+ helpIconProps: buildHelpIconProps(helpIconProps)
1407
+ }
1408
+ }, {
1409
+ onChange: handleRuleChange
1410
+ })), /*#__PURE__*/React.createElement(TimePicker, _extends({
1411
+ autoFocus: autoFocus,
1412
+ value: value,
1413
+ use12Hours: true,
1414
+ className: "w-full",
1415
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1416
+ format: "h:mm A",
1417
+ getPopupContainer: prop("parentNode"),
1418
+ type: timePickerType,
1419
+ onChange: handleChange
1420
+ }, otherProps)));
1421
+ };
1422
+
1423
+ var Text = function Text(_ref) {
1424
+ var column = _ref.column,
1425
+ filter = _ref.filter,
1426
+ filters = _ref.filters,
1427
+ handleApplyFilter = _ref.handleApplyFilter,
1428
+ autoFocus = _ref.autoFocus,
1429
+ onClose = _ref.onClose;
1430
+ var key = column.key,
1431
+ _column$defaultType = column.defaultType,
1432
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1433
+ label = column.label,
1434
+ _column$showRuleSelec = column.showRuleSelector,
1435
+ showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
1436
+ _column$helpIconProps = column.helpIconProps,
1437
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1438
+ var otherProps = getOtherProps(column);
1439
+ var ruleOptions = buildRuleOptions({
1440
+ defaultType: defaultType
1097
1441
  });
1442
+ var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
1443
+ var _useState = useState(filter === null || filter === void 0 ? void 0 : filter.value),
1444
+ _useState2 = _slicedToArray(_useState, 2),
1445
+ inputValue = _useState2[0],
1446
+ setInputValue = _useState2[1];
1447
+ var _useState3 = useState(function () {
1448
+ return findBy({
1449
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
1450
+ }, ruleOptions) || ruleOptions[0];
1451
+ }),
1452
+ _useState4 = _slicedToArray(_useState3, 2),
1453
+ selectedRule = _useState4[0],
1454
+ setSelectedRule = _useState4[1];
1455
+ var debouncedInputValue = useDebounce(inputValue);
1456
+ var _useTranslation = useTranslation(),
1457
+ t = _useTranslation.t;
1458
+ var handleUpdateAndApplyFilter = function handleUpdateAndApplyFilter() {
1459
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : debouncedInputValue;
1460
+ var rule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedRule;
1461
+ if (equals(filter === null || filter === void 0 ? void 0 : filter.value, value) && equals(selectedRule, rule)) return;
1462
+ var updatedFilter = buildUpdatedFilter({
1463
+ column: column,
1464
+ defaultType: defaultType,
1465
+ option: {},
1466
+ rule: rule.value,
1467
+ value: value.trim()
1468
+ });
1469
+ handleApplyFilter(updatedFilter);
1470
+ };
1471
+ var handleKeydown = function handleKeydown(e) {
1472
+ if (!(e.key === "Enter")) return;
1473
+ handleUpdateAndApplyFilter(inputValue);
1474
+ onClose();
1475
+ };
1476
+ var handleRuleChange = function handleRuleChange(ruleOption) {
1477
+ setSelectedRule(ruleOption);
1478
+ if (!debouncedInputValue) return;
1479
+ handleUpdateAndApplyFilter(debouncedInputValue, ruleOption);
1480
+ };
1481
+
1482
+ // Reset states when "Clear filters" button is clicked.
1483
+ useEffect(function () {
1484
+ (isEmpty(filters) || isNil(filter)) && setInputValue("");
1485
+ }, [filter]);
1486
+ useEffect(function () {
1487
+ if (!debouncedInputValue) {
1488
+ !isUndefinedOrEmpty(filter) && handleApplyFilter({
1489
+ _delete: true
1490
+ });
1491
+ return;
1492
+ }
1493
+ handleUpdateAndApplyFilter();
1494
+ }, [debouncedInputValue]);
1098
1495
  return /*#__PURE__*/React.createElement("div", {
1099
- className: "neeto-filters-bar__block",
1100
- "data-cy": "neeto-filters-".concat(hyphenate(childKey), "-block"),
1101
- tabIndex: 0,
1102
- ref: function ref(node) {
1103
- deleteBlockHotKeyRef.current = node;
1104
- openFilterPaneHotKeyRef.current = node;
1496
+ className: "neeto-filters-pane-filter__item-wrapper"
1497
+ }, showRuleSelector && /*#__PURE__*/React.createElement(Select, _extends({
1498
+ label: label,
1499
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
1500
+ defaultValue: ruleOptions[0],
1501
+ options: ruleOptions,
1502
+ strategy: "fixed",
1503
+ value: selectedRule,
1504
+ onChange: handleRuleChange
1505
+ }, isNotEmpty(helpIconProps) && {
1506
+ labelProps: {
1507
+ helpIconProps: buildHelpIconProps(helpIconProps)
1508
+ }
1509
+ })), /*#__PURE__*/React.createElement(Input, _extends({
1510
+ autoFocus: autoFocus,
1511
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1512
+ label: !showRuleSelector && label,
1513
+ type: inputType,
1514
+ value: inputValue
1515
+ }, isNotEmpty(helpIconProps) && {
1516
+ labelProps: {
1517
+ helpIconProps: buildHelpIconProps(helpIconProps)
1518
+ }
1519
+ }, {
1520
+ placeholder: t("neetoFilters.messages.enterResource", {
1521
+ resource: label
1522
+ }),
1523
+ onChange: function onChange(event) {
1524
+ return setInputValue(event.target.value);
1105
1525
  },
1106
- onClick: function onClick() {
1107
- return setIsPaneOpen(childKey);
1526
+ onKeyDown: handleKeydown
1527
+ }, otherProps)));
1528
+ };
1529
+
1530
+ var Time = function Time(_ref) {
1531
+ var column = _ref.column,
1532
+ filter = _ref.filter,
1533
+ handleApplyFilter = _ref.handleApplyFilter,
1534
+ autoFocus = _ref.autoFocus;
1535
+ var key = column.key,
1536
+ _column$defaultType = column.defaultType,
1537
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1538
+ label = column.label,
1539
+ _column$helpIconProps = column.helpIconProps,
1540
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1541
+ var otherProps = getOtherProps(column);
1542
+ var value = buildSingleTimeValue(filter);
1543
+ var isCustomTimeRangeShown = filter && isCustomTimeRange(filter.value);
1544
+ var _useTranslation = useTranslation(),
1545
+ t = _useTranslation.t;
1546
+ var handleChange = function handleChange(option) {
1547
+ if (isEmpty(option) || isNil(option)) {
1548
+ handleApplyFilter({
1549
+ _delete: true
1550
+ });
1551
+ return;
1108
1552
  }
1109
- }, /*#__PURE__*/React.createElement(Typography, {
1110
- style: "body2",
1111
- weight: "medium"
1112
- }, childKey), /*#__PURE__*/React.createElement("div", {
1113
- className: "neeto-filters-bar__block-close"
1114
- }, /*#__PURE__*/React.createElement(Close, {
1115
- "data-cy": "neeto-filters-".concat(hyphenate(childKey), "-block-close-btn"),
1116
- size: 16,
1117
- strokeWidth: 2,
1118
- onClick: function onClick(event) {
1119
- event.stopPropagation();
1120
- handleDelete(childKey);
1553
+ var updatedFilter = buildUpdatedFilter({
1554
+ column: column,
1555
+ defaultType: defaultType,
1556
+ option: option
1557
+ });
1558
+ handleApplyFilter(updatedFilter);
1559
+ };
1560
+ var handleTimeRangeChange = function handleTimeRangeChange(times) {
1561
+ var updatedFilter = buildUpdatedFilter({
1562
+ column: column,
1563
+ defaultType: defaultType,
1564
+ option: {
1565
+ value: pluck("$d", times).map(function (time) {
1566
+ return time.toISOString();
1567
+ })
1568
+ }
1569
+ });
1570
+ handleApplyFilter(updatedFilter);
1571
+ };
1572
+ return /*#__PURE__*/React.createElement("div", {
1573
+ className: "neeto-filters-pane-filter__item-wrapper"
1574
+ }, /*#__PURE__*/React.createElement(Select, _extends({
1575
+ autoFocus: autoFocus,
1576
+ label: label,
1577
+ value: value,
1578
+ isClearable: true,
1579
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1580
+ options: TIME_OPTIONS,
1581
+ strategy: "fixed",
1582
+ placeholder: t("neetoFilters.messages.selectResource", {
1583
+ resource: label
1584
+ })
1585
+ }, isNotEmpty(helpIconProps) && {
1586
+ labelProps: {
1587
+ helpIconProps: buildHelpIconProps(helpIconProps)
1121
1588
  }
1122
- })));
1589
+ }, {
1590
+ onChange: handleChange
1591
+ })), isCustomTimeRangeShown && /*#__PURE__*/React.createElement(TimePicker, _extends({
1592
+ use12Hours: true,
1593
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-date-range"),
1594
+ format: "h:mm A",
1595
+ getPopupContainer: prop("parentNode"),
1596
+ type: "range",
1597
+ value: filter.value,
1598
+ onChange: handleTimeRangeChange
1599
+ }, otherProps)));
1123
1600
  };
1601
+ var Time$1 = /*#__PURE__*/React.memo(Time);
1124
1602
 
1125
- var fetch = function fetch(params) {
1126
- return axios.get(SEGMENTS_BASE_URL, {
1127
- params: params
1128
- });
1129
- };
1130
- var show = function show(id) {
1131
- return axios.get("".concat(SEGMENTS_BASE_URL, "/").concat(id), {
1132
- transformResponseCase: false
1133
- });
1134
- };
1135
- var create = function create(payload) {
1136
- return axios.post(SEGMENTS_BASE_URL, {
1137
- segment: payload
1138
- });
1139
- };
1140
- var update = function update(_ref) {
1141
- var id = _ref.id,
1142
- payload = _ref.payload,
1143
- _ref$showToastr = _ref.showToastr,
1144
- showToastr = _ref$showToastr === void 0 ? true : _ref$showToastr;
1145
- return axios.put("".concat(SEGMENTS_BASE_URL, "/").concat(id), payload, {
1146
- showToastr: showToastr
1603
+ var Item = function Item(_ref) {
1604
+ var column = _ref.column,
1605
+ filters = _ref.filters,
1606
+ onChange = _ref.onChange,
1607
+ autoFocus = _ref.autoFocus,
1608
+ _ref$onClose = _ref.onClose,
1609
+ onClose = _ref$onClose === void 0 ? noop : _ref$onClose;
1610
+ var key = column.key,
1611
+ _column$defaultType = column.defaultType,
1612
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType;
1613
+ var filter = useMemo(function () {
1614
+ return findBy({
1615
+ key: key
1616
+ }, filters);
1617
+ }, [filters, key]);
1618
+ var handleApplyFilter = function handleApplyFilter(updatedFilter) {
1619
+ if (updatedFilter._delete) onChange(removeBy({
1620
+ key: key
1621
+ }, filters));else if (!filter) onChange(append(updatedFilter, filters));else onChange(replaceBy({
1622
+ key: key
1623
+ }, updatedFilter, filters));
1624
+ };
1625
+ if (isText(defaultType) || isDigit(defaultType)) {
1626
+ return /*#__PURE__*/React.createElement(Text, {
1627
+ autoFocus: autoFocus,
1628
+ column: column,
1629
+ filter: filter,
1630
+ filters: filters,
1631
+ handleApplyFilter: handleApplyFilter,
1632
+ onClose: onClose
1633
+ });
1634
+ }
1635
+ if (isDate(defaultType)) {
1636
+ return /*#__PURE__*/React.createElement(Datetime$1, {
1637
+ autoFocus: autoFocus,
1638
+ column: column,
1639
+ filter: filter,
1640
+ handleApplyFilter: handleApplyFilter
1641
+ });
1642
+ }
1643
+ if (isTime(defaultType)) {
1644
+ return /*#__PURE__*/React.createElement(Time$1, {
1645
+ autoFocus: autoFocus,
1646
+ column: column,
1647
+ filter: filter,
1648
+ handleApplyFilter: handleApplyFilter
1649
+ });
1650
+ }
1651
+ if (isSingleDate(defaultType)) {
1652
+ return /*#__PURE__*/React.createElement(SingleDatetime, {
1653
+ autoFocus: autoFocus,
1654
+ column: column,
1655
+ filter: filter,
1656
+ filters: filters,
1657
+ handleApplyFilter: handleApplyFilter
1658
+ });
1659
+ }
1660
+ if (isSingleTime(defaultType)) {
1661
+ return /*#__PURE__*/React.createElement(SingleTime, {
1662
+ autoFocus: autoFocus,
1663
+ column: column,
1664
+ filter: filter,
1665
+ filters: filters,
1666
+ handleApplyFilter: handleApplyFilter
1667
+ });
1668
+ }
1669
+ if (isBoolean(defaultType) || isCheckbox(defaultType)) {
1670
+ return /*#__PURE__*/React.createElement(Boolean$1, {
1671
+ autoFocus: autoFocus,
1672
+ column: column,
1673
+ filter: filter,
1674
+ handleApplyFilter: handleApplyFilter
1675
+ });
1676
+ }
1677
+ return /*#__PURE__*/React.createElement(Dropdown$1, {
1678
+ autoFocus: autoFocus,
1679
+ column: column,
1680
+ filter: filter,
1681
+ handleApplyFilter: handleApplyFilter
1147
1682
  });
1148
1683
  };
1149
- var destroy = function destroy(id) {
1150
- return axios["delete"]("".concat(SEGMENTS_BASE_URL, "/").concat(id));
1151
- };
1152
- var segmentsApi = {
1153
- fetch: fetch,
1154
- show: show,
1155
- create: create,
1156
- update: update,
1157
- destroy: destroy
1158
- };
1159
1684
 
1160
- var QUERY_KEYS = {
1161
- SEGMENTS_LIST: "segments-list"
1685
+ var STEPS = {
1686
+ ADD: "add",
1687
+ COLUMN: "column",
1688
+ VALUE: "value"
1162
1689
  };
1163
- var SEGMENTS_STALE_TIME = 900000; // 15 mins
1164
1690
 
1165
- 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; }
1166
- 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; }
1167
- var SEGMENTS_LIST = QUERY_KEYS.SEGMENTS_LIST;
1168
- var useFetchSegments = function useFetchSegments(_ref) {
1169
- var entity = _ref.entity,
1170
- _ref$searchTerm = _ref.searchTerm,
1171
- searchTerm = _ref$searchTerm === void 0 ? "" : _ref$searchTerm;
1172
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1173
- return useQuery([SEGMENTS_LIST, entity, searchTerm], function () {
1174
- return segmentsApi.fetch({
1175
- entity: entity,
1176
- searchTerm: searchTerm
1177
- });
1178
- }, mergeRight({
1179
- staleTime: SEGMENTS_STALE_TIME,
1180
- select: prop("segments")
1181
- }, options));
1182
- };
1183
- var useShowSegment = function useShowSegment(id) {
1184
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1185
- return useQuery([SEGMENTS_LIST, id], function () {
1186
- return segmentsApi.show(id);
1187
- }, mergeRight({
1188
- staleTime: SEGMENTS_STALE_TIME,
1189
- select: prop("segment")
1190
- }, options));
1191
- };
1192
- var useCreateSegment = function useCreateSegment(options) {
1193
- return useMutationWithInvalidation(segmentsApi.create, _objectSpread$3({
1194
- keysToInvalidate: [SEGMENTS_LIST]
1195
- }, options));
1196
- };
1197
- var useUpdateSegment = function useUpdateSegment(options) {
1198
- return useMutationWithInvalidation(segmentsApi.update, _objectSpread$3({
1199
- keysToInvalidate: [SEGMENTS_LIST]
1200
- }, options));
1201
- };
1202
- var useDestroySegment = function useDestroySegment(options) {
1203
- return useMutationWithInvalidation(segmentsApi.destroy, _objectSpread$3({
1204
- keysToInvalidate: [SEGMENTS_LIST]
1205
- }, options));
1691
+ var AddFilter = function AddFilter(_ref) {
1692
+ var _findBy;
1693
+ var columns = _ref.columns,
1694
+ filters = _ref.filters,
1695
+ handleChange = _ref.handleChange,
1696
+ handleClearFilter = _ref.handleClearFilter,
1697
+ _ref$disabled = _ref.disabled,
1698
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled;
1699
+ var _useTranslation = useTranslation(),
1700
+ t = _useTranslation.t;
1701
+ var _useState = useState({
1702
+ step: STEPS.ADD,
1703
+ column: {}
1704
+ }),
1705
+ _useState2 = _slicedToArray(_useState, 2),
1706
+ selectedColumn = _useState2[0],
1707
+ setSelectedColumn = _useState2[1];
1708
+
1709
+ // Disable the add button when
1710
+ // 1. No value is entered for previous filter
1711
+ // 2. There are no more columns
1712
+ var disableAddButton = selectedColumn.step !== STEPS.ADD && isNotPresent((_findBy = findBy({
1713
+ key: selectedColumn.column.key
1714
+ }, filters)) === null || _findBy === void 0 ? void 0 : _findBy.value) || isEmpty(columns);
1715
+ return /*#__PURE__*/React.createElement(React.Fragment, null, selectedColumn.step !== STEPS.ADD ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1716
+ className: "flex w-full gap-4"
1717
+ }, selectedColumn.step === STEPS.COLUMN && /*#__PURE__*/React.createElement(Select, {
1718
+ isSearchable: true,
1719
+ label: t("neetoFilters.segments.newFilter"),
1720
+ optionRemapping: {
1721
+ label: "label",
1722
+ value: "key"
1723
+ },
1724
+ options: columns,
1725
+ placeholder: t("neetoFilters.segments.selectFilter"),
1726
+ onChange: function onChange(column) {
1727
+ return setSelectedColumn({
1728
+ step: STEPS.VALUE,
1729
+ column: column
1730
+ });
1731
+ }
1732
+ }), selectedColumn.step === STEPS.VALUE && /*#__PURE__*/React.createElement(Item, {
1733
+ filters: filters,
1734
+ autoFocus: true,
1735
+ column: selectedColumn.column,
1736
+ onChange: handleChange
1737
+ }), /*#__PURE__*/React.createElement(Button, {
1738
+ className: "mt-6 self-center",
1739
+ icon: Delete$1,
1740
+ style: "text",
1741
+ onClick: function onClick() {
1742
+ handleClearFilter(selectedColumn.column);
1743
+ setSelectedColumn(assoc("step", STEPS.ADD));
1744
+ }
1745
+ })), /*#__PURE__*/React.createElement(AddFilter, {
1746
+ filters: filters,
1747
+ handleChange: handleChange,
1748
+ handleClearFilter: handleClearFilter,
1749
+ columns: columns.filter(function (_ref2) {
1750
+ var key = _ref2.key;
1751
+ return !existsBy({
1752
+ key: key
1753
+ }, filters);
1754
+ }),
1755
+ disabled: disableAddButton
1756
+ })) : /*#__PURE__*/React.createElement(Button, {
1757
+ disabled: disabled,
1758
+ className: "self-start",
1759
+ icon: Plus,
1760
+ iconPosition: "left",
1761
+ label: t("neetoFilters.segments.addFilter"),
1762
+ style: "link",
1763
+ onClick: function onClick() {
1764
+ return setSelectedColumn(assoc("step", STEPS.COLUMN));
1765
+ }
1766
+ }));
1206
1767
  };
1207
1768
 
1208
1769
  var buildSegmentsValidationSchema = function buildSegmentsValidationSchema(defaultSegmentName) {
1209
1770
  return yup.object({
1210
- name: yup.string().trim().required().test({
1771
+ name: yup.string().trim().required(t$1("neetoFilters.segments.nameIsRequired")).test({
1211
1772
  name: "not-default-segment-name",
1212
1773
  test: function test(value) {
1213
1774
  return (value === null || value === void 0 ? void 0 : value.toLocaleLowerCase()) !== defaultSegmentName.toLocaleLowerCase();
@@ -1217,1151 +1778,904 @@ var buildSegmentsValidationSchema = function buildSegmentsValidationSchema(defau
1217
1778
  });
1218
1779
  };
1219
1780
 
1220
- var Menu = Dropdown$2.Menu,
1221
- MenuItem = Dropdown$2.MenuItem;
1222
- var Segment = function Segment(_ref) {
1223
- var entity = _ref.entity,
1224
- filters = _ref.filters,
1781
+ 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; }
1782
+ 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; }
1783
+ var SegmentForm = function SegmentForm(_ref) {
1784
+ var _ref$isEdit = _ref.isEdit,
1785
+ isEdit = _ref$isEdit === void 0 ? false : _ref$isEdit,
1786
+ segmentFormInitialRef = _ref.segmentFormInitialRef,
1787
+ isOpen = _ref.isOpen,
1788
+ onClose = _ref.onClose,
1789
+ isSubmitting = _ref.isSubmitting,
1790
+ handleSubmit = _ref.handleSubmit,
1791
+ defaultSegmentName = _ref.defaultSegmentName,
1792
+ initialValues = _ref.initialValues,
1793
+ customFilters = _ref.customFilters,
1225
1794
  columns = _ref.columns,
1226
- childrenKeys = _ref.childrenKeys,
1227
- setIsFilterPaneOpen = _ref.setIsFilterPaneOpen,
1228
- defaultSegmentName = _ref.defaultSegmentName;
1229
- var _useState = useState(false),
1230
- _useState2 = _slicedToArray(_useState, 2),
1231
- isSavePaneOpen = _useState2[0],
1232
- setIsSavePaneOpen = _useState2[1];
1233
- var _useState3 = useState(false),
1234
- _useState4 = _slicedToArray(_useState3, 2),
1235
- isUpdateAlertOpen = _useState4[0],
1236
- setIsUpdateAlertOpen = _useState4[1];
1237
- var inputRef = useRef(null);
1795
+ filters = _ref.filters,
1796
+ childrenKeys = _ref.childrenKeys;
1797
+ var history = useHistory();
1238
1798
  var _useTranslation = useTranslation(),
1239
1799
  t = _useTranslation.t;
1240
- var history = useHistory();
1241
- var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
1242
- var _getQueryParams = getQueryParams(),
1243
- segmentId = _getQueryParams.segmentId;
1244
- var _useShowSegment = useShowSegment(segmentId, {
1245
- enabled: isNotNil(segmentId)
1800
+ var _buildFilteredColumns = buildFilteredColumns({
1801
+ searchTerm: "",
1802
+ columns: columns
1246
1803
  }),
1247
- _useShowSegment$data = _useShowSegment.data,
1248
- selectedSegment = _useShowSegment$data === void 0 ? {} : _useShowSegment$data;
1249
- var _useCreateSegment = useCreateSegment(),
1250
- createSegment = _useCreateSegment.mutate,
1251
- isCreating = _useCreateSegment.isLoading;
1252
- var _useUpdateSegment = useUpdateSegment(),
1253
- updateSegment = _useUpdateSegment.mutate,
1254
- isUpdating = _useUpdateSegment.isLoading;
1255
- var isSubmitting = isCreating || isUpdating;
1256
- var handleUpdate = function handleUpdate() {
1257
- return updateSegment({
1258
- id: segmentId,
1259
- payload: {
1260
- filters: filtersPayload
1261
- }
1262
- }, {
1263
- onSuccess: function onSuccess() {
1264
- return setIsUpdateAlertOpen(false);
1265
- }
1266
- });
1267
- };
1268
- var handleCreateSuccess = function handleCreateSuccess(_ref2) {
1269
- var _filters$;
1270
- var _ref2$segment = _ref2.segment,
1271
- id = _ref2$segment.id,
1272
- filters = _ref2$segment.filters;
1273
- history.push({
1274
- search: buildUrlFromSegment({
1275
- columns: columns,
1276
- filters: (_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions,
1277
- id: id
1278
- })
1279
- });
1280
- setIsSavePaneOpen(false);
1281
- };
1282
- var handleSubmit = function handleSubmit(_ref3) {
1283
- var name = _ref3.name;
1284
- return createSegment({
1285
- name: name,
1286
- entity: entity,
1287
- filters: filtersPayload
1288
- }, {
1289
- onSuccess: handleCreateSuccess
1804
+ _buildFilteredColumns2 = _buildFilteredColumns.groupedColumns,
1805
+ groupedColumns = _buildFilteredColumns2 === void 0 ? [] : _buildFilteredColumns2,
1806
+ _buildFilteredColumns3 = _buildFilteredColumns.ungroupedColumns,
1807
+ ungroupedColumns = _buildFilteredColumns3 === void 0 ? [] : _buildFilteredColumns3;
1808
+ var handleChange = function handleChange(newFilters) {
1809
+ var isClearAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1810
+ var params = buildUrlFromFilters(_objectSpread$4({
1811
+ columns: columns,
1812
+ filters: newFilters
1813
+ }, isClearAll && {
1814
+ isClearAll: true,
1815
+ childrenKeys: childrenKeys
1816
+ }));
1817
+ history.push({
1818
+ search: params
1290
1819
  });
1291
1820
  };
1292
- return /*#__PURE__*/React.createElement(React.Fragment, null, isNil(segmentId) ? /*#__PURE__*/React.createElement(Button, {
1293
- disabled: hasOnlyKeywordFilter(filters),
1294
- label: t("neetoFilters.segments.saveAsSegment"),
1295
- style: "secondary",
1296
- onClick: function onClick() {
1297
- setIsFilterPaneOpen(false);
1298
- setIsSavePaneOpen(true);
1299
- }
1300
- }) : /*#__PURE__*/React.createElement(Dropdown$2, {
1301
- buttonStyle: "secondary",
1302
- label: t("neetoFilters.segments.saveSegment")
1303
- }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
1304
- isDisabled: equals(filtersPayload, selectedSegment === null || selectedSegment === void 0 ? void 0 : selectedSegment.filters),
1305
- onClick: setIsUpdateAlertOpen
1306
- }, t("neetoFilters.segments.saveSegment")), /*#__PURE__*/React.createElement(MenuItem.Button, {
1307
- onClick: function onClick() {
1308
- setIsFilterPaneOpen(false);
1309
- setIsSavePaneOpen(true);
1310
- }
1311
- }, t("neetoFilters.segments.saveAsNewSegment")))), /*#__PURE__*/React.createElement(Pane$1, {
1312
- initialFocusRef: inputRef,
1313
- isOpen: isSavePaneOpen,
1314
- onClose: function onClose() {
1315
- return setIsSavePaneOpen(false);
1316
- }
1821
+ var handleClearFilter = function handleClearFilter(column, values, setFieldValue) {
1822
+ var formState = [{
1823
+ conditions: removeBy({
1824
+ key: column.key
1825
+ }, values.filters[0].conditions)
1826
+ }];
1827
+ var globalState = removeBy({
1828
+ key: column.key
1829
+ }, filters);
1830
+ setFieldValue("filters", formState);
1831
+ handleChange(globalState);
1832
+ };
1833
+ return /*#__PURE__*/React.createElement(Pane$1, {
1834
+ isOpen: isOpen,
1835
+ onClose: onClose,
1836
+ initialFocusRef: segmentFormInitialRef
1317
1837
  }, /*#__PURE__*/React.createElement(Pane$1.Header, null, /*#__PURE__*/React.createElement(Typography, {
1318
1838
  style: "h2",
1319
1839
  weight: "semibold"
1320
- }, t("neetoFilters.segments.addNewSegment"))), /*#__PURE__*/React.createElement(Form, {
1840
+ }, isEdit ? t("neetoFilters.segments.editSegment") : t("neetoFilters.segments.addNewSegment"))), /*#__PURE__*/React.createElement(Form, {
1321
1841
  className: "w-full",
1322
1842
  formProps: {
1323
1843
  noValidate: true
1324
1844
  },
1325
1845
  formikProps: {
1326
- initialValues: {
1327
- name: ""
1328
- },
1846
+ initialValues: initialValues,
1329
1847
  validateOnChange: true,
1330
1848
  validateOnBlur: true,
1331
1849
  validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
1332
1850
  onSubmit: handleSubmit
1333
1851
  }
1334
- }, /*#__PURE__*/React.createElement(Pane$1.Body, null, /*#__PURE__*/React.createElement(Input, {
1335
- className: "w-full",
1336
- label: t("neetoFilters.segments.name"),
1337
- name: "name",
1338
- placeholder: t("neetoFilters.segments.segmentName"),
1339
- ref: inputRef
1340
- })), /*#__PURE__*/React.createElement(Pane$1.Footer, {
1341
- className: "flex items-center space-x-2"
1342
- }, /*#__PURE__*/React.createElement(ActionBlock, {
1343
- cancelButtonProps: {
1344
- onClick: function onClick() {
1345
- return setIsSavePaneOpen(false);
1346
- },
1347
- disabled: false
1348
- },
1349
- submitButtonProps: {
1350
- disabled: isSubmitting,
1351
- loading: isSubmitting
1352
- }
1353
- })))), /*#__PURE__*/React.createElement(Alert, {
1354
- isOpen: isUpdateAlertOpen,
1355
- isSubmitting: isUpdating,
1356
- submitButtonLabel: t("neetoFilters.common.update"),
1357
- title: t("neetoFilters.segments.updateSegment"),
1358
- message: /*#__PURE__*/React.createElement(Trans, {
1359
- i18nKey: "neetoFilters.segments.updateSegmentMessage",
1360
- values: {
1361
- entity: selectedSegment === null || selectedSegment === void 0 ? void 0 : selectedSegment.name
1362
- }
1363
- }),
1364
- onClose: function onClose() {
1365
- return setIsUpdateAlertOpen(false);
1366
- },
1367
- onSubmit: handleUpdate
1368
- }));
1369
- };
1370
-
1371
- 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; }
1372
- 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; }
1373
- var Bar = function Bar(_ref) {
1374
- var entity = _ref.entity,
1375
- className = _ref.className,
1376
- _ref$columns = _ref.columns,
1377
- columns = _ref$columns === void 0 ? [] : _ref$columns,
1378
- _ref$keyword = _ref.keyword,
1379
- keyword = _ref$keyword === void 0 ? {
1380
- node: "",
1381
- value: "",
1382
- setValue: noop
1383
- } : _ref$keyword,
1384
- _ref$setIsPaneOpen = _ref.setIsPaneOpen,
1385
- setIsPaneOpen = _ref$setIsPaneOpen === void 0 ? identity : _ref$setIsPaneOpen,
1386
- _ref$childrenKeys = _ref.childrenKeys,
1387
- childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
1388
- _ref$defaultSegmentNa = _ref.defaultSegmentName,
1389
- defaultSegmentName = _ref$defaultSegmentNa === void 0 ? t$1("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
1390
- return function () {
1391
- var _useTranslation = useTranslation(),
1392
- t = _useTranslation.t;
1393
- var initialRenderRef = useRef(true);
1394
- var searchParams = useQueryParams({
1395
- toCamelCase: false
1396
- });
1397
- var keywordValue = searchParams[SEARCH_TERM_KEY] || "";
1398
- var keywordFilter = _objectSpread$2(_objectSpread$2({
1399
- type: "text",
1400
- rule: "contains",
1401
- label: t("neetoFilters.common.searchTerm")
1402
- }, keyword), {}, {
1403
- key: SEARCH_TERM_KEY,
1404
- value: keywordValue
1405
- });
1406
- var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
1407
- var nonHiddenFilters = removeBy({
1408
- hidden: true
1409
- }, filters);
1410
- var history = useHistory();
1411
- var handleSubmit = function handleSubmit(newFilters, isClearAll) {
1412
- var params = buildUrlFromFilters(_objectSpread$2({
1413
- columns: columns,
1414
- filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
1415
- }, isClearAll && {
1416
- isClearAll: true,
1417
- childrenKeys: childrenKeys
1418
- }));
1419
- history.push({
1420
- search: params
1421
- });
1422
- };
1423
- var handleDelete = function handleDelete(key) {
1424
- if (key === SEARCH_TERM_KEY) {
1425
- var params = omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams());
1426
- var pathname = window.location.pathname;
1427
- history.push(buildUrl(pathname, params));
1428
- return;
1429
- }
1430
- if (childrenKeys.includes(key)) {
1431
- var _params = omit([key], getSnakeCasedQueryParams());
1432
- var _pathname = window.location.pathname;
1433
- history.push(buildUrl(_pathname, _params));
1434
- }
1435
- var newFilters = removeBy({
1852
+ }, function (_ref2) {
1853
+ var errors = _ref2.errors,
1854
+ values = _ref2.values,
1855
+ setFieldValue = _ref2.setFieldValue;
1856
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane$1.Body, null, /*#__PURE__*/React.createElement(Input$1, {
1857
+ className: "w-full flex-grow-0",
1858
+ error: errors.name,
1859
+ label: t("neetoFilters.segments.name"),
1860
+ name: "name",
1861
+ placeholder: t("neetoFilters.segments.segmentName"),
1862
+ ref: segmentFormInitialRef
1863
+ }), /*#__PURE__*/React.createElement(Typography, {
1864
+ className: "mb-2 mt-4",
1865
+ style: "h4"
1866
+ }, t("neetoFilters.common.filters")), /*#__PURE__*/React.createElement("div", {
1867
+ className: "neeto-filters-pane-filter__body flex w-full flex-col gap-5"
1868
+ }, ungroupedColumns.filter(function (_ref3) {
1869
+ var key = _ref3.key;
1870
+ return _existsBy({
1436
1871
  key: key
1437
- }, filters);
1438
- handleSubmit(newFilters);
1439
- };
1440
- var handleClearAll = function handleClearAll() {
1441
- var params = isKeywordFilterPresent(keywordFilter) ? omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
1442
- var pathname = window.location.pathname;
1443
- history.push(buildUrl(pathname, params));
1444
- handleSubmit([], true);
1445
- };
1446
- var childrenFiltersApplied = childrenKeys.some(function (key) {
1447
- return has(key, searchParams);
1448
- });
1449
- var hideClearButton = nonHiddenFilters.every(function (_ref2) {
1450
- var defaultValue = _ref2.defaultValue,
1451
- isClearable = _ref2.isClearable;
1452
- return defaultValue && !isClearable;
1453
- }) && !childrenFiltersApplied;
1454
- useEffect(function () {
1455
- if (initialRenderRef.current) {
1456
- initialRenderRef.current = false;
1457
- return noop;
1458
- }
1459
- var handler = setTimeout(function () {
1460
- handleSubmit(filters);
1461
- }, 500);
1462
- return function () {
1463
- return clearTimeout(handler);
1464
- };
1465
- }, [keywordValue]);
1466
- if (isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
1467
- return /*#__PURE__*/React.createElement("div", {
1468
- className: classnames("neeto-filters-bar", _defineProperty({}, className, className))
1469
- }, nonHiddenFilters.map(function (filter) {
1470
- var _filter$suffixCompone;
1471
- return /*#__PURE__*/React.createElement(React.Fragment, {
1472
- key: filter.key
1473
- }, /*#__PURE__*/React.createElement(Block, {
1474
- filter: filter,
1475
- handleDelete: handleDelete,
1476
- setIsPaneOpen: setIsPaneOpen
1477
- }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/React.createElement("div", {
1478
- className: "neeto-filters-bar--separator"
1872
+ }, values.filters[0].conditions);
1873
+ }).map(function (column) {
1874
+ return /*#__PURE__*/React.createElement("div", {
1875
+ className: "flex w-full gap-4",
1876
+ key: column.key
1877
+ }, /*#__PURE__*/React.createElement(Item, {
1878
+ column: column,
1879
+ filters: filters,
1880
+ autoFocus: column.key === isOpen,
1881
+ onChange: function onChange(filters) {
1882
+ setFieldValue("filters", [{
1883
+ conditions: filters
1884
+ }]);
1885
+ handleChange(filters);
1886
+ }
1887
+ }), /*#__PURE__*/React.createElement(Button, {
1888
+ className: "mt-6 self-center",
1889
+ icon: Delete$1,
1890
+ style: "text",
1891
+ onClick: function onClick() {
1892
+ return handleClearFilter(column, values, setFieldValue);
1893
+ }
1479
1894
  }));
1480
- }), childrenKeys.filter(function (childKey) {
1481
- return has(childKey, searchParams);
1482
- }).map(function (childKey) {
1483
- return /*#__PURE__*/React.createElement(React.Fragment, {
1484
- key: childKey
1485
- }, /*#__PURE__*/React.createElement(ChildBlock, {
1486
- childKey: childKey,
1487
- handleDelete: handleDelete,
1488
- setIsPaneOpen: setIsPaneOpen
1489
- }), /*#__PURE__*/React.createElement("div", {
1490
- className: "neeto-filters-bar--separator"
1895
+ }), isPresent(groupedColumns) && /*#__PURE__*/React.createElement(Accordion, null, groupedColumns.map(function (_ref4) {
1896
+ var group = _ref4.group,
1897
+ columns = _ref4.columns;
1898
+ return /*#__PURE__*/React.createElement(Accordion.Item, {
1899
+ className: "accordion_item",
1900
+ key: group,
1901
+ title: group
1902
+ }, columns.map(function (column) {
1903
+ return /*#__PURE__*/React.createElement(Item, {
1904
+ column: column,
1905
+ filters: filters,
1906
+ autoFocus: column.key === isOpen,
1907
+ key: column.key,
1908
+ onChange: handleChange
1909
+ });
1491
1910
  }));
1492
- }), /*#__PURE__*/React.createElement("div", {
1493
- className: "flex items-center gap-x-2"
1494
- }, isNotNil(entity) && /*#__PURE__*/React.createElement(Segment, {
1495
- childrenKeys: childrenKeys,
1496
- columns: columns,
1497
- defaultSegmentName: defaultSegmentName,
1498
- entity: entity,
1911
+ })), isEmpty([].concat(_toConsumableArray(groupedColumns), _toConsumableArray(ungroupedColumns))) && /*#__PURE__*/React.createElement(Typography, {
1912
+ style: "body2"
1913
+ }, t("neetoFilters.messages.noResourcesFound", {
1914
+ resources: t("neetoFilters.common.columns")
1915
+ })), customFilters, /*#__PURE__*/React.createElement(AddFilter, {
1499
1916
  filters: filters,
1500
- setIsFilterPaneOpen: setIsPaneOpen
1501
- }), !hideClearButton && /*#__PURE__*/React.createElement(Button, {
1502
- "data-cy": "neeto-filters-bar-clear-btn",
1503
- label: t("neetoFilters.common.clearFilters"),
1504
- style: "text",
1505
- onClick: handleClearAll
1917
+ handleChange: handleChange,
1918
+ columns: ungroupedColumns.filter(function (_ref5) {
1919
+ var key = _ref5.key;
1920
+ return !existsBy({
1921
+ key: key
1922
+ }, filters);
1923
+ }),
1924
+ handleClearFilter: function handleClearFilter(_ref6) {
1925
+ var key = _ref6.key;
1926
+ return handleChange(removeBy({
1927
+ key: key
1928
+ }, filters));
1929
+ }
1930
+ }))), /*#__PURE__*/React.createElement(Pane$1.Footer, {
1931
+ className: "flex items-center space-x-2"
1932
+ }, /*#__PURE__*/React.createElement(ActionBlock, {
1933
+ cancelButtonProps: {
1934
+ onClick: onClose,
1935
+ disabled: false
1936
+ },
1937
+ submitButtonProps: {
1938
+ disabled: isSubmitting || isEmpty(filters),
1939
+ loading: isSubmitting
1940
+ }
1506
1941
  })));
1507
- }();
1942
+ }));
1508
1943
  };
1509
1944
 
1510
- function _extends() {
1511
- _extends = Object.assign ? Object.assign.bind() : function (target) {
1512
- for (var i = 1; i < arguments.length; i++) {
1513
- var source = arguments[i];
1514
- for (var key in source) {
1515
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1516
- target[key] = source[key];
1517
- }
1518
- }
1519
- }
1520
- return target;
1521
- };
1522
- return _extends.apply(this, arguments);
1523
- }
1524
-
1525
- function _objectWithoutPropertiesLoose(source, excluded) {
1526
- if (source == null) return {};
1527
- var target = {};
1528
- var sourceKeys = Object.keys(source);
1529
- var key, i;
1530
- for (i = 0; i < sourceKeys.length; i++) {
1531
- key = sourceKeys[i];
1532
- if (excluded.indexOf(key) >= 0) continue;
1533
- target[key] = source[key];
1534
- }
1535
- return target;
1536
- }
1537
-
1538
- function _objectWithoutProperties(source, excluded) {
1539
- if (source == null) return {};
1540
- var target = _objectWithoutPropertiesLoose(source, excluded);
1541
- var key, i;
1542
- if (Object.getOwnPropertySymbols) {
1543
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
1544
- for (i = 0; i < sourceSymbolKeys.length; i++) {
1545
- key = sourceSymbolKeys[i];
1546
- if (excluded.indexOf(key) >= 0) continue;
1547
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
1548
- target[key] = source[key];
1549
- }
1550
- }
1551
- return target;
1552
- }
1553
-
1554
- var useFilters = function useFilters(_ref) {
1555
- var onFiltersChange = _ref.onFiltersChange,
1556
- columns = _ref.columns,
1557
- keywordFilter = _ref.keywordFilter,
1558
- onSelectorsChange = _ref.onSelectorsChange;
1559
- var _useTransition = useTransition(),
1560
- _useTransition2 = _slicedToArray(_useTransition, 2);
1561
- _useTransition2[0];
1562
- var startTransition = _useTransition2[1];
1563
- var initialRender = useRef(true);
1564
- var prevFilters = useRef([]);
1565
- var location = useLocation();
1566
- var filters = buildFiltersFromSearchParams(columns, false);
1567
- var history = useHistory();
1568
- var defaultValuesOfColumns = JSON.stringify(pluck("defaultValue", columns));
1569
- var handlePrecenseOfDefaultFilters = function handlePrecenseOfDefaultFilters(defaultFilters) {
1570
- var params = buildUrlFromFilters({
1571
- columns: columns,
1572
- filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(defaultFilters), [keywordFilter]) : defaultFilters
1573
- });
1574
- history.replace({
1575
- search: params
1576
- });
1577
- };
1578
- var handleFiltersChange = function handleFiltersChange(filtersPayload) {
1579
- startTransition(function () {
1580
- onFiltersChange(buildFiltersPayload(filtersPayload.filter(function (filter) {
1581
- return !isNil(filter.node);
1582
- })));
1583
- });
1584
- };
1585
-
1586
- //This function sends the updated filters to host via callbacks.
1587
- var sendUpdatedFilters = function sendUpdatedFilters() {
1588
- if (compareFilters(append(keywordFilter, filters), prevFilters.current)) {
1589
- return;
1590
- }
1591
- var newFilters = buildFiltersFromSearchParams(columns);
1592
- var filtersPayload = isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? append(keywordFilter, newFilters) : newFilters;
1593
- handleFiltersChange(filtersPayload);
1594
- onSelectorsChange(buildSelectorsFromURL(columns));
1595
- };
1596
- var handleChangesInURL = function handleChangesInURL() {
1597
- var defaultFilters = buildDefaultFilters(columns, filters);
1598
- var searchParams = getSnakeCasedQueryParams();
1599
- var keys = pluck("key", append(keywordFilter, columns));
1600
- if (keys.every(function (key) {
1601
- return isNil(searchParams[key]);
1602
- }) && !isEmpty(defaultFilters)) {
1603
- history.replace({
1604
- search: buildUrlFromFilters({
1605
- columns: columns,
1606
- filters: concat(defaultFilters, filters)
1607
- })
1608
- });
1609
- filters = buildFiltersFromSearchParams(columns, false);
1610
- }
1611
- };
1612
- useEffect(function () {
1613
- if (initialRender.current) {
1614
- initialRender.current = false;
1615
- var keywordValue = getSearchTermFromUrl();
1616
- var defaultFilters = buildDefaultFilters(columns, filters);
1617
- isNotEmpty(defaultFilters) && handlePrecenseOfDefaultFilters(defaultFilters);
1618
- prevFilters.current = append(mergeRight(keywordFilter, {
1619
- value: keywordValue
1620
- }), filters);
1621
- } else {
1622
- handleChangesInURL();
1623
- sendUpdatedFilters();
1624
- prevFilters.current = append(keywordFilter, filters);
1625
- }
1626
- }, [location.search, defaultValuesOfColumns]);
1627
- return filters;
1945
+ var QUERY_KEYS = {
1946
+ SEGMENTS_LIST: "segments-list"
1628
1947
  };
1948
+ var SEGMENTS_STALE_TIME = 900000; // 15 mins
1629
1949
 
1630
- var buildDropdownValue = function buildDropdownValue(_ref) {
1631
- var defaultType = _ref.defaultType,
1632
- filter = _ref.filter,
1633
- options = _ref.options;
1634
- if (!filter) return null;
1635
- if (isMulti(defaultType)) {
1636
- return options.filter(function (_ref2) {
1637
- var value = _ref2.value;
1638
- return filter.value.includes(value);
1639
- });
1640
- }
1641
- return findBy({
1642
- value: filter.value
1643
- }, options);
1644
- };
1645
- var buildSingleTimeValue = function buildSingleTimeValue(filter) {
1646
- var _findBy2;
1647
- if (!filter) return null;
1648
- return (_findBy2 = findBy({
1649
- value: filter.value
1650
- }, TIME_OPTIONS)) !== null && _findBy2 !== void 0 ? _findBy2 : last(TIME_OPTIONS);
1651
- };
1652
- var getOtherProps = function getOtherProps(props) {
1653
- return omit(["key", "node", "label", "type", "values", "model", "showRuleSelector"], props);
1654
- };
1655
- var buildDropdownOptions = function buildDropdownOptions(_ref3) {
1656
- var defaultType = _ref3.defaultType,
1657
- filter = _ref3.filter,
1658
- options = _ref3.options;
1659
- options = options.map(modify("value", function (value) {
1660
- return value === null || value === void 0 ? void 0 : value.toString();
1661
- }));
1662
- if (!filter) return options;
1663
- if (isMulti(defaultType)) {
1664
- var selectedOptions = filter.value.map(function (value) {
1665
- return findBy({
1666
- value: value
1667
- }, options) || toLabelAndValue(value);
1668
- });
1669
- var nonSelectedOptions = options.filter(function (option) {
1670
- return !filter.value.includes(option.value);
1671
- });
1672
- return concat(selectedOptions, nonSelectedOptions);
1673
- }
1674
- if (!findBy({
1675
- value: filter.value
1676
- }, options)) {
1677
- return append(toLabelAndValue(filter.value), options);
1678
- }
1679
- return options;
1950
+ var DEFAULT_SEGMENTS_CACHE = {
1951
+ segments: []
1680
1952
  };
1681
- var initializeDateRule = function initializeDateRule(filter) {
1682
- return filter ? findBy({
1683
- value: filter === null || filter === void 0 ? void 0 : filter.value
1684
- }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
1953
+ var SEGMENT_ACTIONS$1 = {
1954
+ EDIT: "edit",
1955
+ CREATE: "create"
1685
1956
  };
1686
- var getDateValue = function getDateValue(value, rule) {
1687
- if (isEmpty(value) || isNil(value)) {
1688
- return null;
1957
+
1958
+ var SHORTCUTS = {
1959
+ closePane: {
1960
+ sequence: "escape",
1961
+ description: t$1("neetoFilters.shortcuts.closePane")
1962
+ },
1963
+ deleteBlock: {
1964
+ sequence: "backspace",
1965
+ description: t$1("neetoFilters.shortcuts.deleteBlock")
1966
+ },
1967
+ openFilterPane: {
1968
+ sequence: "enter",
1969
+ description: t$1("neetoFilters.shortcuts.openFilterPane")
1689
1970
  }
1690
- if (rule.value === "custom-date-range") {
1691
- return value;
1971
+ };
1972
+
1973
+ var buildCustomDateValue = function buildCustomDateValue(value) {
1974
+ var isBeforeOrAfter = Math.abs(dayjs(value[1]).diff(dayjs(value[0]), "year")) >= 90;
1975
+ if (isBeforeOrAfter) {
1976
+ var currentMoment = dayjs();
1977
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
1978
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
1979
+ return diffWithStart < diffWithEnd ? "after-".concat(dateFormat.date(dayjs(value[0]).subtract(1, "day"))) : "before-".concat(dateFormat.date(dayjs(value[1]).add(1, "day")));
1692
1980
  }
1693
- return rule.value === "before" ? dayjs(value[1]).add(1, "day") : dayjs(value[0]).subtract(1, "day");
1981
+ return value.map(dateFormat.date).join(" - ");
1694
1982
  };
1695
- var findDateOption = function findDateOption(filter, options) {
1696
- var value = filter.value;
1697
- var isBeforeOrAfter = dayjs(value[1]).diff(dayjs(value[0]), "year") >= 90;
1698
- if (not(isBeforeOrAfter)) {
1699
- return last(options);
1983
+ var buildFilterValue = function buildFilterValue(filter) {
1984
+ var _findBy2;
1985
+ var _filter$defaultType = filter.defaultType,
1986
+ defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
1987
+ value = filter.value,
1988
+ rule = filter.rule,
1989
+ _filter$values = filter.values,
1990
+ initialValues = _filter$values === void 0 ? [] : _filter$values;
1991
+ var values = initialValues.map(modify("value", function (value) {
1992
+ return value.toString();
1993
+ }));
1994
+ if (isDate(defaultType) && isCustomDateRange(value)) {
1995
+ return buildCustomDateValue(value);
1996
+ } else if (isTime(defaultType) && isCustomTimeRange(value)) {
1997
+ return value.map(dateFormat.time).join(" - ");
1998
+ } else if (isDate(defaultType) || isTime(defaultType)) {
1999
+ return humanize(value);
2000
+ } else if (isMulti(defaultType)) {
2001
+ return value.map(function (value) {
2002
+ var _findBy;
2003
+ return ((_findBy = findBy({
2004
+ value: value
2005
+ }, values)) === null || _findBy === void 0 ? void 0 : _findBy.label) || value;
2006
+ }).join(", ");
2007
+ } else if (isSingleDate(defaultType)) {
2008
+ return rule === "between" ? value.map(dateFormat.date).join(" - ") : dateFormat.date(value);
2009
+ } else if (isSingleTime(defaultType)) {
2010
+ return rule === "between" ? value.map(dateFormat.time).join(" - ") : dateFormat.time(value);
2011
+ } else if (isBoolean(defaultType)) {
2012
+ return getLabelFromBool({
2013
+ value: value,
2014
+ values: values
2015
+ });
1700
2016
  }
1701
- var currentMoment = dayjs();
1702
- var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
1703
- var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
1704
- return diffWithStart < diffWithEnd ? findBy({
1705
- value: "after"
1706
- }, options) : findBy({
1707
- value: "before"
1708
- }, options);
2017
+ return ((_findBy2 = findBy({
2018
+ value: value
2019
+ }, values)) === null || _findBy2 === void 0 ? void 0 : _findBy2.label) || value;
1709
2020
  };
1710
- var buildDateValues = function buildDateValues(dates, selectedRule) {
1711
- if (selectedRule.value === "after") {
1712
- return [dates.add(1, "day"), dates.add(100, "year")];
1713
- } else if (selectedRule.value === "before") {
1714
- return [dates.subtract(100, "year"), dates.subtract(1, "day")];
2021
+ var buildRuleValue = function buildRuleValue(_ref) {
2022
+ var rule = _ref.rule,
2023
+ defaultType = _ref.defaultType;
2024
+ if (isText(defaultType)) {
2025
+ return findBy({
2026
+ value: rule
2027
+ }, TEXT_RULES).label;
2028
+ } else if (isDigit(defaultType)) {
2029
+ return findBy({
2030
+ value: rule
2031
+ }, NUMBER_RULES).label;
2032
+ } else if (isSingleDate(defaultType)) {
2033
+ return findBy({
2034
+ value: rule
2035
+ }, SINGLE_DATE_OPTIONS).label;
2036
+ } else if (isSingleTime(defaultType)) {
2037
+ return findBy({
2038
+ value: rule
2039
+ }, SINGLE_TIME_OPTIONS).label;
1715
2040
  }
1716
- return dates;
2041
+ return "";
1717
2042
  };
1718
- var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
1719
- return mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
2043
+ var hasOnlyKeywordFilter = function hasOnlyKeywordFilter(filters) {
2044
+ return filters.length === 1 && filters[0].key === SEARCH_TERM_KEY;
1720
2045
  };
1721
-
1722
- var Boolean = function Boolean(_ref) {
1723
- var column = _ref.column,
1724
- filter = _ref.filter,
1725
- handleApplyFilter = _ref.handleApplyFilter,
1726
- autoFocus = _ref.autoFocus;
1727
- var key = column.key,
1728
- _column$defaultType = column.defaultType,
1729
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1730
- label = column.label,
1731
- values = column.values,
1732
- _column$helpIconProps = column.helpIconProps,
1733
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1734
- var options = isNil(values) || isEmpty(values) ? DEFAULT_BOOLEAN_OPTIONS : values;
1735
- var otherProps = getOtherProps(column);
1736
- var value = buildDropdownValue({
1737
- defaultType: defaultType,
1738
- filter: filter,
1739
- options: options
1740
- });
1741
- var _useTranslation = useTranslation(),
1742
- t = _useTranslation.t;
1743
- var handleChange = function handleChange(option) {
1744
- if (isEmpty(option) || isNil(option)) {
1745
- handleApplyFilter({
1746
- _delete: true
1747
- });
1748
- return;
1749
- }
1750
- var updatedFilter = buildUpdatedFilter({
1751
- column: column,
1752
- defaultType: defaultType,
1753
- option: option
1754
- });
1755
- handleApplyFilter(updatedFilter);
2046
+ var deepCompare = function deepCompare(filters1, filters2) {
2047
+ var comparisonHelper = function comparisonHelper(filters) {
2048
+ return sortBy(prop("key"), removeBy({
2049
+ key: SEARCH_TERM_KEY
2050
+ }, project(["key", "rule", "value"], filters)));
1756
2051
  };
1757
- return /*#__PURE__*/React.createElement("div", {
1758
- className: "neeto-filters-pane-filter__item-wrapper"
1759
- }, /*#__PURE__*/React.createElement(Select, _extends({
1760
- autoFocus: autoFocus,
1761
- label: label,
1762
- options: options,
1763
- value: value,
1764
- isClearable: true
1765
- }, isNotEmpty(helpIconProps) && {
1766
- labelProps: {
1767
- helpIconProps: buildHelpIconProps(helpIconProps)
1768
- }
1769
- }, {
1770
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1771
- strategy: "fixed",
1772
- placeholder: t("neetoFilters.messages.selectOption", {
1773
- resource: label
1774
- }),
1775
- onChange: handleChange
1776
- }, otherProps)));
2052
+ return notEqualsDeep(comparisonHelper(filters1), comparisonHelper(filters2));
1777
2053
  };
1778
- var Boolean$1 = /*#__PURE__*/React.memo(Boolean);
1779
2054
 
1780
- var Datetime = function Datetime(_ref) {
1781
- var column = _ref.column,
1782
- filter = _ref.filter,
1783
- handleApplyFilter = _ref.handleApplyFilter,
1784
- autoFocus = _ref.autoFocus;
1785
- var _useState = useState(initializeDateRule(filter)),
1786
- _useState2 = _slicedToArray(_useState, 2),
1787
- selectedRule = _useState2[0],
1788
- setSelectedRule = _useState2[1];
1789
- var _useTranslation = useTranslation(),
1790
- t = _useTranslation.t;
1791
- var key = column.key,
1792
- _column$defaultType = column.defaultType,
1793
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1794
- label = column.label,
1795
- _column$helpIconProps = column.helpIconProps,
1796
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1797
- var isDatePickerShown = filter && isCustomDateRange(filter.value);
1798
- var otherProps = getOtherProps(column);
1799
- var handleChange = function handleChange(option) {
1800
- if (isEmpty(option) || isNil(option)) {
1801
- handleApplyFilter({
1802
- _delete: true
1803
- });
1804
- setSelectedRule({});
1805
- return;
1806
- }
1807
- setSelectedRule(option);
1808
- var updatedFilter = buildUpdatedFilter({
1809
- column: column,
1810
- defaultType: defaultType,
1811
- option: option
1812
- });
1813
- handleApplyFilter(updatedFilter);
1814
- };
1815
- var handleDateRangeChange = function handleDateRangeChange(dates) {
1816
- if (isEmpty(dates) || isNil(dates)) {
1817
- handleApplyFilter({
1818
- _delete: true
1819
- });
1820
- setSelectedRule({});
1821
- return;
1822
- }
1823
- var updatedFilter = buildUpdatedFilter({
1824
- column: column,
1825
- defaultType: defaultType,
1826
- option: {
1827
- value: pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
1828
- return date.toISOString();
1829
- })
1830
- }
1831
- });
1832
- handleApplyFilter(updatedFilter);
1833
- };
1834
- useEffect(function () {
1835
- isNil(filter) && setSelectedRule({});
1836
- }, [filter]);
1837
- return /*#__PURE__*/React.createElement("div", {
1838
- className: "neeto-filters-pane-filter__item-wrapper"
1839
- }, /*#__PURE__*/React.createElement(Select, _extends({
1840
- autoFocus: autoFocus,
1841
- label: label,
1842
- isClearable: true,
1843
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1844
- options: DATE_OPTIONS,
1845
- strategy: "fixed",
1846
- value: selectedRule,
1847
- placeholder: t("neetoFilters.messages.selectResource", {
1848
- resource: label
1849
- })
1850
- }, isNotEmpty(helpIconProps) && {
1851
- labelProps: {
1852
- helpIconProps: buildHelpIconProps(helpIconProps)
1853
- }
2055
+ var Block = function Block(_ref) {
2056
+ var filter = _ref.filter,
2057
+ handleDelete = _ref.handleDelete,
2058
+ setIsPaneOpen = _ref.setIsPaneOpen;
2059
+ var key = filter.key,
2060
+ _filter$defaultType = filter.defaultType,
2061
+ defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
2062
+ label = filter.label,
2063
+ rule = filter.rule,
2064
+ defaultValue = filter.defaultValue;
2065
+ var filterValue = buildFilterValue(filter);
2066
+ var ruleContent = buildRuleValue({
2067
+ rule: rule,
2068
+ defaultType: defaultType
2069
+ });
2070
+ var blockLength = label.length + ruleContent.length + filterValue.length;
2071
+ var toolTipDisabled = blockLength <= 50;
2072
+ var blockContent = !toolTipDisabled ? "".concat(filterValue.slice(0, 50 - blockLength), "...") : filterValue;
2073
+ var deleteBlockHotKeyRef = useHotkeys(SHORTCUTS.deleteBlock.sequence, function () {
2074
+ return handleDelete(key);
1854
2075
  }, {
1855
- onChange: handleChange
1856
- })), isDatePickerShown && /*#__PURE__*/React.createElement(DatePicker, _extends({
1857
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-date-range"),
1858
- getPopupContainer: prop("parentNode"),
1859
- type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
1860
- value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
1861
- onChange: handleDateRangeChange
1862
- }, otherProps)));
2076
+ mode: "scoped"
2077
+ });
2078
+ var openFilterPaneHotKeyRef = useHotkeys(SHORTCUTS.openFilterPane.sequence, function () {
2079
+ return setIsPaneOpen(key);
2080
+ }, {
2081
+ mode: "scoped"
2082
+ });
2083
+ return /*#__PURE__*/React.createElement(Tooltip, {
2084
+ content: filterValue,
2085
+ disabled: toolTipDisabled,
2086
+ position: "bottom",
2087
+ theme: "light"
2088
+ }, /*#__PURE__*/React.createElement("div", {
2089
+ className: "neeto-filters-bar__block",
2090
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-block"),
2091
+ tabIndex: 0,
2092
+ ref: function ref(node) {
2093
+ deleteBlockHotKeyRef.current = node;
2094
+ openFilterPaneHotKeyRef.current = node;
2095
+ },
2096
+ onClick: function onClick() {
2097
+ return setIsPaneOpen(key);
2098
+ }
2099
+ }, /*#__PURE__*/React.createElement(Typography, {
2100
+ style: "body2"
2101
+ }, label, ":"), /*#__PURE__*/React.createElement(Typography, {
2102
+ className: "neeto-ui-text-gray-600",
2103
+ style: "body2"
2104
+ }, ruleContent), /*#__PURE__*/React.createElement(Typography, {
2105
+ style: "body2"
2106
+ }, blockContent), !defaultValue && /*#__PURE__*/React.createElement("div", {
2107
+ className: "neeto-filters-bar__block-close"
2108
+ }, /*#__PURE__*/React.createElement(Close, {
2109
+ "data-cy": "neeto-filters-".concat(hyphenate(key), "-block-close-btn"),
2110
+ size: 16,
2111
+ strokeWidth: 2,
2112
+ onClick: function onClick(event) {
2113
+ event.stopPropagation();
2114
+ handleDelete(key);
2115
+ }
2116
+ }))));
1863
2117
  };
1864
- var Datetime$1 = /*#__PURE__*/React.memo(Datetime);
1865
2118
 
1866
- var Dropdown = function Dropdown(_ref) {
1867
- var column = _ref.column,
1868
- filter = _ref.filter,
1869
- handleApplyFilter = _ref.handleApplyFilter,
1870
- autoFocus = _ref.autoFocus;
1871
- var key = column.key,
1872
- label = column.label,
1873
- values = column.values,
1874
- defaultValue = column.defaultValue,
1875
- _column$defaultType = column.defaultType,
1876
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1877
- _column$isClearable = column.isClearable,
1878
- isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
1879
- _column$helpIconProps = column.helpIconProps,
1880
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1881
- var otherProps = getOtherProps(column);
1882
- var options = buildDropdownOptions({
1883
- defaultType: defaultType,
1884
- filter: filter,
1885
- options: values
2119
+ var ChildBlock = function ChildBlock(_ref) {
2120
+ var childKey = _ref.childKey,
2121
+ setIsPaneOpen = _ref.setIsPaneOpen,
2122
+ handleDelete = _ref.handleDelete;
2123
+ var deleteBlockHotKeyRef = useHotkeys(SHORTCUTS.deleteBlock.sequence, function () {
2124
+ return handleDelete(childKey);
2125
+ }, {
2126
+ mode: "scoped"
1886
2127
  });
1887
- var value = buildDropdownValue({
1888
- defaultType: defaultType,
1889
- filter: filter,
1890
- options: options
2128
+ var openFilterPaneHotKeyRef = useHotkeys(SHORTCUTS.openFilterPane.sequence, function () {
2129
+ return setIsPaneOpen(childKey);
2130
+ }, {
2131
+ mode: "scoped"
1891
2132
  });
1892
- var _useTranslation = useTranslation(),
1893
- t = _useTranslation.t;
1894
- var handleChange = function handleChange(option) {
1895
- if (isEmpty(option) || isNil(option)) {
1896
- handleApplyFilter({
1897
- _delete: true
1898
- });
1899
- return;
1900
- }
1901
- var updatedFilter = buildUpdatedFilter({
1902
- column: column,
1903
- defaultType: defaultType,
1904
- option: option
1905
- });
1906
- handleApplyFilter(updatedFilter);
1907
- };
1908
2133
  return /*#__PURE__*/React.createElement("div", {
1909
- className: "neeto-filters-pane-filter__item-wrapper"
1910
- }, /*#__PURE__*/React.createElement(Select, _extends({
1911
- autoFocus: autoFocus,
1912
- label: label,
1913
- options: options,
1914
- value: value,
1915
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
1916
- isClearable: !defaultValue && isClearable,
1917
- isMulti: isMulti(defaultType),
1918
- strategy: "fixed",
1919
- placeholder: t("neetoFilters.messages.selectResource", {
1920
- resource: label
1921
- })
1922
- }, isNotEmpty(helpIconProps) && {
1923
- labelProps: {
1924
- helpIconProps: buildHelpIconProps(helpIconProps)
2134
+ className: "neeto-filters-bar__block",
2135
+ "data-cy": "neeto-filters-".concat(hyphenate(childKey), "-block"),
2136
+ tabIndex: 0,
2137
+ ref: function ref(node) {
2138
+ deleteBlockHotKeyRef.current = node;
2139
+ openFilterPaneHotKeyRef.current = node;
2140
+ },
2141
+ onClick: function onClick() {
2142
+ return setIsPaneOpen(childKey);
1925
2143
  }
1926
- }, {
1927
- onChange: handleChange
1928
- }, otherProps)));
2144
+ }, /*#__PURE__*/React.createElement(Typography, {
2145
+ style: "body2",
2146
+ weight: "medium"
2147
+ }, childKey), /*#__PURE__*/React.createElement("div", {
2148
+ className: "neeto-filters-bar__block-close"
2149
+ }, /*#__PURE__*/React.createElement(Close, {
2150
+ "data-cy": "neeto-filters-".concat(hyphenate(childKey), "-block-close-btn"),
2151
+ size: 16,
2152
+ strokeWidth: 2,
2153
+ onClick: function onClick(event) {
2154
+ event.stopPropagation();
2155
+ handleDelete(childKey);
2156
+ }
2157
+ })));
1929
2158
  };
1930
- var Dropdown$1 = /*#__PURE__*/React.memo(Dropdown);
1931
2159
 
1932
- var SingleDatetime = function SingleDatetime(_ref) {
1933
- var column = _ref.column,
1934
- filter = _ref.filter,
2160
+ var FilterBar = function FilterBar(_ref) {
2161
+ var entity = _ref.entity,
1935
2162
  filters = _ref.filters,
1936
- handleApplyFilter = _ref.handleApplyFilter,
1937
- autoFocus = _ref.autoFocus;
1938
- var _useState = useState(function () {
1939
- return findBy({
1940
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1941
- }, SINGLE_DATE_OPTIONS) || SINGLE_DATE_OPTIONS[0];
1942
- }),
1943
- _useState2 = _slicedToArray(_useState, 2),
1944
- selectedRule = _useState2[0],
1945
- setSelectedRule = _useState2[1];
1946
- var key = column.key,
1947
- _column$defaultType = column.defaultType,
1948
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1949
- label = column.label,
1950
- _column$helpIconProps = column.helpIconProps,
1951
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1952
- var otherProps = getOtherProps(column);
1953
- var datePickerType = selectedRule.value === "between" ? "range" : "date";
1954
- var value = filter === null || filter === void 0 ? void 0 : filter.value;
1955
-
1956
- // Reset states when "Clear filters" button is clicked.
1957
- useEffect(function () {
1958
- if (!isEmpty(filters)) return;
1959
- setSelectedRule(SINGLE_DATE_OPTIONS[0]);
1960
- }, [filters]);
1961
- var handleRuleChange = function handleRuleChange(ruleOption) {
1962
- setSelectedRule(ruleOption);
1963
-
1964
- // Clear value if switched between incompatable types
1965
- var updateValue = value;
1966
- if (datePickerType === "range" && ruleOption.value !== "between" || datePickerType === "date" && ruleOption.value === "between") {
1967
- updateValue = "";
1968
- }
1969
- var updatedFilter = buildUpdatedFilter({
1970
- column: column,
1971
- defaultType: defaultType,
1972
- option: {},
1973
- rule: ruleOption.value,
1974
- value: updateValue
1975
- });
1976
- handleApplyFilter(updatedFilter);
1977
- };
1978
- var handleChange = function handleChange(dates) {
1979
- if (isEmpty(dates) || isNil(dates)) {
1980
- handleApplyFilter({
1981
- _delete: true
1982
- });
2163
+ setIsSavePaneOpen = _ref.setIsSavePaneOpen,
2164
+ setIsPaneOpen = _ref.setIsPaneOpen,
2165
+ childrenKeys = _ref.childrenKeys,
2166
+ nonHiddenFilters = _ref.nonHiddenFilters,
2167
+ childrenFiltersApplied = _ref.childrenFiltersApplied,
2168
+ keywordFilter = _ref.keywordFilter,
2169
+ handleApplyFilters = _ref.handleApplyFilters;
2170
+ var _useTranslation = useTranslation(),
2171
+ t = _useTranslation.t;
2172
+ var history = useHistory();
2173
+ var searchParams = useQueryParams({
2174
+ toCamelCase: false
2175
+ });
2176
+ var handleDelete = function handleDelete(key) {
2177
+ if (key === SEARCH_TERM_KEY) {
2178
+ var params = omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams());
2179
+ var pathname = window.location.pathname;
2180
+ history.push(buildUrl(pathname, params));
1983
2181
  return;
1984
2182
  }
1985
- var value = datePickerType === "range" ? pluck("$d", dates).map(function (date) {
1986
- return date.toISOString();
1987
- }) : dates["$d"];
1988
- var updatedFilter = buildUpdatedFilter({
1989
- column: column,
1990
- defaultType: defaultType,
1991
- option: {},
1992
- rule: selectedRule.value,
1993
- value: value
1994
- });
1995
- handleApplyFilter(updatedFilter);
2183
+ if (childrenKeys.includes(key)) {
2184
+ var _params = omit([key], getSnakeCasedQueryParams());
2185
+ var _pathname = window.location.pathname;
2186
+ history.push(buildUrl(_pathname, _params));
2187
+ }
2188
+ var newFilters = removeBy({
2189
+ key: key
2190
+ }, filters);
2191
+ handleApplyFilters(newFilters);
1996
2192
  };
1997
- return /*#__PURE__*/React.createElement("div", {
1998
- className: "neeto-filters-pane-filter__item-wrapper"
1999
- }, /*#__PURE__*/React.createElement(Select, _extends({
2000
- label: label,
2001
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
2002
- defaultValue: SINGLE_DATE_OPTIONS[0],
2003
- options: SINGLE_DATE_OPTIONS,
2004
- strategy: "fixed",
2005
- value: selectedRule
2006
- }, isNotEmpty(helpIconProps) && {
2007
- labelProps: {
2008
- helpIconProps: buildHelpIconProps(helpIconProps)
2193
+ var handleClearAll = function handleClearAll() {
2194
+ var params = isKeywordFilterPresent(keywordFilter) ? omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
2195
+ var pathname = window.location.pathname;
2196
+ history.push(buildUrl(pathname, params));
2197
+ handleApplyFilters([], true);
2198
+ };
2199
+ var hideClearButton = nonHiddenFilters.every(function (_ref2) {
2200
+ var defaultValue = _ref2.defaultValue,
2201
+ isClearable = _ref2.isClearable;
2202
+ return defaultValue && !isClearable;
2203
+ }) && !childrenFiltersApplied;
2204
+ return /*#__PURE__*/React.createElement(React.Fragment, null, nonHiddenFilters.map(function (filter) {
2205
+ var _filter$suffixCompone;
2206
+ return /*#__PURE__*/React.createElement(React.Fragment, {
2207
+ key: filter.key
2208
+ }, /*#__PURE__*/React.createElement(Block, {
2209
+ filter: filter,
2210
+ handleDelete: handleDelete,
2211
+ setIsPaneOpen: setIsPaneOpen
2212
+ }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/React.createElement("div", {
2213
+ className: "neeto-filters-bar--separator"
2214
+ }));
2215
+ }), childrenKeys.filter(function (childKey) {
2216
+ return has(childKey, searchParams);
2217
+ }).map(function (childKey) {
2218
+ return /*#__PURE__*/React.createElement(React.Fragment, {
2219
+ key: childKey
2220
+ }, /*#__PURE__*/React.createElement(ChildBlock, {
2221
+ childKey: childKey,
2222
+ handleDelete: handleDelete,
2223
+ setIsPaneOpen: setIsPaneOpen
2224
+ }), /*#__PURE__*/React.createElement("div", {
2225
+ className: "neeto-filters-bar--separator"
2226
+ }));
2227
+ }), /*#__PURE__*/React.createElement("div", {
2228
+ className: "flex items-center gap-x-2"
2229
+ }, isPresent(entity) && !hasOnlyKeywordFilter(filters) && /*#__PURE__*/React.createElement(Button, {
2230
+ label: t("neetoFilters.segments.saveAsNewSegment"),
2231
+ style: "secondary",
2232
+ onClick: function onClick() {
2233
+ setIsPaneOpen(false);
2234
+ setIsSavePaneOpen({
2235
+ action: SEGMENT_ACTIONS$1.CREATE
2236
+ });
2009
2237
  }
2238
+ }), !hideClearButton && /*#__PURE__*/React.createElement(Button, {
2239
+ "data-cy": "neeto-filters-bar-clear-btn",
2240
+ label: t("neetoFilters.common.clearFilters"),
2241
+ style: "text",
2242
+ onClick: handleClearAll
2243
+ })));
2244
+ };
2245
+
2246
+ var fetch = function fetch(params) {
2247
+ return axios.get(SEGMENTS_BASE_URL, {
2248
+ params: params
2249
+ });
2250
+ };
2251
+ var show = function show(id) {
2252
+ return axios.get("".concat(SEGMENTS_BASE_URL, "/").concat(id), {
2253
+ transformResponseCase: false
2254
+ });
2255
+ };
2256
+ var create = function create(payload) {
2257
+ return axios.post(SEGMENTS_BASE_URL, {
2258
+ segment: payload
2010
2259
  }, {
2011
- onChange: handleRuleChange
2012
- })), /*#__PURE__*/React.createElement(DatePicker, _extends({
2013
- autoFocus: autoFocus,
2014
- value: value,
2015
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2016
- getPopupContainer: prop("parentNode"),
2017
- type: datePickerType,
2018
- onChange: handleChange
2019
- }, otherProps)));
2260
+ showToastr: false
2261
+ });
2262
+ };
2263
+ var update = function update(_ref) {
2264
+ var id = _ref.id,
2265
+ payload = _ref.payload,
2266
+ _ref$showToastr = _ref.showToastr,
2267
+ showToastr = _ref$showToastr === void 0 ? true : _ref$showToastr;
2268
+ return axios.put("".concat(SEGMENTS_BASE_URL, "/").concat(id), payload, {
2269
+ showToastr: showToastr
2270
+ });
2271
+ };
2272
+ var destroy = function destroy(id) {
2273
+ return axios["delete"]("".concat(SEGMENTS_BASE_URL, "/").concat(id));
2274
+ };
2275
+ var segmentsApi = {
2276
+ fetch: fetch,
2277
+ show: show,
2278
+ create: create,
2279
+ update: update,
2280
+ destroy: destroy
2020
2281
  };
2021
2282
 
2022
- var SingleTime = function SingleTime(_ref) {
2023
- var column = _ref.column,
2024
- filter = _ref.filter,
2025
- filters = _ref.filters,
2026
- handleApplyFilter = _ref.handleApplyFilter,
2027
- autoFocus = _ref.autoFocus;
2028
- var _useState = useState(function () {
2029
- return findBy({
2030
- value: filter === null || filter === void 0 ? void 0 : filter.rule
2031
- }, SINGLE_TIME_OPTIONS) || SINGLE_TIME_OPTIONS[0];
2283
+ 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; }
2284
+ 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; }
2285
+ var SEGMENTS_LIST = QUERY_KEYS.SEGMENTS_LIST;
2286
+ var useFetchSegments = function useFetchSegments(_ref) {
2287
+ var entity = _ref.entity,
2288
+ _ref$searchTerm = _ref.searchTerm,
2289
+ searchTerm = _ref$searchTerm === void 0 ? "" : _ref$searchTerm;
2290
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2291
+ return useQuery([SEGMENTS_LIST, entity, searchTerm], function () {
2292
+ return segmentsApi.fetch({
2293
+ entity: entity,
2294
+ searchTerm: searchTerm
2295
+ });
2296
+ }, mergeRight({
2297
+ staleTime: SEGMENTS_STALE_TIME,
2298
+ select: prop("segments")
2299
+ }, options));
2300
+ };
2301
+ var useCreateSegment = function useCreateSegment(options) {
2302
+ return useMutationWithInvalidation(segmentsApi.create, _objectSpread$3({
2303
+ keysToInvalidate: [SEGMENTS_LIST]
2304
+ }, options));
2305
+ };
2306
+ var useUpdateSegment = function useUpdateSegment(options) {
2307
+ return useMutationWithInvalidation(segmentsApi.update, _objectSpread$3({
2308
+ keysToInvalidate: [SEGMENTS_LIST]
2309
+ }, options));
2310
+ };
2311
+ var useDestroySegment = function useDestroySegment(options) {
2312
+ return useMutationWithInvalidation(segmentsApi.destroy, _objectSpread$3({
2313
+ keysToInvalidate: [SEGMENTS_LIST]
2314
+ }, options));
2315
+ };
2316
+
2317
+ 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; }
2318
+ 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; }
2319
+ var useSegment = function useSegment(_ref) {
2320
+ var entity = _ref.entity,
2321
+ keyword = _ref.keyword,
2322
+ columns = _ref.columns,
2323
+ childrenKeys = _ref.childrenKeys;
2324
+ var history = useHistory$1();
2325
+ var _useTranslation = useTranslation(),
2326
+ t = _useTranslation.t;
2327
+ var initialRenderRef = useRef(true);
2328
+ var _useQueryParams = useQueryParams(),
2329
+ segmentId = _useQueryParams.segmentId;
2330
+ var _useState = useState({
2331
+ action: undefined
2032
2332
  }),
2033
2333
  _useState2 = _slicedToArray(_useState, 2),
2034
- selectedRule = _useState2[0],
2035
- setSelectedRule = _useState2[1];
2036
- var key = column.key,
2037
- _column$defaultType = column.defaultType,
2038
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2039
- label = column.label,
2040
- _column$helpIconProps = column.helpIconProps,
2041
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2042
- var otherProps = getOtherProps(column);
2043
- var timePickerType = selectedRule.value === "between" ? "range" : "time";
2044
- var value = filter === null || filter === void 0 ? void 0 : filter.value;
2334
+ isSavePaneOpen = _useState2[0],
2335
+ setIsSavePaneOpen = _useState2[1];
2336
+ var _useCreateSegment = useCreateSegment(),
2337
+ createSegment = _useCreateSegment.mutate,
2338
+ isCreating = _useCreateSegment.isLoading;
2339
+ var _useUpdateSegment = useUpdateSegment(),
2340
+ updateSegment = _useUpdateSegment.mutate,
2341
+ isUpdating = _useUpdateSegment.isLoading;
2342
+ var isSubmitting = isCreating || isUpdating;
2343
+ var searchParams = useQueryParams({
2344
+ toCamelCase: false
2345
+ });
2346
+ var keywordValue = searchParams[SEARCH_TERM_KEY] || "";
2347
+ var isEdit = isSavePaneOpen.action === SEGMENT_ACTIONS$1.EDIT;
2348
+ var keywordFilter = _objectSpread$2(_objectSpread$2({
2349
+ type: "text",
2350
+ rule: "contains",
2351
+ label: t("neetoFilters.common.searchTerm")
2352
+ }, keyword), {}, {
2353
+ key: SEARCH_TERM_KEY,
2354
+ value: keywordValue
2355
+ });
2356
+ var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
2357
+ var nonHiddenFilters = removeBy({
2358
+ hidden: true
2359
+ }, filters);
2360
+ var handleApplyFilters = function handleApplyFilters(newFilters, isClearAll) {
2361
+ var params = buildUrlFromFilters(_objectSpread$2({
2362
+ columns: columns,
2363
+ filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
2364
+ }, isClearAll && {
2365
+ isClearAll: true,
2366
+ childrenKeys: childrenKeys
2367
+ }));
2368
+ history.push({
2369
+ search: params
2370
+ });
2371
+ };
2372
+ var childrenFiltersApplied = childrenKeys.some(function (key) {
2373
+ return has(key, searchParams);
2374
+ });
2045
2375
  useEffect(function () {
2046
- if (!isEmpty(filters)) return;
2047
- setSelectedRule(SINGLE_TIME_OPTIONS[0]);
2048
- }, [filters]);
2049
- var handleRuleChange = function handleRuleChange(ruleOption) {
2050
- setSelectedRule(ruleOption);
2051
-
2052
- // Clear value if switched between incompatible types
2053
- var updateValue = value;
2054
- if (timePickerType === "range" && ruleOption.value !== "between" || timePickerType === "time" && ruleOption.value === "between") {
2055
- updateValue = "";
2376
+ if (initialRenderRef.current) {
2377
+ initialRenderRef.current = false;
2378
+ return noop;
2056
2379
  }
2057
- var updatedFilter = buildUpdatedFilter({
2058
- column: column,
2059
- defaultType: defaultType,
2060
- option: {},
2061
- rule: ruleOption.value,
2062
- value: updateValue
2380
+ var handler = setTimeout(function () {
2381
+ handleApplyFilters(filters);
2382
+ }, 500);
2383
+ return function () {
2384
+ return clearTimeout(handler);
2385
+ };
2386
+ }, [keywordValue]);
2387
+ var handleCreateSuccess = function handleCreateSuccess(_ref2) {
2388
+ var _filters$;
2389
+ var _ref2$segment = _ref2.segment,
2390
+ id = _ref2$segment.id,
2391
+ filters = _ref2$segment.filters;
2392
+ history.push({
2393
+ search: buildUrlFromSegment({
2394
+ columns: columns,
2395
+ filters: (_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions,
2396
+ id: id
2397
+ })
2063
2398
  });
2064
- handleApplyFilter(updatedFilter);
2399
+ setIsSavePaneOpen({
2400
+ action: undefined
2401
+ });
2402
+ showThumbsUpToastr();
2065
2403
  };
2066
- var handleChange = function handleChange(times) {
2067
- var value = timePickerType === "range" ? pluck("$d", times).map(function (time) {
2068
- return time.toISOString();
2069
- }) : times["$d"].toISOString();
2070
- var updatedFilter = buildUpdatedFilter({
2071
- column: column,
2072
- defaultType: defaultType,
2073
- option: {},
2074
- rule: selectedRule.value,
2075
- value: value
2404
+ var handleCreate = function handleCreate(_ref3, _ref4) {
2405
+ var name = _ref3.name;
2406
+ var setFieldError = _ref4.setFieldError;
2407
+ var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
2408
+ createSegment({
2409
+ name: name,
2410
+ entity: entity,
2411
+ filters: filtersPayload
2412
+ }, {
2413
+ onSuccess: handleCreateSuccess,
2414
+ onError: function onError(error) {
2415
+ return setFieldError("name", error.response.data.error);
2416
+ }
2076
2417
  });
2077
- handleApplyFilter(updatedFilter);
2078
2418
  };
2079
- return /*#__PURE__*/React.createElement("div", {
2080
- className: "neeto-filters-pane-filter__item-wrapper"
2081
- }, /*#__PURE__*/React.createElement(Select, _extends({
2082
- label: label,
2083
- defaultValue: SINGLE_TIME_OPTIONS[0],
2084
- options: SINGLE_TIME_OPTIONS,
2085
- strategy: "fixed",
2086
- value: selectedRule
2087
- }, isNotEmpty(helpIconProps) && {
2088
- labelProps: {
2089
- helpIconProps: buildHelpIconProps(helpIconProps)
2090
- }
2091
- }, {
2092
- onChange: handleRuleChange
2093
- })), /*#__PURE__*/React.createElement(TimePicker, _extends({
2094
- autoFocus: autoFocus,
2095
- value: value,
2096
- use12Hours: true,
2097
- className: "w-full",
2098
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2099
- format: "h:mm A",
2100
- getPopupContainer: prop("parentNode"),
2101
- type: timePickerType,
2102
- onChange: handleChange
2103
- }, otherProps)));
2104
- };
2105
-
2106
- var Text = function Text(_ref) {
2107
- var column = _ref.column,
2108
- filter = _ref.filter,
2109
- filters = _ref.filters,
2110
- handleApplyFilter = _ref.handleApplyFilter,
2111
- autoFocus = _ref.autoFocus,
2112
- onClose = _ref.onClose;
2113
- var key = column.key,
2114
- _column$defaultType = column.defaultType,
2115
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2116
- label = column.label,
2117
- _column$showRuleSelec = column.showRuleSelector,
2118
- showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
2119
- _column$helpIconProps = column.helpIconProps,
2120
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2121
- var otherProps = getOtherProps(column);
2122
- var ruleOptions = buildRuleOptions({
2123
- defaultType: defaultType
2124
- });
2125
- var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
2126
- var _useState = useState(filter === null || filter === void 0 ? void 0 : filter.value),
2127
- _useState2 = _slicedToArray(_useState, 2),
2128
- inputValue = _useState2[0],
2129
- setInputValue = _useState2[1];
2130
- var _useState3 = useState(function () {
2131
- return findBy({
2132
- value: filter === null || filter === void 0 ? void 0 : filter.rule
2133
- }, ruleOptions) || ruleOptions[0];
2134
- }),
2135
- _useState4 = _slicedToArray(_useState3, 2),
2136
- selectedRule = _useState4[0],
2137
- setSelectedRule = _useState4[1];
2138
- var debouncedInputValue = useDebounce(inputValue);
2139
- var _useTranslation = useTranslation(),
2140
- t = _useTranslation.t;
2141
- var handleUpdateAndApplyFilter = function handleUpdateAndApplyFilter() {
2142
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : debouncedInputValue;
2143
- var rule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedRule;
2144
- if (equals(filter === null || filter === void 0 ? void 0 : filter.value, value) && equals(selectedRule, rule)) return;
2145
- var updatedFilter = buildUpdatedFilter({
2146
- column: column,
2147
- defaultType: defaultType,
2148
- option: {},
2149
- rule: rule.value,
2150
- value: value.trim()
2419
+ var handleUpdate = function handleUpdate(_ref5, _ref6) {
2420
+ var name = _ref5.name;
2421
+ var setFieldError = _ref6.setFieldError;
2422
+ var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
2423
+ updateSegment({
2424
+ id: segmentId,
2425
+ payload: {
2426
+ name: name,
2427
+ filters: filtersPayload
2428
+ }
2429
+ }, {
2430
+ onSuccess: function onSuccess() {
2431
+ setIsSavePaneOpen({
2432
+ action: undefined
2433
+ });
2434
+ showThumbsUpToastr();
2435
+ },
2436
+ onError: function onError(error) {
2437
+ return setFieldError("name", error.response.data.error);
2438
+ }
2151
2439
  });
2152
- handleApplyFilter(updatedFilter);
2153
2440
  };
2154
- var handleKeydown = function handleKeydown(e) {
2155
- if (!(e.key === "Enter")) return;
2156
- handleUpdateAndApplyFilter(inputValue);
2157
- onClose();
2158
- };
2159
- var handleRuleChange = function handleRuleChange(ruleOption) {
2160
- setSelectedRule(ruleOption);
2161
- if (!debouncedInputValue) return;
2162
- handleUpdateAndApplyFilter(debouncedInputValue, ruleOption);
2441
+ return {
2442
+ isEdit: isEdit,
2443
+ filters: filters,
2444
+ keywordFilter: keywordFilter,
2445
+ isSubmitting: isSubmitting,
2446
+ nonHiddenFilters: nonHiddenFilters,
2447
+ isSavePaneOpen: isSavePaneOpen,
2448
+ setIsSavePaneOpen: setIsSavePaneOpen,
2449
+ handleApplyFilters: handleApplyFilters,
2450
+ childrenFiltersApplied: childrenFiltersApplied,
2451
+ handleSubmit: isEdit ? handleUpdate : handleCreate
2163
2452
  };
2453
+ };
2164
2454
 
2165
- // Reset states when "Clear filters" button is clicked.
2166
- useEffect(function () {
2167
- (isEmpty(filters) || isNil(filter)) && setInputValue("");
2168
- }, [filter]);
2169
- useEffect(function () {
2170
- if (!debouncedInputValue) {
2171
- !isUndefinedOrEmpty(filter) && handleApplyFilter({
2172
- _delete: true
2455
+ var Menu = Dropdown$2.Menu,
2456
+ MenuItem = Dropdown$2.MenuItem;
2457
+ var SegmentBar = function SegmentBar(_ref) {
2458
+ var entity = _ref.entity,
2459
+ filters = _ref.filters,
2460
+ setIsSavePaneOpen = _ref.setIsSavePaneOpen,
2461
+ setIsPaneOpen = _ref.setIsPaneOpen;
2462
+ var _useTranslation = useTranslation(),
2463
+ t = _useTranslation.t;
2464
+ var _useQueryParams = useQueryParams(),
2465
+ segmentId = _useQueryParams.segmentId;
2466
+ var queryClient = useQueryClient();
2467
+ var cachedSegments = queryClient.getQueryData([QUERY_KEYS.SEGMENTS_LIST, entity, ""]) || DEFAULT_SEGMENTS_CACHE;
2468
+ var segment = findById(segmentId, cachedSegments.segments);
2469
+ if (isNotPresent(segment)) return null;
2470
+ var newChangesExists = deepCompare(segment.filters[0].conditions, filters);
2471
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Typography, {
2472
+ className: "neeto-ui-text-gray-600 mr-4",
2473
+ "data-cy": "neeto-filters-segment-name",
2474
+ style: "h4"
2475
+ }, segment.name), newChangesExists && /*#__PURE__*/React.createElement(Dropdown$2, {
2476
+ buttonStyle: "secondary",
2477
+ label: t("neetoFilters.segments.updateSegment")
2478
+ }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
2479
+ onClick: function onClick() {
2480
+ return setIsSavePaneOpen({
2481
+ action: SEGMENT_ACTIONS$1.EDIT
2173
2482
  });
2174
- return;
2175
- }
2176
- handleUpdateAndApplyFilter();
2177
- }, [debouncedInputValue]);
2178
- return /*#__PURE__*/React.createElement("div", {
2179
- className: "neeto-filters-pane-filter__item-wrapper"
2180
- }, showRuleSelector && /*#__PURE__*/React.createElement(Select, _extends({
2181
- label: label,
2182
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter-rule"),
2183
- defaultValue: ruleOptions[0],
2184
- options: ruleOptions,
2185
- strategy: "fixed",
2186
- value: selectedRule,
2187
- onChange: handleRuleChange
2188
- }, isNotEmpty(helpIconProps) && {
2189
- labelProps: {
2190
- helpIconProps: buildHelpIconProps(helpIconProps)
2191
2483
  }
2192
- })), /*#__PURE__*/React.createElement(Input$1, _extends({
2193
- autoFocus: autoFocus,
2194
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2195
- label: !showRuleSelector && label,
2196
- type: inputType,
2197
- value: inputValue
2198
- }, isNotEmpty(helpIconProps) && {
2199
- labelProps: {
2200
- helpIconProps: buildHelpIconProps(helpIconProps)
2484
+ }, t("neetoFilters.segments.updateSegment")), /*#__PURE__*/React.createElement(MenuItem.Button, {
2485
+ onClick: function onClick() {
2486
+ setIsPaneOpen(false);
2487
+ setIsSavePaneOpen({
2488
+ action: SEGMENT_ACTIONS$1.CREATE
2489
+ });
2201
2490
  }
2202
- }, {
2203
- placeholder: t("neetoFilters.messages.enterResource", {
2204
- resource: label
2205
- }),
2206
- onChange: function onChange(event) {
2207
- return setInputValue(event.target.value);
2208
- },
2209
- onKeyDown: handleKeydown
2210
- }, otherProps)));
2491
+ }, t("neetoFilters.segments.saveAsNewSegment")))));
2211
2492
  };
2212
2493
 
2213
- var Time = function Time(_ref) {
2214
- var column = _ref.column,
2215
- filter = _ref.filter,
2216
- handleApplyFilter = _ref.handleApplyFilter,
2217
- autoFocus = _ref.autoFocus;
2218
- var key = column.key,
2219
- _column$defaultType = column.defaultType,
2220
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2221
- label = column.label,
2222
- _column$helpIconProps = column.helpIconProps,
2223
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2224
- var otherProps = getOtherProps(column);
2225
- var value = buildSingleTimeValue(filter);
2226
- var isCustomTimeRangeShown = filter && isCustomTimeRange(filter.value);
2227
- var _useTranslation = useTranslation(),
2228
- t = _useTranslation.t;
2229
- var handleChange = function handleChange(option) {
2230
- if (isEmpty(option) || isNil(option)) {
2231
- handleApplyFilter({
2232
- _delete: true
2494
+ var Bar = function Bar(_ref) {
2495
+ var entity = _ref.entity,
2496
+ className = _ref.className,
2497
+ _ref$columns = _ref.columns,
2498
+ columns = _ref$columns === void 0 ? [] : _ref$columns,
2499
+ _ref$keyword = _ref.keyword,
2500
+ keyword = _ref$keyword === void 0 ? {
2501
+ node: "",
2502
+ value: "",
2503
+ setValue: noop
2504
+ } : _ref$keyword,
2505
+ _ref$setIsPaneOpen = _ref.setIsPaneOpen,
2506
+ setIsPaneOpen = _ref$setIsPaneOpen === void 0 ? identity : _ref$setIsPaneOpen,
2507
+ _ref$childrenKeys = _ref.childrenKeys,
2508
+ childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
2509
+ _ref$defaultSegmentNa = _ref.defaultSegmentName,
2510
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? t$1("neetoFilters.common.allResults") : _ref$defaultSegmentNa,
2511
+ customFilters = _ref.customFilters;
2512
+ var queryClient = useQueryClient();
2513
+ var _useQueryParams = useQueryParams(),
2514
+ segmentId = _useQueryParams.segmentId;
2515
+ var segmentFormInitialRef = useRef(null);
2516
+ var _useSegment = useSegment({
2517
+ entity: entity,
2518
+ keyword: keyword,
2519
+ columns: columns,
2520
+ childrenKeys: childrenKeys
2521
+ }),
2522
+ isEdit = _useSegment.isEdit,
2523
+ filters = _useSegment.filters,
2524
+ handleSubmit = _useSegment.handleSubmit,
2525
+ isSubmitting = _useSegment.isSubmitting,
2526
+ keywordFilter = _useSegment.keywordFilter,
2527
+ isSavePaneOpen = _useSegment.isSavePaneOpen,
2528
+ nonHiddenFilters = _useSegment.nonHiddenFilters,
2529
+ setIsSavePaneOpen = _useSegment.setIsSavePaneOpen,
2530
+ handleApplyFilters = _useSegment.handleApplyFilters,
2531
+ childrenFiltersApplied = _useSegment.childrenFiltersApplied;
2532
+ var BarComponent = segmentId ? SegmentBar : FilterBar;
2533
+ var cachedSegments = queryClient.getQueryData([QUERY_KEYS.SEGMENTS_LIST, entity, ""]) || DEFAULT_SEGMENTS_CACHE;
2534
+ var segment = findById(segmentId, cachedSegments.segments);
2535
+ if (isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
2536
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2537
+ className: classnames("neeto-filters-bar", _defineProperty({}, className, className))
2538
+ }, /*#__PURE__*/React.createElement(BarComponent, {
2539
+ childrenFiltersApplied: childrenFiltersApplied,
2540
+ childrenKeys: childrenKeys,
2541
+ entity: entity,
2542
+ filters: filters,
2543
+ handleApplyFilters: handleApplyFilters,
2544
+ keywordFilter: keywordFilter,
2545
+ nonHiddenFilters: nonHiddenFilters,
2546
+ setIsPaneOpen: setIsPaneOpen,
2547
+ setIsSavePaneOpen: setIsSavePaneOpen
2548
+ })), /*#__PURE__*/React.createElement(SegmentForm, {
2549
+ childrenKeys: childrenKeys,
2550
+ columns: columns,
2551
+ customFilters: customFilters,
2552
+ defaultSegmentName: defaultSegmentName,
2553
+ filters: filters,
2554
+ handleSubmit: handleSubmit,
2555
+ isEdit: isEdit,
2556
+ isSubmitting: isSubmitting,
2557
+ keywordFilter: keywordFilter,
2558
+ segmentFormInitialRef: segmentFormInitialRef,
2559
+ isOpen: isPresent(isSavePaneOpen.action),
2560
+ initialValues: isEdit ? assoc("filters", [{
2561
+ conditions: filters
2562
+ }], segment) : {
2563
+ name: "",
2564
+ filters: [{
2565
+ conditions: filters
2566
+ }]
2567
+ },
2568
+ onClose: function onClose() {
2569
+ return setIsSavePaneOpen({
2570
+ action: undefined
2233
2571
  });
2234
- return;
2235
- }
2236
- var updatedFilter = buildUpdatedFilter({
2237
- column: column,
2238
- defaultType: defaultType,
2239
- option: option
2240
- });
2241
- handleApplyFilter(updatedFilter);
2242
- };
2243
- var handleTimeRangeChange = function handleTimeRangeChange(times) {
2244
- var updatedFilter = buildUpdatedFilter({
2245
- column: column,
2246
- defaultType: defaultType,
2247
- option: {
2248
- value: pluck("$d", times).map(function (time) {
2249
- return time.toISOString();
2250
- })
2251
- }
2252
- });
2253
- handleApplyFilter(updatedFilter);
2254
- };
2255
- return /*#__PURE__*/React.createElement("div", {
2256
- className: "neeto-filters-pane-filter__item-wrapper"
2257
- }, /*#__PURE__*/React.createElement(Select, _extends({
2258
- autoFocus: autoFocus,
2259
- label: label,
2260
- value: value,
2261
- isClearable: true,
2262
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
2263
- options: TIME_OPTIONS,
2264
- strategy: "fixed",
2265
- placeholder: t("neetoFilters.messages.selectResource", {
2266
- resource: label
2267
- })
2268
- }, isNotEmpty(helpIconProps) && {
2269
- labelProps: {
2270
- helpIconProps: buildHelpIconProps(helpIconProps)
2271
2572
  }
2272
- }, {
2273
- onChange: handleChange
2274
- })), isCustomTimeRangeShown && /*#__PURE__*/React.createElement(TimePicker, _extends({
2275
- use12Hours: true,
2276
- "data-cy": "neeto-filters-".concat(hyphenate(key), "-date-range"),
2277
- format: "h:mm A",
2278
- getPopupContainer: prop("parentNode"),
2279
- type: "range",
2280
- value: filter.value,
2281
- onChange: handleTimeRangeChange
2282
- }, otherProps)));
2573
+ }));
2283
2574
  };
2284
- var Time$1 = /*#__PURE__*/React.memo(Time);
2285
2575
 
2286
- var Item = function Item(_ref) {
2287
- var column = _ref.column,
2288
- filters = _ref.filters,
2289
- onChange = _ref.onChange,
2290
- autoFocus = _ref.autoFocus,
2291
- onClose = _ref.onClose;
2292
- var key = column.key,
2293
- _column$defaultType = column.defaultType,
2294
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType;
2295
- var filter = useMemo(function () {
2296
- return findBy({
2297
- key: key
2298
- }, filters);
2299
- }, [filters, key]);
2300
- var handleApplyFilter = function handleApplyFilter(updatedFilter) {
2301
- if (updatedFilter._delete) onChange(removeBy({
2302
- key: key
2303
- }, filters));else if (!filter) onChange(append(updatedFilter, filters));else onChange(replaceBy({
2304
- key: key
2305
- }, updatedFilter, filters));
2306
- };
2307
- if (isText(defaultType) || isDigit(defaultType)) {
2308
- return /*#__PURE__*/React.createElement(Text, {
2309
- autoFocus: autoFocus,
2310
- column: column,
2311
- filter: filter,
2312
- filters: filters,
2313
- handleApplyFilter: handleApplyFilter,
2314
- onClose: onClose
2315
- });
2316
- }
2317
- if (isDate(defaultType)) {
2318
- return /*#__PURE__*/React.createElement(Datetime$1, {
2319
- autoFocus: autoFocus,
2320
- column: column,
2321
- filter: filter,
2322
- handleApplyFilter: handleApplyFilter
2323
- });
2576
+ function _objectWithoutPropertiesLoose(source, excluded) {
2577
+ if (source == null) return {};
2578
+ var target = {};
2579
+ var sourceKeys = Object.keys(source);
2580
+ var key, i;
2581
+ for (i = 0; i < sourceKeys.length; i++) {
2582
+ key = sourceKeys[i];
2583
+ if (excluded.indexOf(key) >= 0) continue;
2584
+ target[key] = source[key];
2324
2585
  }
2325
- if (isTime(defaultType)) {
2326
- return /*#__PURE__*/React.createElement(Time$1, {
2327
- autoFocus: autoFocus,
2328
- column: column,
2329
- filter: filter,
2330
- handleApplyFilter: handleApplyFilter
2331
- });
2586
+ return target;
2587
+ }
2588
+
2589
+ function _objectWithoutProperties(source, excluded) {
2590
+ if (source == null) return {};
2591
+ var target = _objectWithoutPropertiesLoose(source, excluded);
2592
+ var key, i;
2593
+ if (Object.getOwnPropertySymbols) {
2594
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
2595
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
2596
+ key = sourceSymbolKeys[i];
2597
+ if (excluded.indexOf(key) >= 0) continue;
2598
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
2599
+ target[key] = source[key];
2600
+ }
2332
2601
  }
2333
- if (isSingleDate(defaultType)) {
2334
- return /*#__PURE__*/React.createElement(SingleDatetime, {
2335
- autoFocus: autoFocus,
2336
- column: column,
2337
- filter: filter,
2338
- filters: filters,
2339
- handleApplyFilter: handleApplyFilter
2602
+ return target;
2603
+ }
2604
+
2605
+ var useFilters = function useFilters(_ref) {
2606
+ var onFiltersChange = _ref.onFiltersChange,
2607
+ columns = _ref.columns,
2608
+ keywordFilter = _ref.keywordFilter,
2609
+ onSelectorsChange = _ref.onSelectorsChange;
2610
+ var _useTransition = useTransition(),
2611
+ _useTransition2 = _slicedToArray(_useTransition, 2);
2612
+ _useTransition2[0];
2613
+ var startTransition = _useTransition2[1];
2614
+ var initialRender = useRef(true);
2615
+ var prevFilters = useRef([]);
2616
+ var location = useLocation();
2617
+ var filters = buildFiltersFromSearchParams(columns, false);
2618
+ var history = useHistory$1();
2619
+ var defaultValuesOfColumns = JSON.stringify(pluck("defaultValue", columns));
2620
+ var handlePrecenseOfDefaultFilters = function handlePrecenseOfDefaultFilters(defaultFilters) {
2621
+ var params = buildUrlFromFilters({
2622
+ columns: columns,
2623
+ filters: isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(defaultFilters), [keywordFilter]) : defaultFilters
2340
2624
  });
2341
- }
2342
- if (isSingleTime(defaultType)) {
2343
- return /*#__PURE__*/React.createElement(SingleTime, {
2344
- autoFocus: autoFocus,
2345
- column: column,
2346
- filter: filter,
2347
- filters: filters,
2348
- handleApplyFilter: handleApplyFilter
2625
+ history.replace({
2626
+ search: params
2349
2627
  });
2350
- }
2351
- if (isBoolean(defaultType) || isCheckbox(defaultType)) {
2352
- return /*#__PURE__*/React.createElement(Boolean$1, {
2353
- autoFocus: autoFocus,
2354
- column: column,
2355
- filter: filter,
2356
- handleApplyFilter: handleApplyFilter
2628
+ };
2629
+ var handleFiltersChange = function handleFiltersChange(filtersPayload) {
2630
+ startTransition(function () {
2631
+ onFiltersChange(buildFiltersPayload(filtersPayload.filter(function (filter) {
2632
+ return !isNil(filter.node);
2633
+ })));
2357
2634
  });
2358
- }
2359
- return /*#__PURE__*/React.createElement(Dropdown$1, {
2360
- autoFocus: autoFocus,
2361
- column: column,
2362
- filter: filter,
2363
- handleApplyFilter: handleApplyFilter
2364
- });
2635
+ };
2636
+
2637
+ //This function sends the updated filters to host via callbacks.
2638
+ var sendUpdatedFilters = function sendUpdatedFilters() {
2639
+ if (compareFilters(append(keywordFilter, filters), prevFilters.current)) {
2640
+ return;
2641
+ }
2642
+ var newFilters = buildFiltersFromSearchParams(columns);
2643
+ var filtersPayload = isKeywordFilterPresent(keywordFilter) && isNotEmpty(getSearchTermFromUrl()) ? append(keywordFilter, newFilters) : newFilters;
2644
+ handleFiltersChange(filtersPayload);
2645
+ onSelectorsChange(buildSelectorsFromURL(columns));
2646
+ };
2647
+ var handleChangesInURL = function handleChangesInURL() {
2648
+ var defaultFilters = buildDefaultFilters(columns, filters);
2649
+ var searchParams = getSnakeCasedQueryParams();
2650
+ var keys = pluck("key", append(keywordFilter, columns));
2651
+ if (keys.every(function (key) {
2652
+ return isNil(searchParams[key]);
2653
+ }) && !isEmpty(defaultFilters)) {
2654
+ history.replace({
2655
+ search: buildUrlFromFilters({
2656
+ columns: columns,
2657
+ filters: concat(defaultFilters, filters)
2658
+ })
2659
+ });
2660
+ filters = buildFiltersFromSearchParams(columns, false);
2661
+ }
2662
+ };
2663
+ useEffect(function () {
2664
+ if (initialRender.current) {
2665
+ initialRender.current = false;
2666
+ var keywordValue = getSearchTermFromUrl();
2667
+ var defaultFilters = buildDefaultFilters(columns, filters);
2668
+ isNotEmpty(defaultFilters) && handlePrecenseOfDefaultFilters(defaultFilters);
2669
+ prevFilters.current = append(mergeRight(keywordFilter, {
2670
+ value: keywordValue
2671
+ }), filters);
2672
+ } else {
2673
+ handleChangesInURL();
2674
+ sendUpdatedFilters();
2675
+ prevFilters.current = append(keywordFilter, filters);
2676
+ }
2677
+ }, [location.search, defaultValuesOfColumns]);
2678
+ return filters;
2365
2679
  };
2366
2680
 
2367
2681
  var _excluded = ["isOpen", "onClose", "columns", "onChange", "isSearchable", "keyword", "onSelectorsChange", "childrenKeys", "children", "className"];
@@ -2387,7 +2701,7 @@ var Pane = function Pane(_ref) {
2387
2701
  _useState2 = _slicedToArray(_useState, 2),
2388
2702
  searchTerm = _useState2[0],
2389
2703
  setSearchTerm = _useState2[1];
2390
- var history = useHistory();
2704
+ var history = useHistory$1();
2391
2705
  var _useTranslation = useTranslation(),
2392
2706
  t = _useTranslation.t;
2393
2707
  columns = useMemo(function () {
@@ -2529,7 +2843,7 @@ var Pane = function Pane(_ref) {
2529
2843
 
2530
2844
  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}}
2531
2845
 
2532
- 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-direction:column;gap:8px}.neeto-filters-pane-filter__body .accordion_item .neeto-filters-pane-filter__item-wrapper{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)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19iYXIuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9pbmRleC5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2ZpbHRlcnMuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9hYnN0cmFjdHMvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUdFLGtCQUFBLENBRkEsWUFBQSxDQUNBLGNDRUYsQ0RDRSwwQkFLRSxxQ0FBQSxDQUhBLFlBQUEsQ0FFQSxPQUFBLENBR0EsWUFBQSxDQUNBLGVBQUEsQ0FFQSxlQUFBLENBVEEsZUFBQSxDQUVBLGlCQUFBLENBR0EscUNBQUEsQ0FHQSxrQkNFSixDRENJLHdDQUNFLG1DQ0NOLENERUksZ0NBUUUsZ0hBQUEsQ0FGQSxtQ0FBQSxDQURBLFNBQUEsQ0FEQSxXQUFBLENBSEEsaUJBQUEsQ0FFQSxPQUFBLENBREEsS0FBQSxDQUtBLHFDQ0NOLENET0ksaUVBRUUsOENBQUEsQ0FDQSxjQ05OLENEUU0saUlBR0UscUNBQUEsQ0FEQSxnQ0FBQSxDQURBLFNDSlIsQ0RVSSxnQ0FFRSx1REFBQSxDQURBLFlDUE4sQ0RZRSw4QkFHRSxrQkFBQSxDQUZBLG1EQUFBLENBQ0EsZUNUSixDQy9DQSwyQkFFRSxnQkFBQSxDQURBLFdEbURGLENDaERFLGlDQUNFLDZCQUFBLENBQ0EsUURrREosQ0NoREksbUNBQ0UscUJEa0ROLENDL0NJLG1DQUNFLGlCRGlETixDQzlDSSwwRUFDRSxZQUFBLENBQ0EscUJBQUEsQ0FDQSxPRGdETixDQzVDTSwwRkFDRSxlRDhDUixDQzVDUSx3R0FDRSxZRDhDVixDQzFDUSx5RkFDRSxhRDRDVixDQ3hDSSx5RUFDRSxzREQwQ04sQ0VqRUksb0NEZEosMkJBMENJLFdEeUNGLENBQ0YsQ0N0Q0EsNkJBQ0UseUNBQUEsQ0FBQSxpQ0FBQSxDQUNBLGtERHlDRiIsInNvdXJjZXNDb250ZW50IjpbIi5uZWV0by1maWx0ZXJzLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmX19ibG9jayB7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBnYXA6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZWV0by11aS1yb3VuZGVkKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgICBtYXJnaW46IDRweCAwO1xuICAgIG1heC13aWR0aDogMzg0cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgcDpmaXJzdC1jaGlsZCB7XG4gICAgICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktNzAwKSk7XG4gICAgfVxuXG4gICAgJi1jbG9zZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHBhZGRpbmc6IDhweDtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSk7XG4gICAgICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS0yMDApLCAwLjUpIDAlLFxuICAgICAgICByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMSkgMjUlXG4gICAgICApO1xuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWJsYWNrKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSwgMTUlKTtcbiAgICB9XG4gIH1cblxuICAmLS1zZXBhcmF0b3Ige1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktNDAwKSk7XG4gICAgbWFyZ2luOiAxMnB4IDhweDtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB9XG59XG4iLCIubmVldG8tZmlsdGVycy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrIHtcbiAgcGFkZGluZzogNHB4IDhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBnYXA6IDRweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmVldG8tdWktcm91bmRlZCk7XG4gIHRyYW5zaXRpb246IHZhcigtLW5lZXRvLXVpLXRyYW5zaXRpb24pO1xuICBtYXJnaW46IDRweCAwO1xuICBtYXgtd2lkdGg6IDM4NHB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jayBwOmZpcnN0LWNoaWxkIHtcbiAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTcwMCkpO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jay1jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogOHB4O1xuICBvcGFjaXR5OiAwO1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSk7XG4gIHRyYW5zaXRpb246IHZhcigtLW5lZXRvLXVpLXRyYW5zaXRpb24pO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS0yMDApLCAwLjUpIDAlLCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMSkgMjUlKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2s6aG92ZXIsIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2s6YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2s6aG92ZXIgLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jay1jbG9zZSwgLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jazphY3RpdmUgLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jay1jbG9zZSB7XG4gIG9wYWNpdHk6IDE7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktYmxhY2spKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmVldG8tdWktcm91bmRlZCk7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS04MDApLCAxNSUpO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyLS1zZXBhcmF0b3Ige1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTQwMCkpO1xuICBtYXJnaW46IDEycHggOHB4O1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xufVxuXG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlciB7XG4gIHdpZHRoOiAzNjBweDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSB7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIGdhcDogMjBweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5ID4gKiB7XG4gIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50O1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgcCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19pdGVtLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDhweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogMTZweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyOmZpcnN0LW9mLXR5cGUge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgLmFjY29yZGlvbl9pdGVtOmZpcnN0LW9mLXR5cGUgLm5lZXRvLXVpLWFjY29yZGlvbl9faXRlbSB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgLm5lZXRvLXVpLWFjY29yZGlvbl9fd3JhcHBlci0tbGFzdC1pdGVtIHtcbiAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gIH1cbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1iYWNrZHJvcCB7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS03MDApLCAwLjIpO1xufSIsIi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyIHtcbiAgd2lkdGg6IDM2MHB4O1xuICBvdmVyZmxvdzogdmlzaWJsZTtcblxuICAmX19ib2R5IHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICAgIGdhcDogMjBweDtcblxuICAgID4gKiB7XG4gICAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuXG4gICAgLmFjY29yZGlvbl9pdGVtIHtcbiAgICAgIC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19pdGVtLXdyYXBwZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuXG4gICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgLm5lZXRvLXVpLWFjY29yZGlvbl9faXRlbSB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLm5lZXRvLXVpLWFjY29yZGlvbl9fd3JhcHBlci0tbGFzdC1pdGVtIHtcbiAgICAgIGJvcmRlci1ib3R0b206IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgdmlld3BvcnQobW9iKSB7XG4gICAgd2lkdGg6IDEwMHZ3O1xuICB9XG59XG5cbi5uZWV0by1maWx0ZXJzLXBhbmUtYmFja2Ryb3Age1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktNzAwKSwgMC4yKTtcbn1cbiIsIkBtaXhpbiB2aWV3cG9ydCgkbWVkaWEpIHtcbiAgQGlmICRtZWRpYT09ZGVzayB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT10YWItbWluIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWVkaWE9PXRhYi1vbmx5IHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtZWRpYT09bW9iIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtZWRpYT09eHMtbW9iIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NzlweCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iXX0= */";
2846
+ 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= */";
2533
2847
  n(css,{});
2534
2848
 
2535
2849
  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; }
@@ -2585,14 +2899,22 @@ var Filters = withT(function (_ref) {
2585
2899
  }, paneProps)), children));
2586
2900
  });
2587
2901
 
2588
- var DeleteAlert = function DeleteAlert(_ref) {
2902
+ var ITEMS_MAX_COUNT = 20;
2903
+ var SEGMENT_ACTIONS = {
2904
+ EDIT: "edit",
2905
+ DELETE: "delete"
2906
+ };
2907
+
2908
+ var Delete = function Delete(_ref) {
2589
2909
  var isOpen = _ref.isOpen,
2590
2910
  onClose = _ref.onClose,
2591
- segment = _ref.segment,
2592
- columns = _ref.columns;
2911
+ _ref$segment = _ref.segment,
2912
+ segment = _ref$segment === void 0 ? {} : _ref$segment,
2913
+ _ref$columns = _ref.columns,
2914
+ columns = _ref$columns === void 0 ? [] : _ref$columns;
2593
2915
  var _useTranslation = useTranslation(),
2594
2916
  t = _useTranslation.t;
2595
- var history = useHistory();
2917
+ var history = useHistory$1();
2596
2918
  var _getQueryParams = getQueryParams(),
2597
2919
  segmentId = _getQueryParams.segmentId;
2598
2920
  var _useDestroySegment = useDestroySegment(),
@@ -2630,162 +2952,30 @@ var DeleteAlert = function DeleteAlert(_ref) {
2630
2952
  });
2631
2953
  };
2632
2954
 
2633
- var Card = function Card(_ref) {
2634
- var segment = _ref.segment,
2635
- columns = _ref.columns,
2636
- defaultSegmentName = _ref.defaultSegmentName;
2637
- var _useState = useState(false),
2638
- _useState2 = _slicedToArray(_useState, 2),
2639
- isEditing = _useState2[0],
2640
- setIsEditing = _useState2[1];
2641
- var _useState3 = useState(false),
2642
- _useState4 = _slicedToArray(_useState3, 2),
2643
- isDeleteAlertOpen = _useState4[0],
2644
- setIsDeleteAlertOpen = _useState4[1];
2645
- var _useTranslation = useTranslation(),
2646
- t = _useTranslation.t;
2647
- var Menu = Dropdown$2.Menu,
2648
- MenuItem = Dropdown$2.MenuItem;
2649
- var _useUpdateSegment = useUpdateSegment(),
2650
- updateSegment = _useUpdateSegment.mutate;
2651
- var handleRename = function handleRename(values) {
2652
- return updateSegment({
2653
- id: segment.id,
2654
- payload: values
2655
- }, {
2656
- onSuccess: function onSuccess() {
2657
- return setIsEditing(false);
2658
- }
2659
- });
2660
- };
2661
- return /*#__PURE__*/React.createElement(Form, {
2662
- className: "neeto-ui-rounded-md flex w-full items-center justify-between border p-2",
2663
- formProps: {
2664
- noValidate: true
2665
- },
2666
- formikProps: {
2667
- initialValues: segment,
2668
- validateOnChange: true,
2669
- validateOnBlur: true,
2670
- validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
2671
- onSubmit: handleRename,
2672
- enableReinitialize: true
2673
- }
2674
- }, function (_ref2) {
2675
- var resetForm = _ref2.resetForm;
2676
- return /*#__PURE__*/React.createElement(React.Fragment, null, isEditing ? /*#__PURE__*/React.createElement(FormikInlineInput, {
2677
- autoFocus: true,
2678
- nakedInput: true,
2679
- handleCancel: function handleCancel() {
2680
- return setIsEditing(false);
2681
- },
2682
- name: "name",
2683
- placeholder: t("neetoFilters.segments.name")
2684
- }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Typography, {
2685
- style: "body2"
2686
- }, segment.name), /*#__PURE__*/React.createElement(Dropdown$2, {
2687
- buttonStyle: "text",
2688
- disabled: isNotPresent(segment.id),
2689
- icon: MenuHorizontal,
2690
- size: "small"
2691
- }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
2692
- onClick: function onClick() {
2693
- setIsEditing(true);
2694
- resetForm();
2695
- }
2696
- }, t("neetoFilters.common.rename")), /*#__PURE__*/React.createElement(MenuItem.Button, {
2697
- onClick: function onClick() {
2698
- return setIsDeleteAlertOpen(true);
2699
- }
2700
- }, t("neetoFilters.common.delete"))))), /*#__PURE__*/React.createElement(DeleteAlert, {
2701
- columns: columns,
2702
- segment: segment,
2703
- isOpen: isDeleteAlertOpen,
2704
- onClose: function onClose() {
2705
- return setIsDeleteAlertOpen(false);
2706
- }
2707
- }));
2708
- });
2709
- };
2710
- var Card$1 = /*#__PURE__*/React.memo(Card);
2711
-
2712
- var ManagePane = function ManagePane(_ref) {
2713
- var isOpen = _ref.isOpen,
2714
- onClose = _ref.onClose,
2715
- entity = _ref.entity,
2716
- columns = _ref.columns,
2717
- defaultSegmentName = _ref.defaultSegmentName;
2718
- var _useState = useState(""),
2719
- _useState2 = _slicedToArray(_useState, 2),
2720
- searchTerm = _useState2[0],
2721
- setSearchTerm = _useState2[1];
2722
- var inputRef = useRef(null);
2723
- var _useTranslation = useTranslation(),
2724
- t = _useTranslation.t;
2725
- var debouncedSearchTerm = useDebounce(searchTerm);
2726
- var _useFetchSegments = useFetchSegments({
2727
- entity: entity,
2728
- searchTerm: debouncedSearchTerm
2729
- }),
2730
- _useFetchSegments$dat = _useFetchSegments.data,
2731
- segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
2732
- isLoading = _useFetchSegments.isLoading;
2733
- return /*#__PURE__*/React.createElement(Pane$1, {
2734
- isOpen: isOpen,
2735
- onClose: onClose,
2736
- initialFocusRef: inputRef
2737
- }, /*#__PURE__*/React.createElement(Pane$1.Header, null, /*#__PURE__*/React.createElement(Typography, {
2738
- style: "h2"
2739
- }, t("neetoFilters.segments.manageSegments"))), /*#__PURE__*/React.createElement(Pane$1.Body, {
2740
- className: "max-h-full gap-4 overflow-scroll"
2741
- }, /*#__PURE__*/React.createElement(Search, {
2742
- className: "w-full flex-grow-0",
2743
- placeholder: t("neetoFilters.segments.searchSegments"),
2744
- ref: inputRef,
2745
- onSearch: function onSearch(value) {
2746
- return setSearchTerm(value);
2747
- }
2748
- }), isLoading ? /*#__PURE__*/React.createElement(Spinner, {
2749
- className: "mx-auto mt-4"
2750
- }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Card$1, {
2751
- segment: {
2752
- name: defaultSegmentName
2753
- }
2754
- }), isEmpty(segments) ? /*#__PURE__*/React.createElement(Typography, {
2755
- className: "mx-auto",
2756
- style: "body2"
2757
- }, t("neetoFilters.segments.noSegmentsFound")) : segments.map(function (segment) {
2758
- return /*#__PURE__*/React.createElement(Card$1, {
2759
- columns: columns,
2760
- defaultSegmentName: defaultSegmentName,
2761
- segment: segment,
2762
- key: segment.id
2763
- });
2764
- }))));
2765
- };
2766
-
2767
- var ITEMS_MAX_COUNT = 20;
2768
-
2769
- var MenuBlocks = function MenuBlocks(_ref) {
2955
+ var useSegments = function useSegments(_ref) {
2770
2956
  var entity = _ref.entity,
2771
2957
  columns = _ref.columns,
2772
- defaultSegmentName = _ref.defaultSegmentName;
2773
- var _useState = useState(false),
2774
- _useState2 = _slicedToArray(_useState, 2),
2775
- showAll = _useState2[0],
2776
- setShowAll = _useState2[1];
2777
- var history = useHistory();
2958
+ appliedFilters = _ref.appliedFilters,
2959
+ childrenKeys = _ref.childrenKeys;
2778
2960
  var _useTranslation = useTranslation(),
2779
2961
  t = _useTranslation.t;
2780
- var _getQueryParams = getQueryParams(),
2781
- segmentId = _getQueryParams.segmentId;
2782
- var appliedFilters = buildFiltersFromURL(columns);
2962
+ var history = useHistory$1();
2783
2963
  var _useFetchSegments = useFetchSegments({
2784
2964
  entity: entity
2785
2965
  }),
2786
2966
  _useFetchSegments$dat = _useFetchSegments.data,
2787
2967
  segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
2788
2968
  isLoading = _useFetchSegments.isLoading;
2969
+ var _useUpdateSegment = useUpdateSegment(),
2970
+ updateSegment = _useUpdateSegment.mutate,
2971
+ isUpdating = _useUpdateSegment.isLoading;
2972
+ var _useState = useState({
2973
+ action: "",
2974
+ segment: undefined
2975
+ }),
2976
+ _useState2 = _slicedToArray(_useState, 2),
2977
+ confirmAction = _useState2[0],
2978
+ setConfirmAction = _useState2[1];
2789
2979
  var clearAppliedFilters = function clearAppliedFilters() {
2790
2980
  var _filters$, _filters$2;
2791
2981
  var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : appliedFilters;
@@ -2800,7 +2990,7 @@ var MenuBlocks = function MenuBlocks(_ref) {
2800
2990
  })
2801
2991
  });
2802
2992
  };
2803
- var applySelectedSegment = function applySelectedSegment(_ref2) {
2993
+ var handleSelectSegment = function handleSelectSegment(_ref2) {
2804
2994
  var _filters$3;
2805
2995
  var id = _ref2.id,
2806
2996
  filters = _ref2.filters;
@@ -2812,14 +3002,6 @@ var MenuBlocks = function MenuBlocks(_ref) {
2812
3002
  })
2813
3003
  });
2814
3004
  };
2815
- var handleSelectSegment = function handleSelectSegment(_ref3) {
2816
- var id = _ref3.id,
2817
- filters = _ref3.filters;
2818
- return equals(id, segmentId) ? clearAppliedFilters(filters) : applySelectedSegment({
2819
- id: id,
2820
- filters: filters
2821
- });
2822
- };
2823
3005
  if (isLoading) {
2824
3006
  return /*#__PURE__*/React.createElement(Spinner, null);
2825
3007
  }
@@ -2828,6 +3010,136 @@ var MenuBlocks = function MenuBlocks(_ref) {
2828
3010
  style: "body2"
2829
3011
  }, t("neetoFilters.segments.noSegmentsFound"));
2830
3012
  }
3013
+ var handleUpdate = function handleUpdate(_ref3, _ref4) {
3014
+ var name = _ref3.name;
3015
+ var setFieldError = _ref4.setFieldError;
3016
+ var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
3017
+ updateSegment({
3018
+ id: confirmAction.segment.id,
3019
+ payload: {
3020
+ name: name,
3021
+ filters: filtersPayload
3022
+ },
3023
+ showToastr: false
3024
+ }, {
3025
+ onSuccess: function onSuccess() {
3026
+ showThumbsUpToastr();
3027
+ setConfirmAction({
3028
+ action: "",
3029
+ segment: undefined
3030
+ });
3031
+ },
3032
+ onError: function onError(error) {
3033
+ return setFieldError("name", error.response.data.error);
3034
+ }
3035
+ });
3036
+ };
3037
+ var filters = buildFiltersFromSearchParams(columns);
3038
+ return {
3039
+ segments: segments,
3040
+ clearAppliedFilters: clearAppliedFilters,
3041
+ handleSelectSegment: handleSelectSegment,
3042
+ setConfirmAction: setConfirmAction,
3043
+ isUpdating: isUpdating,
3044
+ handleUpdate: handleUpdate,
3045
+ filters: filters,
3046
+ onClose: function onClose() {
3047
+ return setConfirmAction({
3048
+ action: "",
3049
+ segment: undefined
3050
+ });
3051
+ },
3052
+ selectedSegment: confirmAction.segment,
3053
+ isDeleteAlertOpen: confirmAction.action === SEGMENT_ACTIONS.DELETE,
3054
+ isEditPaneOpen: confirmAction.action === SEGMENT_ACTIONS.EDIT
3055
+ };
3056
+ };
3057
+
3058
+ var Segment = function Segment(_ref) {
3059
+ var id = _ref.id,
3060
+ isActive = _ref.isActive,
3061
+ label = _ref.label,
3062
+ onClick = _ref.onClick,
3063
+ _ref$shouldShowDropdo = _ref.shouldShowDropdown,
3064
+ shouldShowDropdown = _ref$shouldShowDropdo === void 0 ? false : _ref$shouldShowDropdo,
3065
+ segments = _ref.segments,
3066
+ setConfirmAction = _ref.setConfirmAction;
3067
+ var _useTranslation = useTranslation(),
3068
+ t = _useTranslation.t;
3069
+ var menuItems = [{
3070
+ key: "edit",
3071
+ label: t("neetoFilters.common.edit"),
3072
+ onClick: function onClick() {
3073
+ return setConfirmAction({
3074
+ action: SEGMENT_ACTIONS.EDIT,
3075
+ segment: findById(id, segments)
3076
+ });
3077
+ }
3078
+ }, {
3079
+ key: "delete",
3080
+ label: t("neetoFilters.common.delete"),
3081
+ onClick: function onClick() {
3082
+ return setConfirmAction({
3083
+ action: SEGMENT_ACTIONS.DELETE,
3084
+ segment: findById(id, segments)
3085
+ });
3086
+ }
3087
+ }];
3088
+ return /*#__PURE__*/React.createElement("div", {
3089
+ onClick: onClick,
3090
+ className: classnames("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", {
3091
+ "neeto-filters-segment--active": isActive
3092
+ })
3093
+ }, /*#__PURE__*/React.createElement("div", {
3094
+ className: "flex flex-grow items-center gap-2 overflow-hidden",
3095
+ "data-cy": "new-element-field"
3096
+ }, /*#__PURE__*/React.createElement(Typography, {
3097
+ className: "truncate leading-snug",
3098
+ "data-cy": hyphenate(label),
3099
+ style: "body2"
3100
+ }, label)), shouldShowDropdown && /*#__PURE__*/React.createElement(MoreDropdown, {
3101
+ menuItems: menuItems,
3102
+ dropdownButtonProps: {
3103
+ className: "min-h-0 flex-shrink-0",
3104
+ "data-cy": "".concat(hyphenate(label), "-more-dropdown")
3105
+ }
3106
+ }));
3107
+ };
3108
+
3109
+ var MenuBlocks = function MenuBlocks(_ref) {
3110
+ var entity = _ref.entity,
3111
+ columns = _ref.columns,
3112
+ defaultSegmentName = _ref.defaultSegmentName,
3113
+ childrenKeys = _ref.childrenKeys,
3114
+ customFilters = _ref.customFilters;
3115
+ var _useTranslation = useTranslation(),
3116
+ t = _useTranslation.t;
3117
+ var segmentFormInitialRef = useRef(null);
3118
+ var _useState = useState(false),
3119
+ _useState2 = _slicedToArray(_useState, 2),
3120
+ showAll = _useState2[0],
3121
+ setShowAll = _useState2[1];
3122
+ var _getQueryParams = getQueryParams(),
3123
+ segmentId = _getQueryParams.segmentId;
3124
+ var appliedFilters = buildFiltersFromURL(columns);
3125
+ var _useSegments = useSegments({
3126
+ entity: entity,
3127
+ columns: columns,
3128
+ appliedFilters: appliedFilters,
3129
+ childrenKeys: childrenKeys
3130
+ }),
3131
+ _useSegments$segments = _useSegments.segments,
3132
+ segments = _useSegments$segments === void 0 ? [] : _useSegments$segments,
3133
+ clearAppliedFilters = _useSegments.clearAppliedFilters,
3134
+ handleSelectSegment = _useSegments.handleSelectSegment,
3135
+ onClose = _useSegments.onClose,
3136
+ setConfirmAction = _useSegments.setConfirmAction,
3137
+ selectedSegment = _useSegments.selectedSegment,
3138
+ isDeleteAlertOpen = _useSegments.isDeleteAlertOpen,
3139
+ isEditPaneOpen = _useSegments.isEditPaneOpen,
3140
+ isUpdating = _useSegments.isUpdating,
3141
+ handleUpdate = _useSegments.handleUpdate,
3142
+ filters = _useSegments.filters;
2831
3143
  return /*#__PURE__*/React.createElement(React.Fragment, null, segments.length > ITEMS_MAX_COUNT && /*#__PURE__*/React.createElement(Button, {
2832
3144
  icon: Down,
2833
3145
  style: "link",
@@ -2839,71 +3151,67 @@ var MenuBlocks = function MenuBlocks(_ref) {
2839
3151
  return !open;
2840
3152
  });
2841
3153
  }
2842
- }), /*#__PURE__*/React.createElement(MenuBar.Block, {
2843
- active: isEmpty(appliedFilters),
3154
+ }), /*#__PURE__*/React.createElement(Segment, {
3155
+ isActive: isEmpty(appliedFilters),
2844
3156
  label: defaultSegmentName,
2845
3157
  onClick: clearAppliedFilters
2846
3158
  }), segments.slice(0, showAll ? segments.length : ITEMS_MAX_COUNT).map(function (segment) {
2847
- return /*#__PURE__*/React.createElement(MenuBar.Block, {
2848
- active: segment.id === segmentId,
2849
- count: segment.count,
3159
+ return /*#__PURE__*/React.createElement(Segment, {
3160
+ segments: segments,
3161
+ setConfirmAction: setConfirmAction,
3162
+ shouldShowDropdown: true,
3163
+ id: segment.id,
3164
+ isActive: segment.id === segmentId,
2850
3165
  key: segment.id,
2851
3166
  label: segment.name,
2852
3167
  onClick: function onClick() {
2853
3168
  return handleSelectSegment(segment);
2854
3169
  }
2855
3170
  });
3171
+ }), /*#__PURE__*/React.createElement(SegmentForm, {
3172
+ childrenKeys: childrenKeys,
3173
+ columns: columns,
3174
+ customFilters: customFilters,
3175
+ defaultSegmentName: defaultSegmentName,
3176
+ filters: filters,
3177
+ onClose: onClose,
3178
+ segmentFormInitialRef: segmentFormInitialRef,
3179
+ isEdit: true,
3180
+ handleSubmit: handleUpdate,
3181
+ initialValues: selectedSegment,
3182
+ isOpen: isEditPaneOpen,
3183
+ isSubmitting: isUpdating
3184
+ }), /*#__PURE__*/React.createElement(Delete, {
3185
+ columns: columns,
3186
+ onClose: onClose,
3187
+ isOpen: isDeleteAlertOpen,
3188
+ segment: selectedSegment
2856
3189
  }));
2857
3190
  };
2858
3191
  var MenuBlocks$1 = /*#__PURE__*/React.memo(MenuBlocks);
2859
3192
 
2860
- var Segments = function Segments(_ref) {
2861
- var entity = _ref.entity,
3193
+ var Segments = withT(function (_ref) {
3194
+ var t = _ref.t,
3195
+ entity = _ref.entity,
2862
3196
  columns = _ref.columns,
2863
- _ref$setIsFilterPaneO = _ref.setIsFilterPaneOpen,
2864
- setIsFilterPaneOpen = _ref$setIsFilterPaneO === void 0 ? noop : _ref$setIsFilterPaneO,
2865
3197
  _ref$defaultSegmentNa = _ref.defaultSegmentName,
2866
- defaultSegmentName = _ref$defaultSegmentNa === void 0 ? t$1("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
2867
- return function () {
2868
- var _useState = useState(false),
2869
- _useState2 = _slicedToArray(_useState, 2),
2870
- isSegmentsPaneOpen = _useState2[0],
2871
- setIsSegmentsPaneOpen = _useState2[1];
2872
- var _useTranslation = useTranslation(),
2873
- t = _useTranslation.t;
2874
- var iconProps = [{
2875
- icon: Settings,
2876
- onClick: function onClick() {
2877
- setIsFilterPaneOpen(false);
2878
- setIsSegmentsPaneOpen(true);
2879
- },
2880
- tooltipProps: {
2881
- content: t("neetoFilters.segments.manageSegments"),
2882
- position: "top"
2883
- }
2884
- }];
2885
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MenuBar.SubTitle, {
2886
- iconProps: iconProps
2887
- }, /*#__PURE__*/React.createElement(Typography, {
2888
- component: "h4",
2889
- style: "h5",
2890
- textTransform: "uppercase",
2891
- weight: "bold"
2892
- }, t("neetoFilters.common.segments"))), /*#__PURE__*/React.createElement(MenuBlocks$1, {
2893
- columns: columns,
2894
- defaultSegmentName: defaultSegmentName,
2895
- entity: entity
2896
- }), /*#__PURE__*/React.createElement(ManagePane, {
2897
- columns: columns,
2898
- defaultSegmentName: defaultSegmentName,
2899
- entity: entity,
2900
- isOpen: isSegmentsPaneOpen,
2901
- onClose: function onClose() {
2902
- return setIsSegmentsPaneOpen(false);
2903
- }
2904
- }));
2905
- }();
2906
- };
3198
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? t("neetoFilters.common.allResults") : _ref$defaultSegmentNa,
3199
+ customFilters = _ref.customFilters,
3200
+ _ref$childrenKeys = _ref.childrenKeys,
3201
+ childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys;
3202
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MenuBar.SubTitle, null, /*#__PURE__*/React.createElement(Typography, {
3203
+ component: "h4",
3204
+ style: "h5",
3205
+ textTransform: "uppercase",
3206
+ weight: "bold"
3207
+ }, t("neetoFilters.common.segments"))), /*#__PURE__*/React.createElement(MenuBlocks$1, {
3208
+ childrenKeys: childrenKeys,
3209
+ columns: columns,
3210
+ customFilters: customFilters,
3211
+ defaultSegmentName: defaultSegmentName,
3212
+ entity: entity
3213
+ }));
3214
+ });
2907
3215
  var index = /*#__PURE__*/React.memo(Segments);
2908
3216
 
2909
3217
  export { Bar, Filters, index as Segments, buildFilterColumnsFromFields, buildFiltersFromURL, buildSelectorsFromURL, buildUrlFromFilters, buildUrlFromSegment, useDestroySegment, useFetchSegments, useUpdateSegment };