Skip to content

Commit 048490f

Browse files
authored
feat: add onBeforeMoveEnd (#320)
* feat: add onBeforeMoveEnd * fix: modify params
1 parent 2b0b626 commit 048490f

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

packages/core/src/editor/Editor.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const Editor: React.FC<Partial<Options>> = ({
1616
children,
1717
onRender,
1818
onNodesChange,
19+
onBeforeMoveEnd,
1920
resolver,
2021
enabled,
2122
indicator,
@@ -30,10 +31,17 @@ export const Editor: React.FC<Partial<Options>> = ({
3031

3132
const options = useMemo(() => {
3233
return pickBy(
33-
{ onRender, onNodesChange, resolver, enabled, indicator },
34+
{
35+
onRender,
36+
onNodesChange,
37+
onBeforeMoveEnd,
38+
resolver,
39+
enabled,
40+
indicator,
41+
},
3442
(value) => value !== undefined
3543
);
36-
}, [enabled, indicator, onNodesChange, onRender, resolver]);
44+
}, [enabled, indicator, onBeforeMoveEnd, onNodesChange, onRender, resolver]);
3745

3846
const context = useEditorStore(
3947
options,

packages/core/src/editor/actions.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,13 @@ const Methods = (
275275
throw new Error(err);
276276
});
277277

278+
// modify node props
279+
state.options.onBeforeMoveEnd(
280+
targetNode,
281+
newParent,
282+
state.nodes[currentParentId]
283+
);
284+
278285
const currentParent = state.nodes[currentParentId];
279286
const currentParentNodes = currentParent.data.nodes;
280287

packages/core/src/editor/store.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const editorInitialState: EditorState = {
2222
options: {
2323
onNodesChange: () => null,
2424
onRender: ({ render }) => render,
25+
onBeforeMoveEnd: () => null,
2526
resolver: {},
2627
enabled: true,
2728
indicator: {

packages/core/src/interfaces/editor.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { QueryCallbacksFor, Delete, PatchListenerAction } from '@craftjs/utils';
22

33
import { Placement } from './events';
4-
import { Nodes, NodeEventTypes, NodeId } from './nodes';
4+
import { Nodes, NodeEventTypes, NodeId, Node } from './nodes';
55

66
import { QueryMethods } from '../editor/query';
77
import { EditorStore, ActionMethodsWithConfig } from '../editor/store';
@@ -10,6 +10,11 @@ import { CoreEventHandlers } from '../events';
1010

1111
export type Options = {
1212
onRender: React.ComponentType<{ render: React.ReactElement }>;
13+
onBeforeMoveEnd: (
14+
targetNode: Node,
15+
newParentNode: Node,
16+
existingParentNode: Node
17+
) => void;
1318
onNodesChange: (query: QueryCallbacksFor<typeof QueryMethods>) => void;
1419
resolver: Resolver;
1520
enabled: boolean;

0 commit comments

Comments
 (0)