@workday/canvas-kit-react
Version:
The parent module that contains all Workday Canvas Kit React components
37 lines (36 loc) • 2.33 kB
JavaScript
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 }) }));
});