This is an automated email from the ASF dual-hosted git repository.

rfellows pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new e3cf0a67bc NIFI-13289 add tooltips to NewCanvasItem (#8870)
e3cf0a67bc is described below

commit e3cf0a67bc9781ecd14dc49ed0c019ab328fce5c
Author: Shane <[email protected]>
AuthorDate: Wed May 29 19:34:26 2024 -0400

    NIFI-13289 add tooltips to NewCanvasItem (#8870)
    
    This closes #8870
---
 .../ui/canvas/header/header.component.html         | 24 ++++++++++++++--------
 .../new-canvas-item/new-canvas-item.component.html |  9 +++++++-
 .../new-canvas-item/new-canvas-item.component.ts   | 16 ++++++++++++++-
 .../ui/common/tooltips/nifi-tooltip.directive.ts   | 19 +++++++++++++++++
 4 files changed, 58 insertions(+), 10 deletions(-)

diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/header.component.html
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/header.component.html
index 6f037531fd..d77493993a 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/header.component.html
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/header.component.html
@@ -22,42 +22,50 @@
                 [type]="ComponentType.Processor"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-processor"
-                iconHoverClass="icon-processor-add"></new-canvas-item>
+                iconHoverClass="icon-processor-add"
+                tooltip="Processor"></new-canvas-item>
             <new-canvas-item
                 [type]="ComponentType.InputPort"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-port-in"
-                iconHoverClass="icon-port-in-add"></new-canvas-item>
+                iconHoverClass="icon-port-in-add"
+                tooltip="Input Port"></new-canvas-item>
             <new-canvas-item
                 [type]="ComponentType.OutputPort"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-port-out"
-                iconHoverClass="icon-port-out-add"></new-canvas-item>
+                iconHoverClass="icon-port-out-add"
+                tooltip="Output Port"></new-canvas-item>
             <new-canvas-item
                 [type]="ComponentType.ProcessGroup"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-group"
-                iconHoverClass="icon-group-add"></new-canvas-item>
+                iconHoverClass="icon-group-add"
+                tooltip="Process Group"></new-canvas-item>
             <new-canvas-item
                 [type]="ComponentType.RemoteProcessGroup"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-group-remote"
-                iconHoverClass="icon-group-remote-add"></new-canvas-item>
+                iconHoverClass="icon-group-remote-add"
+                tooltip="Remote Process Group"></new-canvas-item>
             <new-canvas-item
                 [type]="ComponentType.Funnel"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-funnel"
-                iconHoverClass="icon-funnel-add"></new-canvas-item>
+                iconHoverClass="icon-funnel-add"
+                tooltip="Funnel"></new-canvas-item>
             <new-canvas-item
                 [type]="ComponentType.Flow"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-import-from-registry"
-                
iconHoverClass="icon-import-from-registry-add"></new-canvas-item>
+                iconHoverClass="icon-import-from-registry-add"
+                tooltip="Import from Registry"></new-canvas-item>
             <new-canvas-item
                 [type]="ComponentType.Label"
                 [disabled]="!canvasPermissions.canWrite"
                 iconClass="icon-label"
-                iconHoverClass="icon-label-add"></new-canvas-item>
+                iconHoverClass="icon-label-add"
+                tooltip="Label"></new-canvas-item>
         }
     </navigation>
     <flow-status
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.html
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.html
index 538d5dfa9f..5ebc6642ab 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.html
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.html
@@ -14,7 +14,14 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<div class="new-canvas-item">
+<div
+    class="new-canvas-item"
+    nifiTooltip
+    [tooltipComponentType]="TextTip"
+    [tooltipInputData]="tooltip"
+    [tooltipDisabled]="dragging"
+    [position]="tooltipPosition"
+    [delayClose]="false">
     <div class="h-16 w-16 pl-1.5 flex items-center justify-center relative 
icon" [class]="iconClass"></div>
     <button
         class="h-16 w-16 pl-1.5 -mt-16 flex items-center justify-center 
relative icon"
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.ts
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.ts
index 04a476f6ca..4309b9cf2e 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.ts
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/pages/flow-designer/ui/canvas/header/new-canvas-item/new-canvas-item.component.ts
@@ -25,12 +25,15 @@ import { selectDragging } from 
'../../../../state/flow/flow.selectors';
 import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
 import { ComponentType } from '../../../../../../state/shared';
 import { CanvasView } from '../../../../service/canvas-view.service';
+import { NifiTooltipDirective } from 
'../../../../../../ui/common/tooltips/nifi-tooltip.directive';
+import { TextTip } from 
'../../../../../../ui/common/tooltips/text-tip/text-tip.component';
+import { ConnectedPosition } from '@angular/cdk/overlay';
 
 @Component({
     selector: 'new-canvas-item',
     standalone: true,
     templateUrl: './new-canvas-item.component.html',
-    imports: [CdkDrag],
+    imports: [CdkDrag, NifiTooltipDirective],
     styleUrls: ['./new-canvas-item.component.scss']
 })
 export class NewCanvasItem {
@@ -38,6 +41,17 @@ export class NewCanvasItem {
     @Input() iconClass = '';
     @Input() iconHoverClass = '';
     @Input() disabled = false;
+    @Input() tooltip = '';
+
+    protected readonly TextTip = TextTip;
+
+    tooltipPosition: ConnectedPosition = {
+        originX: 'center',
+        originY: 'bottom',
+        overlayX: 'center',
+        overlayY: 'top',
+        offsetY: 8
+    };
 
     dragging = false;
 
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/tooltips/nifi-tooltip.directive.ts
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/tooltips/nifi-tooltip.directive.ts
index 44f71452a3..a988c17cc4 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/tooltips/nifi-tooltip.directive.ts
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-frontend/src/main/nifi/src/app/ui/common/tooltips/nifi-tooltip.directive.ts
@@ -25,6 +25,7 @@ import { ComponentPortal } from '@angular/cdk/portal';
 })
 export class NifiTooltipDirective<T> implements OnDestroy {
     @Input() tooltipComponentType!: Type<T>;
+    @Input() tooltipDisabled = false;
     @Input() tooltipInputData: any;
     @Input() position: ConnectedPosition | undefined;
     @Input() delayClose = true;
@@ -58,11 +59,29 @@ export class NifiTooltipDirective<T> implements OnDestroy {
         }
     }
 
+    @HostListener('mousemove')
+    mouseMove() {
+        if (this.overlayRef?.hasAttached() && this.tooltipDisabled) {
+            this.overlayRef?.detach();
+        }
+    }
+
+    @HostListener('mouseup')
+    mouseup() {
+        if (!this.overlayRef?.hasAttached()) {
+            this.attach();
+        }
+    }
+
     ngOnDestroy(): void {
         this.overlayRef?.dispose();
     }
 
     private attach(): void {
+        if (this.tooltipDisabled) {
+            return;
+        }
+
         if (!this.overlayRef) {
             const positionStrategy = this.getPositionStrategy();
             this.overlayRef = this.overlay.create({ positionStrategy });

Reply via email to