@bifrostui/react 2.0.0-beta.10 → 2.0.0-beta.11

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 (211) hide show
  1. package/dist/Calendar/Calendar.js +5 -1
  2. package/dist/Calendar/Calendar.types.d.ts +5 -0
  3. package/dist/Collapse/Collapse.css +0 -1
  4. package/dist/Collapse/Collapse.d.ts +1 -1
  5. package/dist/Collapse/Collapse.js +11 -8
  6. package/dist/Collapse/Collapse.miniapp.d.ts +5 -0
  7. package/dist/Collapse/Collapse.miniapp.js +177 -0
  8. package/dist/CollapsePanel/CollapsePanel.css +4 -2
  9. package/dist/DatePicker/DatePicker.d.ts +4 -0
  10. package/dist/DatePicker/DatePicker.js +335 -0
  11. package/dist/DatePicker/DatePicker.types.d.ts +36 -0
  12. package/dist/DatePicker/DatePicker.types.js +15 -0
  13. package/dist/DatePicker/constants.d.ts +9 -0
  14. package/dist/DatePicker/constants.js +37 -0
  15. package/dist/DatePicker/index.d.ts +3 -0
  16. package/dist/DatePicker/index.js +44 -0
  17. package/dist/DesktopDatePicker/DesktopDatePicker.d.ts +5 -0
  18. package/dist/DesktopDatePicker/DesktopDatePicker.js +280 -0
  19. package/dist/DesktopDatePicker/DesktopDatePicker.types.d.ts +163 -0
  20. package/dist/DesktopDatePicker/DesktopDatePicker.types.js +15 -0
  21. package/dist/DesktopDatePicker/deskTopPickerContainer.css +100 -0
  22. package/dist/DesktopDatePicker/index.css +61 -0
  23. package/dist/DesktopDatePicker/index.d.ts +2 -0
  24. package/dist/DesktopDatePicker/index.js +41 -0
  25. package/dist/DesktopDatePicker/useGetDatePickerContent.d.ts +6 -0
  26. package/dist/DesktopDatePicker/useGetDatePickerContent.js +343 -0
  27. package/dist/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +5 -0
  28. package/dist/DesktopDateTimePicker/DesktopDateTimePicker.js +322 -0
  29. package/dist/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +163 -0
  30. package/dist/DesktopDateTimePicker/DesktopDateTimePicker.types.js +15 -0
  31. package/dist/DesktopDateTimePicker/index.css +66 -0
  32. package/dist/DesktopDateTimePicker/index.d.ts +2 -0
  33. package/dist/DesktopDateTimePicker/index.js +41 -0
  34. package/dist/DesktopPicker/DesktopPicker.d.ts +5 -0
  35. package/dist/DesktopPicker/DesktopPicker.js +243 -0
  36. package/dist/DesktopPicker/DesktopPicker.types.d.ts +61 -0
  37. package/dist/DesktopPicker/DesktopPicker.types.js +15 -0
  38. package/dist/DesktopPicker/index.css +39 -0
  39. package/dist/DesktopPicker/index.d.ts +2 -0
  40. package/dist/DesktopPicker/index.js +41 -0
  41. package/dist/DesktopPicker/utils/calcAfterMounted.d.ts +2 -0
  42. package/dist/{Tabs/utils/bound.js → DesktopPicker/utils/calcAfterMounted.js} +7 -14
  43. package/dist/DesktopPicker/utils/calcAfterMounted.miniapp.d.ts +2 -0
  44. package/dist/DesktopPicker/utils/calcAfterMounted.miniapp.js +38 -0
  45. package/dist/DesktopTimePicker/DesktopTimePicker.d.ts +5 -0
  46. package/dist/DesktopTimePicker/DesktopTimePicker.js +288 -0
  47. package/dist/DesktopTimePicker/DesktopTimePicker.types.d.ts +182 -0
  48. package/dist/DesktopTimePicker/DesktopTimePicker.types.js +15 -0
  49. package/dist/DesktopTimePicker/DesktopTimePickerList.d.ts +4 -0
  50. package/dist/DesktopTimePicker/DesktopTimePickerList.js +111 -0
  51. package/dist/DesktopTimePicker/index.css +170 -0
  52. package/dist/DesktopTimePicker/index.d.ts +2 -0
  53. package/dist/DesktopTimePicker/index.js +41 -0
  54. package/dist/DesktopTimePicker/useGetTimePickerContent.d.ts +6 -0
  55. package/dist/DesktopTimePicker/useGetTimePickerContent.js +249 -0
  56. package/dist/DesktopTimePicker/utils/scrollUtil.d.ts +2 -0
  57. package/dist/DesktopTimePicker/utils/scrollUtil.js +27 -0
  58. package/dist/DesktopTimePicker/utils/scrollUtil.miniapp.d.ts +2 -0
  59. package/dist/DesktopTimePicker/utils/scrollUtil.miniapp.js +51 -0
  60. package/dist/DesktopTimePicker/utils/utils.d.ts +28 -0
  61. package/dist/DesktopTimePicker/utils/utils.js +408 -0
  62. package/dist/Dialog/Dialog.types.d.ts +5 -0
  63. package/dist/Dialog/FunctionalDialog.js +13 -2
  64. package/dist/Input/Input.css +0 -2
  65. package/dist/Modal/Modal.miniapp.d.ts +1 -1
  66. package/dist/Picker/Picker.css +5 -0
  67. package/dist/Picker/Picker.js +27 -5
  68. package/dist/Picker/Picker.types.d.ts +15 -2
  69. package/dist/Picker/PickerPanel.css +4 -0
  70. package/dist/Picker/PickerPanel.js +7 -6
  71. package/dist/Popover/Popover.js +70 -27
  72. package/dist/Portal/Portal.miniapp.js +7 -4
  73. package/dist/ScrollView/ScrollView.js +24 -11
  74. package/dist/ScrollView/ScrollView.types.d.ts +0 -1
  75. package/dist/Select/Select.css +1 -4
  76. package/dist/Select/Select.js +62 -37
  77. package/dist/Slider/Slider.js +13 -5
  78. package/dist/SwipeAction/SwipeAction.css +79 -0
  79. package/dist/SwipeAction/SwipeAction.d.ts +5 -0
  80. package/dist/SwipeAction/SwipeAction.js +349 -0
  81. package/dist/SwipeAction/SwipeAction.types.d.ts +75 -0
  82. package/dist/SwipeAction/SwipeAction.types.js +15 -0
  83. package/dist/SwipeAction/SwipeActionContext.d.ts +4 -0
  84. package/dist/SwipeAction/SwipeActionContext.js +30 -0
  85. package/dist/SwipeAction/SwipeActionItem.css +31 -0
  86. package/dist/SwipeAction/SwipeActionItem.d.ts +5 -0
  87. package/dist/SwipeAction/SwipeActionItem.js +105 -0
  88. package/dist/SwipeAction/constants.d.ts +9 -0
  89. package/dist/SwipeAction/constants.js +39 -0
  90. package/dist/SwipeAction/index.d.ts +5 -0
  91. package/dist/SwipeAction/index.js +50 -0
  92. package/dist/Tabs/Tabs.js +29 -14
  93. package/dist/Tabs/utils/scroll.d.ts +2 -0
  94. package/dist/Tabs/utils/scroll.js +55 -0
  95. package/dist/Toast/FunctionalToast.js +13 -2
  96. package/dist/Toast/Toast.css +0 -1
  97. package/dist/Toast/Toast.types.d.ts +5 -0
  98. package/dist/Tooltip/Tooltip.js +70 -27
  99. package/dist/index.d.ts +6 -0
  100. package/dist/index.js +13 -1
  101. package/dist/locales/base.d.ts +11 -0
  102. package/dist/locales/en-US.js +24 -0
  103. package/dist/locales/zh-CN.js +24 -0
  104. package/dist/locales/zh-TW.js +24 -0
  105. package/es/Calendar/Calendar.js +5 -1
  106. package/es/Calendar/Calendar.types.d.ts +5 -0
  107. package/es/Collapse/Collapse.css +0 -1
  108. package/es/Collapse/Collapse.d.ts +1 -1
  109. package/es/Collapse/Collapse.js +11 -8
  110. package/es/Collapse/Collapse.miniapp.d.ts +5 -0
  111. package/es/Collapse/Collapse.miniapp.js +157 -0
  112. package/es/CollapsePanel/CollapsePanel.css +4 -2
  113. package/es/DatePicker/DatePicker.d.ts +4 -0
  114. package/es/DatePicker/DatePicker.js +308 -0
  115. package/es/DatePicker/DatePicker.types.d.ts +36 -0
  116. package/es/DatePicker/DatePicker.types.js +1 -0
  117. package/es/DatePicker/constants.d.ts +9 -0
  118. package/es/DatePicker/constants.js +14 -0
  119. package/es/DatePicker/index.d.ts +3 -0
  120. package/es/DatePicker/index.js +8 -0
  121. package/es/DesktopDatePicker/DesktopDatePicker.d.ts +5 -0
  122. package/es/DesktopDatePicker/DesktopDatePicker.js +253 -0
  123. package/es/DesktopDatePicker/DesktopDatePicker.types.d.ts +163 -0
  124. package/es/DesktopDatePicker/DesktopDatePicker.types.js +1 -0
  125. package/es/DesktopDatePicker/deskTopPickerContainer.css +100 -0
  126. package/es/DesktopDatePicker/index.css +61 -0
  127. package/es/DesktopDatePicker/index.d.ts +2 -0
  128. package/es/DesktopDatePicker/index.js +6 -0
  129. package/es/DesktopDatePicker/useGetDatePickerContent.d.ts +6 -0
  130. package/es/DesktopDatePicker/useGetDatePickerContent.js +316 -0
  131. package/es/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +5 -0
  132. package/es/DesktopDateTimePicker/DesktopDateTimePicker.js +295 -0
  133. package/es/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +163 -0
  134. package/es/DesktopDateTimePicker/DesktopDateTimePicker.types.js +1 -0
  135. package/es/DesktopDateTimePicker/index.css +66 -0
  136. package/es/DesktopDateTimePicker/index.d.ts +2 -0
  137. package/es/DesktopDateTimePicker/index.js +9 -0
  138. package/es/DesktopPicker/DesktopPicker.d.ts +5 -0
  139. package/es/DesktopPicker/DesktopPicker.js +226 -0
  140. package/es/DesktopPicker/DesktopPicker.types.d.ts +61 -0
  141. package/es/DesktopPicker/DesktopPicker.types.js +1 -0
  142. package/es/DesktopPicker/index.css +39 -0
  143. package/es/DesktopPicker/index.d.ts +2 -0
  144. package/es/DesktopPicker/index.js +6 -0
  145. package/es/DesktopPicker/utils/calcAfterMounted.d.ts +2 -0
  146. package/es/DesktopPicker/utils/calcAfterMounted.js +6 -0
  147. package/es/DesktopPicker/utils/calcAfterMounted.miniapp.d.ts +2 -0
  148. package/es/DesktopPicker/utils/calcAfterMounted.miniapp.js +9 -0
  149. package/es/DesktopTimePicker/DesktopTimePicker.d.ts +5 -0
  150. package/es/DesktopTimePicker/DesktopTimePicker.js +261 -0
  151. package/es/DesktopTimePicker/DesktopTimePicker.types.d.ts +182 -0
  152. package/es/DesktopTimePicker/DesktopTimePicker.types.js +1 -0
  153. package/es/DesktopTimePicker/DesktopTimePickerList.d.ts +4 -0
  154. package/es/DesktopTimePicker/DesktopTimePickerList.js +84 -0
  155. package/es/DesktopTimePicker/index.css +170 -0
  156. package/es/DesktopTimePicker/index.d.ts +2 -0
  157. package/es/DesktopTimePicker/index.js +6 -0
  158. package/es/DesktopTimePicker/useGetTimePickerContent.d.ts +6 -0
  159. package/es/DesktopTimePicker/useGetTimePickerContent.js +226 -0
  160. package/es/DesktopTimePicker/utils/scrollUtil.d.ts +2 -0
  161. package/es/DesktopTimePicker/utils/scrollUtil.js +8 -0
  162. package/es/DesktopTimePicker/utils/scrollUtil.miniapp.d.ts +2 -0
  163. package/es/DesktopTimePicker/utils/scrollUtil.miniapp.js +22 -0
  164. package/es/DesktopTimePicker/utils/utils.d.ts +28 -0
  165. package/es/DesktopTimePicker/utils/utils.js +365 -0
  166. package/es/Dialog/Dialog.types.d.ts +5 -0
  167. package/es/Dialog/FunctionalDialog.js +14 -3
  168. package/es/Input/Input.css +0 -2
  169. package/es/Picker/Picker.css +5 -0
  170. package/es/Picker/Picker.js +27 -5
  171. package/es/Picker/Picker.types.d.ts +15 -2
  172. package/es/Picker/PickerPanel.css +4 -0
  173. package/es/Picker/PickerPanel.js +7 -6
  174. package/es/Popover/Popover.js +73 -29
  175. package/es/Portal/Portal.miniapp.js +8 -5
  176. package/es/ScrollView/ScrollView.js +24 -11
  177. package/es/ScrollView/ScrollView.types.d.ts +0 -1
  178. package/es/Select/Select.css +1 -4
  179. package/es/Select/Select.js +62 -38
  180. package/es/Slider/Slider.js +16 -6
  181. package/es/SwipeAction/SwipeAction.css +79 -0
  182. package/es/SwipeAction/SwipeAction.d.ts +5 -0
  183. package/es/SwipeAction/SwipeAction.js +334 -0
  184. package/es/SwipeAction/SwipeAction.types.d.ts +75 -0
  185. package/es/SwipeAction/SwipeAction.types.js +1 -0
  186. package/es/SwipeAction/SwipeActionContext.d.ts +4 -0
  187. package/es/SwipeAction/SwipeActionContext.js +11 -0
  188. package/es/SwipeAction/SwipeActionItem.css +31 -0
  189. package/es/SwipeAction/SwipeActionItem.d.ts +5 -0
  190. package/es/SwipeAction/SwipeActionItem.js +78 -0
  191. package/es/SwipeAction/constants.d.ts +9 -0
  192. package/es/SwipeAction/constants.js +15 -0
  193. package/es/SwipeAction/index.d.ts +5 -0
  194. package/es/SwipeAction/index.js +12 -0
  195. package/es/Tabs/Tabs.js +29 -14
  196. package/es/Tabs/utils/scroll.d.ts +2 -0
  197. package/es/Tabs/utils/scroll.js +36 -0
  198. package/es/Toast/FunctionalToast.js +14 -3
  199. package/es/Toast/Toast.css +0 -1
  200. package/es/Toast/Toast.types.d.ts +5 -0
  201. package/es/Tooltip/Tooltip.js +73 -29
  202. package/es/index.d.ts +6 -0
  203. package/es/index.js +6 -0
  204. package/es/locales/base.d.ts +11 -0
  205. package/es/locales/en-US.js +24 -0
  206. package/es/locales/zh-CN.js +24 -0
  207. package/es/locales/zh-TW.js +24 -0
  208. package/package.json +5 -5
  209. package/dist/Tabs/utils/bound.d.ts +0 -1
  210. package/es/Tabs/utils/bound.d.ts +0 -1
  211. package/es/Tabs/utils/bound.js +0 -13
