mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
* feat: added heading 3 in the editor summary markings * feat: fixed editor and summary bar sizing * feat: added `issue-embed` extension * feat: exposed issue embed extension * feat: added main embed config configuration to document editor body * feat: added peek overview and issue embed fetch function * feat: enabled slash commands to take additonal suggestions from editors * chore: replaced `IssueEmbedWidget` into widget extension * chore: removed issue embed from previous places * feat: added issue embed suggestion extension * feat: added issue embed suggestion renderer * feat: added issue embed suggestions into extensions module * feat: added issues in issueEmbedConfiguration in document editor * chore: package fixes * chore: removed log statements * feat: added title updation logic into document editor * fix: issue suggestion items, not rendering issue widget on enter * feat: added error card for issue widget * feat: improved focus logic for issue search and navigate * feat: appended transactionid for issueWidgetTransaction * chore: packages update * feat: disabled editing of title in readonly mode * feat: added issueEmbedConfig in readonly editor * fix: issue suggestions not loading after structure changed to object * feat: added toast messages for success/error messages from doc editor * fix: issue suggestions sorting issue * fix: formatting errors resolved * fix: infinite reloading of the readonly document editor * fix: css in avatar of issue widget card * feat: added show alert on pages reload * feat: added saving state for the pages editor * fix: issue with heading 3 in side bar view * style: updated issue suggestions dropdown ui * fix: Pages intiliazation and mutation with updated MobX store * fixed image uploads being cancelled on refocus due to swr * fix: issue with same description rerendering empty content fixed * fix: scroll in issue suggestion view * fix: added submission prop * fix: Updated the comment update to take issue id in inbox issues * feat:changed date representation in IssueEmbedCard * fix: page details mutation with optimistic updates using swr * fix: menu options in read only editor with auth fixed * fix: add error handling for title and page desc * fixed yarn.lock * fix: read-only editor title wrapping * fix: build error with rich text editor --------- Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com> Co-authored-by: Palanikannan1437 <73993394+Palanikannan1437@users.noreply.github.com>
122 lines
2.8 KiB
TypeScript
122 lines
2.8 KiB
TypeScript
"use client";
|
|
import * as React from "react";
|
|
import {
|
|
EditorContainer,
|
|
EditorContentWrapper,
|
|
getEditorClassNames,
|
|
useEditor,
|
|
} from "@plane/editor-core";
|
|
import { EditorBubbleMenu } from "./menus/bubble-menu";
|
|
import { RichTextEditorExtensions } from "./extensions";
|
|
import {
|
|
DeleteImage,
|
|
IMentionSuggestion,
|
|
RestoreImage,
|
|
UploadImage,
|
|
} from "@plane/editor-types";
|
|
|
|
export type IRichTextEditor = {
|
|
value: string;
|
|
dragDropEnabled?: boolean;
|
|
uploadFile: UploadImage;
|
|
restoreFile: RestoreImage;
|
|
deleteFile: DeleteImage;
|
|
noBorder?: boolean;
|
|
borderOnFocus?: boolean;
|
|
cancelUploadImage?: () => any;
|
|
rerenderOnPropsChange?: {
|
|
id: string;
|
|
description_html: string;
|
|
};
|
|
customClassName?: string;
|
|
editorContentCustomClassNames?: string;
|
|
onChange?: (json: any, html: string) => void;
|
|
setIsSubmitting?: (
|
|
isSubmitting: "submitting" | "submitted" | "saved",
|
|
) => void;
|
|
setShouldShowAlert?: (showAlert: boolean) => void;
|
|
forwardedRef?: any;
|
|
debouncedUpdatesEnabled?: boolean;
|
|
mentionHighlights?: string[];
|
|
mentionSuggestions?: IMentionSuggestion[];
|
|
};
|
|
|
|
export interface RichTextEditorProps extends IRichTextEditor {
|
|
forwardedRef?: React.Ref<EditorHandle>;
|
|
}
|
|
|
|
interface EditorHandle {
|
|
clearEditor: () => void;
|
|
setEditorValue: (content: string) => void;
|
|
}
|
|
|
|
const RichTextEditor = ({
|
|
onChange,
|
|
dragDropEnabled,
|
|
debouncedUpdatesEnabled,
|
|
setIsSubmitting,
|
|
setShouldShowAlert,
|
|
editorContentCustomClassNames,
|
|
value,
|
|
uploadFile,
|
|
deleteFile,
|
|
noBorder,
|
|
cancelUploadImage,
|
|
borderOnFocus,
|
|
customClassName,
|
|
restoreFile,
|
|
forwardedRef,
|
|
mentionHighlights,
|
|
rerenderOnPropsChange,
|
|
mentionSuggestions,
|
|
}: RichTextEditorProps) => {
|
|
const editor = useEditor({
|
|
onChange,
|
|
debouncedUpdatesEnabled,
|
|
setIsSubmitting,
|
|
setShouldShowAlert,
|
|
value,
|
|
uploadFile,
|
|
cancelUploadImage,
|
|
deleteFile,
|
|
restoreFile,
|
|
forwardedRef,
|
|
rerenderOnPropsChange,
|
|
extensions: RichTextEditorExtensions(
|
|
uploadFile,
|
|
setIsSubmitting,
|
|
dragDropEnabled,
|
|
),
|
|
mentionHighlights,
|
|
mentionSuggestions,
|
|
});
|
|
|
|
const editorClassNames = getEditorClassNames({
|
|
noBorder,
|
|
borderOnFocus,
|
|
customClassName,
|
|
});
|
|
|
|
if (!editor) return null;
|
|
|
|
return (
|
|
<EditorContainer editor={editor} editorClassNames={editorClassNames}>
|
|
{editor && <EditorBubbleMenu editor={editor} />}
|
|
<div className="flex flex-col">
|
|
<EditorContentWrapper
|
|
editor={editor}
|
|
editorContentCustomClassNames={editorContentCustomClassNames}
|
|
/>
|
|
</div>
|
|
</EditorContainer>
|
|
);
|
|
};
|
|
|
|
const RichTextEditorWithRef = React.forwardRef<EditorHandle, IRichTextEditor>(
|
|
(props, ref) => <RichTextEditor {...props} forwardedRef={ref} />,
|
|
);
|
|
|
|
RichTextEditorWithRef.displayName = "RichTextEditorWithRef";
|
|
|
|
export { RichTextEditor, RichTextEditorWithRef };
|