@synerise/ds-date-range-picker 0.12.15 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/Footer/Footer.js +9 -0
- package/dist/RangeFilter/RangeFilter.js +2 -1
- package/dist/RangePicker/RangePicker.js +6 -2
- package/dist/RangePicker/utils.js +5 -4
- package/dist/RangePickerInput/RangePickerInput.js +2 -1
- package/dist/RawDateRangePicker.d.ts +25 -1
- package/dist/RawDateRangePicker.js +24 -18
- package/dist/RelativeRangePicker/Elements/CustomRangeForm/DurationField/DurationField.js +7 -5
- package/dist/RelativeRangePicker/Elements/CustomRangeForm/OffsetField/OffsetField.js +2 -2
- package/dist/RelativeRangePicker/Elements/ModeDropdown/ModeDropdown.js +1 -0
- package/dist/RelativeRangePicker/Elements/RangeButtons/RangeButtons.js +1 -4
- package/dist/RelativeRangePicker/RelativeRangePicker.js +2 -2
- package/dist/RelativeRangePicker/utils.js +1 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.js +3 -2
- package/dist/date.types.d.ts +2 -1
- package/dist/dateUtils/format.js +5 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/utils.js +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,34 @@
|
|
|
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.13.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.12.15...@synerise/ds-date-range-picker@0.13.0) (2022-06-23)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **date-range-picker:** applying primary class to selected buttons ([cf1fd45](https://github.com/Synerise/synerise-design/commit/cf1fd45a65dd2bf724c7907f203d04e06ac2c856))
|
|
12
|
+
* **date-range-picker:** babel array iteration fix ([15a0375](https://github.com/Synerise/synerise-design/commit/15a0375f7bdafa2856cad0f14616b60f9d1ad598))
|
|
13
|
+
* **date-range-picker:** default relative custom date-range to 30 days ([a159680](https://github.com/Synerise/synerise-design/commit/a1596807d31f53739304bbc7d793a0bd911e5ed1))
|
|
14
|
+
* **date-range-picker:** fix switching mode (componentDidUpdate) ([6d59489](https://github.com/Synerise/synerise-design/commit/6d594899bf338930951da5ff78123402491d29e1))
|
|
15
|
+
* **date-range-picker:** handle custom relative date range ([d456923](https://github.com/Synerise/synerise-design/commit/d456923259ecd75246897665e5de4f07d9a689b5))
|
|
16
|
+
* **date-range-picker:** handle Invalid Time ([fc52f67](https://github.com/Synerise/synerise-design/commit/fc52f67ef90297ea39e986ce928aaaab277c3e51))
|
|
17
|
+
* **date-range-picker:** interaction: switch modes, onChange value type ([a3e1329](https://github.com/Synerise/synerise-design/commit/a3e132927b42934d5a9ea61712b855d38f2e6561))
|
|
18
|
+
* **date-range-picker:** lifetime date-range-picker story ([f3cb1a6](https://github.com/Synerise/synerise-design/commit/f3cb1a66d3619da42226baebd56d66610964db7c))
|
|
19
|
+
* **date-range-picker:** make sure lodash.range is an array ([f51b1c4](https://github.com/Synerise/synerise-design/commit/f51b1c4fb8aae85d73257e6631595a2828dba0cc))
|
|
20
|
+
* **date-range-picker:** render popover in arrow-color test ([68090f5](https://github.com/Synerise/synerise-design/commit/68090f575da90ef0d788321b1c5a1b83cd4170cd))
|
|
21
|
+
* **date-range-picker:** show last/next in relative-date-filter addon ([6e409cf](https://github.com/Synerise/synerise-design/commit/6e409cff94058181bc41c74d900d6f6794fd4cbc))
|
|
22
|
+
* **date-range-picker:** show saving filters if passed proper props ([2e870b2](https://github.com/Synerise/synerise-design/commit/2e870b2eefbea9b7d66dbcb887e54ae291f1c619))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* **date-range-picker:** ALL_TIME as a const, expose CONST ([7d3d98e](https://github.com/Synerise/synerise-design/commit/7d3d98e9711141079c6f1e0f6101e559c5ef6faf))
|
|
28
|
+
* **date-range-picker:** include Lifetime option in stories by default ([e84ae70](https://github.com/Synerise/synerise-design/commit/e84ae709e7c74e25d23c12ff41cb7c0daf8f858e))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
6
34
|
## [0.12.15](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.12.14...@synerise/ds-date-range-picker@0.12.15) (2022-06-15)
|
|
7
35
|
|
|
8
36
|
|
package/dist/Footer/Footer.js
CHANGED
|
@@ -12,6 +12,7 @@ import Icon, { ArrowRightS } from '@synerise/ds-icon';
|
|
|
12
12
|
import * as S from './Footer.styles';
|
|
13
13
|
import fnsFormat from '../dateUtils/format';
|
|
14
14
|
import getDateFromString from '../dateUtils/getDateFromString';
|
|
15
|
+
import * as CONST from '../constants';
|
|
15
16
|
|
|
16
17
|
var Footer = function Footer(_ref) {
|
|
17
18
|
var canApply = _ref.canApply,
|
|
@@ -30,6 +31,14 @@ var Footer = function Footer(_ref) {
|
|
|
30
31
|
|
|
31
32
|
var footerFormat = format || (showTime ? 'MMM D, YYYY, HH:mm' : 'MMM D, YYYY');
|
|
32
33
|
var ChosenRange = React.useMemo(function () {
|
|
34
|
+
if ((value == null ? void 0 : value.key) === CONST.ALL_TIME) {
|
|
35
|
+
var _texts$value$translat;
|
|
36
|
+
|
|
37
|
+
return /*#__PURE__*/React.createElement(S.ChosenRange, {
|
|
38
|
+
className: "ds-date-range-picker-value"
|
|
39
|
+
}, value.translationKey ? (_texts$value$translat = texts[value.translationKey]) != null ? _texts$value$translat : value.translationKey : value == null ? void 0 : value.key);
|
|
40
|
+
}
|
|
41
|
+
|
|
33
42
|
return /*#__PURE__*/React.createElement(S.ChosenRange, {
|
|
34
43
|
className: "ds-date-range-picker-value"
|
|
35
44
|
}, !!value && !!value.from ? fnsFormat(getDateFromString(value == null ? void 0 : value.from), footerFormat, intl.locale) : texts.startDatePlaceholder, /*#__PURE__*/React.createElement(Icon, {
|
|
@@ -130,6 +130,7 @@ var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
130
130
|
var _this$props3 = this.props,
|
|
131
131
|
intl = _this$props3.intl,
|
|
132
132
|
savedFilters = _this$props3.savedFilters,
|
|
133
|
+
onFilterSave = _this$props3.onFilterSave,
|
|
133
134
|
texts = _this$props3.texts,
|
|
134
135
|
hideFooter = _this$props3.hideFooter,
|
|
135
136
|
valueSelectionModes = _this$props3.valueSelectionModes;
|
|
@@ -171,7 +172,7 @@ var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
171
172
|
onRangeCopy: this.handleRangeCopy,
|
|
172
173
|
rangeClipboard: rangeClipboard,
|
|
173
174
|
valueSelectionModes: valueSelectionModes
|
|
174
|
-
}))), !hideFooter && /*#__PURE__*/React.createElement(S.Footer, null, /*#__PURE__*/React.createElement(SaveFilterForm, {
|
|
175
|
+
}))), !hideFooter && /*#__PURE__*/React.createElement(S.Footer, null, savedFilters && onFilterSave && /*#__PURE__*/React.createElement(SaveFilterForm, {
|
|
175
176
|
onFilterSave: this.handleFilterSave
|
|
176
177
|
}), /*#__PURE__*/React.createElement(S.FooterSeparator, null), /*#__PURE__*/React.createElement(Button, {
|
|
177
178
|
type: "ghost",
|
|
@@ -11,6 +11,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
11
11
|
import * as React from 'react';
|
|
12
12
|
import { DateUtils } from 'react-day-picker';
|
|
13
13
|
import fnsIsSameDay from 'date-fns/isSameDay';
|
|
14
|
+
import fnsIsValid from 'date-fns/isValid';
|
|
14
15
|
import MonthPicker from '@synerise/ds-date-picker/dist/Elements/MonthPicker/MonthPicker';
|
|
15
16
|
import MomentLocaleUtils from 'react-day-picker/moment';
|
|
16
17
|
import TimePicker from '@synerise/ds-date-picker/dist/Elements/TimePicker/TimePicker';
|
|
@@ -247,10 +248,13 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
247
248
|
var from = value.from,
|
|
248
249
|
to = value.to,
|
|
249
250
|
type = value.type;
|
|
250
|
-
var modifiers = getModifiers(from, to, enteredTo);
|
|
251
|
-
var selectedDays = [from, {
|
|
251
|
+
var modifiers = getModifiers(fnsIsValid(from) ? from : null, fnsIsValid(to) ? to : null, enteredTo);
|
|
252
|
+
var selectedDays = fnsIsValid(from) && fnsIsValid(to) ? [from, {
|
|
252
253
|
from: from,
|
|
253
254
|
to: to
|
|
255
|
+
}] : [undefined, {
|
|
256
|
+
from: undefined,
|
|
257
|
+
to: undefined
|
|
254
258
|
}];
|
|
255
259
|
var parsedLeft = legacyParse(left.month);
|
|
256
260
|
var parsedRight = legacyParse(right.month);
|
|
@@ -2,6 +2,7 @@ import fnsIsWithinRange from 'date-fns/isWithinInterval';
|
|
|
2
2
|
import { legacyParse } from '@date-fns/upgrade/v2';
|
|
3
3
|
import fnsMin from 'date-fns/min';
|
|
4
4
|
import fnsMax from 'date-fns/max';
|
|
5
|
+
import fnsIsValid from 'date-fns/isValid';
|
|
5
6
|
import { fnsEndOfDay, fnsIsSameMonth, fnsStartOfDay, fnsStartOfMonth } from '../fns';
|
|
6
7
|
import { TIME_OPTIONS } from '../constants';
|
|
7
8
|
import SET from '../dateUtils/set';
|
|
@@ -37,8 +38,8 @@ export var getDisabledTimeOptions = function getDisabledTimeOptions(day, granula
|
|
|
37
38
|
});
|
|
38
39
|
};
|
|
39
40
|
export var getSidesState = function getSidesState(value, forceAdjacentMonths) {
|
|
40
|
-
var from = fnsStartOfMonth(value.from ? legacyParse(value.from) : new Date());
|
|
41
|
-
var to = fnsStartOfMonth(value.to ? legacyParse(value.to) : new Date());
|
|
41
|
+
var from = fnsStartOfMonth(fnsIsValid(value.from) ? legacyParse(value.from) : new Date());
|
|
42
|
+
var to = fnsStartOfMonth(fnsIsValid(value.to) ? legacyParse(value.to) : new Date());
|
|
42
43
|
|
|
43
44
|
if (fnsIsSameMonth(from, to)) {
|
|
44
45
|
to = ADD.MONTHS(to, 1);
|
|
@@ -47,12 +48,12 @@ export var getSidesState = function getSidesState(value, forceAdjacentMonths) {
|
|
|
47
48
|
return {
|
|
48
49
|
left: {
|
|
49
50
|
month: from,
|
|
50
|
-
monthTitle: format(legacyParse(from), 'MMM yyyy'),
|
|
51
|
+
monthTitle: fnsIsValid(from) ? format(legacyParse(from), 'MMM yyyy') : '',
|
|
51
52
|
mode: 'date'
|
|
52
53
|
},
|
|
53
54
|
right: {
|
|
54
55
|
month: forceAdjacentMonths ? ADD.MONTHS(from, 1) : to,
|
|
55
|
-
monthTitle: format(legacyParse(to), 'MMM yyyy'),
|
|
56
|
+
monthTitle: fnsIsValid(to) ? format(legacyParse(to), 'MMM yyyy') : '',
|
|
56
57
|
mode: 'date'
|
|
57
58
|
}
|
|
58
59
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import Icon, { ArrowRightS, CalendarM, Close3S } from '@synerise/ds-icon';
|
|
3
|
+
import fnsIsValid from 'date-fns/isValid';
|
|
3
4
|
import theme from '@synerise/ds-core/dist/js/DSProvider/ThemeProvider/theme';
|
|
4
5
|
import Tooltip from '@synerise/ds-tooltip'; // eslint-disable-next-line import/no-named-default
|
|
5
6
|
|
|
@@ -45,7 +46,7 @@ var RangePickerInput = function RangePickerInput(_ref) {
|
|
|
45
46
|
onClick && onClick(e);
|
|
46
47
|
}, [onClick]);
|
|
47
48
|
var getText = React.useCallback(function (dateToDisplay) {
|
|
48
|
-
if (!dateToDisplay) return '';
|
|
49
|
+
if (!dateToDisplay || !fnsIsValid(dateToDisplay)) return '';
|
|
49
50
|
var dateValue = dateToDisplay;
|
|
50
51
|
if (typeof dateToDisplay === 'string') dateValue = new Date(dateToDisplay);
|
|
51
52
|
return fnsFormat(dateValue, format || showTime ? 'MMM D, YYYY, HH:mm' : 'MMM D, YYYY');
|
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Props } from './DateRangePicker.types';
|
|
2
|
+
import { Props, State, AddonType } from './DateRangePicker.types';
|
|
3
|
+
import { DateRange } from './date.types';
|
|
4
|
+
import { FilterDefinition, FilterValue } from './RangeFilter/RangeFilter.types';
|
|
5
|
+
export declare class RawDateRangePicker extends React.PureComponent<Props, State> {
|
|
6
|
+
static defaultProps: {
|
|
7
|
+
ranges: DateRange[];
|
|
8
|
+
relativePast: boolean;
|
|
9
|
+
showRelativePicker: boolean;
|
|
10
|
+
validate: () => {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
constructor(props: Props);
|
|
15
|
+
componentDidUpdate(prevProps: Readonly<Props>): void;
|
|
16
|
+
handleFilterCancel: () => void;
|
|
17
|
+
handleFilterApply: (filter?: FilterValue<FilterDefinition> | undefined) => void;
|
|
18
|
+
handleRangeChange: (range?: import("./date.types").AbsoluteDateRange | import("./date.types").RelativeDateRange | undefined) => void;
|
|
19
|
+
handleApply: () => void;
|
|
20
|
+
handleModalOpenClick: () => void;
|
|
21
|
+
handleRemoveFilterClick: () => void;
|
|
22
|
+
handleSwitchMode: () => void;
|
|
23
|
+
handleAddonCollapse: (addonKey: string, expanded: boolean) => void;
|
|
24
|
+
getAddons: () => AddonType[];
|
|
25
|
+
render(): JSX.Element;
|
|
26
|
+
}
|
|
3
27
|
declare const _default: React.ForwardRefExoticComponent<Pick<Props, "texts" | "format" | "value" | "onVisibleChange" | "rangeUnits" | "disableDefaultTexts" | "disabledDate" | "forceAdjacentMonths" | "forceAbsolute" | "onValueChange" | "onApply" | "onFilterSave" | "popoverProps" | "popoverTrigger" | "ranges" | "relativeFuture" | "relativePast" | "relativeModes" | "savedFilters" | "showRelativePicker" | "showFilter" | "showTime" | "showCustomRange" | "validate" | "arrowColor"> & {
|
|
4
28
|
forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
|
|
5
29
|
} & React.RefAttributes<any>> & {
|
|
@@ -11,9 +11,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
11
11
|
import * as React from 'react';
|
|
12
12
|
import { omitBy, isUndefined } from 'lodash';
|
|
13
13
|
import { injectIntl } from 'react-intl';
|
|
14
|
+
import fnsIsValid from 'date-fns/isValid';
|
|
14
15
|
import { Container, Separator, Addon } from './DateRangePicker.styles';
|
|
15
16
|
import RangePicker from './RangePicker/RangePicker';
|
|
16
|
-
import { RELATIVE, ABSOLUTE, MODES, RELATIVE_PRESETS } from './constants';
|
|
17
|
+
import { RELATIVE, ABSOLUTE, MODES, RELATIVE_PRESETS, ABSOLUTE_PRESETS } from './constants';
|
|
17
18
|
import relativeToAbsolute from './dateUtils/relativeToAbsolute';
|
|
18
19
|
import AddonCollapse from './AddonCollapse/AddonCollapse';
|
|
19
20
|
import RelativeRangePicker from './RelativeRangePicker/RelativeRangePicker';
|
|
@@ -21,8 +22,7 @@ import Footer from './Footer/Footer';
|
|
|
21
22
|
import { normalizeRange } from './utils';
|
|
22
23
|
import RangeFilter from './RangeFilter/RangeFilter';
|
|
23
24
|
import RangeFilterStatus from './RangeFilter/Shared/RangeFilterStatus/RangeFilterStatus';
|
|
24
|
-
|
|
25
|
-
var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
25
|
+
export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
26
26
|
_inheritsLoose(RawDateRangePicker, _React$PureComponent);
|
|
27
27
|
|
|
28
28
|
function RawDateRangePicker(props) {
|
|
@@ -52,12 +52,25 @@ var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
if (range.from && !fnsIsValid(range == null ? void 0 : range.from)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
55
59
|
var onValueChange = _this.props.onValueChange;
|
|
56
|
-
var
|
|
60
|
+
var _this$state = _this.state,
|
|
61
|
+
value = _this$state.value,
|
|
62
|
+
mode = _this$state.mode;
|
|
57
63
|
var newValue = normalizeRange(_objectSpread({}, range, {
|
|
58
64
|
filter: value.filter
|
|
59
65
|
}));
|
|
60
66
|
|
|
67
|
+
if (newValue.type === 'RELATIVE' && mode === MODES.TIME) {
|
|
68
|
+
// clicked on RangeButtons and was selecting time
|
|
69
|
+
_this.setState({
|
|
70
|
+
mode: MODES.DATE
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
61
74
|
_this.setState({
|
|
62
75
|
value: _objectSpread({}, newValue, {
|
|
63
76
|
key: range == null ? void 0 : range.key,
|
|
@@ -130,9 +143,9 @@ var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
130
143
|
intl = _this$props2.intl,
|
|
131
144
|
rangeUnits = _this$props2.rangeUnits,
|
|
132
145
|
showCustomRange = _this$props2.showCustomRange;
|
|
133
|
-
var _this$
|
|
134
|
-
value = _this$
|
|
135
|
-
visibleAddonKey = _this$
|
|
146
|
+
var _this$state2 = _this.state,
|
|
147
|
+
value = _this$state2.value,
|
|
148
|
+
visibleAddonKey = _this$state2.visibleAddonKey;
|
|
136
149
|
var addons = [];
|
|
137
150
|
|
|
138
151
|
if (showRelativePicker && !!relativeModes && (relativeModes == null ? void 0 : relativeModes.length) > 0) {
|
|
@@ -207,12 +220,6 @@ var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
207
220
|
if (prevProps.value !== value && !value) {
|
|
208
221
|
this.handleRangeChange(value);
|
|
209
222
|
}
|
|
210
|
-
|
|
211
|
-
var mode = this.state.mode;
|
|
212
|
-
|
|
213
|
-
if (!(value != null && value.to) && !(value != null && value.from) && mode !== MODES.DATE) {
|
|
214
|
-
this.handleSwitchMode();
|
|
215
|
-
}
|
|
216
223
|
};
|
|
217
224
|
|
|
218
225
|
_proto.render = function render() {
|
|
@@ -226,9 +233,9 @@ var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
226
233
|
savedFilters = _this$props3.savedFilters,
|
|
227
234
|
onFilterSave = _this$props3.onFilterSave,
|
|
228
235
|
intl = _this$props3.intl;
|
|
229
|
-
var _this$
|
|
230
|
-
value = _this$
|
|
231
|
-
mode = _this$
|
|
236
|
+
var _this$state3 = this.state,
|
|
237
|
+
value = _this$state3.value,
|
|
238
|
+
mode = _this$state3.mode;
|
|
232
239
|
var from = value.from,
|
|
233
240
|
to = value.to,
|
|
234
241
|
key = value.key;
|
|
@@ -283,9 +290,8 @@ var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
283
290
|
}(React.PureComponent); // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
|
|
284
291
|
// @ts-ignore
|
|
285
292
|
|
|
286
|
-
|
|
287
293
|
_defineProperty(RawDateRangePicker, "defaultProps", {
|
|
288
|
-
ranges: RELATIVE_PRESETS,
|
|
294
|
+
ranges: [].concat(RELATIVE_PRESETS, ABSOLUTE_PRESETS),
|
|
289
295
|
relativePast: true,
|
|
290
296
|
showRelativePicker: true,
|
|
291
297
|
validate: function validate() {
|
|
@@ -5,11 +5,13 @@ import set from 'ramda/src/set';
|
|
|
5
5
|
import lensPath from 'ramda/src/lensPath';
|
|
6
6
|
import * as S from '../../../RelativeRangePicker.styles';
|
|
7
7
|
import * as CONST from '../../../../constants';
|
|
8
|
+
import { RANGES_MODE } from '../../../utils';
|
|
8
9
|
export var setDurationType = set(lensPath(['duration', 'type']));
|
|
9
10
|
var SELECT_DROPDOWN_OFFSET = -4;
|
|
10
11
|
|
|
11
12
|
var DurationField = function DurationField(_ref) {
|
|
12
|
-
var
|
|
13
|
+
var currentGroup = _ref.currentGroup,
|
|
14
|
+
currentRange = _ref.currentRange,
|
|
13
15
|
handleChange = _ref.handleChange,
|
|
14
16
|
handleDurationValueChange = _ref.handleDurationValueChange,
|
|
15
17
|
rangeUnits = _ref.rangeUnits,
|
|
@@ -20,14 +22,14 @@ var DurationField = function DurationField(_ref) {
|
|
|
20
22
|
handleDurationValueChange(1);
|
|
21
23
|
}
|
|
22
24
|
}, [duration, handleDurationValueChange]);
|
|
23
|
-
return /*#__PURE__*/React.createElement(S.InputSelectGroup, {
|
|
25
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(S.Title, null, currentGroup === RANGES_MODE.PAST ? texts.last : texts.next), /*#__PURE__*/React.createElement(S.InputSelectGroup, {
|
|
24
26
|
compact: true
|
|
25
27
|
}, /*#__PURE__*/React.createElement(InputNumber, {
|
|
26
28
|
min: 1,
|
|
27
29
|
max: CONST.RELATIVE_DURATION_MAX,
|
|
28
30
|
precision: 0,
|
|
29
31
|
step: 1,
|
|
30
|
-
value: duration.value,
|
|
32
|
+
value: duration == null ? void 0 : duration.value,
|
|
31
33
|
onBlur: function onBlur(_ref2) {
|
|
32
34
|
var value = _ref2.target.value;
|
|
33
35
|
!value && handleDurationValueChange(1);
|
|
@@ -35,7 +37,7 @@ var DurationField = function DurationField(_ref) {
|
|
|
35
37
|
onChange: handleDurationValueChange,
|
|
36
38
|
raw: true
|
|
37
39
|
}), /*#__PURE__*/React.createElement(Select, {
|
|
38
|
-
value: duration.type,
|
|
40
|
+
value: duration == null ? void 0 : duration.type,
|
|
39
41
|
onChange: function onChange(type) {
|
|
40
42
|
return handleChange(setDurationType(type, currentRange));
|
|
41
43
|
},
|
|
@@ -51,7 +53,7 @@ var DurationField = function DurationField(_ref) {
|
|
|
51
53
|
key: type,
|
|
52
54
|
value: type
|
|
53
55
|
}, texts[type.toLowerCase()]);
|
|
54
|
-
})));
|
|
56
|
+
}))));
|
|
55
57
|
};
|
|
56
58
|
|
|
57
59
|
export default DurationField;
|
|
@@ -27,14 +27,14 @@ var OffsetField = function OffsetField(_ref) {
|
|
|
27
27
|
max: CONST.RELATIVE_OFFSET_MAX,
|
|
28
28
|
precision: 0,
|
|
29
29
|
step: 1,
|
|
30
|
-
value: offset.value,
|
|
30
|
+
value: offset == null ? void 0 : offset.value,
|
|
31
31
|
onBlur: function onBlur(_ref2) {
|
|
32
32
|
var value = _ref2.target.value;
|
|
33
33
|
!value && handleOffsetValueChange(0);
|
|
34
34
|
},
|
|
35
35
|
onChange: handleOffsetValueChange
|
|
36
36
|
}), /*#__PURE__*/React.createElement(Select, {
|
|
37
|
-
value: offset.type,
|
|
37
|
+
value: offset == null ? void 0 : offset.type,
|
|
38
38
|
onChange: function onChange(type) {
|
|
39
39
|
return handleChange(setOffsetType(type, currentRange));
|
|
40
40
|
},
|
|
@@ -59,6 +59,7 @@ var ModeDrop = function ModeDrop(_ref) {
|
|
|
59
59
|
},
|
|
60
60
|
disabled: !modes || !(modes != null && modes.length) || modes.length === 1
|
|
61
61
|
}, !!currentGroup && /*#__PURE__*/React.createElement(Icon, {
|
|
62
|
+
key: currentGroup,
|
|
62
63
|
component: [RANGES_ICON[currentGroup]]
|
|
63
64
|
})), overlay);
|
|
64
65
|
};
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import * as S from '../../RelativeRangePicker.styles';
|
|
3
|
-
import * as CONST from '../../../constants';
|
|
4
|
-
import { isAbsolute } from '../../utils';
|
|
5
3
|
|
|
6
4
|
var RangeButtons = function RangeButtons(_ref) {
|
|
7
5
|
var ranges = _ref.ranges,
|
|
8
6
|
currentRange = _ref.currentRange,
|
|
9
|
-
value = _ref.value,
|
|
10
7
|
texts = _ref.texts,
|
|
11
8
|
onChange = _ref.onChange;
|
|
12
9
|
return /*#__PURE__*/React.createElement(React.Fragment, null, ranges.map(function (range) {
|
|
@@ -15,7 +12,7 @@ var RangeButtons = function RangeButtons(_ref) {
|
|
|
15
12
|
onClick: function onClick() {
|
|
16
13
|
onChange && onChange(range);
|
|
17
14
|
},
|
|
18
|
-
type: currentRange && currentRange.key === range.key
|
|
15
|
+
type: currentRange && currentRange.key === range.key ? 'primary' : 'tertiary'
|
|
19
16
|
}, range.translationKey ? texts[range.translationKey] : texts == null ? void 0 : texts.custom);
|
|
20
17
|
}));
|
|
21
18
|
};
|
|
@@ -177,7 +177,7 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
177
177
|
past = nextProps.past,
|
|
178
178
|
relativeModes = nextProps.relativeModes;
|
|
179
179
|
var state = prevState;
|
|
180
|
-
var currentRange =
|
|
180
|
+
var currentRange = getRelativePresetForRange(value);
|
|
181
181
|
state.currentRange = currentRange;
|
|
182
182
|
state.groupedRanges = ranges;
|
|
183
183
|
|
|
@@ -215,7 +215,7 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
215
215
|
groupedRanges = _this$state3.groupedRanges,
|
|
216
216
|
currentGroup = _this$state3.currentGroup,
|
|
217
217
|
currentRange = _this$state3.currentRange;
|
|
218
|
-
var isCustomValue = !(value != null && value.key) || !(currentRange != null && currentRange.key);
|
|
218
|
+
var isCustomValue = currentRange.type === 'RELATIVE' && (currentRange.key === 'CUSTOM' || !(value != null && value.key) || !(currentRange != null && currentRange.key));
|
|
219
219
|
var visibleRanges = groupedRanges ? groupedRanges.slice(0, 3) : [];
|
|
220
220
|
var hiddenRanges = groupedRanges ? groupedRanges.slice(3) : [];
|
|
221
221
|
if (!currentGroup) return null;
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbsoluteDateRange, RelativeDateRange, RelativeUnits } from './date.types';
|
|
1
|
+
import { AbsoluteDateRange, RelativeDateRange, 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";
|
|
@@ -11,6 +11,7 @@ export declare const RELATIVE = "RELATIVE";
|
|
|
11
11
|
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
|
+
export declare const ALL_TIME: RangeKey;
|
|
14
15
|
export declare const range: (start: number, end: number) => number[];
|
|
15
16
|
export declare const CUSTOM_RANGE_KEY = "custom";
|
|
16
17
|
export declare const DURATION_MODIFIERS: {
|
package/dist/constants.js
CHANGED
|
@@ -10,13 +10,14 @@ export var RELATIVE = 'RELATIVE';
|
|
|
10
10
|
export var RELATIVE_OFFSET_MAX = 999999;
|
|
11
11
|
export var RELATIVE_DURATION_MAX = 999999;
|
|
12
12
|
export var RELATIVE_UNITS = [SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS];
|
|
13
|
+
export var ALL_TIME = 'ALL_TIME';
|
|
13
14
|
export var range = function range(start, end) {
|
|
14
15
|
if (end <= start) {
|
|
15
16
|
return [];
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
var size = end - start;
|
|
19
|
-
return
|
|
20
|
+
return Array.from(Array(size).keys()).map(function (i) {
|
|
20
21
|
return i + start;
|
|
21
22
|
});
|
|
22
23
|
};
|
|
@@ -282,7 +283,7 @@ export var RELATIVE_PRESETS = [{
|
|
|
282
283
|
}
|
|
283
284
|
}];
|
|
284
285
|
export var ABSOLUTE_PRESETS = [{
|
|
285
|
-
key:
|
|
286
|
+
key: ALL_TIME,
|
|
286
287
|
translationKey: 'allTime',
|
|
287
288
|
type: ABSOLUTE,
|
|
288
289
|
future: false
|
package/dist/date.types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export declare type RelativeUnits = 'SECONDS' | 'MINUTES' | 'HOURS' | 'DAYS' | 'WEEKS' | 'MONTHS' | 'YEARS';
|
|
3
|
+
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';
|
|
3
4
|
export declare type NullableDateLimit = null | string | Date;
|
|
4
5
|
export interface DateFilter {
|
|
5
6
|
key?: string;
|
|
@@ -16,7 +17,7 @@ export interface DateFilter {
|
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
export interface DateRangeBase {
|
|
19
|
-
key?: string;
|
|
20
|
+
key?: RangeKey | string;
|
|
20
21
|
future?: boolean;
|
|
21
22
|
filter?: DateFilter;
|
|
22
23
|
translationKey?: string;
|
package/dist/dateUtils/format.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fnsFormat from 'date-fns/format';
|
|
2
|
+
import fnsIsValid from 'date-fns/isValid';
|
|
2
3
|
import { pl, es, enGB as en } from 'date-fns/locale';
|
|
3
4
|
import { legacyParse, convertTokens } from '@date-fns/upgrade/v2';
|
|
4
5
|
var locales = {
|
|
@@ -13,6 +14,10 @@ var format = function format(date, formatStr, locale) {
|
|
|
13
14
|
locale = defaultLocale;
|
|
14
15
|
}
|
|
15
16
|
|
|
17
|
+
if (!fnsIsValid(date)) {
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
|
|
16
21
|
return fnsFormat(legacyParse(date), convertTokens(formatStr), {
|
|
17
22
|
locale: locales[locale.substring(0, 2)]
|
|
18
23
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { default as DailyDateFilter } from './RangeFilter/Filters/new/Daily/Daily';
|
|
2
2
|
export { default as WeeklyDateFilter } from './RangeFilter/Filters/new/Weekly/Weekly';
|
|
3
3
|
export { default as MonthlyDateFilter } from './RangeFilter/Filters/MonthlyFilter/MonthlyFilter';
|
|
4
|
+
export { RawDateRangePicker } from './RawDateRangePicker';
|
|
5
|
+
export * as CONST from './constants';
|
|
4
6
|
export { default } from './DateRangePicker';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { default as DailyDateFilter } from './RangeFilter/Filters/new/Daily/Daily';
|
|
2
2
|
export { default as WeeklyDateFilter } from './RangeFilter/Filters/new/Weekly/Weekly';
|
|
3
3
|
export { default as MonthlyDateFilter } from './RangeFilter/Filters/MonthlyFilter/MonthlyFilter';
|
|
4
|
+
export { RawDateRangePicker } from './RawDateRangePicker';
|
|
5
|
+
import * as _CONST from './constants';
|
|
6
|
+
export { _CONST as CONST };
|
|
4
7
|
export { default } from './DateRangePicker';
|
package/dist/utils.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-date-range-picker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
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.2",
|
|
37
|
-
"@synerise/ds-date-picker": "^0.6.
|
|
37
|
+
"@synerise/ds-date-picker": "^0.6.20",
|
|
38
38
|
"@synerise/ds-icon": "^0.49.0",
|
|
39
39
|
"@synerise/ds-manageable-list": "^0.23.14",
|
|
40
|
-
"@synerise/ds-time-picker": "^0.6.
|
|
40
|
+
"@synerise/ds-time-picker": "^0.6.19",
|
|
41
41
|
"@synerise/ds-tooltip": "^0.11.9",
|
|
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": "b2b8c9f85179763159e3c83801b568943f132741"
|
|
58
58
|
}
|