@synerise/ds-date-range-picker 0.31.10 → 0.32.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/DateRangePicker.js +8 -15
  3. package/dist/DateRangePicker.styles.d.ts +0 -2
  4. package/dist/DateRangePicker.styles.js +3 -8
  5. package/dist/DateRangePicker.types.d.ts +6 -2
  6. package/dist/Footer/Footer.d.ts +3 -32
  7. package/dist/Footer/Footer.js +8 -12
  8. package/dist/Footer/Footer.types.d.ts +4 -5
  9. package/dist/RangeFilter/Filters/MonthlyFilter/MonthlyFilter.js +35 -40
  10. package/dist/RangeFilter/Filters/new/Daily/Daily.js +3 -7
  11. package/dist/RangeFilter/Filters/new/Monthly/Monthly.js +40 -45
  12. package/dist/RangeFilter/Filters/new/Weekly/Weekly.js +7 -11
  13. package/dist/RangeFilter/RangeFilter.js +24 -28
  14. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.d.ts +13 -9
  15. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.js +2 -1
  16. package/dist/RangeFilter/Shared/SaveFilterForm/SaveFilterForm.styles.d.ts +2 -2
  17. package/dist/RangeFilter/Shared/TimeWindow/Day/Day.d.ts +1 -1
  18. package/dist/RangeFilter/Shared/TimeWindow/Day/Day.js +15 -16
  19. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.js +3 -1
  20. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.js +3 -7
  21. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.types.d.ts +1 -1
  22. package/dist/RangeFilter/Shared/TimeWindow/TimeWindow.js +69 -74
  23. package/dist/RangeFilter/utils.js +17 -21
  24. package/dist/RangePicker/RangePicker.js +48 -52
  25. package/dist/RangePicker/RangePicker.styles.d.ts +2 -2
  26. package/dist/RangePickerInput/RangePickerInput.js +3 -7
  27. package/dist/RawDateRangePicker.d.ts +5 -34
  28. package/dist/RawDateRangePicker.js +265 -321
  29. package/dist/RelativeRangePicker/Elements/CustomRangeForm/CustomRangeForm.d.ts +1 -1
  30. package/dist/RelativeRangePicker/Elements/CustomRangeForm/CustomRangeForm.types.d.ts +2 -2
  31. package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.d.ts +1 -1
  32. package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.js +2 -2
  33. package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.types.d.ts +1 -1
  34. package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.d.ts +1 -1
  35. package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.js +2 -2
  36. package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.types.d.ts +1 -1
  37. package/dist/RelativeRangePicker/Elements/ModeDropdown/ModeDropdown.d.ts +1 -1
  38. package/dist/RelativeRangePicker/Elements/ModeDropdown/ModeDropdown.js +6 -6
  39. package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.d.ts +1 -1
  40. package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.js +6 -6
  41. package/dist/RelativeRangePicker/Elements/TimestampRange/TimestampDuration/TimestampDuration.types.d.ts +1 -1
  42. package/dist/RelativeRangePicker/Elements/TimestampRange/TimestampRange.js +2 -6
  43. package/dist/RelativeRangePicker/RelativeRangePicker.js +24 -28
  44. package/dist/RelativeRangePicker/RelativeRangePicker.styles.js +1 -1
  45. package/dist/RelativeRangePicker/utils/findMatchingPreset.utils.js +2 -6
  46. package/dist/RelativeRangePicker/utils/updatePresetKey.utils.js +3 -7
  47. package/dist/modules.d.js +1 -1
  48. package/dist/style/index.css +1 -1
  49. package/dist/utils.js +4 -8
  50. package/package.json +24 -24
@@ -1,14 +1,7 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
2
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
3
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
4
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
8
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
9
- import React, { PureComponent } from 'react';
2
+ import React, { useState, useMemo, useCallback } from 'react';
10
3
  import { omitBy, isUndefined } from 'lodash';
11
- import { injectIntl } from 'react-intl';
4
+ import { useIntl } from 'react-intl';
12
5
  import fnsIsValid from 'date-fns/isValid';
13
6
  import fnsStartOfSecond from 'date-fns/startOfSecond';
14
7
  import { legacyParse } from '@date-fns/upgrade/v2';
@@ -24,39 +17,45 @@ import { getDefaultTexts, normalizeRange, toIsoString } from './utils';
24
17
  import RangeFilter from './RangeFilter/RangeFilter';
