UNPKG

@workday/canvas-kit-react

Version:

The parent module that contains all Workday Canvas Kit React components

37 lines (36 loc) 2.33 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { createElemPropsHook, useLocalRef, composeHooks, createSubcomponent, useForkRef, } from '@workday/canvas-kit-react/common'; import { OverflowTooltip } from '@workday/canvas-kit-react/tooltip'; import { useListItemRegister, useOverflowListItemMeasure, } from '@workday/canvas-kit-react/collection'; import { Text } from '@workday/canvas-kit-react/text'; import { system } from '@workday/canvas-tokens-web'; import { createStencil, handleCsProp, px2rem } from '@workday/canvas-kit-styling'; import { useBreadcrumbsModel } from './hooks/useBreadcrumbsModel'; export const breadcrumbsCurrentItemStencil = createStencil({ vars: { maxWidth: '', }, base: { name: "47b44e", styles: "box-sizing:border-box;font-family:var(--cnvs-sys-font-family-default);font-weight:var(--cnvs-sys-font-weight-medium);line-height:var(--cnvs-sys-line-height-subtext-large);font-size:var(--cnvs-sys-font-size-subtext-large);letter-spacing:var(--cnvs-base-letter-spacing-150);color:var(--cnvs-sys-color-text-default);display:inline-block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:var(--maxWidth-breadcrumbs-current-item-e1cc6f);" } }, "breadcrumbs-current-item-e1cc6f"); export const useBreadcrumbsItem = composeHooks(createElemPropsHook(useBreadcrumbsModel)((_model, ref, elemProps) => { const { localRef } = useLocalRef(useForkRef(ref)); let shouldShowTooltip = false; const refCurrent = localRef.current; if (refCurrent) { const { scrollWidth, clientWidth } = refCurrent; shouldShowTooltip = scrollWidth > clientWidth; } return { tabIndex: shouldShowTooltip ? 0 : undefined, ref: localRef, }; }), useOverflowListItemMeasure, useListItemRegister); export const BreadcrumbsCurrentItem = createSubcomponent('li')({ displayName: 'Breadcrumbs.Item', modelHook: useBreadcrumbsModel, elemPropsHook: useBreadcrumbsItem, })(({ children, tooltipProps = {}, maxWidth = '350px', ...elemProps }, Element) => { return (_jsx(OverflowTooltip, { ...tooltipProps, children: _jsx(Text, { as: Element, ...handleCsProp(elemProps, breadcrumbsCurrentItemStencil({ maxWidth: typeof maxWidth === 'number' ? px2rem(maxWidth) : maxWidth, })), children: children }) })); });