@bigbinary/neeto-filters-frontend 3.2.0-beta.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -7,22 +7,20 @@ var classnames = require('classnames');
7
7
  var i18next = require('i18next');
8
8
  var neetoCist = require('@bigbinary/neeto-cist');
9
9
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
10
- var ramda = require('ramda');
11
- var reactQuery = require('react-query');
12
- var neetoIcons = require('@bigbinary/neeto-icons');
10
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
13
11
  var neetoui = require('@bigbinary/neetoui');
14
- var formik = require('@bigbinary/neetoui/formik');
12
+ var ramda = require('ramda');
15
13
  var reactI18next = require('react-i18next');
16
- var reactRouterDom_min = require('react-router-dom/cjs/react-router-dom.min');
17
- var utils = require('@bigbinary/neeto-commons-frontend/utils');
18
- var yup = require('yup');
19
- var useHotkeys = require('@bigbinary/neeto-hotkeys');
20
14
  var reactRouterDom = require('react-router-dom');
15
+ var useHotkeys = require('@bigbinary/neeto-hotkeys');
16
+ var neetoIcons = require('@bigbinary/neeto-icons');
17
+ var formik = require('@bigbinary/neetoui/formik');
18
+ var reactQuery = require('react-query');
21
19
  var axios = require('axios');
20
+ var yup = require('yup');
22
21
  var Search = require('@bigbinary/neeto-molecules/Search');
23
- var ReactDOM = require('react-dom');
24
22
  var MenuBar = require('@bigbinary/neeto-molecules/MenuBar');
25
- var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
23
+ var InlineInput = require('@bigbinary/neeto-molecules/InlineInput');
26
24
 
27
25
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
28
26
 
@@ -47,54 +45,11 @@ function _interopNamespace(e) {
47
45
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
48
46
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
49
47
  var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
50
- var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
51
48
  var useHotkeys__default = /*#__PURE__*/_interopDefaultLegacy(useHotkeys);
52
49
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
50
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
53
51
  var Search__default = /*#__PURE__*/_interopDefaultLegacy(Search);
54
- var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
55
52
  var MenuBar__default = /*#__PURE__*/_interopDefaultLegacy(MenuBar);
56
- var MoreDropdown__default = /*#__PURE__*/_interopDefaultLegacy(MoreDropdown);
57
-
58
- function _typeof(o) {
59
- "@babel/helpers - typeof";
60
-
61
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
62
- return typeof o;
63
- } : function (o) {
64
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
65
- }, _typeof(o);
66
- }
67
-
68
- function _toPrimitive(input, hint) {
69
- if (_typeof(input) !== "object" || input === null) return input;
70
- var prim = input[Symbol.toPrimitive];
71
- if (prim !== undefined) {
72
- var res = prim.call(input, hint || "default");
73
- if (_typeof(res) !== "object") return res;
74
- throw new TypeError("@@toPrimitive must return a primitive value.");
75
- }
76
- return (hint === "string" ? String : Number)(input);
77
- }
78
-
79
- function _toPropertyKey(arg) {
80
- var key = _toPrimitive(arg, "string");
81
- return _typeof(key) === "symbol" ? key : String(key);
82
- }
83
-
84
- function _defineProperty(obj, key, value) {
85
- key = _toPropertyKey(key);
86
- if (key in obj) {
87
- Object.defineProperty(obj, key, {
88
- value: value,
89
- enumerable: true,
90
- configurable: true,
91
- writable: true
92
- });
93
- } else {
94
- obj[key] = value;
95
- }
96
- return obj;
97
- }
98
53
 
99
54
  function _arrayLikeToArray(arr, len) {
100
55
  if (len == null || len > arr.length) len = arr.length;
@@ -127,59 +82,45 @@ function _toConsumableArray(arr) {
127
82
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
128
83
  }
129
84
 
130
- function _extends$1() {
131
- _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
132
- for (var i = 1; i < arguments.length; i++) {
133
- var source = arguments[i];
134
- for (var key in source) {
135
- if (Object.prototype.hasOwnProperty.call(source, key)) {
136
- target[key] = source[key];
137
- }
138
- }
139
- }
140
- return target;
141
- };
142
- return _extends$1.apply(this, arguments);
143
- }
85
+ function _typeof(o) {
86
+ "@babel/helpers - typeof";
144
87
 
145
- function _arrayWithHoles(arr) {
146
- if (Array.isArray(arr)) return arr;
88
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
89
+ return typeof o;
90
+ } : function (o) {
91
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
92
+ }, _typeof(o);
147
93
  }
148
94
 
149
- function _iterableToArrayLimit(r, l) {
150
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
151
- if (null != t) {
152
- var e,
153
- n,
154
- i,
155
- u,
156
- a = [],
157
- f = !0,
158
- o = !1;
159
- try {
160
- if (i = (t = t.call(r)).next, 0 === l) {
161
- if (Object(t) !== t) return;
162
- f = !1;
163
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
164
- } catch (r) {
165
- o = !0, n = r;
166
- } finally {
167
- try {
168
- if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
169
- } finally {
170
- if (o) throw n;
171
- }
172
- }
173
- return a;
95
+ function _toPrimitive(input, hint) {
96
+ if (_typeof(input) !== "object" || input === null) return input;
97
+ var prim = input[Symbol.toPrimitive];
98
+ if (prim !== undefined) {
99
+ var res = prim.call(input, hint || "default");
100
+ if (_typeof(res) !== "object") return res;
101
+ throw new TypeError("@@toPrimitive must return a primitive value.");
174
102
  }
103
+ return (hint === "string" ? String : Number)(input);
175
104
  }
176
105
 
177
- function _nonIterableRest() {
178
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
106
+ function _toPropertyKey(arg) {
107
+ var key = _toPrimitive(arg, "string");
108
+ return _typeof(key) === "symbol" ? key : String(key);
179
109
  }
180
110
 
181
- function _slicedToArray(arr, i) {
182
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
111
+ function _defineProperty(obj, key, value) {
112
+ key = _toPropertyKey(key);
113
+ if (key in obj) {
114
+ Object.defineProperty(obj, key, {
115
+ value: value,
116
+ enumerable: true,
117
+ configurable: true,
118
+ writable: true
119
+ });
120
+ } else {
121
+ obj[key] = value;
122
+ }
123
+ return obj;
183
124
  }
184
125
 
185
126
  var SEGMENTS_BASE_URL = "/neeto_filters/segments";
@@ -264,6 +205,21 @@ var DATE_RULES = {
264
205
  var SEARCH_TERM_KEY = "search_term";
265
206
  var SEGMENT_ID_KEY = "segment_id";
266
207
 
208
+ var SHORTCUTS = {
209
+ closePane: {
210
+ sequence: "escape",
211
+ description: i18next.t("neetoFilters.shortcuts.closePane")
212
+ },
213
+ deleteBlock: {
214
+ sequence: "backspace",
215
+ description: i18next.t("neetoFilters.shortcuts.deleteBlock")
216
+ },
217
+ openFilterPane: {
218
+ sequence: "enter",
219
+ description: i18next.t("neetoFilters.shortcuts.openFilterPane")
220
+ }
221
+ };
222
+
267
223
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
268
224
 
269
225
  function getDefaultExportFromCjs (x) {
@@ -281,44 +237,6 @@ dayjs_min.exports;
281
237
  var dayjs_minExports = dayjs_min.exports;
282
238
  var dayjs = /*@__PURE__*/getDefaultExportFromCjs(dayjs_minExports);
283
239
 
284
- var timezone$1 = {exports: {}};
285
-
286
- timezone$1.exports;
287
-
288
- (function (module, exports) {
289
- !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;};}}));
290
- } (timezone$1, timezone$1.exports));
291
-
292
- var timezoneExports = timezone$1.exports;
293
- var timezone = /*@__PURE__*/getDefaultExportFromCjs(timezoneExports);
294
-
295
- var utc$1 = {exports: {}};
296
-
297
- utc$1.exports;
298
-
299
- (function (module, exports) {
300
- !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)};}}));
301
- } (utc$1, utc$1.exports));
302
-
303
- var utcExports = utc$1.exports;
304
- var utc = /*@__PURE__*/getDefaultExportFromCjs(utcExports);
305
-
306
- var weekday$1 = {exports: {}};
307
-
308
- weekday$1.exports;
309
-
310
- (function (module, exports) {
311
- !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")};}}));
312
- } (weekday$1, weekday$1.exports));
313
-
314
- var weekdayExports = weekday$1.exports;
315
- var weekday = /*@__PURE__*/getDefaultExportFromCjs(weekdayExports);
316
-
317
- dayjs.extend(utc);
318
- dayjs.extend(timezone);
319
- dayjs.extend(weekday);
320
- dayjs.Ls.en.weekStart = 1;
321
-
322
240
  var NUMBER_RULES = [{
323
241
  label: i18next.t("neetoFilters.rules.is"),
324
242
  value: "is"
@@ -371,53 +289,131 @@ var DEFAULT_HELP_ICON_PROPS = {
371
289
  }
372
290
  };
373
291
 
374
- 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; }
375
- 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; }
376
- var groupByGroup = ramda.groupBy(function (_ref) {
377
- var group = _ref.group;
378
- return group || "individual";
379
- });
380
- var standardizeColumnType = function standardizeColumnType(kind) {
381
- // neeto-fields-nano supports `monetary` and `number` as type of fields, which will be acting as `decimal` in action.
382
- if (["custom.monetary", "custom.number"].includes(kind)) {
383
- return "custom.decimal";
292
+ function _arrayWithHoles(arr) {
293
+ if (Array.isArray(arr)) return arr;
294
+ }
295
+
296
+ function _iterableToArrayLimit(r, l) {
297
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
298
+ if (null != t) {
299
+ var e,
300
+ n,
301
+ i,
302
+ u,
303
+ a = [],
304
+ f = !0,
305
+ o = !1;
306
+ try {
307
+ if (i = (t = t.call(r)).next, 0 === l) {
308
+ if (Object(t) !== t) return;
309
+ f = !1;
310
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
311
+ } catch (r) {
312
+ o = !0, n = r;
313
+ } finally {
314
+ try {
315
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
316
+ } finally {
317
+ if (o) throw n;
318
+ }
319
+ }
320
+ return a;
384
321
  }
385
- return kind;
386
- };
387
- var getSnakeCasedQueryParams = function getSnakeCasedQueryParams() {
388
- return utils.getQueryParams({
389
- toCamelCase: false
390
- });
391
- };
392
- var isBoolean = function isBoolean(type) {
393
- return type === "boolean" || type === "custom.boolean";
394
- };
395
- var isCheckbox = function isCheckbox(type) {
396
- return type === "checkbox" || type === "custom.checkbox";
397
- };
398
- var isDate = function isDate(type) {
399
- return type === "date" || type === "custom.date" || type === "custom.datetime";
400
- };
401
- var isSingleDate = function isSingleDate(type) {
402
- return type === "single_date" || type === "custom.single_date";
403
- };
404
- var isSingleTime = function isSingleTime(type) {
405
- return type === "single_time" || type === "custom.single_time";
406
- };
407
- var isTime = function isTime(type) {
408
- return type === "time" || type === "custom.time";
409
- };
410
- var isMulti = function isMulti(type) {
411
- return type === "multi_option" || type === "custom.multi_option";
412
- };
413
- var isText = function isText(type) {
414
- return type === "text" || type === "custom.text";
415
- };
416
- var isDigit = function isDigit(type) {
417
- return ["number", "decimal", "custom.decimal", "custom.number"].includes(type);
418
- };
419
- var isCustomDateRange = function isCustomDateRange(value) {
420
- return !ramda.pluck("value", DATE_OPTIONS).includes(value);
322
+ }
323
+
324
+ function _nonIterableRest() {
325
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
326
+ }
327
+
328
+ function _slicedToArray(arr, i) {
329
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
330
+ }
331
+
332
+ var timezone$1 = {exports: {}};
333
+
334
+ timezone$1.exports;
335
+
336
+ (function (module, exports) {
337
+ !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;};}}));
338
+ } (timezone$1, timezone$1.exports));
339
+
340
+ var timezoneExports = timezone$1.exports;
341
+ var timezone = /*@__PURE__*/getDefaultExportFromCjs(timezoneExports);
342
+
343
+ var utc$1 = {exports: {}};
344
+
345
+ utc$1.exports;
346
+
347
+ (function (module, exports) {
348
+ !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)};}}));
349
+ } (utc$1, utc$1.exports));
350
+
351
+ var utcExports = utc$1.exports;
352
+ var utc = /*@__PURE__*/getDefaultExportFromCjs(utcExports);
353
+
354
+ var weekday$1 = {exports: {}};
355
+
356
+ weekday$1.exports;
357
+
358
+ (function (module, exports) {
359
+ !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")};}}));
360
+ } (weekday$1, weekday$1.exports));
361
+
362
+ var weekdayExports = weekday$1.exports;
363
+ var weekday = /*@__PURE__*/getDefaultExportFromCjs(weekdayExports);
364
+
365
+ dayjs.extend(utc);
366
+ dayjs.extend(timezone);
367
+ dayjs.extend(weekday);
368
+ dayjs.Ls.en.weekStart = 1;
369
+
370
+ 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; }
371
+ 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; }
372
+ var groupByGroup = ramda.groupBy(function (_ref) {
373
+ var group = _ref.group;
374
+ return group || "individual";
375
+ });
376
+ var standardizeColumnType = function standardizeColumnType(kind) {
377
+ // neeto-fields-nano supports `monetary` and `number` as type of fields, which will be acting as `decimal` in action.
378
+ if (["custom.monetary", "custom.number"].includes(kind)) {
379
+ return "custom.decimal";
380
+ }
381
+ return kind;
382
+ };
383
+ var getSnakeCasedQueryParams = function getSnakeCasedQueryParams() {
384
+ return utils.getQueryParams({
385
+ toCamelCase: false
386
+ });
387
+ };
388
+ var isBoolean = function isBoolean(type) {
389
+ return type === "boolean" || type === "custom.boolean";
390
+ };
391
+ var isCheckbox = function isCheckbox(type) {
392
+ return type === "checkbox" || type === "custom.checkbox";
393
+ };
394
+ var isDate = function isDate(type) {
395
+ return type === "date" || type === "custom.date" || type === "custom.datetime";
396
+ };
397
+ var isSingleDate = function isSingleDate(type) {
398
+ return type === "single_date" || type === "custom.single_date";
399
+ };
400
+ var isSingleTime = function isSingleTime(type) {
401
+ return type === "single_time" || type === "custom.single_time";
402
+ };
403
+ var isTime = function isTime(type) {
404
+ return type === "time" || type === "custom.time";
405
+ };
406
+ var isMulti = function isMulti(type) {
407
+ return type === "multi_option" || type === "custom.multi_option";
408
+ };
409
+ var isText = function isText(type) {
410
+ return type === "text" || type === "custom.text";
411
+ };
412
+ var isDigit = function isDigit(type) {
413
+ return ["number", "decimal", "custom.decimal", "custom.number"].includes(type);
414
+ };
415
+ var isCustomDateRange = function isCustomDateRange(value) {
416
+ return !ramda.pluck("value", DATE_OPTIONS).includes(value);
421
417
  };
