@synerise/ds-date-range-picker 0.17.3 → 0.17.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/DateRangePicker.js +12 -10
- package/dist/DateRangePicker.types.d.ts +14 -1
- package/dist/DateRangePicker.types.js +2 -1
- package/dist/Footer/Footer.js +4 -3
- package/dist/Footer/Footer.types.d.ts +1 -1
- package/dist/RangePicker/RangePicker.d.ts +1 -1
- package/dist/RangePicker/RangePicker.js +44 -7
- package/dist/RangePicker/RangePicker.types.d.ts +6 -1
- package/dist/RangePickerInput/RangePickerInput.d.ts +2 -2
- package/dist/RangePickerInput/RangePickerInput.js +15 -5
- package/dist/RangePickerInput/RangePickerInput.types.d.ts +6 -1
- package/dist/RawDateRangePicker.d.ts +8 -6
- package/dist/RawDateRangePicker.js +120 -47
- package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.d.ts +10 -2
- package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.js +35 -2
- package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.types.d.ts +7 -2
- package/dist/RelativeRangePicker/Elements/TimestampRange/TimestampRange.d.ts +1 -1
- package/dist/RelativeRangePicker/Elements/TimestampRange/TimestampRange.js +45 -11
- package/dist/RelativeRangePicker/Elements/TimestampRange/TimestampRange.types.d.ts +6 -1
- package/dist/RelativeRangePicker/RelativeRangePicker.d.ts +2 -3
- package/dist/RelativeRangePicker/RelativeRangePicker.js +19 -11
- package/dist/RelativeRangePicker/RelativeRangePicker.types.d.ts +7 -2
- package/dist/constants.d.ts +3 -3
- package/dist/date.types.d.ts +3 -1
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +17 -4
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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.17.5](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.17.4...@synerise/ds-date-range-picker@0.17.5) (2022-10-18)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @synerise/ds-date-range-picker
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [0.17.4](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.17.3...@synerise/ds-date-range-picker@0.17.4) (2022-10-14)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **date-range-picker:** lifetime, onApply fixes, refactor, custom-day ([735b4b4](https://github.com/Synerise/synerise-design/commit/735b4b4b6375ed083e60831f641126346d63f14f))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [0.17.3](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.17.2...@synerise/ds-date-range-picker@0.17.3) (2022-10-11)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @synerise/ds-date-range-picker
|
package/dist/DateRangePicker.js
CHANGED
|
@@ -19,7 +19,6 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
19
19
|
var value = props.value,
|
|
20
20
|
onApply = props.onApply,
|
|
21
21
|
showTime = props.showTime,
|
|
22
|
-
onValueChange = props.onValueChange,
|
|
23
22
|
texts = props.texts,
|
|
24
23
|
popoverTrigger = props.popoverTrigger,
|
|
25
24
|
forceAdjacentMonths = props.forceAdjacentMonths,
|
|
@@ -27,7 +26,13 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
27
26
|
arrowColor = props.arrowColor,
|
|
28
27
|
_onVisibleChange = props.onVisibleChange,
|
|
29
28
|
_props$popoverProps = props.popoverProps,
|
|
30
|
-
popoverProps = _props$popoverProps === void 0 ? {} : _props$popoverProps
|
|
29
|
+
popoverProps = _props$popoverProps === void 0 ? {} : _props$popoverProps,
|
|
30
|
+
_props$rangePickerInp = props.rangePickerInputProps,
|
|
31
|
+
rangePickerInputProps = _props$rangePickerInp === void 0 ? {} : _props$rangePickerInp,
|
|
32
|
+
_props$renderPopoverT = props.renderPopoverTrigger,
|
|
33
|
+
renderPopoverTrigger = _props$renderPopoverT === void 0 ? function () {
|
|
34
|
+
return undefined;
|
|
35
|
+
} : _props$renderPopoverT;
|
|
31
36
|
var intl = useIntl();
|
|
32
37
|
|
|
33
38
|
var _React$useState = React.useState(false),
|
|
@@ -56,10 +61,6 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
56
61
|
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
57
62
|
|
|
58
63
|
}, [value]);
|
|
59
|
-
var onValueChangeCallback = React.useCallback(function (val) {
|
|
60
|
-
onValueChange && onValueChange(val);
|
|
61
|
-
setSelectedDate(val);
|
|
62
|
-
}, [onValueChange]);
|
|
63
64
|
var onApplyCallback = React.useCallback(function (val) {
|
|
64
65
|
onApply && onApply(val);
|
|
65
66
|
setSelectedDate(val);
|
|
@@ -77,7 +78,6 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
77
78
|
content: /*#__PURE__*/React.createElement(RawDateRangePicker, _extends({}, props, {
|
|
78
79
|
showTime: showTime,
|
|
79
80
|
onApply: onApplyCallback,
|
|
80
|
-
onValueChange: onValueChangeCallback,
|
|
81
81
|
value: selectedDate,
|
|
82
82
|
texts: allTexts,
|
|
83
83
|
forceAdjacentMonths: forceAdjacentMonths
|
|
@@ -95,16 +95,18 @@ var DateRangePicker = function DateRangePicker(props) {
|
|
|
95
95
|
setInputActive(visibility);
|
|
96
96
|
_onVisibleChange && _onVisibleChange(visibility);
|
|
97
97
|
}
|
|
98
|
-
}, popoverProps, conditionalVisibilityProps), popoverTrigger ||
|
|
98
|
+
}, popoverProps, conditionalVisibilityProps), popoverTrigger || renderPopoverTrigger({
|
|
99
|
+
setPopupVisible: setPopupVisible
|
|
100
|
+
}) || /*#__PURE__*/React.createElement(RangePickerInput, _extends({
|
|
99
101
|
onClick: function onClick() {
|
|
100
102
|
return setPopupVisible(undefined);
|
|
101
103
|
},
|
|
102
104
|
value: selectedDate,
|
|
103
105
|
showTime: showTime,
|
|
104
106
|
texts: allTexts,
|
|
105
|
-
onChange:
|
|
107
|
+
onChange: onApplyCallback,
|
|
106
108
|
active: !!inputActive
|
|
107
|
-
})));
|
|
109
|
+
}, rangePickerInputProps))));
|
|
108
110
|
};
|
|
109
111
|
|
|
110
112
|
export default DateRangePicker;
|
|
@@ -5,6 +5,8 @@ import { DateFilter, DateRange, RelativeUnits } from './date.types';
|
|
|
5
5
|
import { FilterDefinition } from './RangeFilter/RangeFilter.types';
|
|
6
6
|
import { SavedFilter } from './RangeFilter/Shared/FilterDropdown/FilterDropdown.types';
|
|
7
7
|
import { Props as FooterProps } from './Footer/Footer.types';
|
|
8
|
+
import { RangePickerInputProps } from './RangePickerInput/RangePickerInput.types';
|
|
9
|
+
export { DateRange } from './date.types';
|
|
8
10
|
export declare type CustomColorArrow = 'blue' | 'grey' | 'red' | 'green' | 'yellow' | 'pink' | 'mars' | 'orange' | 'fern' | 'cyan' | 'purple' | 'violet';
|
|
9
11
|
export declare type AdditionalMapper = {
|
|
10
12
|
topLeft: CustomColorArrow;
|
|
@@ -16,7 +18,7 @@ export declare type AdditionalMapper = {
|
|
|
16
18
|
rightTop: CustomColorArrow;
|
|
17
19
|
rightBottom: CustomColorArrow;
|
|
18
20
|
};
|
|
19
|
-
export interface
|
|
21
|
+
export interface DateRangePickerProps extends WrappedComponentProps {
|
|
20
22
|
/**
|
|
21
23
|
* overwrite default container's class. Default value is `ds-date-range-picker`.
|
|
22
24
|
*/
|
|
@@ -49,8 +51,19 @@ export interface Props extends WrappedComponentProps {
|
|
|
49
51
|
message?: string;
|
|
50
52
|
};
|
|
51
53
|
value: DateRange;
|
|
54
|
+
/**
|
|
55
|
+
* transforms value, by default omits ALL_TIME props
|
|
56
|
+
*/
|
|
57
|
+
valueTransformer?: (value: DateRange) => DateRange;
|
|
52
58
|
arrowColor?: AdditionalMapper;
|
|
59
|
+
disableAbsoluteTimepickerInRelative?: boolean;
|
|
60
|
+
rangePickerInputProps?: RangePickerInputProps;
|
|
61
|
+
renderPopoverTrigger?: (...args: any) => JSX.Element;
|
|
53
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated use `DateRangePickerProps`
|
|
65
|
+
*/
|
|
66
|
+
export declare type Props = DateRangePickerProps;
|
|
54
67
|
export declare type RelativeMode = 'PAST' | 'FUTURE' | 'SINCE';
|
|
55
68
|
export interface State {
|
|
56
69
|
mode: string;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DateRange } from './date.types';
|
|
2
|
+
export { DateRange } from './date.types';
|
package/dist/Footer/Footer.js
CHANGED
|
@@ -13,6 +13,7 @@ import * as S from './Footer.styles';
|
|
|
13
13
|
import fnsFormat from '../dateUtils/format';
|
|
14
14
|
import getDateFromString from '../dateUtils/getDateFromString';
|
|
15
15
|
import * as CONST from '../constants';
|
|
16
|
+
import { isLifetime } from '../RelativeRangePicker/Elements/RangeDropdown/RangeDropdown';
|
|
16
17
|
|
|
17
18
|
var Footer = function Footer(_ref) {
|
|
18
19
|
var canApply = _ref.canApply,
|
|
@@ -33,12 +34,12 @@ var Footer = function Footer(_ref) {
|
|
|
33
34
|
|
|
34
35
|
var footerFormat = format || (showTime ? 'MMM D, YYYY, HH:mm' : 'MMM D, YYYY');
|
|
35
36
|
var ChosenRange = React.useMemo(function () {
|
|
36
|
-
if ((value == null ? void 0 : value.key) === CONST.ALL_TIME) {
|
|
37
|
+
if ((value == null ? void 0 : value.key) === CONST.ALL_TIME || value && isLifetime(value)) {
|
|
37
38
|
var _texts$value$translat;
|
|
38
39
|
|
|
39
40
|
return /*#__PURE__*/React.createElement(S.ChosenRange, {
|
|
40
41
|
className: "ds-date-range-picker-value"
|
|
41
|
-
}, value.translationKey ? (_texts$value$translat = texts[value.translationKey]) != null ? _texts$value$translat : value.translationKey : value == null ? void 0 : value.key);
|
|
42
|
+
}, value != null && value.translationKey ? (_texts$value$translat = texts[value.translationKey]) != null ? _texts$value$translat : value.translationKey : (value == null ? void 0 : value.key) || 'LIFETIME');
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
return /*#__PURE__*/React.createElement(S.ChosenRange, {
|
|
@@ -55,7 +56,7 @@ var Footer = function Footer(_ref) {
|
|
|
55
56
|
disabled: !canApply,
|
|
56
57
|
type: "primary",
|
|
57
58
|
onClick: function onClick() {
|
|
58
|
-
onApply && onApply();
|
|
59
|
+
onApply && onApply(value);
|
|
59
60
|
}
|
|
60
61
|
}, texts.apply))));
|
|
61
62
|
};
|
|
@@ -8,7 +8,7 @@ export declare type Props = {
|
|
|
8
8
|
value?: DateRange;
|
|
9
9
|
canApply?: boolean;
|
|
10
10
|
canSwitchMode?: boolean;
|
|
11
|
-
onApply?: (date?: Date | undefined) => void;
|
|
11
|
+
onApply?: (date?: Date | DateRange | undefined) => void;
|
|
12
12
|
onSwitchMode?: () => void;
|
|
13
13
|
message?: React.ReactNode | string;
|
|
14
14
|
texts: Texts;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DayModifiers } from 'react-day-picker';
|
|
3
|
-
import { Props, State, Side as SideType } from './RangePicker.types';
|
|
3
|
+
import { RangePickerProps as Props, State, Side as SideType } from './RangePicker.types';
|
|
4
4
|
export default class RangePicker extends React.PureComponent<Props, State> {
|
|
5
5
|
constructor(props: Props);
|
|
6
6
|
getSnapshotBeforeUpdate(prevProps: Readonly<Props>): null;
|
|
@@ -36,7 +36,15 @@ var TOOLTIP_FORMAT = 'MMM d, yyyy, HH:mm';
|
|
|
36
36
|
|
|
37
37
|
function replaceRange(value, day) {
|
|
38
38
|
var from = value.from,
|
|
39
|
-
to = value.to;
|
|
39
|
+
to = value.to;
|
|
40
|
+
|
|
41
|
+
if (from && typeof from === 'object') {
|
|
42
|
+
from = new Date(from.getTime());
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (to && typeof to === 'object') {
|
|
46
|
+
to = new Date(to.getTime());
|
|
47
|
+
}
|
|
40
48
|
|
|
41
49
|
if (!from) {
|
|
42
50
|
from = day;
|
|
@@ -405,16 +413,40 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
405
413
|
value = _this$props8.value,
|
|
406
414
|
forceAdjacentMonths = _this$props8.forceAdjacentMonths,
|
|
407
415
|
startAlwaysOnTheLeft = _this$props8.startAlwaysOnTheLeft;
|
|
408
|
-
var
|
|
416
|
+
var _this$props$jumpToSta = this.props.jumpToStartAndEnd,
|
|
417
|
+
jumpToStartAndEnd = _this$props$jumpToSta === void 0 ? true : _this$props$jumpToSta;
|
|
418
|
+
var _this$state3 = this.state,
|
|
419
|
+
left = _this$state3.left,
|
|
420
|
+
right = _this$state3.right;
|
|
409
421
|
var toDateChanged = !!(value != null && value.to) && (value == null ? void 0 : value.to) !== (prevProps == null ? void 0 : (_prevProps$value = prevProps.value) == null ? void 0 : _prevProps$value.to);
|
|
410
422
|
var fromDateChanged = !!(value != null && value.from) && (value == null ? void 0 : value.from) !== (prevProps == null ? void 0 : (_prevProps$value2 = prevProps.value) == null ? void 0 : _prevProps$value2.from);
|
|
423
|
+
var startOnLeft = fnsIsSameMonth(legacyParse(value.from), legacyParse(left.month));
|
|
424
|
+
var endOnLeft = fnsIsSameMonth(legacyParse(value.to), legacyParse(left.month));
|
|
411
425
|
|
|
412
|
-
if (
|
|
426
|
+
if (fromDateChanged && !endOnLeft || toDateChanged && !endOnLeft || forceAdjacentMonths !== prevProps.forceAdjacentMonths) {
|
|
413
427
|
if (startAlwaysOnTheLeft) {
|
|
414
428
|
this.setState(getSidesState(value, forceAdjacentMonths));
|
|
415
429
|
}
|
|
416
430
|
}
|
|
417
431
|
|
|
432
|
+
if (jumpToStartAndEnd && (fromDateChanged || toDateChanged)) {
|
|
433
|
+
var startOnRight = fnsIsSameMonth(legacyParse(value.from), legacyParse(right.month));
|
|
434
|
+
var isStartVisible = startOnLeft || startOnRight;
|
|
435
|
+
|
|
436
|
+
if (!isStartVisible) {
|
|
437
|
+
this.setState(getSidesState(value, forceAdjacentMonths));
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
var endOnRight = fnsIsSameMonth(legacyParse(value.to), legacyParse(right.month));
|
|
442
|
+
var isEndVisible = endOnLeft || endOnRight;
|
|
443
|
+
|
|
444
|
+
if (!isEndVisible) {
|
|
445
|
+
this.setState(getSidesState(value, forceAdjacentMonths));
|
|
446
|
+
return null;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
|
|
418
450
|
return null;
|
|
419
451
|
};
|
|
420
452
|
|
|
@@ -433,11 +465,16 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
433
465
|
mode: mode
|
|
434
466
|
}, this.renderSide(COLUMNS.RIGHT))), /*#__PURE__*/React.createElement(S.PickerFooter, null, /*#__PURE__*/React.createElement(Range, {
|
|
435
467
|
onClick: function onClick() {
|
|
436
|
-
|
|
468
|
+
var now = new Date();
|
|
469
|
+
|
|
470
|
+
var literallyNow = _objectSpread({}, value, {
|
|
471
|
+
translationKey: 'now',
|
|
437
472
|
type: 'ABSOLUTE',
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
})
|
|
473
|
+
from: now,
|
|
474
|
+
to: fnsAddMinutes(now, 1)
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
onChange(literallyNow);
|
|
441
478
|
}
|
|
442
479
|
}, texts.now), /*#__PURE__*/React.createElement(S.FooterSeparator, null), !dateOnly && /*#__PURE__*/React.createElement(S.DateTimeModeSwitch, {
|
|
443
480
|
type: "ghost",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WrappedComponentProps } from 'react-intl';
|
|
2
2
|
import { DateRange } from '../date.types';
|
|
3
3
|
import { Texts } from '../DateRangePicker.types';
|
|
4
|
-
export interface
|
|
4
|
+
export interface RangePickerProps extends WrappedComponentProps {
|
|
5
5
|
value: DateRange;
|
|
6
6
|
onChange: (value: DateRange) => void;
|
|
7
7
|
mode: string;
|
|
@@ -13,7 +13,12 @@ export interface Props extends WrappedComponentProps {
|
|
|
13
13
|
forceAdjacentMonths?: boolean;
|
|
14
14
|
showCustomRange?: boolean;
|
|
15
15
|
startAlwaysOnTheLeft?: boolean;
|
|
16
|
+
jumpToStartAndEnd?: boolean;
|
|
16
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated use @{type RangePickerProps}
|
|
20
|
+
*/
|
|
21
|
+
export declare type Props = RangePickerProps;
|
|
17
22
|
export interface State {
|
|
18
23
|
enteredTo?: Date | null;
|
|
19
24
|
left: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
declare const RangePickerInput: React.FC<
|
|
2
|
+
import { RangePickerInputProps } from './RangePickerInput.types';
|
|
3
|
+
declare const RangePickerInput: React.FC<RangePickerInputProps>;
|
|
4
4
|
export default RangePickerInput;
|
|
@@ -7,6 +7,7 @@ import Tooltip from '@synerise/ds-tooltip'; // eslint-disable-next-line import/n
|
|
|
7
7
|
import { default as fnsFormat } from '../dateUtils/format';
|
|
8
8
|
import * as S from './RangePickerInput.styles';
|
|
9
9
|
import { normalizeRange } from '../utils';
|
|
10
|
+
import { isLifetime } from '../RelativeRangePicker/Elements/RangeDropdown/RangeDropdown';
|
|
10
11
|
|
|
11
12
|
var RangePickerInput = function RangePickerInput(_ref) {
|
|
12
13
|
var value = _ref.value,
|
|
@@ -24,7 +25,9 @@ var RangePickerInput = function RangePickerInput(_ref) {
|
|
|
24
25
|
onFocus = _ref.onFocus,
|
|
25
26
|
onBlur = _ref.onBlur,
|
|
26
27
|
error = _ref.error,
|
|
27
|
-
errorText = _ref.errorText
|
|
28
|
+
errorText = _ref.errorText,
|
|
29
|
+
_ref$preferRelativeDe = _ref.preferRelativeDesc,
|
|
30
|
+
preferRelativeDesc = _ref$preferRelativeDe === void 0 ? false : _ref$preferRelativeDe;
|
|
28
31
|
var dateRangeValue = value ? normalizeRange(value) : value;
|
|
29
32
|
|
|
30
33
|
var _React$useState = React.useState(false),
|
|
@@ -66,6 +69,16 @@ var RangePickerInput = function RangePickerInput(_ref) {
|
|
|
66
69
|
highlight: active && !!isFromDateDefined && !isEndDateDefined && highlight
|
|
67
70
|
}, text);
|
|
68
71
|
}, [dateRangeValue, getText, active, texts, highlight]);
|
|
72
|
+
var placeholder = React.useMemo(function () {
|
|
73
|
+
if (isLifetime(value)) {
|
|
74
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, (texts == null ? void 0 : texts['allTime']) || 'Lifetime');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, preferRelativeDesc && (dateRangeValue == null ? void 0 : dateRangeValue.translationKey) && ((texts == null ? void 0 : texts[dateRangeValue.translationKey]) || (dateRangeValue == null ? void 0 : dateRangeValue.translationKey)) + " (", renderFromDate(), /*#__PURE__*/React.createElement(Icon, {
|
|
78
|
+
component: /*#__PURE__*/React.createElement(ArrowRightS, null),
|
|
79
|
+
color: theme.palette['grey-400']
|
|
80
|
+
}), renderEndDate(), preferRelativeDesc && (dateRangeValue == null ? void 0 : dateRangeValue.translationKey) && value && ')');
|
|
81
|
+
}, [dateRangeValue, renderFromDate, renderEndDate, preferRelativeDesc, texts, value]);
|
|
69
82
|
return /*#__PURE__*/React.createElement(React.Fragment, null, label && /*#__PURE__*/React.createElement(S.Label, {
|
|
70
83
|
label: label,
|
|
71
84
|
tooltip: tooltip
|
|
@@ -82,10 +95,7 @@ var RangePickerInput = function RangePickerInput(_ref) {
|
|
|
82
95
|
active: !!highlight && !disabled,
|
|
83
96
|
tabIndex: disabled ? -1 : 0,
|
|
84
97
|
focus: active && !disabled
|
|
85
|
-
},
|
|
86
|
-
component: /*#__PURE__*/React.createElement(ArrowRightS, null),
|
|
87
|
-
color: theme.palette['grey-400']
|
|
88
|
-
}), renderEndDate(), /*#__PURE__*/React.createElement(S.IconSeparator, null), hovered && !!value && !!value.to && !!value.from ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
98
|
+
}, placeholder, /*#__PURE__*/React.createElement(S.IconSeparator, null), hovered && !!value && !!value.to && !!value.from ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
89
99
|
title: texts == null ? void 0 : texts.clear
|
|
90
100
|
}, /*#__PURE__*/React.createElement(S.ClearIconWrapper, null, /*#__PURE__*/React.createElement(Icon, {
|
|
91
101
|
component: /*#__PURE__*/React.createElement(Close3S, null),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DateFilter, DateRange } from '../date.types';
|
|
3
3
|
import { Texts } from '../DateRangePicker.types';
|
|
4
|
-
export declare type
|
|
4
|
+
export declare type RangePickerInputProps = {
|
|
5
5
|
size?: 'large' | 'default' | 'small';
|
|
6
6
|
format?: string;
|
|
7
7
|
showTime?: boolean;
|
|
@@ -24,4 +24,9 @@ export declare type Props = {
|
|
|
24
24
|
tooltip?: string | React.ReactNode;
|
|
25
25
|
error?: boolean;
|
|
26
26
|
errorText?: React.ReactNode | string;
|
|
27
|
+
preferRelativeDesc?: boolean;
|
|
27
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated use `RangePickerInputProps`
|
|
31
|
+
*/
|
|
32
|
+
export declare type Props = RangePickerInputProps;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Props, State, AddonType } from './DateRangePicker.types';
|
|
3
|
-
import { DateRange, RelativeDateRange } from './date.types';
|
|
2
|
+
import type { DateRangePickerProps, DateRangePickerProps as Props, State, AddonType } from './DateRangePicker.types';
|
|
3
|
+
import type { DateRange, RelativeDateRange } from './date.types';
|
|
4
4
|
import { FilterDefinition, FilterValue } from './RangeFilter/RangeFilter.types';
|
|
5
|
-
export declare
|
|
5
|
+
export declare function defaultValueTransformer(value: DateRange): DateRange;
|
|
6
|
+
export declare class RawDateRangePicker extends React.PureComponent<DateRangePickerProps, State> {
|
|
6
7
|
static defaultProps: {
|
|
7
8
|
ranges: DateRange[];
|
|
8
9
|
relativePast: boolean;
|
|
@@ -10,8 +11,9 @@ export declare class RawDateRangePicker extends React.PureComponent<Props, State
|
|
|
10
11
|
validate: () => {
|
|
11
12
|
valid: boolean;
|
|
12
13
|
};
|
|
14
|
+
valueTransformer: typeof defaultValueTransformer;
|
|
13
15
|
};
|
|
14
|
-
constructor(props:
|
|
16
|
+
constructor(props: DateRangePickerProps);
|
|
15
17
|
componentDidUpdate(prevProps: Readonly<Props>): void;
|
|
16
18
|
handleFilterCancel: () => void;
|
|
17
19
|
handleFilterApply: (filter?: FilterValue<FilterDefinition> | undefined) => void;
|
|
@@ -24,9 +26,9 @@ export declare class RawDateRangePicker extends React.PureComponent<Props, State
|
|
|
24
26
|
getAddons: () => AddonType[];
|
|
25
27
|
render(): JSX.Element;
|
|
26
28
|
}
|
|
27
|
-
declare const _default: React.ForwardRefExoticComponent<Pick<
|
|
29
|
+
declare const _default: React.ForwardRefExoticComponent<Pick<DateRangePickerProps, "texts" | "format" | "value" | "onVisibleChange" | "rangeUnits" | "containerClass" | "disableDefaultTexts" | "disabledDate" | "forceAdjacentMonths" | "forceAbsolute" | "footerProps" | "onValueChange" | "onApply" | "onFilterSave" | "popoverProps" | "popoverTrigger" | "ranges" | "relativeFuture" | "relativePast" | "relativeModes" | "savedFilters" | "showRelativePicker" | "showFilter" | "showTime" | "showCustomRange" | "validate" | "valueTransformer" | "arrowColor" | "disableAbsoluteTimepickerInRelative" | "rangePickerInputProps" | "renderPopoverTrigger"> & {
|
|
28
30
|
forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
|
|
29
31
|
} & React.RefAttributes<any>> & {
|
|
30
|
-
WrappedComponent: React.ComponentType<
|
|
32
|
+
WrappedComponent: React.ComponentType<DateRangePickerProps>;
|
|
31
33
|
};
|
|
32
34
|
export default _default;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
|
-
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; }
|
|
4
|
-
|
|
5
|
-
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; }
|
|
6
|
-
|
|
7
3
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
8
4
|
|
|
9
5
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
|
|
10
6
|
|
|
7
|
+
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; }
|
|
8
|
+
|
|
9
|
+
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; }
|
|
10
|
+
|
|
11
11
|
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; }
|
|
12
12
|
|
|
13
13
|
import * as React from 'react';
|
|
@@ -25,6 +25,50 @@ import Footer from './Footer/Footer';
|
|
|
25
25
|
import { normalizeRange } from './utils';
|
|
26
26
|
import RangeFilter from './RangeFilter/RangeFilter';
|
|
27
27
|
import RangeFilterStatus from './RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus';
|
|
28
|
+
import { isLifetime } from './RelativeRangePicker/Elements/RangeDropdown/RangeDropdown';
|
|
29
|
+
export function defaultValueTransformer(value) {
|
|
30
|
+
if (value.key === 'ALL_TIME' || isLifetime(value)) {
|
|
31
|
+
return {
|
|
32
|
+
type: 'ABSOLUTE'
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var id = value.id,
|
|
37
|
+
timestamp = value.timestamp,
|
|
38
|
+
translationKey = value.translationKey;
|
|
39
|
+
|
|
40
|
+
var baseValue = _objectSpread({}, id ? {
|
|
41
|
+
id: id
|
|
42
|
+
} : {}, {}, timestamp ? {
|
|
43
|
+
timestamp: timestamp
|
|
44
|
+
} : {}, {}, translationKey ? {
|
|
45
|
+
translationKey: translationKey
|
|
46
|
+
} : {});
|
|
47
|
+
|
|
48
|
+
if (value.type === 'ABSOLUTE') {
|
|
49
|
+
return _objectSpread({}, baseValue, {
|
|
50
|
+
type: value.type
|
|
51
|
+
}, value.from ? {
|
|
52
|
+
from: value.from
|
|
53
|
+
} : {}, {}, value.to ? {
|
|
54
|
+
to: value.to
|
|
55
|
+
} : {});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (value.type === 'RELATIVE') {
|
|
59
|
+
return _objectSpread({}, baseValue, {
|
|
60
|
+
type: value.type,
|
|
61
|
+
key: value.key,
|
|
62
|
+
duration: value.duration,
|
|
63
|
+
offset: value.offset,
|
|
64
|
+
future: value.future
|
|
65
|
+
}, value.filter ? {
|
|
66
|
+
filter: value.filter
|
|
67
|
+
} : {});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
28
72
|
export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
29
73
|
_inheritsLoose(RawDateRangePicker, _React$PureComponent);
|
|
30
74
|
|
|
@@ -51,6 +95,8 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
51
95
|
});
|
|
52
96
|
|
|
53
97
|
_defineProperty(_assertThisInitialized(_this), "handleRangeChange", function (range) {
|
|
98
|
+
var _valueTransformer;
|
|
99
|
+
|
|
54
100
|
if (!range) {
|
|
55
101
|
return;
|
|
56
102
|
}
|
|
@@ -59,7 +105,9 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
59
105
|
return;
|
|
60
106
|
}
|
|
61
107
|
|
|
62
|
-
var
|
|
108
|
+
var _this$props = _this.props,
|
|
109
|
+
onValueChange = _this$props.onValueChange,
|
|
110
|
+
valueTransformer = _this$props.valueTransformer;
|
|
63
111
|
var _this$state = _this.state,
|
|
64
112
|
value = _this$state.value,
|
|
65
113
|
mode = _this$state.mode;
|
|
@@ -68,31 +116,33 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
68
116
|
}));
|
|
69
117
|
|
|
70
118
|
if ((newValue.type === 'RELATIVE' || newValue.key === CONST.ALL_TIME) && mode === MODES.TIME) {
|
|
71
|
-
// clicked on RangeButtons and was selecting time
|
|
72
119
|
_this.setState({
|
|
73
120
|
mode: MODES.DATE
|
|
74
121
|
});
|
|
75
122
|
}
|
|
76
123
|
|
|
77
124
|
if (range != null && range.key) {
|
|
78
|
-
// for validation, see `isValidAbsolute`, this key shouldn't be present
|
|
79
125
|
newValue.key = range == null ? void 0 : range.key;
|
|
80
|
-
}
|
|
126
|
+
} // transformation has to take place here, because `key` property might get omitted by valueTransformer
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
var legacyValue = (_valueTransformer = valueTransformer == null ? void 0 : valueTransformer(newValue)) != null ? _valueTransformer : newValue;
|
|
81
130
|
|
|
82
131
|
_this.setState({
|
|
83
|
-
value: _objectSpread({},
|
|
132
|
+
value: _objectSpread({}, legacyValue, {
|
|
84
133
|
translationKey: range == null ? void 0 : range.translationKey
|
|
85
134
|
})
|
|
86
135
|
});
|
|
87
136
|
|
|
88
|
-
onValueChange && onValueChange(
|
|
137
|
+
onValueChange && onValueChange(legacyValue);
|
|
89
138
|
});
|
|
90
139
|
|
|
91
140
|
_defineProperty(_assertThisInitialized(_this), "handleApply", function () {
|
|
92
141
|
var value = _this.state.value;
|
|
93
|
-
var _this$
|
|
94
|
-
forceAbsolute = _this$
|
|
95
|
-
onApply = _this$
|
|
142
|
+
var _this$props2 = _this.props,
|
|
143
|
+
forceAbsolute = _this$props2.forceAbsolute,
|
|
144
|
+
onApply = _this$props2.onApply,
|
|
145
|
+
valueTransformer = _this$props2.valueTransformer;
|
|
96
146
|
|
|
97
147
|
if (forceAbsolute && value.type === RELATIVE) {
|
|
98
148
|
onApply && onApply(_objectSpread({}, value, {}, relativeToAbsolute(value)));
|
|
@@ -104,11 +154,17 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
104
154
|
return;
|
|
105
155
|
}
|
|
106
156
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
157
|
+
if (onApply) {
|
|
158
|
+
var _valueTransformer2;
|
|
159
|
+
|
|
160
|
+
var valueToEmit = _objectSpread({}, value, {
|
|
161
|
+
from: value.type === ABSOLUTE && value.from instanceof Date ? value.from.toISOString() : undefined,
|
|
162
|
+
to: value.type === ABSOLUTE && value.to instanceof Date ? value.to.toISOString() : undefined,
|
|
163
|
+
type: value.type
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
onApply((_valueTransformer2 = valueTransformer == null ? void 0 : valueTransformer(valueToEmit)) != null ? _valueTransformer2 : valueToEmit);
|
|
167
|
+
}
|
|
112
168
|
});
|
|
113
169
|
|
|
114
170
|
_defineProperty(_assertThisInitialized(_this), "handleModalOpenClick", function () {
|
|
@@ -139,17 +195,18 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
139
195
|
});
|
|
140
196
|
|
|
141
197
|
_defineProperty(_assertThisInitialized(_this), "getAddons", function () {
|
|
142
|
-
var _this$
|
|
143
|
-
showRelativePicker = _this$
|
|
144
|
-
showFilter = _this$
|
|
145
|
-
relativeFuture = _this$
|
|
146
|
-
relativePast = _this$
|
|
147
|
-
ranges = _this$
|
|
148
|
-
relativeModes = _this$
|
|
149
|
-
texts = _this$
|
|
150
|
-
intl = _this$
|
|
151
|
-
rangeUnits = _this$
|
|
152
|
-
showCustomRange = _this$
|
|
198
|
+
var _this$props3 = _this.props,
|
|
199
|
+
showRelativePicker = _this$props3.showRelativePicker,
|
|
200
|
+
showFilter = _this$props3.showFilter,
|
|
201
|
+
relativeFuture = _this$props3.relativeFuture,
|
|
202
|
+
relativePast = _this$props3.relativePast,
|
|
203
|
+
ranges = _this$props3.ranges,
|
|
204
|
+
relativeModes = _this$props3.relativeModes,
|
|
205
|
+
texts = _this$props3.texts,
|
|
206
|
+
intl = _this$props3.intl,
|
|
207
|
+
rangeUnits = _this$props3.rangeUnits,
|
|
208
|
+
showCustomRange = _this$props3.showCustomRange,
|
|
209
|
+
valueTransformer = _this$props3.valueTransformer;
|
|
153
210
|
var _this$state2 = _this.state,
|
|
154
211
|
value = _this$state2.value,
|
|
155
212
|
visibleAddonKey = _this$state2.visibleAddonKey;
|
|
@@ -169,7 +226,8 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
169
226
|
relativeModes: relativeModes,
|
|
170
227
|
texts: texts,
|
|
171
228
|
rangeUnits: rangeUnits,
|
|
172
|
-
showCustomRange: showCustomRange
|
|
229
|
+
showCustomRange: showCustomRange,
|
|
230
|
+
valueTransformer: valueTransformer
|
|
173
231
|
}),
|
|
174
232
|
expanded: addonKey === visibleAddonKey,
|
|
175
233
|
title: texts == null ? void 0 : texts.relativeDateRange,
|
|
@@ -230,22 +288,33 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
230
288
|
};
|
|
231
289
|
|
|
232
290
|
_proto.render = function render() {
|
|
233
|
-
var _this$
|
|
234
|
-
showTime = _this$
|
|
235
|
-
format = _this$
|
|
236
|
-
disabledDate = _this$
|
|
237
|
-
validate = _this$
|
|
238
|
-
forceAdjacentMonths = _this$
|
|
239
|
-
texts = _this$
|
|
240
|
-
savedFilters = _this$
|
|
241
|
-
onFilterSave = _this$
|
|
242
|
-
intl = _this$
|
|
243
|
-
_this$
|
|
244
|
-
containerClass = _this$
|
|
245
|
-
footerProps = _this$
|
|
291
|
+
var _this$props4 = this.props,
|
|
292
|
+
showTime = _this$props4.showTime,
|
|
293
|
+
format = _this$props4.format,
|
|
294
|
+
disabledDate = _this$props4.disabledDate,
|
|
295
|
+
validate = _this$props4.validate,
|
|
296
|
+
forceAdjacentMonths = _this$props4.forceAdjacentMonths,
|
|
297
|
+
texts = _this$props4.texts,
|
|
298
|
+
savedFilters = _this$props4.savedFilters,
|
|
299
|
+
onFilterSave = _this$props4.onFilterSave,
|
|
300
|
+
intl = _this$props4.intl,
|
|
301
|
+
_this$props4$containe = _this$props4.containerClass,
|
|
302
|
+
containerClass = _this$props4$containe === void 0 ? 'ds-date-range-picker' : _this$props4$containe,
|
|
303
|
+
footerProps = _this$props4.footerProps,
|
|
304
|
+
_this$props4$disableA = _this$props4.disableAbsoluteTimepickerInRelative,
|
|
305
|
+
disableAbsoluteTimepickerInRelative = _this$props4$disableA === void 0 ? false : _this$props4$disableA;
|
|
246
306
|
var _this$state3 = this.state,
|
|
247
307
|
value = _this$state3.value,
|
|
248
308
|
mode = _this$state3.mode;
|
|
309
|
+
|
|
310
|
+
if (value.type === 'RELATIVE' && (!value.from || !value.to)) {
|
|
311
|
+
var absolute = normalizeRange(value);
|
|
312
|
+
Object.assign(value, {
|
|
313
|
+
from: absolute.from,
|
|
314
|
+
to: absolute.to
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
|
|
249
318
|
var from = value.from,
|
|
250
319
|
to = value.to,
|
|
251
320
|
key = value.key;
|
|
@@ -271,7 +340,10 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
271
340
|
}
|
|
272
341
|
|
|
273
342
|
var isValidRelative = isRelative(value) && Boolean(value.offset && value.duration);
|
|
274
|
-
var
|
|
343
|
+
var isValidSince = value.type === 'SINCE' && Boolean(value.offset && value.duration); // TODO apply ranges and find mapped lifetime here, this applies only for defaultValueTransformer
|
|
344
|
+
|
|
345
|
+
var isValid = (isValidAbsolute || isValidRelative || isValidSince || key === CONST.ALL_TIME) && validator.valid;
|
|
346
|
+
var canSwitchToTimePicker = isValid && (!disableAbsoluteTimepickerInRelative || value.type === 'ABSOLUTE');
|
|
275
347
|
return /*#__PURE__*/React.createElement(Container, {
|
|
276
348
|
className: containerClass
|
|
277
349
|
}, /*#__PURE__*/React.createElement(RangePicker, {
|
|
@@ -281,7 +353,7 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
281
353
|
disabledDate: disabledDate,
|
|
282
354
|
onSwitchMode: this.handleSwitchMode,
|
|
283
355
|
dateOnly: !showTime,
|
|
284
|
-
canSwitchMode:
|
|
356
|
+
canSwitchMode: canSwitchToTimePicker,
|
|
285
357
|
texts: texts,
|
|
286
358
|
forceAdjacentMonths: forceAdjacentMonths,
|
|
287
359
|
intl: intl
|
|
@@ -292,7 +364,7 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
292
364
|
key: addon.key
|
|
293
365
|
}, addon.content);
|
|
294
366
|
}), /*#__PURE__*/React.createElement(Footer, _extends({
|
|
295
|
-
canApply: isValid,
|
|
367
|
+
canApply: isValid || isLifetime(value),
|
|
296
368
|
onApply: this.handleApply,
|
|
297
369
|
dateOnly: !showTime,
|
|
298
370
|
mode: mode,
|
|
@@ -318,7 +390,8 @@ _defineProperty(RawDateRangePicker, "defaultProps", {
|
|
|
318
390
|
return {
|
|
319
391
|
valid: true
|
|
320
392
|
};
|
|
321
|
-
}
|
|
393
|
+
},
|
|
394
|
+
valueTransformer: defaultValueTransformer
|
|
322
395
|
});
|
|
323
396
|
|
|
324
397
|
export default injectIntl(RawDateRangePicker);
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { RangeDropdownProps } from './RangeDropdown.types';
|
|
3
|
+
import { RelativeDateRange } from '../../../date.types';
|
|
4
|
+
/**
|
|
5
|
+
* Tell whether given date (range) is a lifetime value.
|
|
6
|
+
*
|
|
7
|
+
* @param date-value @{type DateRange}
|
|
8
|
+
* @param fallback whether to accept existing properties, but set to `undefined`, default `false`
|
|
9
|
+
*/
|
|
10
|
+
export declare const isLifetime: (range?: import("../../../date.types").AbsoluteDateRange | RelativeDateRange | undefined, fallback?: boolean) => boolean;
|
|
11
|
+
declare const RangeDropdown: React.FC<RangeDropdownProps>;
|
|
4
12
|
export default RangeDropdown;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import find from 'ramda/src/find';
|
|
3
|
+
import { isEqual } from 'lodash';
|
|
3
4
|
import Icon, { AngleDownS, CheckS } from '@synerise/ds-icon';
|
|
4
5
|
import { useOnClickOutside } from '@synerise/ds-utils';
|
|
5
6
|
import Scrollbar from '@synerise/ds-scrollbar';
|
|
@@ -9,12 +10,39 @@ var MAX_ITEMS_COUNT = 7;
|
|
|
9
10
|
var ITEMS_HEIGHT = 32;
|
|
10
11
|
var DROPDOWN_WIDTH = 160;
|
|
11
12
|
var DROPDOWN_PADDING = 8;
|
|
13
|
+
/**
|
|
14
|
+
* Tell whether given date (range) is a lifetime value.
|
|
15
|
+
*
|
|
16
|
+
* @param date-value @{type DateRange}
|
|
17
|
+
* @param fallback whether to accept existing properties, but set to `undefined`, default `false`
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export var isLifetime = function isLifetime(range, fallback) {
|
|
21
|
+
if (fallback === void 0) {
|
|
22
|
+
fallback = false;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (!range) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var keys = Object.keys(range);
|
|
30
|
+
var legacyDef = range.type === 'ABSOLUTE' && !keys.includes('from') && !keys.includes('to'); // reasonable def comes from the fact that empty from and to sometimes might be also set like this (from/to as undefined)
|
|
31
|
+
|
|
32
|
+
var reasonableDef = range.type === 'ABSOLUTE' && range.from === undefined && range.to === undefined;
|
|
33
|
+
var legacyValueButLifetimeForSure = reasonableDef && range.translationKey === 'allTime';
|
|
34
|
+
return legacyDef || fallback && reasonableDef || legacyValueButLifetimeForSure;
|
|
35
|
+
};
|
|
12
36
|
|
|
13
37
|
var RangeDropdown = function RangeDropdown(_ref) {
|
|
14
38
|
var ranges = _ref.ranges,
|
|
15
39
|
currentRange = _ref.currentRange,
|
|
16
40
|
texts = _ref.texts,
|
|
17
|
-
onChange = _ref.onChange
|
|
41
|
+
onChange = _ref.onChange,
|
|
42
|
+
_ref$valueTransformer = _ref.valueTransformer,
|
|
43
|
+
valueTransformer = _ref$valueTransformer === void 0 ? function (e) {
|
|
44
|
+
return e;
|
|
45
|
+
} : _ref$valueTransformer;
|
|
18
46
|
|
|
19
47
|
var _React$useState = React.useState(false),
|
|
20
48
|
dropVisible = _React$useState[0],
|
|
@@ -32,9 +60,14 @@ var RangeDropdown = function RangeDropdown(_ref) {
|
|
|
32
60
|
setDropVisible(false);
|
|
33
61
|
}, [onChange, ranges]);
|
|
34
62
|
if (!ranges || ranges.length === 0) return null;
|
|
63
|
+
var mappedRanges = ranges.map(valueTransformer);
|
|
64
|
+
var transformedCurrentRange = valueTransformer(currentRange);
|
|
65
|
+
var anyOfTransformedRangesMatchesCurrentRange = find(function (r) {
|
|
66
|
+
return isEqual(transformedCurrentRange, r);
|
|
67
|
+
}, mappedRanges);
|
|
35
68
|
var containsCurrentRange = currentRange && find(function (range) {
|
|
36
69
|
return range.key === currentRange.key;
|
|
37
|
-
}, ranges);
|
|
70
|
+
}, ranges) || anyOfTransformedRangesMatchesCurrentRange;
|
|
38
71
|
var overlay = /*#__PURE__*/React.createElement(S.OverlayWrapper, {
|
|
39
72
|
visible: dropVisible,
|
|
40
73
|
ref: overlayRef,
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { AbsoluteDateRange, DateRange, RelativeDateRange } from '../../../date.types';
|
|
2
|
-
import { Texts } from '../../../DateRangePicker.types';
|
|
3
|
-
export declare type
|
|
2
|
+
import { DateRangePickerProps, Texts } from '../../../DateRangePicker.types';
|
|
3
|
+
export declare type RangeDropdownProps = {
|
|
4
4
|
ranges: DateRange[];
|
|
5
5
|
currentRange: RelativeDateRange;
|
|
6
6
|
texts: Texts;
|
|
7
7
|
onChange: (range: AbsoluteDateRange | RelativeDateRange | undefined) => void;
|
|
8
|
+
valueTransformer?: ((value: DateRange | object) => DateRange | object) | DateRangePickerProps['valueTransformer'];
|
|
8
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated use `DateRangePickerProps`
|
|
12
|
+
*/
|
|
13
|
+
export declare type Props = DateRangePickerProps;
|
|
@@ -4,6 +4,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
4
4
|
|
|
5
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
6
|
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
8
|
import * as React from 'react';
|
|
8
9
|
import DatePicker from '@synerise/ds-date-picker/dist/DatePicker';
|
|
9
10
|
import * as S from '../../RelativeRangePicker.styles';
|
|
@@ -14,24 +15,41 @@ import END_OF from '../../../dateUtils/endOf';
|
|
|
14
15
|
import DIFFERENCE from '../../../dateUtils/difference';
|
|
15
16
|
import { DURATION_MODIFIERS } from '../../../constants';
|
|
16
17
|
import { fnsIsAfter } from '../../../fns';
|
|
18
|
+
import { DEFAULT_RANGE } from '../../../utils';
|
|
17
19
|
|
|
18
20
|
var TimestampRange = function TimestampRange(_ref) {
|
|
21
|
+
var _currentRange$duratio, _currentRange$duratio2;
|
|
22
|
+
|
|
19
23
|
var currentRange = _ref.currentRange,
|
|
20
24
|
currentGroup = _ref.currentGroup,
|
|
21
25
|
handleChange = _ref.handleChange,
|
|
22
26
|
texts = _ref.texts,
|
|
23
27
|
onTimestampChange = _ref.onTimestampChange,
|
|
28
|
+
_ref$getValueOnReset = _ref.getValueOnReset,
|
|
29
|
+
getValueOnReset = _ref$getValueOnReset === void 0 ? function () {
|
|
30
|
+
return _objectSpread({}, DEFAULT_RANGE, {
|
|
31
|
+
type: 'RELATIVE',
|
|
32
|
+
offset: {
|
|
33
|
+
type: 'SINCE',
|
|
34
|
+
value: new Date()
|
|
35
|
+
},
|
|
36
|
+
duration: {
|
|
37
|
+
type: 'DAYS',
|
|
38
|
+
value: 30
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
} : _ref$getValueOnReset,
|
|
24
42
|
timestamp = _ref.timestamp;
|
|
25
43
|
|
|
26
44
|
var _React$useState = React.useState(DURATION_MODIFIERS.LAST),
|
|
27
45
|
durationModifier = _React$useState[0],
|
|
28
46
|
setDurationModifier = _React$useState[1];
|
|
29
47
|
|
|
30
|
-
var _React$useState2 = React.useState(currentRange.duration.value),
|
|
48
|
+
var _React$useState2 = React.useState(currentRange == null ? void 0 : (_currentRange$duratio = currentRange.duration) == null ? void 0 : _currentRange$duratio.value),
|
|
31
49
|
durationValue = _React$useState2[0],
|
|
32
50
|
setDurationValue = _React$useState2[1];
|
|
33
51
|
|
|
34
|
-
var _React$useState3 = React.useState(currentRange.duration.type),
|
|
52
|
+
var _React$useState3 = React.useState(currentRange == null ? void 0 : (_currentRange$duratio2 = currentRange.duration) == null ? void 0 : _currentRange$duratio2.type),
|
|
35
53
|
durationUnit = _React$useState3[0],
|
|
36
54
|
setDurationUnit = _React$useState3[1];
|
|
37
55
|
|
|
@@ -48,11 +66,27 @@ var TimestampRange = function TimestampRange(_ref) {
|
|
|
48
66
|
var NOW = new Date();
|
|
49
67
|
var rangeStart, newOffset, offsetToTimestamp;
|
|
50
68
|
var future = fnsIsAfter(NOW, date);
|
|
69
|
+
var isSince = currentGroup === 'SINCE';
|
|
51
70
|
|
|
52
|
-
if (
|
|
71
|
+
if (isSince) {
|
|
72
|
+
offsetToTimestamp = {
|
|
73
|
+
future: durationModifier === DURATION_MODIFIERS.NEXT,
|
|
74
|
+
duration: {
|
|
75
|
+
type: duration.type,
|
|
76
|
+
value: duration.value
|
|
77
|
+
},
|
|
78
|
+
offset: {
|
|
79
|
+
type: 'SINCE',
|
|
80
|
+
value: timestamp
|
|
81
|
+
},
|
|
82
|
+
key: undefined
|
|
83
|
+
};
|
|
84
|
+
} else if (durationModifier === DURATION_MODIFIERS.NEXT) {
|
|
53
85
|
rangeStart = END_OF[duration.type](ADD[duration.type](date, -Number(future)));
|
|
54
86
|
newOffset = DIFFERENCE[duration.type](NOW, rangeStart);
|
|
55
|
-
offsetToTimestamp = _objectSpread({
|
|
87
|
+
offsetToTimestamp = _objectSpread({
|
|
88
|
+
future: true
|
|
89
|
+
}, currentRange, {
|
|
56
90
|
duration: {
|
|
57
91
|
type: duration.type,
|
|
58
92
|
value: duration.value
|
|
@@ -63,12 +97,12 @@ var TimestampRange = function TimestampRange(_ref) {
|
|
|
63
97
|
},
|
|
64
98
|
key: undefined
|
|
65
99
|
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (durationModifier === DURATION_MODIFIERS.LAST) {
|
|
100
|
+
} else if (durationModifier === DURATION_MODIFIERS.LAST) {
|
|
69
101
|
rangeStart = START_OF[duration.type](ADD[duration.type](date, -Number(future)));
|
|
70
102
|
newOffset = DIFFERENCE[duration.type](NOW, rangeStart);
|
|
71
|
-
offsetToTimestamp = _objectSpread({
|
|
103
|
+
offsetToTimestamp = _objectSpread({
|
|
104
|
+
future: false
|
|
105
|
+
}, currentRange, {
|
|
72
106
|
duration: {
|
|
73
107
|
type: duration.type,
|
|
74
108
|
value: duration.value
|
|
@@ -81,7 +115,7 @@ var TimestampRange = function TimestampRange(_ref) {
|
|
|
81
115
|
});
|
|
82
116
|
}
|
|
83
117
|
|
|
84
|
-
offsetToTimestamp && handleChange(offsetToTimestamp);
|
|
118
|
+
offsetToTimestamp && handleChange(offsetToTimestamp); // FIXME
|
|
85
119
|
}
|
|
86
120
|
};
|
|
87
121
|
|
|
@@ -106,7 +140,7 @@ var TimestampRange = function TimestampRange(_ref) {
|
|
|
106
140
|
onTimestampChange && onTimestampChange(date);
|
|
107
141
|
},
|
|
108
142
|
onClear: function onClear() {
|
|
109
|
-
onTimestampChange && onTimestampChange(
|
|
143
|
+
onTimestampChange && onTimestampChange(getValueOnReset()); // FIXME cannot reselect date after clearing
|
|
110
144
|
},
|
|
111
145
|
dropdownProps: {
|
|
112
146
|
getPopupContainer: function getPopupContainer(node) {
|
|
@@ -142,7 +176,7 @@ var TimestampRange = function TimestampRange(_ref) {
|
|
|
142
176
|
unit: durationUnit,
|
|
143
177
|
durationModifier: durationModifier,
|
|
144
178
|
onDurationModifierChange: function onDurationModifierChange(modifier) {
|
|
145
|
-
setDurationModifier(modifier);
|
|
179
|
+
setDurationModifier(modifier); // FIXME
|
|
146
180
|
},
|
|
147
181
|
texts: texts
|
|
148
182
|
}));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RelativeDateRange } from '../../../date.types';
|
|
2
2
|
import { RelativeMode, Texts } from '../../../DateRangePicker.types';
|
|
3
|
-
export declare type
|
|
3
|
+
export declare type TimestampRangeProps = {
|
|
4
4
|
currentRange: RelativeDateRange;
|
|
5
5
|
currentGroup: string | null;
|
|
6
6
|
handleChange: (value: RelativeDateRange) => void;
|
|
@@ -8,4 +8,9 @@ export declare type Props = {
|
|
|
8
8
|
onTimestampChange?: (timestamp: Date | undefined) => void;
|
|
9
9
|
timestamp?: Date | undefined;
|
|
10
10
|
texts: Texts;
|
|
11
|
+
getValueOnReset?: (value?: Date) => RelativeDateRange | Date | undefined;
|
|
11
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated
|
|
15
|
+
*/
|
|
16
|
+
export declare type Props = TimestampRangeProps;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { WrappedComponentProps } from 'react-intl';
|
|
3
|
-
|
|
4
|
-
declare const _default: React.ForwardRefExoticComponent<Pick<Props & WrappedComponentProps<"intl">, "onChange" | "texts" | "value" | "since" | "rangeUnits" | "ranges" | "relativeModes" | "showCustomRange" | "future" | "past"> & {
|
|
3
|
+
declare const _default: React.ForwardRefExoticComponent<Pick<import("./RelativeRangePicker.types").RelativeRangePickerProps & WrappedComponentProps<"intl">, "onChange" | "texts" | "value" | "since" | "rangeUnits" | "ranges" | "relativeModes" | "showCustomRange" | "valueTransformer" | "future" | "past"> & {
|
|
5
4
|
forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
|
|
6
5
|
} & React.RefAttributes<any>> & {
|
|
7
|
-
WrappedComponent: React.ComponentType<
|
|
6
|
+
WrappedComponent: React.ComponentType<import("./RelativeRangePicker.types").RelativeRangePickerProps & WrappedComponentProps<"intl">>;
|
|
8
7
|
};
|
|
9
8
|
export default _default;
|
|
@@ -60,14 +60,15 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
60
60
|
currentGroup = _this$state.currentGroup,
|
|
61
61
|
currentRange = _this$state.currentRange;
|
|
62
62
|
|
|
63
|
-
if (currentGroup
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
if (currentGroup === RANGES_MODE.SINCE) {
|
|
64
|
+
onChange(_objectSpread({}, currentRange, {
|
|
65
|
+
type: 'RELATIVE',
|
|
66
66
|
key: undefined,
|
|
67
67
|
translationKey: CUSTOM_RANGE_KEY
|
|
68
|
-
}));
|
|
68
|
+
})); // FIXME: make currentGroup rely on value rather than state
|
|
69
69
|
} else {
|
|
70
|
-
|
|
70
|
+
var sourceRange = getDefaultCustomRange(currentGroup);
|
|
71
|
+
onChange(_objectSpread({}, sourceRange, {
|
|
71
72
|
key: undefined,
|
|
72
73
|
translationKey: CUSTOM_RANGE_KEY
|
|
73
74
|
}));
|
|
@@ -77,11 +78,13 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
77
78
|
_defineProperty(_assertThisInitialized(_this), "onChange", function (value) {
|
|
78
79
|
var currentGroup = _this.state.currentGroup;
|
|
79
80
|
var onChange = _this.props.onChange;
|
|
80
|
-
var
|
|
81
|
+
var isSince = currentGroup === RANGES_MODE.SINCE;
|
|
82
|
+
var isFuture = isSince ? value.future : value.timestamp && fnsIsAfter(value.timestamp, new Date()); // FIXME since past/future
|
|
81
83
|
|
|
82
84
|
var changes = _objectSpread({}, setFuture(currentGroup === RANGES_MODE.FUTURE || isFuture, value), {
|
|
83
|
-
|
|
84
|
-
});
|
|
85
|
+
type: 'RELATIVE'
|
|
86
|
+
}); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
87
|
+
|
|
85
88
|
|
|
86
89
|
onChange(normalizeRange(changes));
|
|
87
90
|
});
|
|
@@ -106,12 +109,14 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
106
109
|
var currentRange = _this.state.currentRange;
|
|
107
110
|
var _this$props2 = _this.props,
|
|
108
111
|
onChange = _this$props2.onChange,
|
|
109
|
-
texts = _this$props2.texts
|
|
112
|
+
texts = _this$props2.texts,
|
|
113
|
+
valueTransformer = _this$props2.valueTransformer;
|
|
110
114
|
return /*#__PURE__*/React.createElement(RangeDropdown, {
|
|
111
115
|
ranges: ranges,
|
|
112
116
|
currentRange: currentRange,
|
|
113
117
|
texts: texts,
|
|
114
|
-
onChange: onChange
|
|
118
|
+
onChange: onChange,
|
|
119
|
+
valueTransformer: valueTransformer
|
|
115
120
|
});
|
|
116
121
|
});
|
|
117
122
|
|
|
@@ -233,7 +238,10 @@ _defineProperty(RelativeRangePicker, "defaultProps", {
|
|
|
233
238
|
ranges: [].concat(CONST.RELATIVE_PRESETS, CONST.ABSOLUTE_PRESETS),
|
|
234
239
|
relativeModes: ['PAST', 'FUTURE'],
|
|
235
240
|
rangeUnits: CONST.RELATIVE_UNITS,
|
|
236
|
-
showCustomRange: true
|
|
241
|
+
showCustomRange: true,
|
|
242
|
+
valueTransformer: function valueTransformer(e) {
|
|
243
|
+
return e;
|
|
244
|
+
}
|
|
237
245
|
});
|
|
238
246
|
|
|
239
247
|
export default injectIntl(RelativeRangePicker);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IntlShape } from 'react-intl';
|
|
2
2
|
import { DateRange, RelativeDateRange } from '../date.types';
|
|
3
|
-
import {
|
|
4
|
-
export declare type
|
|
3
|
+
import { DateRangePickerProps, RelativeMode, Texts } from '../DateRangePicker.types';
|
|
4
|
+
export declare type RelativeRangePickerProps = {
|
|
5
5
|
ranges?: DateRange[];
|
|
6
6
|
value: DateRange;
|
|
7
7
|
onChange: (range: DateRange | undefined) => void;
|
|
@@ -13,6 +13,7 @@ export declare type Props = {
|
|
|
13
13
|
relativeModes?: RelativeMode[];
|
|
14
14
|
rangeUnits: DateRangePickerProps['rangeUnits'];
|
|
15
15
|
showCustomRange?: boolean;
|
|
16
|
+
valueTransformer?: (e: RelativeDateRange | any) => RelativeDateRange | any;
|
|
16
17
|
};
|
|
17
18
|
export declare type State = {
|
|
18
19
|
currentGroup: RelativeMode | null;
|
|
@@ -23,3 +24,7 @@ export declare type State = {
|
|
|
23
24
|
groupedRanges?: DateRange[];
|
|
24
25
|
sinceTimestamp?: Date | undefined;
|
|
25
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated use `RelativeRangePickerProps`
|
|
29
|
+
*/
|
|
30
|
+
export declare type Props = RelativeRangePickerProps;
|
package/dist/constants.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { AbsoluteDateRange, RelativeDateRange, RelativeUnits, RangeKey } from '.
|
|
|
2
2
|
export declare const SECONDS = "SECONDS";
|
|
3
3
|
export declare const MINUTES = "MINUTES";
|
|
4
4
|
export declare const HOURS = "HOURS";
|
|
5
|
-
export declare const DAYS
|
|
5
|
+
export declare const DAYS: RelativeUnits;
|
|
6
6
|
export declare const WEEKS = "WEEKS";
|
|
7
7
|
export declare const MONTHS = "MONTHS";
|
|
8
8
|
export declare const YEARS = "YEARS";
|
|
@@ -15,8 +15,8 @@ export declare const ALL_TIME: RangeKey;
|
|
|
15
15
|
export declare const range: (start: number, end: number) => number[];
|
|
16
16
|
export declare const CUSTOM_RANGE_KEY = "custom";
|
|
17
17
|
export declare const DURATION_MODIFIERS: {
|
|
18
|
-
LAST:
|
|
19
|
-
NEXT:
|
|
18
|
+
readonly LAST: "timestampLast";
|
|
19
|
+
readonly NEXT: "timestampNext";
|
|
20
20
|
};
|
|
21
21
|
export declare const RELATIVE_PRESETS: RelativeDateRange[];
|
|
22
22
|
export declare const ABSOLUTE_PRESETS: AbsoluteDateRange[];
|
package/dist/date.types.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
2
|
+
import type startOf from './dateUtils/startOf';
|
|
3
|
+
import type endOf from './dateUtils/endOf';
|
|
4
|
+
export declare type RelativeUnits = 'SECONDS' | 'MINUTES' | 'HOURS' | 'DAYS' | 'WEEKS' | 'MONTHS' | 'YEARS' | 'SINCE' | keyof typeof startOf | keyof typeof endOf;
|
|
3
5
|
export declare type RangeKey = 'TODAY' | 'YESTERDAY' | 'TOMORROW' | 'LAST_WEEK' | 'THIS_WEEK' | 'NEXT_WEEK' | 'LAST_7_DAYS' | 'NEXT_7_DAYS' | 'LAST_MONTH' | 'THIS_MONTH' | 'NEXT_MONTH' | 'LAST_3_MONTHS' | 'NEXT_3_MONTHS' | 'LAST_6_MONTHS' | 'NEXT_6_MONTHS' | 'LAST_YEAR' | 'NEXT_YEAR' | 'ALL_TIME';
|
|
4
6
|
export declare type NullableDateLimit = null | string | Date;
|
|
5
7
|
export interface DateFilter {
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { IntlShape } from 'react-intl';
|
|
2
2
|
import { DateRange } from './date.types';
|
|
3
|
+
import START_OF from './dateUtils/startOf';
|
|
4
|
+
import END_OF from './dateUtils/endOf';
|
|
3
5
|
import { Texts } from './DateRangePicker.types';
|
|
6
|
+
export { START_OF, END_OF };
|
|
4
7
|
export declare const normalizeRange: (range: DateRange) => DateRange;
|
|
5
8
|
export declare const getDefaultTexts: (intl: IntlShape, disableDefault?: boolean | undefined, texts?: Partial<Texts> | undefined) => Texts;
|
|
6
9
|
export declare const DEFAULT_RANGE: DateRange;
|
package/dist/utils.js
CHANGED
|
@@ -12,12 +12,12 @@ import { ABSOLUTE, CUSTOM_RANGE_KEY, RELATIVE } from './constants';
|
|
|
12
12
|
import ADD from './dateUtils/add';
|
|
13
13
|
import START_OF from './dateUtils/startOf';
|
|
14
14
|
import END_OF from './dateUtils/endOf';
|
|
15
|
+
export { START_OF, END_OF };
|
|
15
16
|
export var normalizeRange = function normalizeRange(range) {
|
|
16
17
|
if (!range || !range.type) {
|
|
17
18
|
return {
|
|
18
19
|
type: ABSOLUTE,
|
|
19
|
-
from: undefined
|
|
20
|
-
to: undefined
|
|
20
|
+
from: undefined
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -29,7 +29,15 @@ export var normalizeRange = function normalizeRange(range) {
|
|
|
29
29
|
var left;
|
|
30
30
|
var right;
|
|
31
31
|
|
|
32
|
-
if (
|
|
32
|
+
if ((offset == null ? void 0 : offset.type) === 'SINCE') {
|
|
33
|
+
if (future) {
|
|
34
|
+
left = offset.value;
|
|
35
|
+
right = ADD[duration.type](offset.value, duration.value);
|
|
36
|
+
} else {
|
|
37
|
+
left = ADD[duration.type](offset.value, -duration.value);
|
|
38
|
+
right = offset.value;
|
|
39
|
+
}
|
|
40
|
+
} else if (future) {
|
|
33
41
|
left = ADD[offset.type](START_OF[offset.type](now), offset.value);
|
|
34
42
|
right = ADD[duration.type](END_OF[duration.type](left), duration.value - 1);
|
|
35
43
|
} else {
|
|
@@ -53,11 +61,12 @@ export var normalizeRange = function normalizeRange(range) {
|
|
|
53
61
|
return normalizedRange;
|
|
54
62
|
}
|
|
55
63
|
|
|
64
|
+
var keys = Object.keys(range);
|
|
56
65
|
var from = range.from ? legacyParse(range.from) : undefined;
|
|
57
66
|
var to = range.to ? legacyParse(range.to) : undefined;
|
|
58
67
|
|
|
59
68
|
var dropNonAbsolute = function dropNonAbsolute(dateRange) {
|
|
60
|
-
return omit(dateRange, ['offset', 'duration']);
|
|
69
|
+
return omit(dateRange, ['offset', 'duration', 'future']);
|
|
61
70
|
};
|
|
62
71
|
|
|
63
72
|
var absoluteRange = _objectSpread({}, dropNonAbsolute(range), {
|
|
@@ -65,6 +74,10 @@ export var normalizeRange = function normalizeRange(range) {
|
|
|
65
74
|
to: to
|
|
66
75
|
});
|
|
67
76
|
|
|
77
|
+
if (!keys.includes('from') && !keys.includes('to')) {
|
|
78
|
+
absoluteRange.translationKey = 'allTime';
|
|
79
|
+
}
|
|
80
|
+
|
|
68
81
|
return absoluteRange;
|
|
69
82
|
};
|
|
70
83
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-date-range-picker",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.5",
|
|
4
4
|
"description": "Date-Range-Picker UI Component for the Synerise Design System",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"repository": "Synerise/synerise-design",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@date-fns/upgrade": "^1.0.3",
|
|
36
36
|
"@synerise/ds-button": "^0.17.9",
|
|
37
|
-
"@synerise/ds-date-picker": "^0.6.
|
|
37
|
+
"@synerise/ds-date-picker": "^0.6.43",
|
|
38
38
|
"@synerise/ds-icon": "^0.51.0",
|
|
39
|
-
"@synerise/ds-manageable-list": "^0.23.
|
|
40
|
-
"@synerise/ds-time-picker": "^0.6.
|
|
39
|
+
"@synerise/ds-manageable-list": "^0.23.39",
|
|
40
|
+
"@synerise/ds-time-picker": "^0.6.42",
|
|
41
41
|
"@synerise/ds-tooltip": "^0.11.17",
|
|
42
42
|
"@synerise/ds-utils": "^0.19.0",
|
|
43
43
|
"date-fns": "^2.16.1",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/ramda": "^0.27.14"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "deb64331c66a792832b3843c19054890de4726eb"
|
|
58
58
|
}
|