@yamada-ui/tabs
Version:
Yamada UI tabs component
56 lines (54 loc) • 1.64 kB
JavaScript
"use client"
import {
useTabDescendant,
useTabPanelContext,
useTabPanelDescendant,
useTabsContext
} from "./chunk-BUHUHEQA.mjs";
// src/tab-panel.tsx
import { forwardRef, ui } from "@yamada-ui/core";
import { useLazyDisclosure } from "@yamada-ui/use-disclosure";
import { cx, mergeRefs } from "@yamada-ui/utils";
import { useId, useRef } from "react";
import { jsx } from "react/jsx-runtime";
var TabPanel = forwardRef(
({ id, className, children, ...rest }, ref) => {
var _a;
const uuid = useId();
const { lazy: enabled, lazyBehavior: mode, styles } = useTabsContext();
const { index, selected } = useTabPanelContext();
const { register } = useTabPanelDescendant();
const { descendants } = useTabDescendant();
const hasBeenSelected = useRef(false);
const tabId = (_a = descendants.value(index)) == null ? void 0 : _a.node.id;
if (selected) hasBeenSelected.current = true;
const shouldRenderChildren = useLazyDisclosure({
enabled,
isSelected: selected,
mode,
wasSelected: hasBeenSelected.current
});
const css = { ...styles.tabPanel };
id != null ? id : id = uuid;
return /* @__PURE__ */ jsx(
ui.div,
{
id,
ref: mergeRefs(register, ref),
className: cx("ui-tabs__panel", className),
"aria-labelledby": tabId,
role: "tabpanel",
__css: css,
...rest,
hidden: !selected,
children: shouldRenderChildren ? children : null
}
);
}
);
TabPanel.displayName = "TabPanel";
TabPanel.__ui__ = "TabPanel";
export {
TabPanel
};
//# sourceMappingURL=chunk-IYJM52AT.mjs.map