@synerise/ds-date-range-picker 0.23.1 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/DateRangePicker.types.d.ts +2 -1
  3. package/dist/RangeFilter/Filters/DailyFilter/DailyFilter.d.ts +4 -2
  4. package/dist/RangeFilter/Filters/DailyFilter/DailyFilter.js +12 -3
  5. package/dist/RangeFilter/Filters/DailyFilter/DailyFilter.styles.js +1 -2
  6. package/dist/RangeFilter/Filters/MonthlyFilter/MonthlyFilter.d.ts +1 -1
  7. package/dist/RangeFilter/Filters/MonthlyFilter/MonthlyFilter.js +4 -2
  8. package/dist/RangeFilter/Filters/MonthlyFilter/MonthlyFilter.types.d.ts +2 -1
  9. package/dist/RangeFilter/Filters/WeeklyFilter/WeeklyFilter.d.ts +1 -1
  10. package/dist/RangeFilter/Filters/WeeklyFilter/WeeklyFilter.js +3 -1
  11. package/dist/RangeFilter/Filters/WeeklyFilter/WeeklyFilter.types.d.ts +2 -1
  12. package/dist/RangeFilter/Filters/new/Daily/Daily.js +2 -1
  13. package/dist/RangeFilter/Filters/new/Monthly/Monthly.js +6 -3
  14. package/dist/RangeFilter/Filters/new/Weekly/Weekly.js +6 -3
  15. package/dist/RangeFilter/RangeFilter.d.ts +1 -1
  16. package/dist/RangeFilter/RangeFilter.js +3 -1
  17. package/dist/RangeFilter/RangeFilter.types.d.ts +2 -1
  18. package/dist/RangeFilter/Shared/TimeWindow/Header/Header.d.ts +1 -1
  19. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.constants.d.ts +16 -0
  20. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.constants.js +21 -0
  21. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.d.ts +5 -14
  22. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.js +110 -37
  23. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.styles.d.ts +2 -0
  24. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.styles.js +6 -2
  25. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types.d.ts +3 -0
  26. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.utils.d.ts +2 -0
  27. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.utils.js +19 -0
  28. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.d.ts +2 -2
  29. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.js +47 -12
  30. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.styles.d.ts +1 -0
  31. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.styles.js +5 -0
  32. package/dist/RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeFormContainer.types.d.ts +4 -3
  33. package/dist/RangeFilter/Shared/TimeWindow/TimeWindow.d.ts +1 -1
  34. package/dist/RangeFilter/Shared/TimeWindow/TimeWindow.js +20 -15
  35. package/dist/RangeFilter/Shared/TimeWindow/TimeWindow.types.d.ts +6 -1
  36. package/dist/RangeFilter/constants.d.ts +3 -3
  37. package/dist/RawDateRangePicker.d.ts +1 -1
  38. package/dist/RawDateRangePicker.js +3 -1
  39. package/package.json +26 -21
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.24.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.24.0...@synerise/ds-date-range-picker@0.24.1) (2023-09-05)
7
+
8
+ **Note:** Version bump only for package @synerise/ds-date-range-picker
9
+
10
+
11
+
12
+
13
+
14
+ # [0.24.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.23.1...@synerise/ds-date-range-picker@0.24.0) (2023-08-30)
15
+
16
+
17
+ ### Features
18
+
19
+ * **date-range-picker:** range filter as slider with "inverted" toggler ([6ae7d9e](https://github.com/Synerise/synerise-design/commit/6ae7d9e27925c4fee502ed8fac84806836e5e727))
20
+
21
+
22
+
23
+
24
+
6
25
  ## [0.23.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.23.0...@synerise/ds-date-range-picker@0.23.1) (2023-08-25)
7
26
 
8
27
 
@@ -7,7 +7,7 @@ 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';
9
9
  import { RangePickerInputProps } from './RangePickerInput/RangePickerInput.types';
10
- import { DateLimitMode } from './RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
10
+ import { DateLimitMode, RangeDisplayMode } from './RangeFilter/Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
11
11
  export { DateRange } from './date.types';
12
12
  export declare type CustomColorArrow = 'blue' | 'grey' | 'red' | 'green' | 'yellow' | 'pink' | 'mars' | 'orange' | 'fern' | 'cyan' | 'purple' | 'violet';
13
13
  export declare type AdditionalMapper = {
@@ -70,6 +70,7 @@ export interface DateRangePickerProps extends WrappedComponentProps {
70
70
  renderPopoverTrigger?: (...args: any) => JSX.Element;
71
71
  isTruncateMs?: boolean;
72
72
  filterValueSelectionModes?: DateLimitMode[];
73
+ filterRangeDisplayMode?: RangeDisplayMode;
73
74
  }
74
75
  /**
75
76
  * @deprecated use `DateRangePickerProps`
@@ -1,15 +1,17 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { WrappedComponentProps } from 'react-intl';
3
3
  import { RangeActions as RangeActionsMethods } from '../../Shared/TimeWindow/TimeWindow.types';
4
4
  import { Days } from '../../../date.types';
5
5
  import { WithTranslations } from '../../../DateRangePicker.types';
6
6
  import { ValueSelectionModes, WithDisabledProp } from '../../RangeFilter.types';
7
+ import { RangeDisplayMode } from '../../Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
7
8
  export interface Props extends WrappedComponentProps, Partial<RangeActionsMethods>, WithTranslations, WithDisabledProp {
8
9
  value: string;
9
10
  onChange: (v: Days) => {};
11
+ rangeDisplayMode?: RangeDisplayMode;
10
12
  valueSelectionModes: ValueSelectionModes;
11
13
  }
12
- declare const _default: React.ForwardRefExoticComponent<Pick<Props, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "valueSelectionModes" | "texts" | "disabled" | "value"> & {
14
+ declare const _default: React.ForwardRefExoticComponent<Pick<Props, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "valueSelectionModes" | "rangeDisplayMode" | "texts" | "disabled" | "value"> & {
13
15
  forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
14
16
  } & React.RefAttributes<any>> & {
15
17
  WrappedComponent: React.ComponentType<Props>;
@@ -1,7 +1,8 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { injectIntl } from 'react-intl';
3
3
  import * as S from './DailyFilter.styles';
4
4
  import TimeWindow from '../../Shared/TimeWindow/TimeWindow';
5
+ import { RANGE_DISPLAY_MODES } from '../../Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.constants';
5
6
 
6
7
  var DailyFilter = function DailyFilter(props) {
7
8
  var handleChange = function handleChange(value) {
@@ -16,11 +17,18 @@ var DailyFilter = function DailyFilter(props) {
16
17
  onRangeClear = props.onRangeClear,
17
18
  texts = props.texts,
18
19
  valueSelectionModes = props.valueSelectionModes,
19
- disabled = props.disabled;
20
+ disabled = props.disabled,
21
+ rangeDisplayMode = props.rangeDisplayMode;
22
+ var hideHeader = rangeDisplayMode !== RANGE_DISPLAY_MODES.SLIDER;
23
+ var headerOptions = rangeDisplayMode === RANGE_DISPLAY_MODES.SLIDER ? {
24
+ includeSummary: false,
25
+ includeActions: false
26
+ } : undefined;
20
27
  return /*#__PURE__*/React.createElement(S.DailyFilterWrapper, null, /*#__PURE__*/React.createElement(TimeWindow, {
21
28
  disabled: disabled,
22
29
  texts: texts,
23
- hideHeader: true,
30
+ hideHeader: hideHeader,
31
+ headerOptions: headerOptions,
24
32
  numberOfDays: 0,
25
33
  customDays: {
26
34
  0: {
@@ -40,6 +48,7 @@ var DailyFilter = function DailyFilter(props) {
40
48
  onRangePaste: onRangePaste,
41
49
  onRangeCopy: onRangeCopy,
42
50
  onRangeClear: onRangeClear,
51
+ rangeDisplayMode: rangeDisplayMode,
43
52
  valueSelectionModes: valueSelectionModes
44
53
  }), ' ');
45
54
  };
@@ -1,5 +1,4 @@
1
- import styled from 'styled-components'; // eslint-disable-next-line import/prefer-default-export
2
-
1
+ import styled from 'styled-components';
3
2
  export var DailyFilterWrapper = styled.div.withConfig({
4
3
  displayName: "DailyFilterstyles__DailyFilterWrapper",
5
4
  componentId: "sc-17xrhgz-0"
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { MonthlyFilterProps } from './MonthlyFilter.types';
3
- declare const _default: React.ForwardRefExoticComponent<Pick<MonthlyFilterProps, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "rangeClipboard" | "valueSelectionModes" | "texts" | "renderRangeFormSuffix" | "timePickerProps" | "disabled" | "value" | "maxEntries" | "daysOfPeriods" | "countedFromPeriods"> & {
3
+ declare const _default: React.ForwardRefExoticComponent<Pick<MonthlyFilterProps, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "rangeClipboard" | "valueSelectionModes" | "rangeDisplayMode" | "texts" | "renderRangeFormSuffix" | "timePickerProps" | "disabled" | "value" | "maxEntries" | "daysOfPeriods" | "countedFromPeriods"> & {
4
4
  forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
5
5
  } & React.RefAttributes<any>> & {
6
6
  WrappedComponent: React.ComponentType<MonthlyFilterProps>;
@@ -332,7 +332,8 @@ var MonthlyFilter = /*#__PURE__*/function (_React$PureComponent) {
332
332
  timePickerProps = _this$props4.timePickerProps,
333
333
  disabled = _this$props4.disabled,
334
334
  renderRangeFormSuffix = _this$props4.renderRangeFormSuffix,
335
- maxEntries = _this$props4.maxEntries; // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
335
+ maxEntries = _this$props4.maxEntries,
336
+ rangeDisplayMode = _this$props4.rangeDisplayMode; // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
336
337
 
337
338
  var _ref = this.props,
338
339
  _ref$min = _ref.min,
@@ -407,7 +408,8 @@ var MonthlyFilter = /*#__PURE__*/function (_React$PureComponent) {
407
408
  renderRangeFormSuffix: renderRangeFormSuffix,
408
409
  timePickerProps: timePickerProps
409
410
  }, _this2.getTimeWindowSettings(item), {
410
- monthlyFilter: true
411
+ monthlyFilter: true,
412
+ rangeDisplayMode: rangeDisplayMode
411
413
  }))) : /*#__PURE__*/React.createElement("div", null)
412
414
  },
413
415
  texts: {
@@ -4,7 +4,7 @@ import type { TimePickerProps } from '@synerise/ds-time-picker';
4
4
  import { RangeActions } from '../../Shared/TimeWindow/TimeWindow.types';
5
5
  import { DenormalizedFilter, FilterDefinition, MonthlySelectValue, WithDisabledProp } from '../../RangeFilter.types';
6
6
  import { WithTranslations } from '../../../DateRangePicker.types';
7
- import { DateLimitMode } from '../../Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
7
+ import { RangeDisplayMode, DateLimitMode } from '../../Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
8
8
  import { COUNTED_FROM_ENUM, DAYS_OF_PERIOD_ENUM } from '../../constants';
9
9
  export declare type MonthlyFilterProps = {
10
10
  maxEntries?: number;
@@ -17,6 +17,7 @@ export declare type MonthlyFilterProps = {
17
17
  timePickerProps?: Partial<TimePickerProps>;
18
18
  rangeClipboard?: Partial<FilterDefinition>;
19
19
  valueSelectionModes?: DateLimitMode[];
20
+ rangeDisplayMode?: RangeDisplayMode;
20
21
  } & WithDisabledProp & Partial<RangeActions> & WithTranslations;
21
22
  export declare type Month<T = DenormalizedFilter> = {
22
23
  id: string | number;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { WeeklyFilterProps } from './WeeklyFilter.types';
3
- declare const WeeklyFilter: ({ value, onChange, onRangeClear, onRangePaste, onRangeCopy, rangeClipboard, intl, valueSelectionModes, texts, }: WeeklyFilterProps) => JSX.Element;
3
+ declare const WeeklyFilter: ({ value, onChange, onRangeClear, onRangePaste, onRangeCopy, rangeClipboard, intl, valueSelectionModes, rangeDisplayMode, texts, }: WeeklyFilterProps) => JSX.Element;
4
4
  export default WeeklyFilter;
@@ -11,6 +11,7 @@ var WeeklyFilter = function WeeklyFilter(_ref) {
11
11
  rangeClipboard = _ref.rangeClipboard,
12
12
  intl = _ref.intl,
13
13
  valueSelectionModes = _ref.valueSelectionModes,
14
+ rangeDisplayMode = _ref.rangeDisplayMode,
14
15
  texts = _ref.texts;
15
16
  var handleDayFormatter = React.useCallback(function (dayKey) {
16
17
  return intl.formatMessage({
@@ -38,7 +39,8 @@ var WeeklyFilter = function WeeklyFilter(_ref) {
38
39
  onRangeCopy: onRangeCopy,
39
40
  onRangeClear: onRangeClear,
40
41
  rangeClipboard: rangeClipboard,
41
- valueSelectionModes: valueSelectionModes
42
+ valueSelectionModes: valueSelectionModes,
43
+ rangeDisplayMode: rangeDisplayMode
42
44
  }));
43
45
  };
44
46
 
@@ -2,13 +2,14 @@ import { IntlShape } from 'react-intl';
2
2
  import { DayOptions, RangeActions } from '../../Shared/TimeWindow/TimeWindow.types';
3
3
  import { FilterDefinition } from '../../RangeFilter.types';
4
4
  import { WithTranslations } from '../../../DateRangePicker.types';
5
- import { DateLimitMode } from '../../Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
5
+ import { DateLimitMode, RangeDisplayMode } from '../../Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
6
6
  export declare type WeeklyFilterProps = {
7
7
  value: Days;
8
8
  onChange: (days: Days) => void;
9
9
  intl: IntlShape;
10
10
  rangeClipboard: Partial<FilterDefinition>;
11
11
  valueSelectionModes: DateLimitMode[];
12
+ rangeDisplayMode?: RangeDisplayMode;
12
13
  } & WithTranslations & Partial<RangeActions>;
13
14
  export declare type DayKey = number | string;
14
15
  export declare type Days = {
@@ -40,7 +40,8 @@ var Daily = function Daily(_ref) {
40
40
  updatedSchedule[index] = _objectSpread({}, value[index], {
41
41
  restricted: true,
42
42
  start: dayjs(dateValueArray[0]).format(DEFAULT_TIME_FORMAT),
43
- stop: dayjs(dateValueArray[1]).format(DEFAULT_TIME_FORMAT)
43
+ stop: dayjs(dateValueArray[1]).format(DEFAULT_TIME_FORMAT),
44
+ inverted: Boolean(dateValueArray[2])
44
45
  });
45
46
  }, [value]);
46
47
 
@@ -130,21 +130,24 @@ var Monthly = function Monthly(_ref) {
130
130
  var handleDayTimeChange = React.useCallback(function (dayValue, dayKey, guid) {
131
131
  var updatedSchedule = value;
132
132
  var start = dayValue[0],
133
- end = dayValue[1];
133
+ end = dayValue[1],
134
+ inverted = dayValue[2];
134
135
 
135
136
  if (dayKey instanceof Array) {
136
137
  dayKey.forEach(function (day) {
137
138
  updatedSchedule[guid][day] = _objectSpread({}, value[guid][day], {
138
139
  restricted: true,
139
140
  start: start ? dayjs(start).format(DEFAULT_TIME_FORMAT) : undefined,
140
- stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined
141
+ stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined,
142
+ inverted: Boolean(inverted)
141
143
  });
142
144
  });
143
145
  } else {
144
146
  updatedSchedule[guid][dayKey] = _objectSpread({}, value[guid][dayKey], {
145
147
  restricted: true,
146
148
  start: start ? dayjs(start).format(DEFAULT_TIME_FORMAT) : undefined,
147
- stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined
149
+ stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined,
150
+ inverted: Boolean(inverted)
148
151
  });
149
152
  }
150
153
 
@@ -76,7 +76,8 @@ var Weekly = function Weekly(_ref) {
76
76
  var handleDayTimeChange = React.useCallback(function (dayValue, dayKey, guid) {
77
77
  var updatedSchedule = value;
78
78
  var start = dayValue[0],
79
- end = dayValue[1];
79
+ end = dayValue[1],
80
+ inverted = dayValue[2];
80
81
 
81
82
  if (dayKey instanceof Array) {
82
83
  dayKey.forEach(function (day) {
@@ -84,7 +85,8 @@ var Weekly = function Weekly(_ref) {
84
85
  updatedSchedule[guid][day] = _objectSpread({}, value[guid][day], {
85
86
  restricted: true,
86
87
  start: start ? dayjs(start).format(DEFAULT_TIME_FORMAT) : undefined,
87
- stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined
88
+ stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined,
89
+ inverted: Boolean(inverted)
88
90
  });
89
91
  }
90
92
  });
@@ -92,7 +94,8 @@ var Weekly = function Weekly(_ref) {
92
94
  updatedSchedule[guid][dayKey] = _objectSpread({}, value[guid][dayKey], {
93
95
  restricted: true,
94
96
  start: start ? dayjs(start).format(DEFAULT_TIME_FORMAT) : undefined,
95
- stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined
97
+ stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined,
98
+ inverted: Boolean(inverted)
96
99
  });
97
100
  }
98
101
 
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { RangeFilterProps } from './RangeFilter.types';
3
- declare const _default: React.ForwardRefExoticComponent<Pick<RangeFilterProps, "onChange" | "valueSelectionModes" | "texts" | "value" | "rangeUnits" | "onApply" | "onFilterSave" | "savedFilters" | "allowedFilterTypes" | "hideFooter" | "onCancel"> & {
3
+ declare const _default: React.ForwardRefExoticComponent<Pick<RangeFilterProps, "onChange" | "valueSelectionModes" | "rangeDisplayMode" | "texts" | "value" | "rangeUnits" | "onApply" | "onFilterSave" | "savedFilters" | "allowedFilterTypes" | "hideFooter" | "onCancel"> & {
4
4
  forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
5
5
  } & React.RefAttributes<any>> & {
6
6
  WrappedComponent: React.ComponentType<RangeFilterProps>;
@@ -148,7 +148,8 @@ var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
148
148
  texts = _this$props3.texts,
149
149
  hideFooter = _this$props3.hideFooter,
150
150
  valueSelectionModes = _this$props3.valueSelectionModes,
151
- allowedFilterTypes = _this$props3.allowedFilterTypes;
151
+ allowedFilterTypes = _this$props3.allowedFilterTypes,
152
+ rangeDisplayMode = _this$props3.rangeDisplayMode;
152
153
  var buttonSource = allowedFilterTypes != null && allowedFilterTypes.length ? allowedFilterTypes : Object.values(TYPES);
153
154
  buttonSource.sort(function (a, b) {
154
155
  return Object.values(TYPES).indexOf(a) < Object.values(TYPES).indexOf(b) ? -1 : 1;
@@ -179,6 +180,7 @@ var RangeFilter = /*#__PURE__*/function (_React$PureComponent) {
179
180
  })), /*#__PURE__*/React.createElement(S.MainComponentWrapper, null, Component && /*#__PURE__*/React.createElement(Component, {
180
181
  intl: intl,
181
182
  texts: texts,
183
+ rangeDisplayMode: rangeDisplayMode,
182
184
  value: definition,
183
185
  onChange: function onChange(def) {
184
186
  var _updatedFilter;
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { IntlShape } from 'react-intl';
3
3
  import { SavedFilter } from './Shared/FilterDropdown/FilterDropdown.types';
4
- import { DateLimitMode } from './Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
4
+ import { DateLimitMode, RangeDisplayMode } from './Shared/TimeWindow/RangeFormContainer/RangeForm/RangeForm.types';
5
5
  import { Props as DateRangePickerProps, Texts } from '../DateRangePicker.types';
6
6
  import { COUNTED_FROM_ENUM, DAYS_OF_PERIOD_ENUM } from './constants';
7
7
  export declare type FilterValue<T = FilterDefinition> = {
@@ -20,6 +20,7 @@ export declare type RangeFilterProps = {
20
20
  texts?: Texts;
21
21
  allowedFilterTypes?: string[];
22
22
  valueSelectionModes?: DateLimitMode[];
23
+ rangeDisplayMode?: RangeDisplayMode;
23
24
  rangeUnits?: Pick<DateRangePickerProps, 'rangeUnits'>;
24
25
  };
25
26
  export declare type RangeFilterState = {
@@ -9,5 +9,5 @@ declare type HeaderProps = {
9
9
  actions?: Action[];
10
10
  suffix?: React.ReactNode;
11
11
  };
12
- export declare const Header: React.NamedExoticComponent<HeaderProps>;
12
+ export declare const Header: React.MemoExoticComponent<({ title, actions, suffix }: HeaderProps) => JSX.Element>;
13
13
  export {};
@@ -0,0 +1,16 @@
1
+ import type { DateLimitMode, RangeDisplayMode } from './RangeForm.types';
2
+ export declare const FORM_MODES: Record<string, DateLimitMode>;
3
+ export declare const RANGE_DISPLAY_MODES: Record<string, RangeDisplayMode>;
4
+ export declare const RANGE_FORM_INTL_KEYS: {
5
+ Hour: {
6
+ id: string;
7
+ defaultMessage: string;
8
+ };
9
+ Range: {
10
+ id: string;
11
+ defaultMessage: string;
12
+ };
13
+ };
14
+ export declare const SLIDER_MAX = 24;
15
+ export declare const SLIDER_MIN = 0;
16
+ export declare const SLIDER_STEP = 0.25;
@@ -0,0 +1,21 @@
1
+ export var FORM_MODES = {
2
+ HOUR: 'Hour',
3
+ RANGE: 'Range'
4
+ };
5
+ export var RANGE_DISPLAY_MODES = {
6
+ TIMEPICKER: 'timepicker',
7
+ SLIDER: 'slider'
8
+ };
9
+ export var RANGE_FORM_INTL_KEYS = {
10
+ Hour: {
11
+ id: 'DS.DATE-RANGE-PICKER.HOUR',
12
+ defaultMessage: 'Hour'
13
+ },
14
+ Range: {
15
+ id: 'DS.DATE-RANGE-PICKER.RANGE',
16
+ defaultMessage: 'Range'
17
+ }
18
+ };
19
+ export var SLIDER_MAX = 24;
20
+ export var SLIDER_MIN = 0;
21
+ export var SLIDER_STEP = 0.25;
@@ -1,15 +1,6 @@
1
- import * as React from 'react';
2
- import { DateLimitMode, RangeFormProps } from './RangeForm.types';
3
- export declare const FORM_MODES: Record<string, DateLimitMode>;
4
- export declare const RANGE_FORM_INTL_KEYS: {
5
- Hour: {
6
- id: string;
7
- defaultMessage: string;
8
- };
9
- Range: {
10
- id: string;
11
- defaultMessage: string;
12
- };
13
- };
14
- declare const RangeForm: React.FC<RangeFormProps>;
1
+ /// <reference types="react" />
2
+ import { RangeFormProps } from './RangeForm.types';
3
+ import { FORM_MODES, RANGE_FORM_INTL_KEYS } from './RangeForm.constants';
4
+ export { FORM_MODES, RANGE_FORM_INTL_KEYS };
5
+ declare const RangeForm: ({ onModeChange, disabled, startDate, endDate, onStartChange, onEndChange, onExactHourSelect, onRangeDelete, valueSelectionModes, mode, rangeDisplayMode, isInvertedRange, timePickerProps, texts, valueFormatOptions, }: RangeFormProps) => JSX.Element;
15
6
  export default RangeForm;
@@ -1,28 +1,20 @@
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
- import * as React from 'react';
3
+ import React, { useState, useEffect } from 'react';
4
4
  import { useIntl } from 'react-intl';
5
+ import dayjs from 'dayjs';
5
6
  import Select from '@synerise/ds-select';
6
7
  import Icon, { CloseS } from '@synerise/ds-icon';
7
8
  import { useDataFormat } from '@synerise/ds-data-format';
8
9
  import TimePicker from '@synerise/ds-time-picker';
10
+ import Slider from '@synerise/ds-slider';
9
11
  import { theme } from '@synerise/ds-core';
10
12
  import * as S from './RangeForm.styles';
11
13
  import { getDisabledTimeOptions } from '../../../../../RangePicker/utils';
12
- export var FORM_MODES = {
13
- HOUR: 'Hour',
14
- RANGE: 'Range'
15
- };
16
- export var RANGE_FORM_INTL_KEYS = {
17
- Hour: {
18
- id: 'DS.DATE-RANGE-PICKER.HOUR',
19
- defaultMessage: 'Hour'
20
- },
21
- Range: {
22
- id: 'DS.DATE-RANGE-PICKER.RANGE',
23
- defaultMessage: 'Range'
24
- }
25
- };
14
+ import { FORM_MODES, RANGE_DISPLAY_MODES, RANGE_FORM_INTL_KEYS, SLIDER_MIN, SLIDER_MAX, SLIDER_STEP } from './RangeForm.constants';
15
+ import { numberToDate, dateToNumber } from './RangeForm.utils'; // @deprecated, moved to ./RangeForm.constants
16
+
17
+ export { FORM_MODES, RANGE_FORM_INTL_KEYS };
26
18
 
27
19
  var RangeForm = function RangeForm(_ref) {
28
20
  var onModeChange = _ref.onModeChange,
@@ -37,6 +29,9 @@ var RangeForm = function RangeForm(_ref) {
37
29
  valueSelectionModes = _ref$valueSelectionMo === void 0 ? [FORM_MODES.RANGE, FORM_MODES.HOUR] : _ref$valueSelectionMo,
38
30
  _ref$mode = _ref.mode,
39
31
  mode = _ref$mode === void 0 ? valueSelectionModes[0] : _ref$mode,
32
+ _ref$rangeDisplayMode = _ref.rangeDisplayMode,
33
+ rangeDisplayMode = _ref$rangeDisplayMode === void 0 ? RANGE_DISPLAY_MODES.TIMEPICKER : _ref$rangeDisplayMode,
34
+ isInvertedRange = _ref.isInvertedRange,
40
35
  timePickerProps = _ref.timePickerProps,
41
36
  texts = _ref.texts,
42
37
  valueFormatOptions = _ref.valueFormatOptions;
@@ -46,22 +41,37 @@ var RangeForm = function RangeForm(_ref) {
46
41
 
47
42
  var intl = useIntl();
48
43
 
49
- var _React$useState = React.useState(startDate),
50
- start = _React$useState[0],
51
- setStart = _React$useState[1];
44
+ var _useState = useState(startDate),
45
+ start = _useState[0],
46
+ setStart = _useState[1];
47
+
48
+ var _useState2 = useState(endDate),
49
+ end = _useState2[0],
50
+ setEnd = _useState2[1];
51
+
52
+ var _useState3 = useState(startDate ? dateToNumber(startDate) : SLIDER_MIN),
53
+ sliderStart = _useState3[0],
54
+ setSliderStart = _useState3[1];
52
55
 
53
- var _React$useState2 = React.useState(endDate),
54
- end = _React$useState2[0],
55
- setEnd = _React$useState2[1];
56
+ var _useState4 = useState(endDate ? dateToNumber(endDate) : SLIDER_MAX),
57
+ sliderEnd = _useState4[0],
58
+ setSliderEnd = _useState4[1];
56
59
 
57
- var getPopupContainer = React.useCallback(function (node) {
60
+ useEffect(function () {
61
+ if (rangeDisplayMode !== RANGE_DISPLAY_MODES.SLIDER) {
62
+ setStart(startDate);
63
+ setEnd(endDate);
64
+ } else {
65
+ setSliderStart(startDate ? dateToNumber(startDate) : SLIDER_MIN);
66
+ setSliderEnd(endDate ? dateToNumber(endDate) : SLIDER_MAX);
67
+ }
68
+ }, [rangeDisplayMode, startDate, endDate]);
69
+
70
+ var getPopupContainer = function getPopupContainer(node) {
58
71
  return node.parentElement != null ? node.parentElement : document.body;
59
- }, []);
60
- React.useEffect(function () {
61
- setStart(startDate);
62
- setEnd(endDate);
63
- }, [startDate, endDate]);
64
- var singleHourPicker = React.useMemo(function () {
72
+ };
73
+
74
+ var singleHourPicker = function singleHourPicker() {
65
75
  return /*#__PURE__*/React.createElement(TimePicker, _extends({
66
76
  disabled: disabled,
67
77
  clearTooltip: texts == null ? void 0 : texts.clear,
@@ -80,8 +90,59 @@ var RangeForm = function RangeForm(_ref) {
80
90
  use12HourClock: is12HoursClock,
81
91
  valueFormatOptions: valueFormatOptions
82
92
  }, timePickerProps));
83
- }, [start, onExactHourSelect, getPopupContainer, texts, timePickerProps, disabled, is12HoursClock, valueFormatOptions]);
84
- var renderRangePicker = React.useCallback(function () {
93
+ };
94
+
95
+ var timeFormatByClockMode = is12HoursClock ? 'hh:mm A' : 'HH:mm';
96
+
97
+ var tipFormatter = function tipFormatter(value) {
98
+ if (value === undefined) return null;
99
+ var valueAsDate = numberToDate(value, SLIDER_MAX);
100
+ return dayjs(valueAsDate).format(timeFormatByClockMode);
101
+ };
102
+
103
+ var renderRangeSlider = function renderRangeSlider() {
104
+ var handleSliderChange = function handleSliderChange(range) {
105
+ if (range[0] !== sliderStart) {
106
+ setSliderStart(range[0]);
107
+ } else if (range[1] !== sliderEnd) {
108
+ setSliderEnd(range[1]);
109
+ }
110
+ };
111
+
112
+ var handleSliderAfterChange = function handleSliderAfterChange(range) {
113
+ var currentStartDateAsNumber = startDate ? dateToNumber(startDate) : SLIDER_MIN;
114
+ var currentEndDateAsNumber = endDate ? dateToNumber(endDate) : SLIDER_MAX;
115
+ var newStartDate = numberToDate(range[0], SLIDER_MAX, true);
116
+ var newEndDate = numberToDate(range[1], SLIDER_MAX);
117
+
118
+ if (range[0] !== currentStartDateAsNumber) {
119
+ setSliderStart(range[0]);
120
+ onStartChange(newStartDate);
121
+ } else if (range[1] !== currentEndDateAsNumber) {
122
+ setSliderEnd(range[1]);
123
+ onEndChange(newEndDate);
124
+ }
125
+ };
126
+
127
+ return /*#__PURE__*/React.createElement(Slider, {
128
+ range: true,
129
+ min: SLIDER_MIN,
130
+ max: SLIDER_MAX,
131
+ step: SLIDER_STEP,
132
+ inverted: isInvertedRange,
133
+ value: [sliderStart, sliderEnd],
134
+ included: true,
135
+ getTooltipPopupContainer: function getTooltipPopupContainer(container) {
136
+ return container;
137
+ },
138
+ tooltipVisible: true,
139
+ onAfterChange: handleSliderAfterChange,
140
+ onChange: handleSliderChange,
141
+ tipFormatter: tipFormatter
142
+ });
143
+ };
144
+
145
+ var renderRangePicker = function renderRangePicker() {
85
146
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TimePicker, _extends({
86
147
  disabled: disabled,
87
148
  clearTooltip: texts == null ? void 0 : texts.clear,
@@ -114,12 +175,22 @@ var RangeForm = function RangeForm(_ref) {
114
175
  disabledSeconds: getDisabledTimeOptions(end || start, 'SECONDS', start, null, is12HoursClock),
115
176
  use12HourClock: is12HoursClock
116
177
  }, timePickerProps)));
117
- }, [start, end, onStartChange, onEndChange, setStart, setEnd, getPopupContainer, texts, timePickerProps, disabled, is12HoursClock, valueFormatOptions]);
118
- var getModeLabel = React.useCallback(function (modeName) {
178
+ };
179
+
180
+ var renderRangeUI = function renderRangeUI() {
181
+ if (rangeDisplayMode === RANGE_DISPLAY_MODES.SLIDER) {
182
+ return renderRangeSlider();
183
+ }
184
+
185
+ return renderRangePicker();
186
+ };
187
+
188
+ var getModeLabel = function getModeLabel(modeName) {
119
189
  if (texts && texts[modeName]) return texts[modeName];
120
190
  return intl.formatMessage(RANGE_FORM_INTL_KEYS[modeName]);
121
- }, [texts, intl]);
122
- var limitModeSelect = React.useMemo(function () {
191
+ };
192
+
193
+ var limitModeSelect = function limitModeSelect() {
123
194
  return valueSelectionModes.length > 1 ? /*#__PURE__*/React.createElement(Select, {
124
195
  value: mode,
125
196
  disabled: disabled,
@@ -133,10 +204,12 @@ var RangeForm = function RangeForm(_ref) {
133
204
  value: modeName
134
205
  }, getModeLabel(modeName));
135
206
  })) : null;
136
- }, [mode, onModeChange, getPopupContainer, valueSelectionModes, disabled, getModeLabel]);
207
+ };
208
+
137
209
  return /*#__PURE__*/React.createElement(S.Container, null, /*#__PURE__*/React.createElement(S.Row, {
138
- justifyContent: "flex-start"
139
- }, limitModeSelect, mode === FORM_MODES.HOUR ? singleHourPicker : renderRangePicker(), !!onRangeDelete && !disabled && /*#__PURE__*/React.createElement(S.RemoveIconWrapper, {
210
+ justifyContent: "flex-start",
211
+ mode: rangeDisplayMode
212
+ }, rangeDisplayMode !== RANGE_DISPLAY_MODES.SLIDER && limitModeSelect, mode === FORM_MODES.HOUR ? singleHourPicker() : renderRangeUI(), !!onRangeDelete && !disabled && /*#__PURE__*/React.createElement(S.RemoveIconWrapper, {
140
213
  onClick: onRangeDelete
141
214
  }, /*#__PURE__*/React.createElement(Icon, {
142
215
  component: /*#__PURE__*/React.createElement(CloseS, null),
@@ -1,6 +1,8 @@
1
+ import type { RangeDisplayMode } from './RangeForm.types';
1
2
  export declare const RemoveIconWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
2
3
  export declare const Container: import("styled-components").StyledComponent<"div", any, {}, never>;
3
4
  export declare const Row: import("styled-components").StyledComponent<"div", any, {
4
5
  justifyContent: string;
6
+ mode: RangeDisplayMode;
5
7
  }, never>;
6
8
  export declare const Separator: import("styled-components").StyledComponent<"span", any, {}, never>;
@@ -1,4 +1,4 @@
1
- import styled from 'styled-components';
1
+ import styled, { css } from 'styled-components';
2
2
  export var RemoveIconWrapper = styled.div.withConfig({
3
3
  displayName: "RangeFormstyles__RemoveIconWrapper",
4
4
  componentId: "sc-4k3o5r-0"
@@ -10,8 +10,12 @@ export var Container = styled.div.withConfig({
10
10
  export var Row = styled.div.withConfig({
11
11
  displayName: "RangeFormstyles__Row",
12
12
  componentId: "sc-4k3o5r-2"
13
- })(["width:100%;display:flex;justify-content:", ";min-height:32px;margin:8px 0;"], function (props) {
13
+ })(["width:100%;display:flex;justify-content:", ";min-height:32px;margin:8px 0;", " .ant-slider{width:100%;margin:24px 8px 8px;}.ant-tooltip-inner{white-space:nowrap;}&& .ant-slider-handle:focus,&& .ant-slider-handle:hover{.ant-tooltip-content{background-color:transparent;}.ant-tooltip-inner{color:", ";}}"], function (props) {
14
14
  return props.justifyContent;
15
+ }, function (props) {
16
+ return props.mode === 'slider' && css(["&{column-gap:8px;margin-top:16px;", "{margin-top:14px;}}"], RemoveIconWrapper);
17
+ }, function (props) {
18
+ return props.theme.palette['grey-600'];
15
19
  });
16
20
  export var Separator = styled.span.withConfig({
17
21
  displayName: "RangeFormstyles__Separator",
@@ -3,6 +3,7 @@ import { WithTranslations } from '../../../../../DateRangePicker.types';
3
3
  import { RangeFormContainerProps } from '../RangeFormContainer.types';
4
4
  import { WithDisabledProp } from '../../../../RangeFilter.types';
5
5
  export declare type DateLimitMode = 'Hour' | 'Range';
6
+ export declare type RangeDisplayMode = 'timepicker' | 'slider';
6
7
  export declare type RangeFormProps = {
7
8
  mode: DateLimitMode;
8
9
  onModeChange: (mode: DateLimitMode) => void;
@@ -14,6 +15,8 @@ export declare type RangeFormProps = {
14
15
  onExactHourSelect: (value?: Date) => void;
15
16
  onRangeDelete?: () => void;
16
17
  valueSelectionModes: DateLimitMode[];
18
+ rangeDisplayMode?: RangeDisplayMode;
19
+ isInvertedRange?: boolean;
17
20
  } & WithTranslations & WithDisabledProp & Pick<RangeFormContainerProps, 'timePickerProps' | 'valueFormatOptions'>;
18
21
  export declare type RangeFormTexts = {
19
22
  range: React.ReactNode | string;
@@ -0,0 +1,2 @@
1
+ export declare const numberToDate: (number: number, max: number, isRangeStart?: boolean | undefined) => Date;
2
+ export declare const dateToNumber: (date: Date) => number;
@@ -0,0 +1,19 @@
1
+ import dayjs from 'dayjs';
2
+ import startOf from '../../../../../dateUtils/startOf';
3
+ import endOf from '../../../../../dateUtils/endOf';
4
+ export var numberToDate = function numberToDate(number, max, isRangeStart) {
5
+ if (number === max) {
6
+ return dayjs().endOf('day').toDate();
7
+ }
8
+
9
+ var hours = Math.floor(number);
10
+ var minutes = 60 * (number % 1);
11
+ var result = dayjs().hour(hours).minute(minutes).toDate();
12
+ return isRangeStart ? startOf.MINUTES(result) : endOf.MINUTES(result);
13
+ };
14
+ export var dateToNumber = function dateToNumber(date) {
15
+ var integer = date.getHours();
16
+ var decimal = Math.round(date.getMinutes() / 60 * 4) / 4;
17
+ var result = integer + decimal;
18
+ return result;
19
+ };
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ /// <reference types="react" />
2
2
  import type { RangeFormContainerProps } from './RangeFormContainer.types';
3
- declare const RangeFormContainer: React.FC<RangeFormContainerProps>;
3
+ declare const RangeFormContainer: ({ activeDays, disabled, days, dayKeys, getDayValue, getDayLabel, onDayTimeChange, onMultipleDayTimeChange, hideHeader, headerOptions, monthlyFilter, monthlyFilterPeriod, onRangeClear, onRangePaste, onRangeCopy, onRangeDelete, texts, onChange, valueSelectionModes, rangeDisplayMode, onModeChange, timePickerProps, renderSuffix, timeFormat, valueFormatOptions, }: RangeFormContainerProps) => JSX.Element;
4
4
  export default RangeFormContainer;
@@ -5,12 +5,15 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
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
7
  import * as React from 'react';
8
+ import { FormattedMessage } from 'react-intl';
8
9
  import RangeForm from './RangeForm/RangeForm';
10
+ import { RANGE_DISPLAY_MODES } from './RangeForm/RangeForm.constants';
9
11
  import { getDateFromDayValue, getDefaultFilterForLimitMode } from '../utils';
10
12
  import { Header } from '../Header/Header';
11
13
  import RangeSummary from '../RangeSummary/RangeSummary';
12
14
  import RangeActions from '../RangeActions/RangeActions';
13
15
  import { DEFAULT_LIMIT_MODE } from '../TimeWindow';
16
+ import * as S from './RangeFormContainer.styles';
14
17
 
15
18
  var RangeFormContainer = function RangeFormContainer(_ref) {
16
19
  var activeDays = _ref.activeDays,
@@ -22,6 +25,8 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
22
25
  onDayTimeChange = _ref.onDayTimeChange,
23
26
  onMultipleDayTimeChange = _ref.onMultipleDayTimeChange,
24
27
  hideHeader = _ref.hideHeader,
28
+ _ref$headerOptions = _ref.headerOptions,
29
+ headerOptions = _ref$headerOptions === void 0 ? {} : _ref$headerOptions,
25
30
  monthlyFilter = _ref.monthlyFilter,
26
31
  monthlyFilterPeriod = _ref.monthlyFilterPeriod,
27
32
  onRangeClear = _ref.onRangeClear,
@@ -33,6 +38,7 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
33
38
  onChange = _ref.onChange,
34
39
  _ref$valueSelectionMo = _ref.valueSelectionModes,
35
40
  valueSelectionModes = _ref$valueSelectionMo === void 0 ? ['Range', 'Hour'] : _ref$valueSelectionMo,
41
+ rangeDisplayMode = _ref.rangeDisplayMode,
36
42
  onModeChange = _ref.onModeChange,
37
43
  timePickerProps = _ref.timePickerProps,
38
44
  renderSuffix = _ref.renderSuffix,
@@ -63,8 +69,9 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
63
69
  }, [dayValue, valueSelectionModes]);
64
70
  var onStartChange = React.useCallback(function (start) {
65
71
  var dayVal = getDayValue(activeDays[0]);
66
- var end = dayVal.stop;
67
- var value = [start, end ? getDateFromDayValue(end, timeFormat) : undefined];
72
+ var inverted = dayVal.inverted,
73
+ end = dayVal.stop;
74
+ var value = [start, end ? getDateFromDayValue(end, timeFormat) : undefined, Boolean(inverted)];
68
75
 
69
76
  if (activeDays.length > 1) {
70
77
  onMultipleDayTimeChange(value);
@@ -74,8 +81,22 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
74
81
  }, [activeDays, onMultipleDayTimeChange, onDayTimeChange, timeFormat, getDayValue, dayKeys]);
75
82
  var onEndChange = React.useCallback(function (end) {
76
83
  var dayVal = getDayValue(activeDays[0]);
77
- var start = dayVal.start;
78
- var value = [start ? getDateFromDayValue(start, timeFormat) : undefined, end];
84
+ var start = dayVal.start,
85
+ inverted = dayVal.inverted;
86
+ var value = [start ? getDateFromDayValue(start, timeFormat) : undefined, end, Boolean(inverted)];
87
+
88
+ if (activeDays.length > 1) {
89
+ onMultipleDayTimeChange(value);
90
+ } else {
91
+ onDayTimeChange(value, dayKeys);
92
+ }
93
+ }, [activeDays, onMultipleDayTimeChange, onDayTimeChange, timeFormat, getDayValue, dayKeys]);
94
+ var toggleInverted = React.useCallback(function () {
95
+ var dayVal = getDayValue(activeDays[0]);
96
+ var start = dayVal.start,
97
+ inverted = dayVal.inverted,
98
+ end = dayVal.stop;
99
+ var value = [start ? getDateFromDayValue(start, timeFormat) : undefined, end ? getDateFromDayValue(end, timeFormat) : undefined, Boolean(!inverted)];
79
100
 
80
101
  if (activeDays.length > 1) {
81
102
  onMultipleDayTimeChange(value);
@@ -85,9 +106,9 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
85
106
  }, [activeDays, onMultipleDayTimeChange, onDayTimeChange, timeFormat, getDayValue, dayKeys]);
86
107
  var onExactHourSelect = React.useCallback(function (value) {
87
108
  if (activeDays.length > 1) {
88
- onMultipleDayTimeChange([value, value]);
109
+ onMultipleDayTimeChange([value, value, false]);
89
110
  } else {
90
- onDayTimeChange([value, value], dayKeys);
111
+ onDayTimeChange([value, value, false], dayKeys);
91
112
  }
92
113
  }, [activeDays, onMultipleDayTimeChange, onDayTimeChange, dayKeys]);
93
114
  var rangeForm = React.useMemo(function () {
@@ -107,20 +128,34 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
107
128
  onRangeDelete: onRangeDelete,
108
129
  valueSelectionModes: valueSelectionModes,
109
130
  valueFormatOptions: valueFormatOptions,
110
- timePickerProps: timePickerProps
131
+ timePickerProps: timePickerProps,
132
+ rangeDisplayMode: rangeDisplayMode,
133
+ isInvertedRange: Boolean(dayValue == null ? void 0 : dayValue.inverted)
111
134
  });
112
- }, [timeFormat, valueSelectionModes, handleModeChange, mode, disabled, dayValue, onRangeDelete, texts, timePickerProps, onStartChange, onEndChange, onExactHourSelect, valueFormatOptions]);
135
+ }, [timeFormat, rangeDisplayMode, valueSelectionModes, handleModeChange, mode, disabled, dayValue, onRangeDelete, texts, timePickerProps, onStartChange, onEndChange, onExactHourSelect, valueFormatOptions]);
136
+ var invertedToggleLink = React.useMemo(function () {
137
+ return /*#__PURE__*/React.createElement(S.InvertAction, {
138
+ onClick: toggleInverted
139
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
140
+ id: "DS.DATE-RANGE-PICKER.FILTER-INVERSE-SELECTION",
141
+ defaultMessage: "Inverse selection"
142
+ }));
143
+ }, [toggleInverted]);
113
144
  var suffix = React.useMemo(function () {
114
- return renderSuffix ? renderSuffix() : /*#__PURE__*/React.createElement(RangeActions, {
145
+ var _headerOptions$includ = headerOptions.includeActions,
146
+ includeActions = _headerOptions$includ === void 0 ? true : _headerOptions$includ;
147
+ return renderSuffix ? renderSuffix() : /*#__PURE__*/React.createElement(React.Fragment, null, rangeDisplayMode === RANGE_DISPLAY_MODES.SLIDER && invertedToggleLink, includeActions && /*#__PURE__*/React.createElement(RangeActions, {
115
148
  onRangeClear: onRangeClear,
116
149
  onRangeCopy: onRangeCopy,
117
150
  onRangePaste: onRangePaste,
118
151
  texts: texts
119
- });
120
- }, [onRangePaste, onRangeClear, onRangeCopy, texts, renderSuffix]);
152
+ }));
153
+ }, [onRangePaste, onRangeClear, onRangeCopy, texts, renderSuffix, rangeDisplayMode, invertedToggleLink, headerOptions]);
121
154
  if (hideHeader) return rangeForm;
155
+ var _headerOptions$includ2 = headerOptions.includeSummary,
156
+ includeSummary = _headerOptions$includ2 === void 0 ? true : _headerOptions$includ2;
122
157
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header, {
123
- title: /*#__PURE__*/React.createElement(RangeSummary, {
158
+ title: includeSummary && /*#__PURE__*/React.createElement(RangeSummary, {
124
159
  dayKeys: dayKeys,
125
160
  getDayLabel: getDayLabel,
126
161
  monthlyFilter: monthlyFilter,
@@ -0,0 +1 @@
1
+ export declare const InvertAction: import("styled-components").StyledComponent<"a", any, {}, never>;
@@ -0,0 +1,5 @@
1
+ import styled from 'styled-components';
2
+ export var InvertAction = styled.a.withConfig({
3
+ displayName: "RangeFormContainerstyles__InvertAction",
4
+ componentId: "vxg8mc-0"
5
+ })(["align-self:center;margin-right:6px;"]);
@@ -3,8 +3,8 @@ import type { TimePickerProps } from '@synerise/ds-time-picker';
3
3
  import type { DateToFormatOptions } from '@synerise/ds-data-format';
4
4
  import { DayKey, RangeActions, TimeWindowProps, TimeWindowTexts } from '../TimeWindow.types';
5
5
  import { FilterDefinition, WithDisabledProp } from '../../../RangeFilter.types';
6
- import { DateLimitMode } from './RangeForm/RangeForm.types';
7
- export declare type DateValue = [Date | undefined, Date | undefined];
6
+ import { DateLimitMode, RangeDisplayMode } from './RangeForm/RangeForm.types';
7
+ export declare type DateValue = [Date | undefined, Date | undefined, boolean | undefined];
8
8
  export declare type RangeFormContainerProps = {
9
9
  activeDays: DayKey[];
10
10
  dayKeys: DayKey | DayKey[];
@@ -15,6 +15,7 @@ export declare type RangeFormContainerProps = {
15
15
  onModeChange?: (mode: DateLimitMode) => void;
16
16
  onRangeDelete?: () => void;
17
17
  valueSelectionModes: DateLimitMode[];
18
+ rangeDisplayMode?: RangeDisplayMode;
18
19
  texts: Partial<TimeWindowTexts>;
19
20
  /**
20
21
  * @deprecated use `valueFormatOptions` instead
@@ -23,4 +24,4 @@ export declare type RangeFormContainerProps = {
23
24
  valueFormatOptions?: DateToFormatOptions;
24
25
  timePickerProps?: Partial<TimePickerProps>;
25
26
  renderSuffix?: () => React.ReactNode;
26
- } & Pick<TimeWindowProps, 'monthlyFilter' | 'monthlyFilterPeriod' | 'hideHeader' | 'onChange' | 'days'> & WithDisabledProp & Partial<RangeActions>;
27
+ } & Pick<TimeWindowProps, 'monthlyFilter' | 'monthlyFilterPeriod' | 'hideHeader' | 'headerOptions' | 'onChange' | 'days'> & WithDisabledProp & Partial<RangeActions>;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { TimeWindowProps } from './TimeWindow.types';
3
3
  import { DateLimitMode } from './RangeFormContainer/RangeForm/RangeForm.types';
4
4
  export declare const DEFAULT_LIMIT_MODE: DateLimitMode;
@@ -14,11 +14,9 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
14
14
 
15
15
  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; }
16
16
 
17
- import * as React from 'react';
17
+ import React, { PureComponent, createRef } from 'react';
18
18
  import { range } from 'lodash';
19
- import { FormattedMessage, injectIntl } from 'react-intl'; // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
20
- // @ts-ignore
21
-
19
+ import { FormattedMessage, injectIntl } from 'react-intl';
22
20
  import dayjs from 'dayjs';
23
21
  import { withDataFormat } from '@synerise/ds-data-format';
24
22
  import * as S from './TimeWindow.styles';
@@ -33,8 +31,8 @@ import SelectionHint from '../SelectionHint/SelectionHint';
33
31
  import { EU_NOTATION_MONTH_DAYS_INDEXES, EU_NOTATION_WEEK_DAYS_INDEXES, US_NOTATION_MONTH_DAYS_INDEXES, US_NOTATION_WEEK_DAYS_INDEXES } from './constants/timeWindow.constants';
34
32
  export var DEFAULT_LIMIT_MODE = 'Range';
35
33
 
36
- var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
37
- _inheritsLoose(TimeWindowBase, _React$PureComponent);
34
+ var TimeWindowBase = /*#__PURE__*/function (_PureComponent) {
35
+ _inheritsLoose(TimeWindowBase, _PureComponent);
38
36
 
39
37
  function TimeWindowBase() {
40
38
  var _this;
@@ -43,14 +41,14 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
43
41
  args[_key] = arguments[_key];
44
42
  }
45
43
 
46
- _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;
44
+ _this = _PureComponent.call.apply(_PureComponent, [this].concat(args)) || this;
47
45
 
48
46
  _defineProperty(_assertThisInitialized(_this), "state", {
49
47
  activeDays: _this.props.daily ? [0] : [],
50
48
  controlKeyPressed: false
51
49
  });
52
50
 
53
- _defineProperty(_assertThisInitialized(_this), "wrapperRef", React.createRef());
51
+ _defineProperty(_assertThisInitialized(_this), "wrapperRef", createRef());
54
52
 
55
53
  _defineProperty(_assertThisInitialized(_this), "isDayRestricted", function (dayKey) {
56
54
  var days = _this.props.days;
@@ -158,7 +156,8 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
158
156
  _this.handleDayChange(dayKey, {
159
157
  restricted: true,
160
158
  start: value[0] !== undefined ? dayjs(value[0]).format(TIME_FORMAT) : DEFAULT_RANGE_START,
161
- stop: value[1] !== undefined ? dayjs(value[1]).format(TIME_FORMAT) : DEFAULT_RANGE_END
159
+ stop: value[1] !== undefined ? dayjs(value[1]).format(TIME_FORMAT) : DEFAULT_RANGE_END,
160
+ inverted: Boolean(value[2])
162
161
  });
163
162
  });
164
163
 
@@ -173,6 +172,7 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
173
172
  day: k,
174
173
  start: dayjs(value[0]).format(TIME_FORMAT),
175
174
  stop: dayjs(value[1]).format(TIME_FORMAT),
175
+ inverted: Boolean(value[2]),
176
176
  restricted: true
177
177
  });
178
178
  });
@@ -252,7 +252,7 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
252
252
  var activeDays = _this.state.activeDays;
253
253
 
254
254
  if (rangeClipboard != null && rangeClipboard.stop && rangeClipboard != null && rangeClipboard.start) {
255
- activeDays.length > 1 ? _this.handleMultipleDayTimeChange([getDateFromDayValue(rangeClipboard.start), getDateFromDayValue(rangeClipboard.stop)]) : _this.handleDayTimeChange([getDateFromDayValue(rangeClipboard.start), getDateFromDayValue(rangeClipboard.stop)], dayKeys);
255
+ activeDays.length > 1 ? _this.handleMultipleDayTimeChange([getDateFromDayValue(rangeClipboard.start), getDateFromDayValue(rangeClipboard.stop), rangeClipboard == null ? void 0 : rangeClipboard.inverted]) : _this.handleDayTimeChange([getDateFromDayValue(rangeClipboard.start), getDateFromDayValue(rangeClipboard.stop), rangeClipboard == null ? void 0 : rangeClipboard.inverted], dayKeys);
256
256
  }
257
257
  });
258
258
 
@@ -264,7 +264,8 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
264
264
 
265
265
  onRangeCopy && onRangeCopy({
266
266
  start: dayValue.start,
267
- stop: dayValue.stop
267
+ stop: dayValue.stop,
268
+ inverted: dayValue.inverted
268
269
  });
269
270
  });
270
271
 
@@ -337,7 +338,7 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
337
338
  var daily = _this.props.daily;
338
339
 
339
340
  if (!daily && !_this.haveActiveDaysCommonRange()) {
340
- _this.handleMultipleDayTimeChange([getDateFromDayValue(DEFAULT_RANGE_START), getDateFromDayValue(DEFAULT_RANGE_END)]);
341
+ _this.handleMultipleDayTimeChange([getDateFromDayValue(DEFAULT_RANGE_START), getDateFromDayValue(DEFAULT_RANGE_END), false]);
341
342
  }
342
343
 
343
344
  _this.setState({
@@ -349,6 +350,7 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
349
350
  var activeDays = _this.state.activeDays;
350
351
  var _this$props9 = _this.props,
351
352
  hideHeader = _this$props9.hideHeader,
353
+ headerOptions = _this$props9.headerOptions,
352
354
  monthlyFilterPeriod = _this$props9.monthlyFilterPeriod,
353
355
  monthlyFilter = _this$props9.monthlyFilter,
354
356
  daily = _this$props9.daily,
@@ -358,7 +360,8 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
358
360
  valueSelectionModes = _this$props9.valueSelectionModes,
359
361
  renderRangeFormSuffix = _this$props9.renderRangeFormSuffix,
360
362
  timePickerProps = _this$props9.timePickerProps,
361
- disabled = _this$props9.disabled;
363
+ disabled = _this$props9.disabled,
364
+ rangeDisplayMode = _this$props9.rangeDisplayMode;
362
365
  return /*#__PURE__*/React.createElement(RangeFormContainer, {
363
366
  disabled: disabled,
364
367
  onChange: onChange,
@@ -375,13 +378,15 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
375
378
  return _this.handleRangePaste(dayKeys);
376
379
  },
377
380
  hideHeader: hideHeader,
381
+ headerOptions: headerOptions,
378
382
  monthlyFilter: monthlyFilter,
379
383
  monthlyFilterPeriod: monthlyFilterPeriod,
380
384
  onRangeDelete: daily ? undefined : _this.handleRangeDelete,
381
385
  texts: texts || {},
382
386
  renderSuffix: renderRangeFormSuffix,
383
387
  timePickerProps: timePickerProps,
384
- valueSelectionModes: valueSelectionModes
388
+ valueSelectionModes: valueSelectionModes,
389
+ rangeDisplayMode: rangeDisplayMode
385
390
  });
386
391
  });
387
392
 
@@ -533,7 +538,7 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
533
538
  };
534
539
 
535
540
  return TimeWindowBase;
536
- }(React.PureComponent);
541
+ }(PureComponent);
537
542
 
538
543
  _defineProperty(TimeWindowBase, "defaultProps", {
539
544
  days: {},
@@ -5,7 +5,7 @@ import type { WithDataFormatProps } from '@synerise/ds-data-format';
5
5
  import { DayProps } from './Day/Day.types';
6
6
  import { FilterDefinition, WithDisabledProp } from '../../RangeFilter.types';
7
7
  import { GridTexts } from './Grid/Grid.types';
8
- import { DateLimitMode } from './RangeFormContainer/RangeForm/RangeForm.types';
8
+ import { DateLimitMode, RangeDisplayMode } from './RangeFormContainer/RangeForm/RangeForm.types';
9
9
  export declare type DayKey = number | string;
10
10
  export declare type DayOptions = {
11
11
  display?: boolean;
@@ -47,6 +47,10 @@ export declare type TimeWindowProps = {
47
47
  dayTemplate: (day: DayKey) => object;
48
48
  dayFormatter: (day: DayKey, long?: boolean) => string | React.ReactNode;
49
49
  hideHeader?: boolean;
50
+ headerOptions?: {
51
+ includeSummary?: boolean;
52
+ includeActions?: boolean;
53
+ };
50
54
  onCheckDay?: (dayKey: DayKey) => void;
51
55
  onSelectAll?: () => void;
52
56
  onUnselectAll?: () => void;
@@ -57,6 +61,7 @@ export declare type TimeWindowProps = {
57
61
  daily?: boolean;
58
62
  rangeClipboard: Partial<FilterDefinition>;
59
63
  valueSelectionModes: DateLimitMode[];
64
+ rangeDisplayMode?: RangeDisplayMode;
60
65
  texts?: TimeWindowTexts & GridTexts;
61
66
  renderRangeFormSuffix?: () => React.ReactNode;
62
67
  timePickerProps?: Partial<TimePickerProps>;
@@ -24,7 +24,7 @@ export declare const TYPES_DATA: {
24
24
  MONTHLY: {
25
25
  labelTranslationKey: string;
26
26
  defaultLabel: string;
27
- component: import("react").ForwardRefExoticComponent<Pick<import("./Filters/MonthlyFilter/MonthlyFilter.types").MonthlyFilterProps, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "rangeClipboard" | "valueSelectionModes" | "texts" | "renderRangeFormSuffix" | "timePickerProps" | "disabled" | "value" | "maxEntries" | "daysOfPeriods" | "countedFromPeriods"> & {
27
+ component: import("react").ForwardRefExoticComponent<Pick<import("./Filters/MonthlyFilter/MonthlyFilter.types").MonthlyFilterProps, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "rangeClipboard" | "valueSelectionModes" | "rangeDisplayMode" | "texts" | "renderRangeFormSuffix" | "timePickerProps" | "disabled" | "value" | "maxEntries" | "daysOfPeriods" | "countedFromPeriods"> & {
28
28
  forwardedRef?: ((instance: any) => void) | import("react").RefObject<any> | null | undefined;
29
29
  } & import("react").RefAttributes<any>> & {
30
30
  WrappedComponent: import("react").ComponentType<import("./Filters/MonthlyFilter/MonthlyFilter.types").MonthlyFilterProps>;
@@ -39,13 +39,13 @@ export declare const TYPES_DATA: {
39
39
  WEEKLY: {
40
40
  labelTranslationKey: string;
41
41
  defaultLabel: string;
42
- component: ({ value, onChange, onRangeClear, onRangePaste, onRangeCopy, rangeClipboard, intl, valueSelectionModes, texts, }: import("./Filters/WeeklyFilter/WeeklyFilter.types").WeeklyFilterProps) => JSX.Element;
42
+ component: ({ value, onChange, onRangeClear, onRangePaste, onRangeCopy, rangeClipboard, intl, valueSelectionModes, rangeDisplayMode, texts, }: import("./Filters/WeeklyFilter/WeeklyFilter.types").WeeklyFilterProps) => JSX.Element;
43
43
  definition: {};
44
44
  };
45
45
  DAILY: {
46
46
  labelTranslationKey: string;
47
47
  defaultLabel: string;
48
- component: import("react").ForwardRefExoticComponent<Pick<import("./Filters/DailyFilter/DailyFilter").Props, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "valueSelectionModes" | "texts" | "disabled" | "value"> & {
48
+ component: import("react").ForwardRefExoticComponent<Pick<import("./Filters/DailyFilter/DailyFilter").Props, "onChange" | "onRangeCopy" | "onRangePaste" | "onRangeClear" | "valueSelectionModes" | "rangeDisplayMode" | "texts" | "disabled" | "value"> & {
49
49
  forwardedRef?: ((instance: any) => void) | import("react").RefObject<any> | null | undefined;
50
50
  } & import("react").RefAttributes<any>> & {
51
51
  WrappedComponent: import("react").ComponentType<import("./Filters/DailyFilter/DailyFilter").Props>;
@@ -27,7 +27,7 @@ export declare class RawDateRangePicker extends PureComponent<DateRangePickerPro
27
27
  getAddons: () => AddonType[];
28
28
  render(): JSX.Element;
29
29
  }
30
- declare const _default: React.ForwardRefExoticComponent<Pick<DateRangePickerProps, "readOnly" | "texts" | "valueFormatOptions" | "format" | "value" | "onVisibleChange" | "rangeUnits" | "containerClass" | "disableDefaultTexts" | "disabledDate" | "forceAdjacentMonths" | "forceAbsolute" | "footerProps" | "onValueChange" | "onApply" | "onFilterSave" | "popoverProps" | "popoverTrigger" | "ranges" | "relativeFuture" | "relativePast" | "relativeModes" | "savedFilters" | "showRelativePicker" | "showFilter" | "showTime" | "showCustomRange" | "showNowButton" | "validate" | "valueTransformer" | "arrowColor" | "disableAbsoluteTimepickerInRelative" | "rangePickerInputProps" | "allowedFilterTypes" | "renderPopoverTrigger" | "isTruncateMs" | "filterValueSelectionModes"> & {
30
+ declare const _default: React.ForwardRefExoticComponent<Pick<DateRangePickerProps, "readOnly" | "texts" | "valueFormatOptions" | "format" | "value" | "onVisibleChange" | "rangeUnits" | "containerClass" | "disableDefaultTexts" | "disabledDate" | "forceAdjacentMonths" | "forceAbsolute" | "footerProps" | "onValueChange" | "onApply" | "onFilterSave" | "popoverProps" | "popoverTrigger" | "ranges" | "relativeFuture" | "relativePast" | "relativeModes" | "savedFilters" | "showRelativePicker" | "showFilter" | "showTime" | "showCustomRange" | "showNowButton" | "validate" | "valueTransformer" | "arrowColor" | "disableAbsoluteTimepickerInRelative" | "rangePickerInputProps" | "allowedFilterTypes" | "renderPopoverTrigger" | "isTruncateMs" | "filterValueSelectionModes" | "filterRangeDisplayMode"> & {
31
31
  forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
32
32
  } & React.RefAttributes<any>> & {
33
33
  WrappedComponent: React.ComponentType<DateRangePickerProps>;
@@ -330,6 +330,7 @@ export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
330
330
  _this$props4$disableA = _this$props4.disableAbsoluteTimepickerInRelative,
331
331
  disableAbsoluteTimepickerInRelative = _this$props4$disableA === void 0 ? false : _this$props4$disableA,
332
332
  filterValueSelectionModes = _this$props4.filterValueSelectionModes,
333
+ filterRangeDisplayMode = _this$props4.filterRangeDisplayMode,
333
334
  _this$props4$showNowB = _this$props4.showNowButton,
334
335
  showNowButton = _this$props4$showNowB === void 0 ? true : _this$props4$showNowB;
335
336
  var _this$state3 = this.state,
@@ -356,7 +357,8 @@ export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
356
357
  savedFilters: savedFilters,
357
358
  allowedFilterTypes: allowedFilterTypes,
358
359
  onFilterSave: onFilterSave,
359
- valueSelectionModes: filterValueSelectionModes
360
+ valueSelectionModes: filterValueSelectionModes,
361
+ rangeDisplayMode: filterRangeDisplayMode
360
362
  }));
361
363
  var validator = validate ? validate(value) : {
362
364
  valid: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-date-range-picker",
3
- "version": "0.23.1",
3
+ "version": "0.24.1",
4
4
  "description": "Date-Range-Picker UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -33,39 +33,44 @@
33
33
  "types": "dist/index.d.ts",
34
34
  "dependencies": {
35
35
  "@date-fns/upgrade": "^1.0.3",
36
- "@synerise/ds-badge": "^0.6.33",
37
- "@synerise/ds-button": "^0.18.0",
38
- "@synerise/ds-button-group": "^0.6.28",
39
- "@synerise/ds-data-format": "^0.4.1",
40
- "@synerise/ds-date-picker": "^0.10.11",
41
- "@synerise/ds-dropdown": "^0.17.74",
42
- "@synerise/ds-icon": "^0.58.0",
43
- "@synerise/ds-inline-edit": "^0.6.73",
44
- "@synerise/ds-input": "^0.18.48",
45
- "@synerise/ds-input-number": "^0.8.21",
46
- "@synerise/ds-manageable-list": "^0.26.2",
47
- "@synerise/ds-menu": "^0.17.16",
48
- "@synerise/ds-scrollbar": "^0.6.5",
49
- "@synerise/ds-select": "^0.15.13",
50
- "@synerise/ds-tags": "^0.8.8",
51
- "@synerise/ds-time-picker": "^0.8.2",
52
- "@synerise/ds-tooltip": "^0.14.2",
53
- "@synerise/ds-utils": "^0.19.0",
36
+ "@synerise/ds-badge": "^0.6.35",
37
+ "@synerise/ds-button": "^0.18.1",
38
+ "@synerise/ds-button-group": "^0.6.29",
39
+ "@synerise/ds-data-format": "^0.4.2",
40
+ "@synerise/ds-date-picker": "^0.10.13",
41
+ "@synerise/ds-dropdown": "^0.17.76",
42
+ "@synerise/ds-icon": "^0.58.1",
43
+ "@synerise/ds-inline-edit": "^0.6.75",
44
+ "@synerise/ds-input": "^0.18.50",
45
+ "@synerise/ds-input-number": "^0.8.23",
46
+ "@synerise/ds-manageable-list": "^0.26.4",
47
+ "@synerise/ds-menu": "^0.17.17",
48
+ "@synerise/ds-scrollbar": "^0.6.6",
49
+ "@synerise/ds-select": "^0.15.15",
50
+ "@synerise/ds-slider": "^0.12.25",
51
+ "@synerise/ds-tags": "^0.8.10",
52
+ "@synerise/ds-time-picker": "^0.8.4",
53
+ "@synerise/ds-tooltip": "^0.14.3",
54
+ "@synerise/ds-utils": "^0.24.15",
54
55
  "date-fns": "^2.16.1",
55
56
  "dayjs": "^1.8.35",
56
57
  "lodash": "^4.17.20",
57
58
  "ramda": "^0.27.0",
58
59
  "react-day-picker": "^7.4.8",
60
+ "react-intl": "3.12.0",
59
61
  "uuid": "^8.3.2"
60
62
  },
61
63
  "peerDependencies": {
62
64
  "@synerise/ds-core": "*",
63
- "antd": "^4",
65
+ "antd": "4.7.0",
64
66
  "react": ">=16.9.0 < 17.0.0",
65
67
  "styled-components": "5.0.1"
66
68
  },
67
69
  "devDependencies": {
70
+ "@testing-library/jest-dom": "5.1.1",
71
+ "@testing-library/react": "10.0.1",
72
+ "@testing-library/user-event": "^10.3.1",
68
73
  "@types/ramda": "^0.27.14"
69
74
  },
70
- "gitHead": "9d424b025fe368bbf3beccea2102f000f4d7e82c"
75
+ "gitHead": "a2b1a3a78d87edfdbe97ae2f66573f4736f30e8b"
71
76
  }