@commercetools-uikit/filters 19.24.0 → 19.25.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.
@@ -11,6 +11,8 @@ var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/insta
11
11
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
12
12
  var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/sort');
13
13
  var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
14
+ var _Set = require('@babel/runtime-corejs3/core-js-stable/set');
15
+ var _Array$from = require('@babel/runtime-corejs3/core-js-stable/array/from');
14
16
  var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
15
17
  var react$1 = require('react');
16
18
  var Popover = require('@radix-ui/react-popover');
@@ -25,7 +27,6 @@ var jsxRuntime = require('@emotion/react/jsx-runtime');
25
27
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
26
28
  var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
27
29
  var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
28
- var _Array$from = require('@babel/runtime-corejs3/core-js-stable/array/from');
29
30
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
30
31
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
31
32
  var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
@@ -61,6 +62,8 @@ var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceP
61
62
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
62
63
  var _sortInstanceProperty__default = /*#__PURE__*/_interopDefault(_sortInstanceProperty);
63
64
  var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
65
+ var _Set__default = /*#__PURE__*/_interopDefault(_Set);
66
+ var _Array$from__default = /*#__PURE__*/_interopDefault(_Array$from);
64
67
  var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
65
68
  var Popover__namespace = /*#__PURE__*/_interopNamespace(Popover);
66
69
  var CollapsibleMotion__default = /*#__PURE__*/_interopDefault(CollapsibleMotion);
@@ -68,7 +71,6 @@ var FlatButton__default = /*#__PURE__*/_interopDefault(FlatButton);
68
71
  var SelectInput__default = /*#__PURE__*/_interopDefault(SelectInput);
69
72
  var Spacings__default = /*#__PURE__*/_interopDefault(Spacings);
70
73
  var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
71
- var _Array$from__default = /*#__PURE__*/_interopDefault(_Array$from);
72
74
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
73
75
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
74
76
  var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
@@ -460,8 +462,7 @@ function Filters(_ref) {
460
462
  const visibleFiltersFromProps = _sortInstanceProperty__default["default"](_context2 = _filterInstanceProperty__default["default"](filters).call(filters, _ref4 => {
461
463
  let key = _ref4.key,
462
464
  isPersistent = _ref4.isPersistent;
463
- const isVisible = Boolean(isPersistent) || _includesInstanceProperty__default["default"](appliedFilterKeys).call(appliedFilterKeys, key);
464
- return isVisible;
465
+ return Boolean(isPersistent) || _includesInstanceProperty__default["default"](appliedFilterKeys).call(appliedFilterKeys, key);
465
466
  })
466
467
  // persistent filters should be first in filter list
467
468
  ).call(_context2, _ref5 => {
@@ -478,6 +479,28 @@ function Filters(_ref) {
478
479
  localVisibleFilters = _useState4[0],
479
480
  setLocalVisibleFilters = _useState4[1];
480
481
 
482
+ // Update localVisibleFilters if appliedFilters or filters prop changes
483
+ react$1.useEffect(() => {
484
+ var _context3;
485
+ const allFilterKeys = _mapInstanceProperty__default["default"](filters).call(filters, f => f.key);
486
+ const persistedFilterKeys = _mapInstanceProperty__default["default"](_context3 = _filterInstanceProperty__default["default"](filters).call(filters, filter => filter.isPersistent)).call(_context3, filter => filter.key);
487
+ const appliedFilterKeysWithValues = _mapInstanceProperty__default["default"](appliedFilters).call(appliedFilters, af => af.filterKey);
488
+
489
+ // Calculate keys that *must* be visible based on props
490
+ const requiredVisibleKeys = new _Set__default["default"]([...persistedFilterKeys, ...appliedFilterKeysWithValues]);
491
+
492
+ // Update state: keep existing keys, add required keys, remove keys no longer in props.filters
493
+ setLocalVisibleFilters(currentVisibleFilters => {
494
+ var _context4;
495
+ const combinedKeys = new _Set__default["default"]([...currentVisibleFilters, ...requiredVisibleKeys]);
496
+ // Ensure all keys in the final state actually exist in the filters prop
497
+ return _filterInstanceProperty__default["default"](_context4 = _Array$from__default["default"](combinedKeys)).call(_context4, key => _includesInstanceProperty__default["default"](allFilterKeys).call(allFilterKeys, key));
498
+ });
499
+
500
+ // Update the ref for persisted keys (used elsewhere)
501
+ persistedFiltersRef.current = persistedFilterKeys;
502
+ }, [appliedFilters, filters]); // Keep dependencies correct
503
+
481
504
  //update localVisibleFilters if persisted filter count changes
482
505
  if (persistedFiltersRef.current.length !== persistedFilterKeys.length) {
483
506
  setLocalVisibleFilters(_mapInstanceProperty__default["default"](visibleFiltersFromProps).call(visibleFiltersFromProps, _ref7 => {
@@ -503,7 +526,7 @@ function Filters(_ref) {
503
526
  label: intl.formatMessage(messages.filtersButtonLabel),
504
527
  icon: jsxRuntime.jsx(icons.FilterIcon, {}),
505
528
  onClick: handleFiltersClick
506
- }), appliedFilters.length > 1 && !showFilterControls && jsxRuntime.jsx(Badge, {
529
+ }), appliedFilters.length > 0 && !showFilterControls && jsxRuntime.jsx(Badge, {
507
530
  id: 'uikit-filters-selected-filter-count',
508
531
  label: `${appliedFilters.length}`
509
532
  })]
@@ -570,8 +593,8 @@ function Filters(_ref) {
570
593
  appearance: "filter",
571
594
  options: getFilterOptions(filters, filterGroups),
572
595
  onChange: e => {
573
- var _context3;
574
- setLocalVisibleFilters(_concatInstanceProperty__default["default"](_context3 = Array.prototype).call(_context3, e.target.value ? e.target.value : []));
596
+ var _context5;
597
+ setLocalVisibleFilters(_concatInstanceProperty__default["default"](_context5 = Array.prototype).call(_context5, e.target.value ? e.target.value : []));
575
598
  },
576
599
  value: localVisibleFilters,
577
600
  isMulti: true
@@ -604,7 +627,7 @@ Filters.propTypes = {};
604
627
  Filters.displayName = 'Filters';
605
628
 
606
629
  // NOTE: This string will be replaced on build time with the package version.
607
- var version = "19.24.0";
630
+ var version = "19.25.0";
608
631
 
609
632
  exports["default"] = Filters;
610
633
  exports.version = version;