@wordpress/components
Version:
UI components for WordPress.
57 lines (53 loc) • 1.57 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TabPanel = void 0;
var _react = require("@ariakit/react");
var _element = require("@wordpress/element");
var _styles = require("./styles");
var _warning = _interopRequireDefault(require("@wordpress/warning"));
var _context = require("./context");
var _jsxRuntime = require("react/jsx-runtime");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const TabPanel = exports.TabPanel = (0, _element.forwardRef)(function TabPanel({
children,
tabId,
focusable = true,
...otherProps
}, ref) {
const context = (0, _context.useTabsContext)();
const selectedId = (0, _react.useStoreState)(context?.store, 'selectedId');
if (!context) {
globalThis.SCRIPT_DEBUG === true ? (0, _warning.default)('`Tabs.TabPanel` must be wrapped in a `Tabs` component.') : void 0;
return null;
}
const {
store,
instanceId
} = context;
const instancedTabId = `${instanceId}-${tabId}`;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_styles.TabPanel, {
ref: ref,
store: store
// For TabPanel, the id passed here is the id attribute of the DOM
// element.
// `tabId` is the id of the tab that controls this panel.
,
id: `${instancedTabId}-view`,
tabId: instancedTabId,
focusable: focusable,
...otherProps,
children: selectedId === instancedTabId && children
});
});
//# sourceMappingURL=tabpanel.js.map