@bigbinary/neeto-filters-frontend 3.0.5 → 3.0.6

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
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var classnames = require('classnames');
7
+ var i18next = require('i18next');
7
8
  var neetoCist = require('@bigbinary/neeto-cist');
8
9
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
9
10
  var utils = require('@bigbinary/neeto-commons-frontend/utils');
@@ -12,11 +13,11 @@ var ramda = require('ramda');
12
13
  var reactI18next = require('react-i18next');
13
14
  var reactRouterDom = require('react-router-dom');
14
15
  var neetoIcons = require('@bigbinary/neeto-icons');
15
- var i18next = require('i18next');
16
- var yup = require('yup');
17
16
  var formik = require('@bigbinary/neetoui/formik');
18
17
  var reactQuery = require('react-query');
19
18
  var axios = require('axios');
19
+ var yup = require('yup');
20
+ var Search = require('@bigbinary/neeto-molecules/Search');
20
21
  var ReactDOM = require('react-dom');
21
22
  var MenuBar = require('@bigbinary/neeto-molecules/MenuBar');
22
23
  var InlineInput = require('@bigbinary/neeto-molecules/InlineInput');
@@ -44,8 +45,9 @@ function _interopNamespace(e) {
44
45
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
45
46
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
46
47
  var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
47
- var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
48
48
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
49
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
50
+ var Search__default = /*#__PURE__*/_interopDefaultLegacy(Search);
49
51
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
50
52
  var MenuBar__default = /*#__PURE__*/_interopDefaultLegacy(MenuBar);
51
53
 
@@ -136,9 +138,6 @@ var SHORTCUTS = {
136
138
  }
137
139
  };
138
140
 
139
- var SEGMENT_VALIDATION_SCHEMA = yup__namespace.object({
140
- name: yup__namespace.string().trim().required()
141
- });
142
141
  var SEGMENTS_BASE_URL = "/neeto_filters/segments";
