@hi-ui/time-picker 4.0.0-alpha.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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/lib/cjs/@types/index.js +22 -0
  4. package/lib/cjs/@types/index.js.map +1 -0
  5. package/lib/cjs/Input.js +174 -0
  6. package/lib/cjs/Input.js.map +1 -0
  7. package/lib/cjs/Panel.js +144 -0
  8. package/lib/cjs/Panel.js.map +1 -0
  9. package/lib/cjs/PopContent.js +211 -0
  10. package/lib/cjs/PopContent.js.map +1 -0
  11. package/lib/cjs/Selector.js +128 -0
  12. package/lib/cjs/Selector.js.map +1 -0
  13. package/lib/cjs/TimePicker.js +310 -0
  14. package/lib/cjs/TimePicker.js.map +1 -0
  15. package/lib/cjs/hooks/useFilter.js +39 -0
  16. package/lib/cjs/hooks/useFilter.js.map +1 -0
  17. package/lib/cjs/index.js +34 -0
  18. package/lib/cjs/index.js.map +1 -0
  19. package/lib/cjs/styles/index.scss.js +22 -0
  20. package/lib/cjs/styles/index.scss.js.map +1 -0
  21. package/lib/cjs/utils/analysisFormat.js +42 -0
  22. package/lib/cjs/utils/analysisFormat.js.map +1 -0
  23. package/lib/cjs/utils/disposeInputValue.js +57 -0
  24. package/lib/cjs/utils/disposeInputValue.js.map +1 -0
  25. package/lib/cjs/utils/generateSelectorData.js +58 -0
  26. package/lib/cjs/utils/generateSelectorData.js.map +1 -0
  27. package/lib/cjs/utils/getFormatDefault.js +21 -0
  28. package/lib/cjs/utils/getFormatDefault.js.map +1 -0
  29. package/lib/cjs/utils/getNowString.js +32 -0
  30. package/lib/cjs/utils/getNowString.js.map +1 -0
  31. package/lib/cjs/utils/getRange.js +35 -0
  32. package/lib/cjs/utils/getRange.js.map +1 -0
  33. package/lib/cjs/utils/valueChecker.js +87 -0
  34. package/lib/cjs/utils/valueChecker.js.map +1 -0
  35. package/lib/esm/@types/index.js +19 -0
  36. package/lib/esm/@types/index.js.map +1 -0
  37. package/lib/esm/Input.js +154 -0
  38. package/lib/esm/Input.js.map +1 -0
  39. package/lib/esm/Panel.js +124 -0
  40. package/lib/esm/Panel.js.map +1 -0
  41. package/lib/esm/PopContent.js +188 -0
  42. package/lib/esm/PopContent.js.map +1 -0
  43. package/lib/esm/Selector.js +110 -0
  44. package/lib/esm/Selector.js.map +1 -0
  45. package/lib/esm/TimePicker.js +281 -0
  46. package/lib/esm/TimePicker.js.map +1 -0
  47. package/lib/esm/hooks/useFilter.js +33 -0
  48. package/lib/esm/hooks/useFilter.js.map +1 -0
  49. package/lib/esm/index.js +14 -0
  50. package/lib/esm/index.js.map +1 -0
  51. package/lib/esm/styles/index.scss.js +17 -0
  52. package/lib/esm/styles/index.scss.js.map +1 -0
  53. package/lib/esm/utils/analysisFormat.js +36 -0
  54. package/lib/esm/utils/analysisFormat.js.map +1 -0
  55. package/lib/esm/utils/disposeInputValue.js +51 -0
  56. package/lib/esm/utils/disposeInputValue.js.map +1 -0
  57. package/lib/esm/utils/generateSelectorData.js +52 -0
  58. package/lib/esm/utils/generateSelectorData.js.map +1 -0
  59. package/lib/esm/utils/getFormatDefault.js +15 -0
  60. package/lib/esm/utils/getFormatDefault.js.map +1 -0
  61. package/lib/esm/utils/getNowString.js +25 -0
  62. package/lib/esm/utils/getNowString.js.map +1 -0
  63. package/lib/esm/utils/getRange.js +29 -0
  64. package/lib/esm/utils/getRange.js.map +1 -0
  65. package/lib/esm/utils/valueChecker.js +80 -0
  66. package/lib/esm/utils/valueChecker.js.map +1 -0
  67. package/lib/types/@types/index.d.ts +62 -0
  68. package/lib/types/Input.d.ts +23 -0
  69. package/lib/types/Panel.d.ts +14 -0
  70. package/lib/types/PopContent.d.ts +15 -0
  71. package/lib/types/Selector.d.ts +23 -0
  72. package/lib/types/TimePicker.d.ts +61 -0
  73. package/lib/types/hooks/useFilter.d.ts +2 -0
  74. package/lib/types/index.d.ts +6 -0
  75. package/lib/types/utils/analysisFormat.d.ts +2 -0
  76. package/lib/types/utils/disposeInputValue.d.ts +2 -0
  77. package/lib/types/utils/generateSelectorData.d.ts +10 -0
  78. package/lib/types/utils/getFormatDefault.d.ts +2 -0
  79. package/lib/types/utils/getNowString.d.ts +2 -0
  80. package/lib/types/utils/getRange.d.ts +1 -0
  81. package/lib/types/utils/getSelectorTitle.d.ts +2 -0
  82. package/lib/types/utils/valueChecker.d.ts +8 -0
  83. package/package.json +66 -0
