@synerise/ds-date-range-picker 0.15.6 → 0.17.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 CHANGED
@@ -3,6 +3,37 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.17.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.16.0...@synerise/ds-date-range-picker@0.17.0) (2022-09-21)
7
+
8
+
9
+ ### Features
10
+
11
+ * **menu:** add information card tooltip ([ded0bf1](https://github.com/Synerise/synerise-design/commit/ded0bf1b58e68f7061630810925669cb0fdad560))
12
+
13
+
14
+
15
+
16
+
17
+ # [0.16.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.15.6...@synerise/ds-date-range-picker@0.16.0) (2022-09-13)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **date-picker:** fix time picker updating ([f47725d](https://github.com/Synerise/synerise-design/commit/f47725da087b0381f6a7578b4e4952d27becaefd))
23
+ * **time-picker:** fix scroll picker issue ([6ab6f23](https://github.com/Synerise/synerise-design/commit/6ab6f23e50cc063494afb22496b286672f29ff35))
24
+ * **time-picker:** fixes for clear and hour select ([a060150](https://github.com/Synerise/synerise-design/commit/a0601503a9bfea4930c5b940d6f78e13599555a8))
25
+
26
+
27
+ ### Features
28
+
29
+ * **date-picker:** fix start end valid logic ([171cb59](https://github.com/Synerise/synerise-design/commit/171cb5919a1e9da49fee06dbecd15c925c995808))
30
+ * **date-picker:** proper updating with clear action ([6ac56e4](https://github.com/Synerise/synerise-design/commit/6ac56e4e0b62c5786015a6f5379da0e4c181dda9))
31
+ * **date-picker:** test commit ([477311a](https://github.com/Synerise/synerise-design/commit/477311a51baf2561d189585cab03a0d2b168fbd9))
32
+
33
+
34
+
35
+
36
+
6
37
  ## [0.15.6](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.15.5...@synerise/ds-date-range-picker@0.15.6) (2022-09-08)
7
38
 
8
39
  **Note:** Version bump only for package @synerise/ds-date-range-picker
@@ -82,20 +82,22 @@ var Weekly = function Weekly(_ref) {
82
82
  }, [value, activeDays, removeEmptyEntries]);
83
83
  var handleDayTimeChange = React.useCallback(function (dayValue, dayKey, guid) {
84
84
  var updatedSchedule = value;
85
+ var start = dayValue[0],
86
+ end = dayValue[1];
85
87
 
86
88
  if (dayKey instanceof Array) {
87
89
  dayKey.forEach(function (day) {
88
90
  updatedSchedule[guid][day] = _objectSpread({}, value[guid][day], {
89
91
  restricted: true,
90
- start: dayjs(dayValue[0]).format(DEFAULT_TIME_FORMAT),
91
- stop: dayjs(dayValue[1]).format(DEFAULT_TIME_FORMAT)
92
+ start: start ? dayjs(start).format(DEFAULT_TIME_FORMAT) : undefined,
93
+ stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined
92
94
  });
93
95
  });
94
96
  } else {
95
97
  updatedSchedule[guid][dayKey] = _objectSpread({}, value[guid][dayKey], {
96
98
  restricted: true,
97
- start: dayjs(dayValue[0]).format(DEFAULT_TIME_FORMAT),
98
- stop: dayjs(dayValue[1]).format(DEFAULT_TIME_FORMAT)
99
+ start: start ? dayjs(start).format(DEFAULT_TIME_FORMAT) : undefined,
100
+ stop: end ? dayjs(end).format(DEFAULT_TIME_FORMAT) : undefined
99
101
  });
100
102
  }
101
103
 
@@ -36,9 +36,6 @@ var RangeForm = function RangeForm(_ref) {
36
36
  end = _React$useState2[0],
37
37
  setEnd = _React$useState2[1];
38
38
 
39
- var areStartAndEndValid = React.useMemo(function () {
40
- return !!start && !!end;
41
- }, [start, end]);
42
39
  var getPopupContainer = React.useCallback(function (node) {
43
40
  return node.parentElement != null ? node.parentElement : document.body;
44
41
  }, []);
@@ -51,7 +48,9 @@ var RangeForm = function RangeForm(_ref) {
51
48
  disabled: disabled,
52
49
  clearTooltip: texts == null ? void 0 : texts.clear,
53
50
  onChange: function onChange(date) {
54
- date && onExactHourSelect(date);
51
+ onExactHourSelect(date);
52
+ setStart(date);
53
+ setEnd(date);
55
54
  },
56
55
  value: start,
57
56
  dropdownProps: {
@@ -68,31 +67,31 @@ var RangeForm = function RangeForm(_ref) {
68
67
  clearTooltip: texts == null ? void 0 : texts.clear,
69
68
  onChange: function onChange(date) {
70
69
  setStart(date);
71
- date && onStartChange(date);
70
+ onStartChange(date);
72
71
  },
73
72
  value: start,
74
73
  dropdownProps: {
75
74
  getPopupContainer: getPopupContainer
76
75
  },
77
- disabledHours: areStartAndEndValid ? getDisabledTimeOptions(start, 'HOURS', null, end) : [],
78
- disabledMinutes: areStartAndEndValid ? getDisabledTimeOptions(start, 'MINUTES', null, end) : [],
79
- disabledSeconds: areStartAndEndValid ? getDisabledTimeOptions(start, 'SECONDS', null, end) : []
76
+ disabledHours: getDisabledTimeOptions(start || end, 'HOURS', null, end),
77
+ disabledMinutes: getDisabledTimeOptions(start || end, 'MINUTES', null, end),
78
+ disabledSeconds: getDisabledTimeOptions(start || end, 'SECONDS', null, end)
80
79
  }, timePickerProps)), /*#__PURE__*/React.createElement(S.Separator, null, "-"), /*#__PURE__*/React.createElement(TimePicker, _extends({
81
80
  disabled: disabled,
82
81
  clearTooltip: texts == null ? void 0 : texts.clear,
83
82
  onChange: function onChange(date) {
84
83
  setEnd(date);
85
- date && onEndChange(date);
84
+ onEndChange(date);
86
85
  },
87
86
  value: end,
88
87
  dropdownProps: {
89
88
  getPopupContainer: getPopupContainer
90
89
  },
91
- disabledHours: areStartAndEndValid ? getDisabledTimeOptions(end, 'HOURS', start, null) : [],
92
- disabledMinutes: areStartAndEndValid ? getDisabledTimeOptions(end, 'MINUTES', start, null) : [],
93
- disabledSeconds: areStartAndEndValid ? getDisabledTimeOptions(end, 'SECONDS', start, null) : []
90
+ disabledHours: getDisabledTimeOptions(end || start, 'HOURS', start, null),
91
+ disabledMinutes: getDisabledTimeOptions(end || start, 'MINUTES', start, null),
92
+ disabledSeconds: getDisabledTimeOptions(end || start, 'SECONDS', start, null)
94
93
  }, timePickerProps)));
95
- }, [areStartAndEndValid, start, end, onStartChange, onEndChange, getPopupContainer, texts, timePickerProps, disabled]);
94
+ }, [start, end, onStartChange, onEndChange, setStart, setEnd, getPopupContainer, texts, timePickerProps, disabled]);
96
95
  var limitModeSelect = React.useMemo(function () {
97
96
  return valueSelectionModes.length > 1 ? /*#__PURE__*/React.createElement(Select, {
98
97
  value: mode,
@@ -9,9 +9,9 @@ export declare type RangeFormProps = {
9
9
  title?: React.ReactNode;
10
10
  startDate: Date | undefined;
11
11
  endDate: Date | undefined;
12
- onStartChange: (value: Date) => void;
13
- onEndChange: (value: Date) => void;
14
- onExactHourSelect: (value: Date) => void;
12
+ onStartChange: (value?: Date) => void;
13
+ onEndChange: (value?: Date) => void;
14
+ onExactHourSelect: (value?: Date) => void;
15
15
  onRangeDelete?: () => void;
16
16
  valueSelectionModes: DateLimitMode[];
17
17
  } & WithTranslations & WithDisabledProp & Pick<RangeFormContainerProps, 'timePickerProps'>;
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
- import { RangeFormContainerProps } from './RangeFormContainer.types';
2
+ import type { RangeFormContainerProps } from './RangeFormContainer.types';
3
3
  declare const RangeFormContainer: React.FC<RangeFormContainerProps>;
4
4
  export default RangeFormContainer;
@@ -60,6 +60,33 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
60
60
  React.useEffect(function () {
61
61
  setMode((dayValue == null ? void 0 : dayValue.mode) || valueSelectionModes[0] || DEFAULT_LIMIT_MODE);
62
62
  }, [dayValue, valueSelectionModes]);
63
+ var onStartChange = React.useCallback(function (start) {
64
+ var end = dayValue.stop;
65
+ var value = [start, end ? getDateFromDayValue(end, timeFormat) : undefined];
66
+
67
+ if (activeDays.length > 1) {
68
+ onMultipleDayTimeChange(value);
69
+ } else {
70
+ onDayTimeChange(value, dayKeys);
71
+ }
72
+ }, [activeDays, onMultipleDayTimeChange, onDayTimeChange, timeFormat, dayValue, dayKeys]);
73
+ var onEndChange = React.useCallback(function (end) {
74
+ var start = dayValue.start;
75
+ var value = [start ? getDateFromDayValue(dayValue.start, timeFormat) : undefined, end];
76
+
77
+ if (activeDays.length > 1) {
78
+ onMultipleDayTimeChange(value);
79
+ } else {
80
+ onDayTimeChange(value, dayKeys);
81
+ }
82
+ }, [activeDays, onMultipleDayTimeChange, onDayTimeChange, timeFormat, dayValue, dayKeys]);
83
+ var onExactHourSelect = React.useCallback(function (value) {
84
+ if (activeDays.length > 1) {
85
+ onMultipleDayTimeChange([value, value]);
86
+ } else {
87
+ onDayTimeChange([value, value], dayKeys);
88
+ }
89
+ }, [activeDays, onMultipleDayTimeChange, onDayTimeChange, dayKeys]);
63
90
  var rangeForm = React.useMemo(function () {
64
91
  return /*#__PURE__*/React.createElement(RangeForm, {
65
92
  disabled: disabled,
@@ -71,20 +98,14 @@ var RangeFormContainer = function RangeFormContainer(_ref) {
71
98
  mode: mode,
72
99
  startDate: dayValue != null && dayValue.start ? getDateFromDayValue(dayValue.start, timeFormat) : undefined,
73
100
  endDate: dayValue != null && dayValue.stop ? getDateFromDayValue(dayValue.stop, timeFormat) : undefined,
74
- onStartChange: function onStartChange(value) {
75
- return activeDays.length > 1 ? onMultipleDayTimeChange([value, getDateFromDayValue(dayValue.stop, timeFormat)]) : onDayTimeChange([value, getDateFromDayValue(dayValue.stop, timeFormat)], dayKeys);
76
- },
77
- onEndChange: function onEndChange(value) {
78
- return activeDays.length > 1 ? onMultipleDayTimeChange([getDateFromDayValue(dayValue.start, timeFormat), value]) : onDayTimeChange([getDateFromDayValue(dayValue.start, timeFormat), value], dayKeys);
79
- },
80
- onExactHourSelect: function onExactHourSelect(value) {
81
- activeDays.length > 1 ? onMultipleDayTimeChange([value, value]) : onDayTimeChange([value, value], dayKeys);
82
- },
101
+ onStartChange: onStartChange,
102
+ onEndChange: onEndChange,
103
+ onExactHourSelect: onExactHourSelect,
83
104
  onRangeDelete: onRangeDelete,
84
105
  valueSelectionModes: valueSelectionModes,
85
106
  timePickerProps: timePickerProps
86
107
  });
87
- }, [timeFormat, valueSelectionModes, handleModeChange, activeDays, onMultipleDayTimeChange, onDayTimeChange, mode, disabled, dayValue, dayKeys, onRangeDelete, texts, timePickerProps]);
108
+ }, [timeFormat, valueSelectionModes, handleModeChange, mode, disabled, dayValue, onRangeDelete, texts, timePickerProps, onStartChange, onEndChange, onExactHourSelect]);
88
109
  var suffix = React.useMemo(function () {
89
110
  return renderSuffix ? renderSuffix() : /*#__PURE__*/React.createElement(RangeActions, {
90
111
  onRangeClear: onRangeClear,
@@ -3,14 +3,15 @@ import { TimePickerProps } from '@synerise/ds-time-picker/dist/TimePicker.types'
3
3
  import { DayKey, RangeActions, TimeWindowProps, TimeWindowTexts } from '../TimeWindow.types';
4
4
  import { FilterDefinition, WithDisabledProp } from '../../../RangeFilter.types';
5
5
  import { DateLimitMode } from './RangeForm/RangeForm.types';
6
+ export declare type DateValue = [Date | undefined, Date | undefined];
6
7
  export declare type RangeFormContainerProps = {
7
8
  activeDays: DayKey[];
8
9
  dayKeys: DayKey | DayKey[];
9
10
  getDayLabel: (dayKey: DayKey, long?: boolean) => string | object | React.ReactNode;
10
11
  getDayValue: (dayKey: DayKey) => Partial<FilterDefinition>;
11
- onMultipleDayTimeChange: (value: [Date, Date]) => void;
12
+ onMultipleDayTimeChange: (value: DateValue) => void;
13
+ onDayTimeChange: (value: DateValue, dayKey: DayKey) => void;
12
14
  onModeChange?: (mode: DateLimitMode) => void;
13
- onDayTimeChange: (value: [Date, Date], dayKey: DayKey) => void;
14
15
  onRangeDelete?: () => void;
15
16
  valueSelectionModes: DateLimitMode[];
16
17
  texts: Partial<TimeWindowTexts>;
@@ -1,5 +1,5 @@
1
1
  import { DateLimitMode } from './RangeFormContainer/RangeForm/RangeForm.types';
2
2
  import { FilterDefinition } from '../../RangeFilter.types';
3
- export declare const getDateFromDayValue: (dayValue: string, hourTimeFormat?: string | undefined) => Date;
3
+ export declare const getDateFromDayValue: (dayValue?: string | undefined, hourTimeFormat?: string | undefined) => Date;
4
4
  export declare const reverseRange: (inputRange: number[], groupItem: number) => number[];
5
5
  export declare const getDefaultFilterForLimitMode: (mode: DateLimitMode) => Partial<FilterDefinition>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-date-range-picker",
3
- "version": "0.15.6",
3
+ "version": "0.17.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.9",
37
- "@synerise/ds-date-picker": "^0.6.38",
37
+ "@synerise/ds-date-picker": "^0.6.40",
38
38
  "@synerise/ds-icon": "^0.51.0",
39
- "@synerise/ds-manageable-list": "^0.23.34",
40
- "@synerise/ds-time-picker": "^0.6.37",
39
+ "@synerise/ds-manageable-list": "^0.23.35",
40
+ "@synerise/ds-time-picker": "^0.6.39",
41
41
  "@synerise/ds-tooltip": "^0.11.17",
42
42
  "@synerise/ds-utils": "^0.19.0",
43
43
  "date-fns": "^2.16.1",
@@ -54,5 +54,5 @@
54
54
  "devDependencies": {
55
55
  "@types/ramda": "^0.27.14"
56
56
  },
57
- "gitHead": "fa548181a583df5c724b9ed0ebcd3141efe6e512"
57
+ "gitHead": "aef9ed09c6b307baccd74eb6a15d3134a6c7defe"
58
58
  }