@synerise/ds-time-picker 0.6.58 → 0.7.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,35 @@
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.7.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-time-picker@0.7.0...@synerise/ds-time-picker@0.7.1) (2023-03-21)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **data-format:** after review changes ([60ca685](https://github.com/Synerise/synerise-design/commit/60ca68551cf3724aebe4c5787bc0d02bb58ac1bf))
12
+ * **data-format:** data format usage fixes ([fef43fc](https://github.com/Synerise/synerise-design/commit/fef43fce8a04a28caddbb7b4dbd68126013ee58d))
13
+ * **time-picker:** time picker data format usage fix ([538edd2](https://github.com/Synerise/synerise-design/commit/538edd231839bc4e9d5259302a385189b492c48f))
14
+
15
+
16
+
17
+
18
+
19
+ # [0.7.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-time-picker@0.6.58...@synerise/ds-time-picker@0.7.0) (2023-03-20)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **data-format:** import types fix ([c3d20f2](https://github.com/Synerise/synerise-design/commit/c3d20f2bff43ce4605224c96b824a6f91662d961))
25
+
26
+
27
+ ### Features
28
+
29
+ * **data-format:** data format tools in pickers plus new tools ([c4adbfe](https://github.com/Synerise/synerise-design/commit/c4adbfe563af93f9daffc7e0b327098432c5e31e))
30
+
31
+
32
+
33
+
34
+
6
35
  ## [0.6.58](https://github.com/Synerise/synerise-design/compare/@synerise/ds-time-picker@0.6.57...@synerise/ds-time-picker@0.6.58) (2023-03-08)
7
36
 
8
37
  **Note:** Version bump only for package @synerise/ds-time-picker
@@ -1,10 +1,6 @@
1
1
  import * as React from 'react';
2
- import { TimePickerProps } from './TimePicker.types';
3
- export declare const CLOCK_MODES: {
4
- AM: string;
5
- PM: string;
6
- };
7
- declare const _default: React.ForwardRefExoticComponent<Pick<TimePickerProps, "className" | "onChange" | "placeholder" | "disabled" | "value" | "trigger" | "placement" | "overlayClassName" | "units" | "defaultOpen" | "defaultAM" | "containerStyle" | "timeFormat" | "use12HourClock" | "alwaysOpen" | "dropdownProps" | "inputProps" | "disabledHours" | "disabledMinutes" | "disabledSeconds" | "clearTooltip" | "raw" | "onClockModeChange"> & {
2
+ import { TimePickerProps } from './types/TimePicker.types';
3
+ declare const _default: React.ForwardRefExoticComponent<Pick<TimePickerProps, "className" | "onChange" | "placeholder" | "disabled" | "value" | "trigger" | "placement" | "overlayClassName" | "use12HourClock" | "units" | "defaultOpen" | "containerStyle" | "timeFormat" | "valueFormatOptions" | "alwaysOpen" | "dropdownProps" | "inputProps" | "disabledHours" | "disabledMinutes" | "disabledSeconds" | "clearTooltip" | "raw" | "onClockModeChange"> & {
8
4
  forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
9
5
  } & React.RefAttributes<any>> & {
10
6
  WrappedComponent: React.ComponentType<TimePickerProps>;
@@ -1,19 +1,26 @@
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
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+
7
+ 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; }
8
+
3
9
  import * as React from 'react';
4
- import dayjs from 'dayjs';
10
+ import { FormattedMessage, injectIntl } from 'react-intl';
5
11
  import { range } from 'lodash';
12
+ import dayjs from 'dayjs';
13
+ import customParseFormatPlugin from 'dayjs/plugin/customParseFormat';
6
14
  import Icon, { ClockM, Close3S } from '@synerise/ds-icon';
7
15
  import Dropdown from '@synerise/ds-dropdown';
8
16
  import Tooltip from '@synerise/ds-tooltip/dist/Tooltip';
9
- import { FormattedMessage, injectIntl } from 'react-intl';
17
+ import { useDataFormat } from '@synerise/ds-data-format';
10
18
  import Unit from './Unit';
11
19
  import * as S from './TimePicker.styles';
12
- var defaultUnits = ['hour', 'minute', 'second'];
13
- export var CLOCK_MODES = {
14
- AM: 'AM',
15
- PM: 'PM'
16
- };
20
+ import { handleTimeChange } from './utils/timePicker.utils';
21
+ import { AM, CLOCK_MODES, HOUR, HOUR_12, MINUTE, PM, SECOND } from './constants/timePicker.constants';
22
+ dayjs.extend(customParseFormatPlugin);
23
+ var defaultUnits = [HOUR, MINUTE, SECOND];
17
24
 
18
25
  var TimePicker = function TimePicker(_ref) {
19
26
  var placement = _ref.placement,
@@ -22,11 +29,11 @@ var TimePicker = function TimePicker(_ref) {
22
29
  value = _ref.value,
23
30
  units = _ref.units,
24
31
  defaultOpen = _ref.defaultOpen,
25
- defaultAM = _ref.defaultAM,
26
32
  onChange = _ref.onChange,
27
33
  _ref$containerStyle = _ref.containerStyle,
28
34
  containerStyle = _ref$containerStyle === void 0 ? {} : _ref$containerStyle,
29
35
  timeFormat = _ref.timeFormat,
36
+ valueFormatOptions = _ref.valueFormatOptions,
30
37
  use12HourClock = _ref.use12HourClock,
31
38
  alwaysOpen = _ref.alwaysOpen,
32
39
  _ref$dropdownProps = _ref.dropdownProps,
@@ -48,35 +55,55 @@ var TimePicker = function TimePicker(_ref) {
48
55
  onClockModeChange = _ref.onClockModeChange,
49
56
  intl = _ref.intl;
50
57
 
58
+ var _useDataFormat = useDataFormat(),
59
+ formatValue = _useDataFormat.formatValue,
60
+ is12HoursClockFromDataFormat = _useDataFormat.is12HoursClock;
61
+
51
62
  var _React$useState = React.useState(defaultOpen || false),
52
63
  open = _React$useState[0],
53
64
  setOpen = _React$useState[1];
54
65
 
55
- var _React$useState2 = React.useState(defaultAM ? CLOCK_MODES.AM : CLOCK_MODES.PM),
66
+ var _React$useState2 = React.useState(function () {
67
+ var initialDate = dayjs(value);
68
+ var initialHour = initialDate.get(HOUR);
69
+ return initialHour >= HOUR_12 ? PM : AM;
70
+ }),
56
71
  clockMode = _React$useState2[0],
57
72
  setClockMode = _React$useState2[1];
58
73
 
59
- var getTimeString = function getTimeString(date) {
60
- return dayjs(date).format(timeFormat);
61
- }; // eslint-disable-next-line
62
- // @ts-ignore
63
-
74
+ var is12HourClock = React.useMemo(function () {
75
+ if (use12HourClock === undefined) return is12HoursClockFromDataFormat;
76
+ return use12HourClock;
77
+ }, [is12HoursClockFromDataFormat, use12HourClock]);
78
+ var timeFormatByClockMode = React.useMemo(function () {
79
+ return timeFormat != null ? timeFormat : is12HourClock ? 'hh:mm:ss A' : 'HH:mm:ss';
80
+ }, [timeFormat, is12HourClock]);
81
+ var getTimeString = React.useCallback(function (date) {
82
+ if (timeFormat) {
83
+ return dayjs(date).format(timeFormatByClockMode);
84
+ }
64
85
 
86
+ return formatValue(date, _objectSpread({
87
+ targetFormat: 'time',
88
+ second: 'numeric'
89
+ }, valueFormatOptions));
90
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
91
+ [timeFormat, timeFormatByClockMode, formatValue]);
65
92
  var unitConfig = [{
66
- unit: 'hour',
67
- options: use12HourClock ? range(12) : range(24),
93
+ unit: HOUR,
94
+ options: is12HourClock ? range(1, 13) : range(24),
68
95
  disabled: disabledHours,
69
96
  insertSeperator: true
70
97
  }, {
71
- unit: 'minute',
98
+ unit: MINUTE,
72
99
  options: range(60),
73
100
  disabled: disabledMinutes,
74
101
  insertSeperator: true
75
102
  }, {
76
- unit: 'second',
103
+ unit: SECOND,
77
104
  options: range(60),
78
105
  disabled: disabledSeconds,
79
- insertSeperator: !!use12HourClock
106
+ insertSeperator: is12HourClock
80
107
  }];
81
108
  var unitsToRender = React.useMemo(function () {
82
109
  var availableUnits = units != null && units.length ? units : defaultUnits;
@@ -90,24 +117,19 @@ var TimePicker = function TimePicker(_ref) {
90
117
  !visible && onChange && onChange(value, getTimeString(value));
91
118
  };
92
119
 
93
- var handleChange = function handleChange(unit, 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
- });
120
+ var handleChange = function handleChange(unit, newValue, clockModeChanged) {
121
+ if (clockModeChanged === void 0) {
122
+ clockModeChanged = false;
105
123
  }
106
124
 
107
- var newDate = dateBuilder.toDate();
125
+ var newDate = handleTimeChange(value, unit, newValue, clockModeChanged, is12HourClock, clockMode, unitConfig);
108
126
  onChange && onChange(newDate, getTimeString(newDate));
109
127
  };
110
128
 
129
+ React.useEffect(function () {
130
+ handleChange(undefined, undefined, true); // eslint-disable-next-line react-hooks/exhaustive-deps
131
+ }, [clockMode]);
132
+
111
133
  var renderClockSwitch = function renderClockSwitch() {
112
134
  return /*#__PURE__*/React.createElement(S.Unit, null, Object.values(CLOCK_MODES).map(function (mode) {
113
135
  return /*#__PURE__*/React.createElement(S.Cell, {
@@ -131,9 +153,10 @@ var TimePicker = function TimePicker(_ref) {
131
153
  value: value,
132
154
  onSelect: function onSelect(newValue) {
133
155
  return handleChange(u.unit, newValue);
134
- }
135
- })), (index !== unitsToRender.length - 1 || !!use12HourClock) && /*#__PURE__*/React.createElement(S.UnitSeperator, null));
136
- }), use12HourClock && renderClockSwitch());
156
+ },
157
+ use12HourClock: is12HourClock
158
+ })), (index !== unitsToRender.length - 1 || is12HourClock) && /*#__PURE__*/React.createElement(S.UnitSeperator, null));
159
+ }), is12HourClock && renderClockSwitch());
137
160
  var localValue = value;
138
161
  var dateString = localValue && getTimeString(localValue);
139
162
  var clear = React.useCallback(function () {
@@ -156,13 +179,13 @@ var TimePicker = function TimePicker(_ref) {
156
179
  }, [open, dateString, clear, clearTooltip, alwaysOpen, disabled]);
157
180
  var placeholderValue = React.useMemo(function () {
158
181
  if (value) {
159
- return dayjs(value).format('HH:mm:ss');
182
+ return dayjs(value).format(timeFormatByClockMode);
160
183
  }
161
184
 
162
185
  return placeholder || intl.formatMessage({
163
186
  id: 'DS.TIME-PICKER.PLACEHOLDER'
164
187
  });
165
- }, [placeholder, intl, value]);
188
+ }, [placeholder, intl, value, timeFormatByClockMode]);
166
189
 
167
190
  if (raw) {
168
191
  return overlay;
@@ -183,7 +206,7 @@ var TimePicker = function TimePicker(_ref) {
183
206
  disabled: disabled,
184
207
  className: "" + (alwaysOpen || open ? 'active' : ''),
185
208
  "data-testid": "tp-input",
186
- value: use12HourClock && !!dateString ? dateString + " " + clockMode : dateString,
209
+ value: dateString,
187
210
  placeholder: placeholderValue,
188
211
  readOnly: true,
189
212
  icon1: timePickerIcon
@@ -192,7 +215,6 @@ var TimePicker = function TimePicker(_ref) {
192
215
 
193
216
  TimePicker.defaultProps = {
194
217
  placement: 'bottomLeft',
195
- timeFormat: 'HH:mm:ss',
196
218
  trigger: ['click'],
197
219
  units: defaultUnits
198
220
  };
@@ -25,7 +25,7 @@ export var UnitSeperator = styled.div.withConfig({
25
25
  export var CellText = styled(Label).withConfig({
26
26
  displayName: "TimePickerstyles__CellText",
27
27
  componentId: "yk19n0-4"
28
- })(["&&{width:18px;height:18px;text-align:center;color:", ";transition:color 0.3s;}"], function (props) {
28
+ })(["&&{width:22px;height:18px;text-align:center;color:", ";transition:color 0.3s;}"], function (props) {
29
29
  return props.theme.palette['grey-600'];
30
30
  });
31
31
  export var Cell = styled.button.withConfig({
package/dist/Unit.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare type UnitConfig = {
5
5
  options: number[];
6
6
  disabled?: number[];
7
7
  insertSeperator?: boolean;
8
+ use12HourClock?: boolean | undefined;
8
9
  };
9
10
  export declare type UnitProps = UnitConfig & {
10
11
  value?: Date;
package/dist/Unit.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as React from 'react';
2
- import dayjs from 'dayjs';
3
2
  import { debounce } from 'debounce';
4
3
  import Scrollbar from '@synerise/ds-scrollbar';
5
4
  import * as S from './TimePicker.styles';
5
+ import { getUnitSelectedNumber } from './utils/unit.utils';
6
6
  var CELL_HEIGHT = 32;
7
7
  var DEBOUNCE_DELAY = 150;
8
8
 
@@ -11,8 +11,11 @@ var Unit = function Unit(_ref) {
11
11
  disabled = _ref.disabled,
12
12
  value = _ref.value,
13
13
  unit = _ref.unit,
14
- onSelect = _ref.onSelect;
15
- var selected = value && dayjs(value).get(unit);
14
+ onSelect = _ref.onSelect,
15
+ use12HourClock = _ref.use12HourClock;
16
+ var selected = React.useMemo(function () {
17
+ return getUnitSelectedNumber(value, unit, use12HourClock);
18
+ }, [unit, use12HourClock, value]);
16
19
 
17
20
  var _React$useState = React.useState(false),
18
21
  forceUpdate = _React$useState[0],
@@ -0,0 +1,90 @@
1
+ import dayjs from 'dayjs';
2
+ import { ClockModes } from '../types/TimePicker.types';
3
+ export declare const HOUR: dayjs.UnitType;
4
+ export declare const MINUTE: dayjs.UnitType;
5
+ export declare const SECOND: dayjs.UnitType;
6
+ export declare const CLOCK_MODES: readonly ["AM", "PM"];
7
+ export declare const PM: ClockModes;
8
+ export declare const AM: ClockModes;
9
+ export declare const HOUR_12 = 12;
10
+ export declare const MAP_12_AM_TO_24_HOUR: {
11
+ 0: number;
12
+ 1: number;
13
+ 2: number;
14
+ 3: number;
15
+ 4: number;
16
+ 5: number;
17
+ 6: number;
18
+ 7: number;
19
+ 8: number;
20
+ 9: number;
21
+ 10: number;
22
+ 11: number;
23
+ 12: number;
24
+ 13: number;
25
+ 14: number;
26
+ 15: number;
27
+ 16: number;
28
+ 17: number;
29
+ 18: number;
30
+ 19: number;
31
+ 20: number;
32
+ 21: number;
33
+ 22: number;
34
+ 23: number;
35
+ 24: number;
36
+ };
37
+ export declare const MAP_12_PM_TO_24_HOUR: {
38
+ 0: number;
39
+ 1: number;
40
+ 2: number;
41
+ 3: number;
42
+ 4: number;
43
+ 5: number;
44
+ 6: number;
45
+ 7: number;
46
+ 8: number;
47
+ 9: number;
48
+ 10: number;
49
+ 11: number;
50
+ 12: number;
51
+ 13: number;
52
+ 14: number;
53
+ 15: number;
54
+ 16: number;
55
+ 17: number;
56
+ 18: number;
57
+ 19: number;
58
+ 20: number;
59
+ 21: number;
60
+ 22: number;
61
+ 23: number;
62
+ 24: number;
63
+ };
64
+ export declare const MAP_24_HOUR_TO_12: {
65
+ 0: number;
66
+ 1: number;
67
+ 2: number;
68
+ 3: number;
69
+ 4: number;
70
+ 5: number;
71
+ 6: number;
72
+ 7: number;
73
+ 8: number;
74
+ 9: number;
75
+ 10: number;
76
+ 11: number;
77
+ 12: number;
78
+ 13: number;
79
+ 14: number;
80
+ 15: number;
81
+ 16: number;
82
+ 17: number;
83
+ 18: number;
84
+ 19: number;
85
+ 20: number;
86
+ 21: number;
87
+ 22: number;
88
+ 23: number;
89
+ 24: number;
90
+ };
@@ -0,0 +1,88 @@
1
+ export var HOUR = 'hour';
2
+ export var MINUTE = 'minute';
3
+ export var SECOND = 'second';
4
+ export var CLOCK_MODES = ['AM', 'PM'];
5
+ export var PM = 'PM';
6
+ export var AM = 'AM';
7
+ export var HOUR_12 = 12;
8
+ export var MAP_12_AM_TO_24_HOUR = {
9
+ 0: 12,
10
+ 1: 1,
11
+ 2: 2,
12
+ 3: 3,
13
+ 4: 4,
14
+ 5: 5,
15
+ 6: 6,
16
+ 7: 7,
17
+ 8: 8,
18
+ 9: 9,
19
+ 10: 10,
20
+ 11: 11,
21
+ 12: 0,
22
+ 13: 1,
23
+ 14: 2,
24
+ 15: 3,
25
+ 16: 4,
26
+ 17: 5,
27
+ 18: 6,
28
+ 19: 7,
29
+ 20: 8,
30
+ 21: 9,
31
+ 22: 10,
32
+ 23: 11,
33
+ 24: 0
34
+ };
35
+ export var MAP_12_PM_TO_24_HOUR = {
36
+ 0: 12,
37
+ 1: 13,
38
+ 2: 14,
39
+ 3: 15,
40
+ 4: 16,
41
+ 5: 17,
42
+ 6: 18,
43
+ 7: 19,
44
+ 8: 20,
45
+ 9: 21,
46
+ 10: 22,
47
+ 11: 23,
48
+ 12: 12,
49
+ 13: 13,
50
+ 14: 14,
51
+ 15: 15,
52
+ 16: 16,
53
+ 17: 17,
54
+ 18: 18,
55
+ 19: 19,
56
+ 20: 20,
57
+ 21: 21,
58
+ 22: 22,
59
+ 23: 23,
60
+ 24: 24
61
+ };
62
+ export var MAP_24_HOUR_TO_12 = {
63
+ 0: 12,
64
+ 1: 1,
65
+ 2: 2,
66
+ 3: 3,
67
+ 4: 4,
68
+ 5: 5,
69
+ 6: 6,
70
+ 7: 7,
71
+ 8: 8,
72
+ 9: 9,
73
+ 10: 10,
74
+ 11: 11,
75
+ 12: 12,
76
+ 13: 1,
77
+ 14: 2,
78
+ 15: 3,
79
+ 16: 4,
80
+ 17: 5,
81
+ 18: 6,
82
+ 19: 7,
83
+ 20: 8,
84
+ 21: 9,
85
+ 22: 10,
86
+ 23: 11,
87
+ 24: 12
88
+ };
package/dist/index.d.ts CHANGED
@@ -1 +1,3 @@
1
1
  export { default } from './TimePicker';
2
+ export { AM, PM, HOUR_12, HOUR, CLOCK_MODES, MAP_12_AM_TO_24_HOUR, MAP_12_PM_TO_24_HOUR, MAP_24_HOUR_TO_12, } from './constants/timePicker.constants';
3
+ export type { ClockModes, TimePickerProps } from './types/TimePicker.types';
package/dist/index.js CHANGED
@@ -1 +1,2 @@
1
- export { default } from './TimePicker';
1
+ export { default } from './TimePicker';
2
+ export { AM, PM, HOUR_12, HOUR, CLOCK_MODES, MAP_12_AM_TO_24_HOUR, MAP_12_PM_TO_24_HOUR, MAP_24_HOUR_TO_12 } from './constants/timePicker.constants';
@@ -1,8 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import dayjs from 'dayjs';
3
3
  import { IntlShape } from 'react-intl';
4
- import { DropdownProps } from '@synerise/ds-dropdown/dist/Dropdown';
5
4
  import { InputProps } from 'antd/es/input/Input';
5
+ import { DropdownProps } from '@synerise/ds-dropdown/dist/Dropdown';
6
+ import { DateToFormatOptions } from '@synerise/ds-data-format';
7
+ import { CLOCK_MODES } from '../constants/timePicker.constants';
8
+ export declare type ClockModes = typeof CLOCK_MODES[number];
6
9
  export declare type TimePickerDisabledUnits = {
7
10
  disabledSeconds?: number[];
8
11
  disabledMinutes?: number[];
@@ -13,7 +16,6 @@ export declare type TimePickerProps = TimePickerDisabledUnits & {
13
16
  className?: string;
14
17
  clearTooltip?: string | React.ReactNode;
15
18
  containerStyle?: React.CSSProperties;
16
- defaultAM?: boolean;
17
19
  defaultOpen?: boolean;
18
20
  disabled?: boolean;
19
21
  dropdownProps?: Partial<DropdownProps>;
@@ -25,9 +27,16 @@ export declare type TimePickerProps = TimePickerDisabledUnits & {
25
27
  placeholder?: string;
26
28
  placement?: 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight';
27
29
  raw?: boolean;
30
+ /**
31
+ * @deprecated use `valueFormatOptions` instead
32
+ */
28
33
  timeFormat?: string;
29
34
  trigger?: ('click' | 'hover' | 'contextMenu')[];
30
35
  units?: dayjs.UnitType[];
36
+ /**
37
+ * @deprecated use DSProvider::dataFormatConfig instead
38
+ */
31
39
  use12HourClock?: boolean;
40
+ valueFormatOptions?: DateToFormatOptions;
32
41
  value?: Date;
33
42
  };
@@ -0,0 +1,3 @@
1
+ import dayjs from 'dayjs';
2
+ import { UnitConfig } from '../Unit';
3
+ export declare const handleTimeChange: (value: Date | undefined, unit: dayjs.UnitType | undefined, newValue: number | undefined, clockModeChanged: boolean | undefined, use12HourClock: boolean | undefined, clockMode: string, unitConfig: UnitConfig[]) => Date;
@@ -0,0 +1,48 @@
1
+ import dayjs from 'dayjs';
2
+ import { AM, HOUR, HOUR_12, MAP_12_AM_TO_24_HOUR, MAP_12_PM_TO_24_HOUR, MINUTE, PM, SECOND } from '../constants/timePicker.constants';
3
+ export var handleTimeChange = function handleTimeChange(value, unit, newValue, clockModeChanged, use12HourClock, clockMode, unitConfig) {
4
+ if (clockModeChanged === void 0) {
5
+ clockModeChanged = false;
6
+ }
7
+
8
+ var wasUndefined = value === undefined;
9
+ var dateBuilder = dayjs(value);
10
+
11
+ if (unit) {
12
+ dateBuilder = dateBuilder[unit](newValue);
13
+ }
14
+
15
+ var hourToMap = dateBuilder.get(HOUR);
16
+
17
+ if (use12HourClock) {
18
+ hourToMap = clockMode === AM ? MAP_12_AM_TO_24_HOUR[hourToMap] : MAP_12_PM_TO_24_HOUR[hourToMap];
19
+
20
+ if (unit === HOUR || clockModeChanged) {
21
+ dateBuilder = dateBuilder.set(HOUR, hourToMap);
22
+ }
23
+
24
+ if (clockMode === PM && hourToMap === HOUR_12) {
25
+ dateBuilder = dateBuilder.set(MINUTE, 0);
26
+ dateBuilder = dateBuilder.set(SECOND, 0);
27
+ }
28
+
29
+ if (clockMode === AM && hourToMap === HOUR_12) {
30
+ dateBuilder = dateBuilder.set(HOUR, hourToMap);
31
+ }
32
+ }
33
+
34
+ if (wasUndefined) {
35
+ // set remaining time fields to 0, HH:00:00, 00:mm:00, 00:00:ss
36
+ unitConfig.filter(function (unitDefinition) {
37
+ return unitDefinition.unit !== unit;
38
+ }).forEach(function (unitDefinition) {
39
+ return dateBuilder = dateBuilder[unitDefinition.unit](0);
40
+ });
41
+
42
+ if (use12HourClock && clockMode === PM) {
43
+ dateBuilder = dateBuilder.set(HOUR, HOUR_12);
44
+ }
45
+ }
46
+
47
+ return dateBuilder.toDate();
48
+ };
@@ -0,0 +1,2 @@
1
+ import dayjs from 'dayjs';
2
+ export declare const getUnitSelectedNumber: (value: Date | undefined, unit: dayjs.UnitType, use12HourClock: boolean | undefined) => number | undefined;
@@ -0,0 +1,16 @@
1
+ import dayjs from 'dayjs';
2
+ import { HOUR, HOUR_12, MAP_24_HOUR_TO_12 } from '../constants/timePicker.constants';
3
+ export var getUnitSelectedNumber = function getUnitSelectedNumber(value, unit, use12HourClock) {
4
+ if (value === undefined) return undefined;
5
+ var result = value && dayjs(value).get(unit);
6
+
7
+ if (unit === HOUR && use12HourClock) {
8
+ if (!result) {
9
+ result = HOUR_12;
10
+ }
11
+
12
+ result = MAP_24_HOUR_TO_12[result];
13
+ }
14
+
15
+ return result;
16
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-time-picker",
3
- "version": "0.6.58",
3
+ "version": "0.7.1",
4
4
  "description": "TimePicker UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -32,7 +32,7 @@
32
32
  ],
33
33
  "types": "dist/index.d.ts",
34
34
  "dependencies": {
35
- "@synerise/ds-dropdown": "^0.17.56",
35
+ "@synerise/ds-dropdown": "^0.17.58",
36
36
  "@synerise/ds-icon": "^0.54.0",
37
37
  "@synerise/ds-input": "^0.18.36",
38
38
  "@synerise/ds-search-bar": "^0.6.26",
@@ -47,5 +47,5 @@
47
47
  "devDependencies": {
48
48
  "@types/debounce": "^1.2.0"
49
49
  },
50
- "gitHead": "55d4a4dfa9230bea883b887e4457ca86f8509d83"
50
+ "gitHead": "d8913fe084ae139a15d419477da3b6dac969bd3a"
51
51
  }