UNPKG

@zendeskgarden/react-tabs

Version:

Components and render prop containers relating to the Garden Design System.

51 lines (48 loc) 1.34 kB
/** * Copyright Zendesk, Inc. * * Use of this source code is governed under the Apache License, Version 2.0 * found at http://www.apache.org/licenses/LICENSE-2.0. */ import React from 'react'; import PropTypes from 'prop-types'; import { mergeRefs } from 'react-merge-refs'; import { StyledTab } from '../styled/StyledTab.js'; import '../styled/StyledTabList.js'; import '../styled/StyledTabPanel.js'; import '../styled/StyledTabs.js'; import { useTabsContext } from '../utils/useTabsContext.js'; const Tab = React.forwardRef((_ref, ref) => { let { disabled, item, ...otherProps } = _ref; const tabsPropGetters = useTabsContext(); if (disabled || !tabsPropGetters) { return React.createElement(StyledTab, Object.assign({ role: "tab", "aria-disabled": disabled, ref: ref, $isVertical: tabsPropGetters?.isVertical }, otherProps)); } const { ref: tabRef, ...tabProps } = tabsPropGetters.getTabProps({ value: item }); return React.createElement(StyledTab, Object.assign({ $isSelected: item === tabsPropGetters.selectedValue, $isVertical: tabsPropGetters.isVertical }, tabProps, otherProps, { ref: mergeRefs([tabRef, ref]) })); }); Tab.displayName = 'Tabs.Tab'; Tab.propTypes = { disabled: PropTypes.bool, item: PropTypes.any }; export { Tab };