@synerise/ds-date-range-picker 0.24.10 → 0.25.1

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 (61) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +2 -1
  3. package/dist/DateRangePicker.js +11 -8
  4. package/dist/DateRangePicker.types.d.ts +3 -2
  5. package/dist/RangeFilter/Filters/new/Daily/Daily.d.ts +1 -1
  6. package/dist/RangeFilter/Filters/new/Daily/Daily.js +4 -1
  7. package/dist/RangeFilter/Filters/new/Daily/Daily.types.d.ts +2 -0
  8. package/dist/RangeFilter/Filters/new/Monthly/Monthly.d.ts +1 -2
  9. package/dist/RangeFilter/Filters/new/Monthly/Monthly.js +8 -1
  10. package/dist/RangeFilter/Filters/new/Monthly/Monthly.types.d.ts +4 -0
  11. package/dist/RangeFilter/Filters/new/Weekly/Weekly.d.ts +1 -2
  12. package/dist/RangeFilter/Filters/new/Weekly/Weekly.js +8 -1
  13. package/dist/RangeFilter/Filters/new/Weekly/Weekly.types.d.ts +4 -0
  14. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.d.ts +1 -2
  15. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.js +8 -7
  16. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.d.ts +1 -0
  17. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.js +9 -3
  18. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.types.d.ts +2 -0
  19. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.d.ts +1 -1
  20. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.js +8 -1
  21. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types.d.ts +5 -5
  22. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.d.ts +1 -1
  23. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.js +4 -2
  24. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.types.d.ts +5 -3
  25. package/dist/RangePickerInput/RangePickerInput.js +2 -1
  26. package/dist/RawDateRangePicker.d.ts +2 -2
  27. package/dist/RawDateRangePicker.js +13 -24
  28. package/dist/RelativeRangePicker/Elements/CustomRangeForm/CustomRangeForm.js +1 -1
  29. package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.js +3 -4
  30. package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.js +3 -4
  31. package/dist/RelativeRangePicker/Elements/ModeDropdown/ModeDropdown.js +1 -1
  32. package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.d.ts +1 -2
  33. package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.js +5 -1
  34. package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.js +3 -2
  35. package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.types.d.ts +3 -3
  36. package/dist/RelativeRangePicker/RelativeRangePicker.js +12 -10
  37. package/dist/RelativeRangePicker/RelativeRangePicker.types.d.ts +3 -3
  38. package/dist/RelativeRangePicker/utils/findMatchingPreset.utils.d.ts +18 -0
  39. package/dist/RelativeRangePicker/utils/findMatchingPreset.utils.js +20 -0
  40. package/dist/RelativeRangePicker/utils/getCurrentGroupFromProps.utils.d.ts +3 -0
  41. package/dist/RelativeRangePicker/utils/getCurrentGroupFromProps.utils.js +9 -0
  42. package/dist/RelativeRangePicker/utils/getDefaultCustomRange.utils.d.ts +2 -0
  43. package/dist/RelativeRangePicker/utils/getDefaultCustomRange.utils.js +17 -0
  44. package/dist/RelativeRangePicker/utils/index.d.ts +8 -0
  45. package/dist/RelativeRangePicker/utils/index.js +8 -0
  46. package/dist/RelativeRangePicker/utils/isAbsolute.utils.d.ts +2 -0
  47. package/dist/RelativeRangePicker/utils/isAbsolute.utils.js +4 -0
  48. package/dist/RelativeRangePicker/utils/setDurationValue.utils.d.ts +2 -0
  49. package/dist/RelativeRangePicker/utils/setDurationValue.utils.js +6 -0
  50. package/dist/RelativeRangePicker/utils/setFuture.utils.d.ts +1 -0
  51. package/dist/RelativeRangePicker/utils/setFuture.utils.js +3 -0
  52. package/dist/RelativeRangePicker/utils/setOffsetValue.utils.d.ts +2 -0
  53. package/dist/RelativeRangePicker/utils/setOffsetValue.utils.js +6 -0
  54. package/dist/RelativeRangePicker/utils/updatePresetKey.utils.d.ts +2 -0
  55. package/dist/RelativeRangePicker/utils/updatePresetKey.utils.js +23 -0
  56. package/dist/constants.d.ts +14 -3
  57. package/dist/constants.js +13 -0
  58. package/dist/date.types.d.ts +8 -0
  59. package/package.json +20 -20
  60. package/dist/RelativeRangePicker/utils.d.ts +0 -19
  61. package/dist/RelativeRangePicker/utils.js +0 -52
@@ -4,8 +4,7 @@ import InputNumber from '@synerise/ds-input-number';
4
4
  import set from 'ramda/src/set';
