@synerise/ds-time-picker 0.6.18 → 0.6.19

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,18 @@
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.6.19](https://github.com/Synerise/synerise-design/compare/@synerise/ds-time-picker@0.6.18...@synerise/ds-time-picker@0.6.19) (2022-06-23)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **time-picker:** load initial values into the internal state ([7905253](https://github.com/Synerise/synerise-design/commit/7905253a7cf2e3bcbf4ca3ac1efb02fe72bc0aaf))
12
+ * **time-picker:** simplify selecting time ([6ee5050](https://github.com/Synerise/synerise-design/commit/6ee50508f4fee04cefd70c11dd9c0625cbe01092))
13
+
14
+
15
+
16
+
17
+
6
18
  ## [0.6.18](https://github.com/Synerise/synerise-design/compare/@synerise/ds-time-picker@0.6.17...@synerise/ds-time-picker@0.6.18) (2022-06-15)
7
19
 
8
20
 
@@ -7,7 +7,6 @@ import Icon, { ClockM, Close3S } from '@synerise/ds-icon';
7
7
  import Dropdown from '@synerise/ds-dropdown';
8
8
  import Tooltip from '@synerise/ds-tooltip/dist/Tooltip';
9
9
  import { FormattedMessage, injectIntl } from 'react-intl';
10
- import { useMemo } from 'react';
11
10
  import Unit from './Unit';
12
11
  import * as S from './TimePicker.styles';
13
12
  var defaultUnits = ['hour', 'minute', 'second'];
@@ -53,25 +52,9 @@ var TimePicker = function TimePicker(_ref) {
53
52
  open = _React$useState[0],
54
53
  setOpen = _React$useState[1];
55
54
 
56
- var _React$useState2 = React.useState(value),
57
- localValue = _React$useState2[0],
58
- setLocalValue = _React$useState2[1];
59
-
60
- var _React$useState3 = React.useState(defaultAM ? CLOCK_MODES.AM : CLOCK_MODES.PM),
61
- clockMode = _React$useState3[0],
62
- setClockMode = _React$useState3[1];
63
-
64
- var _React$useState4 = React.useState(undefined),
65
- hour = _React$useState4[0],
66
- setHour = _React$useState4[1];
67
-
68
- var _React$useState5 = React.useState(undefined),
69
- minute = _React$useState5[0],
70
- setMinute = _React$useState5[1];
71
-
72
- var _React$useState6 = React.useState(undefined),
73
- second = _React$useState6[0],
74
- setSecond = _React$useState6[1];
55
+ var _React$useState2 = React.useState(defaultAM ? CLOCK_MODES.AM : CLOCK_MODES.PM),
56
+ clockMode = _React$useState2[0],
57
+ setClockMode = _React$useState2[1];
75
58
 
76
59
  var getTimeString = function getTimeString(date) {
77
60
  return dayjs(date).format(timeFormat);
@@ -79,16 +62,6 @@ var TimePicker = function TimePicker(_ref) {
79
62
  // @ts-ignore
80
63
 
81
64
 
82
- React.useEffect(function () {
83
- if (hour !== undefined && minute !== undefined && second !== undefined) {
84
- var newDate = dayjs().hour(hour).minute(minute).second(second).toDate();
85
- setLocalValue(newDate);
86
- onChange && onChange(newDate, getTimeString(newDate));
87
- } // eslint-disable-next-line
88
- // @ts-ignore
89
-
90
- }, [hour, minute, second]); // eslint-disable-line react-hooks/exhaustive-deps
91
-
92
65
  var unitConfig = [{
93
66
  unit: 'hour',
94
67
  options: use12HourClock ? range(12) : range(24),
@@ -114,21 +87,25 @@ var TimePicker = function TimePicker(_ref) {
114
87
 
115
88
  var onVisibleChange = function onVisibleChange(visible) {
116
89
  setOpen(visible);
117
- !visible && onChange && onChange(localValue, getTimeString(localValue));
90
+ !visible && onChange && onChange(value, getTimeString(value));
118
91
  };
119
92
 
120
93
  var handleChange = function handleChange(unit, newValue) {
121
- if (unit === 'hour') {
122
- setHour(newValue);
123
- }
124
-
125
- if (unit === 'minute') {
126
- setMinute(newValue);
94
+ var wasUndefined = value === undefined;
95
+ var dateBuilder = dayjs(value);
96
+ dateBuilder = dateBuilder[unit](newValue);
97
+
98
+ if (wasUndefined) {
99
+ // set remaining time fields to 0, HH:00:00, 00:mm:00, 00:00:ss
100
+ unitConfig.filter(function (u) {
101
+ return u.unit !== unit;
102
+ }).forEach(function (unitDef) {
103
+ return dateBuilder = dateBuilder[unitDef.unit](0);
104
+ });
127
105
  }
128
106
 
129
- if (unit === 'second') {
130
- setSecond(newValue);
131
- }
107
+ var newDate = dateBuilder.toDate();
108
+ onChange && onChange(newDate, getTimeString(newDate));
132
109
  };
133
110
 
134
111
  var renderClockSwitch = function renderClockSwitch() {
@@ -144,9 +121,6 @@ var TimePicker = function TimePicker(_ref) {
144
121
  }));
145
122
  };
146
123
 
147
- var timeValue = useMemo(function () {
148
- return localValue || dayjs().hour(hour || 0).minute(minute || 0).second(second || 0).toDate();
149
- }, [localValue, hour, minute, second]);
150
124
  var overlay = /*#__PURE__*/React.createElement(S.OverlayContainer, {
151
125
  "data-testid": "tp-overlay-container",
152
126
  className: overlayClassName
@@ -154,21 +128,18 @@ var TimePicker = function TimePicker(_ref) {
154
128
  return /*#__PURE__*/React.createElement(React.Fragment, {
155
129
  key: u.unit
156
130
  }, /*#__PURE__*/React.createElement(Unit, _extends({}, u, {
157
- value: timeValue,
131
+ value: value,
158
132
  onSelect: function onSelect(newValue) {
159
133
  return handleChange(u.unit, newValue);
160
134
  }
161
135
  })), (index !== unitsToRender.length - 1 || !!use12HourClock) && /*#__PURE__*/React.createElement(S.UnitSeperator, null));
162
136
  }), use12HourClock && renderClockSwitch());
137
+ var localValue = value;
163
138
  var dateString = localValue && getTimeString(localValue);
164
139
  var clear = React.useCallback(function () {
165
- setLocalValue(undefined);
166
140
  setOpen(false);
167
141
  onChange && onChange(undefined, '');
168
- setHour(undefined);
169
- setMinute(undefined);
170
- setSecond(undefined);
171
- }, [setOpen, setLocalValue, onChange]);
142
+ }, [setOpen, onChange]);
172
143
  var timePickerIcon = React.useMemo(function () {
173
144
  return (alwaysOpen || open) && dateString ? /*#__PURE__*/React.createElement(S.ClearIcon, {
174
145
  component: /*#__PURE__*/React.createElement(Tooltip, {
@@ -184,14 +155,14 @@ var TimePicker = function TimePicker(_ref) {
184
155
  });
185
156
  }, [open, dateString, clear, clearTooltip, alwaysOpen, disabled]);
186
157
  var placeholderValue = React.useMemo(function () {
187
- if (hour !== undefined || minute !== undefined || second !== undefined) {
188
- return dayjs().hour(hour || 0).minute(minute || 0).second(second || 0).format('HH:mm:ss');
158
+ if (value) {
159
+ return dayjs(value).format('HH:mm:ss');
189
160
  }
190
161
 
191
162
  return placeholder || intl.formatMessage({
192
163
  id: 'DS.TIME-PICKER.PLACEHOLDER'
193
164
  });
194
- }, [placeholder, intl, hour, minute, second]);
165
+ }, [placeholder, intl, value]);
195
166
 
196
167
  if (raw) {
197
168
  return overlay;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-time-picker",
3
- "version": "0.6.18",
3
+ "version": "0.6.19",
4
4
  "description": "TimePicker UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -47,5 +47,5 @@
47
47
  "devDependencies": {
48
48
  "@types/debounce": "^1.2.0"
49
49
  },
50
- "gitHead": "d787395998e479858cb58f6d56555e4c51fe45d5"
50
+ "gitHead": "b2b8c9f85179763159e3c83801b568943f132741"
51
51
  }