@uxf/ui 11.40.0 → 11.42.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.
- package/package.json +4 -4
- package/tabs/README.md +15 -7
- package/tabs/components/tabs-panel.js +4 -0
- package/tabs/create-tab-id.d.ts +1 -0
- package/tabs/create-tab-id.js +6 -0
- package/tabs/panel-content.d.ts +9 -0
- package/tabs/panel-content.js +35 -0
- package/tabs/tabs.d.ts +2 -0
- package/tabs/tabs.js +4 -5
- package/tabs/tabs.stories.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/ui",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.42.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@floating-ui/react": "0.26.23",
|
|
25
25
|
"@headlessui/react": "1.7.14",
|
|
26
|
-
"@uxf/core": "11.
|
|
27
|
-
"@uxf/core-react": "11.
|
|
26
|
+
"@uxf/core": "11.42.0",
|
|
27
|
+
"@uxf/core-react": "11.42.0",
|
|
28
28
|
"@uxf/datepicker": "11.32.0",
|
|
29
|
-
"@uxf/styles": "11.
|
|
29
|
+
"@uxf/styles": "11.42.0",
|
|
30
30
|
"color2k": "2.0.3",
|
|
31
31
|
"dayjs": "1.11.13",
|
|
32
32
|
"jump.js": "1.0.2",
|
package/tabs/README.md
CHANGED
|
@@ -28,19 +28,27 @@ function Example() {
|
|
|
28
28
|
}
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
###
|
|
31
|
+
### Tabs usage with separate tab content
|
|
32
32
|
|
|
33
33
|
```tsx
|
|
34
|
-
import {
|
|
34
|
+
import {Tabs} from "@uxf/ui/tabs";
|
|
35
35
|
|
|
36
36
|
function Example() {
|
|
37
37
|
const [activeTab, setActiveTab] = useState("tab-1");
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
return (
|
|
40
|
-
<
|
|
41
|
-
<Tabs
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
<div>
|
|
41
|
+
<Tabs value={activeTab} onChange={setActiveTab}>
|
|
42
|
+
<Tabs.Panel name="tab-1" label="Tab 1"/>
|
|
43
|
+
<Tabs.Panel name="tab-2" label="Tab 2"/>
|
|
44
|
+
</Tabs>
|
|
45
|
+
<Tabs.PanelContent activeTab={activeTab} name="tab-1">
|
|
46
|
+
Content outside the tabs
|
|
47
|
+
</Tabs.PanelContent>
|
|
48
|
+
<Tabs.PanelContent activeTab={activeTab} name="tab-2">
|
|
49
|
+
Content outside the tabs
|
|
50
|
+
</Tabs.PanelContent>
|
|
51
|
+
</div>
|
|
44
52
|
);
|
|
45
53
|
}
|
|
46
54
|
```
|
|
@@ -6,7 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.TabsPanel = TabsPanel;
|
|
7
7
|
const classes_1 = require("@uxf/core/constants/classes");
|
|
8
8
|
const cx_1 = require("@uxf/core/utils/cx");
|
|
9
|
+
const is_nil_1 = require("@uxf/core/utils/is-nil");
|
|
9
10
|
const react_1 = __importDefault(require("react"));
|
|
10
11
|
function TabsPanel(props) {
|
|
12
|
+
if ((0, is_nil_1.isNil)(props.children)) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
11
15
|
return props.isAlwaysMounted || props.isActive ? (react_1.default.createElement("div", { className: (0, cx_1.cx)("uxf-tabs__panel", !props.isActive && `uxf-tabs__panel--${classes_1.CLASSES.IS_HIDDEN} ${classes_1.CLASSES.IS_HIDDEN}`, props.className) }, props.children)) : null;
|
|
12
16
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createTabId(containerId: string, tabName: string): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface PanelContentProps {
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
name: string;
|
|
5
|
+
activeTab: string;
|
|
6
|
+
shouldStayRendered?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function PanelContent(props: PanelContentProps): React.JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.PanelContent = PanelContent;
|
|
27
|
+
const cx_1 = require("@uxf/core/utils/cx");
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
29
|
+
const create_tab_id_1 = require("./create-tab-id");
|
|
30
|
+
function PanelContent(props) {
|
|
31
|
+
const id = (0, react_1.useId)();
|
|
32
|
+
const isTabActive = props.activeTab === props.name;
|
|
33
|
+
const isTabHidden = !isTabActive;
|
|
34
|
+
return (react_1.default.createElement("div", { "aria-labelledby": (0, create_tab_id_1.createTabId)(id, props.name), hidden: isTabHidden, id: props.name, role: "tabpanel" }, (props.shouldStayRendered || isTabActive) && (react_1.default.createElement("div", { className: (0, cx_1.cx)(props.className), hidden: props.activeTab !== props.name }, props.children))));
|
|
35
|
+
}
|
package/tabs/tabs.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TabsVariant } from "@uxf/ui/tabs/theme";
|
|
2
2
|
import React, { ReactNode } from "react";
|
|
3
3
|
import { Panel } from "./panel";
|
|
4
|
+
import { PanelContent } from "./panel-content";
|
|
4
5
|
export interface TabsProps<TValue> {
|
|
5
6
|
className?: string;
|
|
6
7
|
classNameButtonList?: string;
|
|
@@ -16,5 +17,6 @@ declare namespace Root {
|
|
|
16
17
|
}
|
|
17
18
|
export declare const Tabs: typeof Root & {
|
|
18
19
|
Panel: typeof Panel;
|
|
20
|
+
PanelContent: typeof PanelContent;
|
|
19
21
|
};
|
|
20
22
|
export {};
|
package/tabs/tabs.js
CHANGED
|
@@ -32,10 +32,9 @@ const tabs_button_list_1 = require("./components/tabs-button-list");
|
|
|
32
32
|
const tabs_panel_1 = require("./components/tabs-panel");
|
|
33
33
|
const tabs_panels_1 = require("./components/tabs-panels");
|
|
34
34
|
const tabs_root_1 = require("./components/tabs-root");
|
|
35
|
+
const create_tab_id_1 = require("./create-tab-id");
|
|
35
36
|
const panel_1 = require("./panel");
|
|
36
|
-
|
|
37
|
-
return `${containerId}-${tabName}`;
|
|
38
|
-
}
|
|
37
|
+
const panel_content_1 = require("./panel-content");
|
|
39
38
|
function Root(props) {
|
|
40
39
|
const id = (0, react_1.useId)();
|
|
41
40
|
const buttonListRef = (0, react_1.useRef)(null);
|
|
@@ -64,7 +63,7 @@ function Root(props) {
|
|
|
64
63
|
};
|
|
65
64
|
const hasPanelWithChildren = (0, is_not_nil_1.isNotNil)(tabPanels.find((panel) => (0, is_not_nil_1.isNotNil)(panel.props.children)));
|
|
66
65
|
return (react_1.default.createElement(tabs_root_1.TabsRoot, { className: props.className, isVertical: props.isVertical, variant: props.variant },
|
|
67
|
-
react_1.default.createElement(tabs_button_list_1.TabsButtonList, { className: props.classNameButtonList, isVertical: props.isVertical, onKeyDown: onKeyDown, ref: buttonListRef, style: buttonListStyle, variant: props.variant }, tabPanels.map((panel, index) => (react_1.default.createElement(tabs_button_1.TabsButton, { className: panel.props.classNameButton, id:
|
|
66
|
+
react_1.default.createElement(tabs_button_list_1.TabsButtonList, { className: props.classNameButtonList, isVertical: props.isVertical, onKeyDown: onKeyDown, ref: buttonListRef, style: buttonListStyle, variant: props.variant }, tabPanels.map((panel, index) => (react_1.default.createElement(tabs_button_1.TabsButton, { className: panel.props.classNameButton, id: (0, create_tab_id_1.createTabId)(id, panel.props.name), isActive: panel.props.name === props.value, isDisabled: panel.props.isDisabled, isHidden: panel.props.isHidden, isVertical: props.isVertical, key: panel.props.name, onClick: () => props.onChange(panel.props.name), ref: (ref) => {
|
|
68
67
|
tabRefs.current[index] = ref;
|
|
69
68
|
}, variant: props.variant }, typeof panel.props.label === "function"
|
|
70
69
|
? panel.props.label({ isActive: panel.props.name === props.value })
|
|
@@ -72,4 +71,4 @@ function Root(props) {
|
|
|
72
71
|
hasPanelWithChildren && (react_1.default.createElement(tabs_panels_1.TabsPanels, null, tabPanels.map((panel) => (react_1.default.createElement(tabs_panel_1.TabsPanel, { className: panel.props.classNamePanel, isActive: panel.props.name === props.value, isAlwaysMounted: panel.props.isAlwaysMounted, isHidden: panel.props.isHidden, key: panel.props.name }, panel.props.children)))))));
|
|
73
72
|
}
|
|
74
73
|
Root.displayName = "UxfUiTabs";
|
|
75
|
-
exports.Tabs = Object.assign(Root, { Panel: panel_1.Panel });
|
|
74
|
+
exports.Tabs = Object.assign(Root, { Panel: panel_1.Panel, PanelContent: panel_content_1.PanelContent });
|
package/tabs/tabs.stories.js
CHANGED
|
@@ -44,7 +44,7 @@ function Default() {
|
|
|
44
44
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
45
45
|
react_1.default.createElement(toggle_1.Toggle, { className: "mb-5", label: "Vertical", name: "isVertical", onChange: setIsVertical, value: isVertical }),
|
|
46
46
|
react_1.default.createElement(tabs_1.Tabs, { isVertical: isVertical, onChange: setActiveTab, value: activeTab },
|
|
47
|
-
react_1.default.createElement(tabs_1.Tabs.Panel, { label: "Basic", name: TabEnum.Basic }
|
|
47
|
+
react_1.default.createElement(tabs_1.Tabs.Panel, { label: "Basic", name: TabEnum.Basic }),
|
|
48
48
|
react_1.default.createElement(tabs_1.Tabs.Panel, { isDisabled: true, label: "Disabled", name: TabEnum.Disabled }, "Disabled tab"),
|
|
49
49
|
react_1.default.createElement(tabs_1.Tabs.Panel, { isHidden: true, label: "Hidden", name: TabEnum.Hidden }, "Hidden"),
|
|
50
50
|
react_1.default.createElement(tabs_1.Tabs.Panel, { isAlwaysMounted: true, label: "Always mounted", name: TabEnum.AlwaysMounted }, "Always mounted tab"),
|