bhd-components 0.9.2 → 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.
Files changed (87) hide show
  1. package/README.md +1 -1
  2. package/dist/index.esm.es5.development.css +456 -364
  3. package/dist/index.esm.es5.development.js +414 -323
  4. package/dist/index.esm.es5.production.css +1 -1
  5. package/dist/index.esm.es5.production.js +1 -1
  6. package/dist/vendor.esm.es5.development.css +119 -0
  7. package/dist/{a5565b8a.esm.es5.development.js → vendor.esm.es5.development.js} +8247 -6856
  8. package/dist/vendor.esm.es5.production.css +11 -0
  9. package/dist/vendor.esm.es5.production.js +485 -0
  10. package/es2017/bhdAppLayout/components/BhdTableSimple/index.js +1 -1
  11. package/es2017/bhdAppLayout/components/BhdTableSimple/index/347/232/204/345/211/257/346/234/254.js +2 -2
  12. package/es2017/bhdAppLayout/index.js +16 -16
  13. package/es2017/bhdDatePicker/index.d.ts +1 -2
  14. package/es2017/bhdDatePicker/index.js +311 -254
  15. package/es2017/bhdDatePicker/index.module.less +106 -9
  16. package/es2017/bhdSelect/index.js +4 -4
  17. package/es2017/bhdTipModal/index.js +6 -6
  18. package/es2017/customerService/contactsList.d.ts +2 -2
  19. package/es2017/customerService/contactsList.js +2 -2
  20. package/es2017/customerService/function.js +2 -1
  21. package/es2017/customerService/historyFun.d.ts +2 -2
  22. package/es2017/customerService/historyFun.js +2 -2
  23. package/es2017/customerService/index.d.ts +2 -2
  24. package/es2017/customerService/index.js +5 -5
  25. package/es2017/customerService/js-screen-shot/lib/common-methods/GetCanvasImgData.js +1 -1
  26. package/es2017/customerService/js-screen-shot/lib/common-methods/SaveBorderArrInfo.js +1 -1
  27. package/es2017/customerService/js-screen-shot/lib/common-methods/SaveCanvasToBase64.js +3 -2
  28. package/es2017/customerService/js-screen-shot/lib/common-methods/SaveCanvasToImage.js +2 -1
  29. package/es2017/customerService/js-screen-shot/lib/common-methods/ZoomCutOutBoxPosition.d.ts +3 -3
  30. package/es2017/customerService/js-screen-shot/lib/main-entrance/CreateDom.js +4 -3
  31. package/es2017/customerService/js-screen-shot/lib/main-entrance/InitData.js +2 -2
  32. package/es2017/customerService/js-screen-shot/lib/split-methods/DrawCutOutBox.js +6 -5
  33. package/es2017/customerService/js-screen-shot/lib/split-methods/SetPlugInParameters.js +15 -14
  34. package/es2017/customerService/js-screen-shot/lib/split-methods/ToolClickEvent.js +1 -1
  35. package/es2017/customerService/js-screen-shot/lib/split-methods/drawCrossImg.js +2 -1
  36. package/es2017/customerService/js-screen-shot/main.js +38 -35
  37. package/es2017/customerService/screenshotTool.d.ts +2 -2
  38. package/es2017/customerService/screenshotTool.js +2 -2
  39. package/es2017/customerService/teacherList.d.ts +2 -2
  40. package/es2017/customerService/teacherList.js +2 -2
  41. package/es2017/i18n/en_US.js +16 -1
  42. package/es2017/i18n/zh_CN.js +16 -1
  43. package/es2017/icons/index.js +2 -2
  44. package/es2017/index.js +14 -14
  45. package/es2017/provider/index.js +2 -2
  46. package/es2017/table/index.js +4 -4
  47. package/es2017/tableSelect/index.js +3 -3
  48. package/es2017/textTootip/index.js +1 -1
  49. package/es2017/titleBar/index.js +3 -3
  50. package/es2017/viewImage/index.js +13 -13
  51. package/esm/bhdAppLayout/index.js +15 -15
  52. package/esm/bhdDatePicker/index.d.ts +1 -2
  53. package/esm/bhdDatePicker/index.js +312 -255
  54. package/esm/bhdDatePicker/index.module.less +106 -9
  55. package/esm/bhdSelect/index.js +1 -1
  56. package/esm/bhdTipModal/index.js +1 -1
  57. package/esm/customerService/contactsList.d.ts +2 -2
  58. package/esm/customerService/contactsList.js +1 -1
  59. package/esm/customerService/function.js +2 -1
  60. package/esm/customerService/historyFun.d.ts +2 -2
  61. package/esm/customerService/historyFun.js +1 -1
  62. package/esm/customerService/index.d.ts +2 -2
  63. package/esm/customerService/index.js +1 -1
  64. package/esm/customerService/js-screen-shot/lib/common-methods/SaveCanvasToBase64.js +3 -2
  65. package/esm/customerService/js-screen-shot/lib/common-methods/SaveCanvasToImage.js +2 -1
  66. package/esm/customerService/js-screen-shot/lib/common-methods/ZoomCutOutBoxPosition.d.ts +3 -3
  67. package/esm/customerService/js-screen-shot/lib/main-entrance/CreateDom.js +4 -3
  68. package/esm/customerService/js-screen-shot/lib/split-methods/DrawCutOutBox.js +5 -4
  69. package/esm/customerService/js-screen-shot/lib/split-methods/SetPlugInParameters.js +15 -14
  70. package/esm/customerService/js-screen-shot/lib/split-methods/drawCrossImg.js +2 -1
  71. package/esm/customerService/js-screen-shot/main.js +31 -28
  72. package/esm/customerService/screenshotTool.d.ts +2 -2
  73. package/esm/customerService/screenshotTool.js +1 -1
  74. package/esm/customerService/teacherList.d.ts +2 -2
  75. package/esm/customerService/teacherList.js +1 -1
  76. package/esm/i18n/en_US.js +16 -1
  77. package/esm/i18n/zh_CN.js +16 -1
  78. package/esm/icons/index.js +1 -1
  79. package/esm/index.js +14 -14
  80. package/esm/tableSelect/index.js +1 -1
  81. package/esm/viewImage/index.js +3 -3
  82. package/package.json +1 -1
  83. package/dist/deb6cc9b.esm.es5.production.js +0 -485
  84. package/dist/vendor.esm.es5.development.esm.es5.development.css +0 -119
  85. package/dist/vendor.esm.es5.production.esm.es5.production.css +0 -11
  86. package/es2017/customerService/screenShotPlugin.esm.js +0 -6515
  87. package/esm/customerService/screenShotPlugin.esm.js +0 -6516
