UNPKG

@fluentui/react-northstar

Version:
105 lines (103 loc) 4.12 kB
import * as React from 'react'; import * as PropTypes from 'prop-types'; import { compose, useFluentContext, useTelemetry, useAccessibility, useStyles, useUnhandledProps, getElementType, childrenExist } from '@fluentui/react-bindings'; import { commonPropTypes, createShorthandFactory } from '../../utils'; import { breadcrumbBehavior } from '@fluentui/accessibility'; import { BreadcrumbItem } from './BreadcrumbItem'; import { BreadcrumbDivider } from './BreadcrumbDivider'; import { BreadcrumbLink } from './BreadcrumbLink'; import { BreadcrumbContext } from './breadcrumbContext'; import { Ref } from '@fluentui/react-component-ref'; export var breadcrumbClassName = 'ui-breadcrumb'; /** * Breadcrumb is a component that indicates the path of the current page * * @accessibility * Implements [ARIA Breadcrumb](https://www.w3.org/TR/wai-aria-practices-1.1/#breadcrumb) design pattern. * Refers to [this ARIA discussion](https://github.com/w3c/aria-practices/issues/635), and uses arrow key to navigate between each breadcrumb item. * * @accessibilityIssues * [Under NVDA Browse mode - Breadcrumb is not navigable](https://github.com/w3c/aria-practices/issues/635 ) */ export var Breadcrumb = /*#__PURE__*/function () { var Breadcrumb = compose(function (props, ref, composeOptions) { var context = useFluentContext(); var _useTelemetry = useTelemetry(composeOptions.displayName, context.telemetry), setStart = _useTelemetry.setStart, setEnd = _useTelemetry.setEnd; setStart(); var accessibility = props.accessibility, children = props.children, content = props.content, className = props.className, design = props.design, styles = props.styles, variables = props.variables, size = props.size; var contextValue = React.useMemo(function () { return { size: size }; }, [size]); var getA11yProps = useAccessibility(accessibility, { debugName: composeOptions.displayName, rtl: context.rtl }); var _useStyles = useStyles(composeOptions.displayName, { className: composeOptions.className, composeOptions: composeOptions, mapPropsToInlineStyles: function mapPropsToInlineStyles() { return { className: className, design: design, styles: styles, variables: variables, size: size }; }, rtl: context.rtl, unstable_props: props }), classes = _useStyles.classes; var unhandledProps = useUnhandledProps(composeOptions.handledProps, props); var ElementType = getElementType(props); var result = getA11yProps.unstable_wrapWithFocusZone( /*#__PURE__*/React.createElement(ElementType, getA11yProps('root', Object.assign({ className: classes.root }, unhandledProps)), /*#__PURE__*/React.createElement(BreadcrumbContext.Provider, { value: contextValue }, /*#__PURE__*/React.createElement("div", getA11yProps('container', { className: classes.container }), childrenExist(children) ? children : content)))); var wrappedElement = ref ? /*#__PURE__*/React.createElement(Ref, { innerRef: ref }, result) : result; setEnd(); return wrappedElement; }, { className: breadcrumbClassName, displayName: 'Breadcrumb', handledProps: ['accessibility', 'as', 'children', 'className', 'content', 'design', 'styles', 'variables', 'size'], mapPropsToStylesProps: function mapPropsToStylesProps(_ref) { var size = _ref.size; return { size: size }; } }); Breadcrumb.defaultProps = { as: 'nav', size: 'medium', accessibility: breadcrumbBehavior }; Breadcrumb.propTypes = Object.assign({}, commonPropTypes.createCommon(), { size: PropTypes.oneOf(['smaller', 'small', 'medium', 'large']) }); Breadcrumb.Item = BreadcrumbItem; Breadcrumb.Divider = BreadcrumbDivider; Breadcrumb.Link = BreadcrumbLink; Breadcrumb.create = createShorthandFactory({ Component: Breadcrumb }); return Breadcrumb; }(); //# sourceMappingURL=Breadcrumb.js.map