@bifrostui/react 1.2.9-beta.0 → 1.3.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 (57) hide show
  1. package/dist/Calendar/Calendar.js +48 -2
  2. package/dist/Calendar/Calendar.types.d.ts +12 -0
  3. package/dist/Countdown/Countdown.js +3 -0
  4. package/dist/Dialog/Dialog.d.ts +5 -0
  5. package/dist/Dialog/Dialog.js +140 -0
  6. package/dist/Dialog/Dialog.types.d.ts +98 -0
  7. package/dist/Dialog/Dialog.types.js +15 -0
  8. package/dist/Dialog/FunctionalDialog.d.ts +3 -0
  9. package/dist/Dialog/FunctionalDialog.js +168 -0
  10. package/dist/Dialog/index.css +66 -0
  11. package/dist/Dialog/index.d.ts +2 -0
  12. package/dist/Dialog/index.js +41 -0
  13. package/dist/Modal/Modal.miniapp.d.ts +1 -1
  14. package/dist/Radio/Radio.js +1 -1
  15. package/dist/Radio/RadioButtonIcon.d.ts +1 -6
  16. package/dist/Radio/RadioButtonIcon.js +0 -3
  17. package/dist/Toast/FunctionalToast.d.ts +3 -0
  18. package/dist/Toast/FunctionalToast.js +159 -0
  19. package/dist/Toast/Toast.css +55 -0
  20. package/dist/Toast/Toast.d.ts +5 -0
  21. package/dist/Toast/Toast.js +117 -0
  22. package/dist/Toast/Toast.types.d.ts +87 -0
  23. package/dist/Toast/Toast.types.js +15 -0
  24. package/dist/Toast/index.d.ts +2 -0
  25. package/dist/Toast/index.js +41 -0
  26. package/dist/Transition/Transition.miniapp.js +7 -1
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.js +5 -1
  29. package/es/Calendar/Calendar.js +54 -3
  30. package/es/Calendar/Calendar.types.d.ts +12 -0
  31. package/es/Countdown/Countdown.js +3 -0
  32. package/es/Dialog/Dialog.d.ts +5 -0
  33. package/es/Dialog/Dialog.js +113 -0
  34. package/es/Dialog/Dialog.types.d.ts +98 -0
  35. package/es/Dialog/Dialog.types.js +1 -0
  36. package/es/Dialog/FunctionalDialog.d.ts +3 -0
  37. package/es/Dialog/FunctionalDialog.js +141 -0
  38. package/es/Dialog/index.css +66 -0
  39. package/es/Dialog/index.d.ts +2 -0
  40. package/es/Dialog/index.js +6 -0
  41. package/es/Modal/Modal.miniapp.d.ts +1 -1
  42. package/es/Radio/Radio.js +1 -1
  43. package/es/Radio/RadioButtonIcon.d.ts +1 -6
  44. package/es/Radio/RadioButtonIcon.js +0 -3
  45. package/es/Toast/FunctionalToast.d.ts +3 -0
  46. package/es/Toast/FunctionalToast.js +132 -0
  47. package/es/Toast/Toast.css +55 -0
  48. package/es/Toast/Toast.d.ts +5 -0
  49. package/es/Toast/Toast.js +95 -0
  50. package/es/Toast/Toast.types.d.ts +87 -0
  51. package/es/Toast/Toast.types.js +1 -0
  52. package/es/Toast/index.d.ts +2 -0
  53. package/es/Toast/index.js +6 -0
  54. package/es/Transition/Transition.miniapp.js +7 -1
  55. package/es/index.d.ts +2 -0
  56. package/es/index.js +2 -0
  57. package/package.json +5 -5
