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