@bifrostui/react 2.0.0-alpha.19 → 2.0.0-alpha.20
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/dist/Tabs/Tab.js +4 -4
- package/dist/Tabs/TabIndicator.js +40 -16
- package/dist/Tabs/TabPanel.js +4 -4
- package/dist/Tabs/Tabs.js +7 -4
- package/dist/Tabs/classes.d.ts +3 -0
- package/dist/Tabs/classes.js +9 -0
- package/es/Modal/Modal.miniapp.d.ts +1 -1
- package/es/Tabs/Tab.js +4 -4
- package/es/Tabs/TabIndicator.js +40 -16
- package/es/Tabs/TabPanel.js +8 -4
- package/es/Tabs/Tabs.js +8 -5
- package/es/Tabs/classes.d.ts +3 -0
- package/es/Tabs/classes.js +6 -0
- package/package.json +5 -5
package/dist/Tabs/Tab.js
CHANGED
|
@@ -63,8 +63,8 @@ var import_react = __toESM(require("react"));
|
|
|
63
63
|
var import_clsx = __toESM(require("clsx"));
|
|
64
64
|
var import_utils = require("@bifrostui/utils");
|
|
65
65
|
var import_TabsContext = __toESM(require("./TabsContext"));
|
|
66
|
+
var import_classes = require("./classes");
|
|
66
67
|
var import_Tab2 = require("./Tab.css");
|
|
67
|
-
const rootClass = "bui-tab";
|
|
68
68
|
const Tab = /* @__PURE__ */ import_react.default.forwardRef((props, ref) => {
|
|
69
69
|
const _a = props, {
|
|
70
70
|
className,
|
|
@@ -105,10 +105,10 @@ const Tab = /* @__PURE__ */ import_react.default.forwardRef((props, ref) => {
|
|
|
105
105
|
};
|
|
106
106
|
}, [onRegister, onUnregister, index]);
|
|
107
107
|
const rootCls = (0, import_clsx.default)(
|
|
108
|
-
|
|
108
|
+
import_classes.tabRootClass,
|
|
109
109
|
{
|
|
110
|
-
[
|
|
111
|
-
[
|
|
110
|
+
[import_classes.tabActiveClass]: !import_utils.isMini && isActive,
|
|
111
|
+
[import_classes.tabDisabledClass]: disabled
|
|
112
112
|
},
|
|
113
113
|
className
|
|
114
114
|
);
|
|
@@ -34,7 +34,7 @@ var import_react = __toESM(require("react"));
|
|
|
34
34
|
var import_clsx = __toESM(require("clsx"));
|
|
35
35
|
var import_utils = require("@bifrostui/utils");
|
|
36
36
|
var import_scroll = __toESM(require("./utils/scroll"));
|
|
37
|
-
|
|
37
|
+
var import_classes = require("./classes");
|
|
38
38
|
const duration = 300;
|
|
39
39
|
const DEFAULT_INDICATOR_WIDTH = 24;
|
|
40
40
|
const TabIndicator = ({
|
|
@@ -44,7 +44,6 @@ const TabIndicator = ({
|
|
|
44
44
|
}) => {
|
|
45
45
|
const indicatorRef = (0, import_react.useRef)(null);
|
|
46
46
|
const hasRenderedOnce = (0, import_react.useRef)(false);
|
|
47
|
-
const indicatorWidthCache = (0, import_react.useRef)(null);
|
|
48
47
|
const [indicatorStyle, setIndicatorStyle] = (0, import_react.useState)(
|
|
49
48
|
null
|
|
50
49
|
);
|
|
@@ -68,19 +67,11 @@ const TabIndicator = ({
|
|
|
68
67
|
}
|
|
69
68
|
);
|
|
70
69
|
const getIndicatorWidth = (0, import_utils.useEventCallback)(() => {
|
|
71
|
-
if (indicatorWidthCache.current !== null) {
|
|
72
|
-
return indicatorWidthCache.current;
|
|
73
|
-
}
|
|
74
70
|
const indicator = indicatorRef.current;
|
|
75
71
|
if (!indicator)
|
|
76
72
|
return DEFAULT_INDICATOR_WIDTH;
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
);
|
|
80
|
-
const parsed = Number.parseFloat(cssValue);
|
|
81
|
-
const width = Number.isNaN(parsed) ? DEFAULT_INDICATOR_WIDTH : parsed;
|
|
82
|
-
indicatorWidthCache.current = width;
|
|
83
|
-
return width;
|
|
73
|
+
const rect = indicator.getBoundingClientRect();
|
|
74
|
+
return rect.width > 0 ? rect.width : DEFAULT_INDICATOR_WIDTH;
|
|
84
75
|
});
|
|
85
76
|
const getTabsMeta = (0, import_utils.useEventCallback)(() => {
|
|
86
77
|
const tabsNode = tabsContainerRef.current;
|
|
@@ -135,15 +126,48 @@ const TabIndicator = ({
|
|
|
135
126
|
updateIndicatorState();
|
|
136
127
|
});
|
|
137
128
|
(0, import_react.useEffect)(() => {
|
|
129
|
+
const tabsContainer = tabsContainerRef.current;
|
|
130
|
+
if (!tabsContainer)
|
|
131
|
+
return void 0;
|
|
138
132
|
const handleResize = (0, import_utils.debounce)(() => {
|
|
139
|
-
|
|
140
|
-
|
|
133
|
+
if (tabsContainerRef.current) {
|
|
134
|
+
updateIndicatorState();
|
|
135
|
+
}
|
|
141
136
|
}, 100);
|
|
142
137
|
window.addEventListener("resize", handleResize);
|
|
138
|
+
let resizeObserver;
|
|
139
|
+
let mutationObserver;
|
|
140
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
141
|
+
resizeObserver = new ResizeObserver(handleResize);
|
|
142
|
+
Array.from(tabsContainer.children).forEach((child) => {
|
|
143
|
+
resizeObserver == null ? void 0 : resizeObserver.observe(child);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
if (typeof MutationObserver !== "undefined") {
|
|
147
|
+
const handleMutation = (records) => {
|
|
148
|
+
records.forEach((record) => {
|
|
149
|
+
record.removedNodes.forEach((item) => {
|
|
150
|
+
if (item instanceof Element) {
|
|
151
|
+
resizeObserver == null ? void 0 : resizeObserver.unobserve(item);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
record.addedNodes.forEach((item) => {
|
|
155
|
+
if (item instanceof Element) {
|
|
156
|
+
resizeObserver == null ? void 0 : resizeObserver.observe(item);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
handleResize();
|
|
161
|
+
};
|
|
162
|
+
mutationObserver = new MutationObserver(handleMutation);
|
|
163
|
+
mutationObserver.observe(tabsContainer, { childList: true });
|
|
164
|
+
}
|
|
143
165
|
return () => {
|
|
144
166
|
window.removeEventListener("resize", handleResize);
|
|
167
|
+
mutationObserver == null ? void 0 : mutationObserver.disconnect();
|
|
168
|
+
resizeObserver == null ? void 0 : resizeObserver.disconnect();
|
|
145
169
|
};
|
|
146
|
-
}, [updateIndicatorState]);
|
|
170
|
+
}, [updateIndicatorState, tabsContainerRef]);
|
|
147
171
|
if (!indicatorStyle) {
|
|
148
172
|
return null;
|
|
149
173
|
}
|
|
@@ -151,7 +175,7 @@ const TabIndicator = ({
|
|
|
151
175
|
"div",
|
|
152
176
|
{
|
|
153
177
|
ref: indicatorRef,
|
|
154
|
-
className: (0, import_clsx.default)(
|
|
178
|
+
className: (0, import_clsx.default)(import_classes.tabIndicatorClass),
|
|
155
179
|
style: indicatorStyle,
|
|
156
180
|
"aria-hidden": "true"
|
|
157
181
|
}
|
package/dist/Tabs/TabPanel.js
CHANGED
|
@@ -58,8 +58,8 @@ __export(TabPanel_exports, {
|
|
|
58
58
|
module.exports = __toCommonJS(TabPanel_exports);
|
|
59
59
|
var import_react = __toESM(require("react"));
|
|
60
60
|
var import_clsx = __toESM(require("clsx"));
|
|
61
|
+
var import_classes = require("./classes");
|
|
61
62
|
var import_TabPanel2 = require("./TabPanel.css");
|
|
62
|
-
const prefixCls = "bui-tabpanel";
|
|
63
63
|
const TabPanel = (0, import_react.forwardRef)((props, ref) => {
|
|
64
64
|
const _a = props, {
|
|
65
65
|
className,
|
|
@@ -83,9 +83,9 @@ const TabPanel = (0, import_react.forwardRef)((props, ref) => {
|
|
|
83
83
|
"aria-hidden": !isActive,
|
|
84
84
|
tabIndex: 0,
|
|
85
85
|
ref,
|
|
86
|
-
className: (0, import_clsx.default)(
|
|
87
|
-
[
|
|
88
|
-
[
|
|
86
|
+
className: (0, import_clsx.default)(import_classes.tabPanelRootClass, className, {
|
|
87
|
+
[import_classes.tabPanelActiveClass]: isActive,
|
|
88
|
+
[import_classes.tabPanelInactiveClass]: !isActive
|
|
89
89
|
})
|
|
90
90
|
}, others),
|
|
91
91
|
isActive ? children : keepActiveDom
|
package/dist/Tabs/Tabs.js
CHANGED
|
@@ -72,15 +72,15 @@ const Tabs = /* @__PURE__ */ import_react.default.forwardRef((props, ref) => {
|
|
|
72
72
|
const _a = props, {
|
|
73
73
|
children,
|
|
74
74
|
className,
|
|
75
|
-
value,
|
|
76
75
|
defaultValue,
|
|
76
|
+
value,
|
|
77
77
|
tabs = [],
|
|
78
78
|
onChange
|
|
79
79
|
} = _a, others = __objRest(_a, [
|
|
80
80
|
"children",
|
|
81
81
|
"className",
|
|
82
|
-
"value",
|
|
83
82
|
"defaultValue",
|
|
83
|
+
"value",
|
|
84
84
|
"tabs",
|
|
85
85
|
"onChange"
|
|
86
86
|
]);
|
|
@@ -151,11 +151,14 @@ const Tabs = /* @__PURE__ */ import_react.default.forwardRef((props, ref) => {
|
|
|
151
151
|
(0, import_react.useEffect)(() => {
|
|
152
152
|
const tabsEl = tabsRef.current;
|
|
153
153
|
if (!tabsEl)
|
|
154
|
-
return;
|
|
154
|
+
return void 0;
|
|
155
155
|
const checkScrollable = () => {
|
|
156
156
|
setIsScrollable(tabsEl.scrollWidth > tabsEl.offsetWidth);
|
|
157
157
|
};
|
|
158
158
|
checkScrollable();
|
|
159
|
+
if (typeof ResizeObserver === "undefined") {
|
|
160
|
+
return void 0;
|
|
161
|
+
}
|
|
159
162
|
const resizeObserver = new ResizeObserver(checkScrollable);
|
|
160
163
|
resizeObserver.observe(tabsEl);
|
|
161
164
|
return () => {
|
|
@@ -165,7 +168,7 @@ const Tabs = /* @__PURE__ */ import_react.default.forwardRef((props, ref) => {
|
|
|
165
168
|
return /* @__PURE__ */ import_react.default.createElement("div", __spreadProps(__spreadValues({ className: (0, import_clsx.default)(import_classes.tabsRootClass, className) }, others), { ref }), isScrollable && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_TabMask.default, { position: "left" }), /* @__PURE__ */ import_react.default.createElement(import_TabMask.default, { position: "right" })), /* @__PURE__ */ import_react.default.createElement(
|
|
166
169
|
"div",
|
|
167
170
|
{
|
|
168
|
-
className:
|
|
171
|
+
className: import_classes.tabsScrollClass,
|
|
169
172
|
ref: tabsRef,
|
|
170
173
|
role: "tablist",
|
|
171
174
|
"aria-orientation": "horizontal"
|
package/dist/Tabs/classes.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const tabsRootClass = "bui-tabs";
|
|
2
2
|
export declare const tabRootClass = "bui-tab";
|
|
3
|
+
export declare const tabPanelRootClass = "bui-tabpanel";
|
|
3
4
|
export declare const tabsScrollClass: string;
|
|
4
5
|
export declare const tabsScrollWrapperClass: string;
|
|
5
6
|
export declare const tabActiveClass: string;
|
|
@@ -8,3 +9,5 @@ export declare const tabIndicatorClass: string;
|
|
|
8
9
|
export declare const tabMaskClass: string;
|
|
9
10
|
export declare const tabMaskLeftClass: string;
|
|
10
11
|
export declare const tabMaskRightClass: string;
|
|
12
|
+
export declare const tabPanelActiveClass: string;
|
|
13
|
+
export declare const tabPanelInactiveClass: string;
|
package/dist/Tabs/classes.js
CHANGED
|
@@ -23,6 +23,9 @@ __export(classes_exports, {
|
|
|
23
23
|
tabMaskClass: () => tabMaskClass,
|
|
24
24
|
tabMaskLeftClass: () => tabMaskLeftClass,
|
|
25
25
|
tabMaskRightClass: () => tabMaskRightClass,
|
|
26
|
+
tabPanelActiveClass: () => tabPanelActiveClass,
|
|
27
|
+
tabPanelInactiveClass: () => tabPanelInactiveClass,
|
|
28
|
+
tabPanelRootClass: () => tabPanelRootClass,
|
|
26
29
|
tabRootClass: () => tabRootClass,
|
|
27
30
|
tabsRootClass: () => tabsRootClass,
|
|
28
31
|
tabsScrollClass: () => tabsScrollClass,
|
|
@@ -31,6 +34,7 @@ __export(classes_exports, {
|
|
|
31
34
|
module.exports = __toCommonJS(classes_exports);
|
|
32
35
|
const tabsRootClass = "bui-tabs";
|
|
33
36
|
const tabRootClass = "bui-tab";
|
|
37
|
+
const tabPanelRootClass = "bui-tabpanel";
|
|
34
38
|
const tabsScrollClass = `${tabsRootClass}-tabs`;
|
|
35
39
|
const tabsScrollWrapperClass = `${tabsRootClass}-scroll-wrapper`;
|
|
36
40
|
const tabActiveClass = `${tabRootClass}-active`;
|
|
@@ -39,6 +43,8 @@ const tabIndicatorClass = `${tabsRootClass}-indicator`;
|
|
|
39
43
|
const tabMaskClass = `${tabsRootClass}-mask`;
|
|
40
44
|
const tabMaskLeftClass = `${tabMaskClass}-left`;
|
|
41
45
|
const tabMaskRightClass = `${tabMaskClass}-right`;
|
|
46
|
+
const tabPanelActiveClass = `${tabPanelRootClass}-active`;
|
|
47
|
+
const tabPanelInactiveClass = `${tabPanelRootClass}-inactive`;
|
|
42
48
|
// Annotate the CommonJS export names for ESM import in node:
|
|
43
49
|
0 && (module.exports = {
|
|
44
50
|
tabActiveClass,
|
|
@@ -47,6 +53,9 @@ const tabMaskRightClass = `${tabMaskClass}-right`;
|
|
|
47
53
|
tabMaskClass,
|
|
48
54
|
tabMaskLeftClass,
|
|
49
55
|
tabMaskRightClass,
|
|
56
|
+
tabPanelActiveClass,
|
|
57
|
+
tabPanelInactiveClass,
|
|
58
|
+
tabPanelRootClass,
|
|
50
59
|
tabRootClass,
|
|
51
60
|
tabsRootClass,
|
|
52
61
|
tabsScrollClass,
|
|
@@ -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
|
+
}, keyof import("@bifrostui/types").ICommonProps | "open" | "container" | "disablePortal" | "hideBackdrop" | "BackdropProps" | "onClose" | "disableScrollLock" | "keepMounted">, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
16
16
|
export default Modal;
|
package/es/Tabs/Tab.js
CHANGED
|
@@ -33,8 +33,8 @@ import React, { useEffect, useRef } from "react";
|
|
|
33
33
|
import clsx from "clsx";
|
|
34
34
|
import { isMini, useContextSelector, useForkRef } from "@bifrostui/utils";
|
|
35
35
|
import TabsContext from "./TabsContext";
|
|
36
|
+
import { tabRootClass, tabActiveClass, tabDisabledClass } from "./classes";
|
|
36
37
|
import "./Tab.css";
|
|
37
|
-
const rootClass = "bui-tab";
|
|
38
38
|
const Tab = /* @__PURE__ */ React.forwardRef((props, ref) => {
|
|
39
39
|
const _a = props, {
|
|
40
40
|
className,
|
|
@@ -75,10 +75,10 @@ const Tab = /* @__PURE__ */ React.forwardRef((props, ref) => {
|
|
|
75
75
|
};
|
|
76
76
|
}, [onRegister, onUnregister, index]);
|
|
77
77
|
const rootCls = clsx(
|
|
78
|
-
|
|
78
|
+
tabRootClass,
|
|
79
79
|
{
|
|
80
|
-
[
|
|
81
|
-
[
|
|
80
|
+
[tabActiveClass]: !isMini && isActive,
|
|
81
|
+
[tabDisabledClass]: disabled
|
|
82
82
|
},
|
|
83
83
|
className
|
|
84
84
|
);
|
package/es/Tabs/TabIndicator.js
CHANGED
|
@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useState } from "react";
|
|
|
2
2
|
import clsx from "clsx";
|
|
3
3
|
import { debounce, isMini, useEventCallback } from "@bifrostui/utils";
|
|
4
4
|
import scrollLeftTo from "./utils/scroll";
|
|
5
|
-
|
|
5
|
+
import { tabIndicatorClass } from "./classes";
|
|
6
6
|
const duration = 300;
|
|
7
7
|
const DEFAULT_INDICATOR_WIDTH = 24;
|
|
8
8
|
const TabIndicator = ({
|
|
@@ -12,7 +12,6 @@ const TabIndicator = ({
|
|
|
12
12
|
}) => {
|
|
13
13
|
const indicatorRef = useRef(null);
|
|
14
14
|
const hasRenderedOnce = useRef(false);
|
|
15
|
-
const indicatorWidthCache = useRef(null);
|
|
16
15
|
const [indicatorStyle, setIndicatorStyle] = useState(
|
|
17
16
|
null
|
|
18
17
|
);
|
|
@@ -36,19 +35,11 @@ const TabIndicator = ({
|
|
|
36
35
|
}
|
|
37
36
|
);
|
|
38
37
|
const getIndicatorWidth = useEventCallback(() => {
|
|
39
|
-
if (indicatorWidthCache.current !== null) {
|
|
40
|
-
return indicatorWidthCache.current;
|
|
41
|
-
}
|
|
42
38
|
const indicator = indicatorRef.current;
|
|
43
39
|
if (!indicator)
|
|
44
40
|
return DEFAULT_INDICATOR_WIDTH;
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
);
|
|
48
|
-
const parsed = Number.parseFloat(cssValue);
|
|
49
|
-
const width = Number.isNaN(parsed) ? DEFAULT_INDICATOR_WIDTH : parsed;
|
|
50
|
-
indicatorWidthCache.current = width;
|
|
51
|
-
return width;
|
|
41
|
+
const rect = indicator.getBoundingClientRect();
|
|
42
|
+
return rect.width > 0 ? rect.width : DEFAULT_INDICATOR_WIDTH;
|
|
52
43
|
});
|
|
53
44
|
const getTabsMeta = useEventCallback(() => {
|
|
54
45
|
const tabsNode = tabsContainerRef.current;
|
|
@@ -103,15 +94,48 @@ const TabIndicator = ({
|
|
|
103
94
|
updateIndicatorState();
|
|
104
95
|
});
|
|
105
96
|
useEffect(() => {
|
|
97
|
+
const tabsContainer = tabsContainerRef.current;
|
|
98
|
+
if (!tabsContainer)
|
|
99
|
+
return void 0;
|
|
106
100
|
const handleResize = debounce(() => {
|
|
107
|
-
|
|
108
|
-
|
|
101
|
+
if (tabsContainerRef.current) {
|
|
102
|
+
updateIndicatorState();
|
|
103
|
+
}
|
|
109
104
|
}, 100);
|
|
110
105
|
window.addEventListener("resize", handleResize);
|
|
106
|
+
let resizeObserver;
|
|
107
|
+
let mutationObserver;
|
|
108
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
109
|
+
resizeObserver = new ResizeObserver(handleResize);
|
|
110
|
+
Array.from(tabsContainer.children).forEach((child) => {
|
|
111
|
+
resizeObserver == null ? void 0 : resizeObserver.observe(child);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (typeof MutationObserver !== "undefined") {
|
|
115
|
+
const handleMutation = (records) => {
|
|
116
|
+
records.forEach((record) => {
|
|
117
|
+
record.removedNodes.forEach((item) => {
|
|
118
|
+
if (item instanceof Element) {
|
|
119
|
+
resizeObserver == null ? void 0 : resizeObserver.unobserve(item);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
record.addedNodes.forEach((item) => {
|
|
123
|
+
if (item instanceof Element) {
|
|
124
|
+
resizeObserver == null ? void 0 : resizeObserver.observe(item);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
handleResize();
|
|
129
|
+
};
|
|
130
|
+
mutationObserver = new MutationObserver(handleMutation);
|
|
131
|
+
mutationObserver.observe(tabsContainer, { childList: true });
|
|
132
|
+
}
|
|
111
133
|
return () => {
|
|
112
134
|
window.removeEventListener("resize", handleResize);
|
|
135
|
+
mutationObserver == null ? void 0 : mutationObserver.disconnect();
|
|
136
|
+
resizeObserver == null ? void 0 : resizeObserver.disconnect();
|
|
113
137
|
};
|
|
114
|
-
}, [updateIndicatorState]);
|
|
138
|
+
}, [updateIndicatorState, tabsContainerRef]);
|
|
115
139
|
if (!indicatorStyle) {
|
|
116
140
|
return null;
|
|
117
141
|
}
|
|
@@ -119,7 +143,7 @@ const TabIndicator = ({
|
|
|
119
143
|
"div",
|
|
120
144
|
{
|
|
121
145
|
ref: indicatorRef,
|
|
122
|
-
className: clsx(
|
|
146
|
+
className: clsx(tabIndicatorClass),
|
|
123
147
|
style: indicatorStyle,
|
|
124
148
|
"aria-hidden": "true"
|
|
125
149
|
}
|
package/es/Tabs/TabPanel.js
CHANGED
|
@@ -28,8 +28,12 @@ var __objRest = (source, exclude) => {
|
|
|
28
28
|
};
|
|
29
29
|
import React, { forwardRef } from "react";
|
|
30
30
|
import clsx from "clsx";
|
|
31
|
+
import {
|
|
32
|
+
tabPanelRootClass,
|
|
33
|
+
tabPanelActiveClass,
|
|
34
|
+
tabPanelInactiveClass
|
|
35
|
+
} from "./classes";
|
|
31
36
|
import "./TabPanel.css";
|
|
32
|
-
const prefixCls = "bui-tabpanel";
|
|
33
37
|
const TabPanel = forwardRef((props, ref) => {
|
|
34
38
|
const _a = props, {
|
|
35
39
|
className,
|
|
@@ -53,9 +57,9 @@ const TabPanel = forwardRef((props, ref) => {
|
|
|
53
57
|
"aria-hidden": !isActive,
|
|
54
58
|
tabIndex: 0,
|
|
55
59
|
ref,
|
|
56
|
-
className: clsx(
|
|
57
|
-
[
|
|
58
|
-
[
|
|
60
|
+
className: clsx(tabPanelRootClass, className, {
|
|
61
|
+
[tabPanelActiveClass]: isActive,
|
|
62
|
+
[tabPanelInactiveClass]: !isActive
|
|
59
63
|
})
|
|
60
64
|
}, others),
|
|
61
65
|
isActive ? children : keepActiveDom
|
package/es/Tabs/Tabs.js
CHANGED
|
@@ -36,21 +36,21 @@ import Tab from "./Tab";
|
|
|
36
36
|
import TabIndicator from "./TabIndicator";
|
|
37
37
|
import TabMask from "./TabMask";
|
|
38
38
|
import { TabsContextProvider } from "./TabsContext";
|
|
39
|
-
import { tabsRootClass } from "./classes";
|
|
39
|
+
import { tabsRootClass, tabsScrollClass } from "./classes";
|
|
40
40
|
import "./Tabs.css";
|
|
41
41
|
const Tabs = /* @__PURE__ */ React.forwardRef((props, ref) => {
|
|
42
42
|
const _a = props, {
|
|
43
43
|
children,
|
|
44
44
|
className,
|
|
45
|
-
value,
|
|
46
45
|
defaultValue,
|
|
46
|
+
value,
|
|
47
47
|
tabs = [],
|
|
48
48
|
onChange
|
|
49
49
|
} = _a, others = __objRest(_a, [
|
|
50
50
|
"children",
|
|
51
51
|
"className",
|
|
52
|
-
"value",
|
|
53
52
|
"defaultValue",
|
|
53
|
+
"value",
|
|
54
54
|
"tabs",
|
|
55
55
|
"onChange"
|
|
56
56
|
]);
|
|
@@ -121,11 +121,14 @@ const Tabs = /* @__PURE__ */ React.forwardRef((props, ref) => {
|
|
|
121
121
|
useEffect(() => {
|
|
122
122
|
const tabsEl = tabsRef.current;
|
|
123
123
|
if (!tabsEl)
|
|
124
|
-
return;
|
|
124
|
+
return void 0;
|
|
125
125
|
const checkScrollable = () => {
|
|
126
126
|
setIsScrollable(tabsEl.scrollWidth > tabsEl.offsetWidth);
|
|
127
127
|
};
|
|
128
128
|
checkScrollable();
|
|
129
|
+
if (typeof ResizeObserver === "undefined") {
|
|
130
|
+
return void 0;
|
|
131
|
+
}
|
|
129
132
|
const resizeObserver = new ResizeObserver(checkScrollable);
|
|
130
133
|
resizeObserver.observe(tabsEl);
|
|
131
134
|
return () => {
|
|
@@ -135,7 +138,7 @@ const Tabs = /* @__PURE__ */ React.forwardRef((props, ref) => {
|
|
|
135
138
|
return /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({ className: clsx(tabsRootClass, className) }, others), { ref }), isScrollable && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(TabMask, { position: "left" }), /* @__PURE__ */ React.createElement(TabMask, { position: "right" })), /* @__PURE__ */ React.createElement(
|
|
136
139
|
"div",
|
|
137
140
|
{
|
|
138
|
-
className:
|
|
141
|
+
className: tabsScrollClass,
|
|
139
142
|
ref: tabsRef,
|
|
140
143
|
role: "tablist",
|
|
141
144
|
"aria-orientation": "horizontal"
|
package/es/Tabs/classes.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const tabsRootClass = "bui-tabs";
|
|
2
2
|
export declare const tabRootClass = "bui-tab";
|
|
3
|
+
export declare const tabPanelRootClass = "bui-tabpanel";
|
|
3
4
|
export declare const tabsScrollClass: string;
|
|
4
5
|
export declare const tabsScrollWrapperClass: string;
|
|
5
6
|
export declare const tabActiveClass: string;
|
|
@@ -8,3 +9,5 @@ export declare const tabIndicatorClass: string;
|
|
|
8
9
|
export declare const tabMaskClass: string;
|
|
9
10
|
export declare const tabMaskLeftClass: string;
|
|
10
11
|
export declare const tabMaskRightClass: string;
|
|
12
|
+
export declare const tabPanelActiveClass: string;
|
|
13
|
+
export declare const tabPanelInactiveClass: string;
|
package/es/Tabs/classes.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const tabsRootClass = "bui-tabs";
|
|
2
2
|
const tabRootClass = "bui-tab";
|
|
3
|
+
const tabPanelRootClass = "bui-tabpanel";
|
|
3
4
|
const tabsScrollClass = `${tabsRootClass}-tabs`;
|
|
4
5
|
const tabsScrollWrapperClass = `${tabsRootClass}-scroll-wrapper`;
|
|
5
6
|
const tabActiveClass = `${tabRootClass}-active`;
|
|
@@ -8,6 +9,8 @@ const tabIndicatorClass = `${tabsRootClass}-indicator`;
|
|
|
8
9
|
const tabMaskClass = `${tabsRootClass}-mask`;
|
|
9
10
|
const tabMaskLeftClass = `${tabMaskClass}-left`;
|
|
10
11
|
const tabMaskRightClass = `${tabMaskClass}-right`;
|
|
12
|
+
const tabPanelActiveClass = `${tabPanelRootClass}-active`;
|
|
13
|
+
const tabPanelInactiveClass = `${tabPanelRootClass}-inactive`;
|
|
11
14
|
export {
|
|
12
15
|
tabActiveClass,
|
|
13
16
|
tabDisabledClass,
|
|
@@ -15,6 +18,9 @@ export {
|
|
|
15
18
|
tabMaskClass,
|
|
16
19
|
tabMaskLeftClass,
|
|
17
20
|
tabMaskRightClass,
|
|
21
|
+
tabPanelActiveClass,
|
|
22
|
+
tabPanelInactiveClass,
|
|
23
|
+
tabPanelRootClass,
|
|
18
24
|
tabRootClass,
|
|
19
25
|
tabsRootClass,
|
|
20
26
|
tabsScrollClass,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bifrostui/react",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.20",
|
|
4
4
|
"description": "React components for building mobile application",
|
|
5
5
|
"homepage": "http://bui.taopiaopiao.com",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"clsx": "^2.1.1",
|
|
44
44
|
"dayjs": "^1.11.7",
|
|
45
45
|
"swiper": "^8.1.5",
|
|
46
|
-
"@bifrostui/icons": "2.0.0-alpha.
|
|
47
|
-
"@bifrostui/styles": "2.0.0-alpha.
|
|
48
|
-
"@bifrostui/
|
|
49
|
-
"@bifrostui/
|
|
46
|
+
"@bifrostui/icons": "2.0.0-alpha.20",
|
|
47
|
+
"@bifrostui/styles": "2.0.0-alpha.20",
|
|
48
|
+
"@bifrostui/utils": "2.0.0-alpha.20",
|
|
49
|
+
"@bifrostui/types": "2.0.0-alpha.20"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@tarojs/components": "^3.0.0",
|