/* eslint-disable jsx-a11y/no-noninteractive-tabindex */ import React, { ForwardedRef, forwardRef, useCallback, useMemo } from "react"; import { keyCodes } from "../../../../constants"; import { SubIcon, VibeComponentProps } from "../../../../types"; import cx from "classnames"; import styles from "./BreadcrumbContent.module.scss"; export interface BreadcrumbContentProps extends VibeComponentProps { isClickable?: boolean; link?: string; onClick?: () => void; text?: string; icon?: SubIcon; isCurrent?: boolean; disabled?: boolean; showText?: boolean; } const iconProps = { className: styles.breadcrumbIcon, size: 14, clickable: false }; export const BreadcrumbContent: React.ForwardRefExoticComponent> = forwardRef( ( { className, isClickable, link, onClick, text, icon, isCurrent, disabled = false, showText = true }, ref: ForwardedRef ) => { const Icon = icon; const onKeyDown = useCallback( (event: React.KeyboardEvent) => { if (event.key === keyCodes.ENTER || event.key === keyCodes.SPACE) { link ? (window.parent.location.href = link) : onClick(); } }, [onClick, link] ); const tabIndex = useMemo(() => (disabled ? -1 : 0), [disabled]); if (isClickable && (link || onClick)) { if (link) { return ( {Icon && } {showText && ( {text} )} ); } return ( {Icon && } {showText && ( {text} )} ); } return ( {Icon && } {showText && ( {text} )} ); } );