@@ -2,30 +2,71 @@ 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
- import { Button, DatePicker } from "antd";
8
- import { CustomArrow } from "../icons/index";
9
- import dayjs from "dayjs";
10
- const { RangePicker } = DatePicker;
7
+ import { ConfigProvider, Button, DatePicker } from "antd";
8
+ import { CustomArrow } from "../icons";
9
+ // import dayjs from "dayjs";
10
+ // import type { Dayjs } from "dayjs";
11
+ import i18Conversion from "../i18n";
12
+ const { RangePicker } = DatePicker;
11
13
  let months = [
12
- "",
13
- "",
14
- "",
15
- "",
16
- "",
17
- "",
18
- "",
19
- "",
20
- "",
21
- "",
22
- "十一",
23
- "十二"
14
+ "一月",
15
+ "二月",
16
+ "三月",
17
+ "四月",
18
+ "五月",
19
+ "六月",
20
+ "七月",
21
+ "八月",
22
+ "九月",
23
+ "十月",
24
+ "十一月",
25
+ "十二月"
24
26
  ];
27
+ //January_February_March_April_May_June_July_August_September_October_November_December
25
28
  const BhdDatePicker = (props)=>{
26
- let { kind ="single" , value =props.kind === "range" ? [] : "" , extraItems , extraReadonly =false , picker , useType ="" , className , popupClassName , showTime , showNow =true , onClick , onBlur , onChange , onOk , presets =[] } = props;
29
+ const lang = ConfigProvider.lang === "en" ? "en_US" : "zh_CN";
30
+ // if (lang === "en_US") {
31
+ // const enUS = require("dayjs/locale/en");
32
+ // dayjs.locale(enUS);
33
+ // } else {
34
+ // const zhCN = require("dayjs/locale/zh-cn");
35
+ // dayjs.locale(zhCN);
36
+ // }
37
+ const id = "BhdDatePicker_" + new Date().getTime();
38
+ // 默认格式
39
+ const getDefaultFormat = ()=>{
40
+ if (props.format) {
41
+ return props.format;
42
+ } else {
43
+ let fm = props.showTime ? "YYYY-MM-DD hh:mm:ss" : "YYYY-MM-DD";
44
+ switch(props.picker){
45
+ case undefined:
46
+ case "date":
47
+ break;
48
+ case "week":
49
+ fm = "YYYY-wo";
50
+ break;
51
+ case "month":
52
+ fm = "YYYY-MM";
53
+ break;
54
+ case "quarter":
55
+ fm = "YYYY-QQ";
56
+ break;
57
+ case "year":
58
+ fm = "YYYY";
59
+ break;
60
+ default:
61
+ break;
62
+ }
63
+ return fm;
64
+ }
65
+ };
66
+ // 自己组件内使用的,或者自己处理的
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;
27
68
  const bhdDatePickerRef = useRef(null);
28
- const [open, setOpen] = useState(false);
69
+ const [panelOpen, setPanelOpen] = useState(open);
29
70
  const [panelMode, setPanelMode] = useState("date");
30
71
  const [rangePanelMode, setRangePanelMode] = useState([
31
72
  "date",
@@ -38,79 +79,123 @@ const BhdDatePicker = (props)=>{
38
79
  const [selectedRangeDate, setSelectedRangeDate] = useState(value);
39
80
  const [selectedRangeDateString, setSelectedRangeDateString] = useState([]);
40
81
  const [rangeOpenChange, setRangeOpenChange] = useState(false); // 用于范围选择失去焦点后,判断是否关闭
41
- const timer = useRef(null);
82
+ const isChange = useRef(false);
42
83
  useEffect(()=>{
43
84
  setDefaultMode();
44
- }, []);
45
- useEffect(()=>{
46
- if (panelMode === "year") {
47
- timer.current = setTimeout(()=>{
48
- const doms = document.getElementsByClassName("bhd-picker-decade-btn");
49
- for(let index = 0; index < doms.length; index++){
50
- var _doms_index, _doms_index_childNodes;
51
- const 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];
52
- if (dom) {
53
- if (dom.textContent !== " ㅡ ") {
54
- dom.textContent = " ㅡ ";
55
- }
56
- }
57
- }
58
- }, 0);
85
+ if (kind === "range") {
86
+ if (selectedRangeDate[0] && selectedRangeDate[1]) {
87
+ setSelectedRangeDateString([
88
+ selectedRangeDate[0].format(format),
89
+ selectedRangeDate[1].format(format)
90
+ ]);
91
+ }
92
+ } else {
93
+ if (selectedDate) {
94
+ setSelectedDateString((prevState)=>{
95
+ selectedDateStringRef.current = selectedDate.format(format);
96
+ return selectedDateStringRef.current;
97
+ });
98
+ }
59
99
  }
60
100
  return ()=>{
61
- clearTimeout(timer.current);
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);
62
104
  };
105
+ }, []);
106
+ useEffect(()=>{
107
+ isChange.current = true;
63
108
  }, [
64
- open,
65
- panelMode
109
+ selectedDate,
110
+ selectedRangeDate
66
111
  ]);
112
+ // 传给 DatePicker 的props参数
67
113
  const getConfig = ()=>{
68
- let config = _object_spread({}, props);
69
- delete config.cellRender;
70
- delete config.className;
71
- delete config.prevIcon;
72
- delete config.nextIcon;
73
- delete config.superPrevIcon;
74
- delete config.superNextIcon;
114
+ let config = _object_spread_props(_object_spread({
115
+ prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
116
+ style: {
117
+ transform: "rotate(90deg)"
118
+ }
119
+ }),
120
+ nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
121
+ style: {
122
+ transform: "rotate(-90deg)"
123
+ }
124
+ }),
125
+ superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
126
+ style: {
127
+ transform: "rotate(90deg)"
128
+ }
129
+ }),
130
+ superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
131
+ style: {
132
+ transform: "rotate(-90deg)"
133
+ }
134
+ })
135
+ }, props), {
136
+ //--------------- 下边是需要处理的
137
+ className: `${className} ${useType === "table" ? "table-date-picker" : ""}`,
138
+ popupClassName,
139
+ allowClear,
140
+ showTime,
141
+ cellRender,
142
+ renderExtraFooter: selfRenderExtraFooter
143
+ });
144
+ //组件支持传入,防止再次传入DatePicker,所以删掉
145
+ delete config.mode;
75
146
  delete config.open;
