bhd-components 0.8.1 → 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.
Files changed (42) hide show
  1. package/README.md +1 -1
  2. package/dist/{3f8529e7.esm.es5.development.js → 100c4e1e.esm.es5.development.js} +2985 -2009
  3. package/dist/{f460f54e.esm.es5.production.js → a4d5ce04.esm.es5.production.js} +1 -1
  4. package/dist/index.esm.es5.development.css +2789 -1232
  5. package/dist/index.esm.es5.development.js +7225 -172
  6. package/dist/index.esm.es5.production.css +1 -1
  7. package/dist/index.esm.es5.production.js +1 -1
  8. package/dist/vendor.esm.es5.development.esm.es5.development.css +84 -83
  9. package/dist/vendor.esm.es5.production.esm.es5.production.css +10 -8
  10. package/es2017/bhdDatePicker/index.d.ts +16 -0
  11. package/es2017/bhdDatePicker/index.js +427 -0
  12. package/es2017/bhdDatePicker/index.module.less +886 -0
  13. package/es2017/customerService/historyFun.d.ts +1 -1
  14. package/es2017/customerService/historyFun.js +2 -1
  15. package/es2017/customerService/html2canvas.test.js +1234 -1233
  16. package/es2017/customerService/index.d.ts +1 -1
  17. package/es2017/customerService/index.js +134 -32
  18. package/es2017/customerService/index.module.less +7 -5
  19. package/es2017/customerService/index2.module.less +7 -5
  20. package/es2017/customerService/screenShotPlugin.esm.js +6515 -0
  21. package/es2017/customerService/screenshotTool.d.ts +1 -0
  22. package/es2017/customerService/screenshotTool.js +23 -12
  23. package/es2017/index.d.ts +1 -0
  24. package/es2017/index.js +1 -0
  25. package/es2017/theme/variable.less +27 -0
  26. package/esm/bhdDatePicker/index.d.ts +16 -0
  27. package/esm/bhdDatePicker/index.js +434 -0
  28. package/esm/bhdDatePicker/index.module.less +886 -0
  29. package/esm/customerService/historyFun.d.ts +1 -1
  30. package/esm/customerService/historyFun.js +2 -1
  31. package/esm/customerService/html2canvas.test.js +34 -34
  32. package/esm/customerService/index.d.ts +1 -1
  33. package/esm/customerService/index.js +139 -36
  34. package/esm/customerService/index.module.less +7 -5
  35. package/esm/customerService/index2.module.less +7 -5
  36. package/esm/customerService/screenShotPlugin.esm.js +6516 -0
  37. package/esm/customerService/screenshotTool.d.ts +1 -0
  38. package/esm/customerService/screenshotTool.js +21 -10
  39. package/esm/index.d.ts +1 -0
  40. package/esm/index.js +1 -0
  41. package/esm/theme/variable.less +27 -0
  42. package/package.json +20 -2
