bhd-components 0.9.3 → 0.9.4
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/dist/index.esm.es5.development.css +395 -394
- package/dist/index.esm.es5.development.js +124 -41
- package/dist/index.esm.es5.production.css +1 -1
- package/dist/index.esm.es5.production.js +1 -1
- package/dist/vendor.esm.es5.development.js +906 -783
- package/dist/vendor.esm.es5.production.js +2 -2
- package/es2017/bhdDatePicker/index.js +97 -37
- package/es2017/bhdDatePicker/index.module.less +7 -22
- package/es2017/i18n/en_US.js +13 -1
- package/es2017/i18n/zh_CN.js +13 -1
- package/esm/bhdDatePicker/index.js +97 -37
- package/esm/bhdDatePicker/index.module.less +7 -22
- package/esm/i18n/en_US.js +13 -1
- package/esm/i18n/zh_CN.js +13 -1
- package/package.json +1 -1
|
@@ -2,13 +2,29 @@ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
|
2
2
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
import { useState, useEffect, useRef } from "react";
|
|
5
|
+
import { useState, useEffect, useRef, useCallback } from "react";
|
|
6
6
|
import styles from "./index.module.less";
|
|
7
7
|
import { ConfigProvider, Button, DatePicker } from "antd";
|
|
8
8
|
import { CustomArrow } from "../icons";
|
|
9
9
|
// import dayjs from "dayjs";
|
|
10
|
+
// import type { Dayjs } from "dayjs";
|
|
10
11
|
import i18Conversion from "../i18n";
|
|
11
12
|
const { RangePicker } = DatePicker;
|
|
13
|
+
let months = [
|
|
14
|
+
"一月",
|
|
15
|
+
"二月",
|
|
16
|
+
"三月",
|
|
17
|
+
"四月",
|
|
18
|
+
"五月",
|
|
19
|
+
"六月",
|
|
20
|
+
"七月",
|
|
21
|
+
"八月",
|
|
22
|
+
"九月",
|
|
23
|
+
"十月",
|
|
24
|
+
"十一月",
|
|
25
|
+
"十二月"
|
|
26
|
+
];
|
|
27
|
+
//January_February_March_April_May_June_July_August_September_October_November_December
|
|
12
28
|
const BhdDatePicker = (props)=>{
|
|
13
29
|
const lang = ConfigProvider.lang === "en" ? "en_US" : "zh_CN";
|
|
14
30
|
// if (lang === "en_US") {
|
|
@@ -18,6 +34,7 @@ const BhdDatePicker = (props)=>{
|
|
|
18
34
|
// const zhCN = require("dayjs/locale/zh-cn");
|
|
19
35
|
// dayjs.locale(zhCN);
|
|
20
36
|
// }
|
|
37
|
+
const id = "BhdDatePicker_" + new Date().getTime();
|
|
21
38
|
// 默认格式
|
|
22
39
|
const getDefaultFormat = ()=>{
|
|
23
40
|
if (props.format) {
|
|
@@ -47,7 +64,7 @@ const BhdDatePicker = (props)=>{
|
|
|
47
64
|
}
|
|
48
65
|
};
|
|
49
66
|
// 自己组件内使用的,或者自己处理的
|
|
50
|
-
let { kind = "single", extraItems, extraReadonly = false, useType = "", open = false, mode, picker, value = props.kind === "range" ? [] : "", format = getDefaultFormat(), presets = [], className, popupClassName, showTime, showNow = true, allowClear = true, onClick, onBlur, onChange, onOk, onCalendarChange, onOpenChange, onPanelChange, disabledDate, cellRender, renderExtraFooter } = props;
|
|
67
|
+
let { kind = "single", extraItems, extraReadonly = false, useType = "", open = false, mode, picker, value = props.kind === "range" ? [] : "", format = getDefaultFormat(), presets = [], className, popupClassName, showTime, showNow = true, showToday = true, allowClear = true, onClick, onBlur, onChange, onOk, onCalendarChange, onOpenChange, onPanelChange, disabledDate, cellRender, renderExtraFooter } = props;
|
|
51
68
|
const bhdDatePickerRef = useRef(null);
|
|
52
69
|
const [panelOpen, setPanelOpen] = useState(open);
|
|
53
70
|
const [panelMode, setPanelMode] = useState("date");
|
|
@@ -62,6 +79,7 @@ const BhdDatePicker = (props)=>{
|
|
|
62
79
|
const [selectedRangeDate, setSelectedRangeDate] = useState(value);
|
|
63
80
|
const [selectedRangeDateString, setSelectedRangeDateString] = useState([]);
|
|
64
81
|
const [rangeOpenChange, setRangeOpenChange] = useState(false); // 用于范围选择失去焦点后,判断是否关闭
|
|
82
|
+
const isChange = useRef(false);
|
|
65
83
|
useEffect(()=>{
|
|
66
84
|
setDefaultMode();
|
|
67
85
|
if (kind === "range") {
|
|
@@ -79,7 +97,18 @@ const BhdDatePicker = (props)=>{
|
|
|
79
97
|
});
|
|
80
98
|
}
|
|
81
99
|
}
|
|
100
|
+
return ()=>{
|
|
101
|
+
var _document_getElementsByClassName__getElementsByClassName, _document_getElementsByClassName_, _document_getElementsByClassName, _btn;
|
|
102
|
+
const btn = (_document_getElementsByClassName = document.getElementsByClassName(id)) === null || _document_getElementsByClassName === void 0 ? void 0 : (_document_getElementsByClassName_ = _document_getElementsByClassName[0]) === null || _document_getElementsByClassName_ === void 0 ? void 0 : (_document_getElementsByClassName__getElementsByClassName = _document_getElementsByClassName_.getElementsByClassName("bhd-picker-today-btn")) === null || _document_getElementsByClassName__getElementsByClassName === void 0 ? void 0 : _document_getElementsByClassName__getElementsByClassName[0];
|
|
103
|
+
(_btn = btn) === null || _btn === void 0 ? void 0 : _btn.removeEventListener("click", todayClick);
|
|
104
|
+
};
|
|
82
105
|
}, []);
|
|
106
|
+
useEffect(()=>{
|
|
107
|
+
isChange.current = true;
|
|
108
|
+
}, [
|
|
109
|
+
selectedDate,
|
|
110
|
+
selectedRangeDate
|
|
111
|
+
]);
|
|
83
112
|
// 传给 DatePicker 的props参数
|
|
84
113
|
const getConfig = ()=>{
|
|
85
114
|
let config = _object_spread_props(_object_spread({
|
|
@@ -144,6 +173,7 @@ const BhdDatePicker = (props)=>{
|
|
|
144
173
|
config.allowClear = false; // 日程安排查看时,不显示清除按钮
|
|
145
174
|
}
|
|
146
175
|
}
|
|
176
|
+
config.popupClassName = `${config.popupClassName} ${id}`;
|
|
147
177
|
return config;
|
|
148
178
|
};
|
|
149
179
|
// 设置默认mode
|
|
@@ -182,9 +212,14 @@ const BhdDatePicker = (props)=>{
|
|
|
182
212
|
}
|
|
183
213
|
// 月份 中文模式下显示全名称(例:一月),英文模式下显示短名称(例:Jan)
|
|
184
214
|
if (info.type === "month") {
|
|
215
|
+
// return (
|
|
216
|
+
// <div className={`${"bhd-picker-cell-inner"}`}>
|
|
217
|
+
// {current.format(dayjs.locale() === "zh-cn" ? "MMMM" : "MMM")}
|
|
218
|
+
// </div>
|
|
219
|
+
// );
|
|
185
220
|
return /*#__PURE__*/ _jsx("div", {
|
|
186
221
|
className: `${"bhd-picker-cell-inner"}`,
|
|
187
|
-
children: current.format(
|
|
222
|
+
children: i18Conversion(months[Number(current.format("M")) - 1])
|
|
188
223
|
});
|
|
189
224
|
}
|
|
190
225
|
return info.originNode;
|
|
@@ -214,14 +249,14 @@ const BhdDatePicker = (props)=>{
|
|
|
214
249
|
children: [
|
|
215
250
|
renderExtraFooter && /*#__PURE__*/ _jsx("div", {
|
|
216
251
|
className: "bhddatepicker-picker-footer-extra-extend",
|
|
217
|
-
children: renderExtraFooter()
|
|
252
|
+
children: renderExtraFooter(mode)
|
|
218
253
|
}),
|
|
219
254
|
!showTime ? /*#__PURE__*/ _jsx(_Fragment, {
|
|
220
255
|
children: /*#__PURE__*/ _jsxs("ul", {
|
|
221
256
|
className: "bhd-picker-ranges",
|
|
222
257
|
children: [
|
|
223
258
|
selfRenderPresets(),
|
|
224
|
-
|
|
259
|
+
renderToday(),
|
|
225
260
|
/*#__PURE__*/ _jsx("li", {
|
|
226
261
|
className: "bhd-picker-ok",
|
|
227
262
|
children: /*#__PURE__*/ _jsx(Button, {
|
|
@@ -241,20 +276,24 @@ const BhdDatePicker = (props)=>{
|
|
|
241
276
|
});
|
|
242
277
|
};
|
|
243
278
|
// 渲染今天
|
|
244
|
-
const
|
|
279
|
+
const renderToday = ()=>{
|
|
245
280
|
// 显示now
|
|
246
|
-
if (
|
|
281
|
+
if (showToday) {
|
|
247
282
|
var _extraItems;
|
|
248
283
|
// 日程安排时: extraItems中今天是否是可选或者已选择状态
|
|
249
|
-
let hasNow = ((_extraItems = extraItems) === null || _extraItems === void 0 ? void 0 : _extraItems.filter((item)=>item.status !== "noselectable"
|
|
284
|
+
let hasNow = ((_extraItems = extraItems) === null || _extraItems === void 0 ? void 0 : _extraItems.filter((item)=>item.status !== "noselectable" && // item.date.format(format) === dayjs().format(format)
|
|
285
|
+
item.date.format("YYYYMMDD") === getToday()).length) > 0;
|
|
250
286
|
if (kind === "single" || kind === "extra" && hasNow) {
|
|
251
287
|
if (mode === "date" || mode === undefined) {
|
|
252
288
|
return /*#__PURE__*/ _jsx("li", {
|
|
253
289
|
className: "bhd-picker-now",
|
|
254
290
|
children: /*#__PURE__*/ _jsx("a", {
|
|
255
291
|
className: "bhd-picker-now-btn",
|
|
292
|
+
style: {
|
|
293
|
+
visibility: "hidden"
|
|
294
|
+
},
|
|
256
295
|
onClick: todayClick,
|
|
257
|
-
children:
|
|
296
|
+
children: i18Conversion("今天")
|
|
258
297
|
})
|
|
259
298
|
});
|
|
260
299
|
}
|
|
@@ -262,6 +301,11 @@ const BhdDatePicker = (props)=>{
|
|
|
262
301
|
}
|
|
263
302
|
return null;
|
|
264
303
|
};
|
|
304
|
+
// 获取到年月日
|
|
305
|
+
const getToday = ()=>{
|
|
306
|
+
const date = new Date();
|
|
307
|
+
return date.getFullYear().toString() + date.getMonth().toString().padStart(2, "0") + date.getDay().toString().padStart(2, "0");
|
|
308
|
+
};
|
|
265
309
|
// 渲染预设
|
|
266
310
|
const selfRenderPresets = ()=>{
|
|
267
311
|
return /*#__PURE__*/ _jsx("li", {
|
|
@@ -287,42 +331,58 @@ const BhdDatePicker = (props)=>{
|
|
|
287
331
|
setPanelOpen(true);
|
|
288
332
|
}
|
|
289
333
|
} else {
|
|
290
|
-
if (
|
|
291
|
-
onChange && onChange(
|
|
334
|
+
if (selectedDateRef.current && selectedDateStringRef.current) {
|
|
335
|
+
onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
|
|
292
336
|
setPanelOpen(false);
|
|
293
337
|
}
|
|
294
338
|
}
|
|
295
339
|
};
|
|
296
340
|
// 今天点击
|
|
297
|
-
const todayClick = ()=>{
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
341
|
+
const todayClick = useCallback(()=>{
|
|
342
|
+
setTimeout(()=>{
|
|
343
|
+
okClick();
|
|
344
|
+
}, 0);
|
|
345
|
+
}, []);
|
|
346
|
+
const todayClickEventListener = (value)=>{
|
|
347
|
+
if (!value) return;
|
|
348
|
+
if (showToday) {
|
|
349
|
+
var _document_getElementsByClassName__getElementsByClassName, _document_getElementsByClassName_, _document_getElementsByClassName;
|
|
350
|
+
const btn = (_document_getElementsByClassName = document.getElementsByClassName(id)) === null || _document_getElementsByClassName === void 0 ? void 0 : (_document_getElementsByClassName_ = _document_getElementsByClassName[0]) === null || _document_getElementsByClassName_ === void 0 ? void 0 : (_document_getElementsByClassName__getElementsByClassName = _document_getElementsByClassName_.getElementsByClassName("bhd-picker-today-btn")) === null || _document_getElementsByClassName__getElementsByClassName === void 0 ? void 0 : _document_getElementsByClassName__getElementsByClassName[0];
|
|
351
|
+
if (value) {
|
|
352
|
+
var _btn, _btn1;
|
|
353
|
+
(_btn = btn) === null || _btn === void 0 ? void 0 : _btn.removeEventListener("click", todayClick);
|
|
354
|
+
(_btn1 = btn) === null || _btn1 === void 0 ? void 0 : _btn1.addEventListener("click", todayClick, {
|
|
355
|
+
once: true
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
}
|
|
310
359
|
};
|
|
311
360
|
//预设点击
|
|
312
361
|
const presetClick = (info)=>{
|
|
313
362
|
console.log(typeof info.value);
|
|
314
363
|
const value = typeof info.value === "function" ? info.value() : info.value;
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
364
|
+
if (kind === "range") {
|
|
365
|
+
const valueString = [
|
|
366
|
+
value[0].format(format),
|
|
367
|
+
value[1].format(format)
|
|
368
|
+
];
|
|
369
|
+
setSelectedRangeDate(value);
|
|
370
|
+
setSelectedRangeDateString(valueString);
|
|
371
|
+
onChange && onChange(value, valueString);
|
|
372
|
+
setPanelOpen(false);
|
|
373
|
+
} else {
|
|
374
|
+
const valueString = value.format(format);
|
|
375
|
+
setSelectedDate((prevState)=>{
|
|
376
|
+
selectedDateRef.current = value;
|
|
377
|
+
return selectedDateRef.current;
|
|
378
|
+
});
|
|
379
|
+
setSelectedDateString((prevState)=>{
|
|
380
|
+
selectedDateStringRef.current = valueString;
|
|
381
|
+
return selectedDateStringRef.current;
|
|
382
|
+
});
|
|
383
|
+
onChange && onChange(value, valueString);
|
|
384
|
+
setPanelOpen(false);
|
|
385
|
+
}
|
|
326
386
|
};
|
|
327
387
|
return /*#__PURE__*/ _jsxs("span", {
|
|
328
388
|
className: `${styles.bhdDatePicker}`,
|
|
@@ -330,8 +390,8 @@ const BhdDatePicker = (props)=>{
|
|
|
330
390
|
children: [
|
|
331
391
|
(kind === "single" || kind === "extra") && /*#__PURE__*/ _jsx(_Fragment, {
|
|
332
392
|
children: /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
|
|
393
|
+
id: id,
|
|
333
394
|
value: selectedDate,
|
|
334
|
-
showNow: showTime ? showNow : false,
|
|
335
395
|
mode: panelMode,
|
|
336
396
|
open: panelOpen,
|
|
337
397
|
disabledDate: selfDisabledDate,
|
|
@@ -343,6 +403,7 @@ const BhdDatePicker = (props)=>{
|
|
|
343
403
|
// 打开设置默认mode
|
|
344
404
|
if (value) {
|
|
345
405
|
setDefaultMode();
|
|
406
|
+
todayClickEventListener(value);
|
|
346
407
|
}
|
|
347
408
|
onOpenChange && onOpenChange(value);
|
|
348
409
|
},
|
|
@@ -379,7 +440,6 @@ const BhdDatePicker = (props)=>{
|
|
|
379
440
|
kind === "range" && /*#__PURE__*/ _jsx(_Fragment, {
|
|
380
441
|
children: /*#__PURE__*/ _jsx(RangePicker, _object_spread_props(_object_spread({}, getConfig()), {
|
|
381
442
|
value: selectedRangeDate,
|
|
382
|
-
showNow: false,
|
|
383
443
|
mode: rangePanelMode,
|
|
384
444
|
open: panelOpen,
|
|
385
445
|
disabledDate: selfDisabledDate,
|
|
@@ -255,6 +255,7 @@
|
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
+
|
|
258
259
|
// 多面板
|
|
259
260
|
.bhd-picker-panels {
|
|
260
261
|
& .bhd-picker-panel {
|
|
@@ -383,11 +384,16 @@
|
|
|
383
384
|
|
|
384
385
|
// 隐藏默认的当前
|
|
385
386
|
& > a {
|
|
386
|
-
display: none;
|
|
387
|
+
// display: none;
|
|
387
388
|
}
|
|
388
389
|
// & > .bhd-picker-ranges {
|
|
389
390
|
// display: none;
|
|
390
391
|
// }
|
|
392
|
+
|
|
393
|
+
& > a.bhd-picker-today-btn {
|
|
394
|
+
position: absolute;
|
|
395
|
+
right: 91px;
|
|
396
|
+
}
|
|
391
397
|
}
|
|
392
398
|
|
|
393
399
|
// 默认颜色
|
|
@@ -442,27 +448,6 @@
|
|
|
442
448
|
}
|
|
443
449
|
}
|
|
444
450
|
}
|
|
445
|
-
|
|
446
|
-
// &.showNow {
|
|
447
|
-
// :global {
|
|
448
|
-
// .bhd-picker-footer {
|
|
449
|
-
// & > a.bhd-picker-today-btn {
|
|
450
|
-
// position: absolute;
|
|
451
|
-
// right: 91px;
|
|
452
|
-
// }
|
|
453
|
-
// }
|
|
454
|
-
// }
|
|
455
|
-
// }
|
|
456
|
-
|
|
457
|
-
// &.hideShow {
|
|
458
|
-
// :global {
|
|
459
|
-
// .bhd-picker-footer {
|
|
460
|
-
// & > a {
|
|
461
|
-
// display: none;
|
|
462
|
-
// }
|
|
463
|
-
// }
|
|
464
|
-
// }
|
|
465
|
-
// }
|
|
466
451
|
}
|
|
467
452
|
|
|
468
453
|
// 单选
|
package/es2017/i18n/en_US.js
CHANGED
|
@@ -6,6 +6,18 @@ const en_US = {
|
|
|
6
6
|
Load: "Loading...",
|
|
7
7
|
确定: 'OK',
|
|
8
8
|
此刻: 'Now',
|
|
9
|
-
今天: 'Today'
|
|
9
|
+
今天: 'Today',
|
|
10
|
+
一月: 'Jan',
|
|
11
|
+
二月: 'Feb',
|
|
12
|
+
三月: 'Mar',
|
|
13
|
+
四月: 'Apr',
|
|
14
|
+
五月: 'May',
|
|
15
|
+
六月: 'Jun',
|
|
16
|
+
七月: 'Jul',
|
|
17
|
+
八月: 'Aug',
|
|
18
|
+
九月: 'Sep',
|
|
19
|
+
十月: 'Oct',
|
|
20
|
+
十一月: 'Nov',
|
|
21
|
+
十二月: 'Dec'
|
|
10
22
|
};
|
|
11
23
|
export default en_US;
|
package/es2017/i18n/zh_CN.js
CHANGED
|
@@ -6,6 +6,18 @@ const zh_CN = {
|
|
|
6
6
|
Load: "正在加载...",
|
|
7
7
|
确定: '确定',
|
|
8
8
|
此刻: '此刻',
|
|
9
|
-
今天: '今天'
|
|
9
|
+
今天: '今天',
|
|
10
|
+
一月: '一月',
|
|
11
|
+
二月: '二月',
|
|
12
|
+
三月: '三月',
|
|
13
|
+
四月: '四月',
|
|
14
|
+
五月: '五月',
|
|
15
|
+
六月: '六月',
|
|
16
|
+
七月: '七月',
|
|
17
|
+
八月: '八月',
|
|
18
|
+
九月: '九月',
|
|
19
|
+
十月: '十月',
|
|
20
|
+
十一月: '十一月',
|
|
21
|
+
十二月: '十二月'
|
|
10
22
|
};
|
|
11
23
|
export default zh_CN;
|
|
@@ -4,13 +4,29 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
|
4
4
|
import { _ as _type_of } from "@swc/helpers/_/_type_of";
|
|
5
5
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
|
|
6
6
|
import * as React from "react";
|
|
7
|
-
import { useState, useEffect, useRef } from "react";
|
|
7
|
+
import { useState, useEffect, useRef, useCallback } from "react";
|
|
8
8
|
import styles from "./index.module.less";
|
|
9
9
|
import { ConfigProvider, Button, DatePicker } from "antd";
|
|
10
10
|
import { CustomArrow } from "../icons";
|
|
11
11
|
// import dayjs from "dayjs";
|
|
12
|
+
// import type { Dayjs } from "dayjs";
|
|
12
13
|
import i18Conversion from "../i18n";
|
|
13
14
|
var RangePicker = DatePicker.RangePicker;
|
|
15
|
+
var months = [
|
|
16
|
+
"一月",
|
|
17
|
+
"二月",
|
|
18
|
+
"三月",
|
|
19
|
+
"四月",
|
|
20
|
+
"五月",
|
|
21
|
+
"六月",
|
|
22
|
+
"七月",
|
|
23
|
+
"八月",
|
|
24
|
+
"九月",
|
|
25
|
+
"十月",
|
|
26
|
+
"十一月",
|
|
27
|
+
"十二月"
|
|
28
|
+
];
|
|
29
|
+
//January_February_March_April_May_June_July_August_September_October_November_December
|
|
14
30
|
var BhdDatePicker = function(props) {
|
|
15
31
|
var lang = ConfigProvider.lang === "en" ? "en_US" : "zh_CN";
|
|
16
32
|
// if (lang === "en_US") {
|
|
@@ -20,6 +36,7 @@ var BhdDatePicker = function(props) {
|
|
|
20
36
|
// const zhCN = require("dayjs/locale/zh-cn");
|
|
21
37
|
// dayjs.locale(zhCN);
|
|
22
38
|
// }
|
|
39
|
+
var id = "BhdDatePicker_" + new Date().getTime();
|
|
23
40
|
// 默认格式
|
|
24
41
|
var getDefaultFormat = function() {
|
|
25
42
|
if (props.format) {
|
|
@@ -49,7 +66,7 @@ var BhdDatePicker = function(props) {
|
|
|
49
66
|
}
|
|
50
67
|
};
|
|
51
68
|
// 自己组件内使用的,或者自己处理的
|
|
52
|
-
var _props_kind = props.kind, kind = _props_kind === void 0 ? "single" : _props_kind, extraItems = props.extraItems, _props_extraReadonly = props.extraReadonly, extraReadonly = _props_extraReadonly === void 0 ? false : _props_extraReadonly, _props_useType = props.useType, useType = _props_useType === void 0 ? "" : _props_useType, _props_open = props.open, open = _props_open === void 0 ? false : _props_open, mode = props.mode, picker = props.picker, _props_value = props.value, value = _props_value === void 0 ? props.kind === "range" ? [] : "" : _props_value, _props_format = props.format, format = _props_format === void 0 ? getDefaultFormat() : _props_format, _props_presets = props.presets, presets = _props_presets === void 0 ? [] : _props_presets, className = props.className, popupClassName = props.popupClassName, showTime = props.showTime, _props_showNow = props.showNow, showNow = _props_showNow === void 0 ? true : _props_showNow, _props_allowClear = props.allowClear, allowClear = _props_allowClear === void 0 ? true : _props_allowClear, onClick = props.onClick, onBlur = props.onBlur, onChange = props.onChange, onOk = props.onOk, onCalendarChange = props.onCalendarChange, onOpenChange = props.onOpenChange, onPanelChange = props.onPanelChange, disabledDate = props.disabledDate, cellRender = props.cellRender, renderExtraFooter = props.renderExtraFooter;
|
|
69
|
+
var _props_kind = props.kind, kind = _props_kind === void 0 ? "single" : _props_kind, extraItems = props.extraItems, _props_extraReadonly = props.extraReadonly, extraReadonly = _props_extraReadonly === void 0 ? false : _props_extraReadonly, _props_useType = props.useType, useType = _props_useType === void 0 ? "" : _props_useType, _props_open = props.open, open = _props_open === void 0 ? false : _props_open, mode = props.mode, picker = props.picker, _props_value = props.value, value = _props_value === void 0 ? props.kind === "range" ? [] : "" : _props_value, _props_format = props.format, format = _props_format === void 0 ? getDefaultFormat() : _props_format, _props_presets = props.presets, presets = _props_presets === void 0 ? [] : _props_presets, className = props.className, popupClassName = props.popupClassName, showTime = props.showTime, _props_showNow = props.showNow, showNow = _props_showNow === void 0 ? true : _props_showNow, _props_showToday = props.showToday, showToday = _props_showToday === void 0 ? true : _props_showToday, _props_allowClear = props.allowClear, allowClear = _props_allowClear === void 0 ? true : _props_allowClear, onClick = props.onClick, onBlur = props.onBlur, onChange = props.onChange, onOk = props.onOk, onCalendarChange = props.onCalendarChange, onOpenChange = props.onOpenChange, onPanelChange = props.onPanelChange, disabledDate = props.disabledDate, cellRender = props.cellRender, renderExtraFooter = props.renderExtraFooter;
|
|
53
70
|
var bhdDatePickerRef = useRef(null);
|
|
54
71
|
var _useState = _sliced_to_array(useState(open), 2), panelOpen = _useState[0], setPanelOpen = _useState[1];
|
|
55
72
|
var _useState1 = _sliced_to_array(useState("date"), 2), panelMode = _useState1[0], setPanelMode = _useState1[1];
|
|
@@ -64,6 +81,7 @@ var BhdDatePicker = function(props) {
|
|
|
64
81
|
var _useState5 = _sliced_to_array(useState(value), 2), selectedRangeDate = _useState5[0], setSelectedRangeDate = _useState5[1];
|
|
65
82
|
var _useState6 = _sliced_to_array(useState([]), 2), selectedRangeDateString = _useState6[0], setSelectedRangeDateString = _useState6[1];
|
|
66
83
|
var _useState7 = _sliced_to_array(useState(false), 2), rangeOpenChange = _useState7[0], setRangeOpenChange = _useState7[1]; // 用于范围选择失去焦点后,判断是否关闭
|
|
84
|
+
var isChange = useRef(false);
|
|
67
85
|
useEffect(function() {
|
|
68
86
|
setDefaultMode();
|
|
69
87
|
if (kind === "range") {
|
|
@@ -81,7 +99,18 @@ var BhdDatePicker = function(props) {
|
|
|
81
99
|
});
|
|
82
100
|
}
|
|
83
101
|
}
|
|
102
|
+
return function() {
|
|
103
|
+
var _document_getElementsByClassName__getElementsByClassName, _document_getElementsByClassName_, _document_getElementsByClassName, _btn;
|
|
104
|
+
var btn = (_document_getElementsByClassName = document.getElementsByClassName(id)) === null || _document_getElementsByClassName === void 0 ? void 0 : (_document_getElementsByClassName_ = _document_getElementsByClassName[0]) === null || _document_getElementsByClassName_ === void 0 ? void 0 : (_document_getElementsByClassName__getElementsByClassName = _document_getElementsByClassName_.getElementsByClassName("bhd-picker-today-btn")) === null || _document_getElementsByClassName__getElementsByClassName === void 0 ? void 0 : _document_getElementsByClassName__getElementsByClassName[0];
|
|
105
|
+
(_btn = btn) === null || _btn === void 0 ? void 0 : _btn.removeEventListener("click", todayClick);
|
|
106
|
+
};
|
|
84
107
|
}, []);
|
|
108
|
+
useEffect(function() {
|
|
109
|
+
isChange.current = true;
|
|
110
|
+
}, [
|
|
111
|
+
selectedDate,
|
|
112
|
+
selectedRangeDate
|
|
113
|
+
]);
|
|
85
114
|
// 传给 DatePicker 的props参数
|
|
86
115
|
var getConfig = function() {
|
|
87
116
|
var config = _object_spread_props(_object_spread({
|
|
@@ -145,6 +174,7 @@ var BhdDatePicker = function(props) {
|
|
|
145
174
|
config.allowClear = false; // 日程安排查看时,不显示清除按钮
|
|
146
175
|
}
|
|
147
176
|
}
|
|
177
|
+
config.popupClassName = "".concat(config.popupClassName, " ").concat(id);
|
|
148
178
|
return config;
|
|
149
179
|
};
|
|
150
180
|
// 设置默认mode
|
|
@@ -185,9 +215,14 @@ var BhdDatePicker = function(props) {
|
|
|
185
215
|
}
|
|
186
216
|
// 月份 中文模式下显示全名称(例:一月),英文模式下显示短名称(例:Jan)
|
|
187
217
|
if (info.type === "month") {
|
|
218
|
+
// return (
|
|
219
|
+
// <div className={`${"bhd-picker-cell-inner"}`}>
|
|
220
|
+
// {current.format(dayjs.locale() === "zh-cn" ? "MMMM" : "MMM")}
|
|
221
|
+
// </div>
|
|
222
|
+
// );
|
|
188
223
|
return /*#__PURE__*/ _jsx("div", {
|
|
189
224
|
className: "bhd-picker-cell-inner",
|
|
190
|
-
children: current.format(
|
|
225
|
+
children: i18Conversion(months[Number(current.format("M")) - 1])
|
|
191
226
|
});
|
|
192
227
|
}
|
|
193
228
|
return info.originNode;
|
|
@@ -219,14 +254,14 @@ var BhdDatePicker = function(props) {
|
|
|
219
254
|
children: [
|
|
220
255
|
renderExtraFooter && /*#__PURE__*/ _jsx("div", {
|
|
221
256
|
className: "bhddatepicker-picker-footer-extra-extend",
|
|
222
|
-
children: renderExtraFooter()
|
|
257
|
+
children: renderExtraFooter(mode)
|
|
223
258
|
}),
|
|
224
259
|
!showTime ? /*#__PURE__*/ _jsx(_Fragment, {
|
|
225
260
|
children: /*#__PURE__*/ _jsxs("ul", {
|
|
226
261
|
className: "bhd-picker-ranges",
|
|
227
262
|
children: [
|
|
228
263
|
selfRenderPresets(),
|
|
229
|
-
|
|
264
|
+
renderToday(),
|
|
230
265
|
/*#__PURE__*/ _jsx("li", {
|
|
231
266
|
className: "bhd-picker-ok",
|
|
232
267
|
children: /*#__PURE__*/ _jsx(Button, {
|
|
@@ -246,13 +281,14 @@ var BhdDatePicker = function(props) {
|
|
|
246
281
|
});
|
|
247
282
|
};
|
|
248
283
|
// 渲染今天
|
|
249
|
-
var
|
|
284
|
+
var renderToday = function() {
|
|
250
285
|
// 显示now
|
|
251
|
-
if (
|
|
286
|
+
if (showToday) {
|
|
252
287
|
var _extraItems;
|
|
253
288
|
// 日程安排时: extraItems中今天是否是可选或者已选择状态
|
|
254
289
|
var hasNow = ((_extraItems = extraItems) === null || _extraItems === void 0 ? void 0 : _extraItems.filter(function(item) {
|
|
255
|
-
return item.status !== "noselectable"
|
|
290
|
+
return item.status !== "noselectable" && // item.date.format(format) === dayjs().format(format)
|
|
291
|
+
item.date.format("YYYYMMDD") === getToday();
|
|
256
292
|
}).length) > 0;
|
|
257
293
|
if (kind === "single" || kind === "extra" && hasNow) {
|
|
258
294
|
if (mode === "date" || mode === undefined) {
|
|
@@ -260,8 +296,11 @@ var BhdDatePicker = function(props) {
|
|
|
260
296
|
className: "bhd-picker-now",
|
|
261
297
|
children: /*#__PURE__*/ _jsx("a", {
|
|
262
298
|
className: "bhd-picker-now-btn",
|
|
299
|
+
style: {
|
|
300
|
+
visibility: "hidden"
|
|
301
|
+
},
|
|
263
302
|
onClick: todayClick,
|
|
264
|
-
children:
|
|
303
|
+
children: i18Conversion("今天")
|
|
265
304
|
})
|
|
266
305
|
});
|
|
267
306
|
}
|
|
@@ -269,6 +308,11 @@ var BhdDatePicker = function(props) {
|
|
|
269
308
|
}
|
|
270
309
|
return null;
|
|
271
310
|
};
|
|
311
|
+
// 获取到年月日
|
|
312
|
+
var getToday = function() {
|
|
313
|
+
var date = new Date();
|
|
314
|
+
return date.getFullYear().toString() + date.getMonth().toString().padStart(2, "0") + date.getDay().toString().padStart(2, "0");
|
|
315
|
+
};
|
|
272
316
|
// 渲染预设
|
|
273
317
|
var selfRenderPresets = function() {
|
|
274
318
|
return /*#__PURE__*/ _jsx("li", {
|
|
@@ -294,42 +338,58 @@ var BhdDatePicker = function(props) {
|
|
|
294
338
|
setPanelOpen(true);
|
|
295
339
|
}
|
|
296
340
|
} else {
|
|
297
|
-
if (
|
|
298
|
-
onChange && onChange(
|
|
341
|
+
if (selectedDateRef.current && selectedDateStringRef.current) {
|
|
342
|
+
onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
|
|
299
343
|
setPanelOpen(false);
|
|
300
344
|
}
|
|
301
345
|
}
|
|
302
346
|
};
|
|
303
347
|
// 今天点击
|
|
304
|
-
var todayClick = function() {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
348
|
+
var todayClick = useCallback(function() {
|
|
349
|
+
setTimeout(function() {
|
|
350
|
+
okClick();
|
|
351
|
+
}, 0);
|
|
352
|
+
}, []);
|
|
353
|
+
var todayClickEventListener = function(value) {
|
|
354
|
+
if (!value) return;
|
|
355
|
+
if (showToday) {
|
|
356
|
+
var _document_getElementsByClassName__getElementsByClassName, _document_getElementsByClassName_, _document_getElementsByClassName;
|
|
357
|
+
var btn = (_document_getElementsByClassName = document.getElementsByClassName(id)) === null || _document_getElementsByClassName === void 0 ? void 0 : (_document_getElementsByClassName_ = _document_getElementsByClassName[0]) === null || _document_getElementsByClassName_ === void 0 ? void 0 : (_document_getElementsByClassName__getElementsByClassName = _document_getElementsByClassName_.getElementsByClassName("bhd-picker-today-btn")) === null || _document_getElementsByClassName__getElementsByClassName === void 0 ? void 0 : _document_getElementsByClassName__getElementsByClassName[0];
|
|
358
|
+
if (value) {
|
|
359
|
+
var _btn, _btn1;
|
|
360
|
+
(_btn = btn) === null || _btn === void 0 ? void 0 : _btn.removeEventListener("click", todayClick);
|
|
361
|
+
(_btn1 = btn) === null || _btn1 === void 0 ? void 0 : _btn1.addEventListener("click", todayClick, {
|
|
362
|
+
once: true
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
317
366
|
};
|
|
318
367
|
//预设点击
|
|
319
368
|
var presetClick = function(info) {
|
|
320
369
|
console.log(_type_of(info.value));
|
|
321
370
|
var value = typeof info.value === "function" ? info.value() : info.value;
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
371
|
+
if (kind === "range") {
|
|
372
|
+
var valueString = [
|
|
373
|
+
value[0].format(format),
|
|
374
|
+
value[1].format(format)
|
|
375
|
+
];
|
|
376
|
+
setSelectedRangeDate(value);
|
|
377
|
+
setSelectedRangeDateString(valueString);
|
|
378
|
+
onChange && onChange(value, valueString);
|
|
379
|
+
setPanelOpen(false);
|
|
380
|
+
} else {
|
|
381
|
+
var valueString1 = value.format(format);
|
|
382
|
+
setSelectedDate(function(prevState) {
|
|
383
|
+
selectedDateRef.current = value;
|
|
384
|
+
return selectedDateRef.current;
|
|
385
|
+
});
|
|
386
|
+
setSelectedDateString(function(prevState) {
|
|
387
|
+
selectedDateStringRef.current = valueString1;
|
|
388
|
+
return selectedDateStringRef.current;
|
|
389
|
+
});
|
|
390
|
+
onChange && onChange(value, valueString1);
|
|
391
|
+
setPanelOpen(false);
|
|
392
|
+
}
|
|
333
393
|
};
|
|
334
394
|
return /*#__PURE__*/ _jsxs("span", {
|
|
335
395
|
className: "".concat(styles.bhdDatePicker),
|
|
@@ -337,8 +397,8 @@ var BhdDatePicker = function(props) {
|
|
|
337
397
|
children: [
|
|
338
398
|
(kind === "single" || kind === "extra") && /*#__PURE__*/ _jsx(_Fragment, {
|
|
339
399
|
children: /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
|
|
400
|
+
id: id,
|
|
340
401
|
value: selectedDate,
|
|
341
|
-
showNow: showTime ? showNow : false,
|
|
342
402
|
mode: panelMode,
|
|
343
403
|
open: panelOpen,
|
|
344
404
|
disabledDate: selfDisabledDate,
|
|
@@ -350,6 +410,7 @@ var BhdDatePicker = function(props) {
|
|
|
350
410
|
// 打开设置默认mode
|
|
351
411
|
if (value) {
|
|
352
412
|
setDefaultMode();
|
|
413
|
+
todayClickEventListener(value);
|
|
353
414
|
}
|
|
354
415
|
onOpenChange && onOpenChange(value);
|
|
355
416
|
},
|
|
@@ -386,7 +447,6 @@ var BhdDatePicker = function(props) {
|
|
|
386
447
|
kind === "range" && /*#__PURE__*/ _jsx(_Fragment, {
|
|
387
448
|
children: /*#__PURE__*/ _jsx(RangePicker, _object_spread_props(_object_spread({}, getConfig()), {
|
|
388
449
|
value: selectedRangeDate,
|
|
389
|
-
showNow: false,
|
|
390
450
|
mode: rangePanelMode,
|
|
391
451
|
open: panelOpen,
|
|
392
452
|
disabledDate: selfDisabledDate,
|