diff --git a/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.html b/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.html index 91682bc495..2799a2ac17 100644 --- a/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.html +++ b/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.html @@ -4,7 +4,7 @@ - +
diff --git a/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.ts b/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.ts index d53e873abe..69eeecd898 100644 --- a/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.ts +++ b/libs/features/convs-mgr/stories/blocks/library/jump-story-block/src/lib/components/jump-block/jump-block.component.ts @@ -1,5 +1,6 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { FormArray, FormBuilder, FormGroup } from '@angular/forms'; +import { Clipboard } from '@angular/cdk/clipboard'; import { SubSink } from 'subsink'; @@ -49,7 +50,9 @@ export class JumpBlockComponent implements OnInit, OnDestroy private _fb: FormBuilder, private _storyBlockStore$$: StoryBlocksStore, private _translate: TranslateService, - private _logger: Logger) + private _logger: Logger, + private clipboard: Clipboard, + ) { } ngOnInit(): void @@ -58,6 +61,9 @@ export class JumpBlockComponent implements OnInit, OnDestroy this.getStories(); this.getBlocks(); + + const inputElement = document.getElementById('blockIdInput') as HTMLInputElement; + inputElement.addEventListener('paste', (event) => this.handlePaste(event)); } get options(): FormArray @@ -113,6 +119,14 @@ export class JumpBlockComponent implements OnInit, OnDestroy }); } + handlePaste(event: ClipboardEvent){ + const clipboardData = event.clipboardData || (window as any).clipboardData; + const pasteID = clipboardData.getData('text/plain') + const blockId = pasteID.trim() + this.jumpBlockForm.patchValue({ blockId: blockId}) + event.preventDefault(); + } + ngOnDestroy() { this._sBS.unsubscribe(); diff --git a/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.html b/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.html index 9eee753a57..772fe6d470 100644 --- a/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.html +++ b/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.html @@ -1,4 +1,4 @@ - +
@@ -6,11 +6,15 @@

{{ blockTitle | transloco }}

-
- - - +
+ + + +
+ Copy Reference +
+
diff --git a/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.scss b/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.scss index 09c5ebb444..5fa2eb49a2 100644 --- a/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.scss +++ b/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.scss @@ -63,6 +63,7 @@ mat-card { } } } + } .hide-block { display: none; @@ -70,4 +71,20 @@ mat-card { ::ng-deep .mat-mdc-card-content { padding: 0; -} \ No newline at end of file +} + +.copy-button-container { + display: flex; + align-items: center; + gap: 10px; + margin-left: auto; + + #copy-span { + background-color: var(--convs-mgr-color-light-shade); + color: var(--convs-mgr-color-medium-shade); + padding: 5px 10px; + border-radius: 4px; + cursor: pointer; + } + } + diff --git a/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.ts b/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.ts index d7b810c81d..3f56b6ee31 100644 --- a/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.ts +++ b/libs/features/convs-mgr/stories/blocks/library/main/src/lib/components/block/block.component.ts @@ -7,6 +7,7 @@ import { MatDialog } from '@angular/material/dialog'; import { BrowserJsPlumbInstance } from '@jsplumb/browser-ui'; import { Logger } from '@iote/bricks-angular'; +import { Clipboard } from '@angular/cdk/clipboard'; import { BlockPortalService } from '@app/features/convs-mgr/stories/editor'; import { StoryBlock, StoryBlockTypes } from '@app/model/convs-mgr/stories/blocks/main'; @@ -116,7 +117,8 @@ export class BlockComponent implements OnInit { private _logger: Logger, private sideMenu:SidemenuToggleService, private sideScreen:SideScreenToggleService, - private matdialog: MatDialog + private matdialog: MatDialog, + private clipboard: Clipboard ) { } @@ -348,5 +350,24 @@ export class BlockComponent implements OnInit { this.viewPort.remove(index); this._cd.detectChanges(); } + + copyBlockIdToClipboard(event: MouseEvent) { + event.preventDefault(); // Prevent the default context menu from showing up + const blockId = this.id; + navigator.clipboard.writeText(blockId) + } + + showCopyBtn = false; + + @HostListener('contextmenu', ['$event']) + onContextMenu(event: MouseEvent) { + event.preventDefault(); // Prevent the default context menu from showing up + this.showCopyBtn = true; + } + + hideCopyBtn() { + this.showCopyBtn = false; + } + }