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

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 (213) 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/TabBar/TabBarItem.js +2 -2
  93. package/dist/Tabs/Tabs.js +29 -14
  94. package/dist/Tabs/utils/scroll.d.ts +2 -0
  95. package/dist/Tabs/utils/scroll.js +55 -0
  96. package/dist/Toast/FunctionalToast.js +13 -2
  97. package/dist/Toast/Toast.css +0 -1
  98. package/dist/Toast/Toast.types.d.ts +5 -0
  99. package/dist/Tooltip/Tooltip.js +70 -27
  100. package/dist/index.d.ts +6 -0
  101. package/dist/index.js +13 -1
  102. package/dist/locales/base.d.ts +11 -0
  103. package/dist/locales/en-US.js +24 -0
  104. package/dist/locales/zh-CN.js +24 -0
  105. package/dist/locales/zh-TW.js +24 -0
  106. package/es/Calendar/Calendar.js +5 -1
  107. package/es/Calendar/Calendar.types.d.ts +5 -0
  108. package/es/Collapse/Collapse.css +0 -1
  109. package/es/Collapse/Collapse.d.ts +1 -1
  110. package/es/Collapse/Collapse.js +11 -8
  111. package/es/Collapse/Collapse.miniapp.d.ts +5 -0
  112. package/es/Collapse/Collapse.miniapp.js +157 -0
  113. package/es/CollapsePanel/CollapsePanel.css +4 -2
  114. package/es/DatePicker/DatePicker.d.ts +4 -0
  115. package/es/DatePicker/DatePicker.js +308 -0
  116. package/es/DatePicker/DatePicker.types.d.ts +36 -0
  117. package/es/DatePicker/DatePicker.types.js +1 -0
  118. package/es/DatePicker/constants.d.ts +9 -0
  119. package/es/DatePicker/constants.js +14 -0
  120. package/es/DatePicker/index.d.ts +3 -0
  121. package/es/DatePicker/index.js +8 -0
  122. package/es/DesktopDatePicker/DesktopDatePicker.d.ts +5 -0
  123. package/es/DesktopDatePicker/DesktopDatePicker.js +253 -0
  124. package/es/DesktopDatePicker/DesktopDatePicker.types.d.ts +163 -0
  125. package/es/DesktopDatePicker/DesktopDatePicker.types.js +1 -0
  126. package/es/DesktopDatePicker/deskTopPickerContainer.css +100 -0
  127. package/es/DesktopDatePicker/index.css +61 -0
  128. package/es/DesktopDatePicker/index.d.ts +2 -0
  129. package/es/DesktopDatePicker/index.js +6 -0
  130. package/es/DesktopDatePicker/useGetDatePickerContent.d.ts +6 -0
  131. package/es/DesktopDatePicker/useGetDatePickerContent.js +316 -0
  132. package/es/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +5 -0
  133. package/es/DesktopDateTimePicker/DesktopDateTimePicker.js +295 -0
  134. package/es/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +163 -0
  135. package/es/DesktopDateTimePicker/DesktopDateTimePicker.types.js +1 -0
  136. package/es/DesktopDateTimePicker/index.css +66 -0
  137. package/es/DesktopDateTimePicker/index.d.ts +2 -0
  138. package/es/DesktopDateTimePicker/index.js +9 -0
  139. package/es/DesktopPicker/DesktopPicker.d.ts +5 -0
  140. package/es/DesktopPicker/DesktopPicker.js +226 -0
  141. package/es/DesktopPicker/DesktopPicker.types.d.ts +61 -0
  142. package/es/DesktopPicker/DesktopPicker.types.js +1 -0
  143. package/es/DesktopPicker/index.css +39 -0
  144. package/es/DesktopPicker/index.d.ts +2 -0
  145. package/es/DesktopPicker/index.js +6 -0
  146. package/es/DesktopPicker/utils/calcAfterMounted.d.ts +2 -0
  147. package/es/DesktopPicker/utils/calcAfterMounted.js +6 -0
  148. package/es/DesktopPicker/utils/calcAfterMounted.miniapp.d.ts +2 -0
  149. package/es/DesktopPicker/utils/calcAfterMounted.miniapp.js +9 -0
  150. package/es/DesktopTimePicker/DesktopTimePicker.d.ts +5 -0
  151. package/es/DesktopTimePicker/DesktopTimePicker.js +261 -0
  152. package/es/DesktopTimePicker/DesktopTimePicker.types.d.ts +182 -0
  153. package/es/DesktopTimePicker/DesktopTimePicker.types.js +1 -0
  154. package/es/DesktopTimePicker/DesktopTimePickerList.d.ts +4 -0
  155. package/es/DesktopTimePicker/DesktopTimePickerList.js +84 -0
  156. package/es/DesktopTimePicker/index.css +170 -0
  157. package/es/DesktopTimePicker/index.d.ts +2 -0
  158. package/es/DesktopTimePicker/index.js +6 -0
  159. package/es/DesktopTimePicker/useGetTimePickerContent.d.ts +6 -0
  160. package/es/DesktopTimePicker/useGetTimePickerContent.js +226 -0
  161. package/es/DesktopTimePicker/utils/scrollUtil.d.ts +2 -0
  162. package/es/DesktopTimePicker/utils/scrollUtil.js +8 -0
  163. package/es/DesktopTimePicker/utils/scrollUtil.miniapp.d.ts +2 -0
  164. package/es/DesktopTimePicker/utils/scrollUtil.miniapp.js +22 -0
  165. package/es/DesktopTimePicker/utils/utils.d.ts +28 -0
  166. package/es/DesktopTimePicker/utils/utils.js +365 -0
  167. package/es/Dialog/Dialog.types.d.ts +5 -0
  168. package/es/Dialog/FunctionalDialog.js +14 -3
  169. package/es/Input/Input.css +0 -2
  170. package/es/Picker/Picker.css +5 -0
  171. package/es/Picker/Picker.js +27 -5
  172. package/es/Picker/Picker.types.d.ts +15 -2
  173. package/es/Picker/PickerPanel.css +4 -0
  174. package/es/Picker/PickerPanel.js +7 -6
  175. package/es/Popover/Popover.js +73 -29
  176. package/es/Portal/Portal.miniapp.js +8 -5
  177. package/es/ScrollView/ScrollView.js +24 -11
  178. package/es/ScrollView/ScrollView.types.d.ts +0 -1
  179. package/es/Select/Select.css +1 -4
  180. package/es/Select/Select.js +62 -38
  181. package/es/Slider/Slider.js +16 -6
  182. package/es/SwipeAction/SwipeAction.css +79 -0
  183. package/es/SwipeAction/SwipeAction.d.ts +5 -0
  184. package/es/SwipeAction/SwipeAction.js +334 -0
  185. package/es/SwipeAction/SwipeAction.types.d.ts +75 -0
  186. package/es/SwipeAction/SwipeAction.types.js +1 -0
  187. package/es/SwipeAction/SwipeActionContext.d.ts +4 -0
  188. package/es/SwipeAction/SwipeActionContext.js +11 -0
  189. package/es/SwipeAction/SwipeActionItem.css +31 -0
  190. package/es/SwipeAction/SwipeActionItem.d.ts +5 -0
  191. package/es/SwipeAction/SwipeActionItem.js +78 -0
  192. package/es/SwipeAction/constants.d.ts +9 -0
  193. package/es/SwipeAction/constants.js +15 -0
  194. package/es/SwipeAction/index.d.ts +5 -0
  195. package/es/SwipeAction/index.js +12 -0
  196. package/es/TabBar/TabBarItem.js +1 -1
  197. package/es/Tabs/Tabs.js +29 -14
  198. package/es/Tabs/utils/scroll.d.ts +2 -0
  199. package/es/Tabs/utils/scroll.js +36 -0
  200. package/es/Toast/FunctionalToast.js +14 -3
  201. package/es/Toast/Toast.css +0 -1
  202. package/es/Toast/Toast.types.d.ts +5 -0
  203. package/es/Tooltip/Tooltip.js +73 -29
  204. package/es/index.d.ts +6 -0
  205. package/es/index.js +6 -0
  206. package/es/locales/base.d.ts +11 -0
  207. package/es/locales/en-US.js +24 -0
  208. package/es/locales/zh-CN.js +24 -0
  209. package/es/locales/zh-TW.js +24 -0
  210. package/package.json +5 -5
  211. package/dist/Tabs/utils/bound.d.ts +0 -1
  212. package/es/Tabs/utils/bound.d.ts +0 -1
  213. package/es/Tabs/utils/bound.js +0 -13