422
418
  var isCustomTimeRange = function isCustomTimeRange(value) {
423
419
  return !ramda.pluck("value", TIME_OPTIONS).includes(value);
@@ -671,7 +667,7 @@ var buildDatePayload = function buildDatePayload(value) {
671
667
  var buildSingleDatePayload = function buildSingleDatePayload(filter) {
672
668
  var value = filter.value;
673
669
  var filterValue = Array.isArray(value) ? value.join(",") : value;
674
- return _objectSpread$5(_objectSpread$5({}, filter), {}, {
670
+ return _objectSpread$4(_objectSpread$4({}, filter), {}, {
675
671
  value: filterValue,
676
672
  type: "date"
677
673
  });
@@ -679,7 +675,7 @@ var buildSingleDatePayload = function buildSingleDatePayload(filter) {
679
675
  var buildSingleTimePayload = function buildSingleTimePayload(filter) {
680
676
  var value = filter.value;
681
677
  var filterValue = Array.isArray(value) ? value.join(",") : value;
682
- return _objectSpread$5(_objectSpread$5({}, filter), {}, {
678
+ return _objectSpread$4(_objectSpread$4({}, filter), {}, {
683
679
  value: filterValue,
684
680
  type: "time"
685
681
  });
@@ -930,7 +926,7 @@ var buildUrlFromSegment = function buildUrlFromSegment(_ref19) {
930
926
  });
931
927
  return acc;
932
928
  }, neetoCist.isNotEmpty(id) ? _defineProperty({}, SEGMENT_ID_KEY, id) : {});
933
- return new URLSearchParams(_objectSpread$5(_objectSpread$5({}, searchParams), newSearchParams)).toString();
929
+ return new URLSearchParams(_objectSpread$4(_objectSpread$4({}, searchParams), newSearchParams)).toString();
934
930
  };
935
931
  var getSearchTermFromUrl = function getSearchTermFromUrl() {
936
932
  return utils.getQueryParams().searchTerm || "";
@@ -947,7 +943,7 @@ var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(_ref22)
947
943
  var id = field.id,
948
944
  name = field.name,
949
945
  kind = field.kind;
950
- var column = _objectSpread$5({
946
+ var column = _objectSpread$4({
951
947
  key: ramda.toLower(name),
952
948
  node: "".concat(name, ":").concat(id),
953
949
  label: neetoCist.capitalize(name),
@@ -971,7 +967,7 @@ var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(_ref22)
971
967
  };
972
968
  var getColumnsWithStandardizedType = function getColumnsWithStandardizedType(columns) {
973
969
  return columns.map(function (column) {
974
- return _objectSpread$5(_objectSpread$5({}, column), {}, {
970
+ return _objectSpread$4(_objectSpread$4({}, column), {}, {
975
971
  type: standardizeColumnType(column.type)
976
972
  });
977
973
  });
@@ -980,1112 +976,78 @@ var isKeywordFilterPresent = function isKeywordFilterPresent(keyworFilter) {
980
976
  return ramda.not(ramda.isEmpty(keyworFilter.node));
981
977
  };
982
978
 
983
- var buildDropdownValue = function buildDropdownValue(_ref) {
984
- var defaultType = _ref.defaultType,
985
- filter = _ref.filter,
986
- options = _ref.options;
987
- if (!filter) return null;
988
- if (isMulti(defaultType)) {
989
- return options.filter(function (_ref2) {
990
- var value = _ref2.value;
991
- return filter.value.includes(value);
992
- });
979
+ var buildCustomDateValue = function buildCustomDateValue(value) {
980
+ var isBeforeOrAfter = Math.abs(dayjs(value[1]).diff(dayjs(value[0]), "year")) >= 90;
981
+ if (isBeforeOrAfter) {
982
+ var currentMoment = dayjs();
983
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
984
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
985
+ return diffWithStart < diffWithEnd ? "after-".concat(utils.dateFormat.date(dayjs(value[0]).subtract(1, "day"))) : "before-".concat(utils.dateFormat.date(dayjs(value[1]).add(1, "day")));
993
986
  }
994
- return neetoCist.findBy({
995
- value: filter.value
996
- }, options);
987
+ return value.map(utils.dateFormat.date).join(" - ");
997
988
  };
998
- var buildSingleTimeValue = function buildSingleTimeValue(filter) {
989
+ var buildFilterValue = function buildFilterValue(filter) {
999
990
  var _findBy2;
1000
- if (!filter) return null;
1001
- return (_findBy2 = neetoCist.findBy({
1002
- value: filter.value
1003
- }, TIME_OPTIONS)) !== null && _findBy2 !== void 0 ? _findBy2 : ramda.last(TIME_OPTIONS);
1004
- };
1005
- var getOtherProps = function getOtherProps(props) {
1006
- return ramda.omit(["key", "node", "label", "type", "values", "model", "showRuleSelector"], props);
1007
- };
1008
- var buildDropdownOptions = function buildDropdownOptions(_ref3) {
1009
- var defaultType = _ref3.defaultType,
1010
- filter = _ref3.filter,
1011
- options = _ref3.options;
1012
- options = options.map(ramda.modify("value", function (value) {
1013
- return value === null || value === void 0 ? void 0 : value.toString();
991
+ var _filter$defaultType = filter.defaultType,
992
+ defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
993
+ value = filter.value,
994
+ rule = filter.rule,
995
+ _filter$values = filter.values,
996
+ initialValues = _filter$values === void 0 ? [] : _filter$values;
997
+ var values = initialValues.map(ramda.modify("value", function (value) {
998
+ return value.toString();
1014
999
  }));
1015
- if (!filter) return options;
1016
- if (isMulti(defaultType)) {
1017
- var selectedOptions = filter.value.map(function (value) {
1018
- return neetoCist.findBy({
1000
+ if (isDate(defaultType) && isCustomDateRange(value)) {
1001
+ return buildCustomDateValue(value);
1002
+ } else if (isTime(defaultType) && isCustomTimeRange(value)) {
1003
+ return value.map(utils.dateFormat.time).join(" - ");
1004
+ } else if (isDate(defaultType) || isTime(defaultType)) {
1005
+ return neetoCist.humanize(value);
1006
+ } else if (isMulti(defaultType)) {
1007
+ return value.map(function (value) {
1008
+ var _findBy;
1009
+ return ((_findBy = neetoCist.findBy({
1019
1010
  value: value
1020
- }, options) || neetoCist.toLabelAndValue(value);
1021
- });
1022
- var nonSelectedOptions = options.filter(function (option) {
1023
- return !filter.value.includes(option.value);
1011
+ }, values)) === null || _findBy === void 0 ? void 0 : _findBy.label) || value;
1012
+ }).join(", ");
1013
+ } else if (isSingleDate(defaultType)) {
1014
+ return rule === "between" ? value.map(utils.dateFormat.date).join(" - ") : utils.dateFormat.date(value);
1015
+ } else if (isSingleTime(defaultType)) {
1016
+ return rule === "between" ? value.map(utils.dateFormat.time).join(" - ") : utils.dateFormat.time(value);
1017
+ } else if (isBoolean(defaultType)) {
1018
+ return getLabelFromBool({
1019
+ value: value,
1020
+ values: values
1024
1021
  });
1025
- return ramda.concat(selectedOptions, nonSelectedOptions);
1026
- }
1027
- if (!neetoCist.findBy({
1028
- value: filter.value
1029
- }, options)) {
1030
- return ramda.append(neetoCist.toLabelAndValue(filter.value), options);
1031
- }
1032
- return options;
1033
- };
1034
- var initializeDateRule = function initializeDateRule(filter) {
1035
- return filter ? neetoCist.findBy({
1036
- value: filter === null || filter === void 0 ? void 0 : filter.value
1037
- }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
1038
- };
1039
- var getDateValue = function getDateValue(value, rule) {
1040
- if (ramda.isEmpty(value) || ramda.isNil(value)) {
1041
- return null;
1042
- }
1043
- if (rule.value === "custom-date-range") {
1044
- return value;
1045
- }
1046
- return rule.value === "before" ? dayjs(value[1]).add(1, "day") : dayjs(value[0]).subtract(1, "day");
1047
- };
1048
- var findDateOption = function findDateOption(filter, options) {
1049
- var value = filter.value;
1050
- var isBeforeOrAfter = dayjs(value[1]).diff(dayjs(value[0]), "year") >= 90;
1051
- if (ramda.not(isBeforeOrAfter)) {
1052
- return ramda.last(options);
1053
1022
  }
1054
- var currentMoment = dayjs();
1055
- var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
1056
- var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
1057
- return diffWithStart < diffWithEnd ? neetoCist.findBy({
1058
- value: "after"
1059
- }, options) : neetoCist.findBy({
1060
- value: "before"
1061
- }, options);
1023
+ return ((_findBy2 = neetoCist.findBy({
1024
+ value: value
1025
+ }, values)) === null || _findBy2 === void 0 ? void 0 : _findBy2.label) || value;
1062
1026
  };
1063
- var buildDateValues = function buildDateValues(dates, selectedRule) {
1064
- if (selectedRule.value === "after") {
1065
- return [dates.add(1, "day"), dates.add(100, "year")];
1066
- } else if (selectedRule.value === "before") {
1067
- return [dates.subtract(100, "year"), dates.subtract(1, "day")];
1027
+ var buildRuleValue = function buildRuleValue(_ref) {
1028
+ var rule = _ref.rule,
1029
+ defaultType = _ref.defaultType;
1030
+ if (isText(defaultType)) {
1031
+ return neetoCist.findBy({
1032
+ value: rule
1033
+ }, TEXT_RULES).label;
1034
+ } else if (isDigit(defaultType)) {
1035
+ return neetoCist.findBy({
1036
+ value: rule
1037
+ }, NUMBER_RULES).label;
1038
+ } else if (isSingleDate(defaultType)) {
1039
+ return neetoCist.findBy({
1040
+ value: rule
1041
+ }, SINGLE_DATE_OPTIONS).label;
1042
+ } else if (isSingleTime(defaultType)) {
1043
+ return neetoCist.findBy({
1044
+ value: rule
1045
+ }, SINGLE_TIME_OPTIONS).label;
1068
1046
  }
1069
- return dates;
1047
+ return "";
1070
1048
  };
1071
- var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
1072
- return ramda.mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
1073
- };
1074
-
1075
- var Boolean = function Boolean(_ref) {
1076
- var column = _ref.column,
1077
- filter = _ref.filter,
1078
- handleApplyFilter = _ref.handleApplyFilter,
1079
- autoFocus = _ref.autoFocus;
1080
- var key = column.key,
1081
- _column$defaultType = column.defaultType,
1082
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1083
- label = column.label,
1084
- values = column.values,
1085
- _column$helpIconProps = column.helpIconProps,
1086
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1087
- var options = ramda.isNil(values) || ramda.isEmpty(values) ? DEFAULT_BOOLEAN_OPTIONS : values;
1088
- var otherProps = getOtherProps(column);
1089
- var value = buildDropdownValue({
1090
- defaultType: defaultType,
1091
- filter: filter,
1092
- options: options
1093
- });
1094
- var _useTranslation = reactI18next.useTranslation(),
1095
- t = _useTranslation.t;
1096
- var handleChange = function handleChange(option) {
1097
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1098
- handleApplyFilter({
1099
- _delete: true
1100
- });
1101
- return;
1102
- }
1103
- var updatedFilter = buildUpdatedFilter({
1104
- column: column,
1105
- defaultType: defaultType,
1106
- option: option
1107
- });
1108
- handleApplyFilter(updatedFilter);
1109
- };
1110
- return /*#__PURE__*/React__default["default"].createElement("div", {
1111
- className: "neeto-filters-pane-filter__item-wrapper"
1112
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends$1({
1113
- autoFocus: autoFocus,
1114
- label: label,
1115
- options: options,
1116
- value: value,
1117
- isClearable: true
1118
- }, neetoCist.isNotEmpty(helpIconProps) && {
1119
- labelProps: {
1120
- helpIconProps: buildHelpIconProps(helpIconProps)
1121
- }
1122
- }, {
1123
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1124
- strategy: "fixed",
1125
- placeholder: t("neetoFilters.messages.selectOption", {
1126
- resource: label
1127
- }),
1128
- onChange: handleChange
1129
- }, otherProps)));
1130
- };
1131
- var Boolean$1 = /*#__PURE__*/React__default["default"].memo(Boolean);
1132
-
1133
- var Datetime = function Datetime(_ref) {
1134
- var column = _ref.column,
1135
- filter = _ref.filter,
1136
- handleApplyFilter = _ref.handleApplyFilter,
1137
- autoFocus = _ref.autoFocus;
1138
- var _useState = React.useState(initializeDateRule(filter)),
1139
- _useState2 = _slicedToArray(_useState, 2),
1140
- selectedRule = _useState2[0],
1141
- setSelectedRule = _useState2[1];
1142
- var _useTranslation = reactI18next.useTranslation(),
1143
- t = _useTranslation.t;
1144
- var key = column.key,
1145
- _column$defaultType = column.defaultType,
1146
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1147
- label = column.label,
1148
- _column$helpIconProps = column.helpIconProps,
1149
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1150
- var isDatePickerShown = filter && isCustomDateRange(filter.value);
1151
- var otherProps = getOtherProps(column);
1152
- var handleChange = function handleChange(option) {
1153
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1154
- handleApplyFilter({
1155
- _delete: true
1156
- });
1157
- setSelectedRule({});
1158
- return;
1159
- }
1160
- setSelectedRule(option);
1161
- var updatedFilter = buildUpdatedFilter({
1162
- column: column,
1163
- defaultType: defaultType,
1164
- option: option
1165
- });
1166
- handleApplyFilter(updatedFilter);
1167
- };
1168
- var handleDateRangeChange = function handleDateRangeChange(dates) {
1169
- if (ramda.isEmpty(dates) || ramda.isNil(dates)) {
1170
- handleApplyFilter({
1171
- _delete: true
1172
- });
1173
- setSelectedRule({});
1174
- return;
1175
- }
1176
- var updatedFilter = buildUpdatedFilter({
1177
- column: column,
1178
- defaultType: defaultType,
1179
- option: {
1180
- value: ramda.pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
1181
- return date.toISOString();
1182
- })
1183
- }
1184
- });
1185
- handleApplyFilter(updatedFilter);
1186
- };
1187
- React.useEffect(function () {
1188
- ramda.isNil(filter) && setSelectedRule({});
1189
- }, [filter]);
1190
- return /*#__PURE__*/React__default["default"].createElement("div", {
1191
- className: "neeto-filters-pane-filter__item-wrapper"
1192
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends$1({
1193
- autoFocus: autoFocus,
1194
- label: label,
1195
- isClearable: true,
1196
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1197
- options: DATE_OPTIONS,
1198
- strategy: "fixed",
1199
- value: selectedRule,
1200
- placeholder: t("neetoFilters.messages.selectResource", {
1201
- resource: label
1202
- })
1203
- }, neetoCist.isNotEmpty(helpIconProps) && {
1204
- labelProps: {
1205
- helpIconProps: buildHelpIconProps(helpIconProps)
1206
- }
1207
- }, {
1208
- onChange: handleChange
1209
- })), isDatePickerShown && /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends$1({
1210
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-date-range"),
1211
- getPopupContainer: ramda.prop("parentNode"),
1212
- type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
1213
- value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
1214
- onChange: handleDateRangeChange
1215
- }, otherProps)));
1216
- };
1217
- var Datetime$1 = /*#__PURE__*/React__default["default"].memo(Datetime);
1218
-
1219
- var Dropdown = function Dropdown(_ref) {
1220
- var column = _ref.column,
1221
- filter = _ref.filter,
1222
- handleApplyFilter = _ref.handleApplyFilter,
1223
- autoFocus = _ref.autoFocus;
1224
- var key = column.key,
1225
- label = column.label,
1226
- values = column.values,
1227
- defaultValue = column.defaultValue,
1228
- _column$defaultType = column.defaultType,
1229
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1230
- _column$isClearable = column.isClearable,
1231
- isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
1232
- _column$helpIconProps = column.helpIconProps,
1233
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1234
- var otherProps = getOtherProps(column);
1235
- var options = buildDropdownOptions({
1236
- defaultType: defaultType,
1237
- filter: filter,
1238
- options: values
1239
- });
1240
- var value = buildDropdownValue({
1241
- defaultType: defaultType,
1242
- filter: filter,
1243
- options: options
1244
- });
1245
- var _useTranslation = reactI18next.useTranslation(),
1246
- t = _useTranslation.t;
1247
- var handleChange = function handleChange(option) {
1248
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1249
- handleApplyFilter({
1250
- _delete: true
1251
- });
1252
- return;
1253
- }
1254
- var updatedFilter = buildUpdatedFilter({
1255
- column: column,
1256
- defaultType: defaultType,
1257
- option: option
1258
- });
1259
- handleApplyFilter(updatedFilter);
1260
- };
1261
- return /*#__PURE__*/React__default["default"].createElement("div", {
1262
- className: "neeto-filters-pane-filter__item-wrapper"
1263
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends$1({
1264
- autoFocus: autoFocus,
1265
- label: label,
1266
- options: options,
1267
- value: value,
1268
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1269
- isClearable: !defaultValue && isClearable,
1270
- isMulti: isMulti(defaultType),
1271
- strategy: "fixed",
1272
- placeholder: t("neetoFilters.messages.selectResource", {
1273
- resource: label
1274
- })
1275
- }, neetoCist.isNotEmpty(helpIconProps) && {
1276
- labelProps: {
1277
- helpIconProps: buildHelpIconProps(helpIconProps)
1278
- }
1279
- }, {
1280
- onChange: handleChange
1281
- }, otherProps)));
1282
- };
1283
- var Dropdown$1 = /*#__PURE__*/React__default["default"].memo(Dropdown);
1284
-
1285
- var SingleDatetime = function SingleDatetime(_ref) {
1286
- var column = _ref.column,
1287
- filter = _ref.filter,
1288
- filters = _ref.filters,
1289
- handleApplyFilter = _ref.handleApplyFilter,
1290
- autoFocus = _ref.autoFocus;
1291
- var _useState = React.useState(function () {
1292
- return neetoCist.findBy({
1293
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1294
- }, SINGLE_DATE_OPTIONS) || SINGLE_DATE_OPTIONS[0];
1295
- }),
1296
- _useState2 = _slicedToArray(_useState, 2),
1297
- selectedRule = _useState2[0],
1298
- setSelectedRule = _useState2[1];
1299
- var key = column.key,
1300
- _column$defaultType = column.defaultType,
1301
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1302
- label = column.label,
1303
- _column$helpIconProps = column.helpIconProps,
1304
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1305
- var otherProps = getOtherProps(column);
1306
- var datePickerType = selectedRule.value === "between" ? "range" : "date";
1307
- var value = filter === null || filter === void 0 ? void 0 : filter.value;
1308
-
1309
- // Reset states when "Clear filters" button is clicked.
1310
- React.useEffect(function () {
1311
- if (!ramda.isEmpty(filters)) return;
1312
- setSelectedRule(SINGLE_DATE_OPTIONS[0]);
1313
- }, [filters]);
1314
- var handleRuleChange = function handleRuleChange(ruleOption) {
1315
- setSelectedRule(ruleOption);
1316
-
1317
- // Clear value if switched between incompatable types
1318
- var updateValue = value;
1319
- if (datePickerType === "range" && ruleOption.value !== "between" || datePickerType === "date" && ruleOption.value === "between") {
1320
- updateValue = "";
1321
- }
1322
- var updatedFilter = buildUpdatedFilter({
1323
- column: column,
1324
- defaultType: defaultType,
1325
- option: {},
1326
- rule: ruleOption.value,
1327
- value: updateValue
1328
- });
1329
- handleApplyFilter(updatedFilter);
1330
- };
1331
- var handleChange = function handleChange(dates) {
1332
- if (ramda.isEmpty(dates) || ramda.isNil(dates)) {
1333
- handleApplyFilter({
1334
- _delete: true
1335
- });
1336
- return;
1337
- }
1338
- var value = datePickerType === "range" ? ramda.pluck("$d", dates).map(function (date) {
1339
- return date.toISOString();
1340
- }) : dates["$d"];
1341
- var updatedFilter = buildUpdatedFilter({
1342
- column: column,
1343
- defaultType: defaultType,
1344
- option: {},
1345
- rule: selectedRule.value,
1346
- value: value
1347
- });
1348
- handleApplyFilter(updatedFilter);
1349
- };
1350
- return /*#__PURE__*/React__default["default"].createElement("div", {
1351
- className: "neeto-filters-pane-filter__item-wrapper"
1352
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends$1({
1353
- label: label,
1354
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter-rule"),
1355
- defaultValue: SINGLE_DATE_OPTIONS[0],
1356
- options: SINGLE_DATE_OPTIONS,
1357
- strategy: "fixed",
1358
- value: selectedRule
1359
- }, neetoCist.isNotEmpty(helpIconProps) && {
1360
- labelProps: {
1361
- helpIconProps: buildHelpIconProps(helpIconProps)
1362
- }
1363
- }, {
1364
- onChange: handleRuleChange
1365
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends$1({
1366
- autoFocus: autoFocus,
1367
- value: value,
1368
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1369
- getPopupContainer: ramda.prop("parentNode"),
1370
- type: datePickerType,
1371
- onChange: handleChange
1372
- }, otherProps)));
1373
- };
1374
-
1375
- var SingleTime = function SingleTime(_ref) {
1376
- var column = _ref.column,
1377
- filter = _ref.filter,
1378
- filters = _ref.filters,
1379
- handleApplyFilter = _ref.handleApplyFilter,
1380
- autoFocus = _ref.autoFocus;
1381
- var _useState = React.useState(function () {
1382
- return neetoCist.findBy({
1383
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1384
- }, SINGLE_TIME_OPTIONS) || SINGLE_TIME_OPTIONS[0];
1385
- }),
1386
- _useState2 = _slicedToArray(_useState, 2),
1387
- selectedRule = _useState2[0],
1388
- setSelectedRule = _useState2[1];
1389
- var key = column.key,
1390
- _column$defaultType = column.defaultType,
1391
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1392
- label = column.label,
1393
- _column$helpIconProps = column.helpIconProps,
1394
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1395
- var otherProps = getOtherProps(column);
1396
- var timePickerType = selectedRule.value === "between" ? "range" : "time";
1397
- var value = filter === null || filter === void 0 ? void 0 : filter.value;
1398
- React.useEffect(function () {
1399
- if (!ramda.isEmpty(filters)) return;
1400
- setSelectedRule(SINGLE_TIME_OPTIONS[0]);
1401
- }, [filters]);
1402
- var handleRuleChange = function handleRuleChange(ruleOption) {
1403
- setSelectedRule(ruleOption);
1404
-
1405
- // Clear value if switched between incompatible types
1406
- var updateValue = value;
1407
- if (timePickerType === "range" && ruleOption.value !== "between" || timePickerType === "time" && ruleOption.value === "between") {
1408
- updateValue = "";
1409
- }
1410
- var updatedFilter = buildUpdatedFilter({
1411
- column: column,
1412
- defaultType: defaultType,
1413
- option: {},
1414
- rule: ruleOption.value,
1415
- value: updateValue
1416
- });
1417
- handleApplyFilter(updatedFilter);
1418
- };
1419
- var handleChange = function handleChange(times) {
1420
- var value = timePickerType === "range" ? ramda.pluck("$d", times).map(function (time) {
1421
- return time.toISOString();
1422
- }) : times["$d"].toISOString();
1423
- var updatedFilter = buildUpdatedFilter({
1424
- column: column,
1425
- defaultType: defaultType,
1426
- option: {},
1427
- rule: selectedRule.value,
1428
- value: value
1429
- });
1430
- handleApplyFilter(updatedFilter);
1431
- };
1432
- return /*#__PURE__*/React__default["default"].createElement("div", {
1433
- className: "neeto-filters-pane-filter__item-wrapper"
1434
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends$1({
1435
- label: label,
1436
- defaultValue: SINGLE_TIME_OPTIONS[0],
1437
- options: SINGLE_TIME_OPTIONS,
1438
- strategy: "fixed",
1439
- value: selectedRule
1440
- }, neetoCist.isNotEmpty(helpIconProps) && {
1441
- labelProps: {
1442
- helpIconProps: buildHelpIconProps(helpIconProps)
1443
- }
1444
- }, {
1445
- onChange: handleRuleChange
1446
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.TimePicker, _extends$1({
1447
- autoFocus: autoFocus,
1448
- value: value,
1449
- use12Hours: true,
1450
- className: "w-full",
1451
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1452
- format: "h:mm A",
1453
- getPopupContainer: ramda.prop("parentNode"),
1454
- type: timePickerType,
1455
- onChange: handleChange
1456
- }, otherProps)));
1457
- };
1458
-
1459
- var Text = function Text(_ref) {
1460
- var column = _ref.column,
1461
- filter = _ref.filter,
1462
- filters = _ref.filters,
1463
- handleApplyFilter = _ref.handleApplyFilter,
1464
- autoFocus = _ref.autoFocus,
1465
- onClose = _ref.onClose;
1466
- var key = column.key,
1467
- _column$defaultType = column.defaultType,
1468
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1469
- label = column.label,
1470
- _column$showRuleSelec = column.showRuleSelector,
1471
- showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
1472
- _column$helpIconProps = column.helpIconProps,
1473
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1474
- var otherProps = getOtherProps(column);
1475
- var ruleOptions = buildRuleOptions({
1476
- defaultType: defaultType
1477
- });
1478
- var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
1479
- var _useState = React.useState(filter === null || filter === void 0 ? void 0 : filter.value),
1480
- _useState2 = _slicedToArray(_useState, 2),
1481
- inputValue = _useState2[0],
1482
- setInputValue = _useState2[1];
1483
- var _useState3 = React.useState(function () {
1484
- return neetoCist.findBy({
1485
- value: filter === null || filter === void 0 ? void 0 : filter.rule
1486
- }, ruleOptions) || ruleOptions[0];
1487
- }),
1488
- _useState4 = _slicedToArray(_useState3, 2),
1489
- selectedRule = _useState4[0],
1490
- setSelectedRule = _useState4[1];
1491
- var debouncedInputValue = reactUtils.useDebounce(inputValue);
1492
- var _useTranslation = reactI18next.useTranslation(),
1493
- t = _useTranslation.t;
1494
- var handleUpdateAndApplyFilter = function handleUpdateAndApplyFilter() {
1495
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : debouncedInputValue;
1496
- var rule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedRule;
1497
- if (ramda.equals(filter === null || filter === void 0 ? void 0 : filter.value, value) && ramda.equals(selectedRule, rule)) return;
1498
- var updatedFilter = buildUpdatedFilter({
1499
- column: column,
1500
- defaultType: defaultType,
1501
- option: {},
1502
- rule: rule.value,
1503
- value: value.trim()
1504
- });
1505
- handleApplyFilter(updatedFilter);
1506
- };
1507
- var handleKeydown = function handleKeydown(e) {
1508
- if (!(e.key === "Enter")) return;
1509
- handleUpdateAndApplyFilter(inputValue);
1510
- onClose();
1511
- };
1512
- var handleRuleChange = function handleRuleChange(ruleOption) {
1513
- setSelectedRule(ruleOption);
1514
- if (!debouncedInputValue) return;
1515
- handleUpdateAndApplyFilter(debouncedInputValue, ruleOption);
1516
- };
1517
-
1518
- // Reset states when "Clear filters" button is clicked.
1519
- React.useEffect(function () {
1520
- (ramda.isEmpty(filters) || ramda.isNil(filter)) && setInputValue("");
1521
- }, [filter]);
1522
- React.useEffect(function () {
1523
- if (!debouncedInputValue) {
1524
- !isUndefinedOrEmpty(filter) && handleApplyFilter({
1525
- _delete: true
1526
- });
1527
- return;
1528
- }
1529
- handleUpdateAndApplyFilter();
1530
- }, [debouncedInputValue]);
1531
- return /*#__PURE__*/React__default["default"].createElement("div", {
1532
- className: "neeto-filters-pane-filter__item-wrapper"
1533
- }, showRuleSelector && /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends$1({
1534
- label: label,
1535
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter-rule"),
1536
- defaultValue: ruleOptions[0],
1537
- options: ruleOptions,
1538
- strategy: "fixed",
1539
- value: selectedRule,
1540
- onChange: handleRuleChange
1541
- }, neetoCist.isNotEmpty(helpIconProps) && {
1542
- labelProps: {
1543
- helpIconProps: buildHelpIconProps(helpIconProps)
1544
- }
1545
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.Input, _extends$1({
1546
- autoFocus: autoFocus,
1547
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1548
- label: !showRuleSelector && label,
1549
- type: inputType,
1550
- value: inputValue
1551
- }, neetoCist.isNotEmpty(helpIconProps) && {
1552
- labelProps: {
1553
- helpIconProps: buildHelpIconProps(helpIconProps)
1554
- }
1555
- }, {
1556
- placeholder: t("neetoFilters.messages.enterResource", {
1557
- resource: label
1558
- }),
1559
- onChange: function onChange(event) {
1560
- return setInputValue(event.target.value);
1561
- },
1562
- onKeyDown: handleKeydown
1563
- }, otherProps)));
1564
- };
1565
-
1566
- var Time = function Time(_ref) {
1567
- var column = _ref.column,
1568
- filter = _ref.filter,
1569
- handleApplyFilter = _ref.handleApplyFilter,
1570
- autoFocus = _ref.autoFocus;
1571
- var key = column.key,
1572
- _column$defaultType = column.defaultType,
1573
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1574
- label = column.label,
1575
- _column$helpIconProps = column.helpIconProps,
1576
- helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1577
- var otherProps = getOtherProps(column);
1578
- var value = buildSingleTimeValue(filter);
1579
- var isCustomTimeRangeShown = filter && isCustomTimeRange(filter.value);
1580
- var _useTranslation = reactI18next.useTranslation(),
1581
- t = _useTranslation.t;
1582
- var handleChange = function handleChange(option) {
1583
- if (ramda.isEmpty(option) || ramda.isNil(option)) {
1584
- handleApplyFilter({
1585
- _delete: true
1586
- });
1587
- return;
1588
- }
1589
- var updatedFilter = buildUpdatedFilter({
1590
- column: column,
1591
- defaultType: defaultType,
1592
- option: option
1593
- });
1594
- handleApplyFilter(updatedFilter);
1595
- };
1596
- var handleTimeRangeChange = function handleTimeRangeChange(times) {
1597
- var updatedFilter = buildUpdatedFilter({
1598
- column: column,
1599
- defaultType: defaultType,
1600
- option: {
1601
- value: ramda.pluck("$d", times).map(function (time) {
1602
- return time.toISOString();
1603
- })
1604
- }
1605
- });
1606
- handleApplyFilter(updatedFilter);
1607
- };
1608
- return /*#__PURE__*/React__default["default"].createElement("div", {
1609
- className: "neeto-filters-pane-filter__item-wrapper"
1610
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends$1({
1611
- autoFocus: autoFocus,
1612
- label: label,
1613
- value: value,
1614
- isClearable: true,
1615
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1616
- options: TIME_OPTIONS,
1617
- strategy: "fixed",
1618
- placeholder: t("neetoFilters.messages.selectResource", {
1619
- resource: label
1620
- })
1621
- }, neetoCist.isNotEmpty(helpIconProps) && {
1622
- labelProps: {
1623
- helpIconProps: buildHelpIconProps(helpIconProps)
1624
- }
1625
- }, {
1626
- onChange: handleChange
1627
- })), isCustomTimeRangeShown && /*#__PURE__*/React__default["default"].createElement(neetoui.TimePicker, _extends$1({
1628
- use12Hours: true,
1629
- "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-date-range"),
1630
- format: "h:mm A",
1631
- getPopupContainer: ramda.prop("parentNode"),
1632
- type: "range",
1633
- value: filter.value,
1634
- onChange: handleTimeRangeChange
1635
- }, otherProps)));
1636
- };
1637
- var Time$1 = /*#__PURE__*/React__default["default"].memo(Time);
1638
-
1639
- var Item = function Item(_ref) {
1640
- var column = _ref.column,
1641
- filters = _ref.filters,
1642
- onChange = _ref.onChange,
1643
- autoFocus = _ref.autoFocus,
1644
- _ref$onClose = _ref.onClose,
1645
- onClose = _ref$onClose === void 0 ? neetoCist.noop : _ref$onClose;
1646
- var key = column.key,
1647
- _column$defaultType = column.defaultType,
1648
- defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType;
1649
- var filter = React.useMemo(function () {
1650
- return neetoCist.findBy({
1651
- key: key
1652
- }, filters);
1653
- }, [filters, key]);
1654
- var handleApplyFilter = function handleApplyFilter(updatedFilter) {
1655
- if (updatedFilter._delete) onChange(neetoCist.removeBy({
1656
- key: key
1657
- }, filters));else if (!filter) onChange(ramda.append(updatedFilter, filters));else onChange(neetoCist.replaceBy({
1658
- key: key
1659
- }, updatedFilter, filters));
1660
- };
1661
- if (isText(defaultType) || isDigit(defaultType)) {
1662
- return /*#__PURE__*/React__default["default"].createElement(Text, {
1663
- autoFocus: autoFocus,
1664
- column: column,
1665
- filter: filter,
1666
- filters: filters,
1667
- handleApplyFilter: handleApplyFilter,
1668
- onClose: onClose
1669
- });
1670
- }
1671
- if (isDate(defaultType)) {
1672
- return /*#__PURE__*/React__default["default"].createElement(Datetime$1, {
1673
- autoFocus: autoFocus,
1674
- column: column,
1675
- filter: filter,
1676
- handleApplyFilter: handleApplyFilter
1677
- });
1678
- }
1679
- if (isTime(defaultType)) {
1680
- return /*#__PURE__*/React__default["default"].createElement(Time$1, {
1681
- autoFocus: autoFocus,
1682
- column: column,
1683
- filter: filter,
1684
- handleApplyFilter: handleApplyFilter
1685
- });
1686
- }
1687
- if (isSingleDate(defaultType)) {
1688
- return /*#__PURE__*/React__default["default"].createElement(SingleDatetime, {
1689
- autoFocus: autoFocus,
1690
- column: column,
1691
- filter: filter,
1692
- filters: filters,
1693
- handleApplyFilter: handleApplyFilter
1694
- });
1695
- }
1696
- if (isSingleTime(defaultType)) {
1697
- return /*#__PURE__*/React__default["default"].createElement(SingleTime, {
1698
- autoFocus: autoFocus,
1699
- column: column,
1700
- filter: filter,
1701
- filters: filters,
1702
- handleApplyFilter: handleApplyFilter
1703
- });
1704
- }
1705
- if (isBoolean(defaultType) || isCheckbox(defaultType)) {
1706
- return /*#__PURE__*/React__default["default"].createElement(Boolean$1, {
1707
- autoFocus: autoFocus,
1708
- column: column,
1709
- filter: filter,
1710
- handleApplyFilter: handleApplyFilter
1711
- });
1712
- }
1713
- return /*#__PURE__*/React__default["default"].createElement(Dropdown$1, {
1714
- autoFocus: autoFocus,
1715
- column: column,
1716
- filter: filter,
1717
- handleApplyFilter: handleApplyFilter
1718
- });
1719
- };
1720
-
1721
- var STEPS = {
1722
- ADD: "add",
1723
- COLUMN: "column",
1724
- VALUE: "value"
1725
- };
1726
-
1727
- var AddFilter = function AddFilter(_ref) {
1728
- var _findBy;
1729
- var columns = _ref.columns,
1730
- filters = _ref.filters,
1731
- handleChange = _ref.handleChange,
1732
- handleClearFilter = _ref.handleClearFilter,
1733
- _ref$disabled = _ref.disabled,
1734
- disabled = _ref$disabled === void 0 ? false : _ref$disabled;
1735
- var _useTranslation = reactI18next.useTranslation(),
1736
- t = _useTranslation.t;
1737
- var _useState = React.useState({
1738
- step: STEPS.ADD,
1739
- column: {}
1740
- }),
1741
- _useState2 = _slicedToArray(_useState, 2),
1742
- selectedColumn = _useState2[0],
1743
- setSelectedColumn = _useState2[1];
1744
-
1745
- // Disable the add button when
1746
- // 1. No value is entered for previous filter
1747
- // 2. There are no more columns
1748
- var disableAddButton = selectedColumn.step !== STEPS.ADD && neetoCist.isNotPresent((_findBy = neetoCist.findBy({
1749
- key: selectedColumn.column.key
1750
- }, filters)) === null || _findBy === void 0 ? void 0 : _findBy.value) || ramda.isEmpty(columns);
1751
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, selectedColumn.step !== STEPS.ADD ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
1752
- className: "flex w-full gap-4"
1753
- }, selectedColumn.step === STEPS.COLUMN && /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
1754
- isSearchable: true,
1755
- label: t("neetoFilters.segments.newFilter"),
1756
- optionRemapping: {
1757
- label: "label",
1758
- value: "key"
1759
- },
1760
- options: columns,
1761
- placeholder: t("neetoFilters.segments.selectFilter"),
1762
- onChange: function onChange(column) {
1763
- return setSelectedColumn({
1764
- step: STEPS.VALUE,
1765
- column: column
1766
- });
1767
- }
1768
- }), selectedColumn.step === STEPS.VALUE && /*#__PURE__*/React__default["default"].createElement(Item, {
1769
- filters: filters,
1770
- autoFocus: true,
1771
- column: selectedColumn.column,
1772
- onChange: handleChange
1773
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1774
- className: "mt-6 self-center",
1775
- icon: neetoIcons.IndeterminateCircle,
1776
- style: "text",
1777
- onClick: function onClick() {
1778
- handleClearFilter(selectedColumn.column);
1779
- setSelectedColumn(ramda.assoc("step", STEPS.ADD));
1780
- }
1781
- })), /*#__PURE__*/React__default["default"].createElement(AddFilter, {
1782
- filters: filters,
1783
- handleChange: handleChange,
1784
- handleClearFilter: handleClearFilter,
1785
- columns: columns.filter(function (_ref2) {
1786
- var key = _ref2.key;
1787
- return !neetoCist.existsBy({
1788
- key: key
1789
- }, filters);
1790
- }),
1791
- disabled: disableAddButton
1792
- })) : /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1793
- disabled: disabled,
1794
- className: "self-start",
1795
- icon: neetoIcons.Plus,
1796
- iconPosition: "left",
1797
- label: t("neetoFilters.segments.addFilter"),
1798
- style: "link",
1799
- onClick: function onClick() {
1800
- return setSelectedColumn(ramda.assoc("step", STEPS.COLUMN));
1801
- }
1802
- }));
1803
- };
1804
-
1805
- var buildSegmentsValidationSchema = function buildSegmentsValidationSchema(defaultSegmentName) {
1806
- return yup__namespace.object({
1807
- name: yup__namespace.string().trim().required(i18next.t("neetoFilters.segments.nameIsRequired")).test({
1808
- name: "not-default-segment-name",
1809
- test: function test(value) {
1810
- return (value === null || value === void 0 ? void 0 : value.toLocaleLowerCase()) !== defaultSegmentName.toLocaleLowerCase();
1811
- },
1812
- message: i18next.t("neetoFilters.segments.reservedNameErrorMessage")
1813
- })
1814
- });
1815
- };
1816
-
1817
- 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; }
1818
- 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; }
1819
- var SegmentForm = function SegmentForm(_ref) {
1820
- var _ref$isEdit = _ref.isEdit,
1821
- isEdit = _ref$isEdit === void 0 ? false : _ref$isEdit,
1822
- segmentFormInitialRef = _ref.segmentFormInitialRef,
1823
- isOpen = _ref.isOpen,
1824
- onClose = _ref.onClose,
1825
- isSubmitting = _ref.isSubmitting,
1826
- handleSubmit = _ref.handleSubmit,
1827
- defaultSegmentName = _ref.defaultSegmentName,
1828
- initialValues = _ref.initialValues,
1829
- customFilters = _ref.customFilters,
1830
- columns = _ref.columns,
1831
- filters = _ref.filters,
1832
- childrenKeys = _ref.childrenKeys;
1833
- var history = reactRouterDom_min.useHistory();
1834
- var _useTranslation = reactI18next.useTranslation(),
1835
- t = _useTranslation.t;
1836
- var _buildFilteredColumns = buildFilteredColumns({
1837
- searchTerm: "",
1838
- columns: columns
1839
- }),
1840
- _buildFilteredColumns2 = _buildFilteredColumns.groupedColumns,
1841
- groupedColumns = _buildFilteredColumns2 === void 0 ? [] : _buildFilteredColumns2,
1842
- _buildFilteredColumns3 = _buildFilteredColumns.ungroupedColumns,
1843
- ungroupedColumns = _buildFilteredColumns3 === void 0 ? [] : _buildFilteredColumns3;
1844
- var handleChange = function handleChange(newFilters) {
1845
- var isClearAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1846
- var params = buildUrlFromFilters(_objectSpread$4({
1847
- columns: columns,
1848
- filters: newFilters
1849
- }, isClearAll && {
1850
- isClearAll: true,
1851
- childrenKeys: childrenKeys
1852
- }));
1853
- history.push({
1854
- search: params
1855
- });
1856
- };
1857
- var handleClearFilter = function handleClearFilter(column, values, setFieldValue) {
1858
- var formState = [{
1859
- conditions: neetoCist.removeBy({
1860
- key: column.key
1861
- }, values.filters[0].conditions)
1862
- }];
1863
- var globalState = neetoCist.removeBy({
1864
- key: column.key
1865
- }, filters);
1866
- setFieldValue("filters", formState);
1867
- handleChange(globalState);
1868
- };
1869
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
1870
- isOpen: isOpen,
1871
- onClose: onClose,
1872
- initialFocusRef: segmentFormInitialRef
1873
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1874
- style: "h2",
1875
- weight: "semibold"
1876
- }, isEdit ? t("neetoFilters.segments.editSegment") : t("neetoFilters.segments.addNewSegment"))), /*#__PURE__*/React__default["default"].createElement(formik.Form, {
1877
- className: "w-full",
1878
- formProps: {
1879
- noValidate: true
1880
- },
1881
- formikProps: {
1882
- initialValues: initialValues,
1883
- validateOnChange: true,
1884
- validateOnBlur: true,
1885
- validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
1886
- onSubmit: handleSubmit
1887
- }
1888
- }, function (_ref2) {
1889
- var errors = _ref2.errors,
1890
- values = _ref2.values,
1891
- setFieldValue = _ref2.setFieldValue;
1892
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
1893
- className: "w-full flex-grow-0",
1894
- error: errors.name,
1895
- label: t("neetoFilters.segments.name"),
1896
- name: "name",
1897
- placeholder: t("neetoFilters.segments.segmentName"),
1898
- ref: segmentFormInitialRef
1899
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1900
- className: "mb-2 mt-4",
1901
- style: "h4"
1902
- }, t("neetoFilters.common.filters")), /*#__PURE__*/React__default["default"].createElement("div", {
1903
- className: "neeto-filters-pane-filter__body flex w-full flex-col gap-5"
1904
- }, ungroupedColumns.filter(function (_ref3) {
1905
- var key = _ref3.key;
1906
- return neetoCist._existsBy({
1907
- key: key
1908
- }, values.filters[0].conditions);
1909
- }).map(function (column) {
1910
- return /*#__PURE__*/React__default["default"].createElement("div", {
1911
- className: "flex w-full gap-4",
1912
- key: column.key
1913
- }, /*#__PURE__*/React__default["default"].createElement(Item, {
1914
- column: column,
1915
- filters: filters,
1916
- autoFocus: column.key === isOpen,
1917
- onChange: function onChange(filters) {
1918
- setFieldValue("filters", [{
1919
- conditions: filters
1920
- }]);
1921
- handleChange(filters);
1922
- }
1923
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1924
- className: "mt-6 self-center",
1925
- icon: neetoIcons.IndeterminateCircle,
1926
- style: "text",
1927
- onClick: function onClick() {
1928
- return handleClearFilter(column, values, setFieldValue);
1929
- }
1930
- }));
1931
- }), neetoCist.isPresent(groupedColumns) && /*#__PURE__*/React__default["default"].createElement(neetoui.Accordion, null, groupedColumns.map(function (_ref4) {
1932
- var group = _ref4.group,
1933
- columns = _ref4.columns;
1934
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Accordion.Item, {
1935
- className: "accordion_item",
1936
- key: group,
1937
- title: group
1938
- }, columns.map(function (column) {
1939
- return /*#__PURE__*/React__default["default"].createElement(Item, {
1940
- column: column,
1941
- filters: filters,
1942
- autoFocus: column.key === isOpen,
1943
- key: column.key,
1944
- onChange: handleChange
1945
- });
1946
- }));
1947
- })), ramda.isEmpty([].concat(_toConsumableArray(groupedColumns), _toConsumableArray(ungroupedColumns))) && /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1948
- style: "body2"
1949
- }, t("neetoFilters.messages.noResourcesFound", {
1950
- resources: t("neetoFilters.common.columns")
1951
- })), customFilters, /*#__PURE__*/React__default["default"].createElement(AddFilter, {
1952
- filters: filters,
1953
- handleChange: handleChange,
1954
- columns: ungroupedColumns.filter(function (_ref5) {
1955
- var key = _ref5.key;
1956
- return !neetoCist.existsBy({
1957
- key: key
1958
- }, filters);
1959
- }),
1960
- handleClearFilter: function handleClearFilter(_ref6) {
1961
- var key = _ref6.key;
1962
- return handleChange(neetoCist.removeBy({
1963
- key: key
1964
- }, filters));
1965
- }
1966
- }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1967
- className: "flex items-center space-x-2"
1968
- }, /*#__PURE__*/React__default["default"].createElement(formik.ActionBlock, {
1969
- cancelButtonProps: {
1970
- onClick: onClose,
1971
- disabled: false
1972
- },
1973
- submitButtonProps: {
1974
- disabled: isSubmitting || ramda.isEmpty(filters),
1975
- loading: isSubmitting
1976
- }
1977
- })));
1978
- }));
1979
- };
1980
-
1981
- var QUERY_KEYS = {
1982
- SEGMENTS_LIST: "segments-list"
1983
- };
1984
- var SEGMENTS_STALE_TIME = 900000; // 15 mins
1985
-
1986
- var DEFAULT_SEGMENTS_CACHE = {
1987
- segments: []
1988
- };
1989
- var SEGMENT_ACTIONS$1 = {
1990
- EDIT: "edit",
1991
- CREATE: "create"
1992
- };
1993
-
1994
- var SHORTCUTS = {
1995
- closePane: {
1996
- sequence: "escape",
1997
- description: i18next.t("neetoFilters.shortcuts.closePane")
1998
- },
1999
- deleteBlock: {
2000
- sequence: "backspace",
2001
- description: i18next.t("neetoFilters.shortcuts.deleteBlock")
2002
- },
2003
- openFilterPane: {
2004
- sequence: "enter",
2005
- description: i18next.t("neetoFilters.shortcuts.openFilterPane")
2006
- }
2007
- };
2008
-
2009
- var buildCustomDateValue = function buildCustomDateValue(value) {
2010
- var isBeforeOrAfter = Math.abs(dayjs(value[1]).diff(dayjs(value[0]), "year")) >= 90;
2011
- if (isBeforeOrAfter) {
2012
- var currentMoment = dayjs();
2013
- var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
2014
- var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
2015
- return diffWithStart < diffWithEnd ? "after-".concat(utils.dateFormat.date(dayjs(value[0]).subtract(1, "day"))) : "before-".concat(utils.dateFormat.date(dayjs(value[1]).add(1, "day")));
2016
- }
2017
- return value.map(utils.dateFormat.date).join(" - ");
2018
- };
2019
- var buildFilterValue = function buildFilterValue(filter) {
2020
- var _findBy2;
2021
- var _filter$defaultType = filter.defaultType,
2022
- defaultType = _filter$defaultType === void 0 ? filter.type : _filter$defaultType,
2023
- value = filter.value,
2024
- rule = filter.rule,
2025
- _filter$values = filter.values,
2026
- initialValues = _filter$values === void 0 ? [] : _filter$values;
2027
- var values = initialValues.map(ramda.modify("value", function (value) {
2028
- return value.toString();
2029
- }));
2030
- if (isDate(defaultType) && isCustomDateRange(value)) {
2031
- return buildCustomDateValue(value);
2032
- } else if (isTime(defaultType) && isCustomTimeRange(value)) {
2033
- return value.map(utils.dateFormat.time).join(" - ");
2034
- } else if (isDate(defaultType) || isTime(defaultType)) {
2035
- return neetoCist.humanize(value);
2036
- } else if (isMulti(defaultType)) {
2037
- return value.map(function (value) {
2038
- var _findBy;
2039
- return ((_findBy = neetoCist.findBy({
2040
- value: value
2041
- }, values)) === null || _findBy === void 0 ? void 0 : _findBy.label) || value;
2042
- }).join(", ");
2043
- } else if (isSingleDate(defaultType)) {
2044
- return rule === "between" ? value.map(utils.dateFormat.date).join(" - ") : utils.dateFormat.date(value);
2045
- } else if (isSingleTime(defaultType)) {
2046
- return rule === "between" ? value.map(utils.dateFormat.time).join(" - ") : utils.dateFormat.time(value);
2047
- } else if (isBoolean(defaultType)) {
2048
- return getLabelFromBool({
2049
- value: value,
2050
- values: values
2051
- });
2052
- }
2053
- return ((_findBy2 = neetoCist.findBy({
2054
- value: value
2055
- }, values)) === null || _findBy2 === void 0 ? void 0 : _findBy2.label) || value;
2056
- };
2057
- var buildRuleValue = function buildRuleValue(_ref) {
2058
- var rule = _ref.rule,
2059
- defaultType = _ref.defaultType;
2060
- if (isText(defaultType)) {
2061
- return neetoCist.findBy({
2062
- value: rule
2063
- }, TEXT_RULES).label;
2064
- } else if (isDigit(defaultType)) {
2065
- return neetoCist.findBy({
2066
- value: rule
2067
- }, NUMBER_RULES).label;
2068
- } else if (isSingleDate(defaultType)) {
2069
- return neetoCist.findBy({
2070
- value: rule
2071
- }, SINGLE_DATE_OPTIONS).label;
2072
- } else if (isSingleTime(defaultType)) {
2073
- return neetoCist.findBy({
2074
- value: rule
2075
- }, SINGLE_TIME_OPTIONS).label;
2076
- }
2077
- return "";
2078
- };
2079
- var hasOnlyKeywordFilter = function hasOnlyKeywordFilter(filters) {
2080
- return filters.length === 1 && filters[0].key === SEARCH_TERM_KEY;
2081
- };
2082
- var deepCompare = function deepCompare(filters1, filters2) {
2083
- var comparisonHelper = function comparisonHelper(filters) {
2084
- return ramda.sortBy(ramda.prop("key"), neetoCist.removeBy({
2085
- key: SEARCH_TERM_KEY
2086
- }, ramda.project(["key", "rule", "value"], filters)));
2087
- };
2088
- return neetoCist.notEqualsDeep(comparisonHelper(filters1), comparisonHelper(filters2));
1049
+ var hasOnlyKeywordFilter = function hasOnlyKeywordFilter(filters) {
1050
+ return filters.length === 1 && filters[0].key === SEARCH_TERM_KEY;
2089
1051
  };
2090
1052
 
2091
1053
  var Block = function Block(_ref) {
@@ -2193,89 +1155,6 @@ var ChildBlock = function ChildBlock(_ref) {
2193
1155
  })));
