@synerise/ds-date-range-picker 0.25.0 → 0.25.2
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/README.md +2 -1
- package/dist/DateRangePicker.js +11 -8
- package/dist/DateRangePicker.types.d.ts +3 -2
- package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.d.ts +1 -2
- package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.js +8 -7
- package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.d.ts +1 -0
- package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.styles.js +9 -3
- package/dist/RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus.types.d.ts +2 -0
- package/dist/RangePickerInput/RangePickerInput.js +2 -1
- package/dist/RawDateRangePicker.d.ts +2 -2
- package/dist/RawDateRangePicker.js +13 -24
- package/dist/RelativeRangePicker/Elements/CustomRangeForm/CustomRangeForm.js +1 -1
- package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.js +3 -4
- package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.js +3 -4
- package/dist/RelativeRangePicker/Elements/ModeDropdown/ModeDropdown.js +1 -1
- package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.d.ts +1 -2
- package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.js +5 -1
- package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.js +3 -2
- package/dist/RelativeRangePicker/Elements/RangeDropdown/RangeDropdown.types.d.ts +3 -3
- package/dist/RelativeRangePicker/RelativeRangePicker.js +12 -10
- package/dist/RelativeRangePicker/RelativeRangePicker.types.d.ts +3 -3
- package/dist/RelativeRangePicker/utils/findMatchingPreset.utils.d.ts +18 -0
- package/dist/RelativeRangePicker/utils/findMatchingPreset.utils.js +20 -0
- package/dist/RelativeRangePicker/utils/getCurrentGroupFromProps.utils.d.ts +3 -0
- package/dist/RelativeRangePicker/utils/getCurrentGroupFromProps.utils.js +9 -0
- package/dist/RelativeRangePicker/utils/getDefaultCustomRange.utils.d.ts +2 -0
- package/dist/RelativeRangePicker/utils/getDefaultCustomRange.utils.js +17 -0
- package/dist/RelativeRangePicker/utils/index.d.ts +8 -0
- package/dist/RelativeRangePicker/utils/index.js +8 -0
- package/dist/RelativeRangePicker/utils/isAbsolute.utils.d.ts +2 -0
- package/dist/RelativeRangePicker/utils/isAbsolute.utils.js +4 -0
- package/dist/RelativeRangePicker/utils/setDurationValue.utils.d.ts +2 -0
- package/dist/RelativeRangePicker/utils/setDurationValue.utils.js +6 -0
- package/dist/RelativeRangePicker/utils/setFuture.utils.d.ts +1 -0
- package/dist/RelativeRangePicker/utils/setFuture.utils.js +3 -0
- package/dist/RelativeRangePicker/utils/setOffsetValue.utils.d.ts +2 -0
- package/dist/RelativeRangePicker/utils/setOffsetValue.utils.js +6 -0
- package/dist/RelativeRangePicker/utils/updatePresetKey.utils.d.ts +2 -0
- package/dist/RelativeRangePicker/utils/updatePresetKey.utils.js +23 -0
- package/dist/constants.d.ts +14 -3
- package/dist/constants.js +13 -0
- package/dist/date.types.d.ts +8 -0
- package/package.json +20 -20
- package/dist/RelativeRangePicker/utils.d.ts +0 -19
- package/dist/RelativeRangePicker/utils.js +0 -52
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.25.2](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.25.1...@synerise/ds-date-range-picker@0.25.2) (2023-10-19)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @synerise/ds-date-range-picker
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [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)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **date-range-picker:** ui/ux updates to filter and relative section ([8bb636b](https://github.com/Synerise/synerise-design/commit/8bb636b185a5fe98a4ef70350dc387493ac6f0a5))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
# [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
26
|
|
|
8
27
|
|
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 |
|
|
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"] |
|
package/dist/DateRangePicker.js
CHANGED
|
@@ -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(
|
|
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(
|
|
63
|
-
setSelectedDate(
|
|
64
|
+
if (!isEqual(selectedRange, selectedDate)) {
|
|
65
|
+
setSelectedDate(selectedRange);
|
|
64
66
|
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
65
67
|
|
|
66
|
-
}, [
|
|
67
|
-
var onApplyCallback = React.useCallback(function (
|
|
68
|
-
|
|
69
|
-
|
|
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?:
|
|
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:
|
|
2
|
+
declare const RangeFilterStatus: ({ onFilterRemove, disabled, filter, label, onClick, texts }: RangeFilterStatusProps) => JSX.Element;
|
|
4
3
|
export default RangeFilterStatus;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
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(
|
|
25
|
-
|
|
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(
|
|
39
|
-
|
|
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-
|
|
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-
|
|
15
|
-
})(["
|
|
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 &&
|
|
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
|
|
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").
|
|
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.
|
|
269
|
-
defaultMessage: '
|
|
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(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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
|
|
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 '
|
|
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
|
|
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:
|
|
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 ||
|
|
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
|
|
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:
|
|
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 ||
|
|
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 '
|
|
6
|
+
import { RANGES_ICON } from '../../../constants';
|
|
7
7
|
var MODE_TRANSLATION_KEYS = {
|
|
8
8
|
PAST: 'last',
|
|
9
9
|
FUTURE: 'next',
|
|
@@ -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:
|
|
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
|
-
|
|
71
|
-
|
|
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 {
|
|
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:
|
|
5
|
+
currentRange: DateRange;
|
|
6
6
|
texts: Texts;
|
|
7
|
-
onChange: (range:
|
|
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,
|
|
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; //
|
|
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' &&
|
|
237
|
-
var
|
|
238
|
-
|
|
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)),
|
|
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?:
|
|
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?:
|
|
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,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,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,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,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
|
+
};
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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:
|
|
22
|
-
export declare const
|
|
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',
|
package/dist/date.types.d.ts
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.25.2",
|
|
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.
|
|
38
|
-
"@synerise/ds-button": "^0.18.
|
|
39
|
-
"@synerise/ds-button-group": "^0.6.
|
|
37
|
+
"@synerise/ds-badge": "^0.6.41",
|
|
38
|
+
"@synerise/ds-button": "^0.18.6",
|
|
39
|
+
"@synerise/ds-button-group": "^0.6.34",
|
|
40
40
|
"@synerise/ds-data-format": "^0.4.4",
|
|
41
|
-
"@synerise/ds-date-picker": "^0.10.
|
|
42
|
-
"@synerise/ds-dropdown": "^0.17.
|
|
43
|
-
"@synerise/ds-icon": "^0.58.
|
|
44
|
-
"@synerise/ds-inline-edit": "^0.6.
|
|
45
|
-
"@synerise/ds-input": "^0.19.
|
|
46
|
-
"@synerise/ds-input-number": "^0.8.
|
|
47
|
-
"@synerise/ds-manageable-list": "^0.26.
|
|
48
|
-
"@synerise/ds-menu": "^0.18.
|
|
49
|
-
"@synerise/ds-scrollbar": "^0.6.
|
|
50
|
-
"@synerise/ds-select": "^0.15.
|
|
51
|
-
"@synerise/ds-slider": "^0.13.
|
|
52
|
-
"@synerise/ds-tags": "^0.8.
|
|
53
|
-
"@synerise/ds-time-picker": "^0.9.
|
|
54
|
-
"@synerise/ds-tooltip": "^0.14.
|
|
55
|
-
"@synerise/ds-utils": "^0.24.
|
|
41
|
+
"@synerise/ds-date-picker": "^0.10.23",
|
|
42
|
+
"@synerise/ds-dropdown": "^0.17.85",
|
|
43
|
+
"@synerise/ds-icon": "^0.58.6",
|
|
44
|
+
"@synerise/ds-inline-edit": "^0.6.85",
|
|
45
|
+
"@synerise/ds-input": "^0.19.6",
|
|
46
|
+
"@synerise/ds-input-number": "^0.8.28",
|
|
47
|
+
"@synerise/ds-manageable-list": "^0.26.15",
|
|
48
|
+
"@synerise/ds-menu": "^0.18.3",
|
|
49
|
+
"@synerise/ds-scrollbar": "^0.6.11",
|
|
50
|
+
"@synerise/ds-select": "^0.15.24",
|
|
51
|
+
"@synerise/ds-slider": "^0.13.3",
|
|
52
|
+
"@synerise/ds-tags": "^0.8.19",
|
|
53
|
+
"@synerise/ds-time-picker": "^0.9.2",
|
|
54
|
+
"@synerise/ds-tooltip": "^0.14.8",
|
|
55
|
+
"@synerise/ds-utils": "^0.24.20",
|
|
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": "
|
|
76
|
+
"gitHead": "0f860580d5e53dd24a5474aaead7c6d89f8674da"
|
|
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
|
-
}
|