Skip to content

Commit fd04b01

Browse files
committed
WiP editing rect-node via contenteditable and storing
1 parent a56e526 commit fd04b01

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

apps/vps-web/src/app/custom-nodes/classes/rect-node-class.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,24 @@ import {
22
createJSXElement,
33
FlowNode,
44
IComputeResult,
5+
IRectNodeComponent,
56
} from '@devhelpr/visual-programming-system';
67
import { NodeInfo } from '@devhelpr/web-flow-executor';
78

89
export class RectNode {
910
nodeRenderElement: HTMLElement | undefined = undefined;
1011
rectElement: HTMLElement | undefined = undefined;
1112
id: string;
12-
constructor(id: string) {
13+
node: IRectNodeComponent<NodeInfo> | undefined = undefined;
14+
updated: () => void;
15+
constructor(
16+
id: string,
17+
updated: () => void,
18+
node: IRectNodeComponent<NodeInfo>
19+
) {
1320
this.id = id;
21+
this.updated = updated;
22+
this.node = node;
1423
}
1524
compute = (
1625
input: string,
@@ -48,6 +57,14 @@ w-min h-min
4857
}px ${nodeInfo?.strokeColor ?? 'white'} solid;color:${
4958
nodeInfo?.strokeColor ?? 'white'
5059
}`}
60+
blur={() => {
61+
console.log('blur', this.rectElement?.textContent);
62+
if (this.node?.nodeInfo) {
63+
(this.node.nodeInfo as any).text = this.rectElement?.textContent;
64+
}
65+
this.updated();
66+
}}
67+
contentEditable={true}
5168
>
5269
{nodeInfo?.text ?? ''}
5370
</div>

apps/vps-web/src/app/custom-nodes/rect-node.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const familyName = 'flow-canvas';
2222
export const getRectNode =
2323
() =>
2424
(
25-
_updated: () => void,
25+
updated: () => void,
2626
_theme?: Theme,
2727
flowNode?: FlowNode<NodeInfo>
2828
): NodeTask<NodeInfo> => {
@@ -68,7 +68,7 @@ export const getRectNode =
6868
rect = nodeInstance.rect;
6969
node = nodeInstance.node as IRectNodeComponent<NodeInfo>;
7070

71-
rectNode = new RectNode(node.id);
71+
rectNode = new RectNode(node.id, updated, node);
7272

7373
const childNodeWrapper = (nodeRenderElement = (
7474
rect?.nodeComponent?.domElement as HTMLElement

libs/app-canvas/src/app/app.element.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ export class AppElement<T extends BaseNodeInfo> {
413413
['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'].indexOf(
414414
(event.target as HTMLElement)?.tagName
415415
) >= 0;
416-
if (!inInputControle) {
416+
if (!inInputControle || !(event.target as HTMLElement)?.isContentEditable) {
417417
if ((event.ctrlKey || event.metaKey || this.metaKeyDown) && key === 'c') {
418418
event.preventDefault();
419419
this.removeFormElement();
@@ -462,7 +462,7 @@ export class AppElement<T extends BaseNodeInfo> {
462462
(event.target as HTMLElement)?.tagName
463463
) >= 0;
464464
if (key === 'backspace' || key === 'delete' || key === 'enter') {
465-
if (inInputControle) {
465+
if (inInputControle || (event.target as HTMLElement)?.isContentEditable) {
466466
return;
467467
}
468468
this.removeFormElement();

0 commit comments

Comments
 (0)