diff --git a/projects/workflows-creator/src/lib/builder/group/group.component.html b/projects/workflows-creator/src/lib/builder/group/group.component.html index 0d3dec7..5792b68 100644 --- a/projects/workflows-creator/src/lib/builder/group/group.component.html +++ b/projects/workflows-creator/src/lib/builder/group/group.component.html @@ -1,4 +1,8 @@
+
{{ group.name }} @@ -86,6 +90,8 @@ [popperPlacement]="'bottom-start'" [popperApplyClass]="'workflow-popper'" (click)="onPoperClick($event, inputPopper)" + (mouseover)="showTooltip($event, nodeWithInput, input)" + (mouseout)="hideTooltip()" > implements OnInit, AfterViewInit { nodeList: WorkflowNode[]; + showsTooltip = false; + tooltipText = 'This is default parent component text'; + topPosition: any; + leftPosition: any; + public types = NodeTypes; public prevPopperRef: NgxPopperjsContentComponent; @@ -369,6 +375,37 @@ export class GroupComponent implements OnInit, AfterViewInit { popper?.popperInstance?.forceUpdate(); } + /** + * shows custom tooltip + * @param {MouseEvent} e - event object + * @param element - NodeWithInput + * @param {WorkflowPrompt} input - WorkflowPrompt - this is the input object that was clicked on + */ + showTooltip(e: MouseEvent, element: NodeWithInput, input: WorkflowPrompt) { + if ( + ['condition', 'value'].includes(input.inputKey) && + (element.node.elements.includes(ChangeColumnValue.identifier) || + element.node.elements.includes(ReadColumnValue.identifier) || + element.node.elements.includes(ReadColumnValue.identifier)) && + !element.node.state.get('column') + ) { + this.tooltipText = + this.localizedStringMap.selectColumnTooltip ?? 'Select a column first'; + this.showsTooltip = true; + this.topPosition = e.clientY + 10; + this.leftPosition = e.clientX; + } + } + + /** + * hides custom tooltip + */ + hideTooltip() { + this.showsTooltip = false; + this.topPosition = null; + this.leftPosition = null; + } + /** * It returns a function that hides the previous popper * @returns A function that calls the hide method on the previous popper reference. diff --git a/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.html b/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.html new file mode 100644 index 0000000..17fa30e --- /dev/null +++ b/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.html @@ -0,0 +1,7 @@ + +
+ {{ tooltipText }} +
+
\ No newline at end of file diff --git a/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.scss b/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.scss new file mode 100644 index 0000000..ccce77a --- /dev/null +++ b/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.scss @@ -0,0 +1,14 @@ +@import '../../../assets/styles/colors'; + +.tooltip { + position: absolute; // enables it to appear where we want it later + font-size: 14px; + line-height: 14px; + padding: 5px 10px; + color:$black; + display: inline-block; + box-shadow: 4px 6px 12px $grey2; + background-color: $white; + border: 1px solid $grey2; + border-radius: 5px; + } \ No newline at end of file diff --git a/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.ts b/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.ts new file mode 100644 index 0000000..c19d52c --- /dev/null +++ b/projects/workflows-creator/src/lib/builder/tooltip-render/tooltip-render.component.ts @@ -0,0 +1,20 @@ +import { Component, Input, OnInit } from '@angular/core'; + +@Component({ + selector: 'workflow-tooltip-render', + templateUrl: './tooltip-render.component.html', + styleUrls: ['./tooltip-render.component.scss'] +}) +export class TooltipRenderComponent implements OnInit { + + @Input() showsTooltip = true; + @Input() tooltipText = 'Default tooltip text'; + @Input() topPosition = 215; + @Input() leftPosition = 400; + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/projects/workflows-creator/src/lib/enum.ts b/projects/workflows-creator/src/lib/enum.ts index 10a4a83..dbfd5f4 100644 --- a/projects/workflows-creator/src/lib/enum.ts +++ b/projects/workflows-creator/src/lib/enum.ts @@ -90,4 +90,5 @@ export enum LocalizedStringKeys { Else = 'elseLbl', TypeSubject = 'typeSubjectLbl', TypeEmail = 'typeEmailLbl', + SelectColumnTooltip = 'selectColumnTooltip' } diff --git a/projects/workflows-creator/src/lib/workflow-builder.module.ts b/projects/workflows-creator/src/lib/workflow-builder.module.ts index 5102f14..fac9ae3 100644 --- a/projects/workflows-creator/src/lib/workflow-builder.module.ts +++ b/projects/workflows-creator/src/lib/workflow-builder.module.ts @@ -85,8 +85,9 @@ import {TriggerOnInterval} from './services/bpmn/elements/tasks/trigger-on-inter import {StartOnIntervalElement} from './services/bpmn/elements/base/start-on-interval.element'; import {TriggerOnAddItem} from './services/bpmn/elements/tasks/trigger-on-add-item.task'; import {OnAddItemEvent} from './services/statement/events/onadditem.event'; +import { TooltipRenderComponent } from './builder/tooltip-render/tooltip-render.component'; @NgModule({ - declarations: [BuilderComponent, GroupComponent, NodeComponent], + declarations: [BuilderComponent, GroupComponent, NodeComponent, TooltipRenderComponent], exports: [BuilderComponent, GroupComponent, NodeComponent, NgxPopperjsModule], imports: [ CommonModule,