diff --git a/src/mantine-tiptap/src/RichTextEditor.context.ts b/src/mantine-tiptap/src/RichTextEditor.context.ts index 8a79924bb08..a68d5355c36 100644 --- a/src/mantine-tiptap/src/RichTextEditor.context.ts +++ b/src/mantine-tiptap/src/RichTextEditor.context.ts @@ -1,12 +1,17 @@ +import { Styles, ClassNames } from '@mantine/core'; import { createSafeContext } from '@mantine/utils'; import { Editor } from '@tiptap/react'; import { RichTextEditorLabels } from './labels'; +import type { RichTextEditorStylesNames } from './RichTextEditor'; interface RichTextEditorContext { editor: Editor; labels: RichTextEditorLabels; withCodeHighlightStyles: boolean; withTypographyStyles: boolean; + classNames: ClassNames; + styles: Styles; + unstyled: boolean; } export const [RichTextEditorProvider, useRichTextEditorContext] = diff --git a/src/mantine-tiptap/src/RichTextEditor.story.tsx b/src/mantine-tiptap/src/RichTextEditor.story.tsx index 73fdaf8d435..c3c032a3480 100644 --- a/src/mantine-tiptap/src/RichTextEditor.story.tsx +++ b/src/mantine-tiptap/src/RichTextEditor.story.tsx @@ -305,3 +305,25 @@ export function PlaceholderExtension() { ); } + +export function ControlStylesApi() { + const editor = useEditor({ + extensions: [StarterKit, Link], + content: '', + }); + + return ( +
+ + + + + + + + + + +
+ ); +} diff --git a/src/mantine-tiptap/src/RichTextEditor.tsx b/src/mantine-tiptap/src/RichTextEditor.tsx index 54d3ee89e5e..4bcfa27e6b0 100644 --- a/src/mantine-tiptap/src/RichTextEditor.tsx +++ b/src/mantine-tiptap/src/RichTextEditor.tsx @@ -1,12 +1,6 @@ /* eslint-disable react/no-unused-prop-types */ import React, { useMemo, forwardRef } from 'react'; -import { - Box, - useComponentDefaultProps, - DefaultProps, - Selectors, - StylesApiProvider, -} from '@mantine/core'; +import { Box, useComponentDefaultProps, DefaultProps, Selectors } from '@mantine/core'; import { Editor } from '@tiptap/react'; import { ForwardRefWithStaticComponents } from '@mantine/utils'; import { RichTextEditorProvider } from './RichTextEditor.context'; @@ -115,15 +109,21 @@ export const RichTextEditor: RichTextEditorComponent = forwardRef< const mergedLabels = useMemo(() => ({ ...DEFAULT_LABELS, ...labels }), [labels]); return ( - - - - {children} - - - + + + {children} + + ); }) as any; diff --git a/src/mantine-tiptap/src/Toolbar/Toolbar.tsx b/src/mantine-tiptap/src/Toolbar/Toolbar.tsx index 713f7690806..ec9da1cd43e 100644 --- a/src/mantine-tiptap/src/Toolbar/Toolbar.tsx +++ b/src/mantine-tiptap/src/Toolbar/Toolbar.tsx @@ -1,11 +1,6 @@ import React, { forwardRef } from 'react'; -import { - Group, - DefaultProps, - useComponentDefaultProps, - Selectors, - useContextStylesApi, -} from '@mantine/core'; +import { Group, DefaultProps, useComponentDefaultProps, Selectors } from '@mantine/core'; +import { useRichTextEditorContext } from '../RichTextEditor.context'; import useStyles from './Toolbar.styles'; export type ToolbarStylesNames = Selectors; @@ -31,10 +26,15 @@ export const Toolbar = forwardRef((p props ); - const { classNames, styles, unstyled } = useContextStylesApi(); + const ctx = useRichTextEditorContext(); const { classes, cx } = useStyles( { sticky, stickyOffset }, - { name: 'RichTextEditor', classNames, styles, unstyled } + { + name: 'RichTextEditor', + classNames: ctx.classNames, + styles: ctx.styles, + unstyled: ctx.unstyled, + } ); return ( diff --git a/src/mantine-tiptap/src/controls/ColorPickerControl/ColorPickerControl.tsx b/src/mantine-tiptap/src/controls/ColorPickerControl/ColorPickerControl.tsx index 6c43a0edf55..528745639ec 100644 --- a/src/mantine-tiptap/src/controls/ColorPickerControl/ColorPickerControl.tsx +++ b/src/mantine-tiptap/src/controls/ColorPickerControl/ColorPickerControl.tsx @@ -10,7 +10,6 @@ import { ActionIcon, Tooltip, ColorPickerProps, - useContextStylesApi, useComponentDefaultProps, } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; @@ -41,8 +40,7 @@ export const ColorPickerControl = forwardRef('palette'); const currentColor = editor?.getAttributes('textStyle').color || '#000'; diff --git a/src/mantine-tiptap/src/controls/Control/Control.tsx b/src/mantine-tiptap/src/controls/Control/Control.tsx index 934500801f0..6c9b8f95d0a 100644 --- a/src/mantine-tiptap/src/controls/Control/Control.tsx +++ b/src/mantine-tiptap/src/controls/Control/Control.tsx @@ -1,11 +1,6 @@ import React, { forwardRef } from 'react'; -import { - UnstyledButton, - DefaultProps, - Selectors, - useContextStylesApi, - useComponentDefaultProps, -} from '@mantine/core'; +import { UnstyledButton, DefaultProps, Selectors, useComponentDefaultProps } from '@mantine/core'; +import { useRichTextEditorContext } from '../../RichTextEditor.context'; import useStyles from './Control.styles'; export type ControlStylesNames = Selectors; @@ -36,7 +31,7 @@ export const Control = forwardRef props ); - const { classNames, styles, unstyled } = useContextStylesApi(); + const { classNames, styles, unstyled } = useRichTextEditorContext(); const { classes, cx } = useStyles(null, { name: 'RichTextEditor', classNames, diff --git a/src/mantine-tiptap/src/controls/ControlsGroup/ControlsGroup.tsx b/src/mantine-tiptap/src/controls/ControlsGroup/ControlsGroup.tsx index dc6deb147da..a74fe752352 100644 --- a/src/mantine-tiptap/src/controls/ControlsGroup/ControlsGroup.tsx +++ b/src/mantine-tiptap/src/controls/ControlsGroup/ControlsGroup.tsx @@ -1,11 +1,6 @@ import React, { forwardRef } from 'react'; -import { - DefaultProps, - Box, - useComponentDefaultProps, - Selectors, - useContextStylesApi, -} from '@mantine/core'; +import { DefaultProps, Box, useComponentDefaultProps, Selectors } from '@mantine/core'; +import { useRichTextEditorContext } from '../../RichTextEditor.context'; import useStyles from './ControlsGroup.styles'; export type ControlsGroupStylesNames = Selectors; @@ -18,13 +13,13 @@ const defaultProps: Partial = {}; export const ControlsGroup = forwardRef( (props, ref) => { - const { classNames, styles, unstyled } = useContextStylesApi(); const { className, children, ...others } = useComponentDefaultProps( 'RichTextEditorControlsGroup', defaultProps, props ); + const { classNames, styles, unstyled } = useRichTextEditorContext(); const { classes, cx } = useStyles(null, { name: 'RichTextEditor', classNames, diff --git a/src/mantine-tiptap/src/controls/LinkControl/LinkControl.tsx b/src/mantine-tiptap/src/controls/LinkControl/LinkControl.tsx index 288f9718169..d5b602eed30 100644 --- a/src/mantine-tiptap/src/controls/LinkControl/LinkControl.tsx +++ b/src/mantine-tiptap/src/controls/LinkControl/LinkControl.tsx @@ -9,7 +9,6 @@ import { PopoverProps, Selectors, useComponentDefaultProps, - useContextStylesApi, } from '@mantine/core'; import { useDisclosure, useInputState, useWindowEvent } from '@mantine/hooks'; import { ControlBase, RichTextEditorControlBaseProps } from '../ControlBase/ControlBase'; @@ -40,9 +39,8 @@ export const LinkControl = forwardRef