@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.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/lib/cjs/@types/index.js +22 -0
- package/lib/cjs/@types/index.js.map +1 -0
- package/lib/cjs/Input.js +174 -0
- package/lib/cjs/Input.js.map +1 -0
- package/lib/cjs/Panel.js +144 -0
- package/lib/cjs/Panel.js.map +1 -0
- package/lib/cjs/PopContent.js +211 -0
- package/lib/cjs/PopContent.js.map +1 -0
- package/lib/cjs/Selector.js +128 -0
- package/lib/cjs/Selector.js.map +1 -0
- package/lib/cjs/TimePicker.js +310 -0
- package/lib/cjs/TimePicker.js.map +1 -0
- package/lib/cjs/hooks/useFilter.js +39 -0
- package/lib/cjs/hooks/useFilter.js.map +1 -0
- package/lib/cjs/index.js +34 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/styles/index.scss.js +22 -0
- package/lib/cjs/styles/index.scss.js.map +1 -0
- package/lib/cjs/utils/analysisFormat.js +42 -0
- package/lib/cjs/utils/analysisFormat.js.map +1 -0
- package/lib/cjs/utils/disposeInputValue.js +57 -0
- package/lib/cjs/utils/disposeInputValue.js.map +1 -0
- package/lib/cjs/utils/generateSelectorData.js +58 -0
- package/lib/cjs/utils/generateSelectorData.js.map +1 -0
- package/lib/cjs/utils/getFormatDefault.js +21 -0
- package/lib/cjs/utils/getFormatDefault.js.map +1 -0
- package/lib/cjs/utils/getNowString.js +32 -0
- package/lib/cjs/utils/getNowString.js.map +1 -0
- package/lib/cjs/utils/getRange.js +35 -0
- package/lib/cjs/utils/getRange.js.map +1 -0
- package/lib/cjs/utils/valueChecker.js +87 -0
- package/lib/cjs/utils/valueChecker.js.map +1 -0
- package/lib/esm/@types/index.js +19 -0
- package/lib/esm/@types/index.js.map +1 -0
- package/lib/esm/Input.js +154 -0
- package/lib/esm/Input.js.map +1 -0
- package/lib/esm/Panel.js +124 -0
- package/lib/esm/Panel.js.map +1 -0
- package/lib/esm/PopContent.js +188 -0
- package/lib/esm/PopContent.js.map +1 -0
- package/lib/esm/Selector.js +110 -0
- package/lib/esm/Selector.js.map +1 -0
- package/lib/esm/TimePicker.js +281 -0
- package/lib/esm/TimePicker.js.map +1 -0
- package/lib/esm/hooks/useFilter.js +33 -0
- package/lib/esm/hooks/useFilter.js.map +1 -0
- package/lib/esm/index.js +14 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/styles/index.scss.js +17 -0
- package/lib/esm/styles/index.scss.js.map +1 -0
- package/lib/esm/utils/analysisFormat.js +36 -0
- package/lib/esm/utils/analysisFormat.js.map +1 -0
- package/lib/esm/utils/disposeInputValue.js +51 -0
- package/lib/esm/utils/disposeInputValue.js.map +1 -0
- package/lib/esm/utils/generateSelectorData.js +52 -0
- package/lib/esm/utils/generateSelectorData.js.map +1 -0
- package/lib/esm/utils/getFormatDefault.js +15 -0
- package/lib/esm/utils/getFormatDefault.js.map +1 -0
- package/lib/esm/utils/getNowString.js +25 -0
- package/lib/esm/utils/getNowString.js.map +1 -0
- package/lib/esm/utils/getRange.js +29 -0
- package/lib/esm/utils/getRange.js.map +1 -0
- package/lib/esm/utils/valueChecker.js +80 -0
- package/lib/esm/utils/valueChecker.js.map +1 -0
- package/lib/types/@types/index.d.ts +62 -0
- package/lib/types/Input.d.ts +23 -0
- package/lib/types/Panel.d.ts +14 -0
- package/lib/types/PopContent.d.ts +15 -0
- package/lib/types/Selector.d.ts +23 -0
- package/lib/types/TimePicker.d.ts +61 -0
- package/lib/types/hooks/useFilter.d.ts +2 -0
- package/lib/types/index.d.ts +6 -0
- package/lib/types/utils/analysisFormat.d.ts +2 -0
- package/lib/types/utils/disposeInputValue.d.ts +2 -0
- package/lib/types/utils/generateSelectorData.d.ts +10 -0
- package/lib/types/utils/getFormatDefault.d.ts +2 -0
- package/lib/types/utils/getNowString.d.ts +2 -0
- package/lib/types/utils/getRange.d.ts +1 -0
- package/lib/types/utils/getSelectorTitle.d.ts +2 -0
- package/lib/types/utils/valueChecker.d.ts +8 -0
- package/package.json +66 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"analysisFormat.js","sources":["../../../src/utils/analysisFormat.ts"],"sourcesContent":[null],"names":["analysisFormat","format","searchList","identifier","type","TimePickerSelectorType","hour","minute","second","result","forEach","includes","push"],"mappings":";;;;;;;;;;;;;;;;;IAEaA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,MAAD;MACtBC,UAAU,GAAG,CACjB;AACEC,IAAAA,UAAU,EAAE,IADd;AAEEC,IAAAA,IAAI,EAAEC,4BAAAA,CAAuBC;AAF/B,GADiB,EAKjB;AACEH,IAAAA,UAAU,EAAE,IADd;AAEEC,IAAAA,IAAI,EAAEC,4BAAAA,CAAuBE;AAF/B,GALiB,EASjB;AACEJ,IAAAA,UAAU,EAAE,IADd;AAEEC,IAAAA,IAAI,EAAEC,4BAAAA,CAAuBG;AAF/B,GATiB;MAcbC,MAAM,GAA6B;AAEzCP,EAAAA,UAAU,CAACQ,OAAXR,CAAmB,cAAA;QAAGC,kBAAAA;QAAYC,YAAAA;;QAC5BH,MAAM,CAACU,QAAPV,CAAgBE,UAAhBF,GAA6B;AAC/BQ,MAAAA,MAAM,CAACG,IAAPH,CAAYL,IAAZK;;AAFJ,GAAAP;SAMOO;;;"}
|
@@ -0,0 +1,57 @@
|
|
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
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
|
16
|
+
var disposeInputValue = function disposeInputValue(format, original) {
|
17
|
+
var inputMaxLength = format.length; // 初步处理(去除前后空格,兼容中文:,去除无效字符,不允许超过长度)
|
18
|
+
|
19
|
+
var rough = original.trim().replace(/[\uff1a]/g, ':').replace(/[^0-9:]/g, '').slice(0, inputMaxLength); // 兼容直接在为空情况下输入 : 的情况
|
20
|
+
|
21
|
+
if (rough === ':') {
|
22
|
+
return '';
|
23
|
+
}
|
24
|
+
|
25
|
+
if (/:{2}$/.test(rough)) {
|
26
|
+
return rough.slice(0, rough.length - 1);
|
27
|
+
} // 已经输入两个数字了,现在新输入的一个字符不是 : 号
|
28
|
+
|
29
|
+
|
30
|
+
if (/[0-9]{2}[^:]$/.test(rough)) {
|
31
|
+
// 字符串已经到达最长长度,代表,此时,字符串是一个错乱的,直接忽略新输入的字符
|
32
|
+
if (rough.length === inputMaxLength) {
|
33
|
+
return rough.slice(0, rough.length - 1);
|
34
|
+
} // 字符串还有添加空间,则自动添加:在新字符前方
|
35
|
+
else {
|
36
|
+
return rough.slice(0, rough.length - 1) + ':' + rough.slice(rough.length - 1);
|
37
|
+
}
|
38
|
+
} // 在某个部分只输入了一个数字,然后输入 : 想要结束这个部分
|
39
|
+
|
40
|
+
|
41
|
+
if (/:[0-9]:$/.test(rough) || /^[0-9]:$/.test(rough)) {
|
42
|
+
// 已经达到最大输入了,则此时输入的 : 是无效的
|
43
|
+
// 自动转换,去除:,添加 0 在数字前
|
44
|
+
if (rough.length === inputMaxLength) {
|
45
|
+
return rough.slice(0, rough.length - 2) + '0' + rough.slice(rough.length - 2, rough.length - 1);
|
46
|
+
} // 输入没有达到最大,则,此时输入 : 是有效的
|
47
|
+
// 自动补充此章节,添加 0
|
48
|
+
else {
|
49
|
+
return rough.slice(0, rough.length - 2) + '0' + rough.slice(rough.length - 2, rough.length);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
return rough;
|
54
|
+
};
|
55
|
+
|
56
|
+
exports.disposeInputValue = disposeInputValue;
|
57
|
+
//# sourceMappingURL=disposeInputValue.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"disposeInputValue.js","sources":["../../../src/utils/disposeInputValue.ts"],"sourcesContent":[null],"names":["disposeInputValue","format","original","inputMaxLength","length","rough","trim","replace","slice","test"],"mappings":";;;;;;;;;;;;;;;IAEaA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,MAAD,EAA2BC,QAA3B;MACzBC,cAAc,GAAGF,MAAM,CAACG;;MAExBC,KAAK,GAAGH,QAAQ,CACnBI,IADWJ,GAEXK,OAFWL,CAEH,WAFGA,EAEU,GAFVA,EAGXK,OAHWL,CAGH,UAHGA,EAGS,EAHTA,EAIXM,KAJWN,CAIL,CAJKA,EAIFC,cAJED;;MAOVG,KAAK,KAAK,KAAK;WACV;;;MAGL,QAAQI,IAAR,CAAaJ,KAAb,GAAqB;WAChBA,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA;;;;MAIL,gBAAgBI,IAAhB,CAAqBJ,KAArB,GAA6B;;QAE3BA,KAAK,CAACD,MAANC,KAAiBF,gBAAgB;aAC5BE,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA;AADT;SAIK;eACIA,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA,IAAmC,GAAnCA,GAAyCA,KAAK,CAACG,KAANH,CAAYA,KAAK,CAACD,MAANC,GAAe,CAA3BA;;;;;MAKhD,WAAWI,IAAX,CAAgBJ,KAAhB,KAA0B,WAAWI,IAAX,CAAgBJ,KAAhB,GAAwB;;;QAGhDA,KAAK,CAACD,MAANC,KAAiBF,gBAAgB;aAEjCE,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA,IAAmC,GAAnCA,GAAyCA,KAAK,CAACG,KAANH,CAAYA,KAAK,CAACD,MAANC,GAAe,CAA3BA,EAA8BA,KAAK,CAACD,MAANC,GAAe,CAA7CA;AAF7C;;SAOK;eACIA,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA,IAAmC,GAAnCA,GAAyCA,KAAK,CAACG,KAANH,CAAYA,KAAK,CAACD,MAANC,GAAe,CAA3BA,EAA8BA,KAAK,CAACD,MAApCC;;;;SAI7CA;;;"}
|
@@ -0,0 +1,58 @@
|
|
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
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
|
16
|
+
var index = require('../@types/index.js');
|
17
|
+
|
18
|
+
var generateSelectorData = function generateSelectorData(info) {
|
19
|
+
var _disabledMap, _rangeMap, _stepMap;
|
20
|
+
|
21
|
+
var type = info.type,
|
22
|
+
filter = info.filter,
|
23
|
+
step = info.step,
|
24
|
+
separateValue = info.separateValue,
|
25
|
+
panelType = info.panelType,
|
26
|
+
selectorTypes = info.selectorTypes;
|
27
|
+
var result = [];
|
28
|
+
|
29
|
+
var getMatchTypeValue = function getMatchTypeValue(selectorType) {
|
30
|
+
var matchIndex = selectorTypes.indexOf(selectorType);
|
31
|
+
return matchIndex >= 0 ? separateValue[matchIndex] : -1;
|
32
|
+
};
|
33
|
+
|
34
|
+
var disabledMap = (_disabledMap = {}, _disabledMap[index.TimePickerSelectorType.hour] = function () {
|
35
|
+
return filter.disabledHours(panelType);
|
36
|
+
}, _disabledMap[index.TimePickerSelectorType.minute] = function () {
|
37
|
+
return filter.disabledMinutes(getMatchTypeValue(index.TimePickerSelectorType.hour), panelType);
|
38
|
+
}, _disabledMap[index.TimePickerSelectorType.second] = function () {
|
39
|
+
return filter.disabledSeconds(getMatchTypeValue(index.TimePickerSelectorType.hour), getMatchTypeValue(index.TimePickerSelectorType.minute), panelType);
|
40
|
+
}, _disabledMap);
|
41
|
+
var disabledNumbers = disabledMap[type]();
|
42
|
+
var rangeMap = (_rangeMap = {}, _rangeMap[index.TimePickerSelectorType.hour] = [0, 23], _rangeMap[index.TimePickerSelectorType.minute] = [0, 59], _rangeMap[index.TimePickerSelectorType.second] = [0, 59], _rangeMap);
|
43
|
+
var range = rangeMap[type];
|
44
|
+
var stepMap = (_stepMap = {}, _stepMap[index.TimePickerSelectorType.hour] = step.hourStep, _stepMap[index.TimePickerSelectorType.minute] = step.minuteStep, _stepMap[index.TimePickerSelectorType.second] = step.secondStep, _stepMap);
|
45
|
+
|
46
|
+
for (var index$1 = range[0]; index$1 <= range[1]; index$1 += stepMap[type]) {
|
47
|
+
result.push({
|
48
|
+
title: String(index$1).padStart(2, '0'),
|
49
|
+
disabled: disabledNumbers.includes(index$1),
|
50
|
+
id: String(index$1)
|
51
|
+
});
|
52
|
+
}
|
53
|
+
|
54
|
+
return result;
|
55
|
+
};
|
56
|
+
|
57
|
+
exports.generateSelectorData = generateSelectorData;
|
58
|
+
//# sourceMappingURL=generateSelectorData.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"generateSelectorData.js","sources":["../../../src/utils/generateSelectorData.ts"],"sourcesContent":[null],"names":["generateSelectorData","info","type","filter","step","separateValue","panelType","selectorTypes","result","getMatchTypeValue","selectorType","matchIndex","indexOf","disabledMap","TimePickerSelectorType","hour","disabledHours","minute","disabledMinutes","second","disabledSeconds","disabledNumbers","rangeMap","range","stepMap","hourStep","minuteStep","secondStep","index","push","title","String","padStart","disabled","includes","id"],"mappings":";;;;;;;;;;;;;;;;;IAQaA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,IAAD;;;MAQ1BC,IAAR,GAAwED,IAAxE,CAAQC;MAAMC,MAAd,GAAwEF,IAAxE,CAAcE;MAAQC,IAAtB,GAAwEH,IAAxE,CAAsBG;MAAMC,aAA5B,GAAwEJ,IAAxE,CAA4BI;MAAeC,SAA3C,GAAwEL,IAAxE,CAA2CK;MAAWC,aAAtD,GAAwEN,IAAxE,CAAsDM;MAChDC,MAAM,GAAmB;;MAEzBC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,YAAD;QAClBC,UAAU,GAAGJ,aAAa,CAACK,OAAdL,CAAsBG,YAAtBH;WACZI,UAAU,IAAI,CAAdA,GAAkBN,aAAa,CAACM,UAAD,CAA/BA,GAA8C,CAAC;AAFxD;;MAKME,WAAW,oCACdC,4BAAAA,CAAuBC,QAAO;WAAMZ,MAAM,CAACa,aAAPb,CAAqBG,SAArBH;AADtB,kBAEdW,4BAAAA,CAAuBG,UAAS;WAC/Bd,MAAM,CAACe,eAAPf,CAAuBM,iBAAiB,CAACK,4BAAAA,CAAuBC,IAAxB,CAAxCZ,EAAuEG,SAAvEH;AAHa,kBAIdW,4BAAAA,CAAuBK,UAAS;WAC/BhB,MAAM,CAACiB,eAAPjB,CACEM,iBAAiB,CAACK,4BAAAA,CAAuBC,IAAxB,CADnBZ,EAEEM,iBAAiB,CAACK,4BAAAA,CAAuBG,MAAxB,CAFnBd,EAGEG,SAHFH;AALa,iBAAA;MAWXkB,eAAe,GAAGR,WAAW,CAACX,IAAD,CAAXW;MAElBS,QAAQ,8BACXR,4BAAAA,CAAuBC,QAAO,CAAC,CAAD,EAAI,EAAJ,aAC9BD,4BAAAA,CAAuBG,UAAS,CAAC,CAAD,EAAI,EAAJ,aAChCH,4BAAAA,CAAuBK,UAAS,CAAC,CAAD,EAAI,EAAJ,YAHrB;MAKRI,KAAK,GAAGD,QAAQ,CAACpB,IAAD;MAEhBsB,OAAO,4BACVV,4BAAAA,CAAuBC,QAAOX,IAAI,CAACqB,mBACnCX,4BAAAA,CAAuBG,UAASb,IAAI,CAACsB,qBACrCZ,4BAAAA,CAAuBK,UAASf,IAAI,CAACuB,oBAH3B;;OAMR,IAAIC,OAAK,GAAGL,KAAK,CAAC,CAAD,GAAKK,OAAK,IAAIL,KAAK,CAAC,CAAD,GAAKK,OAAK,IAAIJ,OAAO,CAACtB,IAAD,GAAQ;AACpEM,IAAAA,MAAM,CAACqB,IAAPrB,CAAY;AACVsB,MAAAA,KAAK,EAAEC,MAAM,CAACH,OAAD,CAANG,CAAcC,QAAdD,CAAuB,CAAvBA,EAA0B,GAA1BA,CADG;AAEVE,MAAAA,QAAQ,EAAEZ,eAAe,CAACa,QAAhBb,CAAyBO,OAAzBP,CAFA;AAGVc,MAAAA,EAAE,EAAEJ,MAAM,CAACH,OAAD;AAHA,KAAZpB;;;SAOKA;;;"}
|
@@ -0,0 +1,21 @@
|
|
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
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
|
16
|
+
var getFormatDefault = function getFormatDefault(format) {
|
17
|
+
return format.replace(/[Hms]/g, '0');
|
18
|
+
};
|
19
|
+
|
20
|
+
exports.getFormatDefault = getFormatDefault;
|
21
|
+
//# sourceMappingURL=getFormatDefault.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getFormatDefault.js","sources":["../../../src/utils/getFormatDefault.ts"],"sourcesContent":[null],"names":["getFormatDefault","format","replace"],"mappings":";;;;;;;;;;;;;;;IAEaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,MAAD;SACvBA,MAAM,CAACC,OAAPD,CAAe,QAAfA,EAAyB,GAAzBA;;;"}
|
@@ -0,0 +1,32 @@
|
|
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
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
|
16
|
+
var index = require('../@types/index.js');
|
17
|
+
|
18
|
+
var analysisFormat = require('./analysisFormat.js');
|
19
|
+
|
20
|
+
var getNowString = function getNowString(formatString) {
|
21
|
+
var _timeMap;
|
22
|
+
|
23
|
+
var format = analysisFormat.analysisFormat(formatString);
|
24
|
+
var now = new Date();
|
25
|
+
var timeMap = (_timeMap = {}, _timeMap[index.TimePickerSelectorType.hour] = String(now.getHours()).padStart(2, '0'), _timeMap[index.TimePickerSelectorType.minute] = String(now.getMinutes()).padStart(2, '0'), _timeMap[index.TimePickerSelectorType.second] = String(now.getSeconds()).padStart(2, '0'), _timeMap);
|
26
|
+
return format.map(function (item) {
|
27
|
+
return timeMap[item];
|
28
|
+
}).join(':');
|
29
|
+
};
|
30
|
+
|
31
|
+
exports.getNowString = getNowString;
|
32
|
+
//# sourceMappingURL=getNowString.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getNowString.js","sources":["../../../src/utils/getNowString.ts"],"sourcesContent":[null],"names":["getNowString","formatString","format","analysisFormat","now","Date","timeMap","TimePickerSelectorType","hour","String","getHours","padStart","minute","getMinutes","second","getSeconds","map","item","join"],"mappings":";;;;;;;;;;;;;;;;;;;IAGaA,YAAY,GAAG,SAAfA,YAAe,CAACC,YAAD;;;MACpBC,MAAM,GAAGC,6BAAAA,CAAeF,YAAfE;MAETC,GAAG,GAAG,IAAIC,IAAJ;MACNC,OAAO,4BACVC,4BAAAA,CAAuBC,QAAOC,MAAM,CAACL,GAAG,CAACM,QAAJN,EAAD,CAANK,CAAuBE,QAAvBF,CAAgC,CAAhCA,EAAmC,GAAnCA,YAC9BF,4BAAAA,CAAuBK,UAASH,MAAM,CAACL,GAAG,CAACS,UAAJT,EAAD,CAANK,CAAyBE,QAAzBF,CAAkC,CAAlCA,EAAqC,GAArCA,YAChCF,4BAAAA,CAAuBO,UAASL,MAAM,CAACL,GAAG,CAACW,UAAJX,EAAD,CAANK,CAAyBE,QAAzBF,CAAkC,CAAlCA,EAAqC,GAArCA,WAHtB;SAKNP,MAAM,CAACc,GAAPd,CAAW,UAACe,IAAD;WAAUX,OAAO,CAACW,IAAD;AAA5B,GAAAf,EAAoCgB,IAApChB,CAAyC,GAAzCA;;;"}
|
@@ -0,0 +1,35 @@
|
|
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
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
|
16
|
+
var getRange = function getRange(min, max) {
|
17
|
+
var result = [];
|
18
|
+
|
19
|
+
if (min > max) {
|
20
|
+
return [];
|
21
|
+
}
|
22
|
+
|
23
|
+
if (min < 0 || max < 0) {
|
24
|
+
return [];
|
25
|
+
}
|
26
|
+
|
27
|
+
for (var counter = min; counter <= max; counter++) {
|
28
|
+
result.push(counter);
|
29
|
+
}
|
30
|
+
|
31
|
+
return result;
|
32
|
+
};
|
33
|
+
|
34
|
+
exports.getRange = getRange;
|
35
|
+
//# sourceMappingURL=getRange.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getRange.js","sources":["../../../src/utils/getRange.ts"],"sourcesContent":[null],"names":["getRange","min","max","result","counter","push"],"mappings":";;;;;;;;;;;;;;;IAAaA,QAAQ,GAAG,SAAXA,QAAW,CAACC,GAAD,EAAcC,GAAd;MAChBC,MAAM,GAAG;;MAEXF,GAAG,GAAGC,KAAK;WACN;;;MAGLD,GAAG,GAAG,CAANA,IAAWC,GAAG,GAAG,GAAG;WACf;;;OAGJ,IAAIE,OAAO,GAAGH,KAAKG,OAAO,IAAIF,KAAKE,OAAO,IAAI;AACjDD,IAAAA,MAAM,CAACE,IAAPF,CAAYC,OAAZD;;;SAGKA;;;"}
|
@@ -0,0 +1,87 @@
|
|
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
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
|
16
|
+
var index = require('../@types/index.js');
|
17
|
+
|
18
|
+
var analysisFormat = require('./analysisFormat.js');
|
19
|
+
|
20
|
+
var valueChecker = function valueChecker(info) {
|
21
|
+
var _checkerMap, _disabledMap, _stepMap;
|
22
|
+
|
23
|
+
var value = info.value,
|
24
|
+
format = info.format,
|
25
|
+
filter = info.filter,
|
26
|
+
panelType = info.panelType,
|
27
|
+
step = info.step;
|
28
|
+
var selectorTypes = analysisFormat.analysisFormat(format);
|
29
|
+
var checkerMap = (_checkerMap = {}, _checkerMap[index.TimePickerSelectorType.hour] = function (e) {
|
30
|
+
return e >= 0 && e <= 23;
|
31
|
+
}, _checkerMap[index.TimePickerSelectorType.minute] = function (e) {
|
32
|
+
return e >= 0 && e <= 59;
|
33
|
+
}, _checkerMap[index.TimePickerSelectorType.second] = function (e) {
|
34
|
+
return e >= 0 && e <= 59;
|
35
|
+
}, _checkerMap); // 允许为空的情况
|
36
|
+
|
37
|
+
if (value === '') {
|
38
|
+
return true;
|
39
|
+
}
|
40
|
+
|
41
|
+
if (!value) {
|
42
|
+
return false;
|
43
|
+
}
|
44
|
+
|
45
|
+
var separateParts = value.split(':').filter(function (item) {
|
46
|
+
return !!item && item.length === 2;
|
47
|
+
}).map(function (item) {
|
48
|
+
return Number(item);
|
49
|
+
});
|
50
|
+
|
51
|
+
if (separateParts.length !== selectorTypes.length) {
|
52
|
+
return false;
|
53
|
+
}
|
54
|
+
|
55
|
+
var getMatchTypeValue = function getMatchTypeValue(selectorType) {
|
56
|
+
var matchIndex = selectorTypes.indexOf(selectorType);
|
57
|
+
return matchIndex >= 0 ? separateParts[matchIndex] : -1;
|
58
|
+
};
|
59
|
+
|
60
|
+
var disabledMap = (_disabledMap = {}, _disabledMap[index.TimePickerSelectorType.hour] = function () {
|
61
|
+
return filter.disabledHours(panelType);
|
62
|
+
}, _disabledMap[index.TimePickerSelectorType.minute] = function () {
|
63
|
+
return filter.disabledMinutes(getMatchTypeValue(index.TimePickerSelectorType.hour), panelType);
|
64
|
+
}, _disabledMap[index.TimePickerSelectorType.second] = function () {
|
65
|
+
return filter.disabledSeconds(getMatchTypeValue(index.TimePickerSelectorType.hour), getMatchTypeValue(index.TimePickerSelectorType.minute), panelType);
|
66
|
+
}, _disabledMap);
|
67
|
+
var stepMap = (_stepMap = {}, _stepMap[index.TimePickerSelectorType.hour] = step.hourStep, _stepMap[index.TimePickerSelectorType.minute] = step.minuteStep, _stepMap[index.TimePickerSelectorType.second] = step.secondStep, _stepMap);
|
68
|
+
|
69
|
+
for (var counter = 0; counter < separateParts.length; counter++) {
|
70
|
+
var type = selectorTypes[counter];
|
71
|
+
var stepNumber = stepMap[type];
|
72
|
+
var disabledNumbers = disabledMap[type]();
|
73
|
+
var checker = checkerMap[type];
|
74
|
+
var checkNumber = separateParts[counter]; // 不符合要求的数字
|
75
|
+
// 被禁用的数字
|
76
|
+
// 不符合 step 的数字
|
77
|
+
|
78
|
+
if (!checker(checkNumber) || disabledNumbers.includes(checkNumber) || checkNumber % stepNumber !== 0) {
|
79
|
+
return false;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
|
83
|
+
return true;
|
84
|
+
};
|
85
|
+
|
86
|
+
exports.valueChecker = valueChecker;
|
87
|
+
//# sourceMappingURL=valueChecker.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"valueChecker.js","sources":["../../../src/utils/valueChecker.ts"],"sourcesContent":[null],"names":["valueChecker","info","value","format","filter","panelType","step","selectorTypes","analysisFormat","checkerMap","TimePickerSelectorType","hour","e","minute","second","separateParts","split","item","length","map","Number","getMatchTypeValue","selectorType","matchIndex","indexOf","disabledMap","disabledHours","disabledMinutes","disabledSeconds","stepMap","hourStep","minuteStep","secondStep","counter","type","stepNumber","disabledNumbers","checker","checkNumber","includes"],"mappings":";;;;;;;;;;;;;;;;;;;IASaA,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;;;MAOlBC,KAAR,GAAmDD,IAAnD,CAAQC;MAAOC,MAAf,GAAmDF,IAAnD,CAAeE;MAAQC,MAAvB,GAAmDH,IAAnD,CAAuBG;MAAQC,SAA/B,GAAmDJ,IAAnD,CAA+BI;MAAWC,IAA1C,GAAmDL,IAAnD,CAA0CK;MACpCC,aAAa,GAAGC,6BAAAA,CAAeL,MAAfK;MAChBC,UAAU,kCACbC,4BAAAA,CAAuBC,QAAO,UAACC,CAAD;WAAeA,CAAC,IAAI,CAALA,IAAUA,CAAC,IAAI;AAD/C,iBAEbF,4BAAAA,CAAuBG,UAAS,UAACD,CAAD;WAAeA,CAAC,IAAI,CAALA,IAAUA,CAAC,IAAI;AAFjD,iBAGbF,4BAAAA,CAAuBI,UAAS,UAACF,CAAD;WAAeA,CAAC,IAAI,CAALA,IAAUA,CAAC,IAAI;AAHjD,gBAAA;;MAMZV,KAAK,KAAK,IAAI;WACT;;;MAEL,CAACA,OAAO;WACH;;;MAGHa,aAAa,GAAGb,KAAK,CACxBc,KADmBd,CACb,GADaA,EAEnBE,MAFmBF,CAEZ,UAACe,IAAD;WAAU,CAAC,CAACA,IAAF,IAAUA,IAAI,CAACC,MAALD,KAAgB;AAFxB,GAAAf,EAGnBiB,GAHmBjB,CAGf,UAACe,IAAD;WAAUG,MAAM,CAACH,IAAD;AAHD,GAAAf;;MAKlBa,aAAa,CAACG,MAAdH,KAAyBR,aAAa,CAACW,QAAQ;WAC1C;;;MAGHG,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,YAAD;QAClBC,UAAU,GAAGhB,aAAa,CAACiB,OAAdjB,CAAsBe,YAAtBf;WACZgB,UAAU,IAAI,CAAdA,GAAkBR,aAAa,CAACQ,UAAD,CAA/BA,GAA8C,CAAC;AAFxD;;MAKME,WAAW,oCACdf,4BAAAA,CAAuBC,QAAO;WAAMP,MAAM,CAACsB,aAAPtB,CAAqBC,SAArBD;AADtB,kBAEdM,4BAAAA,CAAuBG,UAAS;WAC/BT,MAAM,CAACuB,eAAPvB,CAAuBiB,iBAAiB,CAACX,4BAAAA,CAAuBC,IAAxB,CAAxCP,EAAuEC,SAAvED;AAHa,kBAIdM,4BAAAA,CAAuBI,UAAS;WAC/BV,MAAM,CAACwB,eAAPxB,CACEiB,iBAAiB,CAACX,4BAAAA,CAAuBC,IAAxB,CADnBP,EAEEiB,iBAAiB,CAACX,4BAAAA,CAAuBG,MAAxB,CAFnBT,EAGEC,SAHFD;AALa,iBAAA;MAYXyB,OAAO,4BACVnB,4BAAAA,CAAuBC,QAAOL,IAAI,CAACwB,mBACnCpB,4BAAAA,CAAuBG,UAASP,IAAI,CAACyB,qBACrCrB,4BAAAA,CAAuBI,UAASR,IAAI,CAAC0B,oBAH3B;;OAMR,IAAIC,OAAO,GAAG,GAAGA,OAAO,GAAGlB,aAAa,CAACG,QAAQe,OAAO,IAAI;QACzDC,IAAI,GAAG3B,aAAa,CAAC0B,OAAD;QACpBE,UAAU,GAAGN,OAAO,CAACK,IAAD;QACpBE,eAAe,GAAGX,WAAW,CAACS,IAAD,CAAXT;QAClBY,OAAO,GAAG5B,UAAU,CAACyB,IAAD;QACpBI,WAAW,GAAGvB,aAAa,CAACkB,OAAD,EAL8B;;;;QAU7D,CAACI,OAAO,CAACC,WAAD,CAAR,IACAF,eAAe,CAACG,QAAhBH,CAAyBE,WAAzBF,CADA,IAEAE,WAAW,GAAGH,UAAdG,KAA6B,GAC7B;aACO;;;;SAIJ;;;"}
|
@@ -0,0 +1,19 @@
|
|
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
|
+
var TimePickerSelectorType;
|
11
|
+
|
12
|
+
(function (TimePickerSelectorType) {
|
13
|
+
TimePickerSelectorType[TimePickerSelectorType["hour"] = 1] = "hour";
|
14
|
+
TimePickerSelectorType[TimePickerSelectorType["minute"] = 2] = "minute";
|
15
|
+
TimePickerSelectorType[TimePickerSelectorType["second"] = 3] = "second";
|
16
|
+
})(TimePickerSelectorType || (TimePickerSelectorType = {}));
|
17
|
+
|
18
|
+
export { TimePickerSelectorType };
|
19
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/@types/index.ts"],"sourcesContent":[null],"names":["TimePickerSelectorType"],"mappings":";;;;;;;;;IAMYA;;AAAZ,WAAYA;AACVA,EAAAA,0DAAAA,SAAAA;AACAA,EAAAA,4DAAAA,WAAAA;AACAA,EAAAA,4DAAAA,WAAAA;AAHF,CAAA,EAAYA,sBAAsB,KAAtBA,sBAAsB,KAAA,CAAlC;;"}
|
package/lib/esm/Input.js
ADDED
@@ -0,0 +1,154 @@
|
|
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, useMemo, useState, useCallback, useEffect, useImperativeHandle } from 'react';
|
11
|
+
import { cx } from '@hi-ui/classname';
|
12
|
+
import { valueChecker } from './utils/valueChecker.js';
|
13
|
+
import { disposeInputValue } from './utils/disposeInputValue.js';
|
14
|
+
var Input = /*#__PURE__*/forwardRef(function (props, ref) {
|
15
|
+
var _cx;
|
16
|
+
|
17
|
+
var prefix = props.prefix,
|
18
|
+
value = props.value,
|
19
|
+
format = props.format,
|
20
|
+
hourStep = props.hourStep,
|
21
|
+
minuteStep = props.minuteStep,
|
22
|
+
secondStep = props.secondStep,
|
23
|
+
disabledHours = props.disabledHours,
|
24
|
+
disabledMinutes = props.disabledMinutes,
|
25
|
+
disabledSeconds = props.disabledSeconds,
|
26
|
+
type = props.type,
|
27
|
+
placeholders = props.placeholders,
|
28
|
+
_onChange = props.onChange,
|
29
|
+
_onFocus = props.onFocus,
|
30
|
+
disabled = props.disabled,
|
31
|
+
onValidChange = props.onValidChange;
|
32
|
+
var componentClass = useMemo(function () {
|
33
|
+
return prefix + "__input";
|
34
|
+
}, [prefix]);
|
35
|
+
|
36
|
+
var _useState = useState(value),
|
37
|
+
cacheValue = _useState[0],
|
38
|
+
setCacheValue = _useState[1];
|
39
|
+
|
40
|
+
var getPanelType = useCallback(function (index) {
|
41
|
+
if (type === 'single') {
|
42
|
+
return 'single';
|
43
|
+
} else {
|
44
|
+
return index === 0 ? 'range-start' : 'range-end';
|
45
|
+
}
|
46
|
+
}, [type]); // 检查值是否合规
|
47
|
+
|
48
|
+
var validChecker = useCallback(function (checkValue, panelType) {
|
49
|
+
return valueChecker({
|
50
|
+
value: checkValue,
|
51
|
+
format: format,
|
52
|
+
filter: {
|
53
|
+
disabledSeconds: disabledSeconds,
|
54
|
+
disabledMinutes: disabledMinutes,
|
55
|
+
disabledHours: disabledHours
|
56
|
+
},
|
57
|
+
step: {
|
58
|
+
hourStep: hourStep,
|
59
|
+
minuteStep: minuteStep,
|
60
|
+
secondStep: secondStep
|
61
|
+
},
|
62
|
+
panelType: panelType
|
63
|
+
});
|
64
|
+
}, [hourStep, minuteStep, secondStep, disabledHours, disabledMinutes, disabledSeconds, format]); // 缓存同步外部
|
65
|
+
|
66
|
+
useEffect(function () {
|
67
|
+
setCacheValue(function (pre) {
|
68
|
+
var result = value.slice(0, type === 'single' ? 1 : 2);
|
69
|
+
|
70
|
+
if (result.join('') !== pre.join('')) {
|
71
|
+
return result;
|
72
|
+
}
|
73
|
+
|
74
|
+
return pre;
|
75
|
+
});
|
76
|
+
}, [value, type]);
|
77
|
+
var judgeIsValid = useCallback(function (disposeValue) {
|
78
|
+
var valueValid = disposeValue.every(function (item, index) {
|
79
|
+
return validChecker(item, getPanelType(index));
|
80
|
+
});
|
81
|
+
|
82
|
+
if (type === 'range' && valueValid) {
|
83
|
+
// 数据格式正确,检查范围数据
|
84
|
+
// 全为空字符串,则认为是合法的(还未选择)
|
85
|
+
if (disposeValue.every(function (item) {
|
86
|
+
return item === '';
|
87
|
+
})) {
|
88
|
+
return true;
|
89
|
+
} // 结束时间要>开始时间
|
90
|
+
|
91
|
+
|
92
|
+
return disposeValue[1] > disposeValue[0];
|
93
|
+
} else {
|
94
|
+
return valueValid;
|
95
|
+
}
|
96
|
+
}, [validChecker, getPanelType, type]);
|
97
|
+
var renderInput = useCallback(function (matchValue, index) {
|
98
|
+
var dispose = function dispose(disposeValue, needValid) {
|
99
|
+
if (needValid === void 0) {
|
100
|
+
needValid = true;
|
101
|
+
}
|
102
|
+
|
103
|
+
var newValue = disposeInputValue(format, disposeValue);
|
104
|
+
var result = [].concat(cacheValue);
|
105
|
+
result[index] = newValue;
|
106
|
+
setCacheValue(result); // 合法,则通知外部
|
107
|
+
|
108
|
+
if (!needValid || validChecker(newValue, getPanelType(index))) {
|
109
|
+
return [].concat(result);
|
110
|
+
}
|
111
|
+
|
112
|
+
return undefined;
|
113
|
+
};
|
114
|
+
|
115
|
+
return /*#__PURE__*/React.createElement("div", {
|
116
|
+
className: componentClass + "__wrapper"
|
117
|
+
}, /*#__PURE__*/React.createElement("input", {
|
118
|
+
className: componentClass + "__interact-area",
|
119
|
+
onChange: function onChange(e) {
|
120
|
+
var result = dispose(e.target.value);
|
121
|
+
|
122
|
+
if (result) {
|
123
|
+
_onChange(result);
|
124
|
+
}
|
125
|
+
},
|
126
|
+
disabled: disabled,
|
127
|
+
onFocus: function onFocus() {
|
128
|
+
_onFocus();
|
129
|
+
},
|
130
|
+
value: matchValue,
|
131
|
+
placeholder: placeholders[index]
|
132
|
+
}));
|
133
|
+
}, [placeholders, format, _onFocus, _onChange, cacheValue, getPanelType, // onBlur,
|
134
|
+
validChecker, componentClass, disabled, type]); // 通知外部,输入框内容合法性变更
|
135
|
+
|
136
|
+
useEffect(function () {
|
137
|
+
onValidChange(judgeIsValid(cacheValue));
|
138
|
+
}, [judgeIsValid, cacheValue, onValidChange]);
|
139
|
+
useImperativeHandle(ref, function () {
|
140
|
+
return {
|
141
|
+
refresh: function refresh() {
|
142
|
+
return setCacheValue([].concat(value));
|
143
|
+
}
|
144
|
+
};
|
145
|
+
}, [value]);
|
146
|
+
return /*#__PURE__*/React.createElement("div", {
|
147
|
+
className: cx(componentClass, (_cx = {}, _cx[componentClass + "--not-valid"] = !judgeIsValid(cacheValue), _cx[componentClass + "--range"] = type === 'range', _cx[componentClass + "--disabled"] = disabled, _cx))
|
148
|
+
}, renderInput(cacheValue[0], 0), type === 'range' && /*#__PURE__*/React.createElement("div", {
|
149
|
+
className: componentClass + "__range-separator"
|
150
|
+
}, "\u81F3"), type === 'range' && renderInput(cacheValue[1], 1));
|
151
|
+
});
|
152
|
+
Input.displayName = 'Input';
|
153
|
+
export { Input };
|
154
|
+
//# sourceMappingURL=Input.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["../../src/Input.tsx"],"sourcesContent":[null],"names":["Input","forwardRef","props","ref","prefix","value","format","hourStep","minuteStep","secondStep","disabledHours","disabledMinutes","disabledSeconds","type","placeholders","onChange","onFocus","disabled","onValidChange","componentClass","useMemo","useState","cacheValue","setCacheValue","getPanelType","useCallback","index","validChecker","checkValue","panelType","valueChecker","filter","step","useEffect","pre","result","slice","join","judgeIsValid","disposeValue","valueValid","every","item","renderInput","matchValue","dispose","needValid","newValue","disposeInputValue","undefined","React","className","e","target","placeholder","useImperativeHandle","refresh","cx","displayName"],"mappings":"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"}
|
package/lib/esm/Panel.js
ADDED
@@ -0,0 +1,124 @@
|
|
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 { analysisFormat } from './utils/analysisFormat.js';
|
12
|
+
import { generateSelectorData } from './utils/generateSelectorData.js';
|
13
|
+
import { cx } from '@hi-ui/classname';
|
14
|
+
import { Selector, SelectorPosition } from './Selector.js';
|
15
|
+
|
16
|
+
var Panel = function Panel(props) {
|
17
|
+
var hourStep = props.hourStep,
|
18
|
+
secondStep = props.secondStep,
|
19
|
+
minuteStep = props.minuteStep,
|
20
|
+
disabledHours = props.disabledHours,
|
21
|
+
disabledMinutes = props.disabledMinutes,
|
22
|
+
disabledSeconds = props.disabledSeconds,
|
23
|
+
prefix = props.prefix,
|
24
|
+
format = props.format,
|
25
|
+
value = props.value,
|
26
|
+
panel = props.panel,
|
27
|
+
_onChange = props.onChange,
|
28
|
+
itemHeight = props.itemHeight,
|
29
|
+
fullDisplayItemNumber = props.fullDisplayItemNumber;
|
30
|
+
var componentPrefix = useMemo(function () {
|
31
|
+
return prefix + "__panel";
|
32
|
+
}, [prefix]);
|
33
|
+
var selectorTypes = useMemo(function () {
|
34
|
+
return analysisFormat(format);
|
35
|
+
}, [format]);
|
36
|
+
var separateValue = useMemo(function () {
|
37
|
+
return value.split(':').filter(function (item) {
|
38
|
+
return item;
|
39
|
+
}).map(function (item) {
|
40
|
+
return Number(item);
|
41
|
+
});
|
42
|
+
}, [value]);
|
43
|
+
var getSelectorData = useCallback(function (type) {
|
44
|
+
return generateSelectorData({
|
45
|
+
panelType: panel,
|
46
|
+
type: type,
|
47
|
+
filter: {
|
48
|
+
disabledHours: disabledHours,
|
49
|
+
disabledMinutes: disabledMinutes,
|
50
|
+
disabledSeconds: disabledSeconds
|
51
|
+
},
|
52
|
+
step: {
|
53
|
+
secondStep: secondStep,
|
54
|
+
hourStep: hourStep,
|
55
|
+
minuteStep: minuteStep
|
56
|
+
},
|
57
|
+
selectorTypes: selectorTypes,
|
58
|
+
separateValue: separateValue
|
59
|
+
});
|
60
|
+
}, [disabledHours, disabledMinutes, disabledSeconds, secondStep, hourStep, minuteStep, panel, selectorTypes, separateValue]); // const renderHeader = useCallback(() => {
|
61
|
+
// return (
|
62
|
+
// <div className={`${componentPrefix}__header`}>
|
63
|
+
// {selectorTypes.map((item) => (
|
64
|
+
// <div className={`${componentPrefix}__header-title`} key={item}>
|
65
|
+
// {getSelectorTitle(item)}
|
66
|
+
// </div>
|
67
|
+
// ))}
|
68
|
+
// </div>
|
69
|
+
// )
|
70
|
+
// }, [selectorTypes, componentPrefix])
|
71
|
+
|
72
|
+
var renderSelectors = useCallback(function () {
|
73
|
+
return /*#__PURE__*/React.createElement("div", {
|
74
|
+
className: componentPrefix + "__selector-container"
|
75
|
+
}, selectorTypes.map(function (type, index) {
|
76
|
+
var _cx;
|
77
|
+
|
78
|
+
var position = selectorTypes.length === 1 ? SelectorPosition.single : SelectorPosition.middle;
|
79
|
+
|
80
|
+
if (selectorTypes.length > 1 && index === 0) {
|
81
|
+
position = SelectorPosition.left;
|
82
|
+
} else if (selectorTypes.length > 1 && index === selectorTypes.length - 1) {
|
83
|
+
position = SelectorPosition.right;
|
84
|
+
}
|
85
|
+
|
86
|
+
return /*#__PURE__*/React.createElement("div", {
|
87
|
+
className: componentPrefix + "__selector-content",
|
88
|
+
key: type
|
89
|
+
}, /*#__PURE__*/React.createElement(Selector, {
|
90
|
+
value: String(separateValue[index]),
|
91
|
+
prefix: prefix,
|
92
|
+
position: position,
|
93
|
+
itemHeight: itemHeight,
|
94
|
+
fullDisplayItemNumber: fullDisplayItemNumber,
|
95
|
+
onChange: function onChange(e) {
|
96
|
+
var result = [].concat(separateValue).slice(0, selectorTypes.length); // 如果 value = '',则代表为空值
|
97
|
+
// 此时选择任意项,其他项直接视作 0
|
98
|
+
|
99
|
+
if (value === '') {
|
100
|
+
result = [0, 0, 0].slice(0, selectorTypes.length);
|
101
|
+
}
|
102
|
+
|
103
|
+
result[index] = Number(e.id);
|
104
|
+
|
105
|
+
_onChange(result.map(function (item) {
|
106
|
+
return String(item).padStart(2, '0');
|
107
|
+
}).join(':'));
|
108
|
+
},
|
109
|
+
data: getSelectorData(type)
|
110
|
+
}), /*#__PURE__*/React.createElement("div", {
|
111
|
+
className: cx(componentPrefix + "__indicator", (_cx = {}, _cx[componentPrefix + "__indicator--left"] = index === 0, _cx[componentPrefix + "__indicator--right"] = index === selectorTypes.length - 1, _cx)),
|
112
|
+
style: {
|
113
|
+
height: itemHeight + "px"
|
114
|
+
}
|
115
|
+
}));
|
116
|
+
}));
|
117
|
+
}, [selectorTypes, componentPrefix, prefix, getSelectorData, _onChange, separateValue, itemHeight, fullDisplayItemNumber, value]);
|
118
|
+
return /*#__PURE__*/React.createElement("div", {
|
119
|
+
className: componentPrefix
|
120
|
+
}, renderSelectors());
|
121
|
+
};
|
122
|
+
|
123
|
+
export { Panel };
|
124
|
+
//# sourceMappingURL=Panel.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Panel.js","sources":["../../src/Panel.tsx"],"sourcesContent":[null],"names":["Panel","props","hourStep","secondStep","minuteStep","disabledHours","disabledMinutes","disabledSeconds","prefix","format","value","panel","onChange","itemHeight","fullDisplayItemNumber","componentPrefix","useMemo","selectorTypes","analysisFormat","separateValue","split","filter","item","map","Number","getSelectorData","useCallback","type","generateSelectorData","panelType","step","renderSelectors","React","className","index","position","length","SelectorPosition","single","middle","left","right","key","Selector","String","e","result","slice","id","padStart","join","data","cx","style","height"],"mappings":"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"}
|