bhd-components 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,22 +3,68 @@ 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
4
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
5
5
  import * as React from "react";
6
- import { useState, useRef } from "react";
6
+ import { useState, useEffect, useRef } from "react";
7
7
  import styles from "./index.module.less";
8
8
  import { Button, DatePicker } from "antd";
9
- import { CustomArrow, CalendarOutlined } from "../icons/index";
9
+ import { CustomArrow } from "../icons/index";
10
10
  import dayjs from "dayjs";
11
11
  var RangePicker = DatePicker.RangePicker;
12
+ var months = [
13
+ "一",
14
+ "二",
15
+ "三",
16
+ "四",
17
+ "五",
18
+ "六",
19
+ "七",
20
+ "八",
21
+ "九",
22
+ "十",
23
+ "十一",
24
+ "十二"
25
+ ];
12
26
  var BhdDatePicker = function(props) {
13
- var _props_kind = props.kind, kind = _props_kind === void 0 ? "single" : _props_kind, _props_value = props.value, value = _props_value === void 0 ? props.kind === "range" ? [] : "" : _props_value, extraItems = props.extraItems, _props_extraReadonly = props.extraReadonly, extraReadonly = _props_extraReadonly === void 0 ? false : _props_extraReadonly, picker = props.picker, _props_useType = props.useType, useType = _props_useType === void 0 ? "" : _props_useType, _props_label = props.label, label = _props_label === void 0 ? "" : _props_label, className = props.className, popupClassName = props.popupClassName, showTime = props.showTime, _props_showNow = props.showNow, showNow = _props_showNow === void 0 ? true : _props_showNow, onClick = props.onClick, onBlur = props.onBlur, onChange = props.onChange, onOk = props.onOk, _props_presets = props.presets, presets = _props_presets === void 0 ? [] : _props_presets;
27
+ var _props_kind = props.kind, kind = _props_kind === void 0 ? "single" : _props_kind, _props_value = props.value, value = _props_value === void 0 ? props.kind === "range" ? [] : "" : _props_value, extraItems = props.extraItems, _props_extraReadonly = props.extraReadonly, extraReadonly = _props_extraReadonly === void 0 ? false : _props_extraReadonly, picker = props.picker, _props_useType = props.useType, useType = _props_useType === void 0 ? "" : _props_useType, className = props.className, popupClassName = props.popupClassName, showTime = props.showTime, _props_showNow = props.showNow, showNow = _props_showNow === void 0 ? true : _props_showNow, onClick = props.onClick, onBlur = props.onBlur, onChange = props.onChange, onOk = props.onOk, _props_presets = props.presets, presets = _props_presets === void 0 ? [] : _props_presets;
14
28
  var bhdDatePickerRef = useRef(null);
15
29
  var _useState = _sliced_to_array(useState(false), 2), open = _useState[0], setOpen = _useState[1];
16
- var _useState1 = _sliced_to_array(useState(value), 2), selectedDate = _useState1[0], setSelectedDate = _useState1[1];
17
- var _useState2 = _sliced_to_array(useState(null), 2), selectedDateString = _useState2[0], setSelectedDateString = _useState2[1];
30
+ var _useState1 = _sliced_to_array(useState("date"), 2), panelMode = _useState1[0], setPanelMode = _useState1[1];
31
+ var _useState2 = _sliced_to_array(useState([
32
+ "date",
33
+ "date"
34
+ ]), 2), rangePanelMode = _useState2[0], setRangePanelMode = _useState2[1];
35
+ var _useState3 = _sliced_to_array(useState(value), 2), selectedDate = _useState3[0], setSelectedDate = _useState3[1];
36
+ var _useState4 = _sliced_to_array(useState(null), 2), selectedDateString = _useState4[0], setSelectedDateString = _useState4[1];
18
37
  var selectedDateRef = useRef(value);
19
38
  var selectedDateStringRef = useRef(null);
20
- var _useState3 = _sliced_to_array(useState(value), 2), selectedRangeDate = _useState3[0], setSelectedRangeDate = _useState3[1];
21
- var _useState4 = _sliced_to_array(useState([]), 2), selectedRangeDateString = _useState4[0], setSelectedRangeDateString = _useState4[1];
39
+ var _useState5 = _sliced_to_array(useState(value), 2), selectedRangeDate = _useState5[0], setSelectedRangeDate = _useState5[1];
40
+ var _useState6 = _sliced_to_array(useState([]), 2), selectedRangeDateString = _useState6[0], setSelectedRangeDateString = _useState6[1];
41
+ var _useState7 = _sliced_to_array(useState(false), 2), rangeOpenChange = _useState7[0], setRangeOpenChange = _useState7[1]; // 用于范围选择失去焦点后,判断是否关闭
42
+ var timer = useRef(null);
43
+ useEffect(function() {
44
+ setDefaultMode();
45
+ }, []);
46
+ useEffect(function() {
47
+ if (panelMode === "year") {
48
+ timer.current = setTimeout(function() {
49
+ var doms = document.getElementsByClassName("bhd-picker-decade-btn");
50
+ for(var index = 0; index < doms.length; index++){
51
+ var _doms_index, _doms_index_childNodes;
52
+ var dom = (_doms_index = doms[index]) === null || _doms_index === void 0 ? void 0 : (_doms_index_childNodes = _doms_index.childNodes) === null || _doms_index_childNodes === void 0 ? void 0 : _doms_index_childNodes[1];
53
+ if (dom) {
54
+ if (dom.textContent !== " ㅡ ") {
55
+ dom.textContent = " ㅡ ";
56
+ }
57
+ }
58
+ }
59
+ }, 0);
60
+ }
61
+ return function() {
62
+ clearTimeout(timer.current);
63
+ };
64
+ }, [
65
+ open,
66
+ panelMode
67
+ ]);
22
68
  var getConfig = function() {
23
69
  var config = _object_spread({}, props);
24
70
  delete config.cellRender;
@@ -37,6 +83,7 @@ var BhdDatePicker = function(props) {
37
83
  delete config.onOk;
38
84
  delete config.onChange;
39
85
  delete config.presets;
86
+ delete config.mode;
40
87
  if (kind === "single" || kind === "extra") {
41
88
  delete config.value;
42
89
  }
@@ -48,47 +95,61 @@ var BhdDatePicker = function(props) {
48
95
  }
49
96
  return config;
50
97
  };
98
+ // 设置默认mode
99
+ var setDefaultMode = function() {
100
+ if (kind === "range") {
101
+ setRangePanelMode([
102
+ picker || "date",
103
+ picker || "date"
104
+ ]);
105
+ } else {
106
+ setPanelMode(picker || "date");
107
+ }
108
+ };
51
109
  //单元格渲染
52
110
  var cellRender = function(current, info) {
53
- if (info.type !== "date") {
54
- return info.originNode;
111
+ if (info.type === "date") {
112
+ var extraItem = null;
113
+ if (kind === "extra") {
114
+ extraItem = extraItems === null || extraItems === void 0 ? void 0 : extraItems.find(function(item) {
115
+ return item.date.format("YYYYMMDD") === current.format("YYYYMMDD");
116
+ });
117
+ }
118
+ return /*#__PURE__*/ _jsx(_Fragment, {
119
+ children: /*#__PURE__*/ _jsxs("div", {
120
+ className: "bhd-picker-cell-inner",
121
+ children: [
122
+ current.format("DD"),
123
+ kind === "extra" && extraItem && /*#__PURE__*/ _jsx("div", {
124
+ className: "extraText ".concat(extraItem.status),
125
+ children: extraItem.text
126
+ })
127
+ ]
128
+ })
129
+ });
55
130
  }
56
- if (typeof current === "number" || typeof current === "string") {
131
+ if (info.type === "month") {
57
132
  return /*#__PURE__*/ _jsx("div", {
58
133
  className: "bhd-picker-cell-inner",
59
- children: current
60
- });
61
- }
62
- var extraItem = null;
63
- if (kind === "extra") {
64
- extraItem = extraItems === null || extraItems === void 0 ? void 0 : extraItems.find(function(item) {
65
- return item.date.format("YYYYMMDD") === current.format("YYYYMMDD");
134
+ children: months[Number(current.format("M")) - 1] + "月"
66
135
  });
67
136
  }
68
- return /*#__PURE__*/ _jsx(_Fragment, {
69
- children: /*#__PURE__*/ _jsxs("div", {
70
- className: "bhd-picker-cell-inner",
71
- children: [
72
- current.format("DD"),
73
- kind === "extra" && extraItem && /*#__PURE__*/ _jsx("div", {
74
- className: "extraText ".concat(extraItem.status),
75
- children: extraItem.text
76
- })
77
- ]
78
- })
79
- });
137
+ return info.originNode;
80
138
  };
81
139
  //日期禁用
82
140
  var disabledDate = function(current) {
83
- if (extraReadonly) {
84
- return true;
85
- }
141
+ // if (extraReadonly) {
142
+ // return true;
143
+ // }
86
144
  // 不能选择的是没有日程安排的
87
145
  var extraItem = null;
88
146
  if (kind === "extra") {
89
147
  extraItem = extraItems === null || extraItems === void 0 ? void 0 : extraItems.find(function(item) {
90
148
  return item.date.format("YYYYMMDD") === current.format("YYYYMMDD");
91
149
  });
150
+ if (extraReadonly && extraItem) {
151
+ return false;
152
+ }
92
153
  }
93
154
  return !extraItem || current && extraItem.status === "noselectable";
94
155
  };
@@ -127,23 +188,25 @@ var BhdDatePicker = function(props) {
127
188
  var renderPresets = function() {
128
189
  return /*#__PURE__*/ _jsx("li", {
129
190
  className: "bhd-picker-presets",
130
- children: presets.map(function(item) {
191
+ children: presets.map(function(item, index) {
131
192
  return /*#__PURE__*/ _jsx("a", {
132
193
  className: "bhd-picker-preset-btn",
133
194
  onClick: function() {
134
195
  presetClick(item.value);
135
196
  },
136
197
  children: item.label
137
- });
198
+ }, index);
138
199
  })
139
200
  });
140
201
  };
141
202
  // 日期选择确认
142
203
  var okClick = function() {
143
204
  if (kind === "range") {
144
- if (selectedRangeDate && selectedRangeDateString) {
205
+ if (selectedRangeDate[0] && selectedRangeDate[1] && selectedRangeDateString[0] && selectedRangeDateString[1]) {
145
206
  onChange && onChange(selectedRangeDate, selectedRangeDateString);
146
207
  setOpen(false);
208
+ } else {
209
+ setOpen(true);
147
210
  }
148
211
  } else {
149
212
  if (selectedDate && selectedDateString) {
@@ -168,148 +231,146 @@ var BhdDatePicker = function(props) {
168
231
  onChange && onChange(value, todayString);
169
232
  setOpen(false);
170
233
  };
171
- return /*#__PURE__*/ _jsxs("div", {
234
+ return /*#__PURE__*/ _jsxs("span", {
172
235
  className: "".concat(styles.bhdDatePicker),
173
236
  ref: bhdDatePickerRef,
174
237
  children: [
175
- kind === "single" && /*#__PURE__*/ _jsxs(_Fragment, {
176
- children: [
177
- useType === "table" && /*#__PURE__*/ _jsxs("span", {
178
- className: styles.pickerLabel,
179
- onClick: function() {
180
- setOpen(true);
181
- },
182
- children: [
183
- label,
184
- /*#__PURE__*/ _jsx(CalendarOutlined, {})
185
- ]
238
+ kind === "single" && /*#__PURE__*/ _jsx(_Fragment, {
239
+ children: /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
240
+ id: "pickerRef",
241
+ className: "".concat(className, " ").concat(useType === "table" ? "table-date-picker" : ""),
242
+ popupClassName: "".concat(styles.bhdDatePickerPopup, " ").concat(styles.singlePicker, " ").concat(popupClassName || ""),
243
+ cellRender: cellRender,
244
+ prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
245
+ style: {
246
+ transform: "rotate(90deg)"
247
+ }
186
248
  }),
187
- /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
188
- className: "".concat(className, " ").concat(useType === "table" ? "hide" : ""),
189
- popupClassName: "".concat(styles.bhdDatePickerPopup, " ").concat(styles.singlePicker, " ").concat(popupClassName || ""),
190
- cellRender: cellRender,
191
- prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
192
- style: {
193
- transform: "rotate(90deg)"
194
- }
195
- }),
196
- nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
197
- style: {
198
- transform: "rotate(-90deg)"
199
- }
200
- }),
201
- superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
202
- style: {
203
- transform: "rotate(90deg)"
204
- }
205
- }),
206
- superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
207
- style: {
208
- transform: "rotate(-90deg)"
209
- }
210
- }),
211
- open: open,
212
- showNow: showTime ? showNow : false,
213
- value: selectedDate,
214
- onChange: function(date, dateString) {
215
- setSelectedDate(function(prevState) {
216
- selectedDateRef.current = date;
217
- return selectedDateRef.current;
218
- });
219
- setSelectedDateString(function(prevState) {
220
- selectedDateStringRef.current = dateString;
221
- return selectedDateStringRef.current;
222
- });
223
- console.log({
224
- selectedDate: selectedDateRef.current,
225
- selectedDateString: selectedDateStringRef.current
226
- });
227
- },
228
- onOk: function() {
229
- if (showTime) {
230
- setTimeout(function() {
231
- console.log({
232
- selectedDate: selectedDateRef.current,
233
- selectedDateString: selectedDateStringRef.current
234
- });
235
- onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
236
- setOpen(false);
237
- }, 0);
238
- }
239
- onOk && onOk();
240
- },
241
- onClick: function() {
242
- setOpen(true);
243
- onClick && onClick();
244
- },
245
- onBlur: function() {
246
- okClick();
247
- setOpen(false);
248
- onBlur && onBlur();
249
- },
250
- renderExtraFooter: renderExtraFooter
251
- }))
252
- ]
253
- }),
254
- kind === "range" && /*#__PURE__*/ _jsxs(_Fragment, {
255
- children: [
256
- useType === "table" && /*#__PURE__*/ _jsxs("span", {
257
- className: styles.pickerLabel,
258
- onClick: function() {
259
- setOpen(true);
260
- },
261
- children: [
262
- label,
263
- /*#__PURE__*/ _jsx(CalendarOutlined, {})
264
- ]
249
+ nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
250
+ style: {
251
+ transform: "rotate(-90deg)"
252
+ }
265
253
  }),
266
- /*#__PURE__*/ _jsx(RangePicker, _object_spread_props(_object_spread({}, getConfig()), {
267
- className: "".concat(className, " ").concat(useType === "table" ? "hide" : ""),
268
- popupClassName: "".concat(styles.bhdDatePickerPopup, " ").concat(styles.rangePicker, " ").concat(popupClassName || ""),
269
- cellRender: cellRender,
270
- prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
271
- style: {
272
- transform: "rotate(90deg)"
273
- }
274
- }),
275
- nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
276
- style: {
277
- transform: "rotate(-90deg)"
278
- }
279
- }),
280
- superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
281
- style: {
282
- transform: "rotate(90deg)"
283
- }
284
- }),
285
- superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
286
- style: {
287
- transform: "rotate(-90deg)"
288
- }
289
- }),
290
- open: open,
291
- showNow: false,
292
- value: selectedRangeDate,
293
- onClick: function() {
294
- setOpen(true);
295
- onClick && onClick();
296
- },
297
- onCalendarChange: function(dates, dateStrings, info) {
298
- setSelectedRangeDate(dates);
299
- setSelectedRangeDateString(dateStrings);
300
- },
301
- onBlur: function() {
302
- if ((selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) && (selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) {
303
- okClick();
304
- setOpen(false);
305
- } else if (!(selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) && !(selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) {
254
+ superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
255
+ style: {
256
+ transform: "rotate(90deg)"
257
+ }
258
+ }),
259
+ superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
260
+ style: {
261
+ transform: "rotate(-90deg)"
262
+ }
263
+ }),
264
+ onPanelChange: function(value, mode) {
265
+ setPanelMode(mode);
266
+ },
267
+ mode: panelMode,
268
+ open: open,
269
+ onOpenChange: function(value) {
270
+ // 打开设置默认mode
271
+ if (value) {
272
+ setDefaultMode();
273
+ }
274
+ },
275
+ showNow: showTime ? showNow : false,
276
+ defaultPickerValue: selectedDate,
277
+ value: selectedDate,
278
+ onChange: function(date, dateString) {
279
+ setSelectedDate(function(prevState) {
280
+ selectedDateRef.current = date;
281
+ return selectedDateRef.current;
282
+ });
283
+ setSelectedDateString(function(prevState) {
284
+ selectedDateStringRef.current = dateString;
285
+ return selectedDateStringRef.current;
286
+ });
287
+ },
288
+ onOk: function() {
289
+ if (showTime) {
290
+ setTimeout(function() {
291
+ console.log({
292
+ selectedDate: selectedDateRef.current,
293
+ selectedDateString: selectedDateStringRef.current
294
+ });
295
+ onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
306
296
  setOpen(false);
307
- }
308
- onBlur && onBlur();
309
- },
310
- renderExtraFooter: renderExtraFooter
311
- }))
312
- ]
297
+ }, 0);
298
+ }
299
+ onOk && onOk();
300
+ },
301
+ onClick: function() {
302
+ setOpen(true);
303
+ onClick && onClick();
304
+ },
305
+ onBlur: function() {
306
+ okClick();
307
+ setOpen(false);
308
+ onBlur && onBlur();
309
+ },
310
+ renderExtraFooter: renderExtraFooter
311
+ }))
312
+ }),
313
+ kind === "range" && /*#__PURE__*/ _jsx(_Fragment, {
314
+ children: /*#__PURE__*/ _jsx(RangePicker, _object_spread_props(_object_spread({}, getConfig()), {
315
+ className: "".concat(className, " ").concat(useType === "table" ? "table-date-picker" : ""),
316
+ popupClassName: "".concat(styles.bhdDatePickerPopup, " ").concat(styles.rangePicker, " ").concat(popupClassName || ""),
317
+ cellRender: cellRender,
318
+ prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
319
+ style: {
320
+ transform: "rotate(90deg)"
321
+ }
322
+ }),
323
+ nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
324
+ style: {
325
+ transform: "rotate(-90deg)"
326
+ }
327
+ }),
328
+ superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
329
+ style: {
330
+ transform: "rotate(90deg)"
331
+ }
332
+ }),
333
+ superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
334
+ style: {
335
+ transform: "rotate(-90deg)"
336
+ }
337
+ }),
338
+ onPanelChange: function(value, mode) {
339
+ setRangePanelMode(mode);
340
+ },
341
+ mode: rangePanelMode,
342
+ open: open,
343
+ onOpenChange: function(value) {
344
+ if (value) {
345
+ setDefaultMode();
346
+ }
347
+ setRangeOpenChange(value);
348
+ },
349
+ showNow: false,
350
+ defaultPickerValue: selectedRangeDate,
351
+ value: selectedRangeDate,
352
+ onClick: function() {
353
+ setOpen(true);
354
+ onClick && onClick();
355
+ },
356
+ onCalendarChange: function(dates, dateStrings, info) {
357
+ setSelectedRangeDate(dates);
358
+ setSelectedRangeDateString(dateStrings);
359
+ },
360
+ onBlur: function() {
361
+ if ((selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) && (selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) {
362
+ okClick();
363
+ setOpen(false);
364
+ } else if (!(selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) || !(selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) {
365
+ setOpen(rangeOpenChange);
366
+ }
367
+ onBlur && onBlur();
368
+ },
369
+ panelRender: function(panelNode) {
370
+ return panelNode;
371
+ },
372
+ renderExtraFooter: renderExtraFooter
373
+ }))
313
374
  }),
314
375
  kind === "extra" && /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
315
376
  className: "".concat(className, " ").concat(useType === "table" ? "hide" : ""),
@@ -337,8 +398,18 @@ var BhdDatePicker = function(props) {
337
398
  }),
338
399
  disabledDate: disabledDate,
339
400
  allowClear: !extraReadonly,
401
+ onPanelChange: function(value, mode) {
402
+ setPanelMode(mode);
403
+ },
404
+ mode: panelMode,
405
+ onOpenChange: function(value) {
406
+ if (value) {
407
+ setDefaultMode();
408
+ }
409
+ },
340
410
  open: open,
341
411
  showNow: false,
412
+ defaultPickerValue: selectedDate,
342
413
  value: selectedDate,
343
414
  onChange: function(date, dateString) {
344
415
  setSelectedDate(date);
@@ -355,10 +426,6 @@ var BhdDatePicker = function(props) {
355
426
  setOpen(false);
356
427
  onBlur && onBlur();
357
428
  },
358
- panelRender: function(panelNode) {
359
- console.log(panelNode);
360
- return panelNode;
361
- },
362
429
  renderExtraFooter: extraReadonly ? null : renderExtraFooter
363
430
  }))
364
431
  ]