@hi-ui/time-picker 4.0.10 → 4.0.11
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 +15 -0
- package/lib/cjs/@types/index.js +0 -4
- package/lib/cjs/Input.js +33 -63
- package/lib/cjs/Panel.js +21 -45
- package/lib/cjs/PopContent.js +46 -77
- package/lib/cjs/Selector.js +22 -44
- package/lib/cjs/TimePicker.js +80 -132
- package/lib/cjs/hooks/useFilter.js +0 -8
- package/lib/cjs/index.js +0 -5
- package/lib/cjs/styles/index.scss.js +1 -4
- package/lib/cjs/utils/analysisFormat.js +1 -8
- package/lib/cjs/utils/disposeInputValue.js +12 -19
- package/lib/cjs/utils/generateSelectorData.js +5 -16
- package/lib/cjs/utils/getFormatDefault.js +0 -5
- package/lib/cjs/utils/getNowString.js +0 -8
- package/lib/cjs/utils/getRange.js +0 -9
- package/lib/cjs/utils/valueChecker.js +8 -23
- package/lib/esm/@types/index.js +0 -2
- package/lib/esm/Input.js +28 -39
- package/lib/esm/Panel.js +16 -22
- package/lib/esm/PopContent.js +43 -53
- package/lib/esm/Selector.js +16 -22
- package/lib/esm/TimePicker.js +70 -92
- package/lib/esm/hooks/useFilter.js +0 -4
- package/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/utils/analysisFormat.js +1 -4
- package/lib/esm/utils/disposeInputValue.js +12 -15
- package/lib/esm/utils/generateSelectorData.js +5 -12
- package/lib/esm/utils/getFormatDefault.js +0 -1
- package/lib/esm/utils/getNowString.js +0 -3
- package/lib/esm/utils/getRange.js +0 -5
- package/lib/esm/utils/valueChecker.js +8 -18
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# @hi-ui/time-picker
|
2
2
|
|
3
|
+
## 4.0.11
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- [#2672](https://github.com/XiaoMi/hiui/pull/2672) [`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e) Thanks [@zyprepare](https://github.com/zyprepare)! - build: 升级到 rollup3,重新构建发布组件
|
8
|
+
|
9
|
+
- Updated dependencies [[`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e)]:
|
10
|
+
- @hi-ui/core@4.0.6
|
11
|
+
- @hi-ui/use-uncontrolled-state@4.0.2
|
12
|
+
- @hi-ui/icons@4.0.16
|
13
|
+
- @hi-ui/button@4.0.7
|
14
|
+
- @hi-ui/popper@4.1.1
|
15
|
+
- @hi-ui/classname@4.0.2
|
16
|
+
- @hi-ui/env@4.0.2
|
17
|
+
|
3
18
|
## 4.0.10
|
4
19
|
|
5
20
|
### Patch Changes
|
package/lib/cjs/@types/index.js
CHANGED
@@ -9,11 +9,7 @@
|
|
9
9
|
*/
|
10
10
|
'use strict';
|
11
11
|
|
12
|
-
Object.defineProperty(exports, '__esModule', {
|
13
|
-
value: true
|
14
|
-
});
|
15
12
|
exports.TimePickerSelectorType = void 0;
|
16
|
-
|
17
13
|
(function (TimePickerSelectorType) {
|
18
14
|
TimePickerSelectorType[TimePickerSelectorType["hour"] = 1] = "hour";
|
19
15
|
TimePickerSelectorType[TimePickerSelectorType["minute"] = 2] = "minute";
|
package/lib/cjs/Input.js
CHANGED
@@ -9,68 +9,46 @@
|
|
9
9
|
*/
|
10
10
|
'use strict';
|
11
11
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
|
-
Object.defineProperty(exports, '__esModule', {
|
15
|
-
value: true
|
16
|
-
});
|
17
|
-
|
18
12
|
var React = require('react');
|
19
|
-
|
20
13
|
var classname = require('@hi-ui/classname');
|
21
|
-
|
22
14
|
var valueChecker = require('./utils/valueChecker.js');
|
23
|
-
|
24
15
|
var disposeInputValue = require('./utils/disposeInputValue.js');
|
25
|
-
|
26
16
|
var core = require('@hi-ui/core');
|
27
|
-
|
28
|
-
function _interopDefaultLegacy(e) {
|
29
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
30
|
-
'default': e
|
31
|
-
};
|
32
|
-
}
|
33
|
-
|
34
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
35
|
-
|
36
17
|
var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
37
18
|
var _cx;
|
38
|
-
|
39
19
|
var prefix = props.prefix,
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
20
|
+
value = props.value,
|
21
|
+
format = props.format,
|
22
|
+
hourStep = props.hourStep,
|
23
|
+
minuteStep = props.minuteStep,
|
24
|
+
secondStep = props.secondStep,
|
25
|
+
disabledHours = props.disabledHours,
|
26
|
+
disabledMinutes = props.disabledMinutes,
|
27
|
+
disabledSeconds = props.disabledSeconds,
|
28
|
+
type = props.type,
|
29
|
+
placeholders = props.placeholders,
|
30
|
+
_onChange = props.onChange,
|
31
|
+
_onFocus = props.onFocus,
|
32
|
+
disabled = props.disabled,
|
33
|
+
onValidChange = props.onValidChange,
|
34
|
+
isFitContent = props.isFitContent,
|
35
|
+
size = props.size;
|
56
36
|
var i18n = core.useLocaleContext();
|
57
37
|
var toText = i18n.get('timePicker.to');
|
58
38
|
var componentClass = React.useMemo(function () {
|
59
39
|
return prefix + "__input";
|
60
40
|
}, [prefix]);
|
61
|
-
|
62
41
|
var _useState = React.useState(value),
|
63
|
-
|
64
|
-
|
65
|
-
|
42
|
+
cacheValue = _useState[0],
|
43
|
+
setCacheValue = _useState[1];
|
66
44
|
var getPanelType = React.useCallback(function (index) {
|
67
45
|
if (type === 'single') {
|
68
46
|
return 'single';
|
69
47
|
} else {
|
70
48
|
return index === 0 ? 'range-start' : 'range-end';
|
71
49
|
}
|
72
|
-
}, [type]);
|
73
|
-
|
50
|
+
}, [type]);
|
51
|
+
// 检查值是否合规
|
74
52
|
var validChecker = React.useCallback(function (checkValue, panelType) {
|
75
53
|
return valueChecker.valueChecker({
|
76
54
|
value: checkValue,
|
@@ -87,16 +65,14 @@ var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
87
65
|
},
|
88
66
|
panelType: panelType
|
89
67
|
});
|
90
|
-
}, [hourStep, minuteStep, secondStep, disabledHours, disabledMinutes, disabledSeconds, format]);
|
91
|
-
|
68
|
+
}, [hourStep, minuteStep, secondStep, disabledHours, disabledMinutes, disabledSeconds, format]);
|
69
|
+
// 缓存同步外部
|
92
70
|
React.useEffect(function () {
|
93
71
|
setCacheValue(function (pre) {
|
94
72
|
var result = value.slice(0, type === 'single' ? 1 : 2);
|
95
|
-
|
96
73
|
if (result.join('') !== pre.join('')) {
|
97
74
|
return result;
|
98
75
|
}
|
99
|
-
|
100
76
|
return pre;
|
101
77
|
});
|
102
78
|
}, [value, type]);
|
@@ -104,7 +80,6 @@ var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
104
80
|
var valueValid = disposeValue.every(function (item, index) {
|
105
81
|
return validChecker(item, getPanelType(index));
|
106
82
|
});
|
107
|
-
|
108
83
|
if (type === 'range' && valueValid) {
|
109
84
|
// 数据格式正确,检查范围数据
|
110
85
|
// 全为空字符串,则认为是合法的(还未选择)
|
@@ -112,9 +87,8 @@ var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
112
87
|
return item === '';
|
113
88
|
})) {
|
114
89
|
return true;
|
115
|
-
}
|
116
|
-
|
117
|
-
|
90
|
+
}
|
91
|
+
// 结束时间要>开始时间
|
118
92
|
return disposeValue[1] > disposeValue[0];
|
119
93
|
} else {
|
120
94
|
return valueValid;
|
@@ -125,26 +99,22 @@ var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
125
99
|
if (needValid === void 0) {
|
126
100
|
needValid = true;
|
127
101
|
}
|
128
|
-
|
129
102
|
var newValue = disposeInputValue.disposeInputValue(format, disposeValue);
|
130
103
|
var result = [].concat(cacheValue);
|
131
104
|
result[index] = newValue;
|
132
|
-
setCacheValue(result);
|
133
|
-
|
105
|
+
setCacheValue(result);
|
106
|
+
// 合法,则通知外部
|
134
107
|
if (!needValid || validChecker(newValue, getPanelType(index))) {
|
135
108
|
return [].concat(result);
|
136
109
|
}
|
137
|
-
|
138
110
|
return undefined;
|
139
111
|
};
|
140
|
-
|
141
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
112
|
+
return /*#__PURE__*/React.createElement("div", {
|
142
113
|
className: componentClass + "__wrapper"
|
143
|
-
}, /*#__PURE__*/
|
114
|
+
}, /*#__PURE__*/React.createElement("input", {
|
144
115
|
className: componentClass + "__interact-area",
|
145
116
|
onChange: function onChange(e) {
|
146
117
|
var result = dispose(e.target.value);
|
147
|
-
|
148
118
|
if (result) {
|
149
119
|
_onChange(result);
|
150
120
|
}
|
@@ -155,11 +125,11 @@ var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
155
125
|
},
|
156
126
|
value: matchValue,
|
157
127
|
placeholder: placeholders[index]
|
158
|
-
}), /*#__PURE__*/
|
128
|
+
}), /*#__PURE__*/React.createElement("div", {
|
159
129
|
className: componentClass + "__shadow-text"
|
160
130
|
}, matchValue || placeholders[index]));
|
161
|
-
}, [componentClass, disabled, placeholders, isFitContent, format, cacheValue, validChecker, getPanelType, _onChange, _onFocus]);
|
162
|
-
|
131
|
+
}, [componentClass, disabled, placeholders, isFitContent, format, cacheValue, validChecker, getPanelType, _onChange, _onFocus]);
|
132
|
+
// 通知外部,输入框内容合法性变更
|
163
133
|
React.useEffect(function () {
|
164
134
|
onValidChange(judgeIsValid(cacheValue));
|
165
135
|
}, [judgeIsValid, cacheValue, onValidChange]);
|
@@ -170,9 +140,9 @@ var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
170
140
|
}
|
171
141
|
};
|
172
142
|
}, [value]);
|
173
|
-
return /*#__PURE__*/
|
143
|
+
return /*#__PURE__*/React.createElement("div", {
|
174
144
|
className: classname.cx(componentClass, componentClass + "--size-" + size, (_cx = {}, _cx[componentClass + "--not-valid"] = !judgeIsValid(cacheValue), _cx[componentClass + "--range"] = type === 'range', _cx[componentClass + "--disabled"] = disabled, _cx[componentClass + "--fit-content"] = isFitContent, _cx))
|
175
|
-
}, renderInput(cacheValue[0], 0), type === 'range' && /*#__PURE__*/
|
145
|
+
}, renderInput(cacheValue[0], 0), type === 'range' && /*#__PURE__*/React.createElement("div", {
|
176
146
|
className: componentClass + "__range-separator"
|
177
147
|
}, toText), type === 'range' && renderInput(cacheValue[1], 1));
|
178
148
|
});
|
package/lib/cjs/Panel.js
CHANGED
@@ -9,42 +9,23 @@
|
|
9
9
|
*/
|
10
10
|
'use strict';
|
11
11
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
|
-
Object.defineProperty(exports, '__esModule', {
|
15
|
-
value: true
|
16
|
-
});
|
17
|
-
|
18
12
|
var React = require('react');
|
19
|
-
|
20
13
|
var analysisFormat = require('./utils/analysisFormat.js');
|
21
|
-
|
22
14
|
var generateSelectorData = require('./utils/generateSelectorData.js');
|
23
|
-
|
24
15
|
var classname = require('@hi-ui/classname');
|
25
|
-
|
26
16
|
var Selector = require('./Selector.js');
|
27
|
-
|
28
|
-
function _interopDefaultLegacy(e) {
|
29
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
30
|
-
'default': e
|
31
|
-
};
|
32
|
-
}
|
33
|
-
|
34
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
35
|
-
|
36
17
|
var Panel = function Panel(props) {
|
37
18
|
var hourStep = props.hourStep,
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
19
|
+
secondStep = props.secondStep,
|
20
|
+
minuteStep = props.minuteStep,
|
21
|
+
disabledHours = props.disabledHours,
|
22
|
+
disabledMinutes = props.disabledMinutes,
|
23
|
+
disabledSeconds = props.disabledSeconds,
|
24
|
+
prefix = props.prefix,
|
25
|
+
format = props.format,
|
26
|
+
value = props.value,
|
27
|
+
panel = props.panel,
|
28
|
+
_onChange = props.onChange;
|
48
29
|
var componentPrefix = React.useMemo(function () {
|
49
30
|
return prefix + "__panel";
|
50
31
|
}, [prefix]);
|
@@ -75,7 +56,8 @@ var Panel = function Panel(props) {
|
|
75
56
|
selectorTypes: selectorTypes,
|
76
57
|
separateValue: separateValue
|
77
58
|
});
|
78
|
-
}, [disabledHours, disabledMinutes, disabledSeconds, secondStep, hourStep, minuteStep, panel, selectorTypes, separateValue]);
|
59
|
+
}, [disabledHours, disabledMinutes, disabledSeconds, secondStep, hourStep, minuteStep, panel, selectorTypes, separateValue]);
|
60
|
+
// const renderHeader = useCallback(() => {
|
79
61
|
// return (
|
80
62
|
// <div className={`${componentPrefix}__header`}>
|
81
63
|
// {selectorTypes.map((item) => (
|
@@ -86,55 +68,49 @@ var Panel = function Panel(props) {
|
|
86
68
|
// </div>
|
87
69
|
// )
|
88
70
|
// }, [selectorTypes, componentPrefix])
|
89
|
-
|
90
71
|
var renderSelectors = React.useCallback(function () {
|
91
|
-
return /*#__PURE__*/
|
72
|
+
return /*#__PURE__*/React.createElement("div", {
|
92
73
|
className: componentPrefix + "__selector-container"
|
93
74
|
}, selectorTypes.map(function (type, index) {
|
94
75
|
var _cx;
|
95
|
-
|
96
76
|
var position = selectorTypes.length === 1 ? Selector.SelectorPosition.single : Selector.SelectorPosition.middle;
|
97
|
-
|
98
77
|
if (selectorTypes.length > 1 && index === 0) {
|
99
78
|
position = Selector.SelectorPosition.left;
|
100
79
|
} else if (selectorTypes.length > 1 && index === selectorTypes.length - 1) {
|
101
80
|
position = Selector.SelectorPosition.right;
|
102
81
|
}
|
103
|
-
|
104
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
82
|
+
return /*#__PURE__*/React.createElement("div", {
|
105
83
|
className: componentPrefix + "__selector-content",
|
106
84
|
key: type
|
107
|
-
}, /*#__PURE__*/
|
85
|
+
}, /*#__PURE__*/React.createElement(Selector.Selector, {
|
108
86
|
value: String(separateValue[index]),
|
109
87
|
prefix: prefix,
|
110
88
|
position: position,
|
111
89
|
// itemHeight={itemHeight}
|
112
90
|
// fullDisplayItemNumber={fullDisplayItemNumber}
|
113
91
|
onChange: function onChange(e) {
|
114
|
-
var result = [].concat(separateValue).slice(0, selectorTypes.length);
|
92
|
+
var result = [].concat(separateValue).slice(0, selectorTypes.length);
|
93
|
+
// 如果 value = '',则代表为空值
|
115
94
|
// 此时选择任意项,其他项直接视作 0
|
116
|
-
|
117
95
|
if (value === '') {
|
118
96
|
result = [0, 0, 0].slice(0, selectorTypes.length);
|
119
97
|
}
|
120
|
-
|
121
98
|
result[index] = Number(e.id);
|
122
|
-
|
123
99
|
_onChange(result.map(function (item) {
|
124
100
|
return String(item).padStart(2, '0');
|
125
101
|
}).join(':'));
|
126
102
|
},
|
127
103
|
data: getSelectorData(type)
|
128
|
-
}), /*#__PURE__*/
|
104
|
+
}), /*#__PURE__*/React.createElement("div", {
|
129
105
|
className: classname.cx(componentPrefix + "__indicator", (_cx = {}, _cx[componentPrefix + "__indicator--left"] = index === 0, _cx[componentPrefix + "__indicator--right"] = index === selectorTypes.length - 1, _cx))
|
130
106
|
}));
|
131
107
|
}));
|
132
|
-
}, [selectorTypes, componentPrefix, prefix, getSelectorData, _onChange, separateValue,
|
108
|
+
}, [selectorTypes, componentPrefix, prefix, getSelectorData, _onChange, separateValue,
|
109
|
+
// itemHeight,
|
133
110
|
// fullDisplayItemNumber,
|
134
111
|
value]);
|
135
|
-
return /*#__PURE__*/
|
112
|
+
return /*#__PURE__*/React.createElement("div", {
|
136
113
|
className: componentPrefix
|
137
114
|
}, renderSelectors());
|
138
115
|
};
|
139
|
-
|
140
116
|
exports.Panel = Panel;
|
package/lib/cjs/PopContent.js
CHANGED
@@ -9,68 +9,44 @@
|
|
9
9
|
*/
|
10
10
|
'use strict';
|
11
11
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
|
-
Object.defineProperty(exports, '__esModule', {
|
15
|
-
value: true
|
16
|
-
});
|
17
|
-
|
18
12
|
var React = require('react');
|
19
|
-
|
20
13
|
var index = require('./@types/index.js');
|
21
|
-
|
22
14
|
var getRange = require('./utils/getRange.js');
|
23
|
-
|
24
15
|
var Panel = require('./Panel.js');
|
25
|
-
|
26
16
|
var analysisFormat = require('./utils/analysisFormat.js');
|
27
|
-
|
28
17
|
var getFormatDefault = require('./utils/getFormatDefault.js');
|
29
|
-
|
30
18
|
var TimePicker = require('./TimePicker.js');
|
31
|
-
|
32
19
|
var useFilter = require('./hooks/useFilter.js');
|
33
|
-
|
34
|
-
function _interopDefaultLegacy(e) {
|
35
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
36
|
-
'default': e
|
37
|
-
};
|
38
|
-
}
|
39
|
-
|
40
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
41
|
-
|
42
20
|
var DefaultDisabledFunc = function DefaultDisabledFunc() {
|
43
21
|
return [];
|
44
22
|
};
|
45
|
-
|
46
23
|
var PopContent = function PopContent(props) {
|
47
24
|
var _props$prefix = props.prefix,
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
25
|
+
prefix = _props$prefix === void 0 ? TimePicker.timePickerPrefix : _props$prefix,
|
26
|
+
dangerousValue = props.value,
|
27
|
+
_onChange = props.onChange,
|
28
|
+
format = props.format,
|
29
|
+
type = props.type,
|
30
|
+
hourStep = props.hourStep,
|
31
|
+
minuteStep = props.minuteStep,
|
32
|
+
secondStep = props.secondStep,
|
33
|
+
_props$disabledHours = props.disabledHours,
|
34
|
+
originalDisabledHours = _props$disabledHours === void 0 ? DefaultDisabledFunc : _props$disabledHours,
|
35
|
+
_props$disabledSecond = props.disabledSeconds,
|
36
|
+
originalDisabledSeconds = _props$disabledSecond === void 0 ? DefaultDisabledFunc : _props$disabledSecond,
|
37
|
+
_props$disabledMinute = props.disabledMinutes,
|
38
|
+
originalDisabledMinutes = _props$disabledMinute === void 0 ? DefaultDisabledFunc : _props$disabledMinute,
|
39
|
+
style = props.style;
|
40
|
+
// 将值统一转化为函数
|
63
41
|
// 由于 pop content 会被 date-picker 直接调用,故而在此多做一次兼容处理
|
64
|
-
|
65
42
|
var _useFilter = useFilter.useFilter({
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
43
|
+
disabledHours: originalDisabledHours,
|
44
|
+
disabledMinutes: originalDisabledMinutes,
|
45
|
+
disabledSeconds: originalDisabledSeconds
|
46
|
+
}),
|
47
|
+
disabledHours = _useFilter.disabledHours,
|
48
|
+
disabledMinutes = _useFilter.disabledMinutes,
|
49
|
+
disabledSeconds = _useFilter.disabledSeconds;
|
74
50
|
var value = React.useMemo(function () {
|
75
51
|
return dangerousValue.map(function (item) {
|
76
52
|
return item || getFormatDefault.getFormatDefault(format);
|
@@ -99,84 +75,78 @@ var PopContent = function PopContent(props) {
|
|
99
75
|
}, [selectorTypes]);
|
100
76
|
var customDisabledHours = React.useCallback(function (panel) {
|
101
77
|
var result = disabledHours(panel);
|
102
|
-
|
103
78
|
if (panel === 'range-end') {
|
104
79
|
var startHour = getMatchTypeValue(0, index.TimePickerSelectorType.hour);
|
105
|
-
var isLastOne = judgeTypeIsLastOne(index.TimePickerSelectorType.hour);
|
80
|
+
var isLastOne = judgeTypeIsLastOne(index.TimePickerSelectorType.hour);
|
81
|
+
// 当当前类型为最后一个类型的时候
|
106
82
|
// 不能够选择与开始一致的值
|
107
|
-
|
108
83
|
result = [].concat(result, getRange.getRange(0, isLastOne ? startHour : startHour - 1));
|
109
84
|
}
|
110
|
-
|
111
85
|
return result;
|
112
86
|
}, [getMatchTypeValue, disabledHours, judgeTypeIsLastOne]);
|
113
87
|
var customDisabledMinute = React.useCallback(function (hour, panel) {
|
114
88
|
var result = disabledMinutes(hour, panel);
|
115
|
-
|
116
89
|
if (panel === 'range-end') {
|
117
90
|
var startHour = getMatchTypeValue(0, index.TimePickerSelectorType.hour);
|
118
|
-
var startMinute = getMatchTypeValue(0, index.TimePickerSelectorType.minute);
|
91
|
+
var startMinute = getMatchTypeValue(0, index.TimePickerSelectorType.minute);
|
92
|
+
// 当前类型中包含了小时
|
119
93
|
// minute 有值
|
120
|
-
|
121
94
|
if (hour >= 0) {
|
122
95
|
// 开始时间等于结束时间,则直接禁用开始时间之前的时间
|
123
96
|
if (startHour === hour) {
|
124
|
-
var isLastOne = judgeTypeIsLastOne(index.TimePickerSelectorType.minute);
|
97
|
+
var isLastOne = judgeTypeIsLastOne(index.TimePickerSelectorType.minute);
|
98
|
+
// 当当前类型为最后一个类型的时候
|
125
99
|
// 不能够选择与开始一致的值
|
126
|
-
|
127
100
|
result = [].concat(result, getRange.getRange(0, isLastOne ? startMinute : startMinute - 1));
|
128
|
-
}
|
101
|
+
}
|
102
|
+
// 开始时间大于结束时间,直接禁用所有
|
129
103
|
else if (startHour > hour) {
|
130
104
|
result = [].concat(result, getRange.getRange(0, 59));
|
131
105
|
}
|
132
106
|
}
|
133
107
|
}
|
134
|
-
|
135
108
|
return result;
|
136
109
|
}, [getMatchTypeValue, judgeTypeIsLastOne, disabledMinutes]);
|
137
110
|
var customDisabledSeconds = React.useCallback(function (hour, minute, panel) {
|
138
111
|
var result = disabledSeconds(hour, minute, panel);
|
139
|
-
|
140
112
|
if (panel === 'range-end') {
|
141
113
|
var startHour = getMatchTypeValue(0, index.TimePickerSelectorType.hour);
|
142
114
|
var startMinute = getMatchTypeValue(0, index.TimePickerSelectorType.minute);
|
143
115
|
var startSecond = getMatchTypeValue(0, index.TimePickerSelectorType.second);
|
144
|
-
var allDisabled = false;
|
145
|
-
|
116
|
+
var allDisabled = false;
|
117
|
+
// 如果小时存在,并且开始小时大于结束,禁用所有秒
|
146
118
|
if (hour >= 0 && startHour > hour) {
|
147
119
|
allDisabled = true;
|
148
|
-
}
|
149
|
-
|
150
|
-
|
120
|
+
}
|
121
|
+
// 如果小时存在,并且开始结束小时一样,并且开始分钟大于结束分钟,禁用所有秒
|
151
122
|
if (hour >= 0 && startHour === hour && minute >= 0 && startMinute > minute) {
|
152
123
|
allDisabled = true;
|
153
124
|
}
|
154
|
-
|
155
125
|
if (allDisabled) {
|
156
126
|
result = [].concat(result, getRange.getRange(0, 59));
|
157
127
|
} else {
|
158
128
|
// hour 不存在 或者存在并且开始与结束相同
|
159
129
|
// 则视作,小时相等
|
160
|
-
var isHourEqual = hour < 0 || startHour === hour;
|
130
|
+
var isHourEqual = hour < 0 || startHour === hour;
|
131
|
+
// minute 不存在 或者存在并且开始与结束相同
|
161
132
|
// 则视作,分钟相等
|
162
|
-
|
163
|
-
|
164
|
-
|
133
|
+
var isMinuteEqual = minute < 0 || startMinute === minute;
|
134
|
+
// 分钟小时相等,则需要根据 开始 秒 做禁用处理
|
165
135
|
if (isHourEqual && isMinuteEqual) {
|
166
136
|
result = [].concat(result, getRange.getRange(0, startSecond));
|
167
137
|
}
|
168
138
|
}
|
169
139
|
}
|
170
|
-
|
171
140
|
return result;
|
172
141
|
}, [getMatchTypeValue, disabledSeconds]);
|
173
142
|
var componentClass = React.useMemo(function () {
|
174
143
|
return prefix + "__pop-content";
|
175
144
|
}, [prefix]);
|
176
145
|
var renderPanel = React.useCallback(function (index) {
|
177
|
-
return /*#__PURE__*/
|
146
|
+
return /*#__PURE__*/React.createElement("div", {
|
178
147
|
className: componentClass + "__panel-container"
|
179
|
-
}, /*#__PURE__*/
|
148
|
+
}, /*#__PURE__*/React.createElement(Panel.Panel
|
149
|
+
// itemHeight={itemHeight}
|
180
150
|
// fullDisplayItemNumber={fullDisplayItemNumber}
|
181
151
|
, {
|
182
152
|
// itemHeight={itemHeight}
|
@@ -194,19 +164,18 @@ var PopContent = function PopContent(props) {
|
|
194
164
|
onChange: function onChange(e) {
|
195
165
|
var result = [].concat(value);
|
196
166
|
result[index] = e;
|
197
|
-
|
198
167
|
_onChange(result);
|
199
168
|
}
|
200
169
|
}));
|
201
|
-
}, [hourStep, minuteStep, secondStep, customDisabledHours, customDisabledMinute, customDisabledSeconds, format, prefix, type, value, _onChange,
|
170
|
+
}, [hourStep, minuteStep, secondStep, customDisabledHours, customDisabledMinute, customDisabledSeconds, format, prefix, type, value, _onChange,
|
171
|
+
// fullDisplayItemNumber,
|
202
172
|
// itemHeight,
|
203
173
|
componentClass]);
|
204
|
-
return /*#__PURE__*/
|
174
|
+
return /*#__PURE__*/React.createElement("div", {
|
205
175
|
className: componentClass,
|
206
176
|
style: style
|
207
|
-
}, renderPanel(0), type === 'range' && /*#__PURE__*/
|
177
|
+
}, renderPanel(0), type === 'range' && /*#__PURE__*/React.createElement("div", {
|
208
178
|
className: componentClass + "__separator"
|
209
179
|
}), type === 'range' && renderPanel(1));
|
210
180
|
};
|
211
|
-
|
212
181
|
exports.PopContent = PopContent;
|