@@ -37,12 +37,14 @@ import {
37
37
  getTransitionProps,
38
38
  createTransitions
39
39
  } from "@bifrostui/utils";
40
+ import clsx from "clsx";
40
41
  import { Transition } from "../Transition";
41
42
  import "./Collapse.css";
42
43
  const defaultEasing = {
43
44
  enter: easing.easeOut,
44
45
  exit: easing.sharp
45
46
  };
47
+ const FIT_CONTENT = "fit-content";
46
48
  const defaultTimeout = {
47
49
  enter: duration.enteringScreen,
48
50
  exit: duration.leavingScreen
@@ -71,7 +73,6 @@ const Collapse = /* @__PURE__ */ React.forwardRef((props, ref) => {
71
73
  "className",
72
74
  "children"
73
75
  ]);
74
- const nodeRef = useForkRef(ref);
75
76
  const wrapperRef = useRef(null);
76
77
  const collapseRef = useForkRef(wrapperRef, ref);
77
78
  const transitions = createTransitions();
@@ -79,11 +80,11 @@ const Collapse = /* @__PURE__ */ React.forwardRef((props, ref) => {
79
80
  const collapsedSize = typeof collapsedSizeProp === "number" ? `${collapsedSizeProp}px` : collapsedSizeProp;
80
81
  const size = isHorizontal ? "width" : "height";
81
82
  const getCollapseWrapperSize = (reactNode) => {
82
- return reactNode ? `${reactNode[isHorizontal ? "clientWidth" : "clientHeight"]}px` : "fit-content";
83
+ return reactNode ? `${reactNode[isHorizontal ? "clientWidth" : "clientHeight"]}px` : FIT_CONTENT;
83
84
  };
84
85
  useEffect(() => {
85
86
  var _a2, _b, _c, _d;
86
- if (appear === false && inProp === true && ((_b = (_a2 = wrapperRef.current) == null ? void 0 : _a2.style) == null ? void 0 : _b[size]) === "fit-content") {
87
+ if (appear === false && inProp === true && ((_b = (_a2 = wrapperRef.current) == null ? void 0 : _a2.style) == null ? void 0 : _b[size]) === FIT_CONTENT) {
87
88
  wrapperRef.current.style[size] = getCollapseWrapperSize(
88
89
  (_d = (_c = wrapperRef.current) == null ? void 0 : _c.children) == null ? void 0 : _d[0]
89
90
  );
@@ -94,7 +95,6 @@ const Collapse = /* @__PURE__ */ React.forwardRef((props, ref) => {
94
95
  return /* @__PURE__ */ React.createElement(
95
96
  Transition,
96
97
  __spreadProps(__spreadValues({}, other), {
97
- ref: nodeRef,
98
98
  in: inProp,
99
99
  timeout,
100
100
  delay,
@@ -122,14 +122,17 @@ const Collapse = /* @__PURE__ */ React.forwardRef((props, ref) => {
122
122
  };
123
123
  return React.createElement(
124
124
  "div",
125
- {
126
- className: `bui-collapse ${className}`,
125
+ __spreadProps(__spreadValues({
126
+ className: clsx("bui-collapse", {
127
+ className
128
+ }),
127
129
  style: __spreadValues(__spreadProps(__spreadValues({}, style), {
128
130
  transition,
129
131
  WebkitTransition: transition
130
- }), wrapperSize()),
132
+ }), wrapperSize())
133
+ }, childProps), {
131
134
  ref: collapseRef
132
- },
135
+ }),
133
136
  React.cloneElement(children, __spreadValues({
134
137
  style: __spreadValues({}, (_a2 = children.props) == null ? void 0 : _a2.style)
135
138
  }, childProps))
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { CollapseProps } from './Collapse.types';
3
+ import './Collapse.less';
4
+ declare const Collapse: React.ForwardRefExoticComponent<CollapseProps & React.RefAttributes<HTMLElement>>;
5
+ export default Collapse;
@@ -0,0 +1,157 @@
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 React, { useEffect, useRef, useState } from "react";
33
+ import {
34
+ useForkRef,
35
+ duration,
36
+ easing,
37
+ getTransitionProps,
38
+ createTransitions,
39
+ getBoundingClientRect
40
+ } from "@bifrostui/utils";
41
+ import { Transition } from "../Transition";
42
+ import "./Collapse.css";
43
+ const defaultEasing = {
44
+ enter: easing.easeOut,
45
+ exit: easing.sharp
46
+ };
47
+ const defaultTimeout = {
48
+ enter: duration.enteringScreen,
49
+ exit: duration.leavingScreen
50
+ };
51
+ const FIT_CONTENT = "fit-content";
52
+ const Collapse = /* @__PURE__ */ React.forwardRef((props, ref) => {
53
+ const _a = props, {
54
+ appear = false,
55
+ in: inProp,
56
+ easing: easingProp = defaultEasing,
57
+ direction = "vertical",
58
+ timeout = defaultTimeout,
59
+ delay = 0,
60
+ collapsedSize: collapsedSizeProp = 0,
61
+ style,
62
+ className,
63
+ children
64
+ } = _a, other = __objRest(_a, [
65
+ "appear",
66
+ "in",
67
+ "easing",
68
+ "direction",
69
+ "timeout",
70
+ "delay",
71
+ "collapsedSize",
72
+ "style",
73
+ "className",
74
+ "children"
75
+ ]);
76
+ const wrapperRef = useRef(null);
77
+ const collapseRef = useForkRef(wrapperRef, ref);
78
+ const [wrapperSize, setWrapperSize] = useState("");
79
+ const transitions = createTransitions();
80
+ const isHorizontal = direction === "horizontal";
81
+ const collapsedSize = typeof collapsedSizeProp === "number" ? `${collapsedSizeProp}px` : collapsedSizeProp;
82
+ const size = isHorizontal ? "width" : "height";
83
+ const getCollapseWrapperSize = (reactNode) => {
84
+ return new Promise((resolve) => {
85
+ var _a2;
86
+ const reactNodeChild = (_a2 = reactNode == null ? void 0 : reactNode.children) == null ? void 0 : _a2[0];
87
+ if (!reactNodeChild) {
88
+ resolve(FIT_CONTENT);
89
+ }
90
+ getBoundingClientRect(reactNodeChild).then((res) => {
91
+ if (!res) {
92
+ resolve(FIT_CONTENT);
93
+ setWrapperSize(FIT_CONTENT);
94
+ } else {
95
+ setWrapperSize(isHorizontal ? `${res == null ? void 0 : res.width}px` : `${res == null ? void 0 : res.height}px`);
96
+ }
97
+ });
98
+ });
99
+ };
100
+ useEffect(() => {
101
+ if (appear === false && inProp === true && wrapperSize === FIT_CONTENT) {
102
+ getCollapseWrapperSize(wrapperRef.current).then((res) => {
103
+ setWrapperSize(res);
104
+ });
105
+ }
106
+ }, [appear, inProp]);
107
+ if (!children)
108
+ return null;
109
+ return /* @__PURE__ */ React.createElement(
110
+ Transition,
111
+ __spreadProps(__spreadValues({}, other), {
112
+ in: inProp,
113
+ timeout,
114
+ delay,
115
+ appear
116
+ }),
117
+ (state, childProps) => {
118
+ var _a2;
119
+ const transition = transitions.create(
120
+ size,
121
+ getTransitionProps(
122
+ { timeout, style, easing: easingProp, delay },
123
+ { mode: state }
124
+ )
125
+ );
126
+ if (state === "entering" || state === "entered") {
127
+ getCollapseWrapperSize(wrapperRef.current).then(
128
+ (res = FIT_CONTENT) => {
129
+ setWrapperSize(res);
130
+ }
131
+ );
132
+ } else {
133
+ setWrapperSize(collapsedSize);
134
+ }
135
+ return React.createElement(
136
+ "div",
137
+ __spreadProps(__spreadValues({
138
+ className: `bui-collapse ${className || ""}`,
139
+ style: __spreadValues(__spreadProps(__spreadValues({}, style), {
140
+ transition,
141
+ WebkitTransition: transition
142
+ }), isHorizontal ? { width: wrapperSize, WebKitWidth: wrapperSize } : { height: wrapperSize, WebKitHeight: wrapperSize })
143
+ }, childProps), {
144
+ ref: collapseRef
145
+ }),
146
+ React.cloneElement(children, {
147
+ style: __spreadValues({}, (_a2 = children.props) == null ? void 0 : _a2.style)
148
+ })
149
+ );
150
+ }
151
+ );
152
+ });
153
+ Collapse.displayName = "BuiCollapse";
154
+ var Collapse_miniapp_default = Collapse;
155
+ export {
156
+ Collapse_miniapp_default as default
157
+ };
@@ -2,6 +2,8 @@
2
2
  --width: var(--bui-collapse-panel-width, 100%);
3
3
  --header-padding: var(--bui-collapse-panel-header-padding, var(--bui-spacing-lg) 0);
4
4
  --content-padding: var(--bui-collapse-panel-content-padding, var(--bui-spacing-lg) 0);
5
+ --title-font-size: var(--bui-collapse-panel-title-font-size, var(--bui-title-size-3));
6
+ --content-font-size: var(--bui-collapse-panel-content-font-size, var(--bui-text-size-1));
5
7
  width: var(--width);
6
8
  background-color: var(--bui-color-bg-view);
7
9
  color: var(--bui-color-fg-default);
@@ -15,7 +17,7 @@
15
17
  }
16
18
  .bui-collapse-panel-item-header-label {
17
19
  padding: var(--header-padding);
18
- font-size: var(--bui-title-size-2);
20
+ font-size: var(--title-font-size);
19
21
  }
20
22
  .bui-collapse-panel-item-header-icon-arrow {
21
23
  transform: rotate(0deg);
@@ -26,7 +28,7 @@
26
28
  }
27
29
  .bui-collapse-panel-item-content {
28
30
  padding: var(--content-padding);
29
- font-size: var(--bui-text-size-1);
31
+ font-size: var(--content-font-size);
30
32
  transition: height 0.5s ease;
31
33
  overflow: hidden;
32
34
  }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { DatePickerProps } from './DatePicker.types';
3
+ declare const DatePicker: React.ForwardRefExoticComponent<Omit<DatePickerProps<"div", Omit<import("../Picker").PickerProps<"div", import("..").DrawerProps>, "value" | "defaultValue" | "onChange" | "onClose" | "onConfirm">>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ export default DatePicker;
@@ -0,0 +1,308 @@
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 React, { forwardRef, useEffect, useState } from "react";
33
+ import clsx from "clsx";
34
+ import { useValue } from "@bifrostui/utils";
35
+ import Picker from "../Picker";
36
+ import { useLocaleText } from "../locales";
37
+ import { DatePickerType } from "./constants";
38
+ const MIN_DATE = new Date((/* @__PURE__ */ new Date()).getFullYear() - 10, 0, 1);
39
+ const MAX_DATE = new Date((/* @__PURE__ */ new Date()).getFullYear() + 10, 11, 31);
40
+ const DEFAULT_PICKER = [
41
+ DatePickerType.YEAR,
42
+ DatePickerType.MONTH,
43
+ DatePickerType.DAY
44
+ ];
45
+ function isValidDate(value) {
46
+ return value instanceof Date && !Number.isNaN(value.getTime());
47
+ }
48
+ const padZero = (num, targetLength = 2) => {
49
+ let str = `${num}`;
50
+ while (str.length < targetLength) {
51
+ str = `0${str}`;
52
+ }
53
+ return str;
54
+ };
55
+ const getMaxDay = (year, monthIndex) => {
56
+ return new Date(year, monthIndex + 1, 0).getDate();
57
+ };
58
+ const getDateTypeValue = (date, type) => {
59
+ switch (type) {
60
+ case DatePickerType.YEAR:
61
+ return date.getFullYear();
62
+ case DatePickerType.MONTH:
63
+ return date.getMonth() + 1;
64
+ case DatePickerType.DAY:
65
+ return date.getDate();
66
+ case DatePickerType.HOUR:
67
+ return date.getHours();
68
+ case DatePickerType.MINUTE:
69
+ return date.getMinutes();
70
+ case DatePickerType.SECOND:
71
+ return date.getSeconds();
72
+ default:
73
+ throw new Error(`\u9519\u8BEF\u7684picker\u7C7B\u578B\uFF1A${type}`);
74
+ }
75
+ };
76
+ const DatePicker = forwardRef((props, ref) => {
77
+ const _a = props, {
78
+ className,
79
+ value: propValue,
80
+ defaultValue,
81
+ views = DEFAULT_PICKER,
82
+ minDate: propMinDate = MIN_DATE,
83
+ maxDate: propMaxDate = MAX_DATE,
84
+ showUnit = false,
85
+ formatter,
86
+ filter,
87
+ disableDateTimeView,
88
+ dateTimeStep,
89
+ onConfirm,
90
+ onClose,
91
+ onChange
92
+ } = _a, others = __objRest(_a, [
93
+ "className",
94
+ "value",
95
+ "defaultValue",
96
+ "views",
97
+ "minDate",
98
+ "maxDate",
99
+ "showUnit",
100
+ "formatter",
101
+ "filter",
102
+ "disableDateTimeView",
103
+ "dateTimeStep",
104
+ "onConfirm",
105
+ "onClose",
106
+ "onChange"
107
+ ]);
108
+ const [options, setOptions] = useState([]);
109
+ const [pickerValue, setPickerValue] = useState([]);
110
+ const datePickerText = useLocaleText("datePicker");
111
+ const formatDate = (date) => {
112
+ let formattedDate = date;
113
+ if (!formattedDate || !isValidDate(date) || formattedDate.getTime() < propMinDate.getTime()) {
114
+ formattedDate = propMinDate;
115
+ }
116
+ if (formattedDate.getTime() > propMaxDate.getTime()) {
117
+ formattedDate = propMaxDate;
118
+ }
119
+ return formattedDate;
120
+ };
121
+ const [currentDate, triggerChange] = useValue({
122
+ value: propValue && formatDate(propValue),
123
+ defaultValue: formatDate(defaultValue)
124
+ });
125
+ const handleConfirm = (e) => {
126
+ onConfirm == null ? void 0 : onConfirm(e, { value: currentDate });
127
+ };
128
+ const handleClose = (e) => {
129
+ onClose == null ? void 0 : onClose(e, { value: currentDate });
130
+ };
131
+ const handleChange = (e, { value, columnIndex }) => {
132
+ if (value[columnIndex] === null)
133
+ return;
134
+ const current = new Date(currentDate);
135
+ switch (views[columnIndex]) {
136
+ case DatePickerType.YEAR:
137
+ current.setFullYear(value[columnIndex]);
138
+ break;
139
+ case DatePickerType.MONTH: {
140
+ const selectedMaxDay = getMaxDay(
141
+ current.getFullYear(),
142
+ Number(value[columnIndex]) - 1
143
+ );
144
+ if (current.getDate() > selectedMaxDay) {
145
+ current.setDate(selectedMaxDay);
146
+ }
147
+ current.setMonth(value[columnIndex] - 1);
148
+ break;
149
+ }
150
+ case DatePickerType.DAY:
151
+ current.setDate(value[columnIndex]);
152
+ break;
153
+ case DatePickerType.HOUR:
154
+ current.setHours(value[columnIndex]);
155
+ break;
156
+ case DatePickerType.MINUTE:
157
+ current.setMinutes(value[columnIndex]);
158
+ break;
159
+ case DatePickerType.SECOND:
160
+ current.setSeconds(value[columnIndex]);
161
+ break;
162
+ default:
163
+ throw new Error(`\u9519\u8BEF\u7684picker\u7C7B\u578B\uFF1A${views[columnIndex]}`);
164
+ }
165
+ triggerChange(e, formatDate(current));
166
+ onChange == null ? void 0 : onChange(e, { type: views[columnIndex], value: current });
167
+ };
168
+ const formatOption = (type, value) => {
169
+ let label = padZero(value);
170
+ if (formatter) {
171
+ return formatter(type, {
172
+ value,
173
+ label
174
+ });
175
+ }
176
+ if (showUnit) {
177
+ label += datePickerText[type];
178
+ }
179
+ return { value, label };
180
+ };
181
+ const generateOptions = (min, max, type, columnIndex) => {
182
+ const step = (dateTimeStep == null ? void 0 : dateTimeStep[type]) || 1;
183
+ let valueIndex = 0;
184
+ const optionsArray = Array.from(
185
+ { length: (max - min + 1) / step || 1 },
186
+ (_, index) => {
187
+ const value = index * step + min;
188
+ if (value <= getDateTypeValue(currentDate, type)) {
189
+ valueIndex = index;
190
+ }
191
+ return formatOption(type, value);
192
+ }
193
+ );
194
+ pickerValue[columnIndex] = optionsArray[valueIndex].value;
195
+ setPickerValue([...pickerValue]);
196
+ if ((disableDateTimeView == null ? void 0 : disableDateTimeView[type]) && typeof disableDateTimeView[type] === "function") {
197
+ const disabledOptionsValue = disableDateTimeView[type](
198
+ optionsArray.map((i) => i.value)
199
+ );
200
+ return optionsArray.map((option) => {
201
+ if (disabledOptionsValue.includes(option.value)) {
202
+ return __spreadProps(__spreadValues({}, option), {
203
+ disabled: true
204
+ });
205
+ }
206
+ return option;
207
+ });
208
+ }
209
+ if (filter) {
210
+ return filter(type, optionsArray);
211
+ }
212
+ return optionsArray;
213
+ };
214
+ const getBoundary = (type, value) => {
215
+ const boundary = type === "min" ? propMinDate : propMaxDate;
216
+ const year = boundary.getFullYear();
217
+ let month = 1;
218
+ let date = 1;
219
+ let hour = 0;
220
+ let minute = 0;
221
+ let seconds = 0;
222
+ if (type === "max") {
223
+ month = 12;
224
+ date = getMaxDay(value.getFullYear(), value.getMonth());
225
+ hour = 23;
226
+ minute = 59;
227
+ seconds = 59;
228
+ }
229
+ if (value.getFullYear() === year) {
230
+ month = boundary.getMonth() + 1;
231
+ if (value.getMonth() + 1 === month) {
232
+ date = boundary.getDate();
233
+ if (value.getDate() === date) {
234
+ hour = boundary.getHours();
235
+ if (value.getHours() === hour) {
236
+ minute = boundary.getMinutes();
237
+ if (value.getMinutes() === minute) {
238
+ seconds = boundary.getSeconds();
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+ return {
245
+ [`${type}Year`]: year,
246
+ [`${type}Month`]: month,
247
+ [`${type}Date`]: date,
248
+ [`${type}Hour`]: hour,
249
+ [`${type}Minute`]: minute,
250
+ [`${type}Seconds`]: seconds
251
+ };
252
+ };
253
+ const generateRanges = () => {
254
+ const ranges = [];
255
+ const { minYear, minMonth, minDate, minHour, minMinute, minSeconds } = getBoundary("min", currentDate);
256
+ const { maxYear, maxMonth, maxDate, maxHour, maxMinute, maxSeconds } = getBoundary("max", currentDate);
257
+ for (let i = 0; i < views.length; i += 1) {
258
+ const type = views[i];
259
+ switch (type) {
260
+ case DatePickerType.YEAR:
261
+ ranges.push([minYear, maxYear]);
262
+ break;
263
+ case DatePickerType.MONTH:
264
+ ranges.push([minMonth, maxMonth]);
265
+ break;
266
+ case DatePickerType.DAY:
267
+ ranges.push([minDate, maxDate]);
268
+ break;
269
+ case DatePickerType.HOUR:
270
+ ranges.push([minHour, maxHour]);
271
+ break;
272
+ case DatePickerType.MINUTE:
273
+ ranges.push([minMinute, maxMinute]);
274
+ break;
275
+ case DatePickerType.SECOND:
276
+ ranges.push([minSeconds, maxSeconds]);
277
+ break;
278
+ default:
279
+ throw new Error(`\u9519\u8BEF\u7684picker\u7C7B\u578B\uFF1A${type}`);
280
+ }
281
+ }
282
+ return ranges;
283
+ };
284
+ const generateRangeOptions = () => generateRanges().map(
285
+ (range, index) => generateOptions(range[0], range[1], views[index], index)
286
+ );
287
+ useEffect(() => {
288
+ setOptions(generateRangeOptions());
289
+ }, [currentDate, views, propMinDate, propMaxDate]);
290
+ return /* @__PURE__ */ React.createElement(
291
+ Picker,
292
+ __spreadProps(__spreadValues({}, others), {
293
+ "data-selected": currentDate ? currentDate.getTime() : "",
294
+ className: clsx("bui-date-picker", className),
295
+ ref,
296
+ options,
297
+ value: pickerValue,
298
+ onConfirm: handleConfirm,
299
+ onClose: handleClose,
300
+ onOptionChange: handleChange
301
+ })
302
+ );
303
+ });
304
+ DatePicker.displayName = "BuiDatePicker";
305
+ var DatePicker_default = DatePicker;
306
+ export {
307
+ DatePicker_default as default
308
+ };
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { OverrideProps } from '@bifrostui/types';
3
+ import { PickerProps, IPickerOptionItem } from '../Picker';
4
+ import { DatePickerType } from './constants';
5
+ export type DatePickerOption = IPickerOptionItem & {
6
+ value: number;
7
+ };
8
+ export type DatePickerProps<D extends React.ElementType = 'div', P = Omit<PickerProps, 'value' | 'defaultValue' | 'onChange' | 'onConfirm' | 'onClose'>> = OverrideProps<{
9
+ props: P & {
10
+ defaultValue?: Date;
11
+ value?: Date;
12
+ views?: DatePickerType[];
13
+ minDate?: Date;
14
+ maxDate?: Date;
15
+ showUnit?: boolean;
16
+ disableDateTimeView?: Partial<{
17
+ [key in DatePickerType]: (options: number[]) => number[];
18
+ }>;
19
+ dateTimeStep?: Partial<{
20
+ [key in DatePickerType]: number;
21
+ }>;
22
+ formatter?: (type: DatePickerType, option: DatePickerOption) => DatePickerOption;
23
+ filter?: (type: DatePickerType, options: DatePickerOption[]) => DatePickerOption[];
24
+ onConfirm?: (e: React.SyntheticEvent, { value }: {
25
+ value: Date;
26
+ }) => void;
27
+ onClose?: (e: React.SyntheticEvent, { value }: {
28
+ value: Date;
29
+ }) => void;
30
+ onChange?: (e: React.SyntheticEvent, { value }: {
31
+ type: DatePickerType;
32
+ value: Date;
33
+ }) => void;
34
+ };
35
+ defaultComponent: D;
36
+ }, D>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export declare enum DatePickerType {
2
+ YEAR = "year",
3
+ MONTH = "month",
4
+ DAY = "day",
5
+ HOUR = "hour",
6
+ MINUTE = "minute",
7
+ SECOND = "second"
8
+ }
9
+ export default DatePickerType;
@@ -0,0 +1,14 @@
1
+ var DatePickerType = /* @__PURE__ */ ((DatePickerType2) => {
2
+ DatePickerType2["YEAR"] = "year";
3
+ DatePickerType2["MONTH"] = "month";
4
+ DatePickerType2["DAY"] = "day";
5
+ DatePickerType2["HOUR"] = "hour";
6
+ DatePickerType2["MINUTE"] = "minute";
7
+ DatePickerType2["SECOND"] = "second";
8
+ return DatePickerType2;
9
+ })(DatePickerType || {});
10
+ var constants_default = DatePickerType;
11
+ export {
12
+ DatePickerType,
13
+ constants_default as default
14
+ };
@@ -0,0 +1,3 @@
1
+ export { default, default as DatePicker } from './DatePicker';
2
+ export * from './DatePicker.types';
3
+ export { DatePickerType } from './constants';
@@ -0,0 +1,8 @@
1
+ import { default as default2, default as default3 } from "./DatePicker";
2
+ export * from "./DatePicker.types";
3
+ import { DatePickerType } from "./constants";
4
+ export {
5
+ default3 as DatePicker,
6
+ DatePickerType,
7
+ default2 as default
8
+ };
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { DesktopDatePickerProps } from './DesktopDatePicker.types';
3
+ import './index.less';
4
+ declare const DesktopDatePicker: React.ForwardRefExoticComponent<Omit<DesktopDatePickerProps<"div", {}>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ export default DesktopDatePicker;