@@ -0,0 +1,427 @@
1
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
4
+ import * as React from "react";
5
+ import { useState, useEffect, useRef } from "react";
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;
11
+ let months = [
12
+ "一",
13
+ "二",
14
+ "三",
15
+ "四",
16
+ "五",
17
+ "六",
18
+ "七",
19
+ "八",
20
+ "九",
21
+ "十",
22
+ "十一",
23
+ "十二"
24
+ ];
25
+ 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;
27
+ const bhdDatePickerRef = useRef(null);
28
+ const [open, setOpen] = useState(false);
29
+ const [panelMode, setPanelMode] = useState("date");
30
+ const [rangePanelMode, setRangePanelMode] = useState([
31
+ "date",
32
+ "date"
33
+ ]);
34
+ const [selectedDate, setSelectedDate] = useState(value);
35
+ const [selectedDateString, setSelectedDateString] = useState(null);
36
+ const selectedDateRef = useRef(value);
37
+ const selectedDateStringRef = useRef(null);
38
+ const [selectedRangeDate, setSelectedRangeDate] = useState(value);
39
+ const [selectedRangeDateString, setSelectedRangeDateString] = useState([]);
40
+ const [rangeOpenChange, setRangeOpenChange] = useState(false); // 用于范围选择失去焦点后,判断是否关闭
41
+ const timer = useRef(null);
42
+ useEffect(()=>{
43
+ 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);
59
+ }
60
+ return ()=>{
61
+ clearTimeout(timer.current);
62
+ };
63
+ }, [
64
+ open,
65
+ panelMode
66
+ ]);
67
+ 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;
75
+ delete config.open;
76
+ delete config.onOpenChange;
77
+ delete config.renderExtraFooter;
78
+ delete config.useType;
79
+ delete config.showNow;
80
+ delete config.onClick;
81
+ delete config.onBlur;
82
+ delete config.onOk;
83
+ delete config.onChange;
84
+ delete config.presets;
85
+ delete config.mode;
86
+ if (kind === "single" || kind === "extra") {
87
+ delete config.value;
88
+ }
89
+ if (kind === "extra" && picker !== "date") {
90
+ delete config.extraItems;
91
+ }
92
+ if (kind === "extra") {
93
+ delete config.disabledDate;
94
+ }
95
+ return config;
96
+ };
97
+ // 设置默认mode
98
+ const setDefaultMode = ()=>{
99
+ if (kind === "range") {
100
+ setRangePanelMode([
101
+ picker || "date",
102
+ picker || "date"
103
+ ]);
104
+ } else {
105
+ setPanelMode(picker || "date");
106
+ }
107
+ };
108
+ //单元格渲染
109
+ const cellRender = (current, info)=>{
110
+ if (info.type === "date") {
111
+ let extraItem = null;
112
+ if (kind === "extra") {
113
+ extraItem = extraItems === null || extraItems === void 0 ? void 0 : extraItems.find((item)=>item.date.format("YYYYMMDD") === current.format("YYYYMMDD"));
114
+ }
115
+ return /*#__PURE__*/ _jsx(_Fragment, {
116
+ children: /*#__PURE__*/ _jsxs("div", {
117
+ className: `${"bhd-picker-cell-inner"}`,
118
+ children: [
119
+ current.format("DD"),
120
+ kind === "extra" && extraItem && /*#__PURE__*/ _jsx("div", {
121
+ className: `extraText ${extraItem.status}`,
122
+ children: extraItem.text
123
+ })
124
+ ]
125
+ })
126
+ });
127
+ }
128
+ if (info.type === "month") {
129
+ return /*#__PURE__*/ _jsx("div", {
130
+ className: `${"bhd-picker-cell-inner"}`,
131
+ children: months[Number(current.format("M")) - 1] + "月"
132
+ });
133
+ }
134
+ return info.originNode;
135
+ };
136
+ //日期禁用
137
+ const disabledDate = (current)=>{
138
+ // if (extraReadonly) {
139
+ // return true;
140
+ // }
141
+ // 不能选择的是没有日程安排的
142
+ let extraItem = null;
143
+ if (kind === "extra") {
144
+ extraItem = extraItems === null || extraItems === void 0 ? void 0 : extraItems.find((item)=>item.date.format("YYYYMMDD") === current.format("YYYYMMDD"));
145
+ if (extraReadonly && extraItem) {
146
+ return false;
147
+ }
148
+ }
149
+ return !extraItem || current && extraItem.status === "noselectable";
150
+ };
151
+ // 渲染底部扩展内容
152
+ const renderExtraFooter = (mode)=>{
153
+ return !showTime ? /*#__PURE__*/ _jsxs("ul", {
154
+ className: "bhd-picker-ranges",
155
+ 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
+ })
164
+ }),
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: "确定"
172
+ })
173
+ })
174
+ ]
175
+ }) : /*#__PURE__*/ _jsx("ul", {
176
+ className: "bhd-picker-ranges",
177
+ children: renderPresets()
178
+ });
179
+ };
180
+ // 渲染预设
181
+ const renderPresets = ()=>{
182
+ return /*#__PURE__*/ _jsx("li", {
183
+ className: "bhd-picker-presets",
184
+ children: presets.map((item, index)=>{
185
+ return /*#__PURE__*/ _jsx("a", {
186
+ className: "bhd-picker-preset-btn",
187
+ onClick: ()=>{
188
+ presetClick(item.value);
189
+ },
190
+ children: item.label
191
+ }, index);
192
+ })
193
+ });
194
+ };
195
+ // 日期选择确认
196
+ const okClick = ()=>{
197
+ if (kind === "range") {
198
+ if (selectedRangeDate[0] && selectedRangeDate[1] && selectedRangeDateString[0] && selectedRangeDateString[1]) {
199
+ onChange && onChange(selectedRangeDate, selectedRangeDateString);
200
+ setOpen(false);
201
+ } else {
202
+ setOpen(true);
203
+ }
204
+ } else {
205
+ if (selectedDate && selectedDateString) {
206
+ onChange && onChange(selectedDate, selectedDateString);
207
+ setOpen(false);
208
+ }
209
+ }
210
+ };
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);
218
+ };
219
+ //预设点击
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);
226
+ };
227
+ return /*#__PURE__*/ _jsxs("span", {
228
+ className: `${styles.bhdDatePicker}`,
229
+ ref: bhdDatePickerRef,
230
+ children: [
231
+ kind === "single" && /*#__PURE__*/ _jsx(_Fragment, {
232
+ 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
+ }),
257
+ onPanelChange: (value, mode)=>{
258
+ setPanelMode(mode);
259
+ },
260
+ mode: panelMode,
261
+ open: open,
262
+ onOpenChange: (value)=>{
263
+ // 打开设置默认mode
264
+ if (value) {
265
+ setDefaultMode();
266
+ }
267
+ },
268
+ showNow: showTime ? showNow : false,
269
+ defaultPickerValue: selectedDate,
270
+ value: selectedDate,
271
+ onChange: (date, dateString)=>{
272
+ setSelectedDate((prevState)=>{
273
+ selectedDateRef.current = date;
274
+ return selectedDateRef.current;
275
+ });
276
+ setSelectedDateString((prevState)=>{
277
+ selectedDateStringRef.current = dateString;
278
+ return selectedDateStringRef.current;
279
+ });
280
+ },
281
+ onOk: ()=>{
282
+ if (showTime) {
283
+ setTimeout(()=>{
284
+ console.log({
285
+ selectedDate: selectedDateRef.current,
286
+ selectedDateString: selectedDateStringRef.current
287
+ });
288
+ onChange && onChange(selectedDateRef.current, selectedDateStringRef.current);
289
+ setOpen(false);
290
+ }, 0);
291
+ }
292
+ onOk && onOk();
293
+ },
294
+ onClick: ()=>{
295
+ setOpen(true);
296
+ onClick && onClick();
297
+ },
298
+ onBlur: ()=>{
299
+ okClick();
300
+ setOpen(false);
301
+ onBlur && onBlur();
302
+ },
303
+ renderExtraFooter: renderExtraFooter
304
+ }))
305
+ }),
306
+ kind === "range" && /*#__PURE__*/ _jsx(_Fragment, {
307
+ 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
+ }),
331
+ onPanelChange: (value, mode)=>{
332
+ setRangePanelMode(mode);
333
+ },
334
+ mode: rangePanelMode,
335
+ open: open,
336
+ onOpenChange: (value)=>{
337
+ if (value) {
338
+ setDefaultMode();
339
+ }
340
+ setRangeOpenChange(value);
341
+ },
342
+ showNow: false,
343
+ defaultPickerValue: selectedRangeDate,
344
+ value: selectedRangeDate,
345
+ onClick: ()=>{
346
+ setOpen(true);
347
+ onClick && onClick();
348
+ },
349
+ onCalendarChange: (dates, dateStrings, info)=>{
350
+ setSelectedRangeDate(dates);
351
+ setSelectedRangeDateString(dateStrings);
352
+ },
353
+ onBlur: ()=>{
354
+ if ((selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[0]) && (selectedRangeDate === null || selectedRangeDate === void 0 ? void 0 : selectedRangeDate[1])) {
355
+ 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);
359
+ }
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)"
380
+ }
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
+ }))
424
+ ]
425
+ });
426
+ };
427
+ export default BhdDatePicker;