2194
1156
  };
2195
1157
 
2196
- var FilterBar = function FilterBar(_ref) {
2197
- var filters = _ref.filters,
2198
- setIsSavePaneOpen = _ref.setIsSavePaneOpen,
2199
- setIsPaneOpen = _ref.setIsPaneOpen,
2200
- childrenKeys = _ref.childrenKeys,
2201
- nonHiddenFilters = _ref.nonHiddenFilters,
2202
- childrenFiltersApplied = _ref.childrenFiltersApplied,
2203
- keywordFilter = _ref.keywordFilter,
2204
- handleApplyFilters = _ref.handleApplyFilters;
2205
- var _useTranslation = reactI18next.useTranslation(),
2206
- t = _useTranslation.t;
2207
- var history = reactRouterDom_min.useHistory();
2208
- var searchParams = reactUtils.useQueryParams({
2209
- toCamelCase: false
2210
- });
2211
- var handleDelete = function handleDelete(key) {
2212
- if (key === SEARCH_TERM_KEY) {
2213
- var params = ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams());
2214
- var pathname = window.location.pathname;
2215
- history.push(utils.buildUrl(pathname, params));
2216
- return;
2217
- }
2218
- if (childrenKeys.includes(key)) {
2219
- var _params = ramda.omit([key], getSnakeCasedQueryParams());
2220
- var _pathname = window.location.pathname;
2221
- history.push(utils.buildUrl(_pathname, _params));
2222
- }
2223
- var newFilters = neetoCist.removeBy({
2224
- key: key
2225
- }, filters);
2226
- handleApplyFilters(newFilters);
2227
- };
2228
- var handleClearAll = function handleClearAll() {
2229
- var params = isKeywordFilterPresent(keywordFilter) ? ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
2230
- var pathname = window.location.pathname;
2231
- history.push(utils.buildUrl(pathname, params));
2232
- handleApplyFilters([], true);
2233
- };
2234
- var hideClearButton = nonHiddenFilters.every(function (_ref2) {
2235
- var defaultValue = _ref2.defaultValue,
2236
- isClearable = _ref2.isClearable;
2237
- return defaultValue && !isClearable;
2238
- }) && !childrenFiltersApplied;
2239
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, nonHiddenFilters.map(function (filter) {
2240
- var _filter$suffixCompone;
2241
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
2242
- key: filter.key
2243
- }, /*#__PURE__*/React__default["default"].createElement(Block, {
2244
- filter: filter,
2245
- handleDelete: handleDelete,
2246
- setIsPaneOpen: setIsPaneOpen
2247
- }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/React__default["default"].createElement("div", {
2248
- className: "neeto-filters-bar--separator"
2249
- }));
2250
- }), childrenKeys.filter(function (childKey) {
2251
- return ramda.has(childKey, searchParams);
2252
- }).map(function (childKey) {
2253
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
2254
- key: childKey
2255
- }, /*#__PURE__*/React__default["default"].createElement(ChildBlock, {
2256
- childKey: childKey,
2257
- handleDelete: handleDelete,
2258
- setIsPaneOpen: setIsPaneOpen
2259
- }), /*#__PURE__*/React__default["default"].createElement("div", {
2260
- className: "neeto-filters-bar--separator"
2261
- }));
2262
- }), !hasOnlyKeywordFilter(filters) && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
2263
- label: t("neetoFilters.segments.saveAsNewSegment"),
2264
- style: "secondary",
2265
- onClick: function onClick() {
2266
- setIsPaneOpen(false);
2267
- setIsSavePaneOpen({
2268
- action: SEGMENT_ACTIONS$1.CREATE
2269
- });
2270
- }
2271
- }), !hideClearButton && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
2272
- "data-cy": "neeto-filters-bar-clear-btn",
2273
- label: t("neetoFilters.common.clearFilters"),
2274
- style: "text",
2275
- onClick: handleClearAll
2276
- }));
2277
- };
2278
-
2279
1158
  var fetch = function fetch(params) {
2280
1159
  return axios__default["default"].get(SEGMENTS_BASE_URL, {
2281
1160
  params: params
@@ -2289,8 +1168,6 @@ var show = function show(id) {
2289
1168
  var create = function create(payload) {
2290
1169
  return axios__default["default"].post(SEGMENTS_BASE_URL, {
2291
1170
  segment: payload
2292
- }, {
2293
- showToastr: false
2294
1171
  });
2295
1172
  };
2296
1173
  var update = function update(_ref) {
@@ -2313,6 +1190,11 @@ var segmentsApi = {
2313
1190
  destroy: destroy
2314
1191
  };
2315
1192
 
1193
+ var QUERY_KEYS = {
1194
+ SEGMENTS_LIST: "segments-list"
1195
+ };
1196
+ var SEGMENTS_STALE_TIME = 900000; // 15 mins
1197
+
2316
1198
  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; }
2317
1199
  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; }
2318
1200
  var SEGMENTS_LIST = QUERY_KEYS.SEGMENTS_LIST;
@@ -2331,6 +1213,15 @@ var useFetchSegments = function useFetchSegments(_ref) {
2331
1213
  select: ramda.prop("segments")
2332
1214
  }, options));
2333
1215
  };
1216
+ var useShowSegment = function useShowSegment(id) {
1217
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1218
+ return reactQuery.useQuery([SEGMENTS_LIST, id], function () {
1219
+ return segmentsApi.show(id);
1220
+ }, ramda.mergeRight({
1221
+ staleTime: SEGMENTS_STALE_TIME,
1222
+ select: ramda.prop("segment")
1223
+ }, options));
1224
+ };
2334
1225
  var useCreateSegment = function useCreateSegment(options) {
2335
1226
  return reactUtils.useMutationWithInvalidation(segmentsApi.create, _objectSpread$3({
2336
1227
  keysToInvalidate: [SEGMENTS_LIST]
@@ -2347,25 +1238,47 @@ var useDestroySegment = function useDestroySegment(options) {
2347
1238
  }, options));
2348
1239
  };
2349
1240
 
2350
- 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; }
2351
- 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; }
2352
- var useSegment = function useSegment(_ref) {
1241
+ var buildSegmentsValidationSchema = function buildSegmentsValidationSchema(defaultSegmentName) {
1242
+ return yup__namespace.object({
1243
+ name: yup__namespace.string().trim().required().test({
1244
+ name: "not-default-segment-name",
1245
+ test: function test(value) {
1246
+ return (value === null || value === void 0 ? void 0 : value.toLocaleLowerCase()) !== defaultSegmentName.toLocaleLowerCase();
1247
+ },
1248
+ message: i18next.t("neetoFilters.segments.reservedNameErrorMessage")
1249
+ })
1250
+ });
1251
+ };
1252
+
1253
+ var Menu = neetoui.Dropdown.Menu,
1254
+ MenuItem = neetoui.Dropdown.MenuItem;
1255
+ var Segment = function Segment(_ref) {
2353
1256
  var entity = _ref.entity,
2354
- keyword = _ref.keyword,
1257
+ filters = _ref.filters,
2355
1258
  columns = _ref.columns,
2356
- childrenKeys = _ref.childrenKeys;
2357
- var history = reactRouterDom.useHistory();
2358
- var _useTranslation = reactI18next.useTranslation(),
2359
- t = _useTranslation.t;
2360
- var initialRenderRef = React.useRef(true);
2361
- var _useQueryParams = reactUtils.useQueryParams(),
2362
- segmentId = _useQueryParams.segmentId;
2363
- var _useState = React.useState({
2364
- action: undefined
2365
- }),
1259
+ childrenKeys = _ref.childrenKeys,
1260
+ setIsFilterPaneOpen = _ref.setIsFilterPaneOpen,
1261
+ defaultSegmentName = _ref.defaultSegmentName;
1262
+ var _useState = React.useState(false),
2366
1263
  _useState2 = _slicedToArray(_useState, 2),
2367
1264
  isSavePaneOpen = _useState2[0],
2368
1265
  setIsSavePaneOpen = _useState2[1];
1266
+ var _useState3 = React.useState(false),
1267
+ _useState4 = _slicedToArray(_useState3, 2),
1268
+ isUpdateAlertOpen = _useState4[0],
1269
+ setIsUpdateAlertOpen = _useState4[1];
1270
+ var inputRef = React.useRef(null);
1271
+ var _useTranslation = reactI18next.useTranslation(),
1272
+ t = _useTranslation.t;
1273
+ var history = reactRouterDom.useHistory();
1274
+ var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
1275
+ var _getQueryParams = utils.getQueryParams(),
1276
+ segmentId = _getQueryParams.segmentId;
1277
+ var _useShowSegment = useShowSegment(segmentId, {
1278
+ enabled: ramda.isNotNil(segmentId)
1279
+ }),
1280
+ _useShowSegment$data = _useShowSegment.data,
1281
+ selectedSegment = _useShowSegment$data === void 0 ? {} : _useShowSegment$data;
2369
1282
  var _useCreateSegment = useCreateSegment(),
2370
1283
  createSegment = _useCreateSegment.mutate,
2371
1284
  isCreating = _useCreateSegment.isLoading;
@@ -2373,50 +1286,18 @@ var useSegment = function useSegment(_ref) {
2373
1286
  updateSegment = _useUpdateSegment.mutate,
2374
1287
  isUpdating = _useUpdateSegment.isLoading;
2375
1288
  var isSubmitting = isCreating || isUpdating;
2376
- var searchParams = reactUtils.useQueryParams({
2377
- toCamelCase: false
2378
- });
2379
- var keywordValue = searchParams[SEARCH_TERM_KEY] || "";
2380
- var isEdit = isSavePaneOpen.action === SEGMENT_ACTIONS$1.EDIT;
2381
- var keywordFilter = _objectSpread$2(_objectSpread$2({
2382
- type: "text",
2383
- rule: "contains",
2384
- label: t("neetoFilters.common.searchTerm")
2385
- }, keyword), {}, {
2386
- key: SEARCH_TERM_KEY,
2387
- value: keywordValue
2388
- });
2389
- var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
2390
- var nonHiddenFilters = neetoCist.removeBy({
2391
- hidden: true
2392
- }, filters);
2393
- var handleApplyFilters = function handleApplyFilters(newFilters, isClearAll) {
2394
- var params = buildUrlFromFilters(_objectSpread$2({
2395
- columns: columns,
2396
- filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
2397
- }, isClearAll && {
2398
- isClearAll: true,
2399
- childrenKeys: childrenKeys
2400
- }));
2401
- history.push({
2402
- search: params
1289
+ var handleUpdate = function handleUpdate() {
1290
+ return updateSegment({
1291
+ id: segmentId,
1292
+ payload: {
1293
+ filters: filtersPayload
1294
+ }
1295
+ }, {
1296
+ onSuccess: function onSuccess() {
1297
+ return setIsUpdateAlertOpen(false);
1298
+ }
2403
1299
  });
2404
1300
  };
2405
- var childrenFiltersApplied = childrenKeys.some(function (key) {
2406
- return ramda.has(key, searchParams);
2407
- });
2408
- React.useEffect(function () {
2409
- if (initialRenderRef.current) {
2410
- initialRenderRef.current = false;
2411
- return neetoCist.noop;
2412
- }
2413
- var handler = setTimeout(function () {
2414
- handleApplyFilters(filters);
2415
- }, 500);
2416
- return function () {
2417
- return clearTimeout(handler);
2418
- };
2419
- }, [keywordValue]);
2420
1301
  var handleCreateSuccess = function handleCreateSuccess(_ref2) {
2421
1302
  var _filters$;
2422
1303
  var _ref2$segment = _ref2.segment,
@@ -2429,101 +1310,99 @@ var useSegment = function useSegment(_ref) {
2429
1310
  id: id
2430
1311
  })
2431
1312
  });
2432
- setIsSavePaneOpen({
2433
- action: undefined
2434
- });
2435
- utils.showThumbsUpToastr();
1313
+ setIsSavePaneOpen(false);
2436
1314
  };
2437
- var handleCreate = function handleCreate(_ref3, _ref4) {
1315
+ var handleSubmit = function handleSubmit(_ref3) {
2438
1316
  var name = _ref3.name;
2439
- var setFieldError = _ref4.setFieldError;
2440
- var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
2441
- createSegment({
1317
+ return createSegment({
2442
1318
  name: name,
2443
1319
  entity: entity,
2444
1320
  filters: filtersPayload
2445
1321
  }, {
2446
- onSuccess: handleCreateSuccess,
2447
- onError: function onError(error) {
2448
- return setFieldError("name", error.response.data.error);
2449
- }
2450
- });
2451
- };
2452
- var handleUpdate = function handleUpdate(_ref5, _ref6) {
2453
- var name = _ref5.name;
2454
- var setFieldError = _ref6.setFieldError;
2455
- var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
2456
- updateSegment({
2457
- id: segmentId,
2458
- payload: {
2459
- name: name,
2460
- filters: filtersPayload
2461
- }
2462
- }, {
2463
- onSuccess: function onSuccess() {
2464
- setIsSavePaneOpen({
2465
- action: undefined
2466
- });
2467
- utils.showThumbsUpToastr();
2468
- },
2469
- onError: function onError(error) {
2470
- return setFieldError("name", error.response.data.error);
2471
- }
1322
+ onSuccess: handleCreateSuccess
2472
1323
  });
2473
1324
  };
2474
- return {
2475
- isEdit: isEdit,
2476
- filters: filters,
2477
- keywordFilter: keywordFilter,
2478
- isSubmitting: isSubmitting,
2479
- nonHiddenFilters: nonHiddenFilters,
2480
- isSavePaneOpen: isSavePaneOpen,
2481
- setIsSavePaneOpen: setIsSavePaneOpen,
2482
- handleApplyFilters: handleApplyFilters,
2483
- childrenFiltersApplied: childrenFiltersApplied,
2484
- handleSubmit: isEdit ? handleUpdate : handleCreate
2485
- };
2486
- };
2487
-
2488
- var Menu = neetoui.Dropdown.Menu,
2489
- MenuItem = neetoui.Dropdown.MenuItem;
2490
- var SegmentBar = function SegmentBar(_ref) {
2491
- var entity = _ref.entity,
2492
- filters = _ref.filters,
2493
- setIsSavePaneOpen = _ref.setIsSavePaneOpen,
2494
- setIsPaneOpen = _ref.setIsPaneOpen;
2495
- var _useTranslation = reactI18next.useTranslation(),
2496
- t = _useTranslation.t;
2497
- var _useQueryParams = reactUtils.useQueryParams(),
2498
- segmentId = _useQueryParams.segmentId;
2499
- var queryClient = reactQuery.useQueryClient();
2500
- var cachedSegments = queryClient.getQueryData([QUERY_KEYS.SEGMENTS_LIST, entity, ""]) || DEFAULT_SEGMENTS_CACHE;
2501
- var segment = neetoCist.findById(segmentId, cachedSegments.segments);
2502
- if (neetoCist.isNotPresent(segment)) return null;
2503
- var newChangesExists = deepCompare(segment.filters[0].conditions, filters);
2504
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
2505
- className: "neeto-ui-text-gray-600 mr-4",
2506
- "data-cy": "neeto-filters-segment-name",
2507
- style: "h4"
2508
- }, segment.name), newChangesExists && /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
1325
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, ramda.isNil(segmentId) ? /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1326
+ disabled: hasOnlyKeywordFilter(filters),
1327
+ label: t("neetoFilters.segments.saveAsSegment"),
1328
+ style: "secondary",
1329
+ onClick: function onClick() {
1330
+ setIsFilterPaneOpen(false);
1331
+ setIsSavePaneOpen(true);
1332
+ }
1333
+ }) : /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
2509
1334
  buttonStyle: "secondary",
2510
- label: t("neetoFilters.segments.updateSegment")
1335
+ label: t("neetoFilters.segments.saveSegment")
2511
1336
  }, /*#__PURE__*/React__default["default"].createElement(Menu, null, /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
1337
+ isDisabled: ramda.equals(filtersPayload, selectedSegment === null || selectedSegment === void 0 ? void 0 : selectedSegment.filters),
1338
+ onClick: setIsUpdateAlertOpen
1339
+ }, t("neetoFilters.segments.saveSegment")), /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
2512
1340
  onClick: function onClick() {
2513
- return setIsSavePaneOpen({
2514
- action: SEGMENT_ACTIONS$1.EDIT
2515
- });
1341
+ setIsFilterPaneOpen(false);
1342
+ setIsSavePaneOpen(true);
2516
1343
  }
