@synerise/ds-date-range-picker 0.11.0 → 0.11.4
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/CHANGELOG.md +32 -0
- package/dist/DateRangePicker.js +9 -24
- package/dist/DateRangePicker.styles.js +1 -1
- package/dist/Footer/Footer.js +3 -5
- package/dist/RangeFilter/Filters/MonthlyFilter/MonthlyFilter.js +166 -204
- package/dist/RangeFilter/Filters/WeeklyFilter/WeeklyFilter.js +1 -1
- package/dist/RangeFilter/Filters/new/Daily/Daily.js +5 -17
- package/dist/RangeFilter/Filters/new/Weekly/Weekly.js +17 -38
- package/dist/RangeFilter/Filters/new/Weekly/utils.js +6 -3
- package/dist/RangeFilter/Filters/new/hooks/useShiftAndControlKeys.js +6 -20
- package/dist/RangeFilter/RangeFilter.js +110 -138
- package/dist/RangeFilter/Shared/AddButton/AddButton.js +2 -4
- package/dist/RangeFilter/Shared/FilterDropdown/FilterDropdown.js +3 -3
- package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.js +1 -1
- package/dist/RangeFilter/Shared/SaveFilterForm/SaveFilterForm.js +5 -19
- package/dist/RangeFilter/Shared/SelectionCount/SelectionCount.js +1 -1
- package/dist/RangeFilter/Shared/TimeWindow/Day/Day.js +5 -20
- package/dist/RangeFilter/Shared/TimeWindow/Header/Header.js +1 -1
- package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.js +8 -22
- package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.js +9 -22
- package/dist/RangeFilter/Shared/TimeWindow/RangeSummary/RangeSummary.js +1 -1
- package/dist/RangeFilter/Shared/TimeWindow/TimeWindow.js +148 -182
- package/dist/RangeFilter/Shared/TimeWindow/utils.js +2 -2
- package/dist/RangeFilter/constants.js +1 -1
- package/dist/RangeFilter/utils.js +43 -61
- package/dist/RangePicker/RangePicker.js +100 -118
- package/dist/RangePicker/utils.js +8 -3
- package/dist/RangePickerInput/RangePickerInput.js +5 -18
- package/dist/RangePickerInput/RangePickerInput.styles.js +1 -1
- package/dist/RawDateRangePicker.js +116 -139
- package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.js +1 -1
- package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.js +1 -1
- package/dist/RelativeRangePicker/Elements/ModeDropdown/ModeDropdown.js +3 -16
- package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.js +1 -1
- package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.js +3 -16
- package/dist/RelativeRangePicker/Elements/TimestampRange/TimestampRange.js +14 -30
- package/dist/RelativeRangePicker/RelativeRangePicker.js +80 -115
- package/dist/RelativeRangePicker/RelativeRangePicker.styles.js +3 -5
- package/dist/RelativeRangePicker/utils.js +1 -1
- package/dist/constants.js +1 -13
- package/dist/dateUtils/format.js +5 -2
- package/dist/dateUtils/getRelativePresetForRange.js +1 -1
- package/dist/utils.js +55 -55
- package/package.json +8 -8
|
@@ -1,29 +1,9 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
|
|
5
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6
|
-
|
|
7
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
-
|
|
9
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
10
2
|
|
|
11
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
12
4
|
|
|
13
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
6
|
|
|
15
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
16
|
-
|
|
17
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
18
|
-
|
|
19
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
20
|
-
|
|
21
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
22
|
-
|
|
23
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
24
|
-
|
|
25
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
26
|
-
|
|
27
7
|
import * as React from 'react';
|
|
28
8
|
import { useIntl } from 'react-intl';
|
|
29
9
|
import * as dayjs from 'dayjs';
|
|
@@ -61,21 +41,18 @@ var Weekly = function Weekly(_ref) {
|
|
|
61
41
|
}, [valueSelectionMode]);
|
|
62
42
|
|
|
63
43
|
var _React$useState = React.useState(Object.keys(value)),
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
setFilteredSchedule = _React$useState2[1];
|
|
44
|
+
filteredSchedule = _React$useState[0],
|
|
45
|
+
setFilteredSchedule = _React$useState[1];
|
|
67
46
|
|
|
68
|
-
var _React$
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
setActiveDays = _React$useState4[1];
|
|
47
|
+
var _React$useState2 = React.useState([]),
|
|
48
|
+
activeDays = _React$useState2[0],
|
|
49
|
+
setActiveDays = _React$useState2[1];
|
|
72
50
|
|
|
73
51
|
var ref = React.useRef();
|
|
74
52
|
|
|
75
53
|
var _useShiftAndControlKe = useShiftAndControlKeys(ref),
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
shiftKeyPressed = _useShiftAndControlKe2[1];
|
|
54
|
+
controlKeyPressed = _useShiftAndControlKe[0],
|
|
55
|
+
shiftKeyPressed = _useShiftAndControlKe[1];
|
|
79
56
|
|
|
80
57
|
var intl = useIntl();
|
|
81
58
|
var allKeys = React.useMemo(function () {
|
|
@@ -108,14 +85,14 @@ var Weekly = function Weekly(_ref) {
|
|
|
108
85
|
|
|
109
86
|
if (dayKey instanceof Array) {
|
|
110
87
|
dayKey.forEach(function (day) {
|
|
111
|
-
updatedSchedule[guid][day] = _objectSpread(
|
|
88
|
+
updatedSchedule[guid][day] = _objectSpread({}, value[guid][day], {
|
|
112
89
|
restricted: true,
|
|
113
90
|
start: dayjs(dayValue[0]).format(DEFAULT_TIME_FORMAT),
|
|
114
91
|
stop: dayjs(dayValue[1]).format(DEFAULT_TIME_FORMAT)
|
|
115
92
|
});
|
|
116
93
|
});
|
|
117
94
|
} else {
|
|
118
|
-
updatedSchedule[guid][dayKey] = _objectSpread(
|
|
95
|
+
updatedSchedule[guid][dayKey] = _objectSpread({}, value[guid][dayKey], {
|
|
119
96
|
restricted: true,
|
|
120
97
|
start: dayjs(dayValue[0]).format(DEFAULT_TIME_FORMAT),
|
|
121
98
|
stop: dayjs(dayValue[1]).format(DEFAULT_TIME_FORMAT)
|
|
@@ -136,7 +113,7 @@ var Weekly = function Weekly(_ref) {
|
|
|
136
113
|
var handleModeChange = React.useCallback(function (selectedMode, dayKeys, guid) {
|
|
137
114
|
var updatedSchedule = value;
|
|
138
115
|
dayKeys.forEach(function (day) {
|
|
139
|
-
updatedSchedule[guid][day] = _objectSpread(
|
|
116
|
+
updatedSchedule[guid][day] = _objectSpread({}, value[guid][day], {
|
|
140
117
|
mode: selectedMode
|
|
141
118
|
});
|
|
142
119
|
});
|
|
@@ -151,7 +128,7 @@ var Weekly = function Weekly(_ref) {
|
|
|
151
128
|
}, [value, onChange]);
|
|
152
129
|
var dayFormatter = React.useCallback(function (dayKey) {
|
|
153
130
|
return intl.formatMessage({
|
|
154
|
-
id: "DS.DATE-RANGE-PICKER.WEEKDAYS-SHORT-"
|
|
131
|
+
id: "DS.DATE-RANGE-PICKER.WEEKDAYS-SHORT-" + dayKey
|
|
155
132
|
});
|
|
156
133
|
}, [intl]);
|
|
157
134
|
var checkDay = React.useCallback(function (dayKey) {
|
|
@@ -195,7 +172,7 @@ var Weekly = function Weekly(_ref) {
|
|
|
195
172
|
var updatedActiveDay = [];
|
|
196
173
|
|
|
197
174
|
if (controlKeyPressed) {
|
|
198
|
-
updatedActiveDay = activeDays.includes(dayKey) ? activeDays : [].concat(
|
|
175
|
+
updatedActiveDay = activeDays.includes(dayKey) ? activeDays : [].concat(activeDays, [dayKey]);
|
|
199
176
|
} else if (activeDays.length > 0 && shiftKeyPressed) {
|
|
200
177
|
updatedActiveDay = activeDays[0] < dayKey ? range(+activeDays[0], +dayKey + 1) : range(+dayKey, +activeDays[0] + 1);
|
|
201
178
|
} else {
|
|
@@ -232,6 +209,8 @@ var Weekly = function Weekly(_ref) {
|
|
|
232
209
|
});
|
|
233
210
|
}, [activeDays, intl, getDayLabel, handleToggleDay, isDayRestricted, disabled]);
|
|
234
211
|
var handleRangeAdd = React.useCallback(function () {
|
|
212
|
+
var _objectSpread2;
|
|
213
|
+
|
|
235
214
|
var updatedDay = {};
|
|
236
215
|
var guid = Object.keys(value).find(function (key) {
|
|
237
216
|
return activeDays.every(function (day) {
|
|
@@ -243,7 +222,7 @@ var Weekly = function Weekly(_ref) {
|
|
|
243
222
|
});
|
|
244
223
|
var restOfScheduleObject = guid ? value[guid] : EMPTY_OBJECT;
|
|
245
224
|
|
|
246
|
-
var updatedSchedule = _objectSpread(
|
|
225
|
+
var updatedSchedule = _objectSpread({}, value, (_objectSpread2 = {}, _objectSpread2[guid || uuid()] = _objectSpread({}, restOfScheduleObject, {}, updatedDay), _objectSpread2));
|
|
247
226
|
|
|
248
227
|
onChange(updatedSchedule);
|
|
249
228
|
}, [value, activeDays, defaultDayValue, onChange]);
|
|
@@ -278,7 +257,7 @@ var Weekly = function Weekly(_ref) {
|
|
|
278
257
|
return /*#__PURE__*/React.createElement(RangeFormContainer, {
|
|
279
258
|
days: EMPTY_OBJECT,
|
|
280
259
|
onChange: NOOP,
|
|
281
|
-
key: "value-range-"
|
|
260
|
+
key: "value-range-" + guid,
|
|
282
261
|
onDayTimeChange: function onDayTimeChange(dayValue, dayKey) {
|
|
283
262
|
handleDayTimeChange(dayValue, dayKey, guid);
|
|
284
263
|
},
|
|
@@ -24,14 +24,17 @@ export var haveActiveDaysCommonRange = function haveActiveDaysCommonRange(days,
|
|
|
24
24
|
return false;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
var areRangeDifferent = (currentDay
|
|
27
|
+
var areRangeDifferent = (currentDay == null ? void 0 : currentDay.start) !== ((_previousDay = previousDay) == null ? void 0 : _previousDay.start) || (currentDay == null ? void 0 : currentDay.stop) !== ((_previousDay2 = previousDay) == null ? void 0 : _previousDay2.stop);
|
|
28
28
|
previousDay = currentDay;
|
|
29
29
|
return areRangeDifferent;
|
|
30
30
|
});
|
|
31
31
|
return !activeDaysHaveDifferentRanges;
|
|
32
32
|
};
|
|
33
|
-
export var canAddAnotherRange = function canAddAnotherRange(schedule, activeDays) {
|
|
34
|
-
|
|
33
|
+
export var canAddAnotherRange = function canAddAnotherRange(schedule, activeDays, maxRanges) {
|
|
34
|
+
if (maxRanges === void 0) {
|
|
35
|
+
maxRanges = DEFAULT_MAX_ENTRIES;
|
|
36
|
+
}
|
|
37
|
+
|
|
35
38
|
return Object.keys(schedule).length < maxRanges || Object.keys(schedule).some(function (key) {
|
|
36
39
|
return activeDays.every(function (day) {
|
|
37
40
|
return schedule[key][day] === undefined;
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
-
|
|
3
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
|
|
5
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
-
|
|
7
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
8
|
-
|
|
9
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
10
|
-
|
|
11
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
|
-
|
|
13
1
|
import * as React from 'react';
|
|
14
2
|
var KEYS; // eslint-disable-next-line import/prefer-default-export
|
|
15
3
|
|
|
@@ -21,17 +9,15 @@ var KEYS; // eslint-disable-next-line import/prefer-default-export
|
|
|
21
9
|
|
|
22
10
|
export var useShiftAndControlKeys = function useShiftAndControlKeys(ref) {
|
|
23
11
|
var _React$useState = React.useState(false),
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
setControlPressed = _React$useState2[1];
|
|
12
|
+
controlPressed = _React$useState[0],
|
|
13
|
+
setControlPressed = _React$useState[1];
|
|
27
14
|
|
|
28
|
-
var _React$
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
setShiftPressed = _React$useState4[1];
|
|
15
|
+
var _React$useState2 = React.useState(false),
|
|
16
|
+
shiftPressed = _React$useState2[0],
|
|
17
|
+
setShiftPressed = _React$useState2[1];
|
|
32
18
|
|
|
33
19
|
React.useEffect(function () {
|
|
34
|
-
if (ref
|
|
20
|
+
if (ref != null && ref.current) {
|
|
35
21
|
ref.current.addEventListener('keydown', function (e) {
|
|
36
22
|
if (e.key === KEYS.SHIFT) {
|
|
37
23
|
setShiftPressed(true);
|
|
@@ -1,42 +1,12 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
4
|
-
|
|
5
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6
|
-
|
|
7
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
|
-
|
|
9
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
|
-
|
|
11
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
12
|
-
|
|
13
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
14
|
-
|
|
15
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
16
2
|
|
|
17
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
18
4
|
|
|
19
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
20
|
-
|
|
21
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
22
|
-
|
|
23
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
24
|
-
|
|
25
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
26
|
-
|
|
27
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
28
|
-
|
|
29
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
30
|
-
|
|
31
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
32
|
-
|
|
33
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
34
|
-
|
|
35
5
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
36
6
|
|
|
37
|
-
function
|
|
7
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
|
|
38
8
|
|
|
39
|
-
function
|
|
9
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
40
10
|
|
|
41
11
|
import * as React from 'react';
|
|
42
12
|
import { cloneDeep } from 'lodash';
|
|
@@ -51,20 +21,16 @@ import FilterDropdown from './Shared/FilterDropdown/FilterDropdown';
|
|
|
51
21
|
import SaveFilterForm from './Shared/SaveFilterForm/SaveFilterForm';
|
|
52
22
|
|
|
53
23
|
var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var _super = _createSuper(RangeFilter);
|
|
24
|
+
_inheritsLoose(RangeFilter, _React$PureComponent);
|
|
57
25
|
|
|
58
26
|
function RangeFilter(props) {
|
|
59
|
-
var _props$value;
|
|
27
|
+
var _props$value, _this$state;
|
|
60
28
|
|
|
61
29
|
var _this;
|
|
62
30
|
|
|
63
|
-
|
|
31
|
+
_this = _React$PureComponent.call(this, props) || this;
|
|
64
32
|
|
|
65
|
-
_this
|
|
66
|
-
|
|
67
|
-
_this.handleApply = function () {
|
|
33
|
+
_defineProperty(_assertThisInitialized(_this), "handleApply", function () {
|
|
68
34
|
var _assertThisInitialize = _assertThisInitialized(_this),
|
|
69
35
|
state = _assertThisInitialize.state;
|
|
70
36
|
|
|
@@ -72,36 +38,38 @@ var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
72
38
|
var activeType = state.activeType;
|
|
73
39
|
var filter = state[String(activeType)];
|
|
74
40
|
onApply && onApply(normalizeValue(filter));
|
|
75
|
-
};
|
|
41
|
+
});
|
|
76
42
|
|
|
77
|
-
_this
|
|
43
|
+
_defineProperty(_assertThisInitialized(_this), "handleCancel", function () {
|
|
78
44
|
var onCancel = _this.props.onCancel;
|
|
79
45
|
onCancel && onCancel();
|
|
80
|
-
};
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
_defineProperty(_assertThisInitialized(_this), "handleTypeChange", function (type) {
|
|
49
|
+
var _this$setState;
|
|
81
50
|
|
|
82
|
-
_this.handleTypeChange = function (type) {
|
|
83
51
|
var _assertThisInitialize2 = _assertThisInitialized(_this),
|
|
84
52
|
state = _assertThisInitialize2.state;
|
|
85
53
|
|
|
86
54
|
var previousValue = state[type];
|
|
87
|
-
var previousDefinition = previousValue
|
|
55
|
+
var previousDefinition = previousValue == null ? void 0 : previousValue.definition;
|
|
88
56
|
|
|
89
|
-
_this.setState(
|
|
57
|
+
_this.setState((_this$setState = {
|
|
90
58
|
activeType: type
|
|
91
|
-
}, type
|
|
59
|
+
}, _this$setState[type] = _objectSpread({
|
|
92
60
|
definition: previousDefinition || cloneDeep(TYPES_DATA[type].definition)
|
|
93
|
-
}, previousValue
|
|
61
|
+
}, previousValue, {
|
|
94
62
|
type: type
|
|
95
|
-
})));
|
|
96
|
-
};
|
|
63
|
+
}), _this$setState));
|
|
64
|
+
});
|
|
97
65
|
|
|
98
|
-
_this
|
|
66
|
+
_defineProperty(_assertThisInitialized(_this), "handleRangeCopy", function (range) {
|
|
99
67
|
_this.setState({
|
|
100
68
|
rangeClipboard: range
|
|
101
69
|
});
|
|
102
|
-
};
|
|
70
|
+
});
|
|
103
71
|
|
|
104
|
-
_this
|
|
72
|
+
_defineProperty(_assertThisInitialized(_this), "handleFilterSave", function (filterName) {
|
|
105
73
|
var _assertThisInitialize3 = _assertThisInitialized(_this),
|
|
106
74
|
state = _assertThisInitialize3.state;
|
|
107
75
|
|
|
@@ -112,17 +80,17 @@ var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
112
80
|
var currentFilter = state[activeType];
|
|
113
81
|
var filterList = savedFilters || [];
|
|
114
82
|
|
|
115
|
-
var filter = _objectSpread(
|
|
83
|
+
var filter = _objectSpread({}, currentFilter, {
|
|
116
84
|
type: activeType,
|
|
117
85
|
name: filterName,
|
|
118
86
|
id: uuid()
|
|
119
87
|
});
|
|
120
88
|
|
|
121
89
|
var filterWithUniqueName = addSuffixToDuplicate(filterList, filter);
|
|
122
|
-
onFilterSave && onFilterSave([].concat(
|
|
123
|
-
};
|
|
90
|
+
onFilterSave && onFilterSave([].concat(filterList, [filterWithUniqueName]));
|
|
91
|
+
});
|
|
124
92
|
|
|
125
|
-
_this
|
|
93
|
+
_defineProperty(_assertThisInitialized(_this), "handleSavedFilterRemove", function (removedFilterId) {
|
|
126
94
|
var _this$props2 = _this.props,
|
|
127
95
|
savedFilters = _this$props2.savedFilters,
|
|
128
96
|
onFilterSave = _this$props2.onFilterSave;
|
|
@@ -130,102 +98,106 @@ var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
130
98
|
return f.id !== removedFilterId;
|
|
131
99
|
}) : [];
|
|
132
100
|
onFilterSave && onFilterSave(listWithoutRemovedId);
|
|
133
|
-
};
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
_defineProperty(_assertThisInitialized(_this), "handleSavedFilterSelect", function (selected) {
|
|
104
|
+
var _this$setState2;
|
|
134
105
|
|
|
135
|
-
|
|
136
|
-
_this.setState(_defineProperty({
|
|
106
|
+
_this.setState((_this$setState2 = {
|
|
137
107
|
activeType: selected.type
|
|
138
|
-
}, selected.type,
|
|
139
|
-
};
|
|
108
|
+
}, _this$setState2[selected.type] = selected, _this$setState2));
|
|
109
|
+
});
|
|
140
110
|
|
|
141
|
-
var valueType = props
|
|
111
|
+
var valueType = props == null ? void 0 : (_props$value = props.value) == null ? void 0 : _props$value.type; // eslint-disable-next-line react/state-in-constructor
|
|
142
112
|
|
|
143
|
-
_this.state =
|
|
113
|
+
_this.state = (_this$state = {
|
|
144
114
|
activeType: valueType
|
|
145
|
-
}, String(valueType)
|
|
115
|
+
}, _this$state[String(valueType)] = _objectSpread({}, denormalizeValue(props.value)), _this$state);
|
|
146
116
|
return _this;
|
|
147
117
|
}
|
|
148
118
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}, intl.formatMessage({
|
|
186
|
-
id: TYPES_DATA[key].labelTranslationKey
|
|
187
|
-
}));
|
|
188
|
-
})), /*#__PURE__*/React.createElement(S.MainComponentWrapper, null, Component && /*#__PURE__*/React.createElement(Component, {
|
|
189
|
-
intl: intl,
|
|
190
|
-
texts: texts,
|
|
191
|
-
value: definition,
|
|
192
|
-
onChange: function onChange(def) {
|
|
193
|
-
var updatedFilter = _defineProperty({}, activeType, _objectSpread(_objectSpread({}, activeValue), {}, {
|
|
194
|
-
definition: def
|
|
195
|
-
}));
|
|
196
|
-
|
|
197
|
-
_this2.setState(updatedFilter);
|
|
198
|
-
},
|
|
199
|
-
onRangeCopy: this.handleRangeCopy,
|
|
200
|
-
rangeClipboard: rangeClipboard,
|
|
201
|
-
valueSelectionModes: valueSelectionModes
|
|
202
|
-
}))), !hideFooter && /*#__PURE__*/React.createElement(S.Footer, null, /*#__PURE__*/React.createElement(SaveFilterForm, {
|
|
203
|
-
onFilterSave: this.handleFilterSave
|
|
204
|
-
}), /*#__PURE__*/React.createElement(S.FooterSeparator, null), /*#__PURE__*/React.createElement(Button, {
|
|
205
|
-
type: "ghost",
|
|
206
|
-
onClick: this.handleCancel
|
|
119
|
+
var _proto = RangeFilter.prototype;
|
|
120
|
+
|
|
121
|
+
_proto.render = function render() {
|
|
122
|
+
var _this2 = this;
|
|
123
|
+
|
|
124
|
+
var state = this.state;
|
|
125
|
+
var activeType = state.activeType,
|
|
126
|
+
rangeClipboard = state.rangeClipboard;
|
|
127
|
+
var activeValue = state[activeType];
|
|
128
|
+
var definition = activeValue.definition;
|
|
129
|
+
var Component = activeType && TYPES_DATA[activeType] && TYPES_DATA[activeType].component;
|
|
130
|
+
var _this$props3 = this.props,
|
|
131
|
+
intl = _this$props3.intl,
|
|
132
|
+
savedFilters = _this$props3.savedFilters,
|
|
133
|
+
texts = _this$props3.texts,
|
|
134
|
+
hideFooter = _this$props3.hideFooter,
|
|
135
|
+
valueSelectionModes = _this$props3.valueSelectionModes;
|
|
136
|
+
return /*#__PURE__*/React.createElement(S.Container, null, /*#__PURE__*/React.createElement(S.Header, null, /*#__PURE__*/React.createElement(S.Title, null, intl.formatMessage({
|
|
137
|
+
id: 'DS.DATE-RANGE-PICKER.DATES_FILTER',
|
|
138
|
+
defaultMessage: 'Date filter'
|
|
139
|
+
})), !!(savedFilters != null && savedFilters.length) && /*#__PURE__*/React.createElement(FilterDropdown, {
|
|
140
|
+
filters: savedFilters,
|
|
141
|
+
onFilterSelect: this.handleSavedFilterSelect,
|
|
142
|
+
onFilterRemove: this.handleSavedFilterRemove,
|
|
143
|
+
label: texts == null ? void 0 : texts.savedFiltersTrigger,
|
|
144
|
+
removeTooltip: texts == null ? void 0 : texts.remove
|
|
145
|
+
})), /*#__PURE__*/React.createElement(S.Body, null, /*#__PURE__*/React.createElement(ButtonGroup, {
|
|
146
|
+
fullWidth: true,
|
|
147
|
+
size: "large"
|
|
148
|
+
}, Object.values(TYPES).map(function (key) {
|
|
149
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
150
|
+
key: key,
|
|
151
|
+
type: activeType === key ? 'primary' : undefined,
|
|
152
|
+
onClick: function onClick() {
|
|
153
|
+
return _this2.handleTypeChange(key);
|
|
154
|
+
}
|
|
207
155
|
}, intl.formatMessage({
|
|
208
|
-
id:
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
156
|
+
id: TYPES_DATA[key].labelTranslationKey
|
|
157
|
+
}));
|
|
158
|
+
})), /*#__PURE__*/React.createElement(S.MainComponentWrapper, null, Component && /*#__PURE__*/React.createElement(Component, {
|
|
159
|
+
intl: intl,
|
|
160
|
+
texts: texts,
|
|
161
|
+
value: definition,
|
|
162
|
+
onChange: function onChange(def) {
|
|
163
|
+
var _updatedFilter;
|
|
164
|
+
|
|
165
|
+
var updatedFilter = (_updatedFilter = {}, _updatedFilter[activeType] = _objectSpread({}, activeValue, {
|
|
166
|
+
definition: def
|
|
167
|
+
}), _updatedFilter);
|
|
168
|
+
|
|
169
|
+
_this2.setState(updatedFilter);
|
|
170
|
+
},
|
|
171
|
+
onRangeCopy: this.handleRangeCopy,
|
|
172
|
+
rangeClipboard: rangeClipboard,
|
|
173
|
+
valueSelectionModes: valueSelectionModes
|
|
174
|
+
}))), !hideFooter && /*#__PURE__*/React.createElement(S.Footer, null, /*#__PURE__*/React.createElement(SaveFilterForm, {
|
|
175
|
+
onFilterSave: this.handleFilterSave
|
|
176
|
+
}), /*#__PURE__*/React.createElement(S.FooterSeparator, null), /*#__PURE__*/React.createElement(Button, {
|
|
177
|
+
type: "ghost",
|
|
178
|
+
onClick: this.handleCancel
|
|
179
|
+
}, intl.formatMessage({
|
|
180
|
+
id: 'DS.DATE-RANGE-PICKER.CANCEL',
|
|
181
|
+
defaultMessage: 'Cancel'
|
|
182
|
+
})), /*#__PURE__*/React.createElement(Button, {
|
|
183
|
+
type: "primary",
|
|
184
|
+
disabled: !isValidValue(activeValue),
|
|
185
|
+
onClick: this.handleApply
|
|
186
|
+
}, intl.formatMessage({
|
|
187
|
+
id: 'DS.DATE-RANGE-PICKER.APPLY',
|
|
188
|
+
defaultMessage: 'Apply'
|
|
189
|
+
}))));
|
|
190
|
+
};
|
|
220
191
|
|
|
221
192
|
return RangeFilter;
|
|
222
193
|
}(React.PureComponent); // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
|
|
223
194
|
// @ts-ignore
|
|
224
195
|
|
|
225
196
|
|
|
226
|
-
RangeFilter
|
|
197
|
+
_defineProperty(RangeFilter, "defaultProps", {
|
|
227
198
|
value: _objectSpread({
|
|
228
199
|
type: TYPES.DAILY
|
|
229
200
|
}, TYPES_DATA.DAILY.definition)
|
|
230
|
-
};
|
|
201
|
+
});
|
|
202
|
+
|
|
231
203
|
export default injectIntl(RangeFilter);
|
|
@@ -2,8 +2,6 @@ var _excluded = ["label"];
|
|
|
2
2
|
|
|
3
3
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
4
|
|
|
5
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
6
|
-
|
|
7
5
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
8
6
|
|
|
9
7
|
import * as React from 'react';
|
|
@@ -12,7 +10,7 @@ import Icon, { Add3M } from '@synerise/ds-icon';
|
|
|
12
10
|
|
|
13
11
|
var AddButton = function AddButton(_ref) {
|
|
14
12
|
var label = _ref.label,
|
|
15
|
-
rest =
|
|
13
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
16
14
|
|
|
17
15
|
var icon = React.useMemo(function () {
|
|
18
16
|
return /*#__PURE__*/React.createElement(Icon, {
|
|
@@ -25,4 +23,4 @@ var AddButton = function AddButton(_ref) {
|
|
|
25
23
|
}, rest), icon, label);
|
|
26
24
|
};
|
|
27
25
|
|
|
28
|
-
export default
|
|
26
|
+
export default React.memo(AddButton);
|
|
@@ -15,8 +15,8 @@ var FilterDropdown = function FilterDropdown(_ref) {
|
|
|
15
15
|
var overlay = React.useMemo(function () {
|
|
16
16
|
return /*#__PURE__*/React.createElement(S.DropdownMenu, null, filters.map(function (filter) {
|
|
17
17
|
return /*#__PURE__*/React.createElement(S.DropdownMenuItem, {
|
|
18
|
-
key: filter
|
|
19
|
-
text: filter
|
|
18
|
+
key: filter == null ? void 0 : filter.name,
|
|
19
|
+
text: filter == null ? void 0 : filter.name,
|
|
20
20
|
onClick: function onClick() {
|
|
21
21
|
onFilterSelect && onFilterSelect(filter);
|
|
22
22
|
},
|
|
@@ -24,7 +24,7 @@ var FilterDropdown = function FilterDropdown(_ref) {
|
|
|
24
24
|
title: removeTooltip
|
|
25
25
|
}, /*#__PURE__*/React.createElement(S.RemoveIconWrapper, {
|
|
26
26
|
onClick: function onClick() {
|
|
27
|
-
onFilterRemove && onFilterRemove(filter
|
|
27
|
+
onFilterRemove && onFilterRemove(filter == null ? void 0 : filter.id);
|
|
28
28
|
}
|
|
29
29
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
30
30
|
component: /*#__PURE__*/React.createElement(TrashS, null),
|
|
@@ -45,7 +45,7 @@ var RangeFilterStatus = function RangeFilterStatus(_ref) {
|
|
|
45
45
|
item: {
|
|
46
46
|
id: 'filter-trigger',
|
|
47
47
|
name: intl.formatMessage({
|
|
48
|
-
id: "DS.DATE-RANGE-PICKER."
|
|
48
|
+
id: "DS.DATE-RANGE-PICKER." + filter.type,
|
|
49
49
|
defaultMessage: 'Filter'
|
|
50
50
|
}),
|
|
51
51
|
tag: /*#__PURE__*/React.createElement(S.BadgeWrapper, null, /*#__PURE__*/React.createElement(Badge, {
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
-
|
|
3
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
|
|
5
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
-
|
|
7
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
8
|
-
|
|
9
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
10
|
-
|
|
11
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
|
-
|
|
13
1
|
import * as React from 'react';
|
|
14
2
|
import Button from '@synerise/ds-button';
|
|
15
3
|
import { RawInput } from '@synerise/ds-input';
|
|
@@ -21,14 +9,12 @@ var SaveFilterForm = function SaveFilterForm(_ref) {
|
|
|
21
9
|
var onFilterSave = _ref.onFilterSave;
|
|
22
10
|
|
|
23
11
|
var _React$useState = React.useState(false),
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
setActive = _React$useState2[1];
|
|
12
|
+
active = _React$useState[0],
|
|
13
|
+
setActive = _React$useState[1];
|
|
27
14
|
|
|
28
|
-
var _React$
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
setName = _React$useState4[1];
|
|
15
|
+
var _React$useState2 = React.useState(),
|
|
16
|
+
name = _React$useState2[0],
|
|
17
|
+
setName = _React$useState2[1];
|
|
32
18
|
|
|
33
19
|
var intl = useIntl();
|
|
34
20
|
var input = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RawInput, {
|
|
@@ -7,4 +7,4 @@ var SelectionCount = function SelectionCount(_ref) {
|
|
|
7
7
|
return /*#__PURE__*/React.createElement(S.Container, null, /*#__PURE__*/React.createElement("span", null, label, ":"), /*#__PURE__*/React.createElement(S.Count, null, selectedDayCount));
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
export default
|
|
10
|
+
export default React.memo(SelectionCount);
|