@@ -0,0 +1,132 @@
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 { render, unmount, getRootElement } from "@bifrostui/utils";
33
+ import React, { useCallback, useEffect, useState } from "react";
34
+ import ToastView from "./Toast";
35
+ const toastCloses = [];
36
+ const formatProps = (props) => {
37
+ if (typeof props === "string") {
38
+ return { message: props };
39
+ }
40
+ return props;
41
+ };
42
+ const destroyAll = () => {
43
+ let closeToast = toastCloses.pop();
44
+ while (closeToast) {
45
+ closeToast();
46
+ closeToast = toastCloses.pop();
47
+ }
48
+ };
49
+ const functionalToast = (props) => {
50
+ const options = __spreadValues({
51
+ duration: 2e3,
52
+ position: "center",
53
+ allowMultiple: false,
54
+ disableClick: false
55
+ }, formatProps(props));
56
+ const instance = {
57
+ close: () => null
58
+ };
59
+ const rootWrapper = document.createElement("div");
60
+ if (options.disableClick) {
61
+ const styles = {
62
+ position: "fixed",
63
+ top: "0",
64
+ bottom: "0",
65
+ left: "0",
66
+ right: "0",
67
+ zIndex: "var(--bui-z-index-toast)"
68
+ };
69
+ Object.keys(styles).forEach((property) => {
70
+ rootWrapper.style[property] = styles[property];
71
+ });
72
+ }
73
+ const rootElement = getRootElement();
74
+ rootElement.appendChild(rootWrapper);
75
+ const ToastComponent = () => {
76
+ const _a = options, { duration, allowMultiple, onClose } = _a, others = __objRest(_a, ["duration", "allowMultiple", "onClose"]);
77
+ const [open, setOpen] = useState(false);
78
+ let timer;
79
+ const fadeTimeout = {
80
+ enter: 350,
81
+ exit: 150
82
+ };
83
+ const close = useCallback(() => {
84
+ setOpen(false);
85
+ setTimeout(() => {
86
+ const unmountRes = unmount(rootWrapper);
87
+ if (unmountRes && rootWrapper.parentNode) {
88
+ rootWrapper.parentNode.removeChild(rootWrapper);
89
+ }
90
+ }, fadeTimeout.exit);
91
+ onClose == null ? void 0 : onClose();
92
+ }, [rootWrapper]);
93
+ useEffect(() => {
94
+ setOpen(true);
95
+ if (!allowMultiple)
96
+ destroyAll();
97
+ toastCloses.push(close);
98
+ if (duration !== 0 && typeof duration === "number") {
99
+ timer = setTimeout(close, duration);
100
+ }
101
+ return () => {
102
+ clearTimeout(timer);
103
+ };
104
+ }, []);
105
+ instance.close = close;
106
+ return /* @__PURE__ */ React.createElement(
107
+ ToastView,
108
+ __spreadProps(__spreadValues({}, others), {
109
+ open,
110
+ timeout: fadeTimeout,
111
+ onClose: close
112
+ })
113
+ );
114
+ };
115
+ render(/* @__PURE__ */ React.createElement(ToastComponent, null), rootWrapper);
116
+ return instance;
117
+ };
118
+ ["warning", "loading", "success", "fail"].forEach((methodName) => {
119
+ functionalToast[methodName] = (options) => functionalToast(__spreadValues({
120
+ type: methodName
121
+ }, formatProps(options)));
122
+ });
123
+ functionalToast.clear = () => {
124
+ setTimeout(() => {
125
+ destroyAll();
126
+ });
127
+ };
128
+ const Toast = functionalToast;
129
+ var FunctionalToast_default = Toast;
130
+ export {
131
+ FunctionalToast_default as default
132
+ };
@@ -0,0 +1,55 @@
1
+ .bui-toast {
2
+ --min-width: 86px;
3
+ --max-width: 80%;
4
+ --font-size: var(--bui-text-size-1);
5
+ --color: var(--bui-color-white);
6
+ --padding: var(--bui-spacing-xl);
7
+ --word-break: break-all;
8
+ --z-index: var(--bui-z-index-toast);
9
+ --position-top: 15%;
10
+ --position-bottom: 85%;
11
+ --background-color: rgba(0, 0, 0, 0.8);
12
+ --border-radius: var(--bui-shape-radius-default);
13
+ --text-align: center;
14
+ position: fixed;
15
+ left: 50%;
16
+ z-index: var(--z-index);
17
+ width: fit-content;
18
+ min-width: var(--min-width);
19
+ max-width: var(--max-width);
20
+ padding: var(--padding);
21
+ font-size: var(--font-size);
22
+ color: var(--color);
23
+ border-radius: var(--border-radius);
24
+ word-break: var(--word-break);
25
+ white-space: pre-wrap;
26
+ background-color: var(--background-color);
27
+ text-align: var(--text-align);
28
+ font-family: var(--bui-font-family);
29
+ }
30
+ .bui-toast.bui-toast-allow-click {
31
+ position: fixed;
32
+ right: unset;
33
+ bottom: unset;
34
+ }
35
+ .bui-toast-center {
36
+ top: 50%;
37
+ transform: translate(-50%, -50%);
38
+ }
39
+ .bui-toast-top {
40
+ top: var(--position-top);
41
+ transform: translate(-50%, calc(-1 * var(--position-top)));
42
+ }
43
+ .bui-toast-bottom {
44
+ top: var(--position-bottom);
45
+ transform: translate(-50%, calc(-1 * var(--position-bottom)));
46
+ }
47
+ .bui-toast-icon {
48
+ display: flex;
49
+ flex-direction: column;
50
+ align-items: center;
51
+ }
52
+ .bui-toast-icon .bui-svg-icon {
53
+ margin-bottom: 8px;
54
+ font-size: 30px;
55
+ }
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { ToastProps } from './Toast.types';
3
+ import './Toast.less';
4
+ declare const ToastComponent: React.ForwardRefExoticComponent<ToastProps & React.RefAttributes<HTMLDivElement>>;
5
+ export default ToastComponent;
@@ -0,0 +1,95 @@
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 clsx from "clsx";
33
+ import React from "react";
34
+ import {
35
+ ErrorCircleFilledBoldIcon,
36
+ AccessTimeCircleFilledBoldIcon,
37
+ AlertCircleFilledBoldIcon,
38
+ SuccessCircleFilledBoldIcon
39
+ } from "@bifrostui/icons";
40
+ import Fade from "../Fade";
41
+ import "./Toast.css";
42
+ const prefixCls = "bui-toast";
43
+ const ToastComponent = /* @__PURE__ */ React.forwardRef(
44
+ (props, ref) => {
45
+ const _a = props, {
46
+ className,
47
+ style,
48
+ open,
49
+ type,
50
+ icon,
51
+ message,
52
+ position = "center",
53
+ disableClick = false
54
+ } = _a, others = __objRest(_a, [
55
+ "className",
56
+ "style",
57
+ "open",
58
+ "type",
59
+ "icon",
60
+ "message",
61
+ "position",
62
+ "disableClick"
63
+ ]);
64
+ const iconMap = {
65
+ fail: /* @__PURE__ */ React.createElement(ErrorCircleFilledBoldIcon, { htmlColor: "#ffffff" }),
66
+ loading: /* @__PURE__ */ React.createElement(AccessTimeCircleFilledBoldIcon, { htmlColor: "#ffffff" }),
67
+ warning: /* @__PURE__ */ React.createElement(AlertCircleFilledBoldIcon, { htmlColor: "#ffffff" }),
68
+ success: /* @__PURE__ */ React.createElement(SuccessCircleFilledBoldIcon, { htmlColor: "#ffffff" })
69
+ };
70
+ const iconDom = iconMap[type] || icon;
71
+ return /* @__PURE__ */ React.createElement(Fade, __spreadProps(__spreadValues({}, others), { in: open, appear: false, unmountOnExit: true }), /* @__PURE__ */ React.createElement(
72
+ "div",
73
+ {
74
+ className: clsx(
75
+ prefixCls,
76
+ `${prefixCls}-${position}`,
77
+ {
78
+ [`${prefixCls}-icon`]: !!iconDom,
79
+ [`${prefixCls}-allow-click`]: !disableClick
80
+ },
81
+ className
82
+ ),
83
+ ref,
84
+ style
85
+ },
86
+ iconDom,
87
+ message
88
+ ));
89
+ }
90
+ );
91
+ ToastComponent.displayName = "BuiToast";
92
+ var Toast_default = ToastComponent;
93
+ export {
94
+ Toast_default as default
95
+ };
@@ -0,0 +1,87 @@
1
+ import React from 'react';
2
+ import { FadeProps } from '../Fade/Fade.types';
3
+ /**
4
+ * 提示类型
5
+ */
6
+ export type ToastType = 'loading' | 'success' | 'fail' | 'warning';
7
+ export interface ToastProps extends FadeProps {
8
+ /**
9
+ * 是否展示
10
+ */
11
+ open?: boolean;
12
+ /**
13
+ * 提示类型
14
+ */
15
+ type?: ToastType;
16
+ /**
17
+ * toast内容,支持使用`\n`换行
18
+ */
19
+ message?: string;
20
+ /**
21
+ * 展示时长(ms),值为 0 时,toast 不会消失
22
+ * @default 2000
23
+ */
24
+ duration?: number;
25
+ /**
26
+ * 展示位置
27
+ * @default center
28
+ */
29
+ position?: 'top' | 'center' | 'bottom';
30
+ /**
31
+ * 是否允许同时存在多个Toast
32
+ * @default false
33
+ */
34
+ allowMultiple?: boolean;
35
+ /**
36
+ * 自定义图标
37
+ */
38
+ icon?: React.ReactNode;
39
+ /**
40
+ * 展示Toast时,页面内容是否可以点击
41
+ * @default false
42
+ */
43
+ disableClick?: boolean;
44
+ /**
45
+ * 关闭时的回调函数
46
+ */
47
+ onClose?: () => void;
48
+ }
49
+ /**
50
+ * 函数式调用配置参数
51
+ */
52
+ export type ToastOptions = Omit<ToastProps, 'type' | 'open'> | string;
53
+ /**
54
+ * 函数式调用返回值类型
55
+ */
56
+ export type ToastReturnType = {
57
+ /**
58
+ * 关闭当前提示
59
+ */
60
+ close: () => void;
61
+ };
62
+ /**
63
+ * Toast Instance
64
+ */
65
+ export interface ToastInstance {
66
+ (options: ToastOptions): ToastReturnType;
67
+ /**
68
+ * 警告提示
69
+ */
70
+ warning: (options: ToastOptions) => ToastReturnType;
71
+ /**
72
+ * 加载提示
73
+ */
74
+ loading: (options: ToastOptions) => ToastReturnType;
75
+ /**
76
+ * 成功提示
77
+ */
78
+ success: (options: ToastOptions) => ToastReturnType;
79
+ /**
80
+ * 失败提示
81
+ */
82
+ fail: (options: ToastOptions) => ToastReturnType;
83
+ /**
84
+ * 清空提示
85
+ */
86
+ clear: () => void;
87
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export { default, default as Toast } from './FunctionalToast';
2
+ export * from './Toast.types';
@@ -0,0 +1,6 @@
1
+ import { default as default2, default as default3 } from "./FunctionalToast";
2
+ export * from "./Toast.types";
3
+ export {
4
+ default3 as Toast,
5
+ default2 as default
6
+ };
@@ -22,7 +22,13 @@ import React from "react";
22
22
  import TransitionCore from "./TransitionCore";
23
23
  const Transition = /* @__PURE__ */ React.forwardRef(
24
24
  (props, ref) => {
25
- return /* @__PURE__ */ React.createElement(TransitionCore, __spreadProps(__spreadValues({}, props), { nextTick: Taro.nextTick, ref }));
25
+ return /* @__PURE__ */ React.createElement(
26
+ TransitionCore,
27
+ __spreadProps(__spreadValues({}, props), {
28
+ nextTick: (cb) => setTimeout(() => Taro.nextTick(cb), 16),
29
+ ref
30
+ })
31
+ );
26
32
  }
27
33
  );
28
34
  Transition.displayName = "BuiTransition";
package/es/index.d.ts CHANGED
@@ -38,3 +38,5 @@ export * from './TabBar';
38
38
  export * from './Countdown';
39
39
  export * from './CitySelector';
40
40
  export * from './Picker';
41
+ export * from './Toast';
42
+ export * from './Dialog';
package/es/index.js CHANGED
@@ -38,3 +38,5 @@ export * from "./TabBar";
38
38
  export * from "./Countdown";
39
39
  export * from "./CitySelector";
40
40
  export * from "./Picker";
41
+ export * from "./Toast";
42
+ export * from "./Dialog";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bifrostui/react",
3
- "version": "1.2.9-beta.0",
3
+ "version": "1.3.0",
4
4
  "description": "React components for building mobile application",
5
5
  "homepage": "http://bui.taopiaopiao.com",
6
6
  "license": "MIT",
@@ -33,10 +33,10 @@
33
33
  "clsx": "^1.2.1",
34
34
  "dayjs": "^1.11.7",
35
35
  "swiper": "^8.1.5",
36
- "@bifrostui/icons": "1.2.9-beta.0",
37
- "@bifrostui/types": "1.2.9-beta.0",
38
- "@bifrostui/utils": "1.2.9-beta.0",
39
- "@bifrostui/styles": "1.2.9-beta.0"
36
+ "@bifrostui/styles": "1.3.0",
37
+ "@bifrostui/types": "1.3.0",
38
+ "@bifrostui/utils": "1.3.0",
39
+ "@bifrostui/icons": "1.3.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "@tarojs/components": "^3.0.0",