5
5
  import lensPath from 'ramda/src/lensPath';
6
6
  import * as S from '../../../RelativeRangePicker.styles';
7
- import * as CONST from '../../../../constants';
8
- import { RANGES_MODE } from '../../../utils';
7
+ import { RELATIVE_UNITS, RANGES_MODE, RELATIVE_DURATION_MAX } from '../../../../constants';
9
8
  export var setDurationType = set(lensPath(['duration', 'type']));
10
9
  var SELECT_DROPDOWN_OFFSET = -4;
11
10
 
@@ -26,7 +25,7 @@ var DurationField = function DurationField(_ref) {
26
25
  compact: true
27
26
  }, /*#__PURE__*/React.createElement(InputNumber, {
28
27
  min: 1,
29
- max: CONST.RELATIVE_DURATION_MAX,
28
+ max: RELATIVE_DURATION_MAX,
30
29
  precision: 0,
31
30
  step: 1,
32
31
  value: duration == null ? void 0 : duration.value,
@@ -48,7 +47,7 @@ var DurationField = function DurationField(_ref) {
48
47
  getPopupContainer: function getPopupContainer(node) {
49
48
  return node.parentElement != null ? node.parentElement : document.body;
50
49
  }
51
- }, (rangeUnits || CONST.RELATIVE_UNITS).map(function (type) {
50
+ }, (rangeUnits || RELATIVE_UNITS).map(function (type) {
52
51
  return /*#__PURE__*/React.createElement(Select.Option, {
53
52
  key: type,
54
53
  value: type
@@ -2,8 +2,7 @@ import * as React from 'react';
2
2
  import Select from '@synerise/ds-select';
3
3
  import InputNumber from '@synerise/ds-input-number';
4
4
  import * as S from '../../../RelativeRangePicker.styles';
5
- import * as CONST from '../../../../constants';
6
- import { RANGES_MODE } from '../../../utils';
5
+ import { RELATIVE_UNITS, RANGES_MODE, RELATIVE_OFFSET_MAX } from '../../../../constants';
7
6
  import { setOffsetType } from '../CustomRangeForm';
8
7
  var SELECT_DROPDOWN_OFFSET = -4;
9
8
 
@@ -24,7 +23,7 @@ var OffsetField = function OffsetField(_ref) {
24
23
  compact: true
25
24
  }, /*#__PURE__*/React.createElement(InputNumber, {
26
25
  min: 0,
27
- max: CONST.RELATIVE_OFFSET_MAX,
26
+ max: RELATIVE_OFFSET_MAX,
28
27
  precision: 0,
29
28
  step: 1,
30
29
  value: offset == null ? void 0 : offset.value,
@@ -45,7 +44,7 @@ var OffsetField = function OffsetField(_ref) {
45
44
  getPopupContainer: function getPopupContainer(node) {
46
45
  return node.parentElement != null ? node.parentElement : document.body;
47
46
  }
48
- }, (rangeUnits || CONST.RELATIVE_UNITS).map(function (type) {
47
+ }, (rangeUnits || RELATIVE_UNITS).map(function (type) {
49
48
  return /*#__PURE__*/React.createElement(Select.Option, {
50
49
  key: type,
51
50
  value: type
@@ -3,7 +3,7 @@ import Icon, { CheckS } from '@synerise/ds-icon';
3
3
  import { theme } from '@synerise/ds-core';
4
4
  import { useOnClickOutside } from '@synerise/ds-utils';
5
5
  import * as S from '../../RelativeRangePicker.styles';
6
- import { RANGES_ICON } from '../../utils';
6
+ import { RANGES_ICON } from '../../../constants';
7
7
  var MODE_TRANSLATION_KEYS = {
8
8
  PAST: 'last',
9
9
  FUTURE: 'next',
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import { Props } from './RangeButtons.types';
3
- declare const RangeButtons: React.FC<Props>;
2
+ declare const RangeButtons: ({ ranges, currentRange, texts, onChange }: Props) => JSX.Element;
4
3
  export default RangeButtons;
@@ -1,11 +1,15 @@
1
1
  import * as React from 'react';
2
2
  import * as S from '../../RelativeRangePicker.styles';
3
+ import { isLifetime } from '../RangeDropdown/RangeDropdown';
4
+ import { ALL_TIME } from '../../../constants';
5
+ import { findMatchingPreset } from '../../utils';
3
6
 
4
7
  var RangeButtons = function RangeButtons(_ref) {
5
8
  var ranges = _ref.ranges,
6
9
  currentRange = _ref.currentRange,
7
10
  texts = _ref.texts,
8
11
  onChange = _ref.onChange;
12
+ var matchingPreset = findMatchingPreset(currentRange);
9
13
  return /*#__PURE__*/React.createElement(React.Fragment, null, ranges.map(function (range) {
10
14
  return /*#__PURE__*/React.createElement(S.Range, {
11
15
  "data-testid": "relative-range-preset-" + (range.key || range.id),
@@ -13,7 +17,7 @@ var RangeButtons = function RangeButtons(_ref) {
13
17
  onClick: function onClick() {
14
18
  onChange && onChange(range);
15
19
  },
16
- type: currentRange && currentRange.key === range.key ? 'primary' : 'tertiary'
20
+ type: matchingPreset && matchingPreset.key === range.key || isLifetime(currentRange) && range.key === ALL_TIME ? 'primary' : 'tertiary'
17
21
  }, range.translationKey ? texts[range.translationKey] : texts == null ? void 0 : texts.custom);
18
22
  }));
19
23
  };
@@ -67,8 +67,9 @@ var RangeDropdown = function RangeDropdown(_ref) {
67
67
  return isEqual(transformedCurrentRange, r);
68
68
  }, mappedRanges);
69
69
  var containsCurrentRange = currentRange && find(function (range) {
70
- return range.key === currentRange.key;
71
- }, ranges) || isLifetime(currentRange) || anyOfTransformedRangesMatchesCurrentRange;
70
+ var key = isLifetime(currentRange) ? ALL_TIME : currentRange.key;
71
+ return range.key === key;
72
+ }, ranges) || anyOfTransformedRangesMatchesCurrentRange;
72
73
  var overlay = /*#__PURE__*/React.createElement(S.OverlayWrapper, {
73
74
  visible: dropVisible,
74
75
  width: DROPDOWN_WIDTH
@@ -1,10 +1,10 @@
1
- import { AbsoluteDateRange, DateRange, RelativeDateRange } from '../../../date.types';
1
+ import { DateRange } from '../../../date.types';
2
2
  import { DateRangePickerProps, Texts } from '../../../DateRangePicker.types';
3
3
  export type RangeDropdownProps = {
4
4
  ranges: DateRange[];
5
- currentRange: RelativeDateRange;
5
+ currentRange: DateRange;
6
6
  texts: Texts;
7
- onChange: (range: AbsoluteDateRange | RelativeDateRange | undefined) => void;
7
+ onChange: (range: DateRange | undefined) => void;
8
8
  valueTransformer?: ((value: DateRange | object) => DateRange | object) | DateRangePickerProps['valueTransformer'];
9
9
  };
10
10
  /**
@@ -16,10 +16,10 @@ import getRelativePresetForRange from '../dateUtils/getRelativePresetForRange';
16
16
  import RangeButtons from './Elements/RangeButtons/RangeButtons';
17
17
  import RangeDropdown from './Elements/RangeDropdown/RangeDropdown';
18
18
  import CustomRangeForm from './Elements/CustomRangeForm/CustomRangeForm';
19
- import { getCurrentGroupFromProps, RANGES_MODE, getDefaultCustomRange, setFuture, setOffsetValue, setDurationValue } from './utils';
19
+ import { getCurrentGroupFromProps, getDefaultCustomRange, setFuture, setOffsetValue, setDurationValue, updatePresetKey, findMatchingPreset } from './utils';
20
20
  import { fnsIsAfter } from '../fns';
21
21
  import { DEFAULT_RANGE, normalizeRange } from '../utils';
22
- import { CUSTOM_RANGE_KEY } from '../constants';
22
+ import { CUSTOM_RANGE_KEY, RANGES_MODE } from '../constants';
23
23
 
24
24
  var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
25
25
  _inheritsLoose(RelativeRangePicker, _React$PureComponent);
@@ -27,8 +27,7 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
27
27
  function RelativeRangePicker(props) {
28
28
  var _this;
29
29
 
30
- _this = _React$PureComponent.call(this, props) || this; // eslint-disable-next-line
31
- // @ts-ignore
30
+ _this = _React$PureComponent.call(this, props) || this; // @ts-ignore
32
31
  // eslint-disable-next-line
33
32
 
34
33
  _defineProperty(_assertThisInitialized(_this), "onModeChange", function (mode) {
@@ -91,7 +90,7 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
91
90
  }); // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
91
 
93
92
 
94
- var resultRange = normalizeRange(changes);
93
+ var resultRange = normalizeRange(updatePresetKey(changes));
95
94
 
96
95
  if ((resultRange == null ? void 0 : resultRange.translationKey) === CUSTOM_RANGE_KEY) {
97
96
  _this.setState({
@@ -227,22 +226,25 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
227
226
  _proto.render = function render() {
228
227
  var _this$props4 = this.props,
229
228
  texts = _this$props4.texts,
230
- value = _this$props4.value,
231
229
  showCustomRange = _this$props4.showCustomRange;
232
230
  var _this$state3 = this.state,
233
231
  groupedRanges = _this$state3.groupedRanges,
234
232
  currentGroup = _this$state3.currentGroup,
235
233
  currentRange = _this$state3.currentRange;
236
- var isCustomValue = currentRange.type === 'RELATIVE' && (currentRange.key === 'CUSTOM' || !(value != null && value.key) || !(currentRange != null && currentRange.key));
237
- var visibleRanges = groupedRanges ? groupedRanges.slice(0, 3) : [];
238
- var hiddenRanges = groupedRanges ? groupedRanges.slice(3) : [];
234
+ var isCustomValue = currentRange.type === 'RELATIVE' && !findMatchingPreset(currentRange);
235
+ var orderedGroupedRanges = groupedRanges == null ? void 0 : groupedRanges.sort(function (a, b) {
236
+ return CONST.RELATIVE_SECTION_BUTTON_KEYS_ORDER.indexOf(a.key) - CONST.RELATIVE_SECTION_BUTTON_KEYS_ORDER.indexOf(b.key);
237
+ });
238
+ var visibleRanges = orderedGroupedRanges ? orderedGroupedRanges.slice(0, 4) : [];
239
+ var hiddenRanges = orderedGroupedRanges ? orderedGroupedRanges.slice(4) : [];
240
+ var displayRangeForm = isCustomValue || currentRange && currentRange.type === CONST.RELATIVE;
239
241
  if (!currentGroup) return null;
240
242
  return /*#__PURE__*/React.createElement(S.Container, null, /*#__PURE__*/React.createElement(S.Ranges, null, showCustomRange && /*#__PURE__*/React.createElement(S.Range, {
241
243
  "data-testid": "relative-range-preset-" + CUSTOM_RANGE_KEY,
242
244
  key: CUSTOM_RANGE_KEY,
243
245
  onClick: this.handleCustomClick,
244
246
  type: isCustomValue ? 'primary' : 'tertiary'
245
- }, texts == null ? void 0 : texts.custom), this.renderRanges(visibleRanges), this.renderRangesDropdown(hiddenRanges)), isCustomValue && showCustomRange && this.renderCustomRangeForm());
247
+ }, texts == null ? void 0 : texts.custom), this.renderRanges(visibleRanges), this.renderRangesDropdown(hiddenRanges)), displayRangeForm && this.renderCustomRangeForm());
246
248
  };
247
249
 
248
250
  return RelativeRangePicker;
@@ -1,8 +1,8 @@
1
1
  import { IntlShape } from 'react-intl';
2
- import { DateRange, RelativeDateRange } from '../date.types';
2
+ import { DateRangePreset, DateRange, RelativeDateRange } from '../date.types';
3
3
  import { DateRangePickerProps, RelativeMode, Texts } from '../DateRangePicker.types';
4
4
  export type RelativeRangePickerProps = {
5
- ranges?: DateRange[];
5
+ ranges?: DateRangePreset[];
6
6
  value: DateRange;
7
7
  onChange: (range: DateRange | undefined) => void;
8
8
  future?: boolean;
@@ -21,7 +21,7 @@ export type State = {
21
21
  past: boolean;
22
22
  showCustomForm: boolean;
23
23
  currentRange: RelativeDateRange;
24
- groupedRanges?: DateRange[];
24
+ groupedRanges?: DateRangePreset[];
25
25
  sinceTimestamp?: Date | undefined;
26
26
  lastCustomRange?: RelativeDateRange;
27
27
  };
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import { DateRange } from '../../date.types';
3
+ export declare const findMatchingPreset: (range: DateRange) => {
4
+ type: "SINCE" | "RELATIVE";
5
+ offset: {
6
+ type: import("../../date.types").RelativeUnits;
7
+ value: number;
8
+ };
9
+ duration: import("../../date.types").Duration;
10
+ from?: import("../../date.types").NullableDateLimit | undefined;
11
+ to?: import("../../date.types").NullableDateLimit | undefined;
12
+ key: string;
13
+ future?: boolean | undefined;
14
+ filter?: import("../../date.types").DateFilter | undefined;
15
+ translationKey?: string | undefined;
16
+ id?: import("react").ReactText | undefined;
17
+ timestamp?: Date | undefined;
18
+ } | undefined;
@@ -0,0 +1,20 @@
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; }
2
+
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; }
4
+
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; }
6
+
7
+ import * as CONST from '../../constants';
8
+ export var findMatchingPreset = function findMatchingPreset(range) {
9
+ if (!range || range.type !== CONST.RELATIVE) {
10
+ return;
11
+ }
12
+
13
+ var matchingPreset = CONST.RELATIVE_PRESETS.find(function (preset) {
14
+ var _preset$offset, _range$offset, _preset$offset2, _range$offset2, _preset$duration, _range$duration, _preset$duration2, _range$duration2;
15
+
16
+ return Boolean(preset.future) === Boolean(range.future) && ((_preset$offset = preset.offset) == null ? void 0 : _preset$offset.type) === ((_range$offset = range.offset) == null ? void 0 : _range$offset.type) && ((_preset$offset2 = preset.offset) == null ? void 0 : _preset$offset2.value) === ((_range$offset2 = range.offset) == null ? void 0 : _range$offset2.value) && ((_preset$duration = preset.duration) == null ? void 0 : _preset$duration.type) === ((_range$duration = range.duration) == null ? void 0 : _range$duration.type) && ((_preset$duration2 = preset.duration) == null ? void 0 : _preset$duration2.value) === ((_range$duration2 = range.duration) == null ? void 0 : _range$duration2.value);
17
+ }); // eslint-disable-next-line consistent-return
18
+
19
+ return matchingPreset && _objectSpread({}, matchingPreset);
20
+ };
@@ -0,0 +1,3 @@
1
+ import { RelativeRangePickerProps } from '../RelativeRangePicker.types';
2
+ import { RelativeMode } from '../../DateRangePicker.types';
3
+ export declare function getCurrentGroupFromProps({ relativeModes }: RelativeRangePickerProps): RelativeMode | null;
@@ -0,0 +1,9 @@
1
+ export function getCurrentGroupFromProps(_ref) {
2
+ var relativeModes = _ref.relativeModes;
3
+
4
+ if (!!relativeModes && (relativeModes == null ? void 0 : relativeModes.length) > 0) {
5
+ return relativeModes[0];
6
+ }
7
+
8
+ return null;
9
+ }
@@ -0,0 +1,2 @@
1
+ import { RelativeDateRange } from '../../date.types';
2
+ export declare const getDefaultCustomRange: (currentGroup: string | null) => RelativeDateRange;
@@ -0,0 +1,17 @@
1
+ import { RELATIVE, RANGES_MODE } from '../../constants';
2
+ export var getDefaultCustomRange = function getDefaultCustomRange(currentGroup) {
3
+ return {
4
+ type: RELATIVE,
5
+ from: undefined,
6
+ to: undefined,
7
+ future: currentGroup === RANGES_MODE.FUTURE,
8
+ offset: {
9
+ type: 'DAYS',
10
+ value: 0
11
+ },
12
+ duration: {
13
+ type: 'DAYS',
14
+ value: 30
15
+ }
16
+ };
17
+ };
@@ -0,0 +1,8 @@
1
+ export { findMatchingPreset } from './findMatchingPreset.utils';
2
+ export { setFuture } from './setFuture.utils';
3
+ export { updatePresetKey } from './updatePresetKey.utils';
4
+ export { setDurationValue } from './setDurationValue.utils';
5
+ export { setOffsetValue } from './setOffsetValue.utils';
6
+ export { getDefaultCustomRange } from './getDefaultCustomRange.utils';
7
+ export { getCurrentGroupFromProps } from './getCurrentGroupFromProps.utils';
8
+ export { isAbsolute } from './isAbsolute.utils';
@@ -0,0 +1,8 @@
1
+ export { findMatchingPreset } from './findMatchingPreset.utils';
2
+ export { setFuture } from './setFuture.utils';
3
+ export { updatePresetKey } from './updatePresetKey.utils';
4
+ export { setDurationValue } from './setDurationValue.utils';
5
+ export { setOffsetValue } from './setOffsetValue.utils';
6
+ export { getDefaultCustomRange } from './getDefaultCustomRange.utils';
7
+ export { getCurrentGroupFromProps } from './getCurrentGroupFromProps.utils';
8
+ export { isAbsolute } from './isAbsolute.utils';
@@ -0,0 +1,2 @@
1
+ import { DateRange } from '../../date.types';
2
+ export declare const isAbsolute: (value: DateRange) => boolean;
@@ -0,0 +1,4 @@
1
+ import { ABSOLUTE } from '../../constants';
2
+ export var isAbsolute = function isAbsolute(value) {
3
+ return value.type === ABSOLUTE && !value.from && !value.to;
4
+ };
@@ -0,0 +1,2 @@
1
+ import { RelativeDateRange } from '../../date.types';
2
+ export declare const setDurationValue: (value: number | string, currentRange: RelativeDateRange) => RelativeDateRange;
@@ -0,0 +1,6 @@
1
+ import set from 'ramda/src/set';
2
+ import lensPath from 'ramda/src/lensPath';
3
+ export var setDurationValue = function setDurationValue(value, currentRange) {
4
+ var updatedValue = value === '' ? null : value;
5
+ return set(lensPath(['duration', 'value']))(typeof updatedValue === 'number' && updatedValue >= 1 ? Math.round(updatedValue) : 1, currentRange);
6
+ };
@@ -0,0 +1 @@
1
+ export declare const setFuture: (a: any, obj: any) => any;
@@ -0,0 +1,3 @@
1
+ import set from 'ramda/src/set';
2
+ import lensPath from 'ramda/src/lensPath';
3
+ export var setFuture = set(lensPath(['future']));
@@ -0,0 +1,2 @@
1
+ import { RelativeDateRange } from '../../date.types';
2
+ export declare const setOffsetValue: (value: number | string, currentRange: RelativeDateRange) => RelativeDateRange;
@@ -0,0 +1,6 @@
1
+ import set from 'ramda/src/set';
2
+ import lensPath from 'ramda/src/lensPath';
3
+ export var setOffsetValue = function setOffsetValue(value, currentRange) {
4
+ var updatedValue = value === '' ? null : value;
5
+ return set(lensPath(['offset', 'value']))(typeof updatedValue === 'number' && updatedValue >= 0 ? Math.round(updatedValue) : 0, currentRange);
6
+ };
@@ -0,0 +1,2 @@
1
+ import { RelativeDateRange } from '../../date.types';
2
+ export declare const updatePresetKey: (range: RelativeDateRange) => RelativeDateRange;
@@ -0,0 +1,23 @@
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; }
2
+
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; }
4
+
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; }
6
+
7
+ import { findMatchingPreset } from './findMatchingPreset.utils';
8
+ import { CUSTOM_RANGE_KEY } from '../../constants';
9
+ export var updatePresetKey = function updatePresetKey(range) {
10
+ var matchingPreset = findMatchingPreset(range);
11
+
12
+ if (matchingPreset && matchingPreset.key) {
13
+ return _objectSpread({}, range, {
14
+ key: matchingPreset.key,
15
+ translationKey: matchingPreset.translationKey
16
+ });
17
+ }
18
+
19
+ return _objectSpread({}, range, {
20
+ key: CUSTOM_RANGE_KEY,
21
+ translationKey: CUSTOM_RANGE_KEY
22
+ });
23
+ };
@@ -1,4 +1,4 @@
1
- import { AbsoluteDateRange, RelativeDateRange, RelativeUnits, RangeKey } from './date.types';
1
+ import { RelativeDateRangePreset, AbsoluteDateRangePreset, RelativeUnits, RangeKey } from './date.types';
2
2
  export declare const SECONDS = "SECONDS";
3
3
  export declare const MINUTES = "MINUTES";
4
4
  export declare const HOURS = "HOURS";
@@ -12,14 +12,25 @@ export declare const RELATIVE_OFFSET_MAX = 999999;
12
12
  export declare const RELATIVE_DURATION_MAX = 999999;
13
13
  export declare const RELATIVE_UNITS: RelativeUnits[];
14
14
  export declare const ALL_TIME: RangeKey;
15
+ export declare const RANGES_MODE: {
16
+ PAST: string;
17
+ FUTURE: string;
18
+ SINCE: string;
19
+ };
20
+ export declare const RANGES_ICON: {
21
+ PAST: JSX.Element;
22
+ FUTURE: JSX.Element;
23
+ SINCE: JSX.Element;
24
+ };
15
25
  export declare const range: (start: number, end: number) => number[];
16
26
  export declare const CUSTOM_RANGE_KEY = "custom";
17
27
  export declare const DURATION_MODIFIERS: {
18
28
  readonly LAST: "timestampLast";
19
29
  readonly NEXT: "timestampNext";
20
30
  };
21
- export declare const RELATIVE_PRESETS: RelativeDateRange[];
22
- export declare const ABSOLUTE_PRESETS: AbsoluteDateRange[];
31
+ export declare const RELATIVE_PRESETS: RelativeDateRangePreset[];
32
+ export declare const RELATIVE_SECTION_BUTTON_KEYS_ORDER: string[];
33
+ export declare const ABSOLUTE_PRESETS: AbsoluteDateRangePreset[];
23
34
  export declare const TIME_OPTIONS: {
24
35
  HOURS: number[];
25
36
  MINUTES: number[];
package/dist/constants.js CHANGED
@@ -1,3 +1,5 @@
1
+ import React from 'react';
2
+ import { ArrowRightM, ArrowLeftM, SinceArrowRightM } from '@synerise/ds-icon';
1
3
  export var SECONDS = 'SECONDS';
2
4
  export var MINUTES = 'MINUTES';
3
5
  export var HOURS = 'HOURS';
@@ -11,6 +13,16 @@ export var RELATIVE_OFFSET_MAX = 999999;
11
13
  export var RELATIVE_DURATION_MAX = 999999;
12
14
  export var RELATIVE_UNITS = [SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS];
13
15
  export var ALL_TIME = 'ALL_TIME';
16
+ export var RANGES_MODE = {
17
+ PAST: 'PAST',
18
+ FUTURE: 'FUTURE',
19
+ SINCE: 'SINCE'
20
+ };
21
+ export var RANGES_ICON = {
22
+ PAST: /*#__PURE__*/React.createElement(ArrowLeftM, null),
23
+ FUTURE: /*#__PURE__*/React.createElement(ArrowRightM, null),
24
+ SINCE: /*#__PURE__*/React.createElement(SinceArrowRightM, null)
25
+ };
14
26
  export var range = function range(start, end) {
15
27
  if (end <= start) {
16
28
  return [];
@@ -282,6 +294,7 @@ export var RELATIVE_PRESETS = [{
282
294
  value: 1
283
295
  }
284
296
  }];
297
+ export var RELATIVE_SECTION_BUTTON_KEYS_ORDER = [CUSTOM_RANGE_KEY, ALL_TIME, 'TODAY', 'YESTERDAY', 'LAST_WEEK', 'LAST_MONTH', 'LAST_YEAR', 'THIS_WEEK', 'THIS_MONTH', 'LAST_7_DAYS', 'LAST_3_MONTHS', 'LAST_6_MONTHS'];
285
298
  export var ABSOLUTE_PRESETS = [{
286
299
  key: ALL_TIME,
287
300
  translationKey: 'allTime',
@@ -45,7 +45,15 @@ export interface RelativeDateRange extends DateRangeBase {
45
45
  from?: NullableDateLimit;
46
46
  to?: NullableDateLimit;
47
47
  }
48
+ type PresetType = {
49
+ key: string;
50
+ translationKey?: string;
51
+ };
52
+ export type RelativeDateRangePreset = RelativeDateRange & PresetType;
53
+ export type AbsoluteDateRangePreset = AbsoluteDateRange & PresetType;
54
+ export type DateRangePreset = RelativeDateRangePreset | AbsoluteDateRangePreset;
48
55
  export type Days = {
49
56
  [key: string]: object;
50
57
  };
51
58
  export type DateRange = AbsoluteDateRange | RelativeDateRange;
59
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-date-range-picker",
3
- "version": "0.24.10",
3
+ "version": "0.25.1",
4
4
  "description": "Date-Range-Picker UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -34,25 +34,25 @@
34
34
  "types": "dist/index.d.ts",
35
35
  "dependencies": {
36
36
  "@date-fns/upgrade": "^1.0.3",
37
- "@synerise/ds-badge": "^0.6.39",
38
- "@synerise/ds-button": "^0.18.4",
39
- "@synerise/ds-button-group": "^0.6.32",
37
+ "@synerise/ds-badge": "^0.6.40",
38
+ "@synerise/ds-button": "^0.18.5",
39
+ "@synerise/ds-button-group": "^0.6.33",
40
40
  "@synerise/ds-data-format": "^0.4.4",
41
- "@synerise/ds-date-picker": "^0.10.20",
42
- "@synerise/ds-dropdown": "^0.17.83",
43
- "@synerise/ds-icon": "^0.58.4",
44
- "@synerise/ds-inline-edit": "^0.6.83",
45
- "@synerise/ds-input": "^0.19.4",
46
- "@synerise/ds-input-number": "^0.8.26",
47
- "@synerise/ds-manageable-list": "^0.26.13",
48
- "@synerise/ds-menu": "^0.18.1",
49
- "@synerise/ds-scrollbar": "^0.6.9",
50
- "@synerise/ds-select": "^0.15.22",
51
- "@synerise/ds-slider": "^0.13.1",
52
- "@synerise/ds-tags": "^0.8.17",
53
- "@synerise/ds-time-picker": "^0.8.11",
54
- "@synerise/ds-tooltip": "^0.14.6",
55
- "@synerise/ds-utils": "^0.24.18",
41
+ "@synerise/ds-date-picker": "^0.10.22",
42
+ "@synerise/ds-dropdown": "^0.17.84",
43
+ "@synerise/ds-icon": "^0.58.5",
44
+ "@synerise/ds-inline-edit": "^0.6.84",
45
+ "@synerise/ds-input": "^0.19.5",
46
+ "@synerise/ds-input-number": "^0.8.27",
47
+ "@synerise/ds-manageable-list": "^0.26.14",
48
+ "@synerise/ds-menu": "^0.18.2",
49
+ "@synerise/ds-scrollbar": "^0.6.10",
50
+ "@synerise/ds-select": "^0.15.23",
51
+ "@synerise/ds-slider": "^0.13.2",
52
+ "@synerise/ds-tags": "^0.8.18",
53
+ "@synerise/ds-time-picker": "^0.9.1",
54
+ "@synerise/ds-tooltip": "^0.14.7",
55
+ "@synerise/ds-utils": "^0.24.19",
56
56
  "date-fns": "^2.16.1",
57
57
  "dayjs": "^1.8.35",
58
58
  "lodash": "^4.17.20",
@@ -73,5 +73,5 @@
73
73
  "@testing-library/user-event": "^10.3.1",
74
74
  "@types/ramda": "^0.28.23"
75
75
  },
76
- "gitHead": "8eb4a3e304406a8dbb9258803c48952461fc5a55"
76
+ "gitHead": "1b2696001dd88b4c11413977e38b541b0c78733d"
77
77
  }
@@ -1,19 +0,0 @@
1
- import { DateRange, RelativeDateRange } from '../date.types';
2
- import { Props } from './RelativeRangePicker.types';
3
- import { RelativeMode } from '../DateRangePicker.types';
4
- export declare const setOffsetValue: (value: number | string, currentRange: RelativeDateRange) => RelativeDateRange;
5
- export declare const setDurationValue: (value: number | string, currentRange: RelativeDateRange) => RelativeDateRange;
6
- export declare const setFuture: (a: any, obj: any) => any;
7
- export declare const RANGES_MODE: {
8
- PAST: string;
9
- FUTURE: string;
10
- SINCE: string;
11
- };
12
- export declare const RANGES_ICON: {
13
- PAST: JSX.Element;
14
- FUTURE: JSX.Element;
15
- SINCE: JSX.Element;
16
- };
17
- export declare const getDefaultCustomRange: (currentGroup: string | null) => RelativeDateRange;
18
- export declare const isAbsolute: (value: DateRange) => boolean;
19
- export declare function getCurrentGroupFromProps({ relativeModes }: Props): RelativeMode | null;
@@ -1,52 +0,0 @@
1
- import set from 'ramda/src/set';
2
- import lensPath from 'ramda/src/lensPath';
3
- import { ArrowRightM, ArrowLeftM, SinceArrowRightM } from '@synerise/ds-icon';
4
- import * as React from 'react';
5
- import * as CONST from '../constants';
6
- export var setOffsetValue = function setOffsetValue(value, currentRange) {
7
- var updatedValue = value === '' ? null : value;
8
- return set(lensPath(['offset', 'value']))(typeof updatedValue === 'number' && updatedValue >= 0 ? Math.round(updatedValue) : 0, currentRange);
9
- };
10
- export var setDurationValue = function setDurationValue(value, currentRange) {
11
- var updatedValue = value === '' ? null : value;
12
- return set(lensPath(['duration', 'value']))(typeof updatedValue === 'number' && updatedValue >= 1 ? Math.round(updatedValue) : 1, currentRange);
13
- };
14
- export var setFuture = set(lensPath(['future']));
15
- export var RANGES_MODE = {
16
- PAST: 'PAST',
17
- FUTURE: 'FUTURE',
18
- SINCE: 'SINCE'
19
- };
20
- export var RANGES_ICON = {
21
- PAST: /*#__PURE__*/React.createElement(ArrowLeftM, null),
22
- FUTURE: /*#__PURE__*/React.createElement(ArrowRightM, null),
23
- SINCE: /*#__PURE__*/React.createElement(SinceArrowRightM, null)
24
- };
25
- export var getDefaultCustomRange = function getDefaultCustomRange(currentGroup) {
26
- return {
27
- type: CONST.RELATIVE,
28
- from: undefined,
29
- to: undefined,
30
- future: currentGroup === RANGES_MODE.FUTURE,
31
- offset: {
32
- type: 'DAYS',
33
- value: 0
34
- },
35
- duration: {
36
- type: 'DAYS',
37
- value: 30
38
- }
39
- };
40
- };
41
- export var isAbsolute = function isAbsolute(value) {
42
- return value.type === CONST.ABSOLUTE && !value.from && !value.to;
43
- };
44
- export function getCurrentGroupFromProps(_ref) {
45
- var relativeModes = _ref.relativeModes;
46
-
47
- if (!!relativeModes && (relativeModes == null ? void 0 : relativeModes.length) > 0) {
48
- return relativeModes[0];
49
- }
50
-
51
- return null;
52
- }