25
18
  import RangeFilterStatus from './RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus';
26
19
  import { isLifetime } from './RelativeRangePicker/Elements/RangeDropdown/RangeDropdown';
20
+ var isRelative = function isRelative(dateRange) {
21
+ var isLegacyCustom = Object.keys(dateRange).includes('key') && dateRange.key === undefined;
22
+ return dateRange.key && (CONST.RELATIVE_PRESETS.map(function (preset) {
23
+ return preset.key;
24
+ }).includes(dateRange.key) || dateRange.key === CONST.CUSTOM_RANGE_KEY) || isLegacyCustom;
25
+ };
27
26
  export function defaultValueTransformer(value) {
28
27
  var id = value.id,
29
28
  timestamp = value.timestamp,
30
29
  translationKey = value.translationKey,
31
30
  filter = value.filter;
32
31
  if (value.key === 'ALL_TIME' || isLifetime(value)) {
33
- return _objectSpread({
32
+ return _extends({
34
33
  type: 'ABSOLUTE',
35
34
  translationKey: translationKey
36
35
  }, filter ? {
37
36
  filter: filter
38
37
  } : {});
39
38
  }
40
- var baseValue = _objectSpread({}, id ? {
39
+ var baseValue = _extends({}, id ? {
41
40
  id: id
42
- } : {}, {}, timestamp ? {
41
+ } : {}, timestamp ? {
43
42
  timestamp: timestamp
44
- } : {}, {}, translationKey ? {
43
+ } : {}, translationKey ? {
45
44
  translationKey: translationKey
46
- } : {}, {}, filter ? {
45
+ } : {}, filter ? {
47
46
  filter: filter
48
47
  } : {});
49
48
  if (value.type === 'ABSOLUTE') {
50
- return _objectSpread({}, baseValue, {
49
+ return _extends({}, baseValue, {
51
50
  type: value.type
52
51
  }, value.from ? {
53
52
  from: value.from
54
- } : {}, {}, value.to ? {
53
+ } : {}, value.to ? {
55
54
  to: value.to
56
55
  } : {});
57
56
  }
58
57
  if (value.type === 'RELATIVE') {
59
- return _objectSpread({}, baseValue, {
58
+ return _extends({}, baseValue, {
60
59
  type: value.type,
61
60
  key: value.key,
62
61
  duration: value.duration,
@@ -66,318 +65,263 @@ export function defaultValueTransformer(value) {
66
65
  }
67
66
  return value;
68
67
  }
69
- export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
70
- function RawDateRangePicker(props) {
71
- var _this;
72
- _this = _PureComponent.call(this, props) || this;
73
- // eslint-disable-next-line react/state-in-constructor
74
- _defineProperty(_this, "handleFilterCancel", function () {
75
- _this.setState({
76
- mode: MODES.DATE
77
- });
78
- });
79
- _defineProperty(_this, "handleFilterApply", function (filter) {
80
- var value = _this.state.value;
81
- _this.setState({
82
- mode: MODES.DATE,
83
- value: _objectSpread({}, value, {
84
- filter: filter
85
- })
86
- });
87
- });
88
- _defineProperty(_this, "allTexts", function () {
89
- var _this$props = _this.props,
90
- texts = _this$props.texts,
91
- intl = _this$props.intl;
92
- return getDefaultTexts(intl, false, texts);
93
- });
94
- _defineProperty(_this, "handleRangeChange", function (range) {
95
- var _valueTransformer;
96
- if (!range) {
97
- return;
98
- }
99
- if (range.from && !fnsIsValid(range == null ? void 0 : range.from)) {
100
- return;
101
- }
102
- var _this$props2 = _this.props,
103
- onValueChange = _this$props2.onValueChange,
104
- valueTransformer = _this$props2.valueTransformer,
105
- isTruncateMs = _this$props2.isTruncateMs;
106
- var _this$state = _this.state,
107
- value = _this$state.value,
108
- mode = _this$state.mode;
109
- var newValue = normalizeRange(_objectSpread({}, range, {
110
- filter: value.filter
111
- }));
112
- if (isTruncateMs) {
113
- if (newValue.from !== undefined) {
114
- newValue.from = fnsStartOfSecond(legacyParse(newValue.from));
115
- }
116
- if (newValue.to !== undefined) {
117
- newValue.to = fnsStartOfSecond(legacyParse(newValue.to));
118
- }
119
- }
120
- if ((newValue.type === 'RELATIVE' || newValue.key === CONST.ALL_TIME) && mode === MODES.TIME) {
121
- _this.setState({
122
- mode: MODES.DATE
123
- });
124
- }
125
- if (range != null && range.key) {
126
- newValue.key = range == null ? void 0 : range.key;
127
- }
128
- // transformation has to take place here, because `key` property might get omitted by valueTransformer
129
- var legacyValue = (_valueTransformer = valueTransformer == null ? void 0 : valueTransformer(newValue)) != null ? _valueTransformer : newValue;
130
- _this.setState({
131
- value: _objectSpread({}, legacyValue, {
132
- translationKey: range == null ? void 0 : range.translationKey
133
- })
134
- });
135
- onValueChange && onValueChange(legacyValue);
136
- });
137
- _defineProperty(_this, "handleApply", function () {
138
- var intl = _this.props.intl;
139
- var value = _this.state.value;
140
- var _this$props3 = _this.props,
141
- forceAbsolute = _this$props3.forceAbsolute,
142
- onApply = _this$props3.onApply;
143
- if (forceAbsolute && value.type === RELATIVE) {
144
- onApply && onApply(_objectSpread({}, value, {}, relativeToAbsolute(value)));
145
- return;
146
- }
147
- if (value.key === CONST.ALL_TIME) {
148
- onApply && onApply(omitBy(value, isUndefined));
149
- return;
68
+ export var RawDateRangePicker = function RawDateRangePicker(_ref) {
69
+ var _ref$showRelativePick = _ref.showRelativePicker,
70
+ showRelativePicker = _ref$showRelativePick === void 0 ? true : _ref$showRelativePick,
71
+ showFilter = _ref.showFilter,
72
+ showTime = _ref.showTime,
73
+ format = _ref.format,
74
+ valueFormatOptions = _ref.valueFormatOptions,
75
+ disabledDate = _ref.disabledDate,
76
+ _ref$validate = _ref.validate,
77
+ validate = _ref$validate === void 0 ? function () {
78
+ return {
79
+ valid: true
80
+ };
81
+ } : _ref$validate,
82
+ forceAdjacentMonths = _ref.forceAdjacentMonths,
83
+ savedFilters = _ref.savedFilters,
84
+ onFilterSave = _ref.onFilterSave,
85
+ _ref$containerClass = _ref.containerClass,
86
+ containerClass = _ref$containerClass === void 0 ? 'ds-date-range-picker' : _ref$containerClass,
87
+ footerProps = _ref.footerProps,
88
+ allowedFilterTypes = _ref.allowedFilterTypes,
89
+ _ref$disableAbsoluteT = _ref.disableAbsoluteTimepickerInRelative,
90
+ disableAbsoluteTimepickerInRelative = _ref$disableAbsoluteT === void 0 ? false : _ref$disableAbsoluteT,
91
+ filterValueSelectionModes = _ref.filterValueSelectionModes,
92
+ filterRangeDisplayMode = _ref.filterRangeDisplayMode,
93
+ _ref$showNowButton = _ref.showNowButton,
94
+ showNowButton = _ref$showNowButton === void 0 ? true : _ref$showNowButton,
95
+ alignContentToTop = _ref.alignContentToTop,
96
+ relativeFuture = _ref.relativeFuture,
97
+ _ref$relativePast = _ref.relativePast,
98
+ relativePast = _ref$relativePast === void 0 ? true : _ref$relativePast,
99
+ _ref$ranges = _ref.ranges,
100
+ ranges = _ref$ranges === void 0 ? [].concat(RELATIVE_PRESETS, ABSOLUTE_PRESETS) : _ref$ranges,
101
+ relativeModes = _ref.relativeModes,
102
+ rangeUnits = _ref.rangeUnits,
103
+ showCustomRange = _ref.showCustomRange,
104
+ _ref$valueTransformer = _ref.valueTransformer,
105
+ valueTransformer = _ref$valueTransformer === void 0 ? defaultValueTransformer : _ref$valueTransformer,
106
+ onValueChange = _ref.onValueChange,
107
+ _ref$isTruncateMs = _ref.isTruncateMs,
108
+ isTruncateMs = _ref$isTruncateMs === void 0 ? true : _ref$isTruncateMs,
109
+ forceAbsolute = _ref.forceAbsolute,
110
+ onApply = _ref.onApply,
111
+ texts = _ref.texts,
112
+ value = _ref.value;
113
+ var _useState = useState(normalizeRange(value)),
114
+ localValue = _useState[0],
115
+ setLocalValue = _useState[1];
116
+ var _useState2 = useState(MODES.DATE),
117
+ mode = _useState2[0],
118
+ setMode = _useState2[1];
119
+ var _useState3 = useState('relative-picker'),
120
+ visibleAddonKey = _useState3[0],
121
+ setVisibleAddonKey = _useState3[1];
122
+ var intl = useIntl();
123
+ var timeZone = intl.timeZone;
124
+ var allTexts = useMemo(function () {
125
+ return getDefaultTexts(intl, false, texts);
126
+ }, [intl, texts]);
127
+ var handleRangeChange = useCallback(function (range) {
128
+ var _valueTransformer;
129
+ if (!range) {
130
+ return;
131
+ }
132
+ if (range.from && !fnsIsValid(range == null ? void 0 : range.from)) {
133
+ return;
134
+ }
135
+ var newValue = normalizeRange(_extends({}, range, {
136
+ filter: localValue.filter
137
+ }));
138
+ if (isTruncateMs) {
139
+ if (newValue.from !== undefined) {
140
+ newValue.from = fnsStartOfSecond(legacyParse(newValue.from));
150
141
  }
151
- if (onApply) {
152
- var valueToEmit = _objectSpread({}, value, {
153
- from: value.type === ABSOLUTE && value.from instanceof Date ? toIsoString(value.from, intl.timeZone) : undefined,
154
- to: value.type === ABSOLUTE && value.to instanceof Date ? toIsoString(value.to, intl.timeZone) : undefined,
155
- type: value.type
156
- });
157
- onApply(valueToEmit);
142
+ if (newValue.to !== undefined) {
143
+ newValue.to = fnsStartOfSecond(legacyParse(newValue.to));
158
144
  }
159
- });
160
- _defineProperty(_this, "handleModalOpenClick", function () {
161
- _this.setState({
162
- mode: MODES.FILTER
163
- });
164
- });
165
- _defineProperty(_this, "handleRemoveFilterClick", function () {
166
- _this.handleFilterApply(undefined);
167
- });
168
- _defineProperty(_this, "handleSwitchMode", function () {
169
- var mode = _this.state.mode;
170
- var updatedMode = mode === MODES.TIME ? MODES.DATE : MODES.TIME;
171
- _this.setState({
172
- mode: updatedMode
145
+ }
146
+ if ((newValue.type === 'RELATIVE' || newValue.key === CONST.ALL_TIME) && mode === MODES.TIME) {
147
+ setMode(MODES.DATE);
148
+ }
149
+ if (range != null && range.key) {
150
+ newValue.key = range == null ? void 0 : range.key;
151
+ }
152
+
153
+ // transformation has to take place here, because `key` property might get omitted by valueTransformer
154
+ var legacyValue = (_valueTransformer = valueTransformer == null ? void 0 : valueTransformer(newValue)) != null ? _valueTransformer : newValue;
155
+ setLocalValue(_extends({}, legacyValue, {
156
+ translationKey: range == null ? void 0 : range.translationKey
157
+ }));
158
+ onValueChange && onValueChange(legacyValue);
159
+ }, [isTruncateMs, mode, localValue.filter, onValueChange, valueTransformer]);
160
+ var handleAddonCollapse = useCallback(function (addonKey, expanded) {
161
+ setVisibleAddonKey(expanded ? addonKey : undefined);
162
+ }, []);
163
+ var handleFilterApply = useCallback(function (filter) {
164
+ setMode(MODES.DATE);
165
+ setLocalValue(_extends({}, localValue, {
166
+ filter: filter
167
+ }));
168
+ }, [localValue]);
169
+ var handleRemoveFilterClick = useCallback(function () {
170
+ handleFilterApply(undefined);
171
+ }, [handleFilterApply]);
172
+ var handleModalOpenClick = useCallback(function () {
173
+ setMode(MODES.FILTER);
174
+ }, []);
175
+ var handleFilterCancel = useCallback(function () {
176
+ setMode(MODES.DATE);
177
+ }, []);
178
+ var handleApply = useCallback(function () {
179
+ if (forceAbsolute && localValue.type === RELATIVE) {
180
+ onApply && onApply(_extends({}, localValue, relativeToAbsolute(localValue)));
181
+ return;
182
+ }
183
+ if (localValue.key === CONST.ALL_TIME) {
184
+ onApply && onApply(omitBy(localValue, isUndefined));
185
+ return;
186
+ }
187
+ if (onApply) {
188
+ var valueToEmit = _extends({}, localValue, {
189
+ from: localValue.type === ABSOLUTE && localValue.from instanceof Date ? toIsoString(localValue.from, timeZone) : undefined,
190
+ to: localValue.type === ABSOLUTE && localValue.to instanceof Date ? toIsoString(localValue.to, timeZone) : undefined,
191
+ type: localValue.type
173
192
  });
174
- });
175
- _defineProperty(_this, "handleAddonCollapse", function (addonKey, expanded) {
176
- _this.setState(function (state) {
177
- return _objectSpread({}, state, {
178
- visibleAddonKey: expanded ? addonKey : undefined
179
- });
193
+ onApply(valueToEmit);
194
+ }
195
+ }, [forceAbsolute, timeZone, localValue, onApply]);
196
+ var handleSwitchMode = useCallback(function () {
197
+ var updatedMode = mode === MODES.TIME ? MODES.DATE : MODES.TIME;
198
+ setMode(updatedMode);
199
+ }, [mode]);
200
+ var fullValue = useMemo(function () {
201
+ if (localValue && localValue.type === 'RELATIVE' && (!localValue.from || !localValue.to)) {
202
+ var _normalizeRange = normalizeRange(localValue),
203
+ to = _normalizeRange.to,
204
+ from = _normalizeRange.from;
205
+ return _extends({}, localValue, {
206
+ from: from,
207
+ to: to
180
208
  });
181
- });
182
- _defineProperty(_this, "getAddons", function () {
183
- var _this$props4 = _this.props,
184
- showRelativePicker = _this$props4.showRelativePicker,
185
- showFilter = _this$props4.showFilter,
186
- relativeFuture = _this$props4.relativeFuture,
187
- relativePast = _this$props4.relativePast,
188
- ranges = _this$props4.ranges,
189
- relativeModes = _this$props4.relativeModes,
190
- rangeUnits = _this$props4.rangeUnits,
191
- showCustomRange = _this$props4.showCustomRange,
192
- valueTransformer = _this$props4.valueTransformer;
193
- var _this$state2 = _this.state,
194
- value = _this$state2.value,
195
- visibleAddonKey = _this$state2.visibleAddonKey;
196
- var allTexts = _this.allTexts();
197
- var addons = [];
198
- if (showRelativePicker && !!relativeModes && (relativeModes == null ? void 0 : relativeModes.length) > 0) {
199
- var addonKey = 'relative-picker';
200
- var rangeTranslationKey = value == null ? void 0 : value.translationKey;
201
- addons.push({
202
- content: /*#__PURE__*/React.createElement(AddonCollapse, {
203
- content: /*#__PURE__*/React.createElement(RelativeRangePicker, {
204
- future: relativeFuture,
205
- past: relativePast,
206
- ranges: ranges,
207
- value: value,
208
- onChange: _this.handleRangeChange,
209
- relativeModes: relativeModes,
210
- texts: allTexts,
211
- rangeUnits: rangeUnits,
212
- showCustomRange: showCustomRange,
213
- valueTransformer: valueTransformer
214
- }),
215
- expanded: addonKey === visibleAddonKey,
216
- title: allTexts.relativeDateRange,
217
- onCollapseChange: function onCollapseChange(expanded) {
218
- return _this.handleAddonCollapse(addonKey, expanded);
219
- },
220
- collapsedSummary: rangeTranslationKey && allTexts[rangeTranslationKey]
221
- }),
222
- key: addonKey
223
- });
224
- }
225
- if (showFilter) {
226
- var _addonKey = 'filter';
227
- var filterEnabled = value.from && value.to || isLifetime(value);
228
- var label = value != null && value.filter ? allTexts.filterEnabled : allTexts.selectDateFilter;
229
- addons.push({
230
- content: /*#__PURE__*/React.createElement(RangeFilterStatus, {
231
- onFilterRemove: _this.handleRemoveFilterClick,
232
- filter: value.filter,
209
+ }
210
+ return localValue;
211
+ }, [localValue]);
212
+ var addons = useMemo(function () {
213
+ var result = [];
214
+ if (showRelativePicker && !!relativeModes && (relativeModes == null ? void 0 : relativeModes.length) > 0) {
215
+ var addonKey = 'relative-picker';
216
+ var rangeTranslationKey = localValue == null ? void 0 : localValue.translationKey;
217
+ result.push({
218
+ content: /*#__PURE__*/React.createElement(AddonCollapse, {
219
+ content: /*#__PURE__*/React.createElement(RelativeRangePicker, {
220
+ future: relativeFuture,
221
+ past: relativePast,
222
+ ranges: ranges,
223
+ value: localValue,
224
+ onChange: handleRangeChange,
225
+ relativeModes: relativeModes,
233
226
  texts: allTexts,
234
- disabled: !filterEnabled,
235
- label: label,
236
- onClick: _this.handleModalOpenClick
227
+ rangeUnits: rangeUnits,
228
+ showCustomRange: showCustomRange,
229
+ valueTransformer: valueTransformer
237
230
  }),
238
- key: _addonKey
239
- });
240
- }
241
- return addons;
242
- });
243
- _this.state = {
244
- mode: MODES.DATE,
245
- value: normalizeRange(props.value),
246
- visibleAddonKey: 'relative-picker'
247
- };
248
- return _this;
249
- }
250
- _inheritsLoose(RawDateRangePicker, _PureComponent);
251
- var _proto = RawDateRangePicker.prototype;
252
- _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
253
- var value = this.props.value;
254
- if (prevProps.value !== value) {
255
- this.handleRangeChange(value);
256
- }
257
- };
258
- _proto.render = function render() {
259
- var _this$props5 = this.props,
260
- showRelativePicker = _this$props5.showRelativePicker,
261
- showFilter = _this$props5.showFilter,
262
- showTime = _this$props5.showTime,
263
- format = _this$props5.format,
264
- valueFormatOptions = _this$props5.valueFormatOptions,
265
- disabledDate = _this$props5.disabledDate,
266
- validate = _this$props5.validate,
267
- forceAdjacentMonths = _this$props5.forceAdjacentMonths,
268
- savedFilters = _this$props5.savedFilters,
269
- onFilterSave = _this$props5.onFilterSave,
270
- intl = _this$props5.intl,
271
- _this$props5$containe = _this$props5.containerClass,
272
- containerClass = _this$props5$containe === void 0 ? 'ds-date-range-picker' : _this$props5$containe,
273
- footerProps = _this$props5.footerProps,
274
- allowedFilterTypes = _this$props5.allowedFilterTypes,
275
- _this$props5$disableA = _this$props5.disableAbsoluteTimepickerInRelative,
276
- disableAbsoluteTimepickerInRelative = _this$props5$disableA === void 0 ? false : _this$props5$disableA,
277
- filterValueSelectionModes = _this$props5.filterValueSelectionModes,
278
- filterRangeDisplayMode = _this$props5.filterRangeDisplayMode,
279
- _this$props5$showNowB = _this$props5.showNowButton,
280
- showNowButton = _this$props5$showNowB === void 0 ? true : _this$props5$showNowB,
281
- alignContentToTop = _this$props5.alignContentToTop;
282
- var _this$state3 = this.state,
283
- value = _this$state3.value,
284
- mode = _this$state3.mode;
285
- if (value.type === 'RELATIVE' && (!value.from || !value.to)) {
286
- var absolute = normalizeRange(value);
287
- Object.assign(value, {
288
- from: absolute.from,
289
- to: absolute.to
231
+ expanded: addonKey === visibleAddonKey,
232
+ title: allTexts.relativeDateRange,
233
+ onCollapseChange: function onCollapseChange(expanded) {
234
+ return handleAddonCollapse(addonKey, expanded);
235
+ },
236
+ collapsedSummary: rangeTranslationKey && allTexts[rangeTranslationKey]
237
+ }),
238
+ key: addonKey
290
239
  });
291
240
  }
292
- var from = value.from,
293
- to = value.to,
294
- key = value.key;
295
- var addons = this.getAddons();
296
- var allTexts = this.allTexts();
297
- function isRelative(dateRange) {
298
- var isLegacyCustom = Object.keys(value).includes('key') && key === undefined;
299
- return dateRange.key && (CONST.RELATIVE_PRESETS.map(function (e) {
300
- return e.key;
301
- }).includes(dateRange.key) || dateRange.key === CONST.CUSTOM_RANGE_KEY) || isLegacyCustom;
302
- }
303
- var content;
304
- if (mode === MODES.FILTER) {
305
- content = /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(RangeFilter, {
306
- texts: allTexts,
307
- value: value.filter,
308
- onCancel: this.handleFilterCancel,
309
- onApply: this.handleFilterApply,
310
- savedFilters: savedFilters,
311
- allowedFilterTypes: allowedFilterTypes,
312
- onFilterSave: onFilterSave,
313
- valueSelectionModes: filterValueSelectionModes,
314
- rangeDisplayMode: filterRangeDisplayMode
315
- }));
316
- } else {
317
- var validator = validate ? validate(value) : {
318
- valid: true
319
- };
320
- var isValidAbsolute = !Object.keys(value).includes('key') && Boolean(from && to);
321
- var isValidRelative = isRelative(value) && Boolean(value.offset && value.duration);
322
- var isValidSince = value.type === 'SINCE' && Boolean(value.offset && value.duration);
323
- // TODO apply ranges and find mapped lifetime here, this applies only for defaultValueTransformer
324
- var isValid = (isValidAbsolute || isValidRelative || isValidSince || key === CONST.ALL_TIME) && validator.valid;
325
- var canSwitchToTimePicker = isValid && !isLifetime(value) && (!disableAbsoluteTimepickerInRelative || value.type === 'ABSOLUTE');
326
- content = /*#__PURE__*/React.createElement(Container, {
327
- className: containerClass
328
- }, /*#__PURE__*/React.createElement(RangePicker, {
329
- showNowButton: showNowButton,
330
- value: normalizeRange(value),
331
- onChange: this.handleRangeChange,
332
- mode: mode,
333
- disabledDate: disabledDate,
334
- onSwitchMode: this.handleSwitchMode,
335
- dateOnly: !showTime,
336
- canSwitchMode: canSwitchToTimePicker,
337
- texts: allTexts,
338
- forceAdjacentMonths: forceAdjacentMonths,
339
- intl: intl
340
- }), addons.length > 0 && /*#__PURE__*/React.createElement(Separator, null), addons.map(function (addon, index) {
341
- return /*#__PURE__*/React.createElement(Addon, {
342
- last: addons.length === index + 1,
343
- className: "addon-wrapper",
344
- key: addon.key
345
- }, addon.content);
346
- }), /*#__PURE__*/React.createElement(Footer, _extends({
347
- canApply: isValid || isLifetime(value),
348
- onApply: this.handleApply,
349
- dateOnly: !showTime,
350
- mode: mode,
351
- canSwitchMode: isValid,
352
- message: !validator.valid ? validator.message : null,
353
- onSwitchMode: this.handleSwitchMode,
354
- texts: allTexts,
355
- value: value,
356
- showTime: showTime,
357
- format: format,
358
- valueFormatOptions: valueFormatOptions
359
- }, footerProps)));
241
+ if (showFilter) {
242
+ var _addonKey = 'filter';
243
+ var filterEnabled = fullValue.from && fullValue.to || isLifetime(fullValue);
244
+ var label = localValue != null && localValue.filter ? allTexts.filterEnabled : allTexts.selectDateFilter;
245
+ result.push({
246
+ content: /*#__PURE__*/React.createElement(RangeFilterStatus, {
247
+ onFilterRemove: handleRemoveFilterClick,
248
+ filter: localValue.filter,
249
+ texts: allTexts,
250
+ disabled: !filterEnabled,
251
+ label: label,
252
+ onClick: handleModalOpenClick
253
+ }),
254
+ key: _addonKey
255
+ });
360
256
  }
361
- return /*#__PURE__*/React.createElement(PopupWrapper, {
362
- alignContentToTop: alignContentToTop,
363
- hasFilter: showFilter,
364
- hasRelativePicker: showRelativePicker
365
- }, content);
366
- };
367
- return RawDateRangePicker;
368
- }(PureComponent);
369
-
370
- // @ts-ignore
371
- _defineProperty(RawDateRangePicker, "defaultProps", {
372
- ranges: [].concat(RELATIVE_PRESETS, ABSOLUTE_PRESETS),
373
- relativePast: true,
374
- showRelativePicker: true,
375
- validate: function validate() {
376
- return {
257
+ return result;
258
+ }, [showRelativePicker, relativeModes, showFilter, localValue, relativeFuture, relativePast, ranges, handleRangeChange, allTexts, rangeUnits, showCustomRange, valueTransformer, visibleAddonKey, handleAddonCollapse, fullValue, handleRemoveFilterClick, handleModalOpenClick]);
259
+ var content;
260
+ if (mode === MODES.FILTER) {
261
+ content = /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(RangeFilter, {
262
+ texts: allTexts,
263
+ value: localValue.filter,
264
+ onCancel: handleFilterCancel,
265
+ onApply: handleFilterApply,
266
+ savedFilters: savedFilters,
267
+ allowedFilterTypes: allowedFilterTypes,
268
+ onFilterSave: onFilterSave,
269
+ valueSelectionModes: filterValueSelectionModes,
270
+ rangeDisplayMode: filterRangeDisplayMode
271
+ }));
272
+ } else {
273
+ var from = localValue.from,
274
+ to = localValue.to,
275
+ key = localValue.key;
276
+ var validator = validate ? validate(localValue) : {
377
277
  valid: true
378
278
  };
379
- },
380
- valueTransformer: defaultValueTransformer,
381
- isTruncateMs: true
382
- });
383
- export default injectIntl(RawDateRangePicker);
279
+ var isValidAbsolute = !Object.keys(localValue).includes('key') && Boolean(from && to);
280
+ var isValidRelative = isRelative(localValue) && Boolean(localValue.offset && localValue.duration);
281
+ var isValidSince = localValue.type === 'SINCE' && Boolean(localValue.offset && localValue.duration);
282
+ // TODO apply ranges and find mapped lifetime here, this applies only for defaultValueTransformer
283
+ var isValid = (isValidAbsolute || isValidRelative || isValidSince || key === CONST.ALL_TIME) && validator.valid;
284
+ var canSwitchToTimePicker = isValid && !isLifetime(localValue) && (!disableAbsoluteTimepickerInRelative || localValue.type === 'ABSOLUTE');
285
+ content = /*#__PURE__*/React.createElement(Container, {
286
+ className: containerClass
287
+ }, /*#__PURE__*/React.createElement(RangePicker, {
288
+ showNowButton: showNowButton,
289
+ value: normalizeRange(localValue),
290
+ onChange: handleRangeChange,
291
+ mode: mode,
292
+ disabledDate: disabledDate,
293
+ onSwitchMode: handleSwitchMode,
294
+ dateOnly: !showTime,
295
+ canSwitchMode: canSwitchToTimePicker,
296
+ texts: allTexts,
297
+ forceAdjacentMonths: forceAdjacentMonths,
298
+ intl: intl
299
+ }), addons.length > 0 && /*#__PURE__*/React.createElement(Separator, null), addons.map(function (addon, index) {
300
+ return /*#__PURE__*/React.createElement(Addon, {
301
+ last: addons.length === index + 1,
302
+ className: "addon-wrapper",
303
+ key: addon.key
304
+ }, addon.content);
305
+ }), /*#__PURE__*/React.createElement(Footer, _extends({
306
+ canApply: isValid || isLifetime(localValue),
307
+ onApply: handleApply,
308
+ dateOnly: !showTime,
309
+ mode: mode,
310
+ canSwitchMode: isValid,
311
+ message: !validator.valid ? validator.message : null,
312
+ onSwitchMode: handleSwitchMode,
313
+ texts: allTexts,
314
+ value: fullValue,
315
+ showTime: showTime,
316
+ format: format,
317
+ valueFormatOptions: valueFormatOptions
318
+ }, footerProps)));
319
+ }
320
+ return /*#__PURE__*/React.createElement(PopupWrapper, {
321
+ "data-testid": "date-range-picker-container",
322
+ alignContentToTop: alignContentToTop,
323
+ hasFilter: showFilter,
324
+ hasRelativePicker: showRelativePicker
325
+ }, content);
326
+ };
327
+ export default RawDateRangePicker;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import { Props } from './CustomRangeForm.types';
3
3
  export declare const setOffsetType: (a: any, obj: any) => any;
4
- declare const CustomRangeForm: React.FC<Props>;
4
+ declare const CustomRangeForm: ({ ranges, rangeUnits, currentRange, currentGroup, handleDurationValueChange, handleOffsetValueChange, handleModeChange, handleChange, texts, handleTimestampChange, timestamp, relativeModes, }: Props) => React.JSX.Element;
5
5
  export default CustomRangeForm;