2517
- }, t("neetoFilters.segments.updateSegment")), /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
2518
- onClick: function onClick() {
2519
- setIsPaneOpen(false);
2520
- setIsSavePaneOpen({
2521
- action: SEGMENT_ACTIONS$1.CREATE
2522
- });
1344
+ }, t("neetoFilters.segments.saveAsNewSegment")))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
1345
+ initialFocusRef: inputRef,
1346
+ isOpen: isSavePaneOpen,
1347
+ onClose: function onClose() {
1348
+ return setIsSavePaneOpen(false);
1349
+ }
1350
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1351
+ style: "h2",
1352
+ weight: "semibold"
1353
+ }, t("neetoFilters.segments.addNewSegment"))), /*#__PURE__*/React__default["default"].createElement(formik.Form, {
1354
+ className: "w-full",
1355
+ formProps: {
1356
+ noValidate: true
1357
+ },
1358
+ formikProps: {
1359
+ initialValues: {
1360
+ name: ""
1361
+ },
1362
+ validateOnChange: true,
1363
+ validateOnBlur: true,
1364
+ validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
1365
+ onSubmit: handleSubmit
2523
1366
  }
2524
- }, t("neetoFilters.segments.saveAsNewSegment")))));
1367
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
1368
+ className: "w-full",
1369
+ label: t("neetoFilters.segments.name"),
1370
+ name: "name",
1371
+ placeholder: t("neetoFilters.segments.segmentName"),
1372
+ ref: inputRef
1373
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1374
+ className: "flex items-center space-x-2"
1375
+ }, /*#__PURE__*/React__default["default"].createElement(formik.ActionBlock, {
1376
+ cancelButtonProps: {
1377
+ onClick: function onClick() {
1378
+ return setIsSavePaneOpen(false);
1379
+ },
1380
+ disabled: false
1381
+ },
1382
+ submitButtonProps: {
1383
+ disabled: isSubmitting,
1384
+ loading: isSubmitting
1385
+ }
1386
+ })))), /*#__PURE__*/React__default["default"].createElement(neetoui.Alert, {
1387
+ isOpen: isUpdateAlertOpen,
1388
+ isSubmitting: isUpdating,
1389
+ submitButtonLabel: t("neetoFilters.common.update"),
1390
+ title: t("neetoFilters.segments.updateSegment"),
1391
+ message: /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
1392
+ i18nKey: "neetoFilters.segments.updateSegmentMessage",
1393
+ values: {
1394
+ entity: selectedSegment === null || selectedSegment === void 0 ? void 0 : selectedSegment.name
1395
+ }
1396
+ }),
1397
+ onClose: function onClose() {
1398
+ return setIsUpdateAlertOpen(false);
1399
+ },
1400
+ onSubmit: handleUpdate
1401
+ }));
2525
1402
  };
2526
1403
 
1404
+ 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; }
1405
+ 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; }
2527
1406
  var Bar = function Bar(_ref) {
2528
1407
  var entity = _ref.entity,
2529
1408
  className = _ref.className,
@@ -2540,127 +1419,123 @@ var Bar = function Bar(_ref) {
2540
1419
  _ref$childrenKeys = _ref.childrenKeys,
2541
1420
  childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
2542
1421
  _ref$defaultSegmentNa = _ref.defaultSegmentName,
2543
- defaultSegmentName = _ref$defaultSegmentNa === void 0 ? i18next.t("neetoFilters.common.allResults") : _ref$defaultSegmentNa,
2544
- customFilters = _ref.customFilters;
2545
- var queryClient = reactQuery.useQueryClient();
2546
- var _useQueryParams = reactUtils.useQueryParams(),
2547
- segmentId = _useQueryParams.segmentId;
2548
- var segmentFormInitialRef = React.useRef(null);
2549
- var _useSegment = useSegment({
2550
- entity: entity,
2551
- keyword: keyword,
2552
- columns: columns,
2553
- childrenKeys: childrenKeys
2554
- }),
2555
- isEdit = _useSegment.isEdit,
2556
- filters = _useSegment.filters,
2557
- handleSubmit = _useSegment.handleSubmit,
2558
- isSubmitting = _useSegment.isSubmitting,
2559
- keywordFilter = _useSegment.keywordFilter,
2560
- isSavePaneOpen = _useSegment.isSavePaneOpen,
2561
- nonHiddenFilters = _useSegment.nonHiddenFilters,
2562
- setIsSavePaneOpen = _useSegment.setIsSavePaneOpen,
2563
- handleApplyFilters = _useSegment.handleApplyFilters,
2564
- childrenFiltersApplied = _useSegment.childrenFiltersApplied;
2565
- var BarComponent = segmentId ? SegmentBar : FilterBar;
2566
- var cachedSegments = queryClient.getQueryData([QUERY_KEYS.SEGMENTS_LIST, entity, ""]) || DEFAULT_SEGMENTS_CACHE;
2567
- var segment = neetoCist.findById(segmentId, cachedSegments.segments);
2568
- if (ramda.isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
2569
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
2570
- className: classnames__default["default"]("neeto-filters-bar", _defineProperty({}, className, className))
2571
- }, /*#__PURE__*/React__default["default"].createElement(BarComponent, {
2572
- childrenFiltersApplied: childrenFiltersApplied,
2573
- childrenKeys: childrenKeys,
2574
- entity: entity,
2575
- filters: filters,
2576
- handleApplyFilters: handleApplyFilters,
2577
- keywordFilter: keywordFilter,
2578
- nonHiddenFilters: nonHiddenFilters,
2579
- setIsPaneOpen: setIsPaneOpen,
2580
- setIsSavePaneOpen: setIsSavePaneOpen
2581
- })), /*#__PURE__*/React__default["default"].createElement(SegmentForm, {
2582
- childrenKeys: childrenKeys,
2583
- columns: columns,
2584
- customFilters: customFilters,
2585
- defaultSegmentName: defaultSegmentName,
2586
- filters: filters,
2587
- handleSubmit: handleSubmit,
2588
- isEdit: isEdit,
2589
- isSubmitting: isSubmitting,
2590
- keywordFilter: keywordFilter,
2591
- segmentFormInitialRef: segmentFormInitialRef,
2592
- isOpen: neetoCist.isPresent(isSavePaneOpen.action),
2593
- initialValues: isEdit ? ramda.assoc("filters", [{
2594
- conditions: filters
2595
- }], segment) : {
2596
- name: "",
2597
- filters: [{
2598
- conditions: filters
2599
- }]
2600
- },
2601
- onClose: function onClose() {
2602
- return setIsSavePaneOpen({
2603
- action: undefined
1422
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? i18next.t("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
1423
+ return function () {
1424
+ var _useTranslation = reactI18next.useTranslation(),
1425
+ t = _useTranslation.t;
1426
+ var initialRenderRef = React.useRef(true);
1427
+ var searchParams = reactUtils.useQueryParams({
1428
+ toCamelCase: false
1429
+ });
1430
+ var keywordValue = searchParams[SEARCH_TERM_KEY] || "";
1431
+ var keywordFilter = _objectSpread$2(_objectSpread$2({
1432
+ type: "text",
1433
+ rule: "contains",
1434
+ label: t("neetoFilters.common.searchTerm")
1435
+ }, keyword), {}, {
1436
+ key: SEARCH_TERM_KEY,
1437
+ value: keywordValue
1438
+ });
1439
+ var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
1440
+ var nonHiddenFilters = neetoCist.removeBy({
1441
+ hidden: true
1442
+ }, filters);
1443
+ var history = reactRouterDom.useHistory();
1444
+ var handleSubmit = function handleSubmit(newFilters, isClearAll) {
1445
+ var params = buildUrlFromFilters(_objectSpread$2({
1446
+ columns: columns,
1447
+ filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
1448
+ }, isClearAll && {
1449
+ isClearAll: true,
1450
+ childrenKeys: childrenKeys
1451
+ }));
1452
+ history.push({
1453
+ search: params
2604
1454
  });
2605
- }
2606
- }));
2607
- };
2608
-
2609
- function _objectWithoutPropertiesLoose$1(source, excluded) {
2610
- if (source == null) return {};
2611
- var target = {};
2612
- var sourceKeys = Object.keys(source);
2613
- var key, i;
2614
- for (i = 0; i < sourceKeys.length; i++) {
2615
- key = sourceKeys[i];
2616
- if (excluded.indexOf(key) >= 0) continue;
2617
- target[key] = source[key];
2618
- }
2619
- return target;
2620
- }
2621
-
2622
- function _objectWithoutProperties(source, excluded) {
2623
- if (source == null) return {};
2624
- var target = _objectWithoutPropertiesLoose$1(source, excluded);
2625
- var key, i;
2626
- if (Object.getOwnPropertySymbols) {
2627
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
2628
- for (i = 0; i < sourceSymbolKeys.length; i++) {
2629
- key = sourceSymbolKeys[i];
2630
- if (excluded.indexOf(key) >= 0) continue;
2631
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
2632
- target[key] = source[key];
2633
- }
2634
- }
2635
- return target;
2636
- }
2637
-
2638
- var Portal = function Portal(_ref) {
2639
- var children = _ref.children,
2640
- _ref$rootId = _ref.rootId,
2641
- rootId = _ref$rootId === void 0 ? "neeto-filters-portal" : _ref$rootId,
2642
- _ref$element = _ref.element,
2643
- element = _ref$element === void 0 ? "div" : _ref$element;
2644
- var target = React.useRef(null);
2645
- React.useEffect(function () {
2646
- var container = document.getElementById(rootId);
2647
- if (!container) {
2648
- container = document.createElement(element);
2649
- container.setAttribute("id", rootId);
2650
- document.body.appendChild(container);
2651
- }
2652
- container.appendChild(target.current);
2653
- return function () {
2654
- target.current.remove();
2655
- if (ramda.isEmpty(container.childNodes)) {
2656
- container.remove();
1455
+ };
1456
+ var handleDelete = function handleDelete(key) {
1457
+ if (key === SEARCH_TERM_KEY) {
1458
+ var params = ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams());
1459
+ var pathname = window.location.pathname;
1460
+ history.push(utils.buildUrl(pathname, params));
1461
+ return;
2657
1462
  }
1463
+ if (childrenKeys.includes(key)) {
1464
+ var _params = ramda.omit([key], getSnakeCasedQueryParams());
1465
+ var _pathname = window.location.pathname;
1466
+ history.push(utils.buildUrl(_pathname, _params));
1467
+ }
1468
+ var newFilters = neetoCist.removeBy({
1469
+ key: key
1470
+ }, filters);
1471
+ handleSubmit(newFilters);
2658
1472
  };
2659
- }, [rootId]);
2660
- if (!target.current) {
2661
- target.current = document.createElement(element);
2662
- }
2663
- return /*#__PURE__*/ReactDOM.createPortal(children, target.current);
1473
+ var handleClearAll = function handleClearAll() {
1474
+ var params = isKeywordFilterPresent(keywordFilter) ? ramda.omit([SEARCH_TERM_KEY], getSnakeCasedQueryParams()) : getSnakeCasedQueryParams();
1475
+ var pathname = window.location.pathname;
1476
+ history.push(utils.buildUrl(pathname, params));
1477
+ handleSubmit([], true);
1478
+ };
1479
+ var childrenFiltersApplied = childrenKeys.some(function (key) {
1480
+ return ramda.has(key, searchParams);
1481
+ });
1482
+ var hideClearButton = nonHiddenFilters.every(function (_ref2) {
1483
+ var defaultValue = _ref2.defaultValue,
1484
+ isClearable = _ref2.isClearable;
1485
+ return defaultValue && !isClearable;
1486
+ }) && !childrenFiltersApplied;
1487
+ React.useEffect(function () {
1488
+ if (initialRenderRef.current) {
1489
+ initialRenderRef.current = false;
1490
+ return neetoCist.noop;
1491
+ }
1492
+ var handler = setTimeout(function () {
1493
+ handleSubmit(filters);
1494
+ }, 500);
1495
+ return function () {
1496
+ return clearTimeout(handler);
1497
+ };
1498
+ }, [keywordValue]);
1499
+ if (ramda.isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
1500
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1501
+ className: classnames__default["default"]("neeto-filters-bar", _defineProperty({}, className, className))
1502
+ }, nonHiddenFilters.map(function (filter) {
1503
+ var _filter$suffixCompone;
1504
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
1505
+ key: filter.key
1506
+ }, /*#__PURE__*/React__default["default"].createElement(Block, {
1507
+ filter: filter,
1508
+ handleDelete: handleDelete,
1509
+ setIsPaneOpen: setIsPaneOpen
1510
+ }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/React__default["default"].createElement("div", {
1511
+ className: "neeto-filters-bar--separator"
1512
+ }));
1513
+ }), childrenKeys.filter(function (childKey) {
1514
+ return ramda.has(childKey, searchParams);
1515
+ }).map(function (childKey) {
1516
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
1517
+ key: childKey
1518
+ }, /*#__PURE__*/React__default["default"].createElement(ChildBlock, {
1519
+ childKey: childKey,
1520
+ handleDelete: handleDelete,
1521
+ setIsPaneOpen: setIsPaneOpen
1522
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
1523
+ className: "neeto-filters-bar--separator"
1524
+ }));
1525
+ }), ramda.isNotNil(entity) && /*#__PURE__*/React__default["default"].createElement(Segment, {
1526
+ childrenKeys: childrenKeys,
1527
+ columns: columns,
1528
+ defaultSegmentName: defaultSegmentName,
1529
+ entity: entity,
1530
+ filters: filters,
1531
+ setIsFilterPaneOpen: setIsPaneOpen
1532
+ }), !hideClearButton && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1533
+ "data-cy": "neeto-filters-bar-clear-btn",
1534
+ label: t("neetoFilters.common.clearFilters"),
1535
+ style: "text",
1536
+ onClick: handleClearAll
1537
+ }));
1538
+ }();
2664
1539
  };
2665
1540
 
2666
1541
  function _extends() {
@@ -2691,940 +1566,840 @@ function _objectWithoutPropertiesLoose(source, excluded) {
2691
1566
  return target;
2692
1567
  }
2693
1568
 
2694
- function _setPrototypeOf(o, p) {
2695
- _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
2696
- o.__proto__ = p;
2697
- return o;
2698
- };
2699
- return _setPrototypeOf(o, p);
2700
- }
2701
-
2702
- function _inheritsLoose(subClass, superClass) {
2703
- subClass.prototype = Object.create(superClass.prototype);
2704
- subClass.prototype.constructor = subClass;
2705
- _setPrototypeOf(subClass, superClass);
2706
- }
2707
-
2708
- /**
2709
- * Checks if a given element has a CSS class.
2710
- *
2711
- * @param element the element
2712
- * @param className the CSS class name
2713
- */
2714
- function hasClass(element, className) {
2715
- if (element.classList) return !!className && element.classList.contains(className);
2716
- return (" " + (element.className.baseVal || element.className) + " ").indexOf(" " + className + " ") !== -1;
2717
- }
2718
-
2719
- /**
2720
- * Adds a CSS class to a given element.
2721
- *
2722
- * @param element the element
2723
- * @param className the CSS class name
2724
- */
2725
-
2726
- function addClass(element, className) {
2727
- if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + " " + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + " " + className);
1569
+ function _objectWithoutProperties(source, excluded) {
1570
+ if (source == null) return {};
1571
+ var target = _objectWithoutPropertiesLoose(source, excluded);
1572
+ var key, i;
1573
+ if (Object.getOwnPropertySymbols) {
1574
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
1575
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
1576
+ key = sourceSymbolKeys[i];
1577
+ if (excluded.indexOf(key) >= 0) continue;
1578
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
1579
+ target[key] = source[key];
1580
+ }
1581
+ }
1582
+ return target;
2728
1583
  }
2729
1584
 
2730
- function replaceClassName(origClass, classToRemove) {
2731
- return origClass.replace(new RegExp("(^|\\s)" + classToRemove + "(?:\\s|$)", 'g'), '$1').replace(/\s+/g, ' ').replace(/^\s*|\s*$/g, '');
2732
- }
2733
- /**
2734
- * Removes a CSS class from a given element.
2735
- *
2736
- * @param element the element
2737
- * @param className the CSS class name
2738
- */
1585
+ var useFilters = function useFilters(_ref) {
1586
+ var onFiltersChange = _ref.onFiltersChange,
1587
+ columns = _ref.columns,
1588
+ keywordFilter = _ref.keywordFilter,
1589
+ onSelectorsChange = _ref.onSelectorsChange;
1590
+ var _useTransition = React.useTransition(),
1591
+ _useTransition2 = _slicedToArray(_useTransition, 2);
1592
+ _useTransition2[0];
1593
+ var startTransition = _useTransition2[1];
1594
+ var initialRender = React.useRef(true);
1595
+ var prevFilters = React.useRef([]);
1596
+ var location = reactRouterDom.useLocation();
1597
+ var filters = buildFiltersFromSearchParams(columns, false);
1598
+ var history = reactRouterDom.useHistory();
1599
+ var defaultValuesOfColumns = JSON.stringify(ramda.pluck("defaultValue", columns));
1600
+ var handlePrecenseOfDefaultFilters = function handlePrecenseOfDefaultFilters(defaultFilters) {
1601
+ var params = buildUrlFromFilters({
1602
+ columns: columns,
1603
+ filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(defaultFilters), [keywordFilter]) : defaultFilters
1604
+ });
1605
+ history.replace({
1606
+ search: params
1607
+ });
1608
+ };
1609
+ var handleFiltersChange = function handleFiltersChange(filtersPayload) {
1610
+ startTransition(function () {
1611
+ onFiltersChange(buildFiltersPayload(filtersPayload.filter(function (filter) {
1612
+ return !ramda.isNil(filter.node);
1613
+ })));
1614
+ });
1615
+ };
2739
1616
 
1617
+ //This function sends the updated filters to host via callbacks.
1618
+ var sendUpdatedFilters = function sendUpdatedFilters() {
1619
+ if (compareFilters(ramda.append(keywordFilter, filters), prevFilters.current)) {
1620
+ return;
1621
+ }
1622
+ var newFilters = buildFiltersFromSearchParams(columns);
1623
+ var filtersPayload = isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? ramda.append(keywordFilter, newFilters) : newFilters;
1624
+ handleFiltersChange(filtersPayload);
1625
+ onSelectorsChange(buildSelectorsFromURL(columns));
1626
+ };
1627
+ var handleChangesInURL = function handleChangesInURL() {
1628
+ var defaultFilters = buildDefaultFilters(columns, filters);
1629
+ var searchParams = getSnakeCasedQueryParams();
1630
+ var keys = ramda.pluck("key", ramda.append(keywordFilter, columns));
1631
+ if (keys.every(function (key) {
1632
+ return ramda.isNil(searchParams[key]);
1633
+ }) && !ramda.isEmpty(defaultFilters)) {
1634
+ history.replace({
1635
+ search: buildUrlFromFilters({
1636
+ columns: columns,
1637
+ filters: ramda.concat(defaultFilters, filters)
1638
+ })
1639
+ });
1640
+ filters = buildFiltersFromSearchParams(columns, false);
1641
+ }
1642
+ };
1643
+ React.useEffect(function () {
1644
+ if (initialRender.current) {
1645
+ initialRender.current = false;
1646
+ var keywordValue = getSearchTermFromUrl();
1647
+ var defaultFilters = buildDefaultFilters(columns, filters);
1648
+ neetoCist.isNotEmpty(defaultFilters) && handlePrecenseOfDefaultFilters(defaultFilters);
1649
+ prevFilters.current = ramda.append(ramda.mergeRight(keywordFilter, {
1650
+ value: keywordValue
1651
+ }), filters);
1652
+ } else {
1653
+ handleChangesInURL();
1654
+ sendUpdatedFilters();
1655
+ prevFilters.current = ramda.append(keywordFilter, filters);
1656
+ }
1657
+ }, [location.search, defaultValuesOfColumns]);
1658
+ return filters;
1659
+ };
2740
1660
 
