UNPKG

@workday/canvas-kit-react

Version:

The parent module that contains all Workday Canvas Kit React components

124 lines (123 loc) 5.38 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TabsItem = exports.useTabsItem = exports.StyledTabItem = void 0; const React = __importStar(require("react")); const tokens_1 = require("@workday/canvas-kit-react/tokens"); const common_1 = require("@workday/canvas-kit-react/common"); const layout_1 = require("@workday/canvas-kit-react/layout"); const tooltip_1 = require("@workday/canvas-kit-react/tooltip"); const icon_1 = require("@workday/canvas-kit-react/icon"); const collection_1 = require("@workday/canvas-kit-react/collection"); const useTabsModel_1 = require("./useTabsModel"); const canvas_kit_styling_1 = require("@workday/canvas-kit-styling"); exports.StyledTabItem = (0, common_1.styled)(layout_1.Box.as('button'))(({ theme }) => ({ ...tokens_1.type.levels.subtext.large, fontWeight: tokens_1.type.properties.fontWeights.medium, border: 'none', backgroundColor: 'transparent', flex: '0 0 auto', alignItems: 'center', padding: `${tokens_1.space.xs} ${tokens_1.space.s}`, height: 52, boxSizing: 'border-box', cursor: 'pointer', color: tokens_1.colors.licorice300, position: 'relative', borderRadius: `${tokens_1.borderRadius.m} ${tokens_1.borderRadius.m} 0px 0px`, transition: 'background 150ms ease, color 150ms ease', '&:hover, &:focus-visible, &.hover, &.focus': { backgroundColor: tokens_1.colors.soap200, color: tokens_1.colors.blackPepper400, [icon_1.systemIconStencil.vars.color]: tokens_1.iconColors.hover, }, '&:focus-visible, &.focus': { outline: `${(0, canvas_kit_styling_1.px2rem)(2)} solid transparent`, ...(0, common_1.focusRing)({ inset: 'outer', width: 0, separation: 2 }, theme), }, '&:disabled, &[aria-disabled]': { color: tokens_1.colors.licorice100, [icon_1.systemIconStencil.vars.color]: tokens_1.iconColors.disabled, '&:hover': { cursor: 'auto', backgroundColor: `transparent`, [icon_1.systemIconStencil.vars.color]: tokens_1.iconColors.disabled, }, }, '&[aria-selected=true]': { color: theme.canvas.palette.primary.main, cursor: 'default', [icon_1.systemIconStencil.vars.color]: theme.canvas.palette.primary.main, '&:after': { position: 'absolute', // fallback for Windows high contrast theme borderBottom: `${tokens_1.space.xxxs} solid transparent`, borderRadius: `${tokens_1.borderRadius.m} ${tokens_1.borderRadius.m} 0px 0px`, backgroundColor: theme.canvas.palette.primary.main, bottom: 0, content: `''`, left: 0, marginTop: '-2px', width: '100%', }, '&:hover, &:focus': { backgroundColor: `transparent`, color: theme.canvas.palette.primary.main, }, }, }), ({ children, gap = tokens_1.space.xxs }) => { if (typeof children === 'string') { return common_1.ellipsisStyles; } else { return { display: 'flex', gap, }; } }); exports.useTabsItem = (0, common_1.composeHooks)((0, common_1.createElemPropsHook)(useTabsModel_1.useTabsModel)(({ state }, _, elemProps = {}) => { const name = elemProps['data-id'] || ''; const selected = !!elemProps['data-id'] && (0, collection_1.isSelected)(name, state); return { type: 'button', role: 'tab', 'aria-selected': selected, 'aria-controls': (0, common_1.slugify)(`tabpanel-${state.id}-${name}`), }; }), collection_1.useListItemSelect, collection_1.useOverflowListItemMeasure, collection_1.useListItemRovingFocus, collection_1.useListItemRegister); exports.TabsItem = (0, common_1.createSubcomponent)('button')({ displayName: 'Tabs.Item', modelHook: useTabsModel_1.useTabsModel, elemPropsHook: exports.useTabsItem, subComponents: { Icon: icon_1.SystemIcon, Text: common_1.EllipsisText, }, })(({ children, ...elemProps }, Element) => { const modality = (0, common_1.useModalityType)(); return (React.createElement(tooltip_1.OverflowTooltip, null, React.createElement(exports.StyledTabItem, { as: Element, maxWidth: modality === 'touch' ? undefined : 280, ...elemProps }, children))); });