From c7c4444849251c9c5a5ae139919509fe36c5db3f Mon Sep 17 00:00:00 2001 From: Naumov Alexey Date: Mon, 13 Sep 2021 13:38:09 +0300 Subject: [PATCH 1/2] fix(core-app): CB-1239 check if the new name is not empty --- .../NavigationNode/NavigationNodeEditor.tsx | 14 ++++++++++++-- .../src/shared/InlineEditor/InlineEditor.tsx | 6 +++++- .../NodesManager/NavNodeContextMenuService.ts | 2 +- .../src/Tree/TreeNode/TreeNodeControl.tsx | 8 ++++---- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx b/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx index 87a626bca8..af50bee020 100644 --- a/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx +++ b/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx @@ -10,7 +10,7 @@ import { observer } from 'mobx-react-lite'; import { useCallback, useState } from 'react'; import { useService } from '@cloudbeaver/core-di'; -import { NotificationService } from '@cloudbeaver/core-events'; +import { EventContext, EventStopPropagationFlag, NotificationService } from '@cloudbeaver/core-events'; import { InlineEditor } from '../../../shared/InlineEditor/InlineEditor'; import type { NavNode } from '../../../shared/NodesManager/EntityTypes'; @@ -34,7 +34,7 @@ export const NavigationNodeEditor = observer(function NavigationNodeEdito } try { - if (node.name !== name) { + if (node.name !== name && name.trim().length) { setLoading(true); await navTreeResource.changeName(node, name); } @@ -46,6 +46,14 @@ export const NavigationNodeEditor = observer(function NavigationNodeEdito } }, [name, onClose, node, loading, navTreeResource, notificationService]); + const handleClick = (event: React.MouseEvent) => { + EventContext.set(event, EventStopPropagationFlag); + }; + + const handleDbClick = (event: React.MouseEvent) => { + EventContext.set(event, EventStopPropagationFlag); + }; + return ( (function NavigationNodeEdito onSave={save} onReject={onClose} onBlur={onClose} + onClick={handleClick} + onDoubleClick={handleDbClick} /> ); }); diff --git a/webapp/packages/core-app/src/shared/InlineEditor/InlineEditor.tsx b/webapp/packages/core-app/src/shared/InlineEditor/InlineEditor.tsx index dd917c7c06..943d2e3afe 100644 --- a/webapp/packages/core-app/src/shared/InlineEditor/InlineEditor.tsx +++ b/webapp/packages/core-app/src/shared/InlineEditor/InlineEditor.tsx @@ -37,6 +37,8 @@ export interface InlineEditorProps extends Omit void; onReject?: () => void; onUndo?: () => void; + onClick?: (event: React.MouseEvent) => void; + onDoubleClick?: (event: React.MouseEvent) => void; className?: string; } @@ -55,6 +57,8 @@ export const InlineEditor = observer onSave, onUndo, onReject, + onClick, + onDoubleClick, className, ...rest }, ref) { @@ -103,7 +107,7 @@ export const InlineEditor = observer useImperativeHandle(ref, () => inputRef.current!); return styled(useStyles(InlineEditorStyles))( - + (function TreeNodeControl({ const context = useContext(TreeNodeContext); const handleEnter = (event: React.KeyboardEvent) => { - if (EventContext.has(event, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag)) { + if (EventContext.has(event, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag, EventStopPropagationFlag)) { return; } @@ -47,7 +47,7 @@ export const TreeNodeControl = observer(function TreeNodeControl({ }; const handleClick = (event: React.MouseEvent) => { - if (EventContext.has(event, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag)) { + if (EventContext.has(event, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag, EventStopPropagationFlag)) { return; } @@ -57,7 +57,7 @@ export const TreeNodeControl = observer(function TreeNodeControl({ }; const handleDbClick = (event: React.MouseEvent) => { - if (EventContext.has(event, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag)) { + if (EventContext.has(event, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag, EventStopPropagationFlag)) { return; } context.open(); From e825a48546cbade6ac2f5ebd4f9b31bb3025a641 Mon Sep 17 00:00:00 2001 From: Naumov Alexey Date: Mon, 13 Sep 2021 13:54:14 +0300 Subject: [PATCH 2/2] refactor(core-app): CB-1239 remove duplicated logic --- .../NavigationNode/NavigationNodeEditor.tsx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx b/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx index af50bee020..e8a85ea16f 100644 --- a/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx +++ b/webapp/packages/core-app/src/NavigationTree/NavigationTreeNode/NavigationNode/NavigationNodeEditor.tsx @@ -46,11 +46,7 @@ export const NavigationNodeEditor = observer(function NavigationNodeEdito } }, [name, onClose, node, loading, navTreeResource, notificationService]); - const handleClick = (event: React.MouseEvent) => { - EventContext.set(event, EventStopPropagationFlag); - }; - - const handleDbClick = (event: React.MouseEvent) => { + const stopPropagation = (event: React.MouseEvent) => { EventContext.set(event, EventStopPropagationFlag); }; @@ -64,8 +60,8 @@ export const NavigationNodeEditor = observer(function NavigationNodeEdito onSave={save} onReject={onClose} onBlur={onClose} - onClick={handleClick} - onDoubleClick={handleDbClick} + onClick={stopPropagation} + onDoubleClick={stopPropagation} /> ); });