143
142
  var DATE_OPTIONS = [{
144
143
  label: "Today",
@@ -782,7 +781,8 @@ var compareFilters = function compareFilters(oldFilters, newFilters) {
782
781
  return ramda.equals(formatFilters(oldFilters), formatFilters(newFilters));
783
782
  };
784
783
  var buildFilteredColumns = function buildFilteredColumns(_ref11) {
785
- var searchTerm = _ref11.searchTerm,
784
+ var _ref11$searchTerm = _ref11.searchTerm,
785
+ searchTerm = _ref11$searchTerm === void 0 ? "" : _ref11$searchTerm,
786
786
  columns = _ref11.columns;
787
787
  var groupedColumsObject = groupByGroup(columns.filter(function (_ref12) {
788
788
  var label = _ref12.label,
@@ -1221,6 +1221,18 @@ var useDestroySegment = function useDestroySegment(options) {
1221
1221
  }, options));
1222
1222
  };
1223
1223
 
1224
+ var buildSegmentsValidationSchema = function buildSegmentsValidationSchema(defaultSegmentName) {
1225
+ return yup__namespace.object({
1226
+ name: yup__namespace.string().trim().required().test({
1227
+ name: "not-default-segment-name",
1228
+ test: function test(value) {
1229
+ return (value === null || value === void 0 ? void 0 : value.toLocaleLowerCase()) !== defaultSegmentName.toLocaleLowerCase();
1230
+ },
1231
+ message: i18next.t("neetoFilters.segments.reservedNameErrorMessage")
1232
+ })
1233
+ });
1234
+ };
1235
+
1224
1236
  var Menu = neetoui.Dropdown.Menu,
1225
1237
  MenuItem = neetoui.Dropdown.MenuItem;
1226
1238
  var Segment = function Segment(_ref) {
@@ -1228,7 +1240,8 @@ var Segment = function Segment(_ref) {
1228
1240
  filters = _ref.filters,
1229
1241
  columns = _ref.columns,
1230
1242
  childrenKeys = _ref.childrenKeys,
1231
- setIsFilterPaneOpen = _ref.setIsFilterPaneOpen;
1243
+ setIsFilterPaneOpen = _ref.setIsFilterPaneOpen,
1244
+ defaultSegmentName = _ref.defaultSegmentName;
1232
1245
  var _useState = React.useState(false),
1233
1246
  _useState2 = _slicedToArray(_useState, 2),
1234
1247
  isSavePaneOpen = _useState2[0],
@@ -1331,7 +1344,7 @@ var Segment = function Segment(_ref) {
1331
1344
  },
1332
1345
  validateOnChange: true,
1333
1346
  validateOnBlur: true,
1334
- validationSchema: SEGMENT_VALIDATION_SCHEMA,
1347
+ validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
1335
1348
  onSubmit: handleSubmit
1336
1349
  }
1337
1350
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(formik.Input, {
@@ -1382,118 +1395,123 @@ var Bar = function Bar(_ref) {
1382
1395
  _ref$setIsPaneOpen = _ref.setIsPaneOpen,
1383
1396
  setIsPaneOpen = _ref$setIsPaneOpen === void 0 ? ramda.identity : _ref$setIsPaneOpen,
1384
1397
  _ref$childrenKeys = _ref.childrenKeys,
1385
- childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys;
1386
- var _useTranslation = reactI18next.useTranslation(),
1387
- t = _useTranslation.t;
1388
- var initialRenderRef = React.useRef(true);
1389
- var searchParams = reactUtils.useQueryParams();
1390
- var keywordValue = searchParams.search_term || "";
1391
- var keywordFilter = _objectSpread$2(_objectSpread$2({
1392
- type: "text",
1393
- rule: "contains",
1394
- label: t("neetoFilters.common.searchTerm")
1395
- }, keyword), {}, {
1396
- key: "search_term",
1397
- value: keywordValue
1398
- });
1399
- var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
1400
- var nonHiddenFilters = neetoCist.removeBy({
1401
- hidden: true
1402
- }, filters);
1403
- var history = reactRouterDom.useHistory();
1404
- var handleSubmit = function handleSubmit(newFilters, isClearAll) {
1405
- var params = buildUrlFromFilters(_objectSpread$2({
1406
- columns: columns,
1407
- filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
1408
- }, isClearAll && {
1409
- isClearAll: true,
1410
- childrenKeys: childrenKeys
1411
- }));
1412
- history.push({
1413
- search: params
1398
+ childrenKeys = _ref$childrenKeys === void 0 ? [] : _ref$childrenKeys,
1399
+ _ref$defaultSegmentNa = _ref.defaultSegmentName,
1400
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? i18next.t("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
1401
+ return function () {
1402
+ var _useTranslation = reactI18next.useTranslation(),
1403
+ t = _useTranslation.t;
1404
+ var initialRenderRef = React.useRef(true);
1405
+ var searchParams = reactUtils.useQueryParams();
1406
+ var keywordValue = searchParams.search_term || "";
1407
+ var keywordFilter = _objectSpread$2(_objectSpread$2({
1408
+ type: "text",
1409
+ rule: "contains",
1410
+ label: t("neetoFilters.common.searchTerm")
1411
+ }, keyword), {}, {
1412
+ key: "search_term",
1413
+ value: keywordValue
1414
1414
  });
1415
- };
1416
- var handleDelete = function handleDelete(key) {
1417
- if (key === "search_term") {
1418
- var params = ramda.omit(["search_term"], utils.getQueryParams());
1415
+ var filters = buildFiltersFromSearchParams(isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(keywordValue) ? [keywordFilter].concat(_toConsumableArray(columns)) : columns);
1416
+ var nonHiddenFilters = neetoCist.removeBy({
1417
+ hidden: true
1418
+ }, filters);
1419
+ var history = reactRouterDom.useHistory();
1420
+ var handleSubmit = function handleSubmit(newFilters, isClearAll) {
1421
+ var params = buildUrlFromFilters(_objectSpread$2({
1422
+ columns: columns,
1423
+ filters: isKeywordFilterPresent(keywordFilter) && neetoCist.isNotEmpty(getSearchTermFromUrl()) ? [].concat(_toConsumableArray(newFilters), [keywordFilter]) : newFilters
1424
+ }, isClearAll && {
1425
+ isClearAll: true,
1426
+ childrenKeys: childrenKeys
1427
+ }));
1428
+ history.push({
1429
+ search: params
1430
+ });
1431
+ };
1432
+ var handleDelete = function handleDelete(key) {
1433
+ if (key === "search_term") {
1434
+ var params = ramda.omit(["search_term"], utils.getQueryParams());
1435
+ var pathname = window.location.pathname;
1436
+ history.push(utils.buildUrl(pathname, params));
1437
+ return;
1438
+ }
1439
+ if (childrenKeys.includes(key)) {
1440
+ var _params = ramda.omit([key], utils.getQueryParams());
1441
+ var _pathname = window.location.pathname;
1442
+ history.push(utils.buildUrl(_pathname, _params));
1443
+ }
1444
+ var newFilters = neetoCist.removeBy({
1445
+ key: key
1446
+ }, filters);
1447
+ handleSubmit(newFilters);
1448
+ };
1449
+ var handleClearAll = function handleClearAll() {
1450
+ var params = isKeywordFilterPresent(keywordFilter) ? ramda.omit(["search_term"], utils.getQueryParams()) : utils.getQueryParams();
1419
1451
  var pathname = window.location.pathname;
1420
1452
  history.push(utils.buildUrl(pathname, params));
1421
- return;
1422
- }
1423
- if (childrenKeys.includes(key)) {
1424
- var _params = ramda.omit([key], utils.getQueryParams());
1425
- var _pathname = window.location.pathname;
1426
- history.push(utils.buildUrl(_pathname, _params));
1427
- }
1428
- var newFilters = neetoCist.removeBy({
1429
- key: key
1430
- }, filters);
1431
- handleSubmit(newFilters);
1432
- };
1433
- var handleClearAll = function handleClearAll() {
1434
- var params = isKeywordFilterPresent(keywordFilter) ? ramda.omit(["search_term"], utils.getQueryParams()) : utils.getQueryParams();
1435
- var pathname = window.location.pathname;
1436
- history.push(utils.buildUrl(pathname, params));
1437
- handleSubmit([], true);
1438
- };
1439
- var childrenFiltersApplied = childrenKeys.some(function (key) {
1440
- return ramda.has(key, searchParams);
1441
- });
1442
- var hideClearButton = nonHiddenFilters.every(function (_ref2) {
1443
- var defaultValue = _ref2.defaultValue,
1444
- isClearable = _ref2.isClearable;
1445
- return defaultValue && !isClearable;
1446
- }) && !childrenFiltersApplied;
1447
- React.useEffect(function () {
1448
- if (initialRenderRef.current) {
1449
- initialRenderRef.current = false;
1450
- return neetoCist.noop;
1451
- }
1452
- var handler = setTimeout(function () {
1453
- handleSubmit(filters);
1454
- }, 500);
1455
- return function () {
1456
- return clearTimeout(handler);
1453
+ handleSubmit([], true);
1457
1454
  };
1458
- }, [keywordValue]);
1459
- if (ramda.isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
1460
- return /*#__PURE__*/React__default["default"].createElement("div", {
1461
- className: classnames__default["default"]("neeto-filters-bar", _defineProperty({}, className, className))
1462
- }, nonHiddenFilters.map(function (filter) {
1463
- var _filter$suffixCompone;
1464
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
1465
- key: filter.key
1466
- }, /*#__PURE__*/React__default["default"].createElement(Block, {
1467
- filter: filter,
1468
- handleDelete: handleDelete,
1469
- setIsPaneOpen: setIsPaneOpen
1470
- }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/React__default["default"].createElement("div", {
1471
- className: "neeto-filters-bar--separator"
1472
- }));
1473
- }), childrenKeys.filter(function (childKey) {
1474
- return ramda.has(childKey, searchParams);
1475
- }).map(function (childKey) {
1476
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
1477
- key: childKey
1478
- }, /*#__PURE__*/React__default["default"].createElement(ChildBlock, {
1479
- childKey: childKey,
1480
- handleDelete: handleDelete,
1481
- setIsPaneOpen: setIsPaneOpen
1482
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1483
- className: "neeto-filters-bar--separator"
1455
+ var childrenFiltersApplied = childrenKeys.some(function (key) {
1456
+ return ramda.has(key, searchParams);
1457
+ });
1458
+ var hideClearButton = nonHiddenFilters.every(function (_ref2) {
1459
+ var defaultValue = _ref2.defaultValue,
1460
+ isClearable = _ref2.isClearable;
1461
+ return defaultValue && !isClearable;
1462
+ }) && !childrenFiltersApplied;
1463
+ React.useEffect(function () {
1464
+ if (initialRenderRef.current) {
1465
+ initialRenderRef.current = false;
1466
+ return neetoCist.noop;
1467
+ }
1468
+ var handler = setTimeout(function () {
1469
+ handleSubmit(filters);
1470
+ }, 500);
1471
+ return function () {
1472
+ return clearTimeout(handler);
1473
+ };
1474
+ }, [keywordValue]);
1475
+ if (ramda.isEmpty(nonHiddenFilters) && !childrenFiltersApplied) return null;
1476
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1477
+ className: classnames__default["default"]("neeto-filters-bar", _defineProperty({}, className, className))
1478
+ }, nonHiddenFilters.map(function (filter) {
1479
+ var _filter$suffixCompone;
1480
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
1481
+ key: filter.key
1482
+ }, /*#__PURE__*/React__default["default"].createElement(Block, {
1483
+ filter: filter,
1484
+ handleDelete: handleDelete,
1485
+ setIsPaneOpen: setIsPaneOpen
1486
+ }), (_filter$suffixCompone = filter.suffixComponent) === null || _filter$suffixCompone === void 0 ? void 0 : _filter$suffixCompone.call(filter), /*#__PURE__*/React__default["default"].createElement("div", {
1487
+ className: "neeto-filters-bar--separator"
1488
+ }));
1489
+ }), childrenKeys.filter(function (childKey) {
1490
+ return ramda.has(childKey, searchParams);
1491
+ }).map(function (childKey) {
1492
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
1493
+ key: childKey
1494
+ }, /*#__PURE__*/React__default["default"].createElement(ChildBlock, {
1495
+ childKey: childKey,
1496
+ handleDelete: handleDelete,
1497
+ setIsPaneOpen: setIsPaneOpen
1498
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
1499
+ className: "neeto-filters-bar--separator"
1500
+ }));
1501
+ }), ramda.isNotNil(entity) && /*#__PURE__*/React__default["default"].createElement(Segment, {
1502
+ childrenKeys: childrenKeys,
1503
+ columns: columns,
1504
+ defaultSegmentName: defaultSegmentName,
1505
+ entity: entity,
1506
+ filters: filters,
1507
+ setIsFilterPaneOpen: setIsPaneOpen
1508
+ }), !hideClearButton && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1509
+ "data-cy": "neeto-filters-bar-clear-btn",
1510
+ label: t("neetoFilters.common.clearFilters"),
1511
+ style: "text",
1512
+ onClick: handleClearAll
1484
1513
  }));
1485
- }), ramda.isNotNil(entity) && /*#__PURE__*/React__default["default"].createElement(Segment, {
1486
- childrenKeys: childrenKeys,
1487
- columns: columns,
1488
- entity: entity,
1489
- filters: filters,
1490
- setIsFilterPaneOpen: setIsPaneOpen
1491
- }), !hideClearButton && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1492
- "data-cy": "neeto-filters-bar-clear-btn",
1493
- label: t("neetoFilters.common.clearFilters"),
1494
- style: "text",
1495
- onClick: handleClearAll
1496
- }));
1514
+ }();
1497
1515
  };
1498
1516
 
1499
1517
  function _extends() {
@@ -3273,16 +3291,13 @@ var Pane = function Pane(_ref) {
3273
3291
  weight: "semibold"
3274
3292
  }, t("neetoFilters.common.filters"))), /*#__PURE__*/React__default["default"].createElement(Slider.Body, {
3275
3293
  className: "neeto-filters-pane-filter__body neeto-ui-pt-2"
3276
- }, isSearchable && /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
3277
- autoFocus: true,
3294
+ }, isSearchable && /*#__PURE__*/React__default["default"].createElement(Search__default["default"], {
3278
3295
  "data-cy": "neeto-filters-column-search",
3279
- prefix: /*#__PURE__*/React__default["default"].createElement(neetoIcons.Search, null),
3280
- value: searchTerm,
3281
3296
  placeholder: t("neetoFilters.messages.searchResources", {
3282
3297
  resources: t("neetoFilters.common.filters").toLocaleLowerCase()
3283
3298
  }),
3284
- onChange: function onChange(event) {
3285
- return setSearchTerm(event.target.value);
3299
+ onSearch: function onSearch(value) {
3300
+ return setSearchTerm(value);
3286
3301
  }
3287
3302
  }), ungroupedColumns.map(function (column) {
3288
3303
  return /*#__PURE__*/React__default["default"].createElement(Item, {
@@ -3442,7 +3457,8 @@ var DeleteAlert = function DeleteAlert(_ref) {
3442
3457
 
3443
3458
  var Card = function Card(_ref) {
3444
3459
  var segment = _ref.segment,
3445
- columns = _ref.columns;
3460
+ columns = _ref.columns,
3461
+ defaultSegmentName = _ref.defaultSegmentName;
3446
3462
  var _useState = React.useState(false),
3447
3463
  _useState2 = _slicedToArray(_useState, 2),
3448
3464
  isEditing = _useState2[0],
@@ -3476,7 +3492,7 @@ var Card = function Card(_ref) {
3476
3492
  initialValues: segment,
3477
3493
  validateOnChange: true,
3478
3494
  validateOnBlur: true,
3479
- validationSchema: SEGMENT_VALIDATION_SCHEMA,
3495
+ validationSchema: buildSegmentsValidationSchema(defaultSegmentName),
3480
3496
  onSubmit: handleRename,
3481
3497
  enableReinitialize: true
3482
3498
  }
@@ -3494,6 +3510,7 @@ var Card = function Card(_ref) {
3494
3510
  style: "body2"
3495
3511
  }, segment.name), /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
3496
3512
  buttonStyle: "text",
3513
+ disabled: neetoCist.isNotPresent(segment.id),
3497
3514
  icon: neetoIcons.MenuHorizontal,
3498
3515
  size: "small"
3499
3516
  }, /*#__PURE__*/React__default["default"].createElement(Menu, null, /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
@@ -3521,7 +3538,8 @@ var ManagePane = function ManagePane(_ref) {
3521
3538
  var isOpen = _ref.isOpen,
3522
3539
  onClose = _ref.onClose,
3523
3540
  entity = _ref.entity,
3524
- columns = _ref.columns;
3541
+ columns = _ref.columns,
3542
+ defaultSegmentName = _ref.defaultSegmentName;
3525
3543
  var _useState = React.useState(""),
3526
3544
  _useState2 = _slicedToArray(_useState, 2),
3527
3545
  searchTerm = _useState2[0],
@@ -3545,25 +3563,26 @@ var ManagePane = function ManagePane(_ref) {
3545
3563
  style: "h2"
3546
3564
  }, t("neetoFilters.segments.manageSegments"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, {
3547
3565
  className: "max-h-full gap-4 overflow-scroll"
3548
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
3566
+ }, /*#__PURE__*/React__default["default"].createElement(Search__default["default"], {
3549
3567
  className: "w-full flex-grow-0",
3550
3568
  placeholder: t("neetoFilters.segments.searchSegments"),
3551
- prefix: /*#__PURE__*/React__default["default"].createElement(neetoIcons.Search, null),
3552
3569
  ref: inputRef,
3553
- type: "search",
3554
- value: searchTerm,
3555
- onChange: function onChange(_ref2) {
3556
- var value = _ref2.target.value;
3570
+ onSearch: function onSearch(value) {
3557
3571
  return setSearchTerm(value);
3558
3572
  }
3559
3573
  }), isLoading ? /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, {
3560
3574
  className: "mx-auto mt-4"
3561
- }) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, ramda.isEmpty(segments) ? /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3575
+ }) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Card$1, {
3576
+ segment: {
3577
+ name: defaultSegmentName
3578
+ }
3579
+ }), ramda.isEmpty(segments) ? /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3562
3580
  className: "mx-auto",
3563
3581
  style: "body2"
3564
3582
  }, t("neetoFilters.segments.noSegmentsFound")) : segments.map(function (segment) {
3565
3583
  return /*#__PURE__*/React__default["default"].createElement(Card$1, {
3566
3584
  columns: columns,
3585
+ defaultSegmentName: defaultSegmentName,
3567
3586
  segment: segment,
3568
3587
  key: segment.id
3569
3588
  });
@@ -3575,7 +3594,8 @@ var ITEMS_MAX_COUNT = 20;
3575
3594
  var MenuBlocks = function MenuBlocks(_ref) {
3576
3595
  var entity = _ref.entity,
3577
3596
  searchTerm = _ref.searchTerm,
3578
- columns = _ref.columns;
3597
+ columns = _ref.columns,
3598
+ defaultSegmentName = _ref.defaultSegmentName;
3579
3599
  var _useState = React.useState(false),
3580
3600
  _useState2 = _slicedToArray(_useState, 2),
3581
3601
  showAll = _useState2[0],
@@ -3586,6 +3606,7 @@ var MenuBlocks = function MenuBlocks(_ref) {
3586
3606
  t = _useTranslation.t;
3587
3607
  var _Object$fromEntries = Object.fromEntries(new URLSearchParams(location.search)),
3588
3608
  segmentId = _Object$fromEntries.segmentId;
3609
+ var appliedFilters = buildFiltersFromURL(columns);
3589
3610
  var _useFetchSegments = useFetchSegments({
3590
3611
  entity: entity,
3591
3612
  searchTerm: searchTerm
@@ -3593,27 +3614,40 @@ var MenuBlocks = function MenuBlocks(_ref) {
3593
3614
  _useFetchSegments$dat = _useFetchSegments.data,
3594
3615
  segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
3595
3616
  isLoading = _useFetchSegments.isLoading;
3596
- var handleSelectSegment = function handleSelectSegment(_ref2) {
3617
+ var clearAppliedFilters = function clearAppliedFilters() {
3597
3618
  var _filters$, _filters$2;
3598
- var id = _ref2.id,
3599
- filters = _ref2.filters;
3600
- return ramda.equals(id, segmentId) ? history.push({
3619
+ var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : appliedFilters;
3620
+ history.push({
3601
3621
  search: buildUrlFromFilters({
3602
3622
  columns: columns,
3603
3623
  filters: [],
3604
3624
  isClearAll: true,
3605
- childrenKeys: ramda.pluck("key", neetoCist.filterBy({
3625
+ childrenKeys: ((_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions) && ramda.pluck("key", neetoCist.filterBy({
3606
3626
  node: "children"
3607
- }, (_filters$ = filters[0]) === null || _filters$ === void 0 ? void 0 : _filters$.conditions))
3627
+ }, (_filters$2 = filters[0]) === null || _filters$2 === void 0 ? void 0 : _filters$2.conditions))
3608
3628
  })
3609
- }) : history.push({
3629
+ });
3630
+ };
3631
+ var applySelectedSegment = function applySelectedSegment(_ref2) {
3632
+ var _filters$3;
3633
+ var id = _ref2.id,
3634
+ filters = _ref2.filters;
3635
+ history.push({
3610
3636
  search: buildUrlFromSegment({
3611
3637
  columns: columns,
3612
- filters: (_filters$2 = filters[0]) === null || _filters$2 === void 0 ? void 0 : _filters$2.conditions,
3638
+ filters: (_filters$3 = filters[0]) === null || _filters$3 === void 0 ? void 0 : _filters$3.conditions,
3613
3639
  id: id
3614
3640
  })
3615
3641
  });
3616
3642
  };
3643
+ var handleSelectSegment = function handleSelectSegment(_ref3) {
3644
+ var id = _ref3.id,
3645
+ filters = _ref3.filters;
3646
+ return ramda.equals(id, segmentId) ? clearAppliedFilters(filters) : applySelectedSegment({
3647
+ id: id,
3648
+ filters: filters
3649
+ });
3650
+ };
3617
3651
  if (isLoading) {
3618
3652
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null);
3619
3653
  }
@@ -3633,6 +3667,10 @@ var MenuBlocks = function MenuBlocks(_ref) {
3633
3667
  return !open;
3634
3668
  });
3635
3669
  }
3670
+ }), /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Block, {
3671
+ active: ramda.isEmpty(appliedFilters),
3672
+ label: defaultSegmentName,
3673
+ onClick: clearAppliedFilters
3636
3674
  }), segments.slice(0, showAll ? segments.length : ITEMS_MAX_COUNT).map(function (segment) {
3637
3675
  return /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Block, {
3638
3676
  active: segment.id === segmentId,
@@ -3651,77 +3689,83 @@ var Segments = function Segments(_ref) {
3651
3689
  var entity = _ref.entity,
3652
3690
  columns = _ref.columns,
3653
3691
  _ref$setIsFilterPaneO = _ref.setIsFilterPaneOpen,
3654
- setIsFilterPaneOpen = _ref$setIsFilterPaneO === void 0 ? neetoCist.noop : _ref$setIsFilterPaneO;
3655
- var _useState = React.useState(""),
3656
- _useState2 = _slicedToArray(_useState, 2),
3657
- searchTerm = _useState2[0],
3658
- setSearchTerm = _useState2[1];
3659
- var _useState3 = React.useState(true),
3660
- _useState4 = _slicedToArray(_useState3, 2),
3661
- isSearchCollapsed = _useState4[0],
3662
- setIsSearchCollapsed = _useState4[1];
3663
- var _useState5 = React.useState(false),
3664
- _useState6 = _slicedToArray(_useState5, 2),
3665
- isSegmentsPaneOpen = _useState6[0],
3666
- setIsSegmentsPaneOpen = _useState6[1];
3667
- var _useTranslation = reactI18next.useTranslation(),
3668
- t = _useTranslation.t;
3669
- var debouncedSearchTerm = reactUtils.useDebounce(searchTerm);
3670
- var iconProps = [{
3671
- icon: neetoIcons.Search,
3672
- onClick: function onClick() {
3673
- setSearchTerm("");
3674
- setIsSearchCollapsed(function (collapsed) {
3675
- return !collapsed;
3676
- });
3677
- },
3678
- tooltipProps: {
3679
- content: t("neetoFilters.segments.searchSegments"),
3680
- position: "top"
3681
- }
3682
- }, {
3683
- icon: neetoIcons.Settings,
3684
- onClick: function onClick() {
3685
- setIsFilterPaneOpen(false);
3686
- setIsSegmentsPaneOpen(true);
3687
- },
3688
- tooltipProps: {
3689
- content: t("neetoFilters.segments.manageSegments"),
3690
- position: "top"
3691
- }
3692
- }];
3693
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].SubTitle, {
3694
- iconProps: iconProps
3695
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3696
- component: "h4",
3697
- style: "h5",
3698
- textTransform: "uppercase",
3699
- weight: "bold"
3700
- }, t("neetoFilters.common.segments"))), /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Search, {
3701
- autoFocus: true,
3702
- isCollapsed: isSearchCollapsed,
3703
- placeholder: t("neetoFilters.segments.searchSegments"),
3704
- value: searchTerm,
3705
- onChange: function onChange(_ref2) {
3706
- var value = _ref2.target.value;
3707
- return setSearchTerm(value);
3708
- },
3709
- onCollapse: function onCollapse() {
3710
- setSearchTerm("");
3711
- setIsSearchCollapsed(true);
3712
- }
3713
- }), /*#__PURE__*/React__default["default"].createElement(MenuBlocks$1, {
3714
- columns: columns,
3715
- entity: entity,
3716
- searchTerm: debouncedSearchTerm
3717
- }), /*#__PURE__*/React__default["default"].createElement(ManagePane, {
3718
- columns: columns,
3719
- entity: entity,
3720
- isOpen: isSegmentsPaneOpen,
3721
- onClose: function onClose() {
3722
- return setIsSegmentsPaneOpen(false);
3723
- }
3724
- }));
3692
+ setIsFilterPaneOpen = _ref$setIsFilterPaneO === void 0 ? neetoCist.noop : _ref$setIsFilterPaneO,
3693
+ _ref$defaultSegmentNa = _ref.defaultSegmentName,
3694
+ defaultSegmentName = _ref$defaultSegmentNa === void 0 ? i18next.t("neetoFilters.common.allResults") : _ref$defaultSegmentNa;
3695
+ return function () {
3696
+ var _useState = React.useState(""),
3697
+ _useState2 = _slicedToArray(_useState, 2),
3698
+ searchTerm = _useState2[0],
3699
+ setSearchTerm = _useState2[1];
3700
+ var _useState3 = React.useState(true),
3701
+ _useState4 = _slicedToArray(_useState3, 2),
3702
+ isSearchCollapsed = _useState4[0],
3703
+ setIsSearchCollapsed = _useState4[1];
3704
+ var _useState5 = React.useState(false),
3705
+ _useState6 = _slicedToArray(_useState5, 2),
3706
+ isSegmentsPaneOpen = _useState6[0],
3707
+ setIsSegmentsPaneOpen = _useState6[1];
3708
+ var _useTranslation = reactI18next.useTranslation(),
3709
+ t = _useTranslation.t;
3710
+ var debouncedSearchTerm = reactUtils.useDebounce(searchTerm);
3711
+ var iconProps = [{
3712
+ icon: neetoIcons.Search,
3713
+ onClick: function onClick() {
3714
+ setSearchTerm("");
3715
+ setIsSearchCollapsed(function (collapsed) {
3716
+ return !collapsed;
3717
+ });
3718
+ },
3719
+ tooltipProps: {
3720
+ content: t("neetoFilters.segments.searchSegments"),
3721
+ position: "top"
3722
+ }
3723
+ }, {
3724
+ icon: neetoIcons.Settings,
3725
+ onClick: function onClick() {
3726
+ setIsFilterPaneOpen(false);
3727
+ setIsSegmentsPaneOpen(true);
3728
+ },
3729
+ tooltipProps: {
3730
+ content: t("neetoFilters.segments.manageSegments"),
3731
+ position: "top"
3732
+ }
3733
+ }];
3734
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].SubTitle, {
3735
+ iconProps: iconProps
3736
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3737
+ component: "h4",
3738
+ style: "h5",
3739
+ textTransform: "uppercase",
3740
+ weight: "bold"
3741
+ }, t("neetoFilters.common.segments"))), /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Search, {
3742
+ autoFocus: true,
3743
+ isCollapsed: isSearchCollapsed,
3744
+ placeholder: t("neetoFilters.segments.searchSegments"),
3745
+ value: searchTerm,
3746
+ onChange: function onChange(_ref2) {
3747
+ var value = _ref2.target.value;
3748
+ return setSearchTerm(value);
3749
+ },
3750
+ onCollapse: function onCollapse() {
3751
+ setSearchTerm("");
3752
+ setIsSearchCollapsed(true);
3753
+ }
3754
+ }), /*#__PURE__*/React__default["default"].createElement(MenuBlocks$1, {
3755
+ columns: columns,
3756
+ defaultSegmentName: defaultSegmentName,
3757
+ entity: entity,
3758
+ searchTerm: debouncedSearchTerm
3759
+ }), /*#__PURE__*/React__default["default"].createElement(ManagePane, {
3760
+ columns: columns,
3761
+ defaultSegmentName: defaultSegmentName,
3762
+ entity: entity,
3763
+ isOpen: isSegmentsPaneOpen,
3764
+ onClose: function onClose() {
3765
+ return setIsSegmentsPaneOpen(false);
3766
+ }
3767
+ }));
3768
+ }();
3725
3769
  };
3726
3770
  var index = /*#__PURE__*/React__default["default"].memo(Segments);
3727
3771