@bifrostui/react 2.0.0-alpha.3 → 2.0.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/CitySelector/CitySelector.types.d.ts +0 -1
- package/dist/ItemSelector/ItemSelector.types.d.ts +0 -1
- package/dist/Portal/Portal.miniapp.js +14 -8
- package/dist/ScrollView/ScrollView.types.d.ts +209 -0
- package/dist/Select/selectContext.d.ts +0 -1
- package/dist/SwipeAction/SwipeActionContext.d.ts +0 -1
- package/es/CitySelector/CitySelector.types.d.ts +0 -1
- package/es/DatePicker/DatePicker.d.ts +1 -1
- package/es/ItemSelector/ItemSelector.types.d.ts +0 -1
- package/es/Modal/Modal.miniapp.d.ts +1 -1
- package/es/Portal/Portal.miniapp.js +15 -9
- package/es/ScrollView/ScrollView.types.d.ts +209 -0
- package/es/Select/selectContext.d.ts +0 -1
- package/es/SwipeAction/SwipeActionContext.d.ts +0 -1
- package/package.json +16 -26
- package/src/index.ts +0 -58
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Alibaba
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -54,14 +54,20 @@ var import_PortalCore = __toESM(require("./PortalCore"));
|
|
|
54
54
|
const Portal = (0, import_react.forwardRef)((props, ref) => {
|
|
55
55
|
const { disablePortal } = props;
|
|
56
56
|
const [rootWrapperElement, setRootWrapperElement] = (0, import_react.useState)();
|
|
57
|
-
(0, import_react.
|
|
57
|
+
const initialPageInfo = (0, import_react.useMemo)(() => {
|
|
58
|
+
const currentPages = import_taro.default.getCurrentPages() || [];
|
|
59
|
+
const currentPage = currentPages[currentPages.length - 1];
|
|
60
|
+
return {
|
|
61
|
+
path: currentPage == null ? void 0 : currentPage.$taroPath
|
|
62
|
+
};
|
|
63
|
+
}, []);
|
|
64
|
+
(0, import_react.useLayoutEffect)(() => {
|
|
58
65
|
let root;
|
|
59
|
-
if (!disablePortal) {
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const portalId = (rootElement == null ? void 0 : rootElement.sid) ? `${rootElement == null ? void 0 : rootElement.sid}_portalId` : `${pageElement}_portalId`;
|
|
66
|
+
if (!disablePortal && initialPageInfo.path) {
|
|
67
|
+
const { path } = initialPageInfo;
|
|
68
|
+
const rootElement = document.getElementById(path);
|
|
69
|
+
const elementWithSid = rootElement;
|
|
70
|
+
const portalId = (elementWithSid == null ? void 0 : elementWithSid.sid) ? `${elementWithSid.sid}_portalId` : `${path}_portalId`;
|
|
65
71
|
const portalWrapperElement = document.getElementById(portalId);
|
|
66
72
|
if (!portalWrapperElement) {
|
|
67
73
|
const view = document.createElement("view");
|
|
@@ -73,7 +79,7 @@ const Portal = (0, import_react.forwardRef)((props, ref) => {
|
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
setRootWrapperElement(root);
|
|
76
|
-
}, []);
|
|
82
|
+
}, [disablePortal, initialPageInfo.path]);
|
|
77
83
|
return /* @__PURE__ */ import_react.default.createElement(import_PortalCore.default, __spreadProps(__spreadValues({}, props), { ref, rootElement: rootWrapperElement }));
|
|
78
84
|
});
|
|
79
85
|
Portal.displayName = "BuiPortal";
|
|
@@ -9,6 +9,22 @@ export interface ScrollViewScrollEvent extends Event {
|
|
|
9
9
|
scrollTop: number;
|
|
10
10
|
scrollHeight: number;
|
|
11
11
|
scrollWidth: number;
|
|
12
|
+
deltaX?: number;
|
|
13
|
+
deltaY?: number;
|
|
14
|
+
isDrag?: boolean;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 拖拽事件详情
|
|
19
|
+
*/
|
|
20
|
+
export interface ScrollViewDragEvent extends Event {
|
|
21
|
+
detail?: {
|
|
22
|
+
/** 横向滚动条位置 */
|
|
23
|
+
scrollLeft?: number;
|
|
24
|
+
/** 竖向滚动条位置 */
|
|
25
|
+
scrollTop?: number;
|
|
26
|
+
/** 滚动速度 */
|
|
27
|
+
velocity?: number;
|
|
12
28
|
};
|
|
13
29
|
}
|
|
14
30
|
/**
|
|
@@ -52,6 +68,134 @@ export type ScrollViewProps<D extends React.ElementType = 'div', P = {}> = Overr
|
|
|
52
68
|
* @default false
|
|
53
69
|
*/
|
|
54
70
|
scrollWithAnimation?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* 当 scroll-with-animation设置为 true 时,可以设置 scroll-animation-duration 来控制动画的执行时间,单位 ms。
|
|
73
|
+
*/
|
|
74
|
+
scrollAnimationDuration?: number;
|
|
75
|
+
/**
|
|
76
|
+
* 滚动条返回顶部,只支持竖向
|
|
77
|
+
* 仅小程序可用
|
|
78
|
+
* @default false
|
|
79
|
+
*/
|
|
80
|
+
enableBackToTop?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* 启用 flexbox 布局。开启后,当前节点声明了 `display: flex` 就会成为 flex container,并作用于其孩子节点。
|
|
83
|
+
* 仅小程序可用
|
|
84
|
+
* @default false
|
|
85
|
+
*/
|
|
86
|
+
enableFlex?: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* 开启 scroll anchoring 特性,即控制滚动位置不随内容变化而抖动,仅在 iOS 下生效,安卓下可参考 CSS `overflow-anchor` 属性。
|
|
89
|
+
* 仅小程序可用
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
scrollAnchoring?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* 启用 scroll-view 增强特性
|
|
95
|
+
* 仅小程序可用
|
|
96
|
+
* @default false
|
|
97
|
+
*/
|
|
98
|
+
enhanced?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* iOS 下 scroll-view 边界弹性控制 (同时开启 enhanced 属性后生效)
|
|
101
|
+
* 仅小程序可用
|
|
102
|
+
* @default true
|
|
103
|
+
*/
|
|
104
|
+
bounces?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* 滚动条显隐控制 (同时开启 enhanced 属性后生效)
|
|
107
|
+
* 仅小程序可用
|
|
108
|
+
* @default true
|
|
109
|
+
*/
|
|
110
|
+
showScrollbar?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* 分页滑动效果 (同时开启 enhanced 属性后生效)
|
|
113
|
+
* 仅小程序可用
|
|
114
|
+
* @default false
|
|
115
|
+
*/
|
|
116
|
+
pagingEnabled?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* 滑动减速速率控制 (同时开启 enhanced 属性后生效)
|
|
119
|
+
* 仅小程序可用
|
|
120
|
+
* @default false
|
|
121
|
+
*/
|
|
122
|
+
fastDeceleration?: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* 纵向滚动时,当滚动到顶部或底部时,强制禁止触发页面滚动,仍然只触发 scroll-view 自身的滚动。
|
|
125
|
+
* 仅小程序可用
|
|
126
|
+
* @default false
|
|
127
|
+
*/
|
|
128
|
+
trapScroll?: string;
|
|
129
|
+
/**
|
|
130
|
+
* 发生滚动前,对滚动方向进行判断,当方向是顶部/左边时,如果值为always将始终禁止滚动,如果值为out-of-bounds 且当前已经滚动到顶部/左边,禁止滚动。
|
|
131
|
+
* 仅小程序可用
|
|
132
|
+
*/
|
|
133
|
+
disableLowerScroll?: string;
|
|
134
|
+
/**
|
|
135
|
+
* 发生滚动前,对滚动方向进行判断,当方向是底部/右边时,如果值为always将始终禁止滚动,如果值为out-of-bounds 且当前已经滚动到底部/右边,禁止滚动。
|
|
136
|
+
* 仅小程序可用
|
|
137
|
+
*/
|
|
138
|
+
disableUpperScroll?: string;
|
|
139
|
+
/**
|
|
140
|
+
* 无障碍访问,(属性)元素的额外描述
|
|
141
|
+
* 仅小程序可用
|
|
142
|
+
*/
|
|
143
|
+
ariaLabel?: string;
|
|
144
|
+
/**
|
|
145
|
+
* 开启 passive 特性,能优化一定的滚动性能
|
|
146
|
+
* 仅小程序可用
|
|
147
|
+
* @default false
|
|
148
|
+
*/
|
|
149
|
+
enablePassive?: string;
|
|
150
|
+
/**
|
|
151
|
+
* 渲染模式
|
|
152
|
+
* list - 列表模式。只会渲染在屏节点,会根据直接子节点是否在屏来按需渲染,若只有一个直接子节点则性能会退化
|
|
153
|
+
* custom - 自定义模式。只会渲染在屏节点,子节点可以是 sticky-section list-view grid-view 等组件
|
|
154
|
+
* 仅小程序可用
|
|
155
|
+
* @default 'list'
|
|
156
|
+
*/
|
|
157
|
+
type?: 'list' | 'custom';
|
|
158
|
+
/**
|
|
159
|
+
* 是否反向滚动。一般初始滚动位置是在顶部,反向滚动则是在底部。
|
|
160
|
+
* 仅小程序可用
|
|
161
|
+
* @default false
|
|
162
|
+
*/
|
|
163
|
+
reverse?: boolean;
|
|
164
|
+
/**
|
|
165
|
+
* 指定视口外渲染区域的距离,默认情况下视口外节点不渲染。指定 cache-extent 可优化滚动体验和加载速度,但会提高内存占用且影响首屏速度,可按需启用。
|
|
166
|
+
* 仅小程序可用
|
|
167
|
+
*/
|
|
168
|
+
cacheExtent?: number;
|
|
169
|
+
/**
|
|
170
|
+
* 只 scroll-into-view 到 cacheExtent 以内的目标节点,性能更佳
|
|
171
|
+
* 仅小程序可用
|
|
172
|
+
* @default false
|
|
173
|
+
*/
|
|
174
|
+
scrollIntoViewWithinExtent?: boolean;
|
|
175
|
+
/**
|
|
176
|
+
* 开启自定义下拉刷新
|
|
177
|
+
* 仅小程序可用
|
|
178
|
+
* @default false
|
|
179
|
+
*/
|
|
180
|
+
refresherEnabled?: boolean;
|
|
181
|
+
/**
|
|
182
|
+
* 设置自定义下拉刷新默认样式,支持设置 `black | white | none`, none 表示不使用默认样式
|
|
183
|
+
* 仅小程序可用
|
|
184
|
+
* @default 'black'
|
|
185
|
+
*/
|
|
186
|
+
refresherDefaultStyle?: string;
|
|
187
|
+
/**
|
|
188
|
+
* 设置自定义下拉刷新区域背景颜色
|
|
189
|
+
* 仅小程序可用
|
|
190
|
+
* @default '#FFF'
|
|
191
|
+
*/
|
|
192
|
+
refresherBackground?: string;
|
|
193
|
+
/**
|
|
194
|
+
* 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发
|
|
195
|
+
* 仅小程序可用
|
|
196
|
+
* @default false
|
|
197
|
+
*/
|
|
198
|
+
refresherTriggered?: boolean;
|
|
55
199
|
/**
|
|
56
200
|
* 距顶部/左边多远时(单位px),触发 onScrollToUpper 事件
|
|
57
201
|
* @default 50
|
|
@@ -78,6 +222,71 @@ export type ScrollViewProps<D extends React.ElementType = 'div', P = {}> = Overr
|
|
|
78
222
|
* 触摸移动时触发
|
|
79
223
|
*/
|
|
80
224
|
onTouchMove?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
225
|
+
/**
|
|
226
|
+
* 滚动开始事件
|
|
227
|
+
* 仅小程序可用
|
|
228
|
+
*/
|
|
229
|
+
onScrollStart?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewScrollEvent>) => void;
|
|
230
|
+
/**
|
|
231
|
+
* 滚动结束事件
|
|
232
|
+
* 仅小程序可用
|
|
233
|
+
*/
|
|
234
|
+
onScrollEnd?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewScrollEvent>) => void;
|
|
235
|
+
/**
|
|
236
|
+
* 自定义下拉刷新控件被下拉
|
|
237
|
+
* 仅小程序可用
|
|
238
|
+
*/
|
|
239
|
+
onRefresherPulling?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
240
|
+
/**
|
|
241
|
+
* 自定义下拉刷新被触发
|
|
242
|
+
* 仅小程序可用
|
|
243
|
+
*/
|
|
244
|
+
onRefresherRefresh?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
245
|
+
/**
|
|
246
|
+
* 自定义下拉刷新被复位
|
|
247
|
+
* 仅小程序可用
|
|
248
|
+
*/
|
|
249
|
+
onRefresherRestore?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
250
|
+
/**
|
|
251
|
+
* 自定义下拉刷新被中止
|
|
252
|
+
* 仅小程序可用
|
|
253
|
+
*/
|
|
254
|
+
onRefresherAbort?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
255
|
+
/**
|
|
256
|
+
* 自定义下拉刷新即将触发刷新(拖动超过 refresher-threshold 时)的事件
|
|
257
|
+
* 仅小程序可用
|
|
258
|
+
*/
|
|
259
|
+
onRefresherWillRefresh?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
260
|
+
/**
|
|
261
|
+
* 滑动开始事件 (同时开启 enhanced 属性后生效)
|
|
262
|
+
* 仅小程序可用
|
|
263
|
+
*/
|
|
264
|
+
onDragStart?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewDragEvent>) => void;
|
|
265
|
+
/**
|
|
266
|
+
* 滑动事件 (同时开启 enhanced 属性后生效)
|
|
267
|
+
* 仅小程序可用
|
|
268
|
+
*/
|
|
269
|
+
onDragging?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewDragEvent>) => void;
|
|
270
|
+
/**
|
|
271
|
+
* 滑动结束事件 (同时开启 enhanced 属性后生效)
|
|
272
|
+
* 仅小程序可用
|
|
273
|
+
*/
|
|
274
|
+
onDragEnd?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewDragEvent>) => void;
|
|
275
|
+
/**
|
|
276
|
+
* 触摸动作开始。
|
|
277
|
+
* 仅小程序可用
|
|
278
|
+
*/
|
|
279
|
+
onTouchStart?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
280
|
+
/**
|
|
281
|
+
* 触摸动作结束。
|
|
282
|
+
* 仅小程序可用
|
|
283
|
+
*/
|
|
284
|
+
onTouchEnd?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
285
|
+
/**
|
|
286
|
+
* 触摸动作被打断,如来电提醒、弹窗。
|
|
287
|
+
* 仅小程序可用
|
|
288
|
+
*/
|
|
289
|
+
onTouchCancel?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
81
290
|
};
|
|
82
291
|
defaultComponent: D;
|
|
83
292
|
}, D>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DatePickerProps } from './DatePicker.types';
|
|
3
|
-
declare const DatePicker: React.ForwardRefExoticComponent<Omit<DatePickerProps<"div", Omit<import("../Picker").PickerProps<"div", import("..").DrawerProps>, "
|
|
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
4
|
export default DatePicker;
|
|
@@ -12,5 +12,5 @@ declare const Modal: React.ForwardRefExoticComponent<Omit<ViewProps & {
|
|
|
12
12
|
keepMounted?: boolean;
|
|
13
13
|
} & import("@bifrostui/types").ICommonProps & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
14
14
|
ref?: React.Ref<HTMLDivElement>;
|
|
15
|
-
}, keyof import("@bifrostui/types").ICommonProps | "
|
|
15
|
+
}, "open" | "container" | keyof import("@bifrostui/types").ICommonProps | "disablePortal" | "hideBackdrop" | "BackdropProps" | "onClose" | "disableScrollLock" | "keepMounted">, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
16
16
|
export default Modal;
|
|
@@ -18,19 +18,25 @@ var __spreadValues = (a, b) => {
|
|
|
18
18
|
};
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
20
|
import Taro from "@tarojs/taro";
|
|
21
|
-
import React, { forwardRef,
|
|
21
|
+
import React, { forwardRef, useLayoutEffect, useState, useMemo } from "react";
|
|
22
22
|
import PortalCore from "./PortalCore";
|
|
23
23
|
const Portal = forwardRef((props, ref) => {
|
|
24
24
|
const { disablePortal } = props;
|
|
25
25
|
const [rootWrapperElement, setRootWrapperElement] = useState();
|
|
26
|
-
|
|
26
|
+
const initialPageInfo = useMemo(() => {
|
|
27
|
+
const currentPages = Taro.getCurrentPages() || [];
|
|
28
|
+
const currentPage = currentPages[currentPages.length - 1];
|
|
29
|
+
return {
|
|
30
|
+
path: currentPage == null ? void 0 : currentPage.$taroPath
|
|
31
|
+
};
|
|
32
|
+
}, []);
|
|
33
|
+
useLayoutEffect(() => {
|
|
27
34
|
let root;
|
|
28
|
-
if (!disablePortal) {
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const portalId = (rootElement == null ? void 0 : rootElement.sid) ? `${rootElement == null ? void 0 : rootElement.sid}_portalId` : `${pageElement}_portalId`;
|
|
35
|
+
if (!disablePortal && initialPageInfo.path) {
|
|
36
|
+
const { path } = initialPageInfo;
|
|
37
|
+
const rootElement = document.getElementById(path);
|
|
38
|
+
const elementWithSid = rootElement;
|
|
39
|
+
const portalId = (elementWithSid == null ? void 0 : elementWithSid.sid) ? `${elementWithSid.sid}_portalId` : `${path}_portalId`;
|
|
34
40
|
const portalWrapperElement = document.getElementById(portalId);
|
|
35
41
|
if (!portalWrapperElement) {
|
|
36
42
|
const view = document.createElement("view");
|
|
@@ -42,7 +48,7 @@ const Portal = forwardRef((props, ref) => {
|
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
setRootWrapperElement(root);
|
|
45
|
-
}, []);
|
|
51
|
+
}, [disablePortal, initialPageInfo.path]);
|
|
46
52
|
return /* @__PURE__ */ React.createElement(PortalCore, __spreadProps(__spreadValues({}, props), { ref, rootElement: rootWrapperElement }));
|
|
47
53
|
});
|
|
48
54
|
Portal.displayName = "BuiPortal";
|
|
@@ -9,6 +9,22 @@ export interface ScrollViewScrollEvent extends Event {
|
|
|
9
9
|
scrollTop: number;
|
|
10
10
|
scrollHeight: number;
|
|
11
11
|
scrollWidth: number;
|
|
12
|
+
deltaX?: number;
|
|
13
|
+
deltaY?: number;
|
|
14
|
+
isDrag?: boolean;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 拖拽事件详情
|
|
19
|
+
*/
|
|
20
|
+
export interface ScrollViewDragEvent extends Event {
|
|
21
|
+
detail?: {
|
|
22
|
+
/** 横向滚动条位置 */
|
|
23
|
+
scrollLeft?: number;
|
|
24
|
+
/** 竖向滚动条位置 */
|
|
25
|
+
scrollTop?: number;
|
|
26
|
+
/** 滚动速度 */
|
|
27
|
+
velocity?: number;
|
|
12
28
|
};
|
|
13
29
|
}
|
|
14
30
|
/**
|
|
@@ -52,6 +68,134 @@ export type ScrollViewProps<D extends React.ElementType = 'div', P = {}> = Overr
|
|
|
52
68
|
* @default false
|
|
53
69
|
*/
|
|
54
70
|
scrollWithAnimation?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* 当 scroll-with-animation设置为 true 时,可以设置 scroll-animation-duration 来控制动画的执行时间,单位 ms。
|
|
73
|
+
*/
|
|
74
|
+
scrollAnimationDuration?: number;
|
|
75
|
+
/**
|
|
76
|
+
* 滚动条返回顶部,只支持竖向
|
|
77
|
+
* 仅小程序可用
|
|
78
|
+
* @default false
|
|
79
|
+
*/
|
|
80
|
+
enableBackToTop?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* 启用 flexbox 布局。开启后,当前节点声明了 `display: flex` 就会成为 flex container,并作用于其孩子节点。
|
|
83
|
+
* 仅小程序可用
|
|
84
|
+
* @default false
|
|
85
|
+
*/
|
|
86
|
+
enableFlex?: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* 开启 scroll anchoring 特性,即控制滚动位置不随内容变化而抖动,仅在 iOS 下生效,安卓下可参考 CSS `overflow-anchor` 属性。
|
|
89
|
+
* 仅小程序可用
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
scrollAnchoring?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* 启用 scroll-view 增强特性
|
|
95
|
+
* 仅小程序可用
|
|
96
|
+
* @default false
|
|
97
|
+
*/
|
|
98
|
+
enhanced?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* iOS 下 scroll-view 边界弹性控制 (同时开启 enhanced 属性后生效)
|
|
101
|
+
* 仅小程序可用
|
|
102
|
+
* @default true
|
|
103
|
+
*/
|
|
104
|
+
bounces?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* 滚动条显隐控制 (同时开启 enhanced 属性后生效)
|
|
107
|
+
* 仅小程序可用
|
|
108
|
+
* @default true
|
|
109
|
+
*/
|
|
110
|
+
showScrollbar?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* 分页滑动效果 (同时开启 enhanced 属性后生效)
|
|
113
|
+
* 仅小程序可用
|
|
114
|
+
* @default false
|
|
115
|
+
*/
|
|
116
|
+
pagingEnabled?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* 滑动减速速率控制 (同时开启 enhanced 属性后生效)
|
|
119
|
+
* 仅小程序可用
|
|
120
|
+
* @default false
|
|
121
|
+
*/
|
|
122
|
+
fastDeceleration?: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* 纵向滚动时,当滚动到顶部或底部时,强制禁止触发页面滚动,仍然只触发 scroll-view 自身的滚动。
|
|
125
|
+
* 仅小程序可用
|
|
126
|
+
* @default false
|
|
127
|
+
*/
|
|
128
|
+
trapScroll?: string;
|
|
129
|
+
/**
|
|
130
|
+
* 发生滚动前,对滚动方向进行判断,当方向是顶部/左边时,如果值为always将始终禁止滚动,如果值为out-of-bounds 且当前已经滚动到顶部/左边,禁止滚动。
|
|
131
|
+
* 仅小程序可用
|
|
132
|
+
*/
|
|
133
|
+
disableLowerScroll?: string;
|
|
134
|
+
/**
|
|
135
|
+
* 发生滚动前,对滚动方向进行判断,当方向是底部/右边时,如果值为always将始终禁止滚动,如果值为out-of-bounds 且当前已经滚动到底部/右边,禁止滚动。
|
|
136
|
+
* 仅小程序可用
|
|
137
|
+
*/
|
|
138
|
+
disableUpperScroll?: string;
|
|
139
|
+
/**
|
|
140
|
+
* 无障碍访问,(属性)元素的额外描述
|
|
141
|
+
* 仅小程序可用
|
|
142
|
+
*/
|
|
143
|
+
ariaLabel?: string;
|
|
144
|
+
/**
|
|
145
|
+
* 开启 passive 特性,能优化一定的滚动性能
|
|
146
|
+
* 仅小程序可用
|
|
147
|
+
* @default false
|
|
148
|
+
*/
|
|
149
|
+
enablePassive?: string;
|
|
150
|
+
/**
|
|
151
|
+
* 渲染模式
|
|
152
|
+
* list - 列表模式。只会渲染在屏节点,会根据直接子节点是否在屏来按需渲染,若只有一个直接子节点则性能会退化
|
|
153
|
+
* custom - 自定义模式。只会渲染在屏节点,子节点可以是 sticky-section list-view grid-view 等组件
|
|
154
|
+
* 仅小程序可用
|
|
155
|
+
* @default 'list'
|
|
156
|
+
*/
|
|
157
|
+
type?: 'list' | 'custom';
|
|
158
|
+
/**
|
|
159
|
+
* 是否反向滚动。一般初始滚动位置是在顶部,反向滚动则是在底部。
|
|
160
|
+
* 仅小程序可用
|
|
161
|
+
* @default false
|
|
162
|
+
*/
|
|
163
|
+
reverse?: boolean;
|
|
164
|
+
/**
|
|
165
|
+
* 指定视口外渲染区域的距离,默认情况下视口外节点不渲染。指定 cache-extent 可优化滚动体验和加载速度,但会提高内存占用且影响首屏速度,可按需启用。
|
|
166
|
+
* 仅小程序可用
|
|
167
|
+
*/
|
|
168
|
+
cacheExtent?: number;
|
|
169
|
+
/**
|
|
170
|
+
* 只 scroll-into-view 到 cacheExtent 以内的目标节点,性能更佳
|
|
171
|
+
* 仅小程序可用
|
|
172
|
+
* @default false
|
|
173
|
+
*/
|
|
174
|
+
scrollIntoViewWithinExtent?: boolean;
|
|
175
|
+
/**
|
|
176
|
+
* 开启自定义下拉刷新
|
|
177
|
+
* 仅小程序可用
|
|
178
|
+
* @default false
|
|
179
|
+
*/
|
|
180
|
+
refresherEnabled?: boolean;
|
|
181
|
+
/**
|
|
182
|
+
* 设置自定义下拉刷新默认样式,支持设置 `black | white | none`, none 表示不使用默认样式
|
|
183
|
+
* 仅小程序可用
|
|
184
|
+
* @default 'black'
|
|
185
|
+
*/
|
|
186
|
+
refresherDefaultStyle?: string;
|
|
187
|
+
/**
|
|
188
|
+
* 设置自定义下拉刷新区域背景颜色
|
|
189
|
+
* 仅小程序可用
|
|
190
|
+
* @default '#FFF'
|
|
191
|
+
*/
|
|
192
|
+
refresherBackground?: string;
|
|
193
|
+
/**
|
|
194
|
+
* 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发
|
|
195
|
+
* 仅小程序可用
|
|
196
|
+
* @default false
|
|
197
|
+
*/
|
|
198
|
+
refresherTriggered?: boolean;
|
|
55
199
|
/**
|
|
56
200
|
* 距顶部/左边多远时(单位px),触发 onScrollToUpper 事件
|
|
57
201
|
* @default 50
|
|
@@ -78,6 +222,71 @@ export type ScrollViewProps<D extends React.ElementType = 'div', P = {}> = Overr
|
|
|
78
222
|
* 触摸移动时触发
|
|
79
223
|
*/
|
|
80
224
|
onTouchMove?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
225
|
+
/**
|
|
226
|
+
* 滚动开始事件
|
|
227
|
+
* 仅小程序可用
|
|
228
|
+
*/
|
|
229
|
+
onScrollStart?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewScrollEvent>) => void;
|
|
230
|
+
/**
|
|
231
|
+
* 滚动结束事件
|
|
232
|
+
* 仅小程序可用
|
|
233
|
+
*/
|
|
234
|
+
onScrollEnd?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewScrollEvent>) => void;
|
|
235
|
+
/**
|
|
236
|
+
* 自定义下拉刷新控件被下拉
|
|
237
|
+
* 仅小程序可用
|
|
238
|
+
*/
|
|
239
|
+
onRefresherPulling?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
240
|
+
/**
|
|
241
|
+
* 自定义下拉刷新被触发
|
|
242
|
+
* 仅小程序可用
|
|
243
|
+
*/
|
|
244
|
+
onRefresherRefresh?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
245
|
+
/**
|
|
246
|
+
* 自定义下拉刷新被复位
|
|
247
|
+
* 仅小程序可用
|
|
248
|
+
*/
|
|
249
|
+
onRefresherRestore?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
250
|
+
/**
|
|
251
|
+
* 自定义下拉刷新被中止
|
|
252
|
+
* 仅小程序可用
|
|
253
|
+
*/
|
|
254
|
+
onRefresherAbort?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
255
|
+
/**
|
|
256
|
+
* 自定义下拉刷新即将触发刷新(拖动超过 refresher-threshold 时)的事件
|
|
257
|
+
* 仅小程序可用
|
|
258
|
+
*/
|
|
259
|
+
onRefresherWillRefresh?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void;
|
|
260
|
+
/**
|
|
261
|
+
* 滑动开始事件 (同时开启 enhanced 属性后生效)
|
|
262
|
+
* 仅小程序可用
|
|
263
|
+
*/
|
|
264
|
+
onDragStart?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewDragEvent>) => void;
|
|
265
|
+
/**
|
|
266
|
+
* 滑动事件 (同时开启 enhanced 属性后生效)
|
|
267
|
+
* 仅小程序可用
|
|
268
|
+
*/
|
|
269
|
+
onDragging?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewDragEvent>) => void;
|
|
270
|
+
/**
|
|
271
|
+
* 滑动结束事件 (同时开启 enhanced 属性后生效)
|
|
272
|
+
* 仅小程序可用
|
|
273
|
+
*/
|
|
274
|
+
onDragEnd?: (e: React.SyntheticEvent<HTMLDivElement, ScrollViewDragEvent>) => void;
|
|
275
|
+
/**
|
|
276
|
+
* 触摸动作开始。
|
|
277
|
+
* 仅小程序可用
|
|
278
|
+
*/
|
|
279
|
+
onTouchStart?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
280
|
+
/**
|
|
281
|
+
* 触摸动作结束。
|
|
282
|
+
* 仅小程序可用
|
|
283
|
+
*/
|
|
284
|
+
onTouchEnd?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
285
|
+
/**
|
|
286
|
+
* 触摸动作被打断,如来电提醒、弹窗。
|
|
287
|
+
* 仅小程序可用
|
|
288
|
+
*/
|
|
289
|
+
onTouchCancel?: (e: React.SyntheticEvent<HTMLDivElement, TouchEvent>) => void;
|
|
81
290
|
};
|
|
82
291
|
defaultComponent: D;
|
|
83
292
|
}, D>;
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bifrostui/react",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.5",
|
|
4
4
|
"description": "React components for building mobile application",
|
|
5
5
|
"homepage": "http://bui.taopiaopiao.com",
|
|
6
6
|
"license": "MIT",
|
|
7
|
-
"main": "
|
|
8
|
-
"module": "
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"module": "es/index.js",
|
|
9
9
|
"typings": "es/index.d.ts",
|
|
10
10
|
"directories": {
|
|
11
11
|
"test": "__tests__"
|
|
12
12
|
},
|
|
13
13
|
"exports": {
|
|
14
14
|
".": {
|
|
15
|
-
"import": "./
|
|
16
|
-
"module": "./
|
|
17
|
-
"require": "./
|
|
15
|
+
"import": "./es/index.js",
|
|
16
|
+
"module": "./es/index.js",
|
|
17
|
+
"require": "./dist/index.js"
|
|
18
18
|
},
|
|
19
19
|
"./css/*": "./es/*/index.css"
|
|
20
20
|
},
|
|
@@ -25,23 +25,9 @@
|
|
|
25
25
|
"README.md"
|
|
26
26
|
],
|
|
27
27
|
"publishConfig": {
|
|
28
|
-
"main": "dist/index.js",
|
|
29
|
-
"module": "es/index.js",
|
|
30
|
-
"exports": {
|
|
31
|
-
".": {
|
|
32
|
-
"import": "./es/index.js",
|
|
33
|
-
"module": "./es/index.js",
|
|
34
|
-
"require": "./dist/index.js"
|
|
35
|
-
},
|
|
36
|
-
"./css/*": "./es/*/index.css"
|
|
37
|
-
},
|
|
38
28
|
"access": "public",
|
|
39
29
|
"registry": "https://registry.npmjs.org/"
|
|
40
30
|
},
|
|
41
|
-
"scripts": {
|
|
42
|
-
"build": "node esbuild.config.js",
|
|
43
|
-
"build:benchmark": "rspack build"
|
|
44
|
-
},
|
|
45
31
|
"sideEffects": [
|
|
46
32
|
"*.css",
|
|
47
33
|
"*.less"
|
|
@@ -54,13 +40,13 @@
|
|
|
54
40
|
"glob": "11.0.0"
|
|
55
41
|
},
|
|
56
42
|
"dependencies": {
|
|
57
|
-
"@bifrostui/icons": "workspace:*",
|
|
58
|
-
"@bifrostui/styles": "workspace:*",
|
|
59
|
-
"@bifrostui/types": "workspace:*",
|
|
60
|
-
"@bifrostui/utils": "workspace:*",
|
|
61
43
|
"clsx": "^2.1.1",
|
|
62
44
|
"dayjs": "^1.11.7",
|
|
63
|
-
"swiper": "^8.1.5"
|
|
45
|
+
"swiper": "^8.1.5",
|
|
46
|
+
"@bifrostui/icons": "2.0.0-alpha.5",
|
|
47
|
+
"@bifrostui/styles": "2.0.0-alpha.5",
|
|
48
|
+
"@bifrostui/utils": "2.0.0-alpha.5",
|
|
49
|
+
"@bifrostui/types": "2.0.0-alpha.5"
|
|
64
50
|
},
|
|
65
51
|
"peerDependencies": {
|
|
66
52
|
"@tarojs/components": "^3.0.0",
|
|
@@ -68,5 +54,9 @@
|
|
|
68
54
|
"@types/react": "^17.0.0 || ^18.0.0",
|
|
69
55
|
"react": "^17.0.0 || ^18.0.0",
|
|
70
56
|
"react-dom": "^17.0.0 || ^18.0.0"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "node esbuild.config.js",
|
|
60
|
+
"build:benchmark": "rspack build"
|
|
71
61
|
}
|
|
72
|
-
}
|
|
62
|
+
}
|
package/src/index.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
export * from './ActionSheet';
|
|
2
|
-
export * from './Alert';
|
|
3
|
-
export * from './Avatar';
|
|
4
|
-
export * from './Backdrop';
|
|
5
|
-
export * from './Badge';
|
|
6
|
-
export * from './Button';
|
|
7
|
-
export * from './Calendar';
|
|
8
|
-
export * from './Card';
|
|
9
|
-
export * from './Checkbox';
|
|
10
|
-
export * from './Collapse';
|
|
11
|
-
export * from './DatePicker';
|
|
12
|
-
export * from './DesktopDatePicker';
|
|
13
|
-
export * from './DesktopTimePicker';
|
|
14
|
-
export * from './DesktopDateTimePicker';
|
|
15
|
-
export * from './DesktopPicker';
|
|
16
|
-
export * from './Divider';
|
|
17
|
-
export * from './Drawer';
|
|
18
|
-
export * from './Fade';
|
|
19
|
-
export * from './IconButton';
|
|
20
|
-
export * from './Image';
|
|
21
|
-
export * from './Input';
|
|
22
|
-
export * from './List';
|
|
23
|
-
export * from './Modal';
|
|
24
|
-
export * from './Popover';
|
|
25
|
-
export * from './Portal';
|
|
26
|
-
export * from './Progress';
|
|
27
|
-
export * from './Radio';
|
|
28
|
-
export * from './Rating';
|
|
29
|
-
export * from './ScrollView';
|
|
30
|
-
export * from './Select';
|
|
31
|
-
export * from './Skeleton';
|
|
32
|
-
export * from './Slide';
|
|
33
|
-
export * from './Slider';
|
|
34
|
-
export * from './Stack';
|
|
35
|
-
export * from './Steps';
|
|
36
|
-
export * from './Swiper';
|
|
37
|
-
export * from './Switch';
|
|
38
|
-
export * from './Tabs';
|
|
39
|
-
export * from './Tag';
|
|
40
|
-
export * from './TextArea';
|
|
41
|
-
export * from './Transition';
|
|
42
|
-
export * from './Tooltip';
|
|
43
|
-
export * from './NavBar';
|
|
44
|
-
export * from './Loading';
|
|
45
|
-
export * from './TabBar';
|
|
46
|
-
export * from './Countdown';
|
|
47
|
-
export * from './CitySelector';
|
|
48
|
-
export * from './ItemSelector';
|
|
49
|
-
export * from './Picker';
|
|
50
|
-
export * from './CollapsePanel';
|
|
51
|
-
export * from './Breadcrumb';
|
|
52
|
-
export * from './Toast';
|
|
53
|
-
export * from './Dialog';
|
|
54
|
-
export * from './ThemeProvider';
|
|
55
|
-
export * from './locales';
|
|
56
|
-
export * from './SwipeAction';
|
|
57
|
-
export * from './CSSTransition';
|
|
58
|
-
export * from './TransitionGroup';
|