2741
- function removeClass$1(element, className) {
2742
- if (element.classList) {
2743
- element.classList.remove(className);
2744
- } else if (typeof element.className === 'string') {
2745
- element.className = replaceClassName(element.className, className);
2746
- } else {
2747
- element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));
1661
+ var buildDropdownValue = function buildDropdownValue(_ref) {
1662
+ var defaultType = _ref.defaultType,
1663
+ filter = _ref.filter,
1664
+ options = _ref.options;
1665
+ if (!filter) return null;
1666
+ if (isMulti(defaultType)) {
1667
+ return options.filter(function (_ref2) {
1668
+ var value = _ref2.value;
1669
+ return filter.value.includes(value);
1670
+ });
1671
+ }
1672
+ return neetoCist.findBy({
1673
+ value: filter.value
1674
+ }, options);
1675
+ };
1676
+ var buildSingleTimeValue = function buildSingleTimeValue(filter) {
1677
+ var _findBy2;
1678
+ if (!filter) return null;
1679
+ return (_findBy2 = neetoCist.findBy({
1680
+ value: filter.value
1681
+ }, TIME_OPTIONS)) !== null && _findBy2 !== void 0 ? _findBy2 : ramda.last(TIME_OPTIONS);
1682
+ };
1683
+ var getOtherProps = function getOtherProps(props) {
1684
+ return ramda.omit(["key", "node", "label", "type", "values", "model", "showRuleSelector"], props);
1685
+ };
1686
+ var buildDropdownOptions = function buildDropdownOptions(_ref3) {
1687
+ var defaultType = _ref3.defaultType,
1688
+ filter = _ref3.filter,
1689
+ options = _ref3.options;
1690
+ options = options.map(ramda.modify("value", function (value) {
1691
+ return value === null || value === void 0 ? void 0 : value.toString();
1692
+ }));
1693
+ if (!filter) return options;
1694
+ if (isMulti(defaultType)) {
1695
+ var selectedOptions = filter.value.map(function (value) {
1696
+ return neetoCist.findBy({
1697
+ value: value
1698
+ }, options) || neetoCist.toLabelAndValue(value);
1699
+ });
1700
+ var nonSelectedOptions = options.filter(function (option) {
1701
+ return !filter.value.includes(option.value);
1702
+ });
1703
+ return ramda.concat(selectedOptions, nonSelectedOptions);
1704
+ }
1705
+ if (!neetoCist.findBy({
1706
+ value: filter.value
1707
+ }, options)) {
1708
+ return ramda.append(neetoCist.toLabelAndValue(filter.value), options);
1709
+ }
1710
+ return options;
1711
+ };
1712
+ var initializeDateRule = function initializeDateRule(filter) {
1713
+ return filter ? neetoCist.findBy({
1714
+ value: filter === null || filter === void 0 ? void 0 : filter.value
1715
+ }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
1716
+ };
1717
+ var getDateValue = function getDateValue(value, rule) {
1718
+ if (ramda.isEmpty(value) || ramda.isNil(value)) {
1719
+ return null;
1720
+ }
1721
+ if (rule.value === "custom-date-range") {
1722
+ return value;
1723
+ }
1724
+ return rule.value === "before" ? dayjs(value[1]).add(1, "day") : dayjs(value[0]).subtract(1, "day");
1725
+ };
1726
+ var findDateOption = function findDateOption(filter, options) {
1727
+ var value = filter.value;
1728
+ var isBeforeOrAfter = dayjs(value[1]).diff(dayjs(value[0]), "year") >= 90;
1729
+ if (ramda.not(isBeforeOrAfter)) {
1730
+ return ramda.last(options);
1731
+ }
1732
+ var currentMoment = dayjs();
1733
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
1734
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
1735
+ return diffWithStart < diffWithEnd ? neetoCist.findBy({
1736
+ value: "after"
1737
+ }, options) : neetoCist.findBy({
1738
+ value: "before"
1739
+ }, options);
1740
+ };
1741
+ var buildDateValues = function buildDateValues(dates, selectedRule) {
1742
+ if (selectedRule.value === "after") {
1743
+ return [dates.add(1, "day"), dates.add(100, "year")];
1744
+ } else if (selectedRule.value === "before") {
1745
+ return [dates.subtract(100, "year"), dates.subtract(1, "day")];
2748
1746
  }
2749
- }
2750
-
2751
- var config = {
2752
- disabled: false
1747
+ return dates;
2753
1748
  };
2754
-
2755
- var TransitionGroupContext = React__default["default"].createContext(null);
2756
-
2757
- var forceReflow = function forceReflow(node) {
2758
- return node.scrollTop;
1749
+ var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
1750
+ return ramda.mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
2759
1751
  };
2760
1752
 
2761
- var UNMOUNTED = 'unmounted';
2762
- var EXITED = 'exited';
2763
- var ENTERING = 'entering';
2764
- var ENTERED = 'entered';
2765
- var EXITING = 'exiting';
2766
- /**
2767
- * The Transition component lets you describe a transition from one component
2768
- * state to another _over time_ with a simple declarative API. Most commonly
2769
- * it's used to animate the mounting and unmounting of a component, but can also
2770
- * be used to describe in-place transition states as well.
2771
- *
2772
- * ---
2773
- *
2774
- * **Note**: `Transition` is a platform-agnostic base component. If you're using
2775
- * transitions in CSS, you'll probably want to use
2776
- * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)
2777
- * instead. It inherits all the features of `Transition`, but contains
2778
- * additional features necessary to play nice with CSS transitions (hence the
2779
- * name of the component).
2780
- *
2781
- * ---
2782
- *
2783
- * By default the `Transition` component does not alter the behavior of the
2784
- * component it renders, it only tracks "enter" and "exit" states for the
2785
- * components. It's up to you to give meaning and effect to those states. For
2786
- * example we can add styles to a component when it enters or exits:
2787
- *
2788
- * ```jsx
2789
- * import { Transition } from 'react-transition-group';
2790
- *
2791
- * const duration = 300;
2792
- *
2793
- * const defaultStyle = {
2794
- * transition: `opacity ${duration}ms ease-in-out`,
2795
- * opacity: 0,
2796
- * }
2797
- *
2798
- * const transitionStyles = {
2799
- * entering: { opacity: 1 },
2800
- * entered: { opacity: 1 },
2801
- * exiting: { opacity: 0 },
2802
- * exited: { opacity: 0 },
2803
- * };
2804
- *
2805
- * const Fade = ({ in: inProp }) => (
2806
- * <Transition in={inProp} timeout={duration}>
2807
- * {state => (
2808
- * <div style={{
2809
- * ...defaultStyle,
2810
- * ...transitionStyles[state]
2811
- * }}>
2812
- * I'm a fade Transition!
2813
- * </div>
2814
- * )}
2815
- * </Transition>
2816
- * );
2817
- * ```
2818
- *
2819
- * There are 4 main states a Transition can be in:
2820
- * - `'entering'`
2821
- * - `'entered'`
2822
- * - `'exiting'`
2823
- * - `'exited'`
2824
- *
2825
- * Transition state is toggled via the `in` prop. When `true` the component
2826
- * begins the "Enter" stage. During this stage, the component will shift from
2827
- * its current transition state, to `'entering'` for the duration of the
2828
- * transition and then to the `'entered'` stage once it's complete. Let's take
2829
- * the following example (we'll use the
2830
- * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):
2831
- *
2832
- * ```jsx
2833
- * function App() {
2834
- * const [inProp, setInProp] = useState(false);
2835
- * return (
2836
- * <div>
2837
- * <Transition in={inProp} timeout={500}>
2838
- * {state => (
2839
- * // ...
2840
- * )}
2841
- * </Transition>
2842
- * <button onClick={() => setInProp(true)}>
2843
- * Click to Enter
2844
- * </button>
2845
- * </div>
2846
- * );
2847
- * }
2848
- * ```
2849
- *
2850
- * When the button is clicked the component will shift to the `'entering'` state
2851
- * and stay there for 500ms (the value of `timeout`) before it finally switches
2852
- * to `'entered'`.
2853
- *
2854
- * When `in` is `false` the same thing happens except the state moves from
2855
- * `'exiting'` to `'exited'`.
2856
- */
2857
-
2858
- var Transition = /*#__PURE__*/function (_React$Component) {
2859
- _inheritsLoose(Transition, _React$Component);
2860
-
2861
- function Transition(props, context) {
2862
- var _this;
2863
-
2864
- _this = _React$Component.call(this, props, context) || this;
2865
- var parentGroup = context; // In the context of a TransitionGroup all enters are really appears
2866
-
2867
- var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;
2868
- var initialStatus;
2869
- _this.appearStatus = null;
2870
-
2871
- if (props.in) {
2872
- if (appear) {
2873
- initialStatus = EXITED;
2874
- _this.appearStatus = ENTERING;
2875
- } else {
2876
- initialStatus = ENTERED;
2877
- }
2878
- } else {
2879
- if (props.unmountOnExit || props.mountOnEnter) {
2880
- initialStatus = UNMOUNTED;
2881
- } else {
2882
- initialStatus = EXITED;
2883
- }
2884
- }
2885
-
2886
- _this.state = {
2887
- status: initialStatus
2888
- };
2889
- _this.nextCallback = null;
2890
- return _this;
2891
- }
2892
-
2893
- Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {
2894
- var nextIn = _ref.in;
2895
-
2896
- if (nextIn && prevState.status === UNMOUNTED) {
2897
- return {
2898
- status: EXITED
2899
- };
1753
+ var Boolean = function Boolean(_ref) {
1754
+ var column = _ref.column,
1755
+ filter = _ref.filter,
1756
+ handleApplyFilter = _ref.handleApplyFilter,
1757
+ autoFocus = _ref.autoFocus;
1758
+ var key = column.key,
1759
+ _column$defaultType = column.defaultType,
1760
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1761
+ label = column.label,
1762
+ values = column.values,
1763
+ _column$helpIconProps = column.helpIconProps,
1764
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1765
+ var options = ramda.isNil(values) || ramda.isEmpty(values) ? DEFAULT_BOOLEAN_OPTIONS : values;
1766
+ var otherProps = getOtherProps(column);
1767
+ var value = buildDropdownValue({
1768
+ defaultType: defaultType,
1769
+ filter: filter,
1770
+ options: options
1771
+ });
1772
+ var _useTranslation = reactI18next.useTranslation(),
1773
+ t = _useTranslation.t;
1774
+ var handleChange = function handleChange(option) {
1775
+ if (ramda.isEmpty(option) || ramda.isNil(option)) {
1776
+ handleApplyFilter({
1777
+ _delete: true
1778
+ });
1779
+ return;
2900
1780
  }
2901
-
2902
- return null;
2903
- } // getSnapshotBeforeUpdate(prevProps) {
2904
- // let nextStatus = null
2905
- // if (prevProps !== this.props) {
2906
- // const { status } = this.state
2907
- // if (this.props.in) {
2908
- // if (status !== ENTERING && status !== ENTERED) {
2909
- // nextStatus = ENTERING
2910
- // }
2911
- // } else {
2912
- // if (status === ENTERING || status === ENTERED) {
2913
- // nextStatus = EXITING
2914
- // }
2915
- // }
2916
- // }
2917
- // return { nextStatus }
2918
- // }
2919
- ;
2920
-
2921
- var _proto = Transition.prototype;
2922
-
2923
- _proto.componentDidMount = function componentDidMount() {
2924
- this.updateStatus(true, this.appearStatus);
1781
+ var updatedFilter = buildUpdatedFilter({
1782
+ column: column,
1783
+ defaultType: defaultType,
1784
+ option: option
1785
+ });
1786
+ handleApplyFilter(updatedFilter);
2925
1787
  };
2926
-
2927
- _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
2928
- var nextStatus = null;
2929
-
2930
- if (prevProps !== this.props) {
2931
- var status = this.state.status;
2932
-
2933
- if (this.props.in) {
2934
- if (status !== ENTERING && status !== ENTERED) {
2935
- nextStatus = ENTERING;
2936
- }
2937
- } else {
2938
- if (status === ENTERING || status === ENTERED) {
2939
- nextStatus = EXITING;
2940
- }
2941
- }
1788
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1789
+ className: "neeto-filters-pane-filter__item-wrapper"
1790
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
1791
+ autoFocus: autoFocus,
1792
+ label: label,
1793
+ options: options,
1794
+ value: value,
1795
+ isClearable: true
1796
+ }, neetoCist.isNotEmpty(helpIconProps) && {
1797
+ labelProps: {
1798
+ helpIconProps: buildHelpIconProps(helpIconProps)
2942
1799
  }
1800
+ }, {
1801
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1802
+ strategy: "fixed",
1803
+ placeholder: t("neetoFilters.messages.selectOption", {
1804
+ resource: label
1805
+ }),
1806
+ onChange: handleChange
1807
+ }, otherProps)));
1808
+ };
1809
+ var Boolean$1 = /*#__PURE__*/React__default["default"].memo(Boolean);
2943
1810
 
2944
- this.updateStatus(false, nextStatus);
2945
- };
2946
-
2947
- _proto.componentWillUnmount = function componentWillUnmount() {
2948
- this.cancelNextCallback();
1811
+ var Datetime = function Datetime(_ref) {
1812
+ var column = _ref.column,
1813
+ filter = _ref.filter,
1814
+ handleApplyFilter = _ref.handleApplyFilter,
1815
+ autoFocus = _ref.autoFocus;
1816
+ var _useState = React.useState(initializeDateRule(filter)),
1817
+ _useState2 = _slicedToArray(_useState, 2),
1818
+ selectedRule = _useState2[0],
1819
+ setSelectedRule = _useState2[1];
1820
+ var _useTranslation = reactI18next.useTranslation(),
1821
+ t = _useTranslation.t;
1822
+ var key = column.key,
1823
+ _column$defaultType = column.defaultType,
1824
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1825
+ label = column.label,
1826
+ _column$helpIconProps = column.helpIconProps,
1827
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1828
+ var isDatePickerShown = filter && isCustomDateRange(filter.value);
1829
+ var otherProps = getOtherProps(column);
1830
+ var handleChange = function handleChange(option) {
1831
+ if (ramda.isEmpty(option) || ramda.isNil(option)) {
1832
+ handleApplyFilter({
1833
+ _delete: true
1834
+ });
1835
+ setSelectedRule({});
1836
+ return;
1837
+ }
1838
+ setSelectedRule(option);
1839
+ var updatedFilter = buildUpdatedFilter({
1840
+ column: column,
1841
+ defaultType: defaultType,
1842
+ option: option
1843
+ });
1844
+ handleApplyFilter(updatedFilter);
2949
1845
  };
2950
-
2951
- _proto.getTimeouts = function getTimeouts() {
2952
- var timeout = this.props.timeout;
2953
- var exit, enter, appear;
2954
- exit = enter = appear = timeout;
2955
-
2956
- if (timeout != null && typeof timeout !== 'number') {
2957
- exit = timeout.exit;
2958
- enter = timeout.enter; // TODO: remove fallback for next major
2959
-
2960
- appear = timeout.appear !== undefined ? timeout.appear : enter;
1846
+ var handleDateRangeChange = function handleDateRangeChange(dates) {
1847
+ if (ramda.isEmpty(dates) || ramda.isNil(dates)) {
1848
+ handleApplyFilter({
1849
+ _delete: true
1850
+ });
1851
+ setSelectedRule({});
1852
+ return;
2961
1853
  }
2962
-
2963
- return {
2964
- exit: exit,
2965
- enter: enter,
2966
- appear: appear
2967
- };
1854
+ var updatedFilter = buildUpdatedFilter({
1855
+ column: column,
1856
+ defaultType: defaultType,
1857
+ option: {
1858
+ value: ramda.pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
1859
+ return date.toISOString();
1860
+ })
1861
+ }
1862
+ });
1863
+ handleApplyFilter(updatedFilter);
2968
1864
  };
2969
-
2970
- _proto.updateStatus = function updateStatus(mounting, nextStatus) {
2971
- if (mounting === void 0) {
2972
- mounting = false;
1865
+ React.useEffect(function () {
1866
+ ramda.isNil(filter) && setSelectedRule({});
1867
+ }, [filter]);
1868
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1869
+ className: "neeto-filters-pane-filter__item-wrapper"
1870
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
1871
+ autoFocus: autoFocus,
1872
+ label: label,
1873
+ isClearable: true,
1874
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1875
+ options: DATE_OPTIONS,
1876
+ strategy: "fixed",
1877
+ value: selectedRule,
1878
+ placeholder: t("neetoFilters.messages.selectResource", {
1879
+ resource: label
1880
+ })
1881
+ }, neetoCist.isNotEmpty(helpIconProps) && {
1882
+ labelProps: {
1883
+ helpIconProps: buildHelpIconProps(helpIconProps)
2973
1884
  }
1885
+ }, {
1886
+ onChange: handleChange
1887
+ })), isDatePickerShown && /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends({
1888
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-date-range"),
1889
+ getPopupContainer: ramda.prop("parentNode"),
1890
+ type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
1891
+ value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
1892
+ onChange: handleDateRangeChange
1893
+ }, otherProps)));
1894
+ };
1895
+ var Datetime$1 = /*#__PURE__*/React__default["default"].memo(Datetime);
2974
1896
 
2975
- if (nextStatus !== null) {
2976
- // nextStatus will always be ENTERING or EXITING.
2977
- this.cancelNextCallback();
2978
-
2979
- if (nextStatus === ENTERING) {
2980
- if (this.props.unmountOnExit || this.props.mountOnEnter) {
2981
- var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default["default"].findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749
2982
- // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.
2983
- // To make the animation happen, we have to separate each rendering and avoid being processed as batched.
2984
-
2985
- if (node) forceReflow(node);
2986
- }
2987
-
2988
- this.performEnter(mounting);
2989
- } else {
2990
- this.performExit();
2991
- }
2992
- } else if (this.props.unmountOnExit && this.state.status === EXITED) {
2993
- this.setState({
2994
- status: UNMOUNTED
1897
+ var Dropdown = function Dropdown(_ref) {
1898
+ var column = _ref.column,
1899
+ filter = _ref.filter,
1900
+ handleApplyFilter = _ref.handleApplyFilter,
1901
+ autoFocus = _ref.autoFocus;
1902
+ var key = column.key,
1903
+ label = column.label,
1904
+ values = column.values,
1905
+ defaultValue = column.defaultValue,
1906
+ _column$defaultType = column.defaultType,
1907
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1908
+ _column$isClearable = column.isClearable,
1909
+ isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
1910
+ _column$helpIconProps = column.helpIconProps,
1911
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1912
+ var otherProps = getOtherProps(column);
1913
+ var options = buildDropdownOptions({
1914
+ defaultType: defaultType,
1915
+ filter: filter,
1916
+ options: values
1917
+ });
1918
+ var value = buildDropdownValue({
1919
+ defaultType: defaultType,
1920
+ filter: filter,
1921
+ options: options
1922
+ });
1923
+ var _useTranslation = reactI18next.useTranslation(),
1924
+ t = _useTranslation.t;
1925
+ var handleChange = function handleChange(option) {
1926
+ if (ramda.isEmpty(option) || ramda.isNil(option)) {
1927
+ handleApplyFilter({
1928
+ _delete: true
2995
1929
  });
1930
+ return;
2996
1931
  }
1932
+ var updatedFilter = buildUpdatedFilter({
1933
+ column: column,
1934
+ defaultType: defaultType,
1935
+ option: option
1936
+ });
1937
+ handleApplyFilter(updatedFilter);
2997
1938
  };
1939
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1940
+ className: "neeto-filters-pane-filter__item-wrapper"
1941
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
1942
+ autoFocus: autoFocus,
1943
+ label: label,
1944
+ options: options,
1945
+ value: value,
1946
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
1947
+ isClearable: !defaultValue && isClearable,
1948
+ isMulti: isMulti(defaultType),
1949
+ strategy: "fixed",
1950
+ placeholder: t("neetoFilters.messages.selectResource", {
1951
+ resource: label
1952
+ })
1953
+ }, neetoCist.isNotEmpty(helpIconProps) && {
1954
+ labelProps: {
1955
+ helpIconProps: buildHelpIconProps(helpIconProps)
1956
+ }
1957
+ }, {
1958
+ onChange: handleChange
1959
+ }, otherProps)));
1960
+ };
1961
+ var Dropdown$1 = /*#__PURE__*/React__default["default"].memo(Dropdown);
2998
1962
 
