bhd-components 0.9.3 → 0.9.5
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/README.md +2 -1
- package/dist/index.esm.es5.development.css +409 -400
- package/dist/index.esm.es5.development.js +395 -107
- 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 +907 -784
- package/dist/vendor.esm.es5.production.js +2 -2
- package/es2017/bhdDatePicker/index.d.ts +3 -1
- package/es2017/bhdDatePicker/index.js +364 -99
- package/es2017/bhdDatePicker/index.module.less +42 -33
- package/es2017/i18n/en_US.js +13 -1
- package/es2017/i18n/zh_CN.js +13 -1
- package/esm/bhdDatePicker/index.d.ts +3 -1
- package/esm/bhdDatePicker/index.js +366 -102
- package/esm/bhdDatePicker/index.module.less +42 -33
- package/esm/i18n/en_US.js +13 -1
- package/esm/i18n/zh_CN.js +13 -1
- package/package.json +1 -1
|
@@ -2,14 +2,30 @@ 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, forwardRef, useImperativeHandle } 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;
|
|
12
|
-
|
|
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
|
|
28
|
+
const BhdDatePicker = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
13
29
|
const lang = ConfigProvider.lang === "en" ? "en_US" : "zh_CN";
|
|
14
30
|
// if (lang === "en_US") {
|
|
15
31
|
// const enUS = require("dayjs/locale/en");
|
|
@@ -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,39 +64,88 @@ const BhdDatePicker = (props)=>{
|
|
|
47
64
|
}
|
|
48
65
|
};
|
|
49
66
|
// 自己组件内使用的,或者自己处理的
|
|
50
|
-
let { kind = "single", extraItems, extraReadonly = false, useType = "", open = false, mode, picker, value
|
|
67
|
+
let { kind = "single", extraItems, extraReadonly = false, useType = "", needConfirm = true, open = false, mode, picker, value, format = getDefaultFormat(), presets = [], className, popupClassName, dropdownClassName, showTime, showNow = true, showToday = true, allowClear = true, onClick, onBlur, onChange, onOk, // onCalendarChange,
|
|
68
|
+
onOpenChange, onPanelChange, disabledDate, cellRender, renderExtraFooter } = props;
|
|
51
69
|
const bhdDatePickerRef = useRef(null);
|
|
70
|
+
const pickerRef = useRef(null);
|
|
52
71
|
const [panelOpen, setPanelOpen] = useState(open);
|
|
53
72
|
const [panelMode, setPanelMode] = useState("date");
|
|
54
73
|
const [rangePanelMode, setRangePanelMode] = useState([
|
|
55
74
|
"date",
|
|
56
75
|
"date"
|
|
57
76
|
]);
|
|
58
|
-
const [selectedDate, setSelectedDate] = useState(
|
|
59
|
-
const [selectedDateString, setSelectedDateString] = useState(
|
|
60
|
-
const selectedDateRef = useRef(
|
|
61
|
-
const selectedDateStringRef = useRef(
|
|
62
|
-
const [selectedRangeDate, setSelectedRangeDate] = useState(
|
|
63
|
-
|
|
64
|
-
|
|
77
|
+
const [selectedDate, setSelectedDate] = useState(null);
|
|
78
|
+
const [selectedDateString, setSelectedDateString] = useState("");
|
|
79
|
+
const selectedDateRef = useRef(null);
|
|
80
|
+
const selectedDateStringRef = useRef("");
|
|
81
|
+
const [selectedRangeDate, setSelectedRangeDate] = useState([
|
|
82
|
+
null,
|
|
83
|
+
null
|
|
84
|
+
]);
|
|
85
|
+
const [selectedRangeDateString, setSelectedRangeDateString] = useState([
|
|
86
|
+
"",
|
|
87
|
+
""
|
|
88
|
+
]);
|
|
89
|
+
const selectedRangeDateRef = useRef([
|
|
90
|
+
null,
|
|
91
|
+
null
|
|
92
|
+
]);
|
|
93
|
+
const selectedRangeDateStringRef = useRef([
|
|
94
|
+
"",
|
|
95
|
+
""
|
|
96
|
+
]);
|
|
97
|
+
const [panelOpenChange, setPanelOpenChange] = useState(false); // 用于失去焦点后,判断是否关闭
|
|
98
|
+
const isChange = useRef(false);
|
|
99
|
+
const selectRange = useRef([]);
|
|
100
|
+
useImperativeHandle(ref, ()=>{
|
|
101
|
+
return {};
|
|
102
|
+
});
|
|
65
103
|
useEffect(()=>{
|
|
66
104
|
setDefaultMode();
|
|
105
|
+
return ()=>{
|
|
106
|
+
var _document_getElementsByClassName__getElementsByClassName, _document_getElementsByClassName_, _document_getElementsByClassName, _todayBtn, _document_getElementsByClassName__getElementsByClassName1, _document_getElementsByClassName_1, _document_getElementsByClassName1, _nowBtn;
|
|
107
|
+
const todayBtn = (_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];
|
|
108
|
+
(_todayBtn = todayBtn) === null || _todayBtn === void 0 ? void 0 : _todayBtn.removeEventListener("click", todayClick);
|
|
109
|
+
const nowBtn = (_document_getElementsByClassName1 = document.getElementsByClassName(id)) === null || _document_getElementsByClassName1 === void 0 ? void 0 : (_document_getElementsByClassName_1 = _document_getElementsByClassName1[0]) === null || _document_getElementsByClassName_1 === void 0 ? void 0 : (_document_getElementsByClassName__getElementsByClassName1 = _document_getElementsByClassName_1.getElementsByClassName("bhd-picker-now-btn")) === null || _document_getElementsByClassName__getElementsByClassName1 === void 0 ? void 0 : _document_getElementsByClassName__getElementsByClassName1[0];
|
|
110
|
+
(_nowBtn = nowBtn) === null || _nowBtn === void 0 ? void 0 : _nowBtn.removeEventListener("click", todayClick);
|
|
111
|
+
};
|
|
112
|
+
}, []);
|
|
113
|
+
useEffect(()=>{
|
|
67
114
|
if (kind === "range") {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
]
|
|
73
|
-
|
|
115
|
+
setSelectedRangeDate((prevState)=>{
|
|
116
|
+
selectedRangeDateRef.current = value || [
|
|
117
|
+
null,
|
|
118
|
+
null
|
|
119
|
+
];
|
|
120
|
+
return selectedRangeDateRef.current;
|
|
121
|
+
});
|
|
122
|
+
setSelectedRangeDateString((prevState)=>{
|
|
123
|
+
var _selectedRangeDateRef_current_, _selectedRangeDateRef_current_1;
|
|
124
|
+
selectedRangeDateStringRef.current = [
|
|
125
|
+
((_selectedRangeDateRef_current_ = selectedRangeDateRef.current[0]) === null || _selectedRangeDateRef_current_ === void 0 ? void 0 : _selectedRangeDateRef_current_.format(format)) || "",
|
|
126
|
+
((_selectedRangeDateRef_current_1 = selectedRangeDateRef.current[1]) === null || _selectedRangeDateRef_current_1 === void 0 ? void 0 : _selectedRangeDateRef_current_1.format(format)) || ""
|
|
127
|
+
];
|
|
128
|
+
return selectedRangeDateStringRef.current;
|
|
129
|
+
});
|
|
74
130
|
} else {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
131
|
+
setSelectedDate((prevState)=>{
|
|
132
|
+
selectedDateRef.current = value || null;
|
|
133
|
+
return selectedDateRef.current;
|
|
134
|
+
});
|
|
135
|
+
setSelectedDateString((prevState)=>{
|
|
136
|
+
var _selectedDateRef_current;
|
|
137
|
+
selectedDateStringRef.current = ((_selectedDateRef_current = selectedDateRef.current) === null || _selectedDateRef_current === void 0 ? void 0 : _selectedDateRef_current.format(format)) || "";
|
|
138
|
+
return selectedDateStringRef.current;
|
|
139
|
+
});
|
|
81
140
|
}
|
|
82
|
-
}, [
|
|
141
|
+
}, [
|
|
142
|
+
value
|
|
143
|
+
]);
|
|
144
|
+
useEffect(()=>{
|
|
145
|
+
setPanelOpen(open);
|
|
146
|
+
}, [
|
|
147
|
+
open
|
|
148
|
+
]);
|
|
83
149
|
// 传给 DatePicker 的props参数
|
|
84
150
|
const getConfig = ()=>{
|
|
85
151
|
let config = _object_spread_props(_object_spread({
|
|
@@ -109,6 +175,7 @@ const BhdDatePicker = (props)=>{
|
|
|
109
175
|
popupClassName,
|
|
110
176
|
allowClear,
|
|
111
177
|
showTime,
|
|
178
|
+
showToday,
|
|
112
179
|
cellRender,
|
|
113
180
|
renderExtraFooter: selfRenderExtraFooter
|
|
114
181
|
});
|
|
@@ -122,10 +189,19 @@ const BhdDatePicker = (props)=>{
|
|
|
122
189
|
delete config.onChange;
|
|
123
190
|
delete config.useType; // 组件自己定义的
|
|
124
191
|
delete config.presets; // 必须删掉,因为预设由官网的左侧换到底部
|
|
125
|
-
delete config.
|
|
192
|
+
delete config.dropdownClassName;
|
|
126
193
|
if (!config.cellRender) {
|
|
127
194
|
config.cellRender = selfCellRender;
|
|
128
195
|
}
|
|
196
|
+
// 判断是否显示今天按钮
|
|
197
|
+
if (!isRenderToday()) {
|
|
198
|
+
config.showToday = false;
|
|
199
|
+
showToday = false;
|
|
200
|
+
}
|
|
201
|
+
// 不显示今天、预设、确定按钮
|
|
202
|
+
if (!isSelfRenderExtraFooter()) {
|
|
203
|
+
delete config.renderExtraFooter;
|
|
204
|
+
}
|
|
129
205
|
// 单选
|
|
130
206
|
if (kind === "single") {
|
|
131
207
|
config.popupClassName = `
|
|
@@ -144,6 +220,7 @@ const BhdDatePicker = (props)=>{
|
|
|
144
220
|
config.allowClear = false; // 日程安排查看时,不显示清除按钮
|
|
145
221
|
}
|
|
146
222
|
}
|
|
223
|
+
config.popupClassName = `${config.popupClassName} ${dropdownClassName} ${needConfirm ? "" : styles.noNeedConfirm} ${id}`;
|
|
147
224
|
return config;
|
|
148
225
|
};
|
|
149
226
|
// 设置默认mode
|
|
@@ -182,9 +259,14 @@ const BhdDatePicker = (props)=>{
|
|
|
182
259
|
}
|
|
183
260
|
// 月份 中文模式下显示全名称(例:一月),英文模式下显示短名称(例:Jan)
|
|
184
261
|
if (info.type === "month") {
|
|
262
|
+
// return (
|
|
263
|
+
// <div className={`${"bhd-picker-cell-inner"}`}>
|
|
264
|
+
// {current.format(dayjs.locale() === "zh-cn" ? "MMMM" : "MMM")}
|
|
265
|
+
// </div>
|
|
266
|
+
// );
|
|
185
267
|
return /*#__PURE__*/ _jsx("div", {
|
|
186
268
|
className: `${"bhd-picker-cell-inner"}`,
|
|
187
|
-
children: current.format(
|
|
269
|
+
children: i18Conversion(months[Number(current.format("M")) - 1])
|
|
188
270
|
});
|
|
189
271
|
}
|
|
190
272
|
return info.originNode;
|
|
@@ -209,25 +291,24 @@ const BhdDatePicker = (props)=>{
|
|
|
209
291
|
};
|
|
210
292
|
// 渲染底部扩展内容(包括确定按钮、今天按钮、预设、传入的底部扩展)
|
|
211
293
|
const selfRenderExtraFooter = (mode)=>{
|
|
212
|
-
var _selectedRangeDate, _selectedRangeDate1;
|
|
294
|
+
var _selectedRangeDate, _selectedRangeDate1, _selectedRangeDate2, _selectedRangeDate3;
|
|
213
295
|
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
214
296
|
children: [
|
|
215
|
-
renderExtraFooter && /*#__PURE__*/ _jsx("div", {
|
|
216
|
-
className: "bhddatepicker-picker-footer-extra-extend",
|
|
217
|
-
children: renderExtraFooter()
|
|
218
|
-
}),
|
|
219
297
|
!showTime ? /*#__PURE__*/ _jsx(_Fragment, {
|
|
220
|
-
children: /*#__PURE__*/ _jsxs("ul", {
|
|
298
|
+
children: ((picker || "date") === "date" && showToday || presets && presets.length > 0 || needConfirm) && /*#__PURE__*/ _jsxs("ul", {
|
|
221
299
|
className: "bhd-picker-ranges",
|
|
222
300
|
children: [
|
|
223
301
|
selfRenderPresets(),
|
|
224
|
-
|
|
225
|
-
/*#__PURE__*/ _jsx("li", {
|
|
302
|
+
renderToday(mode),
|
|
303
|
+
needConfirm && /*#__PURE__*/ _jsx("li", {
|
|
226
304
|
className: "bhd-picker-ok",
|
|
227
305
|
children: /*#__PURE__*/ _jsx(Button, {
|
|
228
306
|
type: "primary",
|
|
229
307
|
disabled: kind === "range" ? !(((_selectedRangeDate = selectedRangeDate) === null || _selectedRangeDate === void 0 ? void 0 : _selectedRangeDate[0]) && ((_selectedRangeDate1 = selectedRangeDate) === null || _selectedRangeDate1 === void 0 ? void 0 : _selectedRangeDate1[1])) : !(selectedDate && selectedDateString),
|
|
230
|
-
|
|
308
|
+
className: `${(kind === "range" ? !(((_selectedRangeDate2 = selectedRangeDate) === null || _selectedRangeDate2 === void 0 ? void 0 : _selectedRangeDate2[0]) && ((_selectedRangeDate3 = selectedRangeDate) === null || _selectedRangeDate3 === void 0 ? void 0 : _selectedRangeDate3[1])) : !(selectedDate && selectedDateString)) ? "disabled" : ""}`,
|
|
309
|
+
onClick: ()=>{
|
|
310
|
+
okClick();
|
|
311
|
+
},
|
|
231
312
|
children: i18Conversion("确定")
|
|
232
313
|
})
|
|
233
314
|
})
|
|
@@ -236,35 +317,90 @@ const BhdDatePicker = (props)=>{
|
|
|
236
317
|
}) : /*#__PURE__*/ _jsx("ul", {
|
|
237
318
|
className: `bhd-picker-ranges showPresets ${showNow ? "showNow" : ""}`,
|
|
238
319
|
children: selfRenderPresets()
|
|
320
|
+
}),
|
|
321
|
+
renderExtraFooter && /*#__PURE__*/ _jsx("div", {
|
|
322
|
+
className: "bhddatepicker-picker-footer-extra-extend",
|
|
323
|
+
children: renderExtraFooter(mode)
|
|
239
324
|
})
|
|
240
325
|
]
|
|
241
326
|
});
|
|
242
327
|
};
|
|
243
|
-
//
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
if (
|
|
247
|
-
|
|
328
|
+
// 判断是否显示今天按钮、预设、确定按钮、传入的底部扩展
|
|
329
|
+
const isSelfRenderExtraFooter = ()=>{
|
|
330
|
+
let result = false;
|
|
331
|
+
if (kind === "range") {
|
|
332
|
+
result = presets && presets.length > 0 || renderExtraFooter || needConfirm;
|
|
333
|
+
} else {
|
|
334
|
+
result = isRenderToday() || presets && presets.length > 0 || renderExtraFooter || needConfirm;
|
|
335
|
+
}
|
|
336
|
+
return result;
|
|
337
|
+
};
|
|
338
|
+
//判断是否显示今天按钮
|
|
339
|
+
const isRenderToday = ()=>{
|
|
340
|
+
if (showToday) {
|
|
341
|
+
if (kind === "single" && panelMode === "date") {
|
|
342
|
+
return true;
|
|
343
|
+
}
|
|
248
344
|
// 日程安排时: extraItems中今天是否是可选或者已选择状态
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
children: /*#__PURE__*/ _jsx("a", {
|
|
255
|
-
className: "bhd-picker-now-btn",
|
|
256
|
-
onClick: todayClick,
|
|
257
|
-
children: showTime ? i18Conversion("此刻") : i18Conversion("今天")
|
|
258
|
-
})
|
|
259
|
-
});
|
|
345
|
+
if (kind === "extra") {
|
|
346
|
+
var _extraItems;
|
|
347
|
+
let hasToday = ((_extraItems = extraItems) === null || _extraItems === void 0 ? void 0 : _extraItems.filter((item)=>item.status !== "noselectable" && item.date.format("YYYYMMDD") === getToday()).length) > 0;
|
|
348
|
+
if (hasToday && panelMode === "date") {
|
|
349
|
+
return true;
|
|
260
350
|
}
|
|
261
351
|
}
|
|
262
352
|
}
|
|
263
|
-
return
|
|
353
|
+
return false;
|
|
354
|
+
};
|
|
355
|
+
// 渲染今天
|
|
356
|
+
const renderToday = (mode)=>{
|
|
357
|
+
// // 显示Today
|
|
358
|
+
// if (showToday) {
|
|
359
|
+
// // 日程安排时: extraItems中今天是否是可选或者已选择状态
|
|
360
|
+
// let hasNow =
|
|
361
|
+
// extraItems?.filter(
|
|
362
|
+
// (item) =>
|
|
363
|
+
// item.status !== "noselectable" &&
|
|
364
|
+
// // item.date.format(format) === dayjs().format(format)
|
|
365
|
+
// item.date.format("YYYYMMDD") === getToday()
|
|
366
|
+
// ).length > 0;
|
|
367
|
+
// if (kind === "single" || (kind === "extra" && hasNow)) {
|
|
368
|
+
// if (mode === "date") {
|
|
369
|
+
// return (
|
|
370
|
+
// <li className="bhd-picker-now">
|
|
371
|
+
// <a
|
|
372
|
+
// className="bhd-picker-now-btn"
|
|
373
|
+
// style={{ visibility: "hidden" }}
|
|
374
|
+
// onClick={todayClick}
|
|
375
|
+
// >
|
|
376
|
+
// {i18Conversion("今天")}
|
|
377
|
+
// </a>
|
|
378
|
+
// </li>
|
|
379
|
+
// );
|
|
380
|
+
// }
|
|
381
|
+
// }
|
|
382
|
+
// }
|
|
383
|
+
// return null;
|
|
384
|
+
return isRenderToday() ? /*#__PURE__*/ _jsx("li", {
|
|
385
|
+
className: "bhd-picker-now",
|
|
386
|
+
children: /*#__PURE__*/ _jsx("a", {
|
|
387
|
+
className: "bhd-picker-now-btn",
|
|
388
|
+
style: {
|
|
389
|
+
visibility: "hidden"
|
|
390
|
+
},
|
|
391
|
+
onClick: todayClick,
|
|
392
|
+
children: i18Conversion("今天")
|
|
393
|
+
})
|
|
394
|
+
}) : null;
|
|
395
|
+
};
|
|
396
|
+
// 获取到年月日
|
|
397
|
+
const getToday = ()=>{
|
|
398
|
+
const date = new Date();
|
|
399
|
+
return date.getFullYear().toString() + (date.getMonth() + 1).toString().padStart(2, "0") + date.getDate().toString().padStart(2, "0");
|
|
264
400
|
};
|
|
265
401
|
// 渲染预设
|
|
266
402
|
const selfRenderPresets = ()=>{
|
|
267
|
-
return /*#__PURE__*/ _jsx("li", {
|
|
403
|
+
return presets && presets.length > 0 ? /*#__PURE__*/ _jsx("li", {
|
|
268
404
|
className: "bhd-picker-presets",
|
|
269
405
|
children: presets.map((item, index)=>{
|
|
270
406
|
return /*#__PURE__*/ _jsx("a", {
|
|
@@ -275,54 +411,100 @@ const BhdDatePicker = (props)=>{
|
|
|
275
411
|
children: item.label
|
|
276
412
|
}, index);
|
|
277
413
|
})
|
|
278
|
-
});
|
|
414
|
+
}) : null;
|
|
279
415
|
};
|
|
280
416
|
// 日期选择确认
|
|
281
417
|
const okClick = ()=>{
|
|
282
418
|
if (kind === "range") {
|
|
283
|
-
|
|
284
|
-
|
|
419
|
+
var _selectedRangeDateRef_current, _selectedRangeDateRef_current1, _selectedRangeDateStringRef_current, _selectedRangeDateStringRef_current1;
|
|
420
|
+
if (((_selectedRangeDateRef_current = selectedRangeDateRef.current) === null || _selectedRangeDateRef_current === void 0 ? void 0 : _selectedRangeDateRef_current[0]) && ((_selectedRangeDateRef_current1 = selectedRangeDateRef.current) === null || _selectedRangeDateRef_current1 === void 0 ? void 0 : _selectedRangeDateRef_current1[1]) && ((_selectedRangeDateStringRef_current = selectedRangeDateStringRef.current) === null || _selectedRangeDateStringRef_current === void 0 ? void 0 : _selectedRangeDateStringRef_current[0]) && ((_selectedRangeDateStringRef_current1 = selectedRangeDateStringRef.current) === null || _selectedRangeDateStringRef_current1 === void 0 ? void 0 : _selectedRangeDateStringRef_current1[1])) {
|
|
421
|
+
if (isChange.current) {
|
|
422
|
+
onChange && onChange(selectedRangeDateRef.current, selectedRangeDateStringRef.current);
|
|
423
|
+
isChange.current = false;
|
|
424
|
+
// if (pickerRef.current) {
|
|
425
|
+
// pickerRef.current.blur();
|
|
426
|
+
// }
|
|
427
|
+
}
|
|
285
428
|
setPanelOpen(false);
|
|
286
|
-
} else {
|
|
287
|
-
setPanelOpen(true);
|
|
288
429
|
}
|
|
289
430
|
} else {
|
|
290
|
-
if (
|
|
291
|
-
|
|
431
|
+
if (selectedDateRef.current && selectedDateStringRef.current) {
|
|
432
|
+
if (isChange.current) {
|
|
433
|
+
onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
|
|
434
|
+
isChange.current = false;
|
|
435
|
+
// if (pickerRef.current) {
|
|
436
|
+
// pickerRef.current.blur();
|
|
437
|
+
// }
|
|
438
|
+
}
|
|
292
439
|
setPanelOpen(false);
|
|
293
440
|
}
|
|
294
441
|
}
|
|
295
442
|
};
|
|
296
443
|
// 今天点击
|
|
297
|
-
const todayClick = ()=>{
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
444
|
+
const todayClick = useCallback(()=>{
|
|
445
|
+
setTimeout(()=>{
|
|
446
|
+
okClick();
|
|
447
|
+
}, 0);
|
|
448
|
+
}, []);
|
|
449
|
+
const todayClickEventListener = (value)=>{
|
|
450
|
+
if (!value) return;
|
|
451
|
+
if (showToday) {
|
|
452
|
+
var _document_getElementsByClassName__getElementsByClassName, _document_getElementsByClassName_, _document_getElementsByClassName;
|
|
453
|
+
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];
|
|
454
|
+
if (value) {
|
|
455
|
+
var _btn, _btn1;
|
|
456
|
+
(_btn = btn) === null || _btn === void 0 ? void 0 : _btn.removeEventListener("click", todayClick);
|
|
457
|
+
(_btn1 = btn) === null || _btn1 === void 0 ? void 0 : _btn1.addEventListener("click", todayClick, {
|
|
458
|
+
once: true
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
const nowClickEventListener = (value)=>{
|
|
464
|
+
if (!value) return;
|
|
465
|
+
if (showTime) {
|
|
466
|
+
var _document_getElementsByClassName__getElementsByClassName, _document_getElementsByClassName_, _document_getElementsByClassName;
|
|
467
|
+
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-now-btn")) === null || _document_getElementsByClassName__getElementsByClassName === void 0 ? void 0 : _document_getElementsByClassName__getElementsByClassName[0];
|
|
468
|
+
if (value) {
|
|
469
|
+
var _btn, _btn1;
|
|
470
|
+
(_btn = btn) === null || _btn === void 0 ? void 0 : _btn.removeEventListener("click", todayClick);
|
|
471
|
+
(_btn1 = btn) === null || _btn1 === void 0 ? void 0 : _btn1.addEventListener("click", todayClick, {
|
|
472
|
+
once: true
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
}
|
|
310
476
|
};
|
|
311
477
|
//预设点击
|
|
312
478
|
const presetClick = (info)=>{
|
|
313
|
-
console.log(typeof info.value);
|
|
314
479
|
const value = typeof info.value === "function" ? info.value() : info.value;
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
480
|
+
if (kind === "range") {
|
|
481
|
+
const valueString = [
|
|
482
|
+
value[0].format(format),
|
|
483
|
+
value[1].format(format)
|
|
484
|
+
];
|
|
485
|
+
setSelectedRangeDate((prevState)=>{
|
|
486
|
+
selectedRangeDateRef.current = value;
|
|
487
|
+
return selectedRangeDateRef.current;
|
|
488
|
+
});
|
|
489
|
+
setSelectedRangeDateString((prevState)=>{
|
|
490
|
+
selectedRangeDateStringRef.current = valueString;
|
|
491
|
+
return selectedRangeDateStringRef.current;
|
|
492
|
+
});
|
|
493
|
+
onChange && onChange(value, valueString);
|
|
494
|
+
setPanelOpen(false);
|
|
495
|
+
} else {
|
|
496
|
+
const valueString = value.format(format);
|
|
497
|
+
setSelectedDate((prevState)=>{
|
|
498
|
+
selectedDateRef.current = value;
|
|
499
|
+
return selectedDateRef.current;
|
|
500
|
+
});
|
|
501
|
+
setSelectedDateString((prevState)=>{
|
|
502
|
+
selectedDateStringRef.current = valueString;
|
|
503
|
+
return selectedDateStringRef.current;
|
|
504
|
+
});
|
|
505
|
+
onChange && onChange(value, valueString);
|
|
506
|
+
setPanelOpen(false);
|
|
507
|
+
}
|
|
326
508
|
};
|
|
327
509
|
return /*#__PURE__*/ _jsxs("span", {
|
|
328
510
|
className: `${styles.bhdDatePicker}`,
|
|
@@ -330,8 +512,9 @@ const BhdDatePicker = (props)=>{
|
|
|
330
512
|
children: [
|
|
331
513
|
(kind === "single" || kind === "extra") && /*#__PURE__*/ _jsx(_Fragment, {
|
|
332
514
|
children: /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
|
|
515
|
+
ref: pickerRef,
|
|
516
|
+
id: id,
|
|
333
517
|
value: selectedDate,
|
|
334
|
-
showNow: showTime ? showNow : false,
|
|
335
518
|
mode: panelMode,
|
|
336
519
|
open: panelOpen,
|
|
337
520
|
disabledDate: selfDisabledDate,
|
|
@@ -340,9 +523,12 @@ const BhdDatePicker = (props)=>{
|
|
|
340
523
|
onPanelChange && onPanelChange(value, mode);
|
|
341
524
|
},
|
|
342
525
|
onOpenChange: (value)=>{
|
|
526
|
+
setPanelOpenChange(value);
|
|
343
527
|
// 打开设置默认mode
|
|
344
528
|
if (value) {
|
|
345
529
|
setDefaultMode();
|
|
530
|
+
todayClickEventListener(value);
|
|
531
|
+
nowClickEventListener(value);
|
|
346
532
|
}
|
|
347
533
|
onOpenChange && onOpenChange(value);
|
|
348
534
|
},
|
|
@@ -355,6 +541,12 @@ const BhdDatePicker = (props)=>{
|
|
|
355
541
|
selectedDateStringRef.current = dateString;
|
|
356
542
|
return selectedDateStringRef.current;
|
|
357
543
|
});
|
|
544
|
+
isChange.current = true;
|
|
545
|
+
if (!needConfirm) {
|
|
546
|
+
setTimeout(()=>{
|
|
547
|
+
okClick();
|
|
548
|
+
}, 0);
|
|
549
|
+
}
|
|
358
550
|
},
|
|
359
551
|
onOk: (date)=>{
|
|
360
552
|
if (showTime) {
|
|
@@ -370,16 +562,28 @@ const BhdDatePicker = (props)=>{
|
|
|
370
562
|
onClick && onClick(e);
|
|
371
563
|
},
|
|
372
564
|
onBlur: (e)=>{
|
|
373
|
-
|
|
374
|
-
|
|
565
|
+
if (needConfirm) {
|
|
566
|
+
var _e_relatedTarget_classList, _e_relatedTarget;
|
|
567
|
+
okClick(); // 面板区域内失去焦点时
|
|
568
|
+
if ((_e_relatedTarget = e.relatedTarget) === null || _e_relatedTarget === void 0 ? void 0 : (_e_relatedTarget_classList = _e_relatedTarget.classList) === null || _e_relatedTarget_classList === void 0 ? void 0 : _e_relatedTarget_classList.value.includes("bhd-picker-panel")) {
|
|
569
|
+
if (pickerRef.current) {
|
|
570
|
+
pickerRef.current.focus();
|
|
571
|
+
}
|
|
572
|
+
setPanelOpen(true);
|
|
573
|
+
} else {
|
|
574
|
+
setPanelOpen(false);
|
|
575
|
+
}
|
|
576
|
+
} else {
|
|
577
|
+
setPanelOpen(false);
|
|
578
|
+
}
|
|
375
579
|
onBlur && onBlur(e);
|
|
376
580
|
}
|
|
377
581
|
}))
|
|
378
582
|
}),
|
|
379
583
|
kind === "range" && /*#__PURE__*/ _jsx(_Fragment, {
|
|
380
584
|
children: /*#__PURE__*/ _jsx(RangePicker, _object_spread_props(_object_spread({}, getConfig()), {
|
|
585
|
+
ref: pickerRef,
|
|
381
586
|
value: selectedRangeDate,
|
|
382
|
-
showNow: false,
|
|
383
587
|
mode: rangePanelMode,
|
|
384
588
|
open: panelOpen,
|
|
385
589
|
disabledDate: selfDisabledDate,
|
|
@@ -388,31 +592,92 @@ const BhdDatePicker = (props)=>{
|
|
|
388
592
|
onPanelChange && onPanelChange(value, mode);
|
|
389
593
|
},
|
|
390
594
|
onOpenChange: (value)=>{
|
|
595
|
+
setPanelOpenChange(value);
|
|
391
596
|
if (value) {
|
|
392
597
|
setDefaultMode();
|
|
393
598
|
}
|
|
394
599
|
if (showTime) {
|
|
395
600
|
setPanelOpen(value);
|
|
396
601
|
}
|
|
397
|
-
setRangeOpenChange(value);
|
|
398
602
|
onOpenChange && onOpenChange(value);
|
|
399
603
|
},
|
|
400
604
|
onClick: (e)=>{
|
|
401
605
|
setPanelOpen(true);
|
|
606
|
+
selectRange.current = [];
|
|
402
607
|
onClick && onClick(e);
|
|
403
608
|
},
|
|
609
|
+
onChange: (dates, dateStrings)=>{
|
|
610
|
+
// 清空的时候
|
|
611
|
+
if (dates === null) {
|
|
612
|
+
setSelectedRangeDate((prevState)=>{
|
|
613
|
+
selectedRangeDateRef.current = [
|
|
614
|
+
null,
|
|
615
|
+
null
|
|
616
|
+
];
|
|
617
|
+
return selectedRangeDateRef.current;
|
|
618
|
+
});
|
|
619
|
+
setSelectedRangeDateString((prevState)=>{
|
|
620
|
+
selectedRangeDateStringRef.current = [
|
|
621
|
+
"",
|
|
622
|
+
""
|
|
623
|
+
];
|
|
624
|
+
return selectedRangeDateStringRef.current;
|
|
625
|
+
});
|
|
626
|
+
setPanelOpen(false);
|
|
627
|
+
onChange && onChange([
|
|
628
|
+
null,
|
|
629
|
+
null
|
|
630
|
+
], [
|
|
631
|
+
"",
|
|
632
|
+
""
|
|
633
|
+
]);
|
|
634
|
+
}
|
|
635
|
+
},
|
|
404
636
|
onCalendarChange: (dates, dateStrings, info)=>{
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
637
|
+
var _dates, _dates1;
|
|
638
|
+
setSelectedRangeDate((prevState)=>{
|
|
639
|
+
selectedRangeDateRef.current = dates;
|
|
640
|
+
return selectedRangeDateRef.current;
|
|
641
|
+
});
|
|
642
|
+
setSelectedRangeDateString((prevState)=>{
|
|
643
|
+
selectedRangeDateStringRef.current = dateStrings;
|
|
644
|
+
return selectedRangeDateStringRef.current;
|
|
645
|
+
});
|
|
646
|
+
if (!selectRange.current.includes(info.range)) {
|
|
647
|
+
selectRange.current.push(info.range);
|
|
648
|
+
}
|
|
649
|
+
if (((_dates = dates) === null || _dates === void 0 ? void 0 : _dates[0]) && ((_dates1 = dates) === null || _dates1 === void 0 ? void 0 : _dates1[1])) {
|
|
650
|
+
//不用确认自动提交
|
|
651
|
+
if (!needConfirm) {
|
|
652
|
+
if (selectRange.current.includes("start") && selectRange.current.includes("end")) {
|
|
653
|
+
isChange.current = true;
|
|
654
|
+
setTimeout(()=>{
|
|
655
|
+
okClick();
|
|
656
|
+
}, 0);
|
|
657
|
+
}
|
|
658
|
+
} else {
|
|
659
|
+
isChange.current = true;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
408
662
|
},
|
|
409
663
|
onBlur: (e)=>{
|
|
410
|
-
|
|
411
|
-
if (
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
664
|
+
console.log(panelOpenChange);
|
|
665
|
+
if (needConfirm) {
|
|
666
|
+
var _selectedRangeDateRef_current, _selectedRangeDateRef_current1, _selectedRangeDateRef_current2, _selectedRangeDateRef_current3;
|
|
667
|
+
if (((_selectedRangeDateRef_current = selectedRangeDateRef.current) === null || _selectedRangeDateRef_current === void 0 ? void 0 : _selectedRangeDateRef_current[0]) && ((_selectedRangeDateRef_current1 = selectedRangeDateRef.current) === null || _selectedRangeDateRef_current1 === void 0 ? void 0 : _selectedRangeDateRef_current1[1])) {
|
|
668
|
+
if (needConfirm && !panelOpenChange && isChange.current) {
|
|
669
|
+
okClick();
|
|
670
|
+
} else {
|
|
671
|
+
setPanelOpen(panelOpenChange);
|
|
672
|
+
}
|
|
673
|
+
if (!isChange.current) {
|
|
674
|
+
setPanelOpen(false);
|
|
675
|
+
}
|
|
676
|
+
} else if (!((_selectedRangeDateRef_current2 = selectedRangeDateRef.current) === null || _selectedRangeDateRef_current2 === void 0 ? void 0 : _selectedRangeDateRef_current2[0]) || !((_selectedRangeDateRef_current3 = selectedRangeDateRef.current) === null || _selectedRangeDateRef_current3 === void 0 ? void 0 : _selectedRangeDateRef_current3[1])) {
|
|
677
|
+
setPanelOpen(panelOpenChange);
|
|
678
|
+
}
|
|
679
|
+
} else {
|
|
680
|
+
setPanelOpen(panelOpenChange);
|
|
416
681
|
}
|
|
417
682
|
onBlur && onBlur(e);
|
|
418
683
|
}
|
|
@@ -420,5 +685,5 @@ const BhdDatePicker = (props)=>{
|
|
|
420
685
|
})
|
|
421
686
|
]
|
|
422
687
|
});
|
|
423
|
-
};
|
|
688
|
+
});
|
|
424
689
|
export default BhdDatePicker;
|