import React, { type HTMLAttributes, type MouseEvent } from 'react' import classnames from 'classnames' import { Label } from '~components/Label' import { VisuallyHidden } from '~components/VisuallyHidden' import { type OverrideClassName } from '~components/types/OverrideClassName' import { RichTextContent, type RichTextContentProps } from '../RichTextContent' import { type EditorContentArray } from '../types' import styles from './EditableRichTextContent.module.scss' export type EditableRichTextContentProps = { onClick: (event: MouseEvent) => void content: EditorContentArray labelText: string isLabelHidden?: boolean contentProps?: Omit } & OverrideClassName, 'onClick' | 'content'>> const handleEditableClick = ( e: MouseEvent, onClick: (event: MouseEvent) => void, ): void => { if ((e.target as HTMLElement).hasAttribute('href')) { return } return onClick(e) } export const EditableRichTextContent = ({ onClick, content, classNameOverride, labelText, isLabelHidden = false, contentProps, ...restProps }: EditableRichTextContentProps): JSX.Element => ( <> {!isLabelHidden && } {/* Disabling these a11y linting errors because there is a that mitigates these concerns. The onClick here is just an additional layer. */} {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */} handleEditableClick(e, onClick)} className={classnames(styles.editableContainer, classNameOverride)} {...restProps} > > ) EditableRichTextContent.displayName = 'EditableRichTextContent'