2999
- _proto.performEnter = function performEnter(mounting) {
3000
- var _this2 = this;
3001
-
3002
- var enter = this.props.enter;
3003
- var appearing = this.context ? this.context.isMounting : mounting;
3004
-
3005
- var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM__default["default"].findDOMNode(this), appearing],
3006
- maybeNode = _ref2[0],
3007
- maybeAppearing = _ref2[1];
1963
+ var SingleDatetime = function SingleDatetime(_ref) {
1964
+ var column = _ref.column,
1965
+ filter = _ref.filter,
1966
+ filters = _ref.filters,
1967
+ handleApplyFilter = _ref.handleApplyFilter,
1968
+ autoFocus = _ref.autoFocus;
1969
+ var _useState = React.useState(function () {
1970
+ return neetoCist.findBy({
1971
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
1972
+ }, SINGLE_DATE_OPTIONS) || SINGLE_DATE_OPTIONS[0];
1973
+ }),
1974
+ _useState2 = _slicedToArray(_useState, 2),
1975
+ selectedRule = _useState2[0],
1976
+ setSelectedRule = _useState2[1];
1977
+ var key = column.key,
1978
+ _column$defaultType = column.defaultType,
1979
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
1980
+ label = column.label,
1981
+ _column$helpIconProps = column.helpIconProps,
1982
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
1983
+ var otherProps = getOtherProps(column);
1984
+ var datePickerType = selectedRule.value === "between" ? "range" : "date";
1985
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
3008
1986
 
3009
- var timeouts = this.getTimeouts();
3010
- var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED
3011
- // if we are mounting and running this it means appear _must_ be set
1987
+ // Reset states when "Clear filters" button is clicked.
1988
+ React.useEffect(function () {
1989
+ if (!ramda.isEmpty(filters)) return;
1990
+ setSelectedRule(SINGLE_DATE_OPTIONS[0]);
1991
+ }, [filters]);
1992
+ var handleRuleChange = function handleRuleChange(ruleOption) {
1993
+ setSelectedRule(ruleOption);
3012
1994
 
3013
- if (!mounting && !enter || config.disabled) {
3014
- this.safeSetState({
3015
- status: ENTERED
3016
- }, function () {
3017
- _this2.props.onEntered(maybeNode);
3018
- });
3019
- return;
1995
+ // Clear value if switched between incompatable types
1996
+ var updateValue = value;
1997
+ if (datePickerType === "range" && ruleOption.value !== "between" || datePickerType === "date" && ruleOption.value === "between") {
1998
+ updateValue = "";
3020
1999
  }
3021
-
3022
- this.props.onEnter(maybeNode, maybeAppearing);
3023
- this.safeSetState({
3024
- status: ENTERING
3025
- }, function () {
3026
- _this2.props.onEntering(maybeNode, maybeAppearing);
3027
-
3028
- _this2.onTransitionEnd(enterTimeout, function () {
3029
- _this2.safeSetState({
3030
- status: ENTERED
3031
- }, function () {
3032
- _this2.props.onEntered(maybeNode, maybeAppearing);
3033
- });
3034
- });
2000
+ var updatedFilter = buildUpdatedFilter({
2001
+ column: column,
2002
+ defaultType: defaultType,
2003
+ option: {},
2004
+ rule: ruleOption.value,
2005
+ value: updateValue
3035
2006
  });
2007
+ handleApplyFilter(updatedFilter);
3036
2008
  };
3037
-
3038
- _proto.performExit = function performExit() {
3039
- var _this3 = this;
3040
-
3041
- var exit = this.props.exit;
3042
- var timeouts = this.getTimeouts();
3043
- var maybeNode = this.props.nodeRef ? undefined : ReactDOM__default["default"].findDOMNode(this); // no exit animation skip right to EXITED
3044
-
3045
- if (!exit || config.disabled) {
3046
- this.safeSetState({
3047
- status: EXITED
3048
- }, function () {
3049
- _this3.props.onExited(maybeNode);
2009
+ var handleChange = function handleChange(dates) {
2010
+ if (ramda.isEmpty(dates) || ramda.isNil(dates)) {
2011
+ handleApplyFilter({
2012
+ _delete: true
3050
2013
  });
3051
2014
  return;
3052
2015
  }
3053
-
3054
- this.props.onExit(maybeNode);
3055
- this.safeSetState({
3056
- status: EXITING
3057
- }, function () {
3058
- _this3.props.onExiting(maybeNode);
3059
-
3060
- _this3.onTransitionEnd(timeouts.exit, function () {
3061
- _this3.safeSetState({
3062
- status: EXITED
3063
- }, function () {
3064
- _this3.props.onExited(maybeNode);
3065
- });
3066
- });
2016
+ var value = datePickerType === "range" ? ramda.pluck("$d", dates).map(function (date) {
2017
+ return date.toISOString();
2018
+ }) : dates["$d"];
2019
+ var updatedFilter = buildUpdatedFilter({
2020
+ column: column,
2021
+ defaultType: defaultType,
2022
+ option: {},
2023
+ rule: selectedRule.value,
2024
+ value: value
3067
2025
  });
2026
+ handleApplyFilter(updatedFilter);
3068
2027
  };
3069
-
3070
- _proto.cancelNextCallback = function cancelNextCallback() {
3071
- if (this.nextCallback !== null) {
3072
- this.nextCallback.cancel();
3073
- this.nextCallback = null;
3074
- }
3075
- };
3076
-
3077
- _proto.safeSetState = function safeSetState(nextState, callback) {
3078
- // This shouldn't be necessary, but there are weird race conditions with
3079
- // setState callbacks and unmounting in testing, so always make sure that
3080
- // we can cancel any pending setState callbacks after we unmount.
3081
- callback = this.setNextCallback(callback);
3082
- this.setState(nextState, callback);
3083
- };
3084
-
3085
- _proto.setNextCallback = function setNextCallback(callback) {
3086
- var _this4 = this;
3087
-
3088
- var active = true;
3089
-
3090
- this.nextCallback = function (event) {
3091
- if (active) {
3092
- active = false;
3093
- _this4.nextCallback = null;
3094
- callback(event);
3095
- }
3096
- };
3097
-
3098
- this.nextCallback.cancel = function () {
3099
- active = false;
3100
- };
3101
-
3102
- return this.nextCallback;
3103
- };
3104
-
3105
- _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {
3106
- this.setNextCallback(handler);
3107
- var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default["default"].findDOMNode(this);
3108
- var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;
3109
-
3110
- if (!node || doesNotHaveTimeoutOrListener) {
3111
- setTimeout(this.nextCallback, 0);
3112
- return;
2028
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2029
+ className: "neeto-filters-pane-filter__item-wrapper"
2030
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
2031
+ label: label,
2032
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter-rule"),
2033
+ defaultValue: SINGLE_DATE_OPTIONS[0],
2034
+ options: SINGLE_DATE_OPTIONS,
2035
+ strategy: "fixed",
2036
+ value: selectedRule
2037
+ }, neetoCist.isNotEmpty(helpIconProps) && {
2038
+ labelProps: {
2039
+ helpIconProps: buildHelpIconProps(helpIconProps)
3113
2040
  }
2041
+ }, {
2042
+ onChange: handleRuleChange
2043
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends({
2044
+ autoFocus: autoFocus,
2045
+ value: value,
2046
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
2047
+ getPopupContainer: ramda.prop("parentNode"),
2048
+ type: datePickerType,
2049
+ onChange: handleChange
2050
+ }, otherProps)));
2051
+ };
3114
2052
 
3115
- if (this.props.addEndListener) {
3116
- var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],
3117
- maybeNode = _ref3[0],
3118
- maybeNextCallback = _ref3[1];
3119
-
3120
- this.props.addEndListener(maybeNode, maybeNextCallback);
3121
- }
2053
+ var SingleTime = function SingleTime(_ref) {
2054
+ var column = _ref.column,
2055
+ filter = _ref.filter,
2056
+ filters = _ref.filters,
2057
+ handleApplyFilter = _ref.handleApplyFilter,
2058
+ autoFocus = _ref.autoFocus;
2059
+ var _useState = React.useState(function () {
2060
+ return neetoCist.findBy({
2061
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
2062
+ }, SINGLE_TIME_OPTIONS) || SINGLE_TIME_OPTIONS[0];
2063
+ }),
2064
+ _useState2 = _slicedToArray(_useState, 2),
2065
+ selectedRule = _useState2[0],
2066
+ setSelectedRule = _useState2[1];
2067
+ var key = column.key,
2068
+ _column$defaultType = column.defaultType,
2069
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2070
+ label = column.label,
2071
+ _column$helpIconProps = column.helpIconProps,
2072
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2073
+ var otherProps = getOtherProps(column);
2074
+ var timePickerType = selectedRule.value === "between" ? "range" : "time";
2075
+ var value = filter === null || filter === void 0 ? void 0 : filter.value;
2076
+ React.useEffect(function () {
2077
+ if (!ramda.isEmpty(filters)) return;
2078
+ setSelectedRule(SINGLE_TIME_OPTIONS[0]);
2079
+ }, [filters]);
2080
+ var handleRuleChange = function handleRuleChange(ruleOption) {
2081
+ setSelectedRule(ruleOption);
3122
2082
 
3123
- if (timeout != null) {
3124
- setTimeout(this.nextCallback, timeout);
2083
+ // Clear value if switched between incompatible types
2084
+ var updateValue = value;
2085
+ if (timePickerType === "range" && ruleOption.value !== "between" || timePickerType === "time" && ruleOption.value === "between") {
2086
+ updateValue = "";
3125
2087
  }
2088
+ var updatedFilter = buildUpdatedFilter({
2089
+ column: column,
2090
+ defaultType: defaultType,
2091
+ option: {},
2092
+ rule: ruleOption.value,
2093
+ value: updateValue
2094
+ });
2095
+ handleApplyFilter(updatedFilter);
3126
2096
  };
3127
-
3128
- _proto.render = function render() {
3129
- var status = this.state.status;
3130
-
3131
- if (status === UNMOUNTED) {
3132
- return null;
3133
- }
3134
-
3135
- var _this$props = this.props,
3136
- children = _this$props.children;
3137
- _this$props.in;
3138
- _this$props.mountOnEnter;
3139
- _this$props.unmountOnExit;
3140
- _this$props.appear;
3141
- _this$props.enter;
3142
- _this$props.exit;
3143
- _this$props.timeout;
3144
- _this$props.addEndListener;
3145
- _this$props.onEnter;
3146
- _this$props.onEntering;
3147
- _this$props.onEntered;
3148
- _this$props.onExit;
3149
- _this$props.onExiting;
3150
- _this$props.onExited;
3151
- _this$props.nodeRef;
3152
- var childProps = _objectWithoutPropertiesLoose(_this$props, ["children", "in", "mountOnEnter", "unmountOnExit", "appear", "enter", "exit", "timeout", "addEndListener", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "nodeRef"]);
3153
-
3154
- return (
3155
- /*#__PURE__*/
3156
- // allows for nested Transitions
3157
- React__default["default"].createElement(TransitionGroupContext.Provider, {
3158
- value: null
3159
- }, typeof children === 'function' ? children(status, childProps) : React__default["default"].cloneElement(React__default["default"].Children.only(children), childProps))
3160
- );
2097
+ var handleChange = function handleChange(times) {
2098
+ var value = timePickerType === "range" ? ramda.pluck("$d", times).map(function (time) {
2099
+ return time.toISOString();
2100
+ }) : times["$d"].toISOString();
2101
+ var updatedFilter = buildUpdatedFilter({
2102
+ column: column,
2103
+ defaultType: defaultType,
2104
+ option: {},
2105
+ rule: selectedRule.value,
2106
+ value: value
2107
+ });
2108
+ handleApplyFilter(updatedFilter);
3161
2109
  };
3162
-
3163
- return Transition;
3164
- }(React__default["default"].Component);
3165
-
3166
- Transition.contextType = TransitionGroupContext;
3167
- Transition.propTypes = {}; // Name the function so it is clearer in the documentation
3168
-
3169
- function noop() {}
3170
-
3171
- Transition.defaultProps = {
3172
- in: false,
3173
- mountOnEnter: false,
3174
- unmountOnExit: false,
3175
- appear: false,
3176
- enter: true,
3177
- exit: true,
3178
- onEnter: noop,
3179
- onEntering: noop,
3180
- onEntered: noop,
3181
- onExit: noop,
3182
- onExiting: noop,
3183
- onExited: noop
3184
- };
3185
- Transition.UNMOUNTED = UNMOUNTED;
3186
- Transition.EXITED = EXITED;
3187
- Transition.ENTERING = ENTERING;
3188
- Transition.ENTERED = ENTERED;
3189
- Transition.EXITING = EXITING;
3190
- var Transition$1 = Transition;
3191
-
3192
- var _addClass = function addClass$1(node, classes) {
3193
- return node && classes && classes.split(' ').forEach(function (c) {
3194
- return addClass(node, c);
3195
- });
3196
- };
3197
-
3198
- var removeClass = function removeClass(node, classes) {
3199
- return node && classes && classes.split(' ').forEach(function (c) {
3200
- return removeClass$1(node, c);
3201
- });
3202
- };
3203
- /**
3204
- * A transition component inspired by the excellent
3205
- * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should
3206
- * use it if you're using CSS transitions or animations. It's built upon the
3207
- * [`Transition`](https://reactcommunity.org/react-transition-group/transition)
3208
- * component, so it inherits all of its props.
3209
- *
3210
- * `CSSTransition` applies a pair of class names during the `appear`, `enter`,
3211
- * and `exit` states of the transition. The first class is applied and then a
3212
- * second `*-active` class in order to activate the CSS transition. After the
3213
- * transition, matching `*-done` class names are applied to persist the
3214
- * transition state.
3215
- *
3216
- * ```jsx
3217
- * function App() {
3218
- * const [inProp, setInProp] = useState(false);
3219
- * return (
3220
- * <div>
3221
- * <CSSTransition in={inProp} timeout={200} classNames="my-node">
3222
- * <div>
3223
- * {"I'll receive my-node-* classes"}
3224
- * </div>
3225
- * </CSSTransition>
3226
- * <button type="button" onClick={() => setInProp(true)}>
3227
- * Click to Enter
3228
- * </button>
3229
- * </div>
3230
- * );
3231
- * }
3232
- * ```
3233
- *
3234
- * When the `in` prop is set to `true`, the child component will first receive
3235
- * the class `example-enter`, then the `example-enter-active` will be added in
3236
- * the next tick. `CSSTransition` [forces a
3237
- * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)
3238
- * between before adding the `example-enter-active`. This is an important trick
3239
- * because it allows us to transition between `example-enter` and
3240
- * `example-enter-active` even though they were added immediately one after
3241
- * another. Most notably, this is what makes it possible for us to animate
3242
- * _appearance_.
3243
- *
3244
- * ```css
3245
- * .my-node-enter {
3246
- * opacity: 0;
3247
- * }
3248
- * .my-node-enter-active {
3249
- * opacity: 1;
3250
- * transition: opacity 200ms;
3251
- * }
3252
- * .my-node-exit {
3253
- * opacity: 1;
3254
- * }
3255
- * .my-node-exit-active {
3256
- * opacity: 0;
3257
- * transition: opacity 200ms;
3258
- * }
3259
- * ```
3260
- *
3261
- * `*-active` classes represent which styles you want to animate **to**, so it's
3262
- * important to add `transition` declaration only to them, otherwise transitions
3263
- * might not behave as intended! This might not be obvious when the transitions
3264
- * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in
3265
- * the example above (minus `transition`), but it becomes apparent in more
3266
- * complex transitions.
3267
- *
3268
- * **Note**: If you're using the
3269
- * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)
3270
- * prop, make sure to define styles for `.appear-*` classes as well.
3271
- */
3272
-
3273
-
3274
- var CSSTransition = /*#__PURE__*/function (_React$Component) {
3275
- _inheritsLoose(CSSTransition, _React$Component);
3276
-
3277
- function CSSTransition() {
3278
- var _this;
3279
-
3280
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3281
- args[_key] = arguments[_key];
3282
- }
3283
-
3284
- _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
3285
- _this.appliedClasses = {
3286
- appear: {},
3287
- enter: {},
3288
- exit: {}
3289
- };
3290
-
3291
- _this.onEnter = function (maybeNode, maybeAppearing) {
3292
- var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),
3293
- node = _this$resolveArgument[0],
3294
- appearing = _this$resolveArgument[1];
3295
-
3296
- _this.removeClasses(node, 'exit');
3297
-
3298
- _this.addClass(node, appearing ? 'appear' : 'enter', 'base');
3299
-
3300
- if (_this.props.onEnter) {
3301
- _this.props.onEnter(maybeNode, maybeAppearing);
3302
- }
3303
- };
3304
-
3305
- _this.onEntering = function (maybeNode, maybeAppearing) {
3306
- var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),
3307
- node = _this$resolveArgument2[0],
3308
- appearing = _this$resolveArgument2[1];
3309
-
3310
- var type = appearing ? 'appear' : 'enter';
3311
-
3312
- _this.addClass(node, type, 'active');
3313
-
3314
- if (_this.props.onEntering) {
3315
- _this.props.onEntering(maybeNode, maybeAppearing);
3316
- }
3317
- };
3318
-
3319
- _this.onEntered = function (maybeNode, maybeAppearing) {
3320
- var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),
3321
- node = _this$resolveArgument3[0],
3322
- appearing = _this$resolveArgument3[1];
3323
-
3324
- var type = appearing ? 'appear' : 'enter';
3325
-
3326
- _this.removeClasses(node, type);
3327
-
3328
- _this.addClass(node, type, 'done');
3329
-
3330
- if (_this.props.onEntered) {
3331
- _this.props.onEntered(maybeNode, maybeAppearing);
3332
- }
3333
- };
3334
-
3335
- _this.onExit = function (maybeNode) {
3336
- var _this$resolveArgument4 = _this.resolveArguments(maybeNode),
3337
- node = _this$resolveArgument4[0];
3338
-
3339
- _this.removeClasses(node, 'appear');
3340
-
3341
- _this.removeClasses(node, 'enter');
3342
-
3343
- _this.addClass(node, 'exit', 'base');
3344
-
3345
- if (_this.props.onExit) {
3346
- _this.props.onExit(maybeNode);
3347
- }
3348
- };
3349
-
3350
- _this.onExiting = function (maybeNode) {
3351
- var _this$resolveArgument5 = _this.resolveArguments(maybeNode),
3352
- node = _this$resolveArgument5[0];
3353
-
3354
- _this.addClass(node, 'exit', 'active');
3355
-
3356
- if (_this.props.onExiting) {
3357
- _this.props.onExiting(maybeNode);
3358
- }
3359
- };
3360
-
3361
- _this.onExited = function (maybeNode) {
3362
- var _this$resolveArgument6 = _this.resolveArguments(maybeNode),
3363
- node = _this$resolveArgument6[0];
3364
-
3365
- _this.removeClasses(node, 'exit');
3366
-
3367
- _this.addClass(node, 'exit', 'done');
3368
-
3369
- if (_this.props.onExited) {
3370
- _this.props.onExited(maybeNode);
3371
- }
3372
- };
3373
-
3374
- _this.resolveArguments = function (maybeNode, maybeAppearing) {
3375
- return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`
3376
- : [maybeNode, maybeAppearing];
3377
- };
3378
-
3379
- _this.getClassNames = function (type) {
3380
- var classNames = _this.props.classNames;
3381
- var isStringClassNames = typeof classNames === 'string';
3382
- var prefix = isStringClassNames && classNames ? classNames + "-" : '';
3383
- var baseClassName = isStringClassNames ? "" + prefix + type : classNames[type];
3384
- var activeClassName = isStringClassNames ? baseClassName + "-active" : classNames[type + "Active"];
3385
- var doneClassName = isStringClassNames ? baseClassName + "-done" : classNames[type + "Done"];
3386
- return {
3387
- baseClassName: baseClassName,
3388
- activeClassName: activeClassName,
3389
- doneClassName: doneClassName
3390
- };
3391
- };
3392
-
3393
- return _this;
3394
- }
3395
-
3396
- var _proto = CSSTransition.prototype;
3397
-
3398
- _proto.addClass = function addClass(node, type, phase) {
3399
- var className = this.getClassNames(type)[phase + "ClassName"];
3400
-
3401
- var _this$getClassNames = this.getClassNames('enter'),
3402
- doneClassName = _this$getClassNames.doneClassName;
3403
-
3404
- if (type === 'appear' && phase === 'done' && doneClassName) {
3405
- className += " " + doneClassName;
3406
- } // This is to force a repaint,
3407
- // which is necessary in order to transition styles when adding a class name.
3408
-
3409
-
3410
- if (phase === 'active') {
3411
- if (node) forceReflow(node);
2110
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2111
+ className: "neeto-filters-pane-filter__item-wrapper"
2112
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
2113
+ label: label,
2114
+ defaultValue: SINGLE_TIME_OPTIONS[0],
2115
+ options: SINGLE_TIME_OPTIONS,
2116
+ strategy: "fixed",
2117
+ value: selectedRule
2118
+ }, neetoCist.isNotEmpty(helpIconProps) && {
2119
+ labelProps: {
2120
+ helpIconProps: buildHelpIconProps(helpIconProps)
3412
2121
  }
2122
+ }, {
2123
+ onChange: handleRuleChange
2124
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.TimePicker, _extends({
2125
+ autoFocus: autoFocus,
2126
+ value: value,
2127
+ use12Hours: true,
2128
+ className: "w-full",
2129
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
2130
+ format: "h:mm A",
2131
+ getPopupContainer: ramda.prop("parentNode"),
2132
+ type: timePickerType,
2133
+ onChange: handleChange
2134
+ }, otherProps)));
2135
+ };
3413
2136
 
3414
- if (className) {
3415
- this.appliedClasses[type][phase] = className;
3416
-
3417
- _addClass(node, className);
3418
- }
2137
+ var Text = function Text(_ref) {
2138
+ var column = _ref.column,
2139
+ filter = _ref.filter,
2140
+ filters = _ref.filters,
2141
+ handleApplyFilter = _ref.handleApplyFilter,
2142
+ autoFocus = _ref.autoFocus,
2143
+ onClose = _ref.onClose;
2144
+ var key = column.key,
2145
+ _column$defaultType = column.defaultType,
2146
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2147
+ label = column.label,
2148
+ _column$showRuleSelec = column.showRuleSelector,
2149
+ showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
2150
+ _column$helpIconProps = column.helpIconProps,
2151
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2152
+ var otherProps = getOtherProps(column);
2153
+ var ruleOptions = buildRuleOptions({
2154
+ defaultType: defaultType
2155
+ });
2156
+ var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
2157
+ var _useState = React.useState(filter === null || filter === void 0 ? void 0 : filter.value),
2158
+ _useState2 = _slicedToArray(_useState, 2),
2159
+ inputValue = _useState2[0],
2160
+ setInputValue = _useState2[1];
2161
+ var _useState3 = React.useState(function () {
2162
+ return neetoCist.findBy({
2163
+ value: filter === null || filter === void 0 ? void 0 : filter.rule
2164
+ }, ruleOptions) || ruleOptions[0];
2165
+ }),
2166
+ _useState4 = _slicedToArray(_useState3, 2),
2167
+ selectedRule = _useState4[0],
2168
+ setSelectedRule = _useState4[1];
2169
+ var debouncedInputValue = reactUtils.useDebounce(inputValue);
2170
+ var _useTranslation = reactI18next.useTranslation(),
2171
+ t = _useTranslation.t;
2172
+ var handleUpdateAndApplyFilter = function handleUpdateAndApplyFilter() {
2173
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : debouncedInputValue;
2174
+ var rule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : selectedRule;
2175
+ if (ramda.equals(filter === null || filter === void 0 ? void 0 : filter.value, value) && ramda.equals(selectedRule, rule)) return;
2176
+ var updatedFilter = buildUpdatedFilter({
2177
+ column: column,
2178
+ defaultType: defaultType,
2179
+ option: {},
2180
+ rule: rule.value,
2181
+ value: value.trim()
2182
+ });
2183
+ handleApplyFilter(updatedFilter);
2184
+ };
2185
+ var handleKeydown = function handleKeydown(e) {
2186
+ if (!(e.key === "Enter")) return;
2187
+ handleUpdateAndApplyFilter(inputValue);
2188
+ onClose();
2189
+ };
2190
+ var handleRuleChange = function handleRuleChange(ruleOption) {
2191
+ setSelectedRule(ruleOption);
2192
+ if (!debouncedInputValue) return;
2193
+ handleUpdateAndApplyFilter(debouncedInputValue, ruleOption);
3419
2194
  };
3420
2195
 
3421
- _proto.removeClasses = function removeClasses(node, type) {
3422
- var _this$appliedClasses$ = this.appliedClasses[type],
3423
- baseClassName = _this$appliedClasses$.base,
3424
- activeClassName = _this$appliedClasses$.active,
3425
- doneClassName = _this$appliedClasses$.done;
3426
- this.appliedClasses[type] = {};
3427
-
3428
- if (baseClassName) {
3429
- removeClass(node, baseClassName);
2196
+ // Reset states when "Clear filters" button is clicked.
2197
+ React.useEffect(function () {
2198
+ (ramda.isEmpty(filters) || ramda.isNil(filter)) && setInputValue("");
2199
+ }, [filter]);
2200
+ React.useEffect(function () {
2201
+ if (!debouncedInputValue) {
2202
+ !isUndefinedOrEmpty(filter) && handleApplyFilter({
2203
+ _delete: true
2204
+ });
2205
+ return;
3430
2206
  }
3431
-
3432
- if (activeClassName) {
3433
- removeClass(node, activeClassName);
2207
+ handleUpdateAndApplyFilter();
2208
+ }, [debouncedInputValue]);
2209
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2210
+ className: "neeto-filters-pane-filter__item-wrapper"
2211
+ }, showRuleSelector && /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
2212
+ label: label,
2213
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter-rule"),
2214
+ defaultValue: ruleOptions[0],
2215
+ options: ruleOptions,
2216
+ strategy: "fixed",
2217
+ value: selectedRule,
2218
+ onChange: handleRuleChange
2219
+ }, neetoCist.isNotEmpty(helpIconProps) && {
2220
+ labelProps: {
2221
+ helpIconProps: buildHelpIconProps(helpIconProps)
2222
+ }
2223
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.Input, _extends({
2224
+ autoFocus: autoFocus,
2225
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
2226
+ label: !showRuleSelector && label,
2227
+ type: inputType,
2228
+ value: inputValue
2229
+ }, neetoCist.isNotEmpty(helpIconProps) && {
2230
+ labelProps: {
2231
+ helpIconProps: buildHelpIconProps(helpIconProps)
3434
2232
  }
2233
+ }, {
2234
+ placeholder: t("neetoFilters.messages.enterResource", {
2235
+ resource: label
2236
+ }),
2237
+ onChange: function onChange(event) {
2238
+ return setInputValue(event.target.value);
2239
+ },
2240
+ onKeyDown: handleKeydown
2241
+ }, otherProps)));
2242
+ };
3435
2243
 
3436
- if (doneClassName) {
3437
- removeClass(node, doneClassName);
2244
+ var Time = function Time(_ref) {
2245
+ var column = _ref.column,
2246
+ filter = _ref.filter,
2247
+ handleApplyFilter = _ref.handleApplyFilter,
2248
+ autoFocus = _ref.autoFocus;
2249
+ var key = column.key,
2250
+ _column$defaultType = column.defaultType,
2251
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
2252
+ label = column.label,
2253
+ _column$helpIconProps = column.helpIconProps,
2254
+ helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps;
2255
+ var otherProps = getOtherProps(column);
2256
+ var value = buildSingleTimeValue(filter);
2257
+ var isCustomTimeRangeShown = filter && isCustomTimeRange(filter.value);
2258
+ var _useTranslation = reactI18next.useTranslation(),
2259
+ t = _useTranslation.t;
2260
+ var handleChange = function handleChange(option) {
2261
+ if (ramda.isEmpty(option) || ramda.isNil(option)) {
2262
+ handleApplyFilter({
2263
+ _delete: true
2264
+ });
2265
+ return;
3438
2266
  }
2267
+ var updatedFilter = buildUpdatedFilter({
2268
+ column: column,
2269
+ defaultType: defaultType,
2270
+ option: option
2271
+ });
2272
+ handleApplyFilter(updatedFilter);
3439
2273
  };
3440
-
3441
- _proto.render = function render() {
3442
- var _this$props = this.props;
3443
- _this$props.classNames;
3444
- var props = _objectWithoutPropertiesLoose(_this$props, ["classNames"]);
3445
-
3446
- return /*#__PURE__*/React__default["default"].createElement(Transition$1, _extends({}, props, {
3447
- onEnter: this.onEnter,
3448
- onEntered: this.onEntered,
3449
- onEntering: this.onEntering,
3450
- onExit: this.onExit,
3451
- onExiting: this.onExiting,
3452
- onExited: this.onExited
3453
- }));
2274
+ var handleTimeRangeChange = function handleTimeRangeChange(times) {
2275
+ var updatedFilter = buildUpdatedFilter({
2276
+ column: column,
2277
+ defaultType: defaultType,
2278
+ option: {
2279
+ value: ramda.pluck("$d", times).map(function (time) {
2280
+ return time.toISOString();
2281
+ })
2282
+ }
2283
+ });
2284
+ handleApplyFilter(updatedFilter);
3454
2285
  };
3455
-
3456
- return CSSTransition;
3457
- }(React__default["default"].Component);
3458
-
3459
- CSSTransition.defaultProps = {
3460
- classNames: ''
3461
- };
3462
- CSSTransition.propTypes = {};
3463
- var CSSTransition$1 = CSSTransition;
3464
-
3465
- var Body = function Body(_ref) {
3466
- var children = _ref.children,
3467
- _ref$className = _ref.className,
3468
- className = _ref$className === void 0 ? "" : _ref$className,
3469
- _ref$hasFooter = _ref.hasFooter,
3470
- hasFooter = _ref$hasFooter === void 0 ? true : _ref$hasFooter;
3471
- return /*#__PURE__*/React__default["default"].createElement("div", {
3472
- className: classnames__default["default"]("neeto-filters-slider__body neeto-ui-flex neeto-ui-flex-col neeto-ui-items-start neeto-ui-justify-start", _defineProperty({
3473
- "neeto-filters-slider__body--has-footer": hasFooter
3474
- }, className, className))
3475
- }, children);
3476
- };
3477
-
3478
- var SIZES = {
3479
- xsmall: "xsmall",
3480
- small: "small",
3481
- large: "large"
3482
- };
3483
-
3484
- var Footer = function Footer(_ref) {
3485
- var children = _ref.children,
3486
- _ref$className = _ref.className,
3487
- className = _ref$className === void 0 ? "" : _ref$className;
3488
2286
  return /*#__PURE__*/React__default["default"].createElement("div", {
3489
- className: classnames__default["default"]("neeto-filters-slider__footer neeto-ui-shadow-m neeto-ui-flex neeto-ui-items-center", className)
3490
- }, children);
3491
- };
3492
-
3493
- var Header = function Header(_ref) {
3494
- var _ref$children = _ref.children,
3495
- children = _ref$children === void 0 ? "" : _ref$children,
3496
- className = _ref.className;
3497
- return /*#__PURE__*/React__default["default"].createElement("div", {
3498
- className: classnames__default["default"]("neeto-filters-slider__header", className)
3499
- }, children);
3500
- };
3501
-
3502
- var _excluded$1 = ["size", "isOpen", "onClose", "className", "children"];
3503
- var Slider = function Slider(_ref) {
3504
- var _ref$size = _ref.size,
3505
- size = _ref$size === void 0 ? SIZES.xsmall : _ref$size,
3506
- isOpen = _ref.isOpen,
3507
- onClose = _ref.onClose,
3508
- _ref$className = _ref.className,
3509
- className = _ref$className === void 0 ? "" : _ref$className,
3510
- children = _ref.children,
3511
- otherProps = _objectWithoutProperties(_ref, _excluded$1);
3512
- useHotkeys__default["default"](SHORTCUTS.closePane.sequence, onClose, {
3513
- mode: "global"
3514
- });
3515
- return /*#__PURE__*/React__default["default"].createElement(Portal, {
3516
- rootId: "neeto-filters-portal"
3517
- }, /*#__PURE__*/React__default["default"].createElement(CSSTransition$1, {
3518
- unmountOnExit: true,
3519
- appear: isOpen,
3520
- classNames: "neeto-filters-slider",
3521
- "in": isOpen,
3522
- timeout: 300
3523
- }, /*#__PURE__*/React__default["default"].createElement("div", {
3524
- className: "neeto-filters-slider__pane"
3525
- }, /*#__PURE__*/React__default["default"].createElement("div", _extends$1({
3526
- className: classnames__default["default"]("neeto-filters-slider__wrapper", _defineProperty({
3527
- "neeto-filters-slider__wrapper--xsmall": size === SIZES.xsmall,
3528
- "neeto-filters-slider__wrapper--small": size === SIZES.small,
3529
- "neeto-filters-slider__wrapper--large": size === SIZES.large
3530
- }, className, className))
3531
- }, otherProps), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3532
- "aria-label": "Close",
3533
- className: "neeto-filters-slider__close",
3534
- "data-cy": "neeto-filters-close-button",
3535
- "data-testid": "close-button",
3536
- icon: neetoIcons.Close,
3537
- size: "small",
3538
- style: "text",
3539
- onClick: onClose
3540
- }), children))));
2287
+ className: "neeto-filters-pane-filter__item-wrapper"
2288
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
2289
+ autoFocus: autoFocus,
2290
+ label: label,
2291
+ value: value,
2292
+ isClearable: true,
2293
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
2294
+ options: TIME_OPTIONS,
2295
+ strategy: "fixed",
2296
+ placeholder: t("neetoFilters.messages.selectResource", {
2297
+ resource: label
2298
+ })
2299
+ }, neetoCist.isNotEmpty(helpIconProps) && {
2300
+ labelProps: {
2301
+ helpIconProps: buildHelpIconProps(helpIconProps)
2302
+ }
2303
+ }, {
2304
+ onChange: handleChange
2305
+ })), isCustomTimeRangeShown && /*#__PURE__*/React__default["default"].createElement(neetoui.TimePicker, _extends({
2306
+ use12Hours: true,
2307
+ "data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-date-range"),
2308
+ format: "h:mm A",
2309
+ getPopupContainer: ramda.prop("parentNode"),
2310
+ type: "range",
2311
+ value: filter.value,
2312
+ onChange: handleTimeRangeChange
2313
+ }, otherProps)));
3541
2314
  };
3542
- Slider.Header = Header;
3543
- Slider.Body = Body;
3544
- Slider.Footer = Footer;
2315
+ var Time$1 = /*#__PURE__*/React__default["default"].memo(Time);
3545
2316
 
3546
- var useFilters = function useFilters(_ref) {
3547
- var onFiltersChange = _ref.onFiltersChange,
3548
- columns = _ref.columns,
3549
- keywordFilter = _ref.keywordFilter,
3550
- onSelectorsChange = _ref.onSelectorsChange;
3551
- var _useTransition = React.useTransition(),
3552
- _useTransition2 = _slicedToArray(_useTransition, 2);
3553
- _useTransition2[0];
3554
- var startTransition = _useTransition2[1];
3555
- var initialRender = React.useRef(true);
3556
- var prevFilters = React.useRef([]);
3557
- var location = reactRouterDom.useLocation();
3558
- var filters = buildFiltersFromSearchParams(columns, false);
3559
- var history = reactRouterDom.useHistory();
3560
- var defaultValuesOfColumns = JSON.stringify(ramda.pluck("defaultValue", columns));
3561
- var handlePrecenseOfDefaultFilters = function handlePrecenseOfDefaultFilters(defaultFilters) {
3562
- var params = buildUrlFromFilters({
3563
- columns: columns,
3564
- filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(defaultFilters), [keywordFilter]) : defaultFilters
2317
+ var Item = function Item(_ref) {
2318
+ var column = _ref.column,
2319
+ filters = _ref.filters,
2320
+ onChange = _ref.onChange,
2321
+ autoFocus = _ref.autoFocus,
2322
+ onClose = _ref.onClose;
2323
+ var key = column.key,
2324
+ _column$defaultType = column.defaultType,
2325
+ defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType;
2326
+ var filter = React.useMemo(function () {
2327
+ return neetoCist.findBy({
2328
+ key: key
2329
+ }, filters);
2330
+ }, [filters, key]);
2331
+ var handleApplyFilter = function handleApplyFilter(updatedFilter) {
2332
+ if (updatedFilter._delete) onChange(neetoCist.removeBy({
2333
+ key: key
2334
+ }, filters));else if (!filter) onChange(ramda.append(updatedFilter, filters));else onChange(neetoCist.replaceBy({
2335
+ key: key
2336
+ }, updatedFilter, filters));
2337
+ };
2338
+ if (isText(defaultType) || isDigit(defaultType)) {
2339
+ return /*#__PURE__*/React__default["default"].createElement(Text, {
2340
+ autoFocus: autoFocus,
2341
+ column: column,
2342
+ filter: filter,
2343
+ filters: filters,
2344
+ handleApplyFilter: handleApplyFilter,
2345
+ onClose: onClose
2346
+ });
2347
+ }
2348
+ if (isDate(defaultType)) {
2349
+ return /*#__PURE__*/React__default["default"].createElement(Datetime$1, {
2350
+ autoFocus: autoFocus,
2351
+ column: column,
2352
+ filter: filter,
2353
+ handleApplyFilter: handleApplyFilter
2354
+ });
2355
+ }
2356
+ if (isTime(defaultType)) {
2357
+ return /*#__PURE__*/React__default["default"].createElement(Time$1, {
2358
+ autoFocus: autoFocus,
2359
+ column: column,
2360
+ filter: filter,
2361
+ handleApplyFilter: handleApplyFilter
3565
2362
  });
3566
- history.replace({
3567
- search: params
2363
+ }
2364
+ if (isSingleDate(defaultType)) {
2365
+ return /*#__PURE__*/React__default["default"].createElement(SingleDatetime, {
2366
+ autoFocus: autoFocus,
2367
+ column: column,
2368
+ filter: filter,
2369
+ filters: filters,
2370
+ handleApplyFilter: handleApplyFilter
3568
2371
  });
3569
- };
3570
- var handleFiltersChange = function handleFiltersChange(filtersPayload) {
3571
- startTransition(function () {
3572
- onFiltersChange(buildFiltersPayload(filtersPayload.filter(function (filter) {
3573
- return !ramda.isNil(filter.node);
3574
- })));
2372
+ }
2373
+ if (isSingleTime(defaultType)) {
2374
+ return /*#__PURE__*/React__default["default"].createElement(SingleTime, {
2375
+ autoFocus: autoFocus,
2376
+ column: column,
2377
+ filter: filter,
2378
+ filters: filters,
2379
+ handleApplyFilter: handleApplyFilter
3575
2380
  });
3576
- };
3577
-
3578
- //This function sends the updated filters to host via callbacks.
3579
- var sendUpdatedFilters = function sendUpdatedFilters() {
3580
- if (compareFilters(ramda.append(keywordFilter, filters), prevFilters.current)) {
3581
- return;
3582
- }
3583
- var newFilters = buildFiltersFromSearchParams(columns);
3584
- var filtersPayload = isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? ramda.append(keywordFilter, newFilters) : newFilters;
3585
- handleFiltersChange(filtersPayload);
3586
- onSelectorsChange(buildSelectorsFromURL(columns));
3587
- };
3588
- var handleChangesInURL = function handleChangesInURL() {
3589
- var defaultFilters = buildDefaultFilters(columns, filters);
3590
- var searchParams = getSnakeCasedQueryParams();
3591
- var keys = ramda.pluck("key", ramda.append(keywordFilter, columns));
3592
- if (keys.every(function (key) {
3593
- return ramda.isNil(searchParams[key]);
3594
- }) && !ramda.isEmpty(defaultFilters)) {
3595
- history.replace({
3596
- search: buildUrlFromFilters({
3597
- columns: columns,
3598
- filters: ramda.concat(defaultFilters, filters)
3599
- })
3600
- });
3601
- filters = buildFiltersFromSearchParams(columns, false);
3602
- }
3603
- };
3604
- React.useEffect(function () {
3605
- if (initialRender.current) {
3606
- initialRender.current = false;
3607
- var keywordValue = getSearchTermFromUrl();
3608
- var defaultFilters = buildDefaultFilters(columns, filters);
3609
- neetoCist.isNotEmpty(defaultFilters) && handlePrecenseOfDefaultFilters(defaultFilters);
3610
- prevFilters.current = ramda.append(ramda.mergeRight(keywordFilter, {
3611
- value: keywordValue
3612
- }), filters);
3613
- } else {
3614
- handleChangesInURL();
3615
- sendUpdatedFilters();
3616
- prevFilters.current = ramda.append(keywordFilter, filters);
3617
- }
3618
- }, [location.search, defaultValuesOfColumns]);
3619
- return filters;
2381
+ }
2382
+ if (isBoolean(defaultType) || isCheckbox(defaultType)) {
2383
+ return /*#__PURE__*/React__default["default"].createElement(Boolean$1, {
2384
+ autoFocus: autoFocus,
2385
+ column: column,
2386
+ filter: filter,
2387
+ handleApplyFilter: handleApplyFilter
2388
+ });
2389
+ }
2390
+ return /*#__PURE__*/React__default["default"].createElement(Dropdown$1, {
2391
+ autoFocus: autoFocus,
2392
+ column: column,
2393
+ filter: filter,
2394
+ handleApplyFilter: handleApplyFilter
2395
+ });
3620
2396
  };
3621
2397
 
3622
- var _excluded = ["size", "isOpen", "onClose", "columns", "onChange", "isSearchable", "keyword", "onSelectorsChange", "childrenKeys", "children"];
2398
+ var _excluded = ["isOpen", "onClose", "columns", "onChange", "isSearchable", "keyword", "onSelectorsChange", "childrenKeys", "children", "className"];
3623
2399
  function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3624
2400
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3625
2401
  var Pane = function Pane(_ref) {
3626
- var size = _ref.size,
3627
- isOpen = _ref.isOpen,
2402
+ var isOpen = _ref.isOpen,
3628
2403
  onClose = _ref.onClose,
3629
2404
  columns = _ref.columns,
3630
2405
  onChange = _ref.onChange,
@@ -3634,6 +2409,7 @@ var Pane = function Pane(_ref) {
3634
2409
  _ref$childrenKeys = _ref.childrenKeys,
3635
2410
  childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
3636
2411
  children = _ref.children,
2412
+ className = _ref.className,
3637
2413
  otherProps = _objectWithoutProperties(_ref, _excluded);
3638
2414
  var searchParams = reactUtils.useQueryParams({
3639
2415
  toCamelCase: false
@@ -3710,19 +2486,17 @@ var Pane = function Pane(_ref) {
3710
2486
  }) && !childrenKeys.some(function (key) {
3711
2487
  return searchParams[key];
3712
2488
  });
3713
- return /*#__PURE__*/React__default["default"].createElement(Portal, {
3714
- rootId: "neeto-filters-portal"
3715
- }, /*#__PURE__*/React__default["default"].createElement(Slider, _extends$1({
2489
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, _extends({
3716
2490
  isOpen: isOpen,
3717
- size: size,
2491
+ backdropClassName: "neeto-filters-pane-backdrop",
2492
+ className: classnames__default["default"]("neeto-filters-pane-filter", _defineProperty({}, className, className)),
3718
2493
  onClose: handleClose
3719
- }, otherProps), /*#__PURE__*/React__default["default"].createElement(Slider.Header, {
3720
- className: "neeto-filters-pane-filter__header",
2494
+ }, otherProps), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, {
3721
2495
  "data-cy": "neeto-filters-pane-header"
3722
2496
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3723
2497
  style: "h2",
3724
2498
  weight: "semibold"
3725
- }, t("neetoFilters.common.filters"))), /*#__PURE__*/React__default["default"].createElement(Slider.Body, {
2499
+ }, t("neetoFilters.common.filters"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, {
3726
2500
  className: "neeto-filters-pane-filter__body neeto-ui-pt-2"
3727
2501
  }, isSearchable && /*#__PURE__*/React__default["default"].createElement(Search__default["default"], {
3728
2502
  "data-cy": "neeto-filters-column-search",
@@ -3769,9 +2543,7 @@ var Pane = function Pane(_ref) {
3769
2543
  style: "body2"
3770
2544
  }, t("neetoFilters.messages.noResourcesFound", {
3771
2545
  resources: t("neetoFilters.common.columns")
3772
- })), children), /*#__PURE__*/React__default["default"].createElement(Slider.Footer, {
3773
- className: "neeto-filters-pane-filter__footer"
3774
- }, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
2546
+ })), children), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, null, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3775
2547
  "data-cy": "neeto-filters-done-btn",
3776
2548
  label: t("neetoFilters.common.done"),
3777
2549
  onClick: handleClearTermAndClose
@@ -3781,19 +2553,18 @@ var Pane = function Pane(_ref) {
3781
2553
  label: t("neetoFilters.common.clearFilters"),
3782
2554
  style: "text",
3783
2555
  onClick: handleClearAll
3784
- })))));
2556
+ }))));
3785
2557
  };
3786
2558
 
3787
2559
  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}}
3788
2560
 
3789
- 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-slider__pane{border-radius:12px 0 0 12px;position:fixed;right:0;top:0;z-index:99998}.neeto-filters-slider__wrapper{background-color:rgb(var(--neeto-ui-white));box-shadow:var(--neeto-ui-shadow-m);height:100vh;max-width:100%;transform:translateX(100%);transition:all .3s}.neeto-filters-slider__wrapper--xsmall{width:360px}.neeto-filters-slider__wrapper--small{width:480px}.neeto-filters-slider__wrapper--large{width:50vw}@media screen and (max-width:767px){.neeto-filters-slider__wrapper{width:100vw}}.neeto-filters-slider__close{position:absolute!important;right:24px;top:24px}.neeto-filters-slider__header{padding:24px 60px 24px 24px;width:100%}.neeto-filters-slider__body{font-size:var(--neeto-ui-text-sm);height:calc(100vh - var(--neeto-ui-pane-header-height));overflow-y:auto;padding:0 24px;width:100%}.neeto-filters-slider__body.neeto-filters-slider__body--has-footer{height:calc(100vh - var(--neeto-ui-pane-header-height) - var(--neeto-ui-pane-footer-height))}.neeto-filters-slider__footer{background-color:rgb(var(--neeto-ui-white));min-height:var(--neeto-ui-pane-footer-height);padding:24px;width:100%}.neeto-filters-slider__footer.neeto-filters-slider__footer__absolute{bottom:0;left:0;position:absolute;width:100%}.neeto-filters-slider-enter .neeto-filters-slider__wrapper{transform:translateX(100%)}.neeto-filters-slider-enter-active .neeto-filters-slider__wrapper,.neeto-filters-slider-enter-done .neeto-filters-slider__wrapper{transform:translateX(0)}.neeto-filters-slider-exit .neeto-filters-slider__wrapper,.neeto-filters-slider-exit-active .neeto-filters-slider__wrapper{transform:translateX(100%)}.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))}.neeto-filters-pane-filter__footer{justify-content:space-between}.neeto-filters-pane-filter__footer div{display:flex;gap:8px}.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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19iYXIuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9pbmRleC5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3NsaWRlci5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2Fic3RyYWN0cy9fbWl4aW5zLnNjc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fZmlsdGVycy5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3NlZ21lbnRzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBR0Usa0JBQUEsQ0FGQSxZQUFBLENBQ0EsY0NFRixDRENFLDBCQUtFLHFDQUFBLENBSEEsWUFBQSxDQUVBLE9BQUEsQ0FHQSxZQUFBLENBQ0EsZUFBQSxDQUVBLGVBQUEsQ0FUQSxlQUFBLENBRUEsaUJBQUEsQ0FHQSxxQ0FBQSxDQUdBLGtCQ0VKLENEQ0ksd0NBQ0UsbUNDQ04sQ0RFSSxnQ0FRRSxnSEFBQSxDQUZBLG1DQUFBLENBREEsU0FBQSxDQURBLFdBQUEsQ0FIQSxpQkFBQSxDQUVBLE9BQUEsQ0FEQSxLQUFBLENBS0EscUNDQ04sQ0RPSSxpRUFFRSw4Q0FBQSxDQUNBLGNDTk4sQ0RRTSxpSUFHRSxxQ0FBQSxDQURBLGdDQUFBLENBREEsU0NKUixDRFVJLGdDQUVFLHVEQUFBLENBREEsWUNQTixDRFlFLDhCQUdFLGtCQUFBLENBRkEsbURBQUEsQ0FDQSxlQ1RKLENDOUNFLDRCQUlFLDJCQUFBLENBSEEsY0FBQSxDQUVBLE9BQUEsQ0FEQSxLQUFBLENBR0EsYURpREosQ0MvQ0UsK0JBR0UsMkNBQUEsQ0FDQSxtQ0FBQSxDQUZBLFlBQUEsQ0FEQSxjQUFBLENBS0EsMEJBQUEsQ0FDQSxrQkRnREosQ0M5Q0ksdUNBQ0UsV0RnRE4sQ0M3Q0ksc0NBQ0UsV0QrQ04sQ0M1Q0ksc0NBQ0UsVUQ4Q04sQ0UxREksb0NETkYsK0JBc0JJLFdEOENKLENBQ0YsQ0M1Q0UsNkJBQ0UsMkJBQUEsQ0FFQSxVQUFBLENBREEsUUQrQ0osQ0MzQ0UsOEJBR0UsMkJBQUEsQ0FGQSxVRCtDSixDQzFDRSw0QkFJRSxpQ0FBQSxDQUZBLHVEQUFBLENBR0EsZUFBQSxDQUZBLGNBQUEsQ0FGQSxVRGdESixDQzFDSSxtRUFDRSw0RkQ0Q04sQ0NyQ0UsOEJBR0UsMkNBQUEsQ0FDQSw2Q0FBQSxDQUZBLFlBQUEsQ0FEQSxVRDBDSixDQ3JDSSxxRUFJRSxRQUFBLENBREEsTUFBQSxDQURBLGlCQUFBLENBREEsVUQwQ04sQ0MvQkUsMkRBQ0UsMEJEa0NKLENDN0JFLGtJQUNFLHVCRGlDSixDQ3hCRSwySEFDRSwwQkQrQkosQ0c3SEUsaUNBQ0UsNkJBQUEsQ0FDQSxRSGdJSixDRzlISSxtQ0FDRSxxQkhnSU4sQ0c3SEksbUNBQ0UsaUJIK0hOLENHNUhJLDBFQUNFLFlBQUEsQ0FHQSxNQUFBLENBRkEscUJBQUEsQ0FDQSxPSCtITixDRzFITSwwRkFFRSxNQUFBLENBREEsZUg2SFIsQ0cxSFEsd0dBQ0UsWUg0SFYsQ0d4SFEseUZBQ0UsYUgwSFYsQ0d0SEkseUVBQ0Usc0RId0hOLENHcEhFLG1DQUNFLDZCSHNISixDR3BISSx1Q0FDRSxZQUFBLENBQ0EsT0hzSE4sQ0luS0EsK0JBQ0UsdURBQUEsQ0FDQSwrREpzS0YiLCJzb3VyY2VzQ29udGVudCI6WyIubmVldG8tZmlsdGVycy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgJl9fYmxvY2sge1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ2FwOiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmVldG8tdWktcm91bmRlZCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgbWFyZ2luOiA0cHggMDtcbiAgICBtYXgtd2lkdGg6IDM4NHB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIHA6Zmlyc3QtY2hpbGQge1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTcwMCkpO1xuICAgIH1cblxuICAgICYtY2xvc2Uge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICAgICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIDkwZGVnLFxuICAgICAgICByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSxcbiAgICAgICAgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrLWNsb3NlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ibGFjaykpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZWV0by11aS1yb3VuZGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTgwMCksIDE1JSk7XG4gICAgfVxuICB9XG5cbiAgJi0tc2VwYXJhdG9yIHtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTQwMCkpO1xuICAgIG1hcmdpbjogMTJweCA4cHg7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxufVxuIiwiLm5lZXRvLWZpbHRlcnMtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jayB7XG4gIHBhZGRpbmc6IDRweCA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiA0cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgbWFyZ2luOiA0cHggMDtcbiAgbWF4LXdpZHRoOiAzODRweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2sgcDpmaXJzdC1jaGlsZCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6IDhweDtcbiAgb3BhY2l0eTogMDtcbiAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSwgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JSk7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyLCAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2UsIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2s6YWN0aXZlIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBvcGFjaXR5OiAxO1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWJsYWNrKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jazpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSwgMTUlKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhci0tc2VwYXJhdG9yIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS00MDApKTtcbiAgbWFyZ2luOiAxMnB4IDhweDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbn1cblxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyX19wYW5lIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3JkZXItcmFkaXVzOiAxMnB4IDBweCAwcHggMTJweDtcbiAgei1pbmRleDogOTk5OTg7XG59XG4ubmVldG8tZmlsdGVycy1zbGlkZXJfX3dyYXBwZXIge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS13aGl0ZSkpO1xuICBib3gtc2hhZG93OiB2YXIoLS1uZWV0by11aS1zaGFkb3ctbSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG4ubmVldG8tZmlsdGVycy1zbGlkZXJfX3dyYXBwZXItLXhzbWFsbCB7XG4gIHdpZHRoOiAzNjBweDtcbn1cbi5uZWV0by1maWx0ZXJzLXNsaWRlcl9fd3JhcHBlci0tc21hbGwge1xuICB3aWR0aDogNDgwcHg7XG59XG4ubmVldG8tZmlsdGVycy1zbGlkZXJfX3dyYXBwZXItLWxhcmdlIHtcbiAgd2lkdGg6IDUwdnc7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubmVldG8tZmlsdGVycy1zbGlkZXJfX3dyYXBwZXIge1xuICAgIHdpZHRoOiAxMDB2dztcbiAgfVxufVxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyX19jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB0b3A6IDI0cHg7XG4gIHJpZ2h0OiAyNHB4O1xufVxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyX19oZWFkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMjRweDtcbiAgcGFkZGluZy1yaWdodDogNjBweDtcbn1cbi5uZWV0by1maWx0ZXJzLXNsaWRlcl9fYm9keSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1uZWV0by11aS1wYW5lLWhlYWRlci1oZWlnaHQpKTtcbiAgcGFkZGluZzogMCAyNHB4O1xuICBmb250LXNpemU6IHZhcigtLW5lZXRvLXVpLXRleHQtc20pO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyX19ib2R5Lm5lZXRvLWZpbHRlcnMtc2xpZGVyX19ib2R5LS1oYXMtZm9vdGVyIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tbmVldG8tdWktcGFuZS1oZWFkZXItaGVpZ2h0KSAtIHZhcigtLW5lZXRvLXVpLXBhbmUtZm9vdGVyLWhlaWdodCkpO1xufVxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyX19mb290ZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMjRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLXdoaXRlKSk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLW5lZXRvLXVpLXBhbmUtZm9vdGVyLWhlaWdodCk7XG59XG4ubmVldG8tZmlsdGVycy1zbGlkZXJfX2Zvb3Rlci5uZWV0by1maWx0ZXJzLXNsaWRlcl9fZm9vdGVyX19hYnNvbHV0ZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbn1cblxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyLWVudGVyIC5uZWV0by1maWx0ZXJzLXNsaWRlcl9fd3JhcHBlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyLWVudGVyLWFjdGl2ZSAubmVldG8tZmlsdGVycy1zbGlkZXJfX3dyYXBwZXIsXG4ubmVldG8tZmlsdGVycy1zbGlkZXItZW50ZXItZG9uZSAubmVldG8tZmlsdGVycy1zbGlkZXJfX3dyYXBwZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi5uZWV0by1maWx0ZXJzLXNsaWRlci1leGl0IC5uZWV0by1maWx0ZXJzLXNsaWRlcl9fd3JhcHBlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyLWV4aXQtYWN0aXZlIC5uZWV0by1maWx0ZXJzLXNsaWRlcl9fd3JhcHBlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkge1xuICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICBnYXA6IDIwcHg7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSA+ICoge1xuICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IHAge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiA4cHg7XG4gIGZsZXg6IDE7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSAuYWNjb3JkaW9uX2l0ZW0gLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlciB7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIGZsZXg6IDE7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSAuYWNjb3JkaW9uX2l0ZW0gLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlcjpmaXJzdC1vZi10eXBlIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbTpmaXJzdC1vZi10eXBlIC5uZWV0by11aS1hY2NvcmRpb25fX2l0ZW0ge1xuICBwYWRkaW5nLXRvcDogMDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5uZWV0by11aS1hY2NvcmRpb25fX3dyYXBwZXItLWxhc3QtaXRlbSB7XG4gIGJvcmRlci1ib3R0b206IHRoaW4gc29saWQgcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMzAwKSk7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fZm9vdGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2Zvb3RlciBkaXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDhweDtcbn1cblxuLm5lZXRvLWZpbHRlcnMtc2VnbWVudC0tYWN0aXZlIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktcHJpbWFyeS01MDApKSAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiKHZhcigtLW5lZXRvLXVpLXByaW1hcnktNTAwKSkgIWltcG9ydGFudDtcbn0iLCIubmVldG8tZmlsdGVycy1zbGlkZXIge1xuICAmX19wYW5lIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHggMHB4IDBweCAxMnB4O1xuICAgIHotaW5kZXg6IDk5OTk4O1xuICB9XG4gICZfX3dyYXBwZXIge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS13aGl0ZSkpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLW5lZXRvLXVpLXNoYWRvdy1tKTtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcblxuICAgICYtLXhzbWFsbCB7XG4gICAgICB3aWR0aDogMzYwcHg7XG4gICAgfVxuXG4gICAgJi0tc21hbGwge1xuICAgICAgd2lkdGg6IDQ4MHB4O1xuICAgIH1cblxuICAgICYtLWxhcmdlIHtcbiAgICAgIHdpZHRoOiA1MHZ3O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIHZpZXdwb3J0KG1vYikge1xuICAgICAgd2lkdGg6IDEwMHZ3O1xuICAgIH1cbiAgfVxuICAmX19jbG9zZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gICAgdG9wOiAyNHB4O1xuICAgIHJpZ2h0OiAyNHB4O1xuICB9XG5cbiAgJl9faGVhZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyNHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7XG4gIH1cblxuICAmX19ib2R5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1uZWV0by11aS1wYW5lLWhlYWRlci1oZWlnaHQpKTtcbiAgICBwYWRkaW5nOiAwIDI0cHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1uZWV0by11aS10ZXh0LXNtKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgJi5uZWV0by1maWx0ZXJzLXNsaWRlcl9fYm9keS0taGFzLWZvb3RlciB7XG4gICAgICBoZWlnaHQ6IGNhbGMoXG4gICAgICAgIDEwMHZoIC0gdmFyKC0tbmVldG8tdWktcGFuZS1oZWFkZXItaGVpZ2h0KSAtXG4gICAgICAgICAgdmFyKC0tbmVldG8tdWktcGFuZS1mb290ZXItaGVpZ2h0KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAmX19mb290ZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLXdoaXRlKSk7XG4gICAgbWluLWhlaWdodDogdmFyKC0tbmVldG8tdWktcGFuZS1mb290ZXItaGVpZ2h0KTtcblxuICAgICYubmVldG8tZmlsdGVycy1zbGlkZXJfX2Zvb3Rlcl9fYWJzb2x1dGUge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBDU1MgdHJhbnNpdGlvbiBncm91cFxuXG4ubmVldG8tZmlsdGVycy1zbGlkZXItZW50ZXIge1xuICAubmVldG8tZmlsdGVycy1zbGlkZXJfX3dyYXBwZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxufVxuLm5lZXRvLWZpbHRlcnMtc2xpZGVyLWVudGVyLWFjdGl2ZSxcbi5uZWV0by1maWx0ZXJzLXNsaWRlci1lbnRlci1kb25lIHtcbiAgLm5lZXRvLWZpbHRlcnMtc2xpZGVyX193cmFwcGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cbn1cbi5uZWV0by1maWx0ZXJzLXNsaWRlci1leGl0IHtcbiAgLm5lZXRvLWZpbHRlcnMtc2xpZGVyX193cmFwcGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cbn1cbi5uZWV0by1maWx0ZXJzLXNsaWRlci1leGl0LWFjdGl2ZSB7XG4gIC5uZWV0by1maWx0ZXJzLXNsaWRlcl9fd3JhcHBlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG59XG4iLCJAbWl4aW4gdmlld3BvcnQoJG1lZGlhKSB7XG4gIEBpZiAkbWVkaWE9PWRlc2sge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtZWRpYT09dGFiLW1pbiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT10YWItb25seSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWVkaWE9PW1vYiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWVkaWE9PXhzLW1vYiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDc5cHgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXIge1xuICAmX19ib2R5IHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICAgIGdhcDogMjBweDtcblxuICAgID4gKiB7XG4gICAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5hY2NvcmRpb25faXRlbSB7XG4gICAgICAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgZmxleDogMTtcblxuICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIC5uZWV0by11aS1hY2NvcmRpb25fX2l0ZW0ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5uZWV0by11aS1hY2NvcmRpb25fX3dyYXBwZXItLWxhc3QtaXRlbSB7XG4gICAgICBib3JkZXItYm90dG9tOiB0aGluIHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTMwMCkpO1xuICAgIH1cbiAgfVxuXG4gICZfX2Zvb3RlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgZGl2IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6IDhweDtcbiAgICB9XG4gIH1cbn1cbiIsIi5uZWV0by1maWx0ZXJzLXNlZ21lbnQtLWFjdGl2ZSB7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLXByaW1hcnktNTAwKSkgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYih2YXIoLS1uZWV0by11aS1wcmltYXJ5LTUwMCkpICFpbXBvcnRhbnQ7XG59XG4iXX0= */";
2561
+ 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{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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19iYXIuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9pbmRleC5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2ZpbHRlcnMuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9hYnN0cmFjdHMvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUdFLGtCQUFBLENBRkEsWUFBQSxDQUNBLGNDRUYsQ0RDRSwwQkFLRSxxQ0FBQSxDQUhBLFlBQUEsQ0FFQSxPQUFBLENBR0EsWUFBQSxDQUNBLGVBQUEsQ0FFQSxlQUFBLENBVEEsZUFBQSxDQUVBLGlCQUFBLENBR0EscUNBQUEsQ0FHQSxrQkNFSixDRENJLHdDQUNFLG1DQ0NOLENERUksZ0NBUUUsZ0hBQUEsQ0FGQSxtQ0FBQSxDQURBLFNBQUEsQ0FEQSxXQUFBLENBSEEsaUJBQUEsQ0FFQSxPQUFBLENBREEsS0FBQSxDQUtBLHFDQ0NOLENET0ksaUVBRUUsOENBQUEsQ0FDQSxjQ05OLENEUU0saUlBR0UscUNBQUEsQ0FEQSxnQ0FBQSxDQURBLFNDSlIsQ0RVSSxnQ0FFRSx1REFBQSxDQURBLFlDUE4sQ0RZRSw4QkFHRSxrQkFBQSxDQUZBLG1EQUFBLENBQ0EsZUNUSixDQy9DQSwyQkFDRSxXRGtERixDQ2hERSxpQ0FDRSw2QkFBQSxDQUNBLFFEa0RKLENDaERJLG1DQUNFLHFCRGtETixDQy9DSSxtQ0FDRSxpQkRpRE4sQ0M5Q0ksMEVBQ0UsWUFBQSxDQUNBLHFCQUFBLENBQ0EsT0RnRE4sQ0M1Q00sMEZBQ0UsZUQ4Q1IsQ0M1Q1Esd0dBQ0UsWUQ4Q1YsQ0MxQ1EseUZBQ0UsYUQ0Q1YsQ0N4Q0kseUVBQ0Usc0REMENOLENFaEVJLG9DRGRKLDJCQXlDSSxXRHlDRixDQUNGLENDdENBLDZCQUNFLHlDQUFBLENBQUEsaUNBQUEsQ0FDQSxrRER5Q0YiLCJzb3VyY2VzQ29udGVudCI6WyIubmVldG8tZmlsdGVycy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgJl9fYmxvY2sge1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ2FwOiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmVldG8tdWktcm91bmRlZCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgbWFyZ2luOiA0cHggMDtcbiAgICBtYXgtd2lkdGg6IDM4NHB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIHA6Zmlyc3QtY2hpbGQge1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTcwMCkpO1xuICAgIH1cblxuICAgICYtY2xvc2Uge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICAgICAgdHJhbnNpdGlvbjogdmFyKC0tbmVldG8tdWktdHJhbnNpdGlvbik7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIDkwZGVnLFxuICAgICAgICByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSxcbiAgICAgICAgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrLWNsb3NlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ibGFjaykpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZWV0by11aS1yb3VuZGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTgwMCksIDE1JSk7XG4gICAgfVxuICB9XG5cbiAgJi0tc2VwYXJhdG9yIHtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTQwMCkpO1xuICAgIG1hcmdpbjogMTJweCA4cHg7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxufVxuIiwiLm5lZXRvLWZpbHRlcnMtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jayB7XG4gIHBhZGRpbmc6IDRweCA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiA0cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgbWFyZ2luOiA0cHggMDtcbiAgbWF4LXdpZHRoOiAzODRweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2sgcDpmaXJzdC1jaGlsZCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS03MDApKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6IDhweDtcbiAgb3BhY2l0eTogMDtcbiAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1uZWV0by11aS10cmFuc2l0aW9uKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktMjAwKSwgMC41KSAwJSwgcmdiYSh2YXIoLS1uZWV0by11aS1ncmF5LTIwMCksIDEpIDI1JSk7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyLCAubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTIwMCkpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmVldG8tZmlsdGVycy1iYXJfX2Jsb2NrOmhvdmVyIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2UsIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2s6YWN0aXZlIC5uZWV0by1maWx0ZXJzLWJhcl9fYmxvY2stY2xvc2Uge1xuICBvcGFjaXR5OiAxO1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWJsYWNrKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQpO1xufVxuLm5lZXRvLWZpbHRlcnMtYmFyX19ibG9jazpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSwgMTUlKTtcbn1cbi5uZWV0by1maWx0ZXJzLWJhci0tc2VwYXJhdG9yIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS00MDApKTtcbiAgbWFyZ2luOiAxMnB4IDhweDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXIge1xuICB3aWR0aDogMzYwcHg7XG59XG4ubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9fYm9keSB7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIGdhcDogMjBweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5ID4gKiB7XG4gIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50O1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgcCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19pdGVtLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDhweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogMTZweDtcbn1cbi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19ib2R5IC5hY2NvcmRpb25faXRlbSAubmVldG8tZmlsdGVycy1wYW5lLWZpbHRlcl9faXRlbS13cmFwcGVyOmZpcnN0LW9mLXR5cGUge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgLmFjY29yZGlvbl9pdGVtOmZpcnN0LW9mLXR5cGUgLm5lZXRvLXVpLWFjY29yZGlvbl9faXRlbSB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2JvZHkgLm5lZXRvLXVpLWFjY29yZGlvbl9fd3JhcHBlci0tbGFzdC1pdGVtIHtcbiAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gIH1cbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1iYWNrZHJvcCB7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS03MDApLCAwLjIpO1xufSIsIi5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyIHtcbiAgd2lkdGg6IDM2MHB4O1xuXG4gICZfX2JvZHkge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiAyMHB4O1xuXG4gICAgPiAqIHtcbiAgICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5uZWV0by1maWx0ZXJzLXBhbmUtZmlsdGVyX19pdGVtLXdyYXBwZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAuYWNjb3JkaW9uX2l0ZW0ge1xuICAgICAgLm5lZXRvLWZpbHRlcnMtcGFuZS1maWx0ZXJfX2l0ZW0td3JhcHBlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG5cbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAubmVldG8tdWktYWNjb3JkaW9uX19pdGVtIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAubmVldG8tdWktYWNjb3JkaW9uX193cmFwcGVyLS1sYXN0LWl0ZW0ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogdGhpbiBzb2xpZCByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0zMDApKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSB2aWV3cG9ydChtb2IpIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gIH1cbn1cblxuLm5lZXRvLWZpbHRlcnMtcGFuZS1iYWNrZHJvcCB7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbmVldG8tdWktZ3JheS03MDApLCAwLjIpO1xufVxuIiwiQG1peGluIHZpZXdwb3J0KCRtZWRpYSkge1xuICBAaWYgJG1lZGlhPT1kZXNrIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWVkaWE9PXRhYi1taW4ge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtZWRpYT09dGFiLW9ubHkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT1tb2Ige1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1lZGlhPT14cy1tb2Ige1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ3OXB4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ== */";
3790
2562
  n(css,{});
3791
2563
 
3792
2564
  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; }
3793
2565
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3794
2566
  var Filters = reactUtils.withT(function (_ref) {
3795
2567
  var t = _ref.t,
3796
- size = _ref.size,
3797
2568
  _ref$isOpen = _ref.isOpen,
3798
2569
  isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
3799
2570
  _ref$setIsOpen = _ref.setIsOpen,
@@ -3821,14 +2592,14 @@ var Filters = reactUtils.withT(function (_ref) {
3821
2592
  children = _ref.children;
3822
2593
  return /*#__PURE__*/React__default["default"].createElement("span", {
3823
2594
  className: classnames__default["default"](_defineProperty({}, className, className))
3824
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends$1({
2595
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends({
3825
2596
  "data-cy": "neeto-filters-toggle-btn",
3826
2597
  label: t("neetoFilters.common.filter"),
3827
2598
  style: "secondary",
3828
2599
  onClick: function onClick() {
3829
2600
  return setIsOpen(true);
3830
2601
  }
3831
- }, buttonProps)), /*#__PURE__*/React__default["default"].createElement(Pane, _extends$1({
2602
+ }, buttonProps)), /*#__PURE__*/React__default["default"].createElement(Pane, _extends({
3832
2603
  onClose: function onClose() {
3833
2604
  return setIsOpen(false);
3834
2605
  }
@@ -3839,24 +2610,15 @@ var Filters = reactUtils.withT(function (_ref) {
3839
2610
  isSearchable: isSearchable,
3840
2611
  keyword: keyword,
3841
2612
  onChange: onChange,
3842
- onSelectorsChange: onSelectorsChange,
3843
- size: size
2613
+ onSelectorsChange: onSelectorsChange
3844
2614
  }, paneProps)), children));
3845
2615
  });
3846
2616
 
3847
- var ITEMS_MAX_COUNT = 20;
3848
- var SEGMENT_ACTIONS = {
3849
- EDIT: "edit",
3850
- DELETE: "delete"
3851
- };
3852
-
3853
- var Delete = function Delete(_ref) {
2617
+ var DeleteAlert = function DeleteAlert(_ref) {
3854
2618
  var isOpen = _ref.isOpen,
3855
2619
  onClose = _ref.onClose,
3856
- _ref$segment = _ref.segment,
3857
- segment = _ref$segment === void 0 ? {} : _ref$segment,
3858
- _ref$columns = _ref.columns,
3859
- columns = _ref$columns === void 0 ? [] : _ref$columns;
2620
+ segment = _ref.segment,
2621
+ columns = _ref.columns;
3860
2622
  var _useTranslation = reactI18next.useTranslation(),
3861
2623
  t = _useTranslation.t;
3862
2624
  var history = reactRouterDom.useHistory();
@@ -3897,30 +2659,162 @@ var Delete = function Delete(_ref) {
3897
2659
  });
3898
2660
  };
3899
2661
 
3900
- var useSegments = function useSegments(_ref) {
3901
- var entity = _ref.entity,
2662
+ var Card = function Card(_ref) {
2663
+ var segment = _ref.segment,
2664
+ columns = _ref.columns,
2665
+ defaultSegmentName = _ref.defaultSegmentName;
2666
+ var _useState = React.useState(false),
2667
+ _useState2 = _slicedToArray(_useState, 2),
2668
+ isEditing = _useState2[0],
2669
+ setIsEditing = _useState2[1];
2670
+ var _useState3 = React.useState(false),
2671
+ _useState4 = _slicedToArray(_useState3, 2),
2672
+ isDeleteAlertOpen = _useState4[0],
2673
+ setIsDeleteAlertOpen = _useState4[1];
2674
+ var _useTranslation = reactI18next.useTranslation(),
2675
+ t = _useTranslation.t;
2676
+ var Menu = neetoui.Dropdown.Menu,
2677
+ MenuItem = neetoui.Dropdown.MenuItem;
2678
+ var _useUpdateSegment = useUpdateSegment(),
2679
+ updateSegment = _useUpdateSegment.mutate;
2680
+ var handleRename = function handleRename(values) {
2681
+ return updateSegment({
2682
+ id: segment.id,
2683
+ payload: values
2684
+ }, {
2685
+ onSuccess: function onSuccess() {
2686
+ return setIsEditing(false);
2687
+ }
2688
+ });
2689
+ };
2690
+ return /*#__PURE__*/React__default["default"].createElement(formik.Form, {
2691
+ className: "neeto-ui-rounded-md flex w-full items-center justify-between border p-2",
2692
+ formProps: {
2693
+ noValidate: true
2694
+ },
2695
+ formikProps: {
2696
+ initialValues: segment,
2697
+ validateOnChange: true,
2698
+ validateOnBlur: true,
2699
+ validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
2700
+ onSubmit: handleRename,
2701
+ enableReinitialize: true
2702
+ }
2703
+ }, function (_ref2) {
2704
+ var resetForm = _ref2.resetForm;
2705
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isEditing ? /*#__PURE__*/React__default["default"].createElement(InlineInput.FormikInlineInput, {
2706
+ autoFocus: true,
2707
+ nakedInput: true,
2708
+ handleCancel: function handleCancel() {
2709
+ return setIsEditing(false);
2710
+ },
2711
+ name: "name",
2712
+ placeholder: t("neetoFilters.segments.name")
2713
+ }) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
2714
+ style: "body2"
2715
+ }, segment.name), /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
2716
+ buttonStyle: "text",
2717
+ disabled: neetoCist.isNotPresent(segment.id),
2718
+ icon: neetoIcons.MenuHorizontal,
2719
+ size: "small"
2720
+ }, /*#__PURE__*/React__default["default"].createElement(Menu, null, /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
2721
+ onClick: function onClick() {
2722
+ setIsEditing(true);
2723
+ resetForm();
2724
+ }
2725
+ }, t("neetoFilters.common.rename")), /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
2726
+ onClick: function onClick() {
2727
+ return setIsDeleteAlertOpen(true);
2728
+ }
2729
+ }, t("neetoFilters.common.delete"))))), /*#__PURE__*/React__default["default"].createElement(DeleteAlert, {
2730
+ columns: columns,
2731
+ segment: segment,
2732
+ isOpen: isDeleteAlertOpen,
2733
+ onClose: function onClose() {
2734
+ return setIsDeleteAlertOpen(false);
2735
+ }
2736
+ }));
2737
+ });
2738
+ };
2739
+ var Card$1 = /*#__PURE__*/React__default["default"].memo(Card);
2740
+
2741
+ var ManagePane = function ManagePane(_ref) {
2742
+ var isOpen = _ref.isOpen,
2743
+ onClose = _ref.onClose,
2744
+ entity = _ref.entity,
3902
2745
  columns = _ref.columns,
3903
- appliedFilters = _ref.appliedFilters,
3904
- childrenKeys = _ref.childrenKeys;
2746
+ defaultSegmentName = _ref.defaultSegmentName;
2747
+ var _useState = React.useState(""),
2748
+ _useState2 = _slicedToArray(_useState, 2),
2749
+ searchTerm = _useState2[0],
2750
+ setSearchTerm = _useState2[1];
2751
+ var inputRef = React.useRef(null);
3905
2752
  var _useTranslation = reactI18next.useTranslation(),
3906
2753
  t = _useTranslation.t;
2754
+ var debouncedSearchTerm = reactUtils.useDebounce(searchTerm);
2755
+ var _useFetchSegments = useFetchSegments({
2756
+ entity: entity,
2757
+ searchTerm: debouncedSearchTerm
2758
+ }),
2759
+ _useFetchSegments$dat = _useFetchSegments.data,
2760
+ segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
2761
+ isLoading = _useFetchSegments.isLoading;
2762
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
2763
+ isOpen: isOpen,
2764
+ onClose: onClose,
2765
+ initialFocusRef: inputRef
2766
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
2767
+ style: "h2"
2768
+ }, t("neetoFilters.segments.manageSegments"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, {
2769
+ className: "max-h-full gap-4 overflow-scroll"
2770
+ }, /*#__PURE__*/React__default["default"].createElement(Search__default["default"], {
2771
+ className: "w-full flex-grow-0",
2772
+ placeholder: t("neetoFilters.segments.searchSegments"),
2773
+ ref: inputRef,
2774
+ onSearch: function onSearch(value) {
2775
+ return setSearchTerm(value);
2776
+ }
2777
+ }), isLoading ? /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, {
2778
+ className: "mx-auto mt-4"
2779
+ }) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Card$1, {
2780
+ segment: {
2781
+ name: defaultSegmentName
2782
+ }
2783
+ }), ramda.isEmpty(segments) ? /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
2784
+ className: "mx-auto",
2785
+ style: "body2"
2786
+ }, t("neetoFilters.segments.noSegmentsFound")) : segments.map(function (segment) {
2787
+ return /*#__PURE__*/React__default["default"].createElement(Card$1, {
2788
+ columns: columns,
2789
+ defaultSegmentName: defaultSegmentName,
2790
+ segment: segment,
2791
+ key: segment.id
2792
+ });
2793
+ }))));
2794
+ };
2795
+
2796
+ var ITEMS_MAX_COUNT = 20;
2797
+
2798
+ var MenuBlocks = function MenuBlocks(_ref) {
2799
+ var entity = _ref.entity,
2800
+ columns = _ref.columns,
2801
+ defaultSegmentName = _ref.defaultSegmentName;
2802
+ var _useState = React.useState(false),
2803
+ _useState2 = _slicedToArray(_useState, 2),
2804
+ showAll = _useState2[0],
2805
+ setShowAll = _useState2[1];
3907
2806
  var history = reactRouterDom.useHistory();
2807
+ var _useTranslation = reactI18next.useTranslation(),
2808
+ t = _useTranslation.t;
2809
+ var _getQueryParams = utils.getQueryParams(),
2810
+ segmentId = _getQueryParams.segmentId;
2811
+ var appliedFilters = buildFiltersFromURL(columns);
3908
2812
  var _useFetchSegments = useFetchSegments({
3909
2813
  entity: entity
3910
2814
  }),
3911
2815
  _useFetchSegments$dat = _useFetchSegments.data,
3912
2816
  segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
3913
2817
  isLoading = _useFetchSegments.isLoading;
3914
- var _useUpdateSegment = useUpdateSegment(),
3915
- updateSegment = _useUpdateSegment.mutate,
3916
- isUpdating = _useUpdateSegment.isLoading;
3917
- var _useState = React.useState({
3918
- action: "",
3919
- segment: undefined
3920
- }),
3921
- _useState2 = _slicedToArray(_useState, 2),
3922
- confirmAction = _useState2[0],
3923
- setConfirmAction = _useState2[1];
3924
2818
  var clearAppliedFilters = function clearAppliedFilters() {
3925
2819
  var _filters$, _filters$2;
3926
2820
  var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : appliedFilters;
@@ -3935,7 +2829,7 @@ var useSegments = function useSegments(_ref) {
3935
2829
  })
3936
2830
  });
3937
2831
  };
3938
- var handleSelectSegment = function handleSelectSegment(_ref2) {
2832
+ var applySelectedSegment = function applySelectedSegment(_ref2) {
3939
2833
  var _filters$3;
3940
2834
  var id = _ref2.id,
3941
2835
  filters = _ref2.filters;
@@ -3947,6 +2841,14 @@ var useSegments = function useSegments(_ref) {
3947
2841
  })
3948
2842
  });
3949
2843
  };
2844
+ var handleSelectSegment = function handleSelectSegment(_ref3) {
2845
+ var id = _ref3.id,
2846
+ filters = _ref3.filters;
2847
+ return ramda.equals(id, segmentId) ? clearAppliedFilters(filters) : applySelectedSegment({
2848
+ id: id,
2849
+ filters: filters
2850
+ });
2851
+ };
3950
2852
  if (isLoading) {
3951
2853
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null);
3952
2854
  }
@@ -3955,136 +2857,6 @@ var useSegments = function useSegments(_ref) {
3955
2857
  style: "body2"
3956
2858
  }, t("neetoFilters.segments.noSegmentsFound"));
3957
2859
  }
3958
- var handleUpdate = function handleUpdate(_ref3, _ref4) {
3959
- var name = _ref3.name;
3960
- var setFieldError = _ref4.setFieldError;
3961
- var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
3962
- updateSegment({
3963
- id: confirmAction.segment.id,
3964
- payload: {
3965
- name: name,
3966
- filters: filtersPayload
3967
- },
3968
- showToastr: false
3969
- }, {
3970
- onSuccess: function onSuccess() {
3971
- utils.showThumbsUpToastr();
3972
- setConfirmAction({
3973
- action: "",
3974
- segment: undefined
3975
- });
3976
- },
3977
- onError: function onError(error) {
3978
- return setFieldError("name", error.response.data.error);
3979
- }
3980
- });
3981
- };
3982
- var filters = buildFiltersFromSearchParams(columns);
3983
- return {
3984
- segments: segments,
3985
- clearAppliedFilters: clearAppliedFilters,
3986
- handleSelectSegment: handleSelectSegment,
3987
- setConfirmAction: setConfirmAction,
3988
- isUpdating: isUpdating,
3989
- handleUpdate: handleUpdate,
3990
- filters: filters,
3991
- onClose: function onClose() {
3992
- return setConfirmAction({
3993
- action: "",
3994
- segment: undefined
3995
- });
3996
- },
3997
- selectedSegment: confirmAction.segment,
3998
- isDeleteAlertOpen: confirmAction.action === SEGMENT_ACTIONS.DELETE,
3999
- isEditPaneOpen: confirmAction.action === SEGMENT_ACTIONS.EDIT
4000
- };
4001
- };
4002
-
4003
- var Segment = function Segment(_ref) {
4004
- var id = _ref.id,
4005
- isActive = _ref.isActive,
4006
- label = _ref.label,
4007
- onClick = _ref.onClick,
4008
- _ref$shouldShowDropdo = _ref.shouldShowDropdown,
4009
- shouldShowDropdown = _ref$shouldShowDropdo === void 0 ? false : _ref$shouldShowDropdo,
4010
- segments = _ref.segments,
4011
- setConfirmAction = _ref.setConfirmAction;
4012
- var _useTranslation = reactI18next.useTranslation(),
4013
- t = _useTranslation.t;
4014
- var menuItems = [{
4015
- key: "edit",
4016
- label: t("neetoFilters.common.edit"),
4017
- onClick: function onClick() {
4018
- return setConfirmAction({
4019
- action: SEGMENT_ACTIONS.EDIT,
4020
- segment: neetoCist.findById(id, segments)
4021
- });
4022
- }
4023
- }, {
4024
- key: "delete",
4025
- label: t("neetoFilters.common.delete"),
4026
- onClick: function onClick() {
4027
- return setConfirmAction({
4028
- action: SEGMENT_ACTIONS.DELETE,
4029
- segment: neetoCist.findById(id, segments)
4030
- });
4031
- }
4032
- }];
4033
- return /*#__PURE__*/React__default["default"].createElement("div", {
4034
- onClick: onClick,
4035
- className: classnames__default["default"]("neeto-ui-border-gray-400 neeto-ui-bg-white hover:neeto-ui-bg-gray-200 neeto-ui-rounded-lg mb-2 flex h-10 cursor-pointer items-center gap-2 border p-3 transition-all duration-300 ease-in-out", {
4036
- "neeto-filters-segment--active": isActive
4037
- })
4038
- }, /*#__PURE__*/React__default["default"].createElement("div", {
4039
- className: "flex flex-grow items-center gap-2 overflow-hidden",
4040
- "data-cy": "new-element-field"
4041
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
4042
- className: "truncate leading-snug",
4043
- "data-cy": neetoCist.hyphenate(label),
4044
- style: "body2"
4045
- }, label)), shouldShowDropdown && /*#__PURE__*/React__default["default"].createElement(MoreDropdown__default["default"], {
4046
- menuItems: menuItems,
4047
- dropdownButtonProps: {
4048
- className: "min-h-0 flex-shrink-0",
4049
- "data-cy": "".concat(neetoCist.hyphenate(label), "-more-dropdown")
4050
- }
4051
- }));
4052
- };
4053
-
4054
- var MenuBlocks = function MenuBlocks(_ref) {
4055
- var entity = _ref.entity,
4056
- columns = _ref.columns,
4057
- defaultSegmentName = _ref.defaultSegmentName,
4058
- childrenKeys = _ref.childrenKeys,
4059
- customFilters = _ref.customFilters;
4060
- var _useTranslation = reactI18next.useTranslation(),
4061
- t = _useTranslation.t;
4062
- var segmentFormInitialRef = React.useRef(null);
4063
- var _useState = React.useState(false),
4064
- _useState2 = _slicedToArray(_useState, 2),
4065
- showAll = _useState2[0],
4066
- setShowAll = _useState2[1];
4067
- var _getQueryParams = utils.getQueryParams(),
4068
- segmentId = _getQueryParams.segmentId;
4069
- var appliedFilters = buildFiltersFromURL(columns);
4070
- var _useSegments = useSegments({
4071
- entity: entity,
4072
- columns: columns,
4073
- appliedFilters: appliedFilters,
4074
- childrenKeys: childrenKeys
4075
- }),
4076
- _useSegments$segments = _useSegments.segments,
4077
- segments = _useSegments$segments === void 0 ? [] : _useSegments$segments,
4078
- clearAppliedFilters = _useSegments.clearAppliedFilters,
4079
- handleSelectSegment = _useSegments.handleSelectSegment,
4080
- onClose = _useSegments.onClose,
4081
- setConfirmAction = _useSegments.setConfirmAction,
4082
- selectedSegment = _useSegments.selectedSegment,
4083
- isDeleteAlertOpen = _useSegments.isDeleteAlertOpen,
4084
- isEditPaneOpen = _useSegments.isEditPaneOpen,
4085
- isUpdating = _useSegments.isUpdating,
4086
- handleUpdate = _useSegments.handleUpdate,
4087
- filters = _useSegments.filters;
4088
2860
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, segments.length > ITEMS_MAX_COUNT && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
4089
2861
  icon: neetoIcons.Down,
4090
2862
  style: "link",
@@ -4096,67 +2868,71 @@ var MenuBlocks = function MenuBlocks(_ref) {
4096
2868
  return !open;
4097
2869
  });
4098
2870
  }
4099
- }), /*#__PURE__*/React__default["default"].createElement(Segment, {
4100
- isActive: ramda.isEmpty(appliedFilters),
2871
+ }), /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Block, {
2872
+ active: ramda.isEmpty(appliedFilters),
4101
2873
  label: defaultSegmentName,
4102
2874
  onClick: clearAppliedFilters
4103
2875
  }), segments.slice(0, showAll ? segments.length : ITEMS_MAX_COUNT).map(function (segment) {
4104
- return /*#__PURE__*/React__default["default"].createElement(Segment, {
4105
- segments: segments,
4106
- setConfirmAction: setConfirmAction,
4107
- shouldShowDropdown: true,
4108
- id: segment.id,
4109
- isActive: segment.id === segmentId,
2876
+ return /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Block, {
2877
+ active: segment.id === segmentId,
2878
+ count: segment.count,
4110
2879
  key: segment.id,
4111
2880
  label: segment.name,
4112
2881
  onClick: function onClick() {
4113
2882
  return handleSelectSegment(segment);
4114
2883
  }
4115
2884
  });
4116
- }), /*#__PURE__*/React__default["default"].createElement(SegmentForm, {
4117
- childrenKeys: childrenKeys,
4118
- columns: columns,
4119
- customFilters: customFilters,
4120
- defaultSegmentName: defaultSegmentName,
4121
- filters: filters,
4122
- onClose: onClose,
4123
- segmentFormInitialRef: segmentFormInitialRef,
4124
- isEdit: true,
4125
- handleSubmit: handleUpdate,
4126
- initialValues: selectedSegment,
4127
- isOpen: isEditPaneOpen,
4128
- isSubmitting: isUpdating
4129
- }), /*#__PURE__*/React__default["default"].createElement(Delete, {
4130
- columns: columns,
4131
- onClose: onClose,
4132
- isOpen: isDeleteAlertOpen,
4133
- segment: selectedSegment
4134
2885
  }));
4135
2886
  };
4136
2887
  var MenuBlocks$1 = /*#__PURE__*/React__default["default"].memo(MenuBlocks);
4137
2888
 
4138
- var Segments = reactUtils.withT(function (_ref) {
4139
- var t = _ref.t,
4140
- entity = _ref.entity,
2889
+ var Segments = function Segments(_ref) {
2890
+ var entity = _ref.entity,
4141
2891
  columns = _ref.columns,
2892
+ _ref$setIsFilterPaneO = _ref.setIsFilterPaneOpen,
2893
+ setIsFilterPaneOpen = _ref$setIsFilterPaneO === void 0 ? neetoCist.noop : _ref$setIsFilterPaneO,
4142
2894
  _ref$defaultSegmentNa = _ref.defaultSegmentName,
4143
- defaultSegmentName = _ref$defaultSegmentNa === void 0 ? t("neetoFilters.common.allResults") : _ref$defaultSegmentNa,
4144
- customFilters = _ref.customFilters,
4145
- _ref$childrenKeys = _ref.childrenKeys,
4146
- childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys;
4147
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].SubTitle, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
4148
- component: "h4",
4149
- style: "h5",
4150
- textTransform: "uppercase",
4151
- weight: "bold"
4152
- }, t("neetoFilters.common.segments"))), /*#__PURE__*/React__default["default"].createElement(MenuBlocks$1, {
4153
- childrenKeys: childrenKeys,
4154
- columns: columns,
4155
- customFilters: customFilters,
4156
- defaultSegmentName: defaultSegmentName,
4157
- entity: entity
4158
- }));
4159
- });
2895
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? i18next.t("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
2896
+ return function () {
2897
+ var _useState = React.useState(false),
2898
+ _useState2 = _slicedToArray(_useState, 2),
2899
+ isSegmentsPaneOpen = _useState2[0],
2900
+ setIsSegmentsPaneOpen = _useState2[1];
2901
+ var _useTranslation = reactI18next.useTranslation(),
2902
+ t = _useTranslation.t;
2903
+ var iconProps = [{
2904
+ icon: neetoIcons.Settings,
2905
+ onClick: function onClick() {
2906
+ setIsFilterPaneOpen(false);
2907
+ setIsSegmentsPaneOpen(true);
2908
+ },
2909
+ tooltipProps: {
2910
+ content: t("neetoFilters.segments.manageSegments"),
2911
+ position: "top"
2912
+ }
2913
+ }];
2914
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].SubTitle, {
2915
+ iconProps: iconProps
2916
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
2917
+ component: "h4",
2918
+ style: "h5",
2919
+ textTransform: "uppercase",
2920
+ weight: "bold"
2921
+ }, t("neetoFilters.common.segments"))), /*#__PURE__*/React__default["default"].createElement(MenuBlocks$1, {
2922
+ columns: columns,
2923
+ defaultSegmentName: defaultSegmentName,
2924
+ entity: entity
2925
+ }), /*#__PURE__*/React__default["default"].createElement(ManagePane, {
2926
+ columns: columns,
2927
+ defaultSegmentName: defaultSegmentName,
2928
+ entity: entity,
2929
+ isOpen: isSegmentsPaneOpen,
2930
+ onClose: function onClose() {
2931
+ return setIsSegmentsPaneOpen(false);
2932
+ }
2933
+ }));
2934
+ }();
2935
+ };
4160
2936
  var index = /*#__PURE__*/React__default["default"].memo(Segments);
4161
2937
 
4162
2938
  exports.Bar = Bar;