@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 +29 -0
- package/dist/TimePicker.d.ts +2 -6
- package/dist/TimePicker.js +61 -39
- package/dist/TimePicker.styles.js +1 -1
- package/dist/Unit.d.ts +1 -0
- package/dist/Unit.js +6 -3
- package/dist/constants/timePicker.constants.d.ts +90 -0
- package/dist/constants/timePicker.constants.js +88 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -1
- package/dist/{TimePicker.types.d.ts → types/TimePicker.types.d.ts} +11 -2
- package/dist/utils/timePicker.utils.d.ts +3 -0
- package/dist/utils/timePicker.utils.js +48 -0
- package/dist/utils/unit.utils.d.ts +2 -0
- package/dist/utils/unit.utils.js +16 -0
- package/package.json +3 -3
- /package/dist/{TimePicker.types.js → types/TimePicker.types.js} +0 -0
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
|
package/dist/TimePicker.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { TimePickerProps } from './TimePicker.types';
|
|
3
|
-
|
|
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>;
|
package/dist/TimePicker.js
CHANGED
|
@@ -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
|
|
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 {
|
|
17
|
+
import { useDataFormat } from '@synerise/ds-data-format';
|
|
10
18
|
import Unit from './Unit';
|
|
11
19
|
import * as S from './TimePicker.styles';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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(
|
|
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
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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:
|
|
67
|
-
options:
|
|
93
|
+
unit: HOUR,
|
|
94
|
+
options: is12HourClock ? range(1, 13) : range(24),
|
|
68
95
|
disabled: disabledHours,
|
|
69
96
|
insertSeperator: true
|
|
70
97
|
}, {
|
|
71
|
-
unit:
|
|
98
|
+
unit: MINUTE,
|
|
72
99
|
options: range(60),
|
|
73
100
|
disabled: disabledMinutes,
|
|
74
101
|
insertSeperator: true
|
|
75
102
|
}, {
|
|
76
|
-
unit:
|
|
103
|
+
unit: SECOND,
|
|
77
104
|
options: range(60),
|
|
78
105
|
disabled: disabledSeconds,
|
|
79
|
-
insertSeperator:
|
|
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
|
-
|
|
95
|
-
|
|
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 =
|
|
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
|
-
|
|
136
|
-
|
|
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(
|
|
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:
|
|
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:
|
|
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
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
|
-
|
|
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
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,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.
|
|
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.
|
|
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": "
|
|
50
|
+
"gitHead": "d8913fe084ae139a15d419477da3b6dac969bd3a"
|
|
51
51
|
}
|
|
File without changes
|