Skip to content

Commit 8fdb609

Browse files
committed
Fix issue wehre markdown editor would not report the edit completion event correctly
1 parent 9095f2d commit 8fdb609

File tree

3 files changed

+17
-20
lines changed

3 files changed

+17
-20
lines changed

packages/core/src/data-grid-overlay-editor/private/markdown-overlay-editor.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,25 @@ import MarkdownDiv from "../../markdown-div/markdown-div";
33
import { GrowingEntry } from "../../growing-entry/growing-entry";
44
import { MarkdownOverlayEditorStyle } from "./markdown-overlay-editor-style";
55
import { EditPencil, Checkmark } from "../../common/utils";
6-
import type { Rectangle, SelectionRange } from "../../data-grid/data-grid-types";
6+
import type { MarkdownCell, Rectangle, SelectionRange } from "../../data-grid/data-grid-types";
77

88
interface Props {
99
readonly targetRect: Rectangle;
10-
readonly markdown: string;
1110
readonly onChange: (ev: React.ChangeEvent<HTMLTextAreaElement>) => void;
1211
readonly forceEditMode: boolean;
13-
readonly onFinish: () => void;
12+
readonly onFinish: (newValue?: MarkdownCell | undefined) => void;
1413
readonly validatedSelection?: SelectionRange;
1514

16-
readonly readonly: boolean;
15+
readonly value: MarkdownCell;
1716

1817
createNode?: (content: string) => DocumentFragment;
1918
}
2019

2120
export const MarkdownOverlayEditor: React.FunctionComponent<Props> = p => {
22-
const { markdown, onChange, forceEditMode, createNode, targetRect, readonly, onFinish, validatedSelection } = p;
21+
const { value, onChange, forceEditMode, createNode, targetRect, onFinish, validatedSelection } = p;
22+
23+
const markdown = value.data;
24+
const readonly = value.readonly === true;
2325

2426
const [editMode, setEditMode] = React.useState<boolean>(markdown === "" || forceEditMode);
2527
const onEditClick = React.useCallback(() => {
@@ -40,7 +42,7 @@ export const MarkdownOverlayEditor: React.FunctionComponent<Props> = p => {
4042
}}
4143
onChange={onChange}
4244
/>
43-
<div className={`edit-icon checkmark-hover ${addLeftPad}`} onClick={() => onFinish()}>
45+
<div className={`edit-icon checkmark-hover ${addLeftPad}`} onClick={() => onFinish(value)}>
4446
<Checkmark />
4547
</div>
4648
</MarkdownOverlayEditorStyle>

packages/core/src/data-grid/cells/markdown-cell.tsx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,13 @@ export const markdownCellRenderer: InternalCellRenderer<MarkdownCell> = {
2121
data: "",
2222
}),
2323
provideEditor: () => p => {
24-
const {
25-
onChange,
26-
value,
27-
target,
28-
onFinishedEditing,
29-
markdownDivCreateNode,
30-
forceEditMode,
31-
validatedSelection,
32-
} = p;
24+
const { onChange, value, target, onFinishedEditing, markdownDivCreateNode, forceEditMode, validatedSelection } =
25+
p;
3326
return (
3427
<MarkdownOverlayEditor
3528
onFinish={onFinishedEditing}
3629
targetRect={target}
37-
readonly={value.readonly === true}
38-
markdown={value.data}
30+
value={value}
3931
validatedSelection={validatedSelection}
4032
onChange={e =>
4133
onChange({

packages/core/test/data-grid-overlay.test.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as React from "react";
22
import { render } from "@testing-library/react";
33
import BubblesOverlayEditor from "../src/data-grid-overlay-editor/private/bubbles-overlay-editor";
44
import DrilldownOverlayEditor from "../src/data-grid-overlay-editor/private/drilldown-overlay-editor";
5-
import { ImageOverlayEditor } from "../src";
5+
import { GridCellKind, ImageOverlayEditor } from "../src";
66
import { MarkdownOverlayEditor } from "../src/data-grid-overlay-editor/private/markdown-overlay-editor";
77
import NumberOverlayEditor from "../src/data-grid-overlay-editor/private/number-overlay-editor";
88
import UriOverlayEditor from "../src/data-grid-overlay-editor/private/uri-overlay-editor";
@@ -28,10 +28,13 @@ describe("data-grid-overlay", () => {
2828
render(
2929
<MarkdownOverlayEditor
3030
forceEditMode={false}
31-
markdown="# Header"
31+
value={{
32+
kind: GridCellKind.Markdown,
33+
allowOverlay: true,
34+
data: "# Header",
35+
}}
3236
onChange={spy}
3337
onFinish={spy}
34-
readonly={false}
3538
targetRect={{ x: 0, y: 0, width: 200, height: 32 }}
3639
/>
3740
);

0 commit comments

Comments
 (0)