@bifrostui/react 1.4.6 → 1.4.7-beta.0

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