@@ -0,0 +1,316 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { CaretLeftIcon, CaretRightIcon } from "@bifrostui/icons";
33
+ import clsx from "clsx";
34
+ import dayjs from "dayjs";
35
+ import React, { useMemo } from "react";
36
+ import Calendar from "../Calendar";
37
+ import "./deskTopPickerContainer.css";
38
+ import { useLocaleText } from "../locales";
39
+ const prefixCls = "bui-d-date-picker-lay";
40
+ const useGetDatePickerContent = (props) => {
41
+ const yPatterns = ["YYYY", "YY"];
42
+ const mPatterns = ["MM", "M", "MMM", "MMMM"];
43
+ const dPatterns = ["D", "DD"];
44
+ const { month: monthMap } = useLocaleText("desktopDatePicker");
45
+ const _a = props, {
46
+ format,
47
+ minDate,
48
+ maxDate,
49
+ picker,
50
+ setIsOpen,
51
+ disabledDate,
52
+ calendarValue,
53
+ setSelectType,
54
+ selectType,
55
+ headerBarLeftIcon,
56
+ headerBarRightIcon,
57
+ closeOnSelect,
58
+ monthRender,
59
+ yearRender,
60
+ onMonthChange,
61
+ onYearChange,
62
+ triggerChange,
63
+ CalendarProps
64
+ } = _a, others = __objRest(_a, [
65
+ "format",
66
+ "minDate",
67
+ "maxDate",
68
+ "picker",
69
+ "setIsOpen",
70
+ "disabledDate",
71
+ "calendarValue",
72
+ "setSelectType",
73
+ "selectType",
74
+ "headerBarLeftIcon",
75
+ "headerBarRightIcon",
76
+ "closeOnSelect",
77
+ "monthRender",
78
+ "yearRender",
79
+ "onMonthChange",
80
+ "onYearChange",
81
+ "triggerChange",
82
+ "CalendarProps"
83
+ ]);
84
+ const isMinMonth = dayjs(minDate).isSame(calendarValue, "month");
85
+ const isMaxMonth = dayjs(maxDate).isSame(calendarValue, "month");
86
+ const yearList = useMemo(() => {
87
+ const maxYear = dayjs(maxDate).year();
88
+ const minYear = dayjs(minDate).year();
89
+ const years = [];
90
+ for (let i = minYear; i <= maxYear; i += 1) {
91
+ years.push(i);
92
+ }
93
+ const chunkedYears = [];
94
+ for (let i = 0; i < years.length; i += 3) {
95
+ chunkedYears.push(years.slice(i, i + 3));
96
+ }
97
+ return chunkedYears;
98
+ }, [maxDate, minDate]);
99
+ const mouthList = [
100
+ [1, 2, 3],
101
+ [4, 5, 6],
102
+ [7, 8, 9],
103
+ [10, 11, 12]
104
+ ];
105
+ const validateAndAdjustDate = (value) => {
106
+ const dateValue = dayjs(value);
107
+ const minValue = dayjs(minDate);
108
+ const maxValue = dayjs(maxDate);
109
+ if (dateValue.isBefore(minValue)) {
110
+ return minValue;
111
+ }
112
+ if (dateValue.isAfter(maxValue)) {
113
+ return maxValue;
114
+ }
115
+ return dateValue;
116
+ };
117
+ const onClickPrev = (e) => {
118
+ e.stopPropagation();
119
+ if (!isMinMonth) {
120
+ const month = dayjs(calendarValue).subtract(1, "month").toDate();
121
+ triggerChange(e, validateAndAdjustDate(month).toDate());
122
+ }
123
+ };
124
+ const onClickNext = (e) => {
125
+ e.stopPropagation();
126
+ if (!isMaxMonth) {
127
+ const month = dayjs(calendarValue).add(1, "month").toDate();
128
+ triggerChange(e, validateAndAdjustDate(month).toDate());
129
+ }
130
+ };
131
+ const calendarChange = (e, data) => {
132
+ e.stopPropagation();
133
+ if (data.value) {
134
+ const ymd = dayjs(data.value);
135
+ const hms = dayjs(calendarValue || /* @__PURE__ */ new Date());
136
+ const newValue = ymd.hour(hms.hour()).minute(hms.minute()).second(hms.second());
137
+ triggerChange(e, validateAndAdjustDate(newValue).toDate());
138
+ }
139
+ if (closeOnSelect) {
140
+ setIsOpen(false);
141
+ }
142
+ };
143
+ const handleTdClick = (e, data) => {
144
+ e.stopPropagation();
145
+ if (selectType === "year") {
146
+ triggerChange(
147
+ e,
148
+ validateAndAdjustDate(
149
+ dayjs(calendarValue || /* @__PURE__ */ new Date()).year(data)
150
+ ).toDate()
151
+ );
152
+ onYearChange == null ? void 0 : onYearChange(
153
+ e,
154
+ validateAndAdjustDate(
155
+ dayjs(calendarValue || /* @__PURE__ */ new Date()).year(data)
156
+ ).toDate()
157
+ );
158
+ if (picker === "year" && closeOnSelect) {
159
+ setIsOpen(false);
160
+ return;
161
+ }
162
+ setSelectType("month");
163
+ }
164
+ if (selectType === "month") {
165
+ triggerChange(
166
+ e,
167
+ validateAndAdjustDate(
168
+ dayjs(calendarValue || /* @__PURE__ */ new Date()).month(data - 1)
169
+ ).toDate()
170
+ );
171
+ onMonthChange == null ? void 0 : onMonthChange(
172
+ e,
173
+ validateAndAdjustDate(
174
+ dayjs(calendarValue || /* @__PURE__ */ new Date()).month(data - 1)
175
+ ).toDate()
176
+ );
177
+ if (picker === "day") {
178
+ setSelectType("day");
179
+ return;
180
+ }
181
+ if (closeOnSelect) {
182
+ setIsOpen(false);
183
+ }
184
+ }
185
+ };
186
+ const renderTd = (its, currentData) => {
187
+ if (yearRender && selectType === "year") {
188
+ return /* @__PURE__ */ React.createElement("div", { className: clsx(`${prefixCls}-col-content`) }, yearRender({ year: its, currentData }));
189
+ }
190
+ if (monthRender && selectType === "month") {
191
+ return /* @__PURE__ */ React.createElement("div", { className: clsx(`${prefixCls}-col-content`) }, monthRender({ month: its, currentData }));
192
+ }
193
+ return /* @__PURE__ */ React.createElement("div", { className: clsx(`${prefixCls}-col-content`) }, /* @__PURE__ */ React.createElement("span", { className: clsx(`${prefixCls}-col-text`) }, selectType === "month" ? monthMap[its] : its));
194
+ };
195
+ const renderTable = () => {
196
+ const dataList = selectType === "year" ? yearList : mouthList;
197
+ return dataList.map((item, index) => {
198
+ return /* @__PURE__ */ React.createElement("div", { key: index + 1, className: clsx(`${prefixCls}-row`) }, item.map((its, idx) => {
199
+ let disabledClick = false;
200
+ if (selectType === "year") {
201
+ const currentData = dayjs(calendarValue).set("year", its);
202
+ if (its < dayjs(minDate).year() || its > dayjs(maxDate).year() || (disabledDate == null ? void 0 : disabledDate(currentData.toDate()))) {
203
+ disabledClick = true;
204
+ }
205
+ }
206
+ if (selectType === "month") {
207
+ const currentData = dayjs(calendarValue).set("month", its - 1);
208
+ disabledClick = currentData.isBefore(minDate, "month") || currentData.isAfter(maxDate, "month");
209
+ if (disabledDate) {
210
+ disabledClick = disabledDate == null ? void 0 : disabledDate(currentData.toDate());
211
+ }
212
+ }
213
+ return /* @__PURE__ */ React.createElement(
214
+ "div",
215
+ {
216
+ key: idx + 1,
217
+ className: clsx(`${prefixCls}-col`, {
218
+ [`${prefixCls}-col-active`]: (selectType === "year" ? dayjs(calendarValue).year() : dayjs(calendarValue).month() + 1) === its && !disabledClick,
219
+ [`${prefixCls}-col-disabled`]: disabledClick
220
+ }),
221
+ onClick: (e) => {
222
+ if (!disabledClick) {
223
+ handleTdClick(e, its);
224
+ }
225
+ }
226
+ },
227
+ renderTd(its, calendarValue)
228
+ );
229
+ }));
230
+ });
231
+ };
232
+ const handleClickTitle = (e, data) => {
233
+ e.stopPropagation();
234
+ if (yPatterns.indexOf(data) > -1) {
235
+ setSelectType("year");
236
+ }
237
+ if (mPatterns.indexOf(data) > -1) {
238
+ setSelectType("month");
239
+ }
240
+ if (dPatterns.indexOf(data) > -1) {
241
+ setSelectType("day");
242
+ }
243
+ };
244
+ const renderTitle = (formate, value) => {
245
+ const allType = [...yPatterns, ...mPatterns, ...dPatterns];
246
+ const formattingTokens = /(\[[^[]*\])|([-_?:/.,()\s{0-9}]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g;
247
+ const matchArr = formate.match(formattingTokens);
248
+ const domArr = [];
249
+ let str = "";
250
+ for (let i = 0; i <= matchArr.length; i += 1) {
251
+ if (allType.indexOf(matchArr[i]) > -1) {
252
+ if (str !== "") {
253
+ domArr.push(str);
254
+ str = "";
255
+ }
256
+ domArr.push(
257
+ /* @__PURE__ */ React.createElement(
258
+ "div",
259
+ {
260
+ className: clsx(`${prefixCls}-title-text`),
261
+ key: i,
262
+ onClick: (e) => handleClickTitle(e, matchArr[i])
263
+ },
264
+ dayjs(value).format(matchArr[i])
265
+ )
266
+ );
267
+ } else {
268
+ str = `${matchArr[i]}${str}`;
269
+ }
270
+ }
271
+ return domArr;
272
+ };
273
+ const desktopDatePicker = () => {
274
+ return /* @__PURE__ */ React.createElement(
275
+ "div",
276
+ __spreadProps(__spreadValues({
277
+ className: clsx(`${prefixCls}-main`)
278
+ }, others), {
279
+ onClick: (e) => {
280
+ e.stopPropagation();
281
+ }
282
+ }),
283
+ /* @__PURE__ */ React.createElement("div", { className: `${prefixCls}-handler` }, selectType !== "year" && /* @__PURE__ */ React.createElement("div", { onClick: onClickPrev, className: `${prefixCls}-handler-btn` }, headerBarLeftIcon ? headerBarLeftIcon({ isMinMonth }) : /* @__PURE__ */ React.createElement(
284
+ CaretLeftIcon,
285
+ {
286
+ className: `${prefixCls}-handler-icon`,
287
+ htmlColor: isMinMonth && "var(--bui-color-white)"
288
+ }
289
+ )), /* @__PURE__ */ React.createElement("div", { className: `${prefixCls}-title` }, calendarValue ? renderTitle(format, calendarValue) : format), selectType !== "year" && /* @__PURE__ */ React.createElement("div", { onClick: onClickNext, className: `${prefixCls}-handler-btn` }, headerBarRightIcon ? headerBarRightIcon({ isMaxMonth }) : /* @__PURE__ */ React.createElement(
290
+ CaretRightIcon,
291
+ {
292
+ className: `${prefixCls}-handler-icon`,
293
+ htmlColor: isMaxMonth && "var(--bui-color-white)"
294
+ }
295
+ ))),
296
+ selectType === "day" ? /* @__PURE__ */ React.createElement(
297
+ Calendar,
298
+ __spreadValues({
299
+ headerVisible: true,
300
+ minDate,
301
+ maxDate,
302
+ disabledDate,
303
+ value: calendarValue,
304
+ onChange: calendarChange
305
+ }, CalendarProps)
306
+ ) : /* @__PURE__ */ React.createElement("div", { className: clsx(`${prefixCls}-list`) }, /* @__PURE__ */ React.createElement("div", { className: clsx(`${prefixCls}-box`) }, renderTable()))
307
+ );
308
+ };
309
+ return {
310
+ desktopDatePicker
311
+ };
312
+ };
313
+ var useGetDatePickerContent_default = useGetDatePickerContent;
314
+ export {
315
+ useGetDatePickerContent_default as default
316
+ };
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { DateTimePickerProps } from './DesktopDateTimePicker.types';
3
+ import './index.less';
4
+ declare const DesktopDateTimePicker: React.ForwardRefExoticComponent<Omit<DateTimePickerProps<"div", {}>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ export default DesktopDateTimePicker;
@@ -0,0 +1,295 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { DateOutlinedIcon } from "@bifrostui/icons";
33
+ import dayjs from "dayjs";
34
+ import clsx from "clsx";
35
+ import React, { useMemo, useState, useEffect } from "react";
36
+ import { useValue } from "@bifrostui/utils";
37
+ import DesktopPicker from "../DesktopPicker";
38
+ import useGetDatePickerContent from "../DesktopDatePicker/useGetDatePickerContent";
39
+ import useGetTimePickerContent from "../DesktopTimePicker/useGetTimePickerContent";
40
+ import "./index.css";
41
+ const prefixCls = "bui-datetime-picker";
42
+ const DesktopDateTimePicker = /* @__PURE__ */ React.forwardRef((props, ref) => {
43
+ const _a = props, {
44
+ className,
45
+ inputRef,
46
+ inputProps,
47
+ value,
48
+ defaultValue,
49
+ disabled = false,
50
+ disableOpenPicker = false,
51
+ placeholder,
52
+ format = "YYYY/MM/DD HH:mm:ss",
53
+ open,
54
+ disabledDate,
55
+ views = ["year", "month", "day", "hour", "minute", "second"],
56
+ minDate = dayjs(dayjs().format("YYYYMMDD")).subtract(10, "year").toDate(),
57
+ maxDate = dayjs(dayjs().format("YYYYMMDD")).add(10, "year").toDate(),
58
+ icon,
59
+ headerBarLeftIcon,
60
+ headerBarRightIcon,
61
+ closeOnSelect = true,
62
+ onChange,
63
+ onClose,
64
+ onOpen,
65
+ monthRender,
66
+ yearRender,
67
+ onMonthChange,
68
+ onYearChange,
69
+ DesktopPickerProps,
70
+ CalendarProps
71
+ } = _a, others = __objRest(_a, [
72
+ "className",
73
+ "inputRef",
74
+ "inputProps",
75
+ "value",
76
+ "defaultValue",
77
+ "disabled",
78
+ "disableOpenPicker",
79
+ "placeholder",
80
+ "format",
81
+ "open",
82
+ "disabledDate",
83
+ "views",
84
+ "minDate",
85
+ "maxDate",
86
+ "icon",
87
+ "headerBarLeftIcon",
88
+ "headerBarRightIcon",
89
+ "closeOnSelect",
90
+ "onChange",
91
+ "onClose",
92
+ "onOpen",
93
+ "monthRender",
94
+ "yearRender",
95
+ "onMonthChange",
96
+ "onYearChange",
97
+ "DesktopPickerProps",
98
+ "CalendarProps"
99
+ ]);
100
+ const [isOpen, setIsOpen] = useState(open);
101
+ const [isInvalid, setIsInvalid] = useState(false);
102
+ const getPicker = useMemo(() => {
103
+ if (views.includes("day")) {
104
+ return "day";
105
+ }
106
+ if (views.includes("month")) {
107
+ return "month";
108
+ }
109
+ if (views.includes("year")) {
110
+ return "year";
111
+ }
112
+ return "day";
113
+ }, [views]);
114
+ const [selectType, setSelectType] = useState(
115
+ getPicker
116
+ );
117
+ const [inputStr, setInputStr] = useState("");
118
+ const [useUserStr, setUseUserStr] = useState(false);
119
+ const [calendarValue, triggerChange] = useValue({
120
+ value,
121
+ defaultValue,
122
+ onChange
123
+ });
124
+ const handleDatePickerIconClick = (e) => {
125
+ if (disabled || disableOpenPicker || open !== void 0)
126
+ return;
127
+ setIsOpen(!isOpen);
128
+ };
129
+ const handleDatePickerInputClick = (e) => {
130
+ e.stopPropagation();
131
+ if (inputProps == null ? void 0 : inputProps.readOnly) {
132
+ if (disabled || disableOpenPicker || open !== void 0)
133
+ return;
134
+ setIsOpen(!isOpen);
135
+ return;
136
+ }
137
+ setIsOpen(false);
138
+ };
139
+ const { desktopDatePicker } = useGetDatePickerContent({
140
+ format,
141
+ minDate,
142
+ maxDate,
143
+ setIsOpen,
144
+ triggerChange,
145
+ disabledDate,
146
+ calendarValue,
147
+ setSelectType,
148
+ picker: getPicker,
149
+ selectType,
150
+ headerBarLeftIcon,
151
+ headerBarRightIcon,
152
+ CalendarProps,
153
+ onClose,
154
+ monthRender,
155
+ yearRender,
156
+ onMonthChange,
157
+ onYearChange,
158
+ closeOnSelect: false,
159
+ style: {
160
+ borderRadius: "3px 0px 0px 3px"
161
+ }
162
+ });
163
+ const { desktopTimePanel } = useGetTimePickerContent({
164
+ views: views.filter(
165
+ (item) => item !== "day" && item !== "month" && item !== "year"
166
+ ),
167
+ minTime: dayjs(minDate),
168
+ maxTime: dayjs(maxDate),
169
+ setIsOpen,
170
+ triggerChange,
171
+ closeOnSelect,
172
+ timeValue: dayjs(calendarValue),
173
+ setIsInvalid
174
+ });
175
+ const onInputChange = (e) => {
176
+ e.stopPropagation();
177
+ const newValue = e.target.value;
178
+ if (newValue.length === 0) {
179
+ setInputStr("");
180
+ setUseUserStr(true);
181
+ triggerChange(e, null);
182
+ return;
183
+ }
184
+ if (dayjs(newValue, format, true).isValid()) {
185
+ setInputStr("");
186
+ setUseUserStr(false);
187
+ if (disabledDate == null ? void 0 : disabledDate(dayjs(newValue).toDate())) {
188
+ return;
189
+ }
190
+ if (dayjs(newValue).isAfter(maxDate)) {
191
+ triggerChange(e, maxDate);
192
+ return;
193
+ }
194
+ if (dayjs(newValue).isBefore(minDate)) {
195
+ triggerChange(e, minDate);
196
+ return;
197
+ }
198
+ triggerChange(e, dayjs(e.target.value).toDate());
199
+ } else {
200
+ setUseUserStr(true);
201
+ setInputStr(e.target.value);
202
+ }
203
+ };
204
+ const onmount = () => {
205
+ onOpen == null ? void 0 : onOpen();
206
+ };
207
+ const unMounted = () => {
208
+ onClose == null ? void 0 : onClose();
209
+ setSelectType(getPicker);
210
+ };
211
+ const showPlaceholder = useMemo(() => {
212
+ if (placeholder) {
213
+ return placeholder;
214
+ }
215
+ return format;
216
+ }, [placeholder, format]);
217
+ const renderValue = useMemo(() => {
218
+ if (useUserStr) {
219
+ return inputStr;
220
+ }
221
+ if (calendarValue) {
222
+ return dayjs(calendarValue).format(format);
223
+ }
224
+ return "";
225
+ }, [calendarValue, inputStr, useUserStr, format]);
226
+ useEffect(() => {
227
+ setUseUserStr(false);
228
+ }, [calendarValue]);
229
+ return /* @__PURE__ */ React.createElement(
230
+ "div",
231
+ __spreadProps(__spreadValues({}, others), {
232
+ className: clsx(prefixCls, className, {
233
+ [`${prefixCls}-disabled`]: disabled,
234
+ [`${prefixCls}-active`]: isOpen,
235
+ [`${prefixCls}-invalid`]: isInvalid
236
+ }),
237
+ ref
238
+ }),
239
+ /* @__PURE__ */ React.createElement(
240
+ DesktopPicker,
241
+ __spreadProps(__spreadValues({
242
+ open: open != null ? open : isOpen,
243
+ miniBackdropInvisible: open !== void 0,
244
+ onClose: (e, data) => {
245
+ setIsOpen(data == null ? void 0 : data.value);
246
+ },
247
+ onMount: onmount,
248
+ onUnmounted: unMounted,
249
+ content: /* @__PURE__ */ React.createElement(
250
+ "div",
251
+ {
252
+ className: `${prefixCls}-box`,
253
+ onClick: (e) => {
254
+ e.stopPropagation();
255
+ }
256
+ },
257
+ desktopDatePicker(),
258
+ desktopTimePanel()
259
+ )
260
+ }, DesktopPickerProps), {
261
+ inheritWidth: false
262
+ }),
263
+ /* @__PURE__ */ React.createElement("div", { className: `${prefixCls}-container` }, /* @__PURE__ */ React.createElement(
264
+ "input",
265
+ __spreadProps(__spreadValues({}, inputProps), {
266
+ "aria-invalid": true,
267
+ autoComplete: "off",
268
+ placeholder: showPlaceholder,
269
+ type: "text",
270
+ inputMode: "text",
271
+ ref: inputRef,
272
+ className: clsx(`${prefixCls}-input`, {
273
+ [inputProps == null ? void 0 : inputProps.className]: inputProps == null ? void 0 : inputProps.className
274
+ }),
275
+ onBlur: () => setUseUserStr(false),
276
+ onClick: handleDatePickerInputClick,
277
+ onChange: onInputChange,
278
+ value: renderValue
279
+ })
280
+ ), /* @__PURE__ */ React.createElement(
281
+ "div",
282
+ {
283
+ onClick: handleDatePickerIconClick,
284
+ className: `${prefixCls}-icon`
285
+ },
286
+ icon || /* @__PURE__ */ React.createElement(DateOutlinedIcon, { htmlColor: "var(--bui-color-neutral-3)" })
287
+ ))
288
+ )
289
+ );
290
+ });
291
+ DesktopDateTimePicker.displayName = "BUIDesktopDateTimePicker";
292
+ var DesktopDateTimePicker_default = DesktopDateTimePicker;
293
+ export {
294
+ DesktopDateTimePicker_default as default
295
+ };