76
147
  delete config.onOpenChange;
77
- delete config.renderExtraFooter;
78
- delete config.useType;
79
- delete config.showNow;
80
148
  delete config.onClick;
81
149
  delete config.onBlur;
82
150
  delete config.onOk;
83
151
  delete config.onChange;
84
- delete config.presets;
85
- delete config.mode;
86
- if (kind === "single" || kind === "extra") {
87
- delete config.value;
152
+ delete config.useType; // 组件自己定义的
153
+ delete config.presets; // 必须删掉,因为预设由官网的左侧换到底部
154
+ delete config.showNow; // 必须删掉,因为官网的今天按钮有bug,不受showNow的值控制
155
+ if (!config.cellRender) {
156
+ config.cellRender = selfCellRender;
88
157
  }
89
- if (kind === "extra" && picker !== "date") {
90
- delete config.extraItems;
158
+ // 单选
159
+ if (kind === "single") {
160
+ config.popupClassName = `
161
+ ${styles.bhdDatePickerPopup} ${styles.singlePicker} ${popupClassName || ""} ${showTime ? styles.showTime : ""} ${renderExtraFooter ? styles.showExtraFooter : ""}`;
91
162
  }
163
+ // 范围选择
164
+ if (kind === "range") {
165
+ config.popupClassName = `${styles.bhdDatePickerPopup} ${styles.rangePicker} ${popupClassName || ""} ${showTime ? styles.showTime : ""} ${renderExtraFooter ? styles.showExtraFooter : ""}`;
166
+ }
167
+ // 日常安排
92
168
  if (kind === "extra") {
93
- delete config.disabledDate;
169
+ delete config.showTime; // 日程安排的时候,不允许展示时间面板
170
+ showTime = false; // 日程安排不选择时间
171
+ config.popupClassName = `${styles.bhdDatePickerPopup} ${styles.extraPicker} ${extraReadonly ? styles.readonly : ""} ${popupClassName || ""} ${showTime ? styles.showTime : ""} ${renderExtraFooter ? styles.showExtraFooter : ""}`;
172
+ if (extraReadonly) {
173
+ config.allowClear = false; // 日程安排查看时,不显示清除按钮
174
+ }
94
175
  }
176
+ config.popupClassName = `${config.popupClassName} ${id}`;
95
177
  return config;
96
178
  };
97
179
  // 设置默认mode
98
180
  const setDefaultMode = ()=>{
181
+ if (kind === "single" || kind === "extra") {
182
+ setPanelMode(mode || picker || "date");
183
+ }
99
184
  if (kind === "range") {
185
+ var _mode, _mode1;
100
186
  setRangePanelMode([
101
- picker || "date",
102
- picker || "date"
187
+ ((_mode = mode) === null || _mode === void 0 ? void 0 : _mode[0]) || picker || "date",
188
+ ((_mode1 = mode) === null || _mode1 === void 0 ? void 0 : _mode1[1]) || picker || "date"
103
189
  ]);
104
- } else {
105
- setPanelMode(picker || "date");
106
190
  }
107
191
  };
108
192
  //单元格渲染
109
- const cellRender = (current, info)=>{
193
+ const selfCellRender = (current, info)=>{
110
194
  if (info.type === "date") {
111
195
  let extraItem = null;
112
196
  if (kind === "extra") {
113
- extraItem = extraItems === null || extraItems === void 0 ? void 0 : extraItems.find((item)=>item.date.format("YYYYMMDD") === current.format("YYYYMMDD"));
197
+ var _extraItems;
198
+ extraItem = (_extraItems = extraItems) === null || _extraItems === void 0 ? void 0 : _extraItems.find((item)=>item.date.format("YYYYMMDD") === current.format("YYYYMMDD"));
114
199
  }
115
200
  return /*#__PURE__*/ _jsx(_Fragment, {
116
201
  children: /*#__PURE__*/ _jsxs("div", {
@@ -125,67 +210,111 @@ const BhdDatePicker = (props)=>{
125
210
  })
126
211
  });
127
212
  }
213
+ // 月份 中文模式下显示全名称(例:一月),英文模式下显示短名称(例:Jan)
128
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
+ // );
129
220
  return /*#__PURE__*/ _jsx("div", {
130
221
  className: `${"bhd-picker-cell-inner"}`,
131
- children: months[Number(current.format("M")) - 1] + "月"
222
+ children: i18Conversion(months[Number(current.format("M")) - 1])
132
223
  });
133
224
  }
134
225
  return info.originNode;
135
226
  };
136
227
  //日期禁用
137
- const disabledDate = (current)=>{
138
- // if (extraReadonly) {
139
- // return true;
140
- // }
228
+ const selfDisabledDate = (current)=>{
229
+ // 或者是传过来的
230
+ if (disabledDate) {
231
+ return disabledDate(current);
232
+ }
141
233
  // 不能选择的是没有日程安排的
142
234
  let extraItem = null;
143
235
  if (kind === "extra") {
144
- extraItem = extraItems === null || extraItems === void 0 ? void 0 : extraItems.find((item)=>item.date.format("YYYYMMDD") === current.format("YYYYMMDD"));
236
+ var _extraItems;
237
+ extraItem = (_extraItems = extraItems) === null || _extraItems === void 0 ? void 0 : _extraItems.find((item)=>item.date.format("YYYYMMDD") === current.format("YYYYMMDD"));
145
238
  if (extraReadonly && extraItem) {
146
239
  return false;
147
240
  }
241
+ return !extraItem || current && extraItem.status === "noselectable";
148
242
  }
149
- return !extraItem || current && extraItem.status === "noselectable";
243
+ return false;
150
244
  };
151
- // 渲染底部扩展内容
152
- const renderExtraFooter = (mode)=>{
153
- return !showTime ? /*#__PURE__*/ _jsxs("ul", {
154
- className: "bhd-picker-ranges",
245
+ // 渲染底部扩展内容(包括确定按钮、今天按钮、预设、传入的底部扩展)
246
+ const selfRenderExtraFooter = (mode)=>{
247
+ var _selectedRangeDate, _selectedRangeDate1;
248
+ return /*#__PURE__*/ _jsxs(_Fragment, {
155
249
  children: [
156
- renderPresets(),
157
- showNow && (kind === "single" || kind === "extra" && extraItems.filter((item)=>item.status !== "noselectable" && item.date.format("YYYY-MM-DD") === dayjs().format("YYYY-MM-DD")).length > 0) && mode === "date" && /*#__PURE__*/ _jsx("li", {
158
- className: "bhd-picker-now",
159
- children: /*#__PURE__*/ _jsx("a", {
160
- className: "bhd-picker-now-btn",
161
- onClick: todayClick,
162
- children: showTime ? "此刻" : "今天"
163
- })
250
+ renderExtraFooter && /*#__PURE__*/ _jsx("div", {
251
+ className: "bhddatepicker-picker-footer-extra-extend",
252
+ children: renderExtraFooter(mode)
164
253
  }),
165
- /*#__PURE__*/ _jsx("li", {
166
- className: "bhd-picker-ok",
167
- children: /*#__PURE__*/ _jsx(Button, {
168
- type: "primary",
169
- disabled: kind === "range" ? !((selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) && (selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) : !(selectedDate && selectedDateString),
170
- onClick: okClick,
171
- children: "确定"
254
+ !showTime ? /*#__PURE__*/ _jsx(_Fragment, {
255
+ children: /*#__PURE__*/ _jsxs("ul", {
256
+ className: "bhd-picker-ranges",
257
+ children: [
258
+ selfRenderPresets(),
259
+ renderToday(),
260
+ /*#__PURE__*/ _jsx("li", {
261
+ className: "bhd-picker-ok",
262
+ children: /*#__PURE__*/ _jsx(Button, {
263
+ type: "primary",
264
+ 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),
265
+ onClick: okClick,
266
+ children: i18Conversion("确定")
267
+ })
268
+ })
269
+ ]
172
270
  })
271
+ }) : /*#__PURE__*/ _jsx("ul", {
272
+ className: `bhd-picker-ranges showPresets ${showNow ? "showNow" : ""}`,
273
+ children: selfRenderPresets()
173
274
  })
174
275
  ]
175
- }) : /*#__PURE__*/ _jsx("ul", {
176
- className: "bhd-picker-ranges",
177
- children: renderPresets()
178
276
  });
179
277
  };
278
+ // 渲染今天
279
+ const renderToday = ()=>{
280
+ // 显示now
281
+ if (showToday) {
282
+ var _extraItems;
283
+ // 日程安排时: extraItems中今天是否是可选或者已选择状态
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;
286
+ if (kind === "single" || kind === "extra" && hasNow) {
287
+ if (mode === "date" || mode === undefined) {
288
+ return /*#__PURE__*/ _jsx("li", {
289
+ className: "bhd-picker-now",
290
+ children: /*#__PURE__*/ _jsx("a", {
291
+ className: "bhd-picker-now-btn",
292
+ style: {
293
+ visibility: "hidden"
294
+ },
295
+ onClick: todayClick,
296
+ children: i18Conversion("今天")
297
+ })
298
+ });
299
+ }
300
+ }
301
+ }
302
+ return null;
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
+ };
180
309
  // 渲染预设
181
- const renderPresets = ()=>{
310
+ const selfRenderPresets = ()=>{
182
311
  return /*#__PURE__*/ _jsx("li", {
183
312
  className: "bhd-picker-presets",
184
313
  children: presets.map((item, index)=>{
185
314
  return /*#__PURE__*/ _jsx("a", {
186
315
  className: "bhd-picker-preset-btn",
187
316
  onClick: ()=>{
188
- presetClick(item.value);
317
+ presetClick(item);
189
318
  },
190
319
  children: item.label
191
320
  }, index);
@@ -197,77 +326,87 @@ const BhdDatePicker = (props)=>{
197
326
  if (kind === "range") {
198
327
  if (selectedRangeDate[0] && selectedRangeDate[1] && selectedRangeDateString[0] && selectedRangeDateString[1]) {
199
328
  onChange && onChange(selectedRangeDate, selectedRangeDateString);
200
- setOpen(false);
329
+ setPanelOpen(false);
201
330
  } else {
202
- setOpen(true);
331
+ setPanelOpen(true);
203
332
  }
204
333
  } else {
205
- if (selectedDate && selectedDateString) {
206
- onChange && onChange(selectedDate, selectedDateString);
207
- setOpen(false);
334
+ if (selectedDateRef.current && selectedDateStringRef.current) {
335
+ onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
336
+ setPanelOpen(false);
208
337
  }
209
338
  }
210
339
  };
211
- const todayClick = ()=>{
212
- var today = dayjs();
213
- var todayString = today.format(showTime ? "YYYY-MM-DD hh:mm:ss" : "YYYY-MM-DD");
214
- setSelectedDate(today);
215
- setSelectedDateString(todayString);
216
- onChange && onChange(today, todayString);
217
- setOpen(false);
340
+ // 今天点击
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
+ }
218
359
  };
219
360
  //预设点击
220
- const presetClick = (value)=>{
221
- var todayString = value.format(showTime ? "YYYY-MM-DD hh:mm:ss" : "YYYY-MM-DD");
222
- setSelectedDate(value);
223
- setSelectedDateString(todayString);
224
- onChange && onChange(value, todayString);
225
- setOpen(false);
361
+ const presetClick = (info)=>{
362
+ console.log(typeof info.value);
363
+ const value = typeof info.value === "function" ? info.value() : info.value;
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
+ }
226
386
  };
227
387
  return /*#__PURE__*/ _jsxs("span", {
228
388
  className: `${styles.bhdDatePicker}`,
229
389
  ref: bhdDatePickerRef,
230
390
  children: [
231
- kind === "single" && /*#__PURE__*/ _jsx(_Fragment, {
391
+ (kind === "single" || kind === "extra") && /*#__PURE__*/ _jsx(_Fragment, {
232
392
  children: /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
233
- id: "pickerRef",
234
- className: `${className} ${useType === "table" ? "table-date-picker" : ""}`,
235
- popupClassName: `${styles.bhdDatePickerPopup} ${styles.singlePicker} ${popupClassName || ""}`,
236
- cellRender: cellRender,
237
- prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
238
- style: {
239
- transform: "rotate(90deg)"
240
- }
241
- }),
242
- nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
243
- style: {
244
- transform: "rotate(-90deg)"
245
- }
246
- }),
247
- superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
248
- style: {
249
- transform: "rotate(90deg)"
250
- }
251
- }),
252
- superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
253
- style: {
254
- transform: "rotate(-90deg)"
255
- }
256
- }),
393
+ id: id,
394
+ value: selectedDate,
395
+ mode: panelMode,
396
+ open: panelOpen,
397
+ disabledDate: selfDisabledDate,
257
398
  onPanelChange: (value, mode)=>{
258
399
  setPanelMode(mode);
400
+ onPanelChange && onPanelChange(value, mode);
259
401
  },
260
- mode: panelMode,
261
- open: open,
262
402
  onOpenChange: (value)=>{
263
403
  // 打开设置默认mode
264
404
  if (value) {
265
405
  setDefaultMode();
406
+ todayClickEventListener(value);
266
407
  }
408
+ onOpenChange && onOpenChange(value);
267
409
  },
268
- showNow: showTime ? showNow : false,
269
- defaultPickerValue: selectedDate,
270
- value: selectedDate,
271
410
  onChange: (date, dateString)=>{
272
411
  setSelectedDate((prevState)=>{
273
412
  selectedDateRef.current = date;
@@ -278,149 +417,67 @@ const BhdDatePicker = (props)=>{
278
417
  return selectedDateStringRef.current;
279
418
  });
280
419
  },
281
- onOk: ()=>{
420
+ onOk: (date)=>{
282
421
  if (showTime) {
283
422
  setTimeout(()=>{
284
- console.log({
285
- selectedDate: selectedDateRef.current,
286
- selectedDateString: selectedDateStringRef.current
287
- });
288
423
  onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
289
- setOpen(false);
424
+ setPanelOpen(false);
290
425
  }, 0);
291
426
  }
292
- onOk && onOk();
427
+ onOk && onOk(date);
293
428
  },
294
- onClick: ()=>{
295
- setOpen(true);
296
- onClick && onClick();
429
+ onClick: (e)=>{
430
+ setPanelOpen(true);
431
+ onClick && onClick(e);
297
432
  },
298
- onBlur: ()=>{
433
+ onBlur: (e)=>{
299
434
  okClick();
300
- setOpen(false);
301
- onBlur && onBlur();
302
- },
303
- renderExtraFooter: renderExtraFooter
435
+ setPanelOpen(false);
436
+ onBlur && onBlur(e);
437
+ }
304
438
  }))
305
439
  }),
306
440
  kind === "range" && /*#__PURE__*/ _jsx(_Fragment, {
307
441
  children: /*#__PURE__*/ _jsx(RangePicker, _object_spread_props(_object_spread({}, getConfig()), {
308
- className: `${className} ${useType === "table" ? "table-date-picker" : ""}`,
309
- popupClassName: `${styles.bhdDatePickerPopup} ${styles.rangePicker} ${popupClassName || ""}`,
310
- cellRender: cellRender,
311
- prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
312
- style: {
313
- transform: "rotate(90deg)"
314
- }
315
- }),
316
- nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
317
- style: {
318
- transform: "rotate(-90deg)"
319
- }
320
- }),
321
- superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
322
- style: {
323
- transform: "rotate(90deg)"
324
- }
325
- }),
326
- superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
327
- style: {
328
- transform: "rotate(-90deg)"
329
- }
330
- }),
442
+ value: selectedRangeDate,
443
+ mode: rangePanelMode,
444
+ open: panelOpen,
445
+ disabledDate: selfDisabledDate,
331
446
  onPanelChange: (value, mode)=>{
332
447
  setRangePanelMode(mode);
448
+ onPanelChange && onPanelChange(value, mode);
333
449
  },
334
- mode: rangePanelMode,
335
- open: open,
336
450
  onOpenChange: (value)=>{
337
451
  if (value) {
338
452
  setDefaultMode();
339
453
  }
454
+ if (showTime) {
455
+ setPanelOpen(value);
456
+ }
340
457
  setRangeOpenChange(value);
458
+ onOpenChange && onOpenChange(value);
341
459
  },
342
- showNow: false,
343
- defaultPickerValue: selectedRangeDate,
344
- value: selectedRangeDate,
345
- onClick: ()=>{
346
- setOpen(true);
347
- onClick && onClick();
460
+ onClick: (e)=>{
461
+ setPanelOpen(true);
462
+ onClick && onClick(e);
348
463
  },
349
464
  onCalendarChange: (dates, dateStrings, info)=>{
350
465
  setSelectedRangeDate(dates);
351
466
  setSelectedRangeDateString(dateStrings);
467
+ onCalendarChange && onCalendarChange(dates, dateStrings, info);
352
468
  },
353
- onBlur: ()=>{
354
- if ((selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) && (selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) {
469
+ onBlur: (e)=>{
470
+ var _selectedRangeDate, _selectedRangeDate1, _selectedRangeDate2, _selectedRangeDate3;
471
+ if (((_selectedRangeDate = selectedRangeDate) === null || _selectedRangeDate === void 0 ? void 0 : _selectedRangeDate[0]) && ((_selectedRangeDate1 = selectedRangeDate) === null || _selectedRangeDate1 === void 0 ? void 0 : _selectedRangeDate1[1])) {
355
472
  okClick();
356
- setOpen(false);
357
- } else if (!(selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) || !(selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) {
358
- setOpen(rangeOpenChange);
473
+ setPanelOpen(false);
474
+ } else if (!((_selectedRangeDate2 = selectedRangeDate) === null || _selectedRangeDate2 === void 0 ? void 0 : _selectedRangeDate2[0]) || !((_selectedRangeDate3 = selectedRangeDate) === null || _selectedRangeDate3 === void 0 ? void 0 : _selectedRangeDate3[1])) {
475
+ setPanelOpen(rangeOpenChange);
359
476
  }
360
- onBlur && onBlur();
361
- },
362
- panelRender: (panelNode)=>{
363
- return panelNode;
364
- },
365
- renderExtraFooter: renderExtraFooter
366
- }))
367
- }),
368
- kind === "extra" && /*#__PURE__*/ _jsx(DatePicker, _object_spread_props(_object_spread({}, getConfig()), {
369
- className: `${className} ${useType === "table" ? "hide" : ""}`,
370
- popupClassName: `${styles.bhdDatePickerPopup} ${styles.extraPicker} ${extraReadonly ? styles.readonly : ""} ${popupClassName || ""}`,
371
- cellRender: cellRender,
372
- prevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
373
- style: {
374
- transform: "rotate(90deg)"
375
- }
376
- }),
377
- nextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
378
- style: {
379
- transform: "rotate(-90deg)"
477
+ onBlur && onBlur(e);
380
478
  }
381
- }),
382
- superPrevIcon: /*#__PURE__*/ _jsx(CustomArrow, {
383
- style: {
384
- transform: "rotate(90deg)"
385
- }
386
- }),
387
- superNextIcon: /*#__PURE__*/ _jsx(CustomArrow, {
388
- style: {
389
- transform: "rotate(-90deg)"
390
- }
391
- }),
392
- disabledDate: disabledDate,
393
- allowClear: !extraReadonly,
394
- onPanelChange: (value, mode)=>{
395
- setPanelMode(mode);
396
- },
397
- mode: panelMode,
398
- onOpenChange: (value)=>{
399
- if (value) {
400
- setDefaultMode();
401
- }
402
- },
403
- open: open,
404
- showNow: false,
405
- defaultPickerValue: selectedDate,
406
- value: selectedDate,
407
- onChange: (date, dateString)=>{
408
- setSelectedDate(date);
409
- setSelectedDateString(dateString);
410
- },
411
- onClick: ()=>{
412
- setOpen(true);
413
- onClick && onClick();
414
- },
415
- onBlur: ()=>{
416
- if (!extraReadonly) {
417
- okClick();
418
- }
419
- setOpen(false);
420
- onBlur && onBlur();
421
- },
422
- renderExtraFooter: extraReadonly ? null : renderExtraFooter
423
- }))
479
+ }))
480
+ })
424
481
  ]
425
482
  });
426
483
  };