@synerise/ds-date-range-picker 0.25.0 → 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 (46) hide show
  1. package/CHANGELOG.md +11 -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/Shared/RangeFilterStatus/RangeFilterStatus.d.ts +1 -2
  6. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.js +8 -7
  7. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.d.ts +1 -0
  8. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.js +9 -3
  9. package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.types.d.ts +2 -0
  10. package/dist/RangePickerInput/RangePickerInput.js +2 -1
  11. package/dist/RawDateRangePicker.d.ts +2 -2
  12. package/dist/RawDateRangePicker.js +13 -24
  13. package/dist/RelativeRangePicker/Elements/CustomRangeForm/CustomRangeForm.js +1 -1
  14. package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.js +3 -4
  15. package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.js +3 -4
  16. package/dist/RelativeRangePicker/Elements/ModeDropdown/ModeDropdown.js +1 -1
  17. package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.d.ts +1 -2
  18. package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.js +5 -1
  19. package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.js +3 -2
  20. package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.types.d.ts +3 -3
  21. package/dist/RelativeRangePicker/RelativeRangePicker.js +12 -10
  22. package/dist/RelativeRangePicker/RelativeRangePicker.types.d.ts +3 -3
  23. package/dist/RelativeRangePicker/utils/findMatchingPreset.utils.d.ts +18 -0
  24. package/dist/RelativeRangePicker/utils/findMatchingPreset.utils.js +20 -0
  25. package/dist/RelativeRangePicker/utils/getCurrentGroupFromProps.utils.d.ts +3 -0
  26. package/dist/RelativeRangePicker/utils/getCurrentGroupFromProps.utils.js +9 -0
  27. package/dist/RelativeRangePicker/utils/getDefaultCustomRange.utils.d.ts +2 -0
  28. package/dist/RelativeRangePicker/utils/getDefaultCustomRange.utils.js +17 -0
  29. package/dist/RelativeRangePicker/utils/index.d.ts +8 -0
  30. package/dist/RelativeRangePicker/utils/index.js +8 -0
  31. package/dist/RelativeRangePicker/utils/isAbsolute.utils.d.ts +2 -0
  32. package/dist/RelativeRangePicker/utils/isAbsolute.utils.js +4 -0
  33. package/dist/RelativeRangePicker/utils/setDurationValue.utils.d.ts +2 -0
  34. package/dist/RelativeRangePicker/utils/setDurationValue.utils.js +6 -0
  35. package/dist/RelativeRangePicker/utils/setFuture.utils.d.ts +1 -0
  36. package/dist/RelativeRangePicker/utils/setFuture.utils.js +3 -0
  37. package/dist/RelativeRangePicker/utils/setOffsetValue.utils.d.ts +2 -0
  38. package/dist/RelativeRangePicker/utils/setOffsetValue.utils.js +6 -0
  39. package/dist/RelativeRangePicker/utils/updatePresetKey.utils.d.ts +2 -0
  40. package/dist/RelativeRangePicker/utils/updatePresetKey.utils.js +23 -0
  41. package/dist/constants.d.ts +14 -3
  42. package/dist/constants.js +13 -0
  43. package/dist/date.types.d.ts +8 -0
  44. package/package.json +20 -20
  45. package/dist/RelativeRangePicker/utils.d.ts +0 -19
  46. package/dist/RelativeRangePicker/utils.js +0 -52
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.25.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.25.0...@synerise/ds-date-range-picker@0.25.1) (2023-10-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **date-range-picker:** ui/ux updates to filter and relative section ([8bb636b](https://github.com/Synerise/synerise-design/commit/8bb636b185a5fe98a4ef70350dc387493ac6f0a5))
12
+
13
+
14
+
15
+
16
+
6
17
  # [0.25.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.24.10...@synerise/ds-date-range-picker@0.25.0) (2023-10-17)
7
18
 
8
19
 
package/README.md CHANGED
@@ -58,7 +58,8 @@ const value = {
58
58
  | showFilter | Enable range filtering | boolean | `false` |
59
59
  | showCustomRange | Enable custom range form in relative range picker | boolean | `true` |
60
60
  | validate | Function to specify if particular date ranges are correct | (date:Date)=>boolean | - |
61
- | value | Value of the picker | DateRange | new Date() |
61
+ | value | Value of the picker | DateRange | |
62
+ | defaultValue | Default value of the picker (when value is undefined and when user clears input) | DateRange | |
62
63
  | startAlwaysOnTheLeft | Enable not to move month from left side to right side | boolean | `false` |
63
64
  | onVisibleChange | Callback executed when popover with dateRangePicker changes its visibility | (visible: boolean) => void | - |
64
65
  | filterValueSelectionModes | Allowed modes to display in filter | DateLimitMode[] | ["Range", "Hour"] |
@@ -17,6 +17,7 @@ import { getDefaultTexts } from './utils';
17
17
 
18
18
  var DateRangePicker = function DateRangePicker(props) {
19
19
  var value = props.value,
20
+ defaultValue = props.defaultValue,
20
21
  onApply = props.onApply,
21
22
  showTime = props.showTime,
22
23
  texts = props.texts,
@@ -37,12 +38,13 @@ var DateRangePicker = function DateRangePicker(props) {
37
38
  _props$readOnly = props.readOnly,
38
39
  readOnly = _props$readOnly === void 0 ? false : _props$readOnly;
39
40
  var intl = useIntl();
41
+ var selectedRange = value || defaultValue;
40
42
 
41
43
  var _React$useState = React.useState(false),
42
44
  popupVisible = _React$useState[0],
43
45
  setPopupVisible = _React$useState[1];
44
46
 
45
- var _React$useState2 = React.useState(value),
47
+ var _React$useState2 = React.useState(selectedRange),
46
48
  selectedDate = _React$useState2[0],
47
49
  setSelectedDate = _React$useState2[1];
48
50
 
@@ -59,17 +61,18 @@ var DateRangePicker = function DateRangePicker(props) {
59
61
  }
60
62
  }, [popupVisible]);
61
63
  React.useEffect(function () {
62
- if (!isEqual(value, selectedDate)) {
63
- setSelectedDate(value);
64
+ if (!isEqual(selectedRange, selectedDate)) {
65
+ setSelectedDate(selectedRange);
64
66
  } // eslint-disable-next-line react-hooks/exhaustive-deps
65
67
 
66
- }, [value]);
67
- var onApplyCallback = React.useCallback(function (val) {
68
- onApply && onApply(val);
69
- setSelectedDate(val);
68
+ }, [selectedRange]);
69
+ var onApplyCallback = React.useCallback(function (range) {
70
+ var finalDateRange = range === undefined && defaultValue !== undefined ? defaultValue : range;
71
+ onApply && onApply(finalDateRange);
72
+ setSelectedDate(finalDateRange);
70
73
  setPopupVisible(false);
71
74
  setInputActive(false);
72
- }, [onApply]);
75
+ }, [defaultValue, onApply]);
73
76
 
74
77
  var conditionalVisibilityProps = _objectSpread({}, popupVisible === false && {
75
78
  visible: false
@@ -2,7 +2,7 @@ import { ReactNode } from 'react';
2
2
  import { WrappedComponentProps } from 'react-intl';
3
3
  import { PopoverProps } from 'antd/lib/popover';
4
4
  import { DateToFormatOptions } from '@synerise/ds-data-format';
5
- import { DateFilter, DateRange, RelativeUnits } from './date.types';
5
+ import { DateFilter, DateRange, DateRangePreset, RelativeUnits } from './date.types';
6
6
  import { FilterDefinition } from './RangeFilter/RangeFilter.types';
7
7
  import { SavedFilter } from './RangeFilter/Shared/FilterDropdown/FilterDropdown.types';
8
8
  import { Props as FooterProps } from './Footer/Footer.types';
@@ -42,7 +42,7 @@ export interface DateRangePickerProps extends WrappedComponentProps {
42
42
  onFilterSave?: (filters: SavedFilter[]) => void;
43
43
  popoverProps?: Partial<PopoverProps>;
44
44
  popoverTrigger?: ReactNode;
45
- ranges?: DateRange[];
45
+ ranges?: DateRangePreset[];
46
46
  rangeUnits?: Array<RelativeUnits>;
47
47
  relativeFuture?: boolean;
48
48
  relativePast?: boolean;
@@ -59,6 +59,7 @@ export interface DateRangePickerProps extends WrappedComponentProps {
59
59
  message?: string;
60
60
  };
61
61
  value: DateRange;
62
+ defaultValue?: DateRange;
62
63
  /**
63
64
  * transforms value, by default omits ALL_TIME props
64
65
  */
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import { RangeFilterStatusProps } from './RangeFilterStatus.types';
3
- declare const RangeFilterStatus: React.FC<RangeFilterStatusProps>;
2
+ declare const RangeFilterStatus: ({ onFilterRemove, disabled, filter, label, onClick, texts }: RangeFilterStatusProps) => JSX.Element;
4
3
  export default RangeFilterStatus;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import Button from '@synerise/ds-button';
3
3
  import ContentItem from '@synerise/ds-manageable-list/dist/Item/ContentItem/ContentItem';
4
4
  import Badge from '@synerise/ds-badge';
@@ -13,16 +13,17 @@ var RangeFilterStatus = function RangeFilterStatus(_ref) {
13
13
  disabled = _ref.disabled,
14
14
  filter = _ref.filter,
15
15
  label = _ref.label,
16
- _onClick = _ref.onClick;
16
+ _onClick = _ref.onClick,
17
+ texts = _ref.texts;
17
18
  var intl = useIntl();
18
- return /*#__PURE__*/React.createElement(S.Container, null, !filter ? /*#__PURE__*/React.createElement(Button.Creator, {
19
+ return /*#__PURE__*/React.createElement(S.Container, null, /*#__PURE__*/React.createElement(S.Title, null, texts == null ? void 0 : texts.filter), !filter ? /*#__PURE__*/React.createElement(Button.Creator, {
19
20
  label: label,
20
21
  disabled: disabled,
21
22
  onClick: _onClick,
22
23
  block: true
23
24
  }) : /*#__PURE__*/React.createElement(ContentItem, {
24
- onClick: function onClick(e) {
25
- e.stopPropagation();
25
+ onClick: function onClick(event) {
26
+ event.stopPropagation();
26
27
 
27
28
  _onClick();
28
29
  },
@@ -35,8 +36,8 @@ var RangeFilterStatus = function RangeFilterStatus(_ref) {
35
36
  defaultMessage: 'Remove'
36
37
  })
37
38
  }, /*#__PURE__*/React.createElement(Icon, {
38
- onClick: function onClick(e) {
39
- e.stopPropagation();
39
+ onClick: function onClick(event) {
40
+ event.stopPropagation();
40
41
  onFilterRemove && onFilterRemove();
41
42
  },
42
43
  component: /*#__PURE__*/React.createElement(CloseS, null),
@@ -1,3 +1,4 @@
1
1
  export declare const BadgeWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export declare const Title: import("styled-components").StyledComponent<"h3", any, {}, never>;
2
3
  export declare const SuffixText: import("styled-components").StyledComponent<"span", any, {}, never>;
3
4
  export declare const Container: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -3,13 +3,19 @@ export var BadgeWrapper = styled.div.withConfig({
3
3
  displayName: "RangeFilterStatusstyles__BadgeWrapper",
4
4
  componentId: "sc-1ei851t-0"
5
5
  })(["margin-right:16px;margin-bottom:-2px;"]);
6
+ export var Title = styled.h3.withConfig({
7
+ displayName: "RangeFilterStatusstyles__Title",
8
+ componentId: "sc-1ei851t-1"
9
+ })(["font-size:16px;line-height:1.39;color:", ";margin-bottom:1em;"], function (props) {
10
+ return props.theme.palette['grey-800'];
11
+ });
6
12
  export var SuffixText = styled.span.withConfig({
7
13
  displayName: "RangeFilterStatusstyles__SuffixText",
8
- componentId: "sc-1ei851t-1"
14
+ componentId: "sc-1ei851t-2"
9
15
  })(["color:", ";font-weight:500;margin-right:16px;"], function (props) {
10
16
  return props.theme.palette['blue-600'];
11
17
  });
12
18
  export var Container = styled.div.withConfig({
13
19
  displayName: "RangeFilterStatusstyles__Container",
14
- componentId: "sc-1ei851t-2"
15
- })(["margin:10px 0 24px 0;"]);
20
+ componentId: "sc-1ei851t-3"
21
+ })(["padding:16px 24px 24px;"]);
@@ -1,8 +1,10 @@
1
1
  import { DateFilter } from '../../../date.types';
2
+ import { Texts } from '../../../DateRangePicker.types';
2
3
  export type RangeFilterStatusProps = {
3
4
  filter: DateFilter | undefined;
4
5
  disabled: boolean;
5
6
  label: string;
7
+ texts?: Partial<Texts>;
6
8
  onClick: () => void;
7
9
  onFilterRemove: () => void;
8
10
  };
@@ -48,6 +48,7 @@ var RangePickerInput = function RangePickerInput(_ref) {
48
48
  setHovered = _React$useState[1];
49
49
 
50
50
  var showError = error || !!errorText;
51
+ var hasValue = (dateRangeValue == null ? void 0 : dateRangeValue.from) && (dateRangeValue == null ? void 0 : dateRangeValue.to);
51
52
  var handleIconMouseEnter = React.useCallback(function () {
52
53
  return setHovered(true);
53
54
  }, []);
@@ -113,7 +114,7 @@ var RangePickerInput = function RangePickerInput(_ref) {
113
114
  active: !!highlight && !disabled,
114
115
  tabIndex: disabled ? -1 : 0,
115
116
  focus: active && !disabled
116
- }, placeholder, /*#__PURE__*/React.createElement(S.IconSeparator, null), !readOnly && hovered && !!value && !!value.to && !!value.from ? /*#__PURE__*/React.createElement(Tooltip, {
117
+ }, placeholder, /*#__PURE__*/React.createElement(S.IconSeparator, null), !readOnly && hovered && hasValue ? /*#__PURE__*/React.createElement(Tooltip, {
117
118
  title: texts == null ? void 0 : texts.clear
118
119
  }, /*#__PURE__*/React.createElement(S.ClearIconWrapper, null, /*#__PURE__*/React.createElement(Icon, {
119
120
  component: /*#__PURE__*/React.createElement(Close3S, null),
@@ -1,11 +1,11 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import type { DateRangePickerProps, DateRangePickerProps as Props, State, AddonType } from './DateRangePicker.types';
3
- import type { DateRange, RelativeDateRange } from './date.types';
3
+ import type { DateRange } from './date.types';
4
4
  import { FilterDefinition, FilterValue } from './RangeFilter/RangeFilter.types';
5
5
  export declare function defaultValueTransformer(value: DateRange): DateRange;
6
6
  export declare class RawDateRangePicker extends PureComponent<DateRangePickerProps, State> {
7
7
  static defaultProps: {
8
- ranges: (import("./date.types").AbsoluteDateRange | RelativeDateRange)[];
8
+ ranges: (import("./date.types").RelativeDateRangePreset | import("./date.types").AbsoluteDateRangePreset)[];
9
9
  relativePast: boolean;
10
10
  showRelativePicker: boolean;
11
11
  validate: () => {
@@ -257,34 +257,23 @@ export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
257
257
  }
258
258
 
259
259
  if (showFilter) {
260
- var _value$filter, _value$filter2;
261
-
262
260
  var _addonKey = 'filter';
263
261
  var filterEnabled = value.from && value.to || isLifetime(value);
264
262
  var label = value != null && value.filter ? intl.formatMessage({
265
263
  id: "DS.DATE-RANGE-PICKER.FILTER-ENABLED",
266
264
  defaultMessage: 'Filter enabled'
267
265
  }) : intl.formatMessage({
268
- id: "DS.DATE-RANGE-PICKER.ADD-FILTER",
269
- defaultMessage: 'Add filter'
266
+ id: "DS.DATE-RANGE-PICKER.SELECT-DATE-FILTER",
267
+ defaultMessage: 'Select date filter'
270
268
  });
271
269
  addons.push({
272
- content: /*#__PURE__*/React.createElement(AddonCollapse, {
273
- content: /*#__PURE__*/React.createElement(RangeFilterStatus, {
274
- onFilterRemove: _this.handleRemoveFilterClick,
275
- filter: value.filter,
276
- disabled: !filterEnabled,
277
- label: label,
278
- onClick: _this.handleModalOpenClick
279
- }),
280
- title: texts == null ? void 0 : texts.filter,
281
- expanded: _addonKey === visibleAddonKey,
282
- onCollapseChange: function onCollapseChange(expanded) {
283
- return _this.handleAddonCollapse(_addonKey, expanded);
284
- },
285
- collapsedSummary: value != null && (_value$filter = value.filter) != null && _value$filter.type ? intl.formatMessage({
286
- id: "DS.DATE-RANGE-PICKER." + (value == null ? void 0 : (_value$filter2 = value.filter) == null ? void 0 : _value$filter2.type)
287
- }) : null
270
+ content: /*#__PURE__*/React.createElement(RangeFilterStatus, {
271
+ onFilterRemove: _this.handleRemoveFilterClick,
272
+ filter: value.filter,
273
+ texts: texts,
274
+ disabled: !filterEnabled,
275
+ label: label,
276
+ onClick: _this.handleModalOpenClick
288
277
  }),
289
278
  key: _addonKey
290
279
  });
@@ -296,7 +285,7 @@ export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
296
285
  _this.state = {
297
286
  mode: MODES.DATE,
298
287
  value: normalizeRange(props.value),
299
- visibleAddonKey: ''
288
+ visibleAddonKey: 'relative-picker'
300
289
  };
301
290
  return _this;
302
291
  }
@@ -306,7 +295,7 @@ export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
306
295
  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
307
296
  var value = this.props.value;
308
297
 
309
- if (prevProps.value !== value && !value) {
298
+ if (prevProps.value !== value) {
310
299
  this.handleRangeChange(value);
311
300
  }
312
301
  };
@@ -367,9 +356,9 @@ export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
367
356
 
368
357
  function isRelative(dateRange) {
369
358
  var isLegacyCustom = Object.keys(value).includes('key') && key === undefined;
370
- return CONST.RELATIVE_PRESETS.map(function (e) {
359
+ return dateRange.key && (CONST.RELATIVE_PRESETS.map(function (e) {
371
360
  return e.key;
372
- }).includes(dateRange.key) || isLegacyCustom;
361
+ }).includes(dateRange.key) || dateRange.key === CONST.CUSTOM_RANGE_KEY) || isLegacyCustom;
373
362
  }
374
363
 
375
364
  var isValidRelative = isRelative(value) && Boolean(value.offset && value.duration);
@@ -5,7 +5,7 @@ import * as S from '../../RelativeRangePicker.styles';
5
5
  import ModeDropdown from '../ModeDropdown/ModeDropdown';
6
6
  import DurationField from './DurationField/DurationField';
7
7
  import OffsetField from './OffsetField/OffsetField';
8
- import { RANGES_MODE } from '../../utils';
8
+ import { RANGES_MODE } from '../../../constants';
9
9
  import TimestampRange from '../TimestampRange/TimestampRange';
10
10
  export var setOffsetType = set(lensPath(['offset', 'type']));
11
11
 
@@ -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.25.0",
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.21",
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.9.0",
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": "02f0a1dad6df5acf89b3d3defa6993716ba992fb"
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
- }