@lobehub/ui 5.63.4 → 5.64.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.
- package/es/base-ui/DatePicker/DatePicker.d.mts +7 -2
- package/es/base-ui/DatePicker/DatePicker.mjs +13 -83
- package/es/base-ui/DatePicker/DatePicker.mjs.map +1 -1
- package/es/base-ui/DatePicker/DateRangePicker.d.mts +3 -2
- package/es/base-ui/DatePicker/DateRangePicker.mjs +3 -123
- package/es/base-ui/DatePicker/DateRangePicker.mjs.map +1 -1
- package/es/base-ui/DatePicker/PurePanel.mjs +80 -0
- package/es/base-ui/DatePicker/PurePanel.mjs.map +1 -0
- package/es/base-ui/DatePicker/RangePicker.mjs +120 -0
- package/es/base-ui/DatePicker/RangePicker.mjs.map +1 -0
- package/es/base-ui/DatePicker/SinglePicker.mjs +143 -0
- package/es/base-ui/DatePicker/SinglePicker.mjs.map +1 -0
- package/es/base-ui/DatePicker/generateConfig.mjs +12 -0
- package/es/base-ui/DatePicker/generateConfig.mjs.map +1 -0
- package/es/base-ui/DatePicker/generatePicker.d.mts +12 -0
- package/es/base-ui/DatePicker/generatePicker.mjs +22 -0
- package/es/base-ui/DatePicker/generatePicker.mjs.map +1 -0
- package/es/base-ui/DatePicker/index.d.mts +4 -3
- package/es/base-ui/DatePicker/locale.d.mts +16 -0
- package/es/base-ui/DatePicker/locale.mjs +136 -0
- package/es/base-ui/DatePicker/locale.mjs.map +1 -0
- package/es/base-ui/DatePicker/semantic.mjs +34 -0
- package/es/base-ui/DatePicker/semantic.mjs.map +1 -0
- package/es/base-ui/DatePicker/style.mjs +990 -139
- package/es/base-ui/DatePicker/style.mjs.map +1 -1
- package/es/base-ui/DatePicker/type.d.mts +281 -25
- package/es/base-ui/DatePicker/usePanelKeyboard.mjs +230 -0
- package/es/base-ui/DatePicker/usePanelKeyboard.mjs.map +1 -0
- package/es/base-ui/DatePicker/usePickerShared.mjs +136 -0
- package/es/base-ui/DatePicker/usePickerShared.mjs.map +1 -0
- package/es/base-ui/DatePicker/usePresetActive.mjs +48 -0
- package/es/base-ui/DatePicker/usePresetActive.mjs.map +1 -0
- package/es/base-ui/Text/style.d.mts +1 -1
- package/es/base-ui/index.d.mts +4 -3
- package/es/base-ui/index.mjs +3 -1
- package/es/i18n/resources/en/datePicker.d.mts +47 -0
- package/es/i18n/resources/en/datePicker.mjs +48 -1
- package/es/i18n/resources/en/datePicker.mjs.map +1 -1
- package/es/i18n/resources/zhCn/datePicker.d.mts +47 -0
- package/es/i18n/resources/zhCn/datePicker.mjs +48 -1
- package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -1
- package/es/i18n/resources/zhCn/index.mjs +1 -1
- package/es/utils/styleEngine.mjs +1 -0
- package/package.json +2 -1
- package/es/base-ui/DatePicker/CalendarPanel.mjs +0 -188
- package/es/base-ui/DatePicker/CalendarPanel.mjs.map +0 -1
- package/es/base-ui/DatePicker/PickerShell.mjs +0 -43
- package/es/base-ui/DatePicker/PickerShell.mjs.map +0 -1
- package/es/base-ui/DatePicker/calendar.d.mts +0 -5
- package/es/base-ui/DatePicker/calendar.mjs +0 -46
- package/es/base-ui/DatePicker/calendar.mjs.map +0 -1
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DatePickerType } from "./type.mjs";
|
|
2
2
|
//#region src/base-ui/DatePicker/DatePicker.d.ts
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* DatePicker over Dayjs, with antd's statics: `DatePicker.RangePicker`, `WeekPicker`,
|
|
5
|
+
* `MonthPicker`, `YearPicker`, `QuarterPicker`, `TimePicker`, the debug-only pure panels
|
|
6
|
+
* and `generatePicker`.
|
|
7
|
+
*/
|
|
8
|
+
declare const DatePicker: DatePickerType;
|
|
4
9
|
//#endregion
|
|
5
10
|
export { DatePicker as default };
|
|
6
11
|
//# sourceMappingURL=DatePicker.d.mts.map
|
|
@@ -1,88 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { DEFAULT_FORMAT, clampToBounds } from "./calendar.mjs";
|
|
6
|
-
import { styles } from "./style.mjs";
|
|
7
|
-
import CalendarPanel from "./CalendarPanel.mjs";
|
|
8
|
-
import PickerShell from "./PickerShell.mjs";
|
|
9
|
-
import { memo, useState } from "react";
|
|
10
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
import useMergeState from "use-merge-value";
|
|
12
|
-
import { CalendarIcon } from "lucide-react";
|
|
13
|
-
import dayjs from "dayjs";
|
|
2
|
+
import generateConfig from "./generateConfig.mjs";
|
|
3
|
+
import generatePicker from "./generatePicker.mjs";
|
|
4
|
+
import genPurePanel from "./PurePanel.mjs";
|
|
14
5
|
//#region src/base-ui/DatePicker/DatePicker.tsx
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
defaultValue,
|
|
25
|
-
onChange,
|
|
26
|
-
value
|
|
27
|
-
});
|
|
28
|
-
const [open, setOpen] = useState(false);
|
|
29
|
-
const [month, setMonth] = useState(() => current ?? /* @__PURE__ */ new Date());
|
|
30
|
-
const text = current ? formatDate(current, format, DEFAULT_FORMAT[mode]) : null;
|
|
31
|
-
return /* @__PURE__ */ jsxs(PickerShell, {
|
|
32
|
-
className,
|
|
33
|
-
disabled,
|
|
34
|
-
open,
|
|
35
|
-
shadow,
|
|
36
|
-
showClear: allowClear && !!current,
|
|
37
|
-
size,
|
|
38
|
-
style,
|
|
39
|
-
variant,
|
|
40
|
-
icon: /* @__PURE__ */ jsx("span", {
|
|
41
|
-
className: styles.icon,
|
|
42
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
43
|
-
icon: CalendarIcon,
|
|
44
|
-
size: 14
|
|
45
|
-
})
|
|
46
|
-
}),
|
|
47
|
-
trigger: /* @__PURE__ */ jsx("button", {
|
|
48
|
-
className: styles.trigger,
|
|
49
|
-
disabled,
|
|
50
|
-
type: "button",
|
|
51
|
-
children: text ?? /* @__PURE__ */ jsx("span", {
|
|
52
|
-
className: styles.placeholder,
|
|
53
|
-
children: placeholder ?? t(PLACEHOLDER_KEY[mode])
|
|
54
|
-
})
|
|
55
|
-
}),
|
|
56
|
-
onClear: () => setCurrent(null),
|
|
57
|
-
onOpenChange: (next) => {
|
|
58
|
-
if (next) setMonth(current ?? clampToBounds(/* @__PURE__ */ new Date(), {
|
|
59
|
-
max,
|
|
60
|
-
min
|
|
61
|
-
}));
|
|
62
|
-
setOpen(next);
|
|
63
|
-
},
|
|
64
|
-
children: [/* @__PURE__ */ jsx(CalendarPanel, {
|
|
65
|
-
bounds: {
|
|
66
|
-
disabledDate,
|
|
67
|
-
max,
|
|
68
|
-
min
|
|
69
|
-
},
|
|
70
|
-
mode,
|
|
71
|
-
month,
|
|
72
|
-
selected: current,
|
|
73
|
-
onMonthChange: setMonth,
|
|
74
|
-
onSelect: (date) => {
|
|
75
|
-
setCurrent(date);
|
|
76
|
-
setOpen(false);
|
|
77
|
-
}
|
|
78
|
-
}), footer && /* @__PURE__ */ jsx("div", {
|
|
79
|
-
className: styles.footer,
|
|
80
|
-
children: footer
|
|
81
|
-
})]
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
DatePicker.displayName = "DatePicker";
|
|
6
|
+
/**
|
|
7
|
+
* DatePicker over Dayjs, with antd's statics: `DatePicker.RangePicker`, `WeekPicker`,
|
|
8
|
+
* `MonthPicker`, `YearPicker`, `QuarterPicker`, `TimePicker`, the debug-only pure panels
|
|
9
|
+
* and `generatePicker`.
|
|
10
|
+
*/
|
|
11
|
+
const DatePicker = generatePicker(generateConfig);
|
|
12
|
+
DatePicker._InternalPanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker);
|
|
13
|
+
DatePicker._InternalRangePanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker.RangePicker);
|
|
14
|
+
DatePicker.generatePicker = generatePicker;
|
|
85
15
|
//#endregion
|
|
86
|
-
export { DatePicker as default
|
|
16
|
+
export { DatePicker as default };
|
|
87
17
|
|
|
88
18
|
//# sourceMappingURL=DatePicker.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.mjs","names":["
|
|
1
|
+
{"version":3,"file":"DatePicker.mjs","names":["dayjsGenerateConfig"],"sources":["../../../src/base-ui/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client';\n\nimport dayjsGenerateConfig from './generateConfig';\nimport generatePicker from './generatePicker';\nimport genPurePanel from './PurePanel';\nimport type { DatePickerType } from './type';\n\n/**\n * DatePicker over Dayjs, with antd's statics: `DatePicker.RangePicker`, `WeekPicker`,\n * `MonthPicker`, `YearPicker`, `QuarterPicker`, `TimePicker`, the debug-only pure panels\n * and `generatePicker`.\n */\nconst DatePicker = generatePicker(dayjsGenerateConfig) as DatePickerType;\n\nDatePicker._InternalPanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker);\nDatePicker._InternalRangePanelDoNotUseOrYouWillBeFired = genPurePanel(DatePicker.RangePicker);\nDatePicker.generatePicker = generatePicker;\n\nexport default DatePicker;\n"],"mappings":";;;;;;;;;;AAYA,MAAM,aAAa,eAAeA,cAAmB;AAErD,WAAW,yCAAyC,aAAa,UAAU;AAC3E,WAAW,8CAA8C,aAAa,WAAW,WAAW;AAC5F,WAAW,iBAAiB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RangePickerComponent } from "./type.mjs";
|
|
2
2
|
//#region src/base-ui/DatePicker/DateRangePicker.d.ts
|
|
3
|
-
|
|
3
|
+
/** `DatePicker.RangePicker`, kept as a standalone export. */
|
|
4
|
+
declare const DateRangePicker: RangePickerComponent<import("dayjs").Dayjs>;
|
|
4
5
|
//#endregion
|
|
5
6
|
export { DateRangePicker as default };
|
|
6
7
|
//# sourceMappingURL=DateRangePicker.d.mts.map
|
|
@@ -1,127 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
-
import { useTranslation } from "../../i18n/useTranslation.mjs";
|
|
4
|
-
import datePicker_default from "../../i18n/resources/en/datePicker.mjs";
|
|
5
|
-
import { DEFAULT_FORMAT, clampToBounds, orderRange } from "./calendar.mjs";
|
|
6
|
-
import { styles } from "./style.mjs";
|
|
7
|
-
import CalendarPanel from "./CalendarPanel.mjs";
|
|
8
|
-
import PickerShell from "./PickerShell.mjs";
|
|
9
|
-
import { formatDate } from "./DatePicker.mjs";
|
|
10
|
-
import { memo, useState } from "react";
|
|
11
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
-
import useMergeState from "use-merge-value";
|
|
13
|
-
import { ArrowRight, CalendarIcon } from "lucide-react";
|
|
14
|
-
import dayjs from "dayjs";
|
|
1
|
+
import DatePicker from "./DatePicker.mjs";
|
|
15
2
|
//#region src/base-ui/DatePicker/DateRangePicker.tsx
|
|
16
|
-
|
|
17
|
-
const DateRangePicker =
|
|
18
|
-
const { t } = useTranslation(datePicker_default);
|
|
19
|
-
const [current, setCurrent] = useMergeState(defaultValue, {
|
|
20
|
-
defaultValue,
|
|
21
|
-
onChange,
|
|
22
|
-
value
|
|
23
|
-
});
|
|
24
|
-
const [open, setOpen] = useState(false);
|
|
25
|
-
const [draft, setDraft] = useState(EMPTY);
|
|
26
|
-
const [hovered, setHovered] = useState(null);
|
|
27
|
-
const [month, setMonth] = useState(() => current[0] ?? /* @__PURE__ */ new Date());
|
|
28
|
-
const shown = open && draft[0] ? draft : current;
|
|
29
|
-
const nextMonth = dayjs(month).add(1, "month").toDate();
|
|
30
|
-
const bounds = {
|
|
31
|
-
disabledDate,
|
|
32
|
-
max,
|
|
33
|
-
min
|
|
34
|
-
};
|
|
35
|
-
const half = (date, fallback, active) => /* @__PURE__ */ jsx("span", {
|
|
36
|
-
className: styles.rangeHalf,
|
|
37
|
-
"data-active": active ? "" : void 0,
|
|
38
|
-
children: date ? formatDate(date, format, DEFAULT_FORMAT.date) : /* @__PURE__ */ jsx("span", {
|
|
39
|
-
className: styles.placeholder,
|
|
40
|
-
children: fallback
|
|
41
|
-
})
|
|
42
|
-
});
|
|
43
|
-
const select = (date) => {
|
|
44
|
-
if (!draft[0] || draft[1]) {
|
|
45
|
-
setDraft([date, null]);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const ordered = orderRange(draft[0], date);
|
|
49
|
-
setDraft(EMPTY);
|
|
50
|
-
setCurrent(ordered);
|
|
51
|
-
setOpen(false);
|
|
52
|
-
};
|
|
53
|
-
return /* @__PURE__ */ jsx(PickerShell, {
|
|
54
|
-
className,
|
|
55
|
-
disabled,
|
|
56
|
-
open,
|
|
57
|
-
shadow,
|
|
58
|
-
showClear: allowClear && !!(current[0] || current[1]),
|
|
59
|
-
size,
|
|
60
|
-
style,
|
|
61
|
-
variant,
|
|
62
|
-
icon: /* @__PURE__ */ jsx("span", {
|
|
63
|
-
className: styles.icon,
|
|
64
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
65
|
-
icon: CalendarIcon,
|
|
66
|
-
size: 14
|
|
67
|
-
})
|
|
68
|
-
}),
|
|
69
|
-
trigger: /* @__PURE__ */ jsx("button", {
|
|
70
|
-
className: styles.trigger,
|
|
71
|
-
disabled,
|
|
72
|
-
type: "button",
|
|
73
|
-
children: /* @__PURE__ */ jsxs("span", {
|
|
74
|
-
className: styles.rangeTrigger,
|
|
75
|
-
children: [
|
|
76
|
-
half(shown[0], placeholder?.[0] ?? t("datePicker.startPlaceholder"), open && !draft[0]),
|
|
77
|
-
/* @__PURE__ */ jsx("span", {
|
|
78
|
-
className: styles.icon,
|
|
79
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
80
|
-
icon: ArrowRight,
|
|
81
|
-
size: 14
|
|
82
|
-
})
|
|
83
|
-
}),
|
|
84
|
-
half(shown[1], placeholder?.[1] ?? t("datePicker.endPlaceholder"), open && !!draft[0])
|
|
85
|
-
]
|
|
86
|
-
})
|
|
87
|
-
}),
|
|
88
|
-
onClear: () => setCurrent(EMPTY),
|
|
89
|
-
onOpenChange: (next) => {
|
|
90
|
-
if (next) {
|
|
91
|
-
setMonth(current[0] ?? clampToBounds(/* @__PURE__ */ new Date(), {
|
|
92
|
-
max,
|
|
93
|
-
min
|
|
94
|
-
}));
|
|
95
|
-
setDraft(EMPTY);
|
|
96
|
-
}
|
|
97
|
-
setOpen(next);
|
|
98
|
-
},
|
|
99
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
100
|
-
className: styles.range,
|
|
101
|
-
children: [/* @__PURE__ */ jsx(CalendarPanel, {
|
|
102
|
-
bounds,
|
|
103
|
-
hovered,
|
|
104
|
-
mode: "date",
|
|
105
|
-
month,
|
|
106
|
-
range: draft[0] ? draft : current,
|
|
107
|
-
showNav: false,
|
|
108
|
-
onHover: setHovered,
|
|
109
|
-
onMonthChange: setMonth,
|
|
110
|
-
onSelect: select
|
|
111
|
-
}), /* @__PURE__ */ jsx(CalendarPanel, {
|
|
112
|
-
bounds,
|
|
113
|
-
hovered,
|
|
114
|
-
mode: "date",
|
|
115
|
-
month: nextMonth,
|
|
116
|
-
range: draft[0] ? draft : current,
|
|
117
|
-
onHover: setHovered,
|
|
118
|
-
onMonthChange: (next) => setMonth(dayjs(next).subtract(1, "month").toDate()),
|
|
119
|
-
onSelect: select
|
|
120
|
-
})]
|
|
121
|
-
})
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
DateRangePicker.displayName = "DateRangePicker";
|
|
3
|
+
/** `DatePicker.RangePicker`, kept as a standalone export. */
|
|
4
|
+
const DateRangePicker = DatePicker.RangePicker;
|
|
125
5
|
//#endregion
|
|
126
6
|
export { DateRangePicker as default };
|
|
127
7
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.mjs","names":[
|
|
1
|
+
{"version":3,"file":"DateRangePicker.mjs","names":[],"sources":["../../../src/base-ui/DatePicker/DateRangePicker.tsx"],"sourcesContent":["import DatePicker from './DatePicker';\n\n/** `DatePicker.RangePicker`, kept as a standalone export. */\nconst DateRangePicker = DatePicker.RangePicker;\n\nexport default DateRangePicker;\n"],"mappings":";;;AAGA,MAAM,kBAAkB,WAAW"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { PREFIX_CLS } from "./style.mjs";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/base-ui/DatePicker/PurePanel.tsx
|
|
6
|
+
/**
|
|
7
|
+
* antd `genPurePanel`: the picker with its popup always open and rendered in flow below
|
|
8
|
+
* the input — for docs and visual tests, not for apps. The holder reserves the popup's
|
|
9
|
+
* height, the popup does not flip or shift, and it has no motion or stacking z-index.
|
|
10
|
+
*/
|
|
11
|
+
const genPurePanel = (Component) => {
|
|
12
|
+
const PurePanel = (props) => {
|
|
13
|
+
const { open: openProp, style, styles } = props;
|
|
14
|
+
const holderRef = useRef(null);
|
|
15
|
+
const [popupSize, setPopupSize] = useState({
|
|
16
|
+
height: 0,
|
|
17
|
+
width: 0
|
|
18
|
+
});
|
|
19
|
+
const [mounted, setMounted] = useState(false);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
setMounted(true);
|
|
22
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
23
|
+
const resizeObserver = new ResizeObserver(([entry]) => {
|
|
24
|
+
const element = entry.target;
|
|
25
|
+
setPopupSize({
|
|
26
|
+
height: element.offsetHeight + 8,
|
|
27
|
+
width: element.offsetWidth
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
const interval = setInterval(() => {
|
|
31
|
+
const popup = holderRef.current?.querySelector(`.${PREFIX_CLS}-dropdown`);
|
|
32
|
+
if (!popup) return;
|
|
33
|
+
clearInterval(interval);
|
|
34
|
+
resizeObserver.observe(popup);
|
|
35
|
+
}, 10);
|
|
36
|
+
return () => {
|
|
37
|
+
clearInterval(interval);
|
|
38
|
+
resizeObserver.disconnect();
|
|
39
|
+
};
|
|
40
|
+
}, []);
|
|
41
|
+
const withInlinePopup = (semantic) => ({
|
|
42
|
+
...semantic,
|
|
43
|
+
popup: {
|
|
44
|
+
...semantic?.popup,
|
|
45
|
+
root: {
|
|
46
|
+
zIndex: "auto",
|
|
47
|
+
...semantic?.popup?.root
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return /* @__PURE__ */ jsx("div", {
|
|
52
|
+
ref: holderRef,
|
|
53
|
+
style: {
|
|
54
|
+
minWidth: popupSize.width,
|
|
55
|
+
paddingBottom: popupSize.height,
|
|
56
|
+
position: "relative"
|
|
57
|
+
},
|
|
58
|
+
children: /* @__PURE__ */ jsx(Component, {
|
|
59
|
+
...props,
|
|
60
|
+
getPopupContainer: () => holderRef.current,
|
|
61
|
+
open: openProp ?? mounted,
|
|
62
|
+
popupAlign: { overflow: {
|
|
63
|
+
adjustX: false,
|
|
64
|
+
adjustY: false
|
|
65
|
+
} },
|
|
66
|
+
style: {
|
|
67
|
+
...style,
|
|
68
|
+
margin: 0
|
|
69
|
+
},
|
|
70
|
+
transitionName: "",
|
|
71
|
+
styles: typeof styles === "function" ? (info) => withInlinePopup(styles(info)) : withInlinePopup(styles)
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
return PurePanel;
|
|
76
|
+
};
|
|
77
|
+
//#endregion
|
|
78
|
+
export { genPurePanel as default };
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=PurePanel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PurePanel.mjs","names":[],"sources":["../../../src/base-ui/DatePicker/PurePanel.tsx"],"sourcesContent":["'use client';\n\nimport { type ComponentType, type CSSProperties, useEffect, useRef, useState } from 'react';\n\nimport { PREFIX_CLS } from './style';\nimport type { PickerSemanticStyles, PickerStyles } from './type';\n\ninterface PurePanelProps {\n open?: boolean;\n style?: CSSProperties;\n styles?: PickerStyles;\n}\n\n/**\n * antd `genPurePanel`: the picker with its popup always open and rendered in flow below\n * the input — for docs and visual tests, not for apps. The holder reserves the popup's\n * height, the popup does not flip or shift, and it has no motion or stacking z-index.\n */\nconst genPurePanel = <P extends object>(Component: ComponentType<P>) => {\n const PurePanel = (props: P & PurePanelProps) => {\n const { open: openProp, style, styles } = props;\n const holderRef = useRef<HTMLDivElement>(null);\n const [popupSize, setPopupSize] = useState({ height: 0, width: 0 });\n const [mounted, setMounted] = useState(false);\n\n // Opened after mount, as in antd: the popup needs the holder to render into.\n useEffect(() => {\n setMounted(true);\n if (typeof ResizeObserver === 'undefined') return;\n const resizeObserver = new ResizeObserver(([entry]) => {\n const element = entry.target as HTMLElement;\n setPopupSize({ height: element.offsetHeight + 8, width: element.offsetWidth });\n });\n const interval = setInterval(() => {\n const popup = holderRef.current?.querySelector(`.${PREFIX_CLS}-dropdown`);\n if (!popup) return;\n clearInterval(interval);\n resizeObserver.observe(popup);\n }, 10);\n return () => {\n clearInterval(interval);\n resizeObserver.disconnect();\n };\n }, []);\n\n const withInlinePopup = (semantic?: PickerSemanticStyles): PickerSemanticStyles => ({\n ...semantic,\n popup: { ...semantic?.popup, root: { zIndex: 'auto', ...semantic?.popup?.root } },\n });\n\n return (\n <div\n ref={holderRef}\n style={{ minWidth: popupSize.width, paddingBottom: popupSize.height, position: 'relative' }}\n >\n <Component\n {...props}\n getPopupContainer={() => holderRef.current!}\n open={openProp ?? mounted}\n popupAlign={{ overflow: { adjustX: false, adjustY: false } }}\n style={{ ...style, margin: 0 }}\n transitionName=\"\"\n styles={\n typeof styles === 'function'\n ? (info: { props: any }) => withInlinePopup(styles(info))\n : withInlinePopup(styles)\n }\n />\n </div>\n );\n };\n return PurePanel;\n};\n\nexport default genPurePanel;\n"],"mappings":";;;;;;;;;;AAkBA,MAAM,gBAAkC,cAAgC;CACtE,MAAM,aAAa,UAA8B;EAC/C,MAAM,EAAE,MAAM,UAAU,OAAO,WAAW;EAC1C,MAAM,YAAY,OAAuB,IAAI;EAC7C,MAAM,CAAC,WAAW,gBAAgB,SAAS;GAAE,QAAQ;GAAG,OAAO;EAAE,CAAC;EAClE,MAAM,CAAC,SAAS,cAAc,SAAS,KAAK;EAG5C,gBAAgB;GACd,WAAW,IAAI;GACf,IAAI,OAAO,mBAAmB,aAAa;GAC3C,MAAM,iBAAiB,IAAI,gBAAgB,CAAC,WAAW;IACrD,MAAM,UAAU,MAAM;IACtB,aAAa;KAAE,QAAQ,QAAQ,eAAe;KAAG,OAAO,QAAQ;IAAY,CAAC;GAC/E,CAAC;GACD,MAAM,WAAW,kBAAkB;IACjC,MAAM,QAAQ,UAAU,SAAS,cAAc,IAAI,WAAW,UAAU;IACxE,IAAI,CAAC,OAAO;IACZ,cAAc,QAAQ;IACtB,eAAe,QAAQ,KAAK;GAC9B,GAAG,EAAE;GACL,aAAa;IACX,cAAc,QAAQ;IACtB,eAAe,WAAW;GAC5B;EACF,GAAG,CAAC,CAAC;EAEL,MAAM,mBAAmB,cAA2D;GAClF,GAAG;GACH,OAAO;IAAE,GAAG,UAAU;IAAO,MAAM;KAAE,QAAQ;KAAQ,GAAG,UAAU,OAAO;IAAK;GAAE;EAClF;EAEA,OACE,oBAAC,OAAD;GACE,KAAK;GACL,OAAO;IAAE,UAAU,UAAU;IAAO,eAAe,UAAU;IAAQ,UAAU;GAAW;GAE1F,UAAA,oBAAC,WAAD;IACE,GAAI;IACJ,yBAAyB,UAAU;IACnC,MAAM,YAAY;IAClB,YAAY,EAAE,UAAU;KAAE,SAAS;KAAO,SAAS;IAAM,EAAE;IAC3D,OAAO;KAAE,GAAG;KAAO,QAAQ;IAAE;IAC7B,gBAAe;IACf,QACE,OAAO,WAAW,cACb,SAAyB,gBAAgB,OAAO,IAAI,CAAC,IACtD,gBAAgB,MAAM;GAE7B,CAAA;EACE,CAAA;CAET;CACA,OAAO;AACT"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
+
import { cx } from "../../utils/styleEngine.mjs";
|
|
4
|
+
import { usePickerLocale } from "./locale.mjs";
|
|
5
|
+
import { usePanelKeyboard } from "./usePanelKeyboard.mjs";
|
|
6
|
+
import { usePickerShared } from "./usePickerShared.mjs";
|
|
7
|
+
import { usePresetActive } from "./usePresetActive.mjs";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
import { ArrowRight } from "lucide-react";
|
|
10
|
+
import { RangePicker } from "@rc-component/picker";
|
|
11
|
+
//#region src/base-ui/DatePicker/RangePicker.tsx
|
|
12
|
+
/** antd `generateRangePicker`: `DatePicker.RangePicker` over `generateConfig`'s date type. */
|
|
13
|
+
const generateRangePicker = (generateConfig) => {
|
|
14
|
+
const RangePicker$1 = (props) => {
|
|
15
|
+
const { allowClear, allowEmpty, bordered, cellRender, changeOnBlur, className, clearIcon, classNames, components, dateRender, defaultOpen, defaultPickerValue, defaultValue, dropdownClassName, direction, disabled, disabledDate, footer, getPopupContainer, id, locale: localeOverride, max, maxDate, min, minDate, mode, monthCellRender, needConfirm, nextIcon, onBlur, onKeyDown, onCalendarChange, onChange, onFocus, onOk, onOpenChange, onPanelChange, onPickerValueChange, open, order, picker = "date", pickerValue, placeholder, popupClassName, popupStyle, prevIcon, renderExtraFooter, rootClassName, separator, shadow, size, status, styles, suffixIcon, superNextIcon, superPrevIcon, transitionName, value, variant, ...rest } = props;
|
|
16
|
+
const { locale, rangePlaceholder } = usePickerLocale(localeOverride);
|
|
17
|
+
const keyboard = usePanelKeyboard({
|
|
18
|
+
cellRender,
|
|
19
|
+
dateRender,
|
|
20
|
+
defaultOpen,
|
|
21
|
+
defaultPickerValue,
|
|
22
|
+
defaultValue,
|
|
23
|
+
direction,
|
|
24
|
+
generateConfig,
|
|
25
|
+
mode,
|
|
26
|
+
monthCellRender,
|
|
27
|
+
onChange,
|
|
28
|
+
onFocus,
|
|
29
|
+
onOpenChange,
|
|
30
|
+
onPanelChange,
|
|
31
|
+
onPickerValueChange,
|
|
32
|
+
open,
|
|
33
|
+
picker,
|
|
34
|
+
pickerValue,
|
|
35
|
+
range: true,
|
|
36
|
+
value
|
|
37
|
+
});
|
|
38
|
+
const shared = usePickerShared({
|
|
39
|
+
allowClear,
|
|
40
|
+
bordered,
|
|
41
|
+
changeOnBlur,
|
|
42
|
+
className,
|
|
43
|
+
clearIcon,
|
|
44
|
+
classNames,
|
|
45
|
+
components,
|
|
46
|
+
defaultOpen,
|
|
47
|
+
dropdownClassName,
|
|
48
|
+
generateConfig,
|
|
49
|
+
getPopupContainer,
|
|
50
|
+
max,
|
|
51
|
+
maxDate,
|
|
52
|
+
min,
|
|
53
|
+
minDate,
|
|
54
|
+
needConfirm,
|
|
55
|
+
nextIcon,
|
|
56
|
+
onKeyDown,
|
|
57
|
+
onOpenChange: keyboard.onOpenChange,
|
|
58
|
+
open,
|
|
59
|
+
picker,
|
|
60
|
+
popupClassName,
|
|
61
|
+
popupStyle,
|
|
62
|
+
prevIcon,
|
|
63
|
+
rootClassName: cx(keyboard.scopeClassName, rootClassName),
|
|
64
|
+
semanticProps: props,
|
|
65
|
+
shadow,
|
|
66
|
+
size,
|
|
67
|
+
status,
|
|
68
|
+
styles,
|
|
69
|
+
suffixIcon,
|
|
70
|
+
superNextIcon,
|
|
71
|
+
superPrevIcon,
|
|
72
|
+
transitionName,
|
|
73
|
+
variant
|
|
74
|
+
});
|
|
75
|
+
const presetActive = usePresetActive(rest.presets, value, defaultValue);
|
|
76
|
+
return /* @__PURE__ */ jsx(RangePicker, {
|
|
77
|
+
...rest,
|
|
78
|
+
...shared,
|
|
79
|
+
allowEmpty,
|
|
80
|
+
cellRender: keyboard.cellRender,
|
|
81
|
+
dateRender,
|
|
82
|
+
defaultPickerValue,
|
|
83
|
+
defaultValue,
|
|
84
|
+
direction,
|
|
85
|
+
disabled,
|
|
86
|
+
disabledDate,
|
|
87
|
+
id,
|
|
88
|
+
locale: locale.lang,
|
|
89
|
+
mode,
|
|
90
|
+
monthCellRender,
|
|
91
|
+
order,
|
|
92
|
+
picker,
|
|
93
|
+
pickerValue: keyboard.pickerValue,
|
|
94
|
+
placeholder: placeholder ?? rangePlaceholder(picker),
|
|
95
|
+
presets: presetActive.presets,
|
|
96
|
+
renderExtraFooter: renderExtraFooter ?? (footer ? () => footer : void 0),
|
|
97
|
+
separator: separator ?? /* @__PURE__ */ jsx(Icon, {
|
|
98
|
+
icon: ArrowRight,
|
|
99
|
+
size: 14
|
|
100
|
+
}),
|
|
101
|
+
value,
|
|
102
|
+
onBlur,
|
|
103
|
+
onCalendarChange,
|
|
104
|
+
onFocus: keyboard.onFocus,
|
|
105
|
+
onOk,
|
|
106
|
+
onPanelChange: keyboard.onPanelChange,
|
|
107
|
+
onPickerValueChange: keyboard.onPickerValueChange,
|
|
108
|
+
onChange: (...args) => {
|
|
109
|
+
presetActive.track(args[0]);
|
|
110
|
+
keyboard.onChange(...args);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
RangePicker$1.displayName = "RangePicker";
|
|
115
|
+
return RangePicker$1;
|
|
116
|
+
};
|
|
117
|
+
//#endregion
|
|
118
|
+
export { generateRangePicker as default };
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=RangePicker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangePicker.mjs","names":["RangePicker","RcRangePicker"],"sources":["../../../src/base-ui/DatePicker/RangePicker.tsx"],"sourcesContent":["'use client';\n\nimport { RangePicker as RcRangePicker } from '@rc-component/picker';\nimport type { GenerateConfig } from '@rc-component/picker/generate';\nimport { ArrowRight } from 'lucide-react';\n\nimport Icon from '@/Icon';\nimport { cx } from '@/utils/styleEngine';\n\nimport { usePickerLocale } from './locale';\nimport type { DateRangePickerProps, RangePickerComponent } from './type';\nimport { usePanelKeyboard } from './usePanelKeyboard';\nimport { usePickerShared } from './usePickerShared';\nimport { usePresetActive } from './usePresetActive';\n\n/** antd `generateRangePicker`: `DatePicker.RangePicker` over `generateConfig`'s date type. */\nconst generateRangePicker = <DateType extends object>(generateConfig: GenerateConfig<DateType>) => {\n const RangePicker = (props: DateRangePickerProps<DateType>) => {\n const {\n allowClear,\n allowEmpty,\n bordered,\n cellRender,\n changeOnBlur,\n className,\n clearIcon,\n classNames,\n components,\n dateRender,\n defaultOpen,\n defaultPickerValue,\n defaultValue,\n dropdownClassName,\n direction,\n disabled,\n disabledDate,\n footer,\n getPopupContainer,\n id,\n locale: localeOverride,\n max,\n maxDate,\n min,\n minDate,\n mode,\n monthCellRender,\n needConfirm,\n nextIcon,\n onBlur,\n onKeyDown,\n onCalendarChange,\n onChange,\n onFocus,\n onOk,\n onOpenChange,\n onPanelChange,\n onPickerValueChange,\n open,\n order,\n picker = 'date',\n pickerValue,\n placeholder,\n popupClassName,\n popupStyle,\n prevIcon,\n renderExtraFooter,\n rootClassName,\n separator,\n shadow,\n size,\n status,\n styles,\n suffixIcon,\n superNextIcon,\n superPrevIcon,\n transitionName,\n value,\n variant,\n ...rest\n } = props;\n const { locale, rangePlaceholder } = usePickerLocale(localeOverride);\n const keyboard = usePanelKeyboard({\n cellRender,\n dateRender,\n defaultOpen,\n defaultPickerValue,\n defaultValue,\n direction,\n generateConfig,\n mode,\n monthCellRender,\n onChange,\n onFocus,\n onOpenChange,\n onPanelChange,\n onPickerValueChange,\n open,\n picker,\n pickerValue,\n range: true,\n value,\n });\n const shared = usePickerShared({\n allowClear,\n bordered,\n changeOnBlur,\n className,\n clearIcon,\n classNames,\n components,\n defaultOpen,\n dropdownClassName,\n generateConfig,\n getPopupContainer,\n max,\n maxDate,\n min,\n minDate,\n needConfirm,\n nextIcon,\n onKeyDown,\n onOpenChange: keyboard.onOpenChange,\n open,\n picker,\n popupClassName,\n popupStyle,\n prevIcon,\n rootClassName: cx(keyboard.scopeClassName, rootClassName),\n semanticProps: props,\n shadow,\n size,\n status,\n styles,\n suffixIcon,\n superNextIcon,\n superPrevIcon,\n transitionName,\n variant,\n });\n\n const presetActive = usePresetActive((rest as any).presets, value, defaultValue);\n\n return (\n <RcRangePicker<DateType>\n {...rest}\n {...shared}\n allowEmpty={allowEmpty}\n cellRender={keyboard.cellRender}\n dateRender={dateRender}\n defaultPickerValue={defaultPickerValue as any}\n defaultValue={defaultValue as any}\n direction={direction}\n disabled={disabled}\n disabledDate={disabledDate}\n id={id}\n locale={locale.lang}\n mode={mode as any}\n monthCellRender={monthCellRender}\n order={order}\n picker={picker}\n pickerValue={keyboard.pickerValue}\n placeholder={placeholder ?? rangePlaceholder(picker)}\n presets={presetActive.presets as any}\n renderExtraFooter={renderExtraFooter ?? (footer ? () => footer : undefined)}\n separator={separator ?? <Icon icon={ArrowRight} size={14} />}\n value={value as any}\n onBlur={onBlur as any}\n onCalendarChange={onCalendarChange as any}\n onFocus={keyboard.onFocus}\n onOk={onOk as any}\n onPanelChange={keyboard.onPanelChange}\n onPickerValueChange={keyboard.onPickerValueChange}\n onChange={(...args: any[]) => {\n presetActive.track(args[0]);\n (keyboard.onChange as any)(...args);\n }}\n />\n );\n };\n RangePicker.displayName = 'RangePicker';\n return RangePicker as RangePickerComponent<DateType>;\n};\n\nexport default generateRangePicker;\n"],"mappings":";;;;;;;;;;;;AAgBA,MAAM,uBAAgD,mBAA6C;CACjG,MAAMA,iBAAe,UAA0C;EAC7D,MAAM,EACJ,YACA,YACA,UACA,YACA,cACA,WACA,WACA,YACA,YACA,YACA,aACA,oBACA,cACA,mBACA,WACA,UACA,cACA,QACA,mBACA,IACA,QAAQ,gBACR,KACA,SACA,KACA,SACA,MACA,iBACA,aACA,UACA,QACA,WACA,kBACA,UACA,SACA,MACA,cACA,eACA,qBACA,MACA,OACA,SAAS,QACT,aACA,aACA,gBACA,YACA,UACA,mBACA,eACA,WACA,QACA,MACA,QACA,QACA,YACA,eACA,eACA,gBACA,OACA,SACA,GAAG,SACD;EACJ,MAAM,EAAE,QAAQ,qBAAqB,gBAAgB,cAAc;EACnE,MAAM,WAAW,iBAAiB;GAChC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,OAAO;GACP;EACF,CAAC;EACD,MAAM,SAAS,gBAAgB;GAC7B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc,SAAS;GACvB;GACA;GACA;GACA;GACA;GACA,eAAe,GAAG,SAAS,gBAAgB,aAAa;GACxD,eAAe;GACf;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EAED,MAAM,eAAe,gBAAiB,KAAa,SAAS,OAAO,YAAY;EAE/E,OACE,oBAACC,aAAD;GACE,GAAI;GACJ,GAAI;GACQ;GACZ,YAAY,SAAS;GACT;GACQ;GACN;GACH;GACD;GACI;GACV;GACJ,QAAQ,OAAO;GACT;GACW;GACV;GACC;GACR,aAAa,SAAS;GACtB,aAAa,eAAe,iBAAiB,MAAM;GACnD,SAAS,aAAa;GACtB,mBAAmB,sBAAsB,eAAe,SAAS,KAAA;GACjE,WAAW,aAAa,oBAAC,MAAD;IAAM,MAAM;IAAY,MAAM;GAAK,CAAA;GACpD;GACC;GACU;GAClB,SAAS,SAAS;GACZ;GACN,eAAe,SAAS;GACxB,qBAAqB,SAAS;GAC9B,WAAW,GAAG,SAAgB;IAC5B,aAAa,MAAM,KAAK,EAAE;IAC1B,SAAU,SAAiB,GAAG,IAAI;GACpC;EACD,CAAA;CAEL;CACA,cAAY,cAAc;CAC1B,OAAOD;AACT"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
+
import { cx } from "../../utils/styleEngine.mjs";
|
|
4
|
+
import { usePickerLocale } from "./locale.mjs";
|
|
5
|
+
import { PREFIX_CLS } from "./style.mjs";
|
|
6
|
+
import { usePanelKeyboard } from "./usePanelKeyboard.mjs";
|
|
7
|
+
import { usePickerShared, withDefault } from "./usePickerShared.mjs";
|
|
8
|
+
import { usePresetActive } from "./usePresetActive.mjs";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
import { X } from "lucide-react";
|
|
11
|
+
import RcPicker from "@rc-component/picker";
|
|
12
|
+
//#region src/base-ui/DatePicker/SinglePicker.tsx
|
|
13
|
+
const defaultRemoveIcon = /* @__PURE__ */ jsx(Icon, {
|
|
14
|
+
icon: X,
|
|
15
|
+
size: 10,
|
|
16
|
+
style: { strokeWidth: 3 }
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* antd `generateSinglePicker`: DatePicker over `generateConfig`'s date type, plus the
|
|
20
|
+
* pickers whose `picker` is fixed (`DatePicker.WeekPicker`, …, `DatePicker.TimePicker`).
|
|
21
|
+
*/
|
|
22
|
+
const generateSinglePicker = (generateConfig) => {
|
|
23
|
+
const getPicker = (presetPicker, displayName = "DatePicker") => {
|
|
24
|
+
const Picker = (props) => {
|
|
25
|
+
const { allowClear, bordered, cellRender, changeOnBlur, className, clearIcon, classNames, components, dateRender, defaultOpen, defaultPickerValue, defaultValue, dropdownClassName, direction, footer, getPopupContainer, locale: localeOverride, max, maxDate, min, minDate, mode, monthCellRender, multiple, needConfirm, nextIcon, onKeyDown, onCalendarChange, onChange, onFocus, onOk, onOpenChange, onPanelChange, onPickerValueChange, onSelect, open, picker: pickerProp, pickerValue, placeholder, popupClassName, popupStyle, prevIcon, ref, removeIcon, renderExtraFooter, rootClassName, shadow, size, status, styles, suffixIcon, superNextIcon, superPrevIcon, transitionName, value, variant, ...rest } = props;
|
|
26
|
+
const picker = presetPicker ?? pickerProp ?? "date";
|
|
27
|
+
const { locale, placeholder: defaultPlaceholder } = usePickerLocale(localeOverride);
|
|
28
|
+
const keyboard = usePanelKeyboard({
|
|
29
|
+
cellRender,
|
|
30
|
+
dateRender,
|
|
31
|
+
defaultOpen,
|
|
32
|
+
defaultPickerValue,
|
|
33
|
+
defaultValue,
|
|
34
|
+
direction,
|
|
35
|
+
generateConfig,
|
|
36
|
+
mode,
|
|
37
|
+
monthCellRender,
|
|
38
|
+
onChange,
|
|
39
|
+
onFocus,
|
|
40
|
+
onOpenChange,
|
|
41
|
+
onPanelChange,
|
|
42
|
+
onPickerValueChange,
|
|
43
|
+
open,
|
|
44
|
+
picker,
|
|
45
|
+
pickerValue,
|
|
46
|
+
value
|
|
47
|
+
});
|
|
48
|
+
const shared = usePickerShared({
|
|
49
|
+
allowClear,
|
|
50
|
+
bordered,
|
|
51
|
+
changeOnBlur,
|
|
52
|
+
className,
|
|
53
|
+
clearIcon,
|
|
54
|
+
classNames,
|
|
55
|
+
components,
|
|
56
|
+
defaultOpen,
|
|
57
|
+
dropdownClassName,
|
|
58
|
+
generateConfig,
|
|
59
|
+
getPopupContainer,
|
|
60
|
+
max,
|
|
61
|
+
maxDate,
|
|
62
|
+
min,
|
|
63
|
+
minDate,
|
|
64
|
+
needConfirm,
|
|
65
|
+
nextIcon,
|
|
66
|
+
onKeyDown,
|
|
67
|
+
onOpenChange: keyboard.onOpenChange,
|
|
68
|
+
open,
|
|
69
|
+
picker,
|
|
70
|
+
popupClassName,
|
|
71
|
+
popupStyle,
|
|
72
|
+
prevIcon,
|
|
73
|
+
rootClassName: cx(keyboard.scopeClassName, rootClassName),
|
|
74
|
+
semanticProps: props,
|
|
75
|
+
shadow,
|
|
76
|
+
size,
|
|
77
|
+
status,
|
|
78
|
+
styles,
|
|
79
|
+
suffixIcon,
|
|
80
|
+
superNextIcon,
|
|
81
|
+
superPrevIcon,
|
|
82
|
+
transitionName,
|
|
83
|
+
variant
|
|
84
|
+
});
|
|
85
|
+
const presetActive = usePresetActive(rest.presets, multiple ? void 0 : value, multiple ? void 0 : defaultValue);
|
|
86
|
+
return /* @__PURE__ */ jsx(RcPicker, {
|
|
87
|
+
...rest,
|
|
88
|
+
...shared,
|
|
89
|
+
presets: presetActive.presets,
|
|
90
|
+
cellRender: keyboard.cellRender,
|
|
91
|
+
dateRender,
|
|
92
|
+
defaultPickerValue,
|
|
93
|
+
defaultValue: defaultValue ?? void 0,
|
|
94
|
+
direction,
|
|
95
|
+
locale: locale.lang,
|
|
96
|
+
mode,
|
|
97
|
+
monthCellRender,
|
|
98
|
+
multiple,
|
|
99
|
+
picker,
|
|
100
|
+
pickerValue: keyboard.pickerValue,
|
|
101
|
+
placeholder: placeholder ?? defaultPlaceholder(picker),
|
|
102
|
+
ref,
|
|
103
|
+
removeIcon: withDefault(removeIcon, defaultRemoveIcon),
|
|
104
|
+
renderExtraFooter: renderExtraFooter ?? (footer ? () => footer : void 0),
|
|
105
|
+
showNow: rest.showNow ?? rest.showToday ?? false,
|
|
106
|
+
value,
|
|
107
|
+
classNames: multiple ? {
|
|
108
|
+
...shared.classNames,
|
|
109
|
+
popup: {
|
|
110
|
+
...shared.classNames.popup,
|
|
111
|
+
root: cx(shared.classNames.popup.root, `${PREFIX_CLS}-dropdown-multiple`)
|
|
112
|
+
}
|
|
113
|
+
} : shared.classNames,
|
|
114
|
+
onFocus: keyboard.onFocus,
|
|
115
|
+
onOk,
|
|
116
|
+
onPanelChange: keyboard.onPanelChange,
|
|
117
|
+
onPickerValueChange: keyboard.onPickerValueChange,
|
|
118
|
+
onCalendarChange: onCalendarChange || onSelect ? (date, dateString, info) => {
|
|
119
|
+
onCalendarChange?.(date, dateString, info);
|
|
120
|
+
if (date && !Array.isArray(date)) onSelect?.(date);
|
|
121
|
+
} : void 0,
|
|
122
|
+
onChange: (...args) => {
|
|
123
|
+
presetActive.track(args[0]);
|
|
124
|
+
keyboard.onChange(...args);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
Picker.displayName = displayName;
|
|
129
|
+
return Picker;
|
|
130
|
+
};
|
|
131
|
+
return {
|
|
132
|
+
DatePicker: getPicker(),
|
|
133
|
+
MonthPicker: getPicker("month", "MonthPicker"),
|
|
134
|
+
QuarterPicker: getPicker("quarter", "QuarterPicker"),
|
|
135
|
+
TimePicker: getPicker("time", "TimePicker"),
|
|
136
|
+
WeekPicker: getPicker("week", "WeekPicker"),
|
|
137
|
+
YearPicker: getPicker("year", "YearPicker")
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
//#endregion
|
|
141
|
+
export { generateSinglePicker as default };
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=SinglePicker.mjs.map
|