@@ -0,0 +1,188 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ import React, { useMemo, useCallback } from 'react';
11
+ import { TimePickerSelectorType } from './@types/index.js';
12
+ import { getRange } from './utils/getRange.js';
13
+ import { Panel } from './Panel.js';
14
+ import { analysisFormat } from './utils/analysisFormat.js';
15
+ import { getFormatDefault } from './utils/getFormatDefault.js';
16
+ import { _prefix } from './TimePicker.js';
17
+ import { useFilter } from './hooks/useFilter.js';
18
+
19
+ var DefaultDisabledFunc = function DefaultDisabledFunc() {
20
+ return [];
21
+ };
22
+
23
+ var PopContent = function PopContent(props) {
24
+ var _props$prefix = props.prefix,
25
+ prefix = _props$prefix === void 0 ? _prefix : _props$prefix,
26
+ dangerousValue = props.value,
27
+ _onChange = props.onChange,
28
+ format = props.format,
29
+ type = props.type,
30
+ itemHeight = props.itemHeight,
31
+ fullDisplayItemNumber = props.fullDisplayItemNumber,
32
+ hourStep = props.hourStep,
33
+ minuteStep = props.minuteStep,
34
+ secondStep = props.secondStep,
35
+ _props$disabledHours = props.disabledHours,
36
+ originalDisabledHours = _props$disabledHours === void 0 ? DefaultDisabledFunc : _props$disabledHours,
37
+ _props$disabledSecond = props.disabledSeconds,
38
+ originalDisabledSeconds = _props$disabledSecond === void 0 ? DefaultDisabledFunc : _props$disabledSecond,
39
+ _props$disabledMinute = props.disabledMinutes,
40
+ originalDisabledMinutes = _props$disabledMinute === void 0 ? DefaultDisabledFunc : _props$disabledMinute,
41
+ style = props.style; // 将值统一转化为函数
42
+ // 由于 pop content 会被 date-picker 直接调用,故而在此多做一次兼容处理
43
+
44
+ var _useFilter = useFilter({
45
+ disabledHours: originalDisabledHours,
46
+ disabledMinutes: originalDisabledMinutes,
47
+ disabledSeconds: originalDisabledSeconds
48
+ }),
49
+ disabledHours = _useFilter.disabledHours,
50
+ disabledMinutes = _useFilter.disabledMinutes,
51
+ disabledSeconds = _useFilter.disabledSeconds;
52
+
53
+ var value = useMemo(function () {
54
+ return dangerousValue.map(function (item) {
55
+ return item || getFormatDefault(format);
56
+ });
57
+ }, [dangerousValue, format]);
58
+ var selectorTypes = useMemo(function () {
59
+ return analysisFormat(format);
60
+ }, [format]);
61
+ var separateValue = useMemo(function () {
62
+ return value.map(function (disposeItem) {
63
+ return disposeItem.split(':').filter(function (item) {
64
+ return item;
65
+ }).map(function (item) {
66
+ return Number(item);
67
+ });
68
+ });
69
+ }, [value]);
70
+ var getMatchTypeValue = useCallback(function (index, type) {
71
+ var matchValue = separateValue[index];
72
+ var typeIndex = selectorTypes.indexOf(type);
73
+ var result = matchValue[typeIndex];
74
+ return result !== undefined && result >= 0 ? result : -1;
75
+ }, [separateValue, selectorTypes]);
76
+ var judgeTypeIsLastOne = useCallback(function (type) {
77
+ return selectorTypes.indexOf(type) === selectorTypes.length - 1;
78
+ }, [selectorTypes]);
79
+ var customDisabledHours = useCallback(function (panel) {
80
+ var result = disabledHours(panel);
81
+
82
+ if (panel === 'range-end') {
83
+ var startHour = getMatchTypeValue(0, TimePickerSelectorType.hour);
84
+ var isLastOne = judgeTypeIsLastOne(TimePickerSelectorType.hour); // 当当前类型为最后一个类型的时候
85
+ // 不能够选择与开始一致的值
86
+
87
+ result = [].concat(result, getRange(0, isLastOne ? startHour : startHour - 1));
88
+ }
89
+
90
+ return result;
91
+ }, [getMatchTypeValue, disabledHours, judgeTypeIsLastOne]);
92
+ var customDisabledMinute = useCallback(function (hour, panel) {
93
+ var result = disabledMinutes(hour, panel);
94
+
95
+ if (panel === 'range-end') {
96
+ var startHour = getMatchTypeValue(0, TimePickerSelectorType.hour);
97
+ var startMinute = getMatchTypeValue(0, TimePickerSelectorType.minute); // 当前类型中包含了小时
98
+ // minute 有值
99
+
100
+ if (hour >= 0) {
101
+ // 开始时间等于结束时间,则直接禁用开始时间之前的时间
102
+ if (startHour === hour) {
103
+ var isLastOne = judgeTypeIsLastOne(TimePickerSelectorType.minute); // 当当前类型为最后一个类型的时候
104
+ // 不能够选择与开始一致的值
105
+
106
+ result = [].concat(result, getRange(0, isLastOne ? startMinute : startMinute - 1));
107
+ } // 开始时间大于结束时间,直接禁用所有
108
+ else if (startHour > hour) {
109
+ result = [].concat(result, getRange(0, 59));
110
+ }
111
+ }
112
+ }
113
+
114
+ return result;
115
+ }, [getMatchTypeValue, judgeTypeIsLastOne, disabledMinutes]);
116
+ var customDisabledSeconds = useCallback(function (hour, minute, panel) {
117
+ var result = disabledSeconds(hour, minute, panel);
118
+
119
+ if (panel === 'range-end') {
120
+ var startHour = getMatchTypeValue(0, TimePickerSelectorType.hour);
121
+ var startMinute = getMatchTypeValue(0, TimePickerSelectorType.minute);
122
+ var startSecond = getMatchTypeValue(0, TimePickerSelectorType.second);
123
+ var allDisabled = false; // 如果小时存在,并且开始小时大于结束,禁用所有秒
124
+
125
+ if (hour >= 0 && startHour > hour) {
126
+ allDisabled = true;
127
+ } // 如果小时存在,并且开始结束小时一样,并且开始分钟大于结束分钟,禁用所有秒
128
+
129
+
130
+ if (hour >= 0 && startHour === hour && minute >= 0 && startMinute > minute) {
131
+ allDisabled = true;
132
+ }
133
+
134
+ if (allDisabled) {
135
+ result = [].concat(result, getRange(0, 59));
136
+ } else {
137
+ // hour 不存在 或者存在并且开始与结束相同
138
+ // 则视作,小时相等
139
+ var isHourEqual = hour < 0 || startHour === hour; // minute 不存在 或者存在并且开始与结束相同
140
+ // 则视作,分钟相等
141
+
142
+ var isMinuteEqual = minute < 0 || startMinute === minute; // 分钟小时相等,则需要根据 开始 秒 做禁用处理
143
+
144
+ if (isHourEqual && isMinuteEqual) {
145
+ result = [].concat(result, getRange(0, startSecond));
146
+ }
147
+ }
148
+ }
149
+
150
+ return result;
151
+ }, [getMatchTypeValue, disabledSeconds]);
152
+ var componentClass = useMemo(function () {
153
+ return prefix + "__pop-content";
154
+ }, [prefix]);
155
+ var renderPanel = useCallback(function (index) {
156
+ return /*#__PURE__*/React.createElement("div", {
157
+ className: componentClass + "__panel-container"
158
+ }, /*#__PURE__*/React.createElement(Panel, {
159
+ itemHeight: itemHeight,
160
+ fullDisplayItemNumber: fullDisplayItemNumber,
161
+ hourStep: hourStep,
162
+ secondStep: secondStep,
163
+ minuteStep: minuteStep,
164
+ disabledHours: customDisabledHours,
165
+ disabledMinutes: customDisabledMinute,
166
+ disabledSeconds: customDisabledSeconds,
167
+ prefix: prefix,
168
+ format: format,
169
+ value: value[index],
170
+ panel: type === 'single' ? 'single' : index === 0 ? 'range-start' : 'range-end',
171
+ onChange: function onChange(e) {
172
+ var result = [].concat(value);
173
+ result[index] = e;
174
+
175
+ _onChange(result);
176
+ }
177
+ }));
178
+ }, [hourStep, minuteStep, secondStep, customDisabledHours, customDisabledMinute, customDisabledSeconds, format, prefix, type, value, _onChange, fullDisplayItemNumber, itemHeight, componentClass]);
179
+ return /*#__PURE__*/React.createElement("div", {
180
+ className: componentClass,
181
+ style: style
182
+ }, renderPanel(0), type === 'range' && /*#__PURE__*/React.createElement("div", {
183
+ className: componentClass + "__separator"
184
+ }), type === 'range' && renderPanel(1));
185
+ };
186
+
187
+ export { PopContent };
188
+ //# sourceMappingURL=PopContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopContent.js","sources":["../../src/PopContent.tsx"],"sourcesContent":[null],"names":["DefaultDisabledFunc","PopContent","props","prefix","_prefix","dangerousValue","value","onChange","format","type","itemHeight","fullDisplayItemNumber","hourStep","minuteStep","secondStep","disabledHours","originalDisabledHours","disabledSeconds","originalDisabledSeconds","disabledMinutes","originalDisabledMinutes","style","useFilter","useMemo","map","item","getFormatDefault","selectorTypes","analysisFormat","separateValue","disposeItem","split","filter","Number","getMatchTypeValue","useCallback","index","matchValue","typeIndex","indexOf","result","undefined","judgeTypeIsLastOne","length","customDisabledHours","panel","startHour","TimePickerSelectorType","hour","isLastOne","getRange","customDisabledMinute","startMinute","minute","customDisabledSeconds","startSecond","second","allDisabled","isHourEqual","isMinuteEqual","componentClass","renderPanel","React","className","Panel","e"],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ import React, { useRef, useMemo, useCallback, useEffect } from 'react';
11
+ import { cx } from '@hi-ui/classname';
12
+ var SelectorPosition;
13
+
14
+ (function (SelectorPosition) {
15
+ SelectorPosition["left"] = "left";
16
+ SelectorPosition["right"] = "right";
17
+ SelectorPosition["middle"] = "middle";
18
+ SelectorPosition["single"] = "single";
19
+ })(SelectorPosition || (SelectorPosition = {}));
20
+
21
+ var ITEM_MARGIN_SIZE = 8;
22
+
23
+ var Selector = function Selector(props) {
24
+ var prefix = props.prefix,
25
+ value = props.value,
26
+ data = props.data,
27
+ onChange = props.onChange,
28
+ itemHeight = props.itemHeight,
29
+ fullDisplayItemNumber = props.fullDisplayItemNumber,
30
+ position = props.position;
31
+ var componentPrefix = prefix + "__selector";
32
+ var stopScrollTimeoutHandler = useRef(-1); // 滚动容器引用
33
+
34
+ var scrollContainerRef = useRef(null);
35
+ var safePadding = useMemo(function () {
36
+ return (fullDisplayItemNumber - 1) * (itemHeight + ITEM_MARGIN_SIZE) / 2;
37
+ }, [fullDisplayItemNumber, itemHeight]);
38
+ var calcCurrentIndex = useCallback(function (scrollTop) {
39
+ return Math.floor((scrollTop - safePadding + fullDisplayItemNumber * (itemHeight + ITEM_MARGIN_SIZE) / 2) / (itemHeight + ITEM_MARGIN_SIZE));
40
+ }, [safePadding, itemHeight, fullDisplayItemNumber]);
41
+ var scrollToMatchIndex = useCallback(function (index) {
42
+ if (scrollContainerRef.current) {
43
+ scrollContainerRef.current.scrollTop = index * (itemHeight + ITEM_MARGIN_SIZE);
44
+ }
45
+ }, [itemHeight]);
46
+ var onScroll = useCallback(function (e) {
47
+ e.persist();
48
+ e.stopPropagation(); // 清除用做判断是否滚动停止的定时器
49
+
50
+ clearTimeout(stopScrollTimeoutHandler.current); // 计算当前选中的 index 下标
51
+
52
+ var currentIndex = calcCurrentIndex(e.target.scrollTop);
53
+
54
+ if (currentIndex > data.length) {
55
+ currentIndex = data.length - 1;
56
+ } // 200ms 后如果事件没有再次响应,则视作滚动停止
57
+ // 不论是否禁用,我们都需要自动滚动到对应 index
58
+
59
+
60
+ stopScrollTimeoutHandler.current = setTimeout(function () {
61
+ scrollToMatchIndex(currentIndex); // 通知外部改变
62
+ // 如果当前 item 被禁用了,则无通知
63
+
64
+ if (!data[currentIndex].disabled) {
65
+ onChange(data[currentIndex]);
66
+ }
67
+ }, 200);
68
+ }, [calcCurrentIndex, data, onChange, scrollToMatchIndex]);
69
+ var onItemClick = useCallback(function (item, index) {
70
+ if (!item.disabled) {
71
+ onChange(item);
72
+ }
73
+ }, [onChange]);
74
+ useEffect(function () {
75
+ var currentIndex = data.findIndex(function (item) {
76
+ return item.id === value;
77
+ }); // 避免非法值跳转
78
+
79
+ if (currentIndex >= 0) {
80
+ scrollToMatchIndex(currentIndex);
81
+ }
82
+ }, [data, value, scrollToMatchIndex]);
83
+ return /*#__PURE__*/React.createElement("div", {
84
+ className: cx(componentPrefix, componentPrefix + "--position-" + position)
85
+ }, /*#__PURE__*/React.createElement("div", {
86
+ onScroll: onScroll,
87
+ ref: scrollContainerRef,
88
+ className: componentPrefix + "__scroll-part",
89
+ style: {
90
+ height: fullDisplayItemNumber * (itemHeight + ITEM_MARGIN_SIZE) + "px",
91
+ padding: safePadding + "px 0"
92
+ }
93
+ }, data.map(function (item, index) {
94
+ var _cx;
95
+
96
+ return /*#__PURE__*/React.createElement("div", {
97
+ className: cx(componentPrefix + "__item", (_cx = {}, _cx[componentPrefix + "__item--disabled"] = item.disabled, _cx[componentPrefix + "__item--active"] = item.id === value, _cx)),
98
+ key: item.id,
99
+ onClick: function onClick() {
100
+ return onItemClick(item, index);
101
+ },
102
+ style: {
103
+ height: itemHeight + "px"
104
+ }
105
+ }, item.title);
106
+ })));
107
+ };
108
+
109
+ export { Selector, SelectorPosition };
110
+ //# sourceMappingURL=Selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Selector.js","sources":["../../src/Selector.tsx"],"sourcesContent":[null],"names":["SelectorPosition","ITEM_MARGIN_SIZE","Selector","props","prefix","value","data","onChange","itemHeight","fullDisplayItemNumber","position","componentPrefix","stopScrollTimeoutHandler","useRef","scrollContainerRef","safePadding","useMemo","calcCurrentIndex","useCallback","scrollTop","Math","floor","scrollToMatchIndex","index","current","onScroll","e","persist","stopPropagation","clearTimeout","currentIndex","target","length","setTimeout","disabled","onItemClick","item","useEffect","findIndex","id","React","className","cx","ref","style","height","padding","map","key","onClick","title"],"mappings":"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"}
@@ -0,0 +1,281 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ import React, { forwardRef, useState, useRef, useEffect, useCallback, useMemo } from 'react';
11
+ import { getPrefixCls, cx } from '@hi-ui/classname';
12
+ import { __DEV__ } from '@hi-ui/env';
13
+ import { Input } from './Input.js';
14
+ import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
15
+ import { PopperPortal } from '@hi-ui/popper';
16
+ import { CloseCircleFilled, TimeOutlined } from '@hi-ui/icons';
17
+ import { PopContent } from './PopContent.js';
18
+ import { valueChecker } from './utils/valueChecker.js';
19
+ import { useFilter } from './hooks/useFilter.js';
20
+ import { Button } from '@hi-ui/button';
21
+ import { getNowString } from './utils/getNowString.js';
22
+ var _role = 'time-picker';
23
+
24
+ var _prefix = getPrefixCls(_role);
25
+
26
+ var DefaultValue = ['', ''];
27
+
28
+ var DefaultDisabledFunc = function DefaultDisabledFunc() {
29
+ return [];
30
+ };
31
+
32
+ var DefaultPlaceholder = ['', ''];
33
+ var TimePicker = /*#__PURE__*/forwardRef(function (_ref, ref) {
34
+ var _cx;
35
+
36
+ var _ref$prefixCls = _ref.prefixCls,
37
+ prefixCls = _ref$prefixCls === void 0 ? _prefix : _ref$prefixCls,
38
+ _ref$role = _ref.role,
39
+ role = _ref$role === void 0 ? _role : _ref$role,
40
+ className = _ref.className,
41
+ controlledValue = _ref.value,
42
+ _ref$itemHeight = _ref.itemHeight,
43
+ itemHeight = _ref$itemHeight === void 0 ? 24 : _ref$itemHeight,
44
+ _ref$fullDisplayItemN = _ref.fullDisplayItemNumber,
45
+ fullDisplayItemNumber = _ref$fullDisplayItemN === void 0 ? 7 : _ref$fullDisplayItemN,
46
+ _ref$hourStep = _ref.hourStep,
47
+ hourStep = _ref$hourStep === void 0 ? 1 : _ref$hourStep,
48
+ _ref$minuteStep = _ref.minuteStep,
49
+ minuteStep = _ref$minuteStep === void 0 ? 1 : _ref$minuteStep,
50
+ _ref$secondStep = _ref.secondStep,
51
+ secondStep = _ref$secondStep === void 0 ? 1 : _ref$secondStep,
52
+ _ref$format = _ref.format,
53
+ format = _ref$format === void 0 ? 'HH:mm:ss' : _ref$format,
54
+ _ref$type = _ref.type,
55
+ type = _ref$type === void 0 ? 'single' : _ref$type,
56
+ _ref$defaultValue = _ref.defaultValue,
57
+ uncontrolledValue = _ref$defaultValue === void 0 ? DefaultValue : _ref$defaultValue,
58
+ _ref$disabled = _ref.disabled,
59
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
60
+ _ref$disabledHours = _ref.disabledHours,
61
+ originalDisabledHours = _ref$disabledHours === void 0 ? DefaultDisabledFunc : _ref$disabledHours,
62
+ _ref$disabledSeconds = _ref.disabledSeconds,
63
+ originalDisabledSeconds = _ref$disabledSeconds === void 0 ? DefaultDisabledFunc : _ref$disabledSeconds,
64
+ _ref$disabledMinutes = _ref.disabledMinutes,
65
+ originalDisabledMinutes = _ref$disabledMinutes === void 0 ? DefaultDisabledFunc : _ref$disabledMinutes,
66
+ _ref$bordered = _ref.bordered,
67
+ bordered = _ref$bordered === void 0 ? true : _ref$bordered,
68
+ notifyOutside = _ref.onChange,
69
+ _ref$placeholder = _ref.placeholder,
70
+ placeholder = _ref$placeholder === void 0 ? DefaultPlaceholder : _ref$placeholder,
71
+ _ref$inputReadonly = _ref.inputReadonly,
72
+ inputReadonly = _ref$inputReadonly === void 0 ? false : _ref$inputReadonly;
73
+
74
+ var _useState = useState(null),
75
+ attachEl = _useState[0],
76
+ setAttachEl = _useState[1];
77
+
78
+ var _useUncontrolledState = useUncontrolledState(uncontrolledValue, controlledValue, notifyOutside),
79
+ value = _useUncontrolledState[0],
80
+ onChange = _useUncontrolledState[1];
81
+
82
+ var inputRef = useRef(null);
83
+
84
+ var _useState2 = useState(true),
85
+ isInputValid = _useState2[0],
86
+ setIsInputValid = _useState2[1];
87
+
88
+ var _useState3 = useState(value),
89
+ cacheValue = _useState3[0],
90
+ setCacheValue = _useState3[1];
91
+
92
+ var cacheValueRef = useRef(cacheValue); // 将值统一转化为函数
93
+
94
+ var _useFilter = useFilter({
95
+ disabledHours: originalDisabledHours,
96
+ disabledMinutes: originalDisabledMinutes,
97
+ disabledSeconds: originalDisabledSeconds
98
+ }),
99
+ disabledHours = _useFilter.disabledHours,
100
+ disabledMinutes = _useFilter.disabledMinutes,
101
+ disabledSeconds = _useFilter.disabledSeconds;
102
+
103
+ useEffect(function () {
104
+ cacheValueRef.current = [].concat(value);
105
+ setCacheValue(function (pre) {
106
+ if (pre.join('') !== value.join('')) {
107
+ return [].concat(value);
108
+ }
109
+
110
+ return pre;
111
+ });
112
+ }, [value]);
113
+ var getPanelType = useCallback(function (index) {
114
+ if (type === 'single') {
115
+ return 'single';
116
+ } else {
117
+ return index === 0 ? 'range-start' : 'range-end';
118
+ }
119
+ }, [type]); // 检查值是否合规
120
+
121
+ var validChecker = useCallback(function (checkValue) {
122
+ // 检查 range 情况下值是否正确
123
+ // 视开始结束都为空值为正确值
124
+ var rangeValid = checkValue.join('') === '' || checkValue[1] > checkValue[0];
125
+ return checkValue.every(function (item, index) {
126
+ return valueChecker({
127
+ value: item,
128
+ format: format,
129
+ filter: {
130
+ disabledSeconds: disabledSeconds,
131
+ disabledMinutes: disabledMinutes,
132
+ disabledHours: disabledHours
133
+ },
134
+ step: {
135
+ hourStep: hourStep,
136
+ minuteStep: minuteStep,
137
+ secondStep: secondStep
138
+ },
139
+ panelType: getPanelType(index)
140
+ });
141
+ }) && ( // 单选不检查前后关系
142
+ type === 'single' || rangeValid);
143
+ }, [hourStep, getPanelType, minuteStep, secondStep, disabledHours, disabledMinutes, disabledSeconds, format, type]);
144
+ var onCacheChange = useCallback(function (newValue) {
145
+ var result = newValue.slice(0, type === 'single' ? 1 : 2);
146
+ cacheValueRef.current = [].concat(result); // 避免重复渲染
147
+
148
+ setCacheValue(function (pre) {
149
+ if (pre.join('') !== result.join('')) {
150
+ return [].concat(result);
151
+ }
152
+
153
+ return pre;
154
+ });
155
+ }, [type]);
156
+
157
+ var _useState4 = useState(false),
158
+ showPopper = _useState4[0],
159
+ setShowPopper = _useState4[1];
160
+
161
+ var showPopperRef = useRef(false);
162
+ var cls = cx(prefixCls, className, (_cx = {}, _cx[prefixCls + "--border"] = bordered, _cx[prefixCls + "--active"] = showPopper && !disabled, _cx[prefixCls + "--disabled"] = disabled, _cx[prefixCls + "--input-not-valid"] = !isInputValid, _cx));
163
+ var functionButtons = useMemo(function () {
164
+ return /*#__PURE__*/React.createElement("div", {
165
+ className: prefixCls + "__pop-function-buttons"
166
+ }, /*#__PURE__*/React.createElement(Button, {
167
+ className: prefixCls + "__pop-confirm-button",
168
+ type: 'primary',
169
+ size: "small",
170
+ disabled: !isInputValid,
171
+ onClick: function onClick() {
172
+ // 合法,才去通知外部
173
+ if (validChecker(cacheValue)) {
174
+ if (cacheValue.join('') !== value.join('')) {
175
+ onChange([].concat(cacheValue));
176
+ }
177
+ }
178
+
179
+ setShowPopper(false);
180
+ }
181
+ }, "\u786E\u8BA4"), type === 'single' && /*#__PURE__*/React.createElement("div", {
182
+ className: prefixCls + "__pop-now-button",
183
+ onClick: function onClick() {
184
+ onCacheChange([getNowString(format)]);
185
+ setShowPopper(false);
186
+ }
187
+ }, "\u6B64\u523B"));
188
+ }, [prefixCls, isInputValid, type, format, onCacheChange, cacheValue, value, onChange, validChecker]);
189
+ return /*#__PURE__*/React.createElement("div", {
190
+ ref: ref,
191
+ role: role,
192
+ className: cls
193
+ }, /*#__PURE__*/React.createElement("div", {
194
+ ref: setAttachEl,
195
+ className: prefixCls + "__input-wrapper"
196
+ }, /*#__PURE__*/React.createElement(Input, {
197
+ ref: inputRef,
198
+ onValidChange: setIsInputValid,
199
+ disabled: inputReadonly || disabled,
200
+ type: type,
201
+ placeholders: placeholder,
202
+ prefix: prefixCls,
203
+ format: format,
204
+ hourStep: hourStep,
205
+ secondStep: secondStep,
206
+ minuteStep: minuteStep,
207
+ disabledHours: disabledHours,
208
+ disabledMinutes: disabledMinutes,
209
+ disabledSeconds: disabledSeconds,
210
+ value: cacheValue,
211
+ onChange: onCacheChange,
212
+ onFocus: function onFocus() {
213
+ showPopperRef.current = true;
214
+ setShowPopper(true);
215
+ }
216
+ }), /*#__PURE__*/React.createElement("div", {
217
+ className: prefixCls + "__function-button",
218
+ onClick: function onClick() {
219
+ // pop正打开,此时点击按钮为清除功能
220
+ if (showPopperRef.current) {
221
+ onCacheChange(type === 'single' ? [''] : ['', '']);
222
+ }
223
+
224
+ showPopperRef.current = !showPopper;
225
+ setShowPopper(function (pre) {
226
+ return !pre;
227
+ });
228
+ }
229
+ }, showPopper ? /*#__PURE__*/React.createElement(CloseCircleFilled, {
230
+ className: prefixCls + "__close-button"
231
+ }) : /*#__PURE__*/React.createElement(TimeOutlined, null))), /*#__PURE__*/React.createElement(PopperPortal, {
232
+ unmountOnClose: false,
233
+ visible: showPopper && !disabled,
234
+ attachEl: attachEl,
235
+ onClose: function onClose() {
236
+ var _a; // 关闭弹窗,视作,抛弃之前的选择行为,复位
237
+
238
+
239
+ showPopperRef.current = false;
240
+ setShowPopper(false);
241
+ onCacheChange([].concat(value)); // 强制刷新 input 内容,复位
242
+
243
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.refresh();
244
+ },
245
+ preload: true
246
+ }, /*#__PURE__*/React.createElement(PopContent, {
247
+ itemHeight: itemHeight,
248
+ fullDisplayItemNumber: fullDisplayItemNumber,
249
+ type: type,
250
+ prefix: prefixCls,
251
+ format: format,
252
+ hourStep: hourStep,
253
+ secondStep: secondStep,
254
+ minuteStep: minuteStep,
255
+ disabledHours: disabledHours,
256
+ disabledMinutes: disabledMinutes,
257
+ disabledSeconds: disabledSeconds,
258
+ value: cacheValue,
259
+ onChange: function onChange(e) {
260
+ var _a; // 只有弹窗展开的时候才接受 pop content 的值改变
261
+ // WARNING: 当值错误,弹窗收起,默认会滚动到 00:00:00,并且通知外部(非期望),所以我们需要这个FLAG来避免错误值获取
262
+
263
+
264
+ if (showPopperRef.current) {
265
+ // 强制刷新 input 内容,复位
266
+ // 解决此情况:
267
+ // 输入框输入错误数据,故而input不通知外部,time-picker cache-value 不变化,input接受value不变
268
+ // 此时我们再次在pop-content点击当前选中值,time-picker cache-value 依旧不变化,input接受value不变,展示的依旧是错误的cache-value
269
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.refresh();
270
+ onCacheChange(e);
271
+ }
272
+ }
273
+ }), functionButtons));
274
+ });
275
+
276
+ if (__DEV__) {
277
+ TimePicker.displayName = 'TimePicker';
278
+ }
279
+
280
+ export { TimePicker, _prefix };
281
+ //# sourceMappingURL=TimePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker.js","sources":["../../src/TimePicker.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","DefaultValue","DefaultDisabledFunc","DefaultPlaceholder","TimePicker","forwardRef","ref","prefixCls","role","className","controlledValue","value","itemHeight","fullDisplayItemNumber","hourStep","minuteStep","secondStep","format","type","defaultValue","uncontrolledValue","disabled","disabledHours","originalDisabledHours","disabledSeconds","originalDisabledSeconds","disabledMinutes","originalDisabledMinutes","bordered","notifyOutside","onChange","placeholder","inputReadonly","useState","attachEl","setAttachEl","useUncontrolledState","inputRef","useRef","isInputValid","setIsInputValid","cacheValue","setCacheValue","cacheValueRef","useFilter","useEffect","current","pre","join","getPanelType","useCallback","index","validChecker","checkValue","rangeValid","every","item","valueChecker","filter","step","panelType","onCacheChange","newValue","result","slice","showPopper","setShowPopper","showPopperRef","cls","cx","functionButtons","useMemo","React","Button","size","onClick","getNowString","Input","onValidChange","placeholders","prefix","onFocus","CloseCircleFilled","TimeOutlined","PopperPortal","unmountOnClose","visible","onClose","refresh","preload","PopContent","e","__DEV__","displayName"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ import { useMemo } from 'react';
11
+
12
+ var useFilter = function useFilter(original) {
13
+ return useMemo(function () {
14
+ function disabledCompatibility(disposeValue) {
15
+ if (Array.isArray(disposeValue)) {
16
+ return function () {
17
+ return disposeValue;
18
+ };
19
+ }
20
+
21
+ return disposeValue;
22
+ }
23
+
24
+ return {
25
+ disabledHours: disabledCompatibility(original.disabledHours),
26
+ disabledMinutes: disabledCompatibility(original.disabledMinutes),
27
+ disabledSeconds: disabledCompatibility(original.disabledSeconds)
28
+ };
29
+ }, [original.disabledHours, original.disabledSeconds, original.disabledMinutes]);
30
+ };
31
+
32
+ export { useFilter };
33
+ //# sourceMappingURL=useFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFilter.js","sources":["../../../src/hooks/useFilter.ts"],"sourcesContent":[null],"names":["useFilter","original","useMemo","disabledCompatibility","disposeValue","Array","isArray","disabledHours","disabledMinutes","disabledSeconds"],"mappings":";;;;;;;;;;;IASaA,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;SAChBC,OAAO,CAAC;aACJC,sBAAyBC;UAC5BC,KAAK,CAACC,OAAND,CAAcD,YAAdC,GAA6B;eACtB;iBAAMD;AAAf;;;aAEKA;;;WAEF;AACLG,MAAAA,aAAa,EAAEJ,qBAAqB,CAAkCF,QAAQ,CAACM,aAA3C,CAD/B;AAELC,MAAAA,eAAe,EAAEL,qBAAqB,CACpCF,QAAQ,CAACO,eAD2B,CAFjC;AAKLC,MAAAA,eAAe,EAAEN,qBAAqB,CACpCF,QAAQ,CAACQ,eAD2B;AALjC;AAPK,GAAA,EAgBX,CAACR,QAAQ,CAACM,aAAV,EAAyBN,QAAQ,CAACQ,eAAlC,EAAmDR,QAAQ,CAACO,eAA5D,CAhBW;;;"}