@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/ui",
3
- "version": "11.40.0",
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.35.0",
27
- "@uxf/core-react": "11.38.3",
26
+ "@uxf/core": "11.42.0",
27
+ "@uxf/core-react": "11.42.0",
28
28
  "@uxf/datepicker": "11.32.0",
29
- "@uxf/styles": "11.35.0",
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
- ### Only buttons
31
+ ### Tabs usage with separate tab content
32
32
 
33
33
  ```tsx
34
- import { Tabs } from "@uxf/ui/tabs";
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
- <Tabs value={activeTab} onChange={setActiveTab}>
41
- <Tabs.Panel name="tab-1" label="Tab 1" />
42
- <Tabs.Panel name="tab-2" label="Tab 2" />
43
- </Tabs>
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,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTabId = createTabId;
4
+ function createTabId(containerId, tabName) {
5
+ return `${containerId}-${tabName}`;
6
+ }
@@ -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
- function createId(containerId, tabName) {
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: createId(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) => {
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 });
@@ -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 }, "Basic tab"),
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"),