Skip to content
Snippets Groups Projects
Commit 7c404c7e authored by rhenck's avatar rhenck
Browse files

[editor] Fix selection logic to only use one method

..instead of multiple methods doing almost the same stuff.
parent 96a2bb4d
No related branches found
No related tags found
No related merge requests found
...@@ -62,19 +62,16 @@ export abstract class CanvasElementOverlay implements OnInit, OnDestroy { ...@@ -62,19 +62,16 @@ export abstract class CanvasElementOverlay implements OnInit, OnDestroy {
this.changeDetectorRef.detectChanges(); this.changeDetectorRef.detectChanges();
} }
selectElement(multiSelect: boolean = false): void { selectElement(event?: MouseEvent): void {
if (multiSelect) {
this.selectionService.selectElement({ elementComponent: this, multiSelect: true });
} else {
this.selectionService.selectElement({ elementComponent: this, multiSelect: false });
}
}
elementClicked(event: MouseEvent): void { //TODO method name
if (!this.isSelected) { if (!this.isSelected) {
this.selectElement(event.shiftKey); // this.selectElement(event.shiftKey);
if (event?.shiftKey) {
this.selectionService.selectElement({ elementComponent: this, multiSelect: true });
} else {
this.selectionService.selectElement({ elementComponent: this, multiSelect: false });
}
} }
event.stopPropagation(); event?.stopPropagation();
this.elementSelected.emit(); this.elementSelected.emit();
} }
......
...@@ -6,29 +6,29 @@ import { CanvasElementOverlay } from './canvas-element-overlay'; ...@@ -6,29 +6,29 @@ import { CanvasElementOverlay } from './canvas-element-overlay';
@Component({ @Component({
selector: 'aspect-dynamic-canvas-overlay', selector: 'aspect-dynamic-canvas-overlay',
template: ` template: `
<!-- TabIndex is needed to make the div selectable and catch keyboard events (delete). --> <!-- TabIndex is needed to make the div selectable and catch keyboard events (delete). -->
<!-- DragStart and DragEnd are part of a cursor hack to style the body. See global styling file. --> <!-- DragStart and DragEnd are part of a cursor hack to style the body. See global styling file. -->
<div #draggableElement class="draggable-element" <div #draggableElement class="draggable-element"
[class.fixed-size-content-wrapper]="element.position?.dynamicPositioning && [class.fixed-size-content-wrapper]="element.position?.dynamicPositioning &&
element.position?.fixedSize" element.position?.fixedSize"
[class.temporaryHighlight]="temporaryHighlight" [class.temporaryHighlight]="temporaryHighlight"
tabindex="-1" tabindex="-1"
cdkDrag [cdkDragData]="{dragType: 'move', element: element}" cdkDrag [cdkDragData]="{dragType: 'move', element: element}"
(click)="elementClicked($event)" (dblclick)="openEditDialog()" (click)="selectElement($event)" (dblclick)="openEditDialog()"
(cdkDragStarted)="moveDragStart()" (cdkDragStarted)="selectElement(); moveDragStart()"
(cdkDragEnded)="moveDragEnd()" (cdkDragEnded)="moveDragEnd()"
[style.outline]="isSelected ? 'purple solid 1px' : ''" [style.outline]="isSelected ? 'purple solid 1px' : ''"
[style.z-index]="isSelected ? 2 : 1"> [style.z-index]="isSelected ? 2 : 1">
<div *cdkDragPlaceholder></div> <div *cdkDragPlaceholder></div>
<div [class.fixed-size-content]="element.position?.dynamicPositioning && <div [class.fixed-size-content]="element.position?.dynamicPositioning &&
element.position?.fixedSize" element.position?.fixedSize"
[style.width]="element.position?.dynamicPositioning && element.position?.fixedSize ? [style.width]="element.position?.dynamicPositioning && element.position?.fixedSize ?
element.width + 'px' : '100%'" element.width + 'px' : '100%'"
[style.height]="element.position?.dynamicPositioning && element.position?.fixedSize ? [style.height]="element.position?.dynamicPositioning && element.position?.fixedSize ?
element.height + 'px' : '100%'"> element.height + 'px' : '100%'">
<ng-template #elementContainer></ng-template> <ng-template #elementContainer></ng-template>
</div>
</div> </div>
</div>
`, `,
styles: [ styles: [
'.draggable-element {width: 100%; height: 100%}', '.draggable-element {width: 100%; height: 100%}',
...@@ -42,7 +42,6 @@ export class DynamicCanvasOverlayComponent extends CanvasElementOverlay { ...@@ -42,7 +42,6 @@ export class DynamicCanvasOverlayComponent extends CanvasElementOverlay {
bodyElement: HTMLElement = document.body; bodyElement: HTMLElement = document.body;
moveDragStart(): void { moveDragStart(): void {
this.selectElement();
this.bodyElement.classList.add('inheritCursors'); this.bodyElement.classList.add('inheritCursors');
this.bodyElement.style.cursor = 'move'; this.bodyElement.style.cursor = 'move';
} }
......
...@@ -11,11 +11,11 @@ import { CanvasElementOverlay } from './canvas-element-overlay'; ...@@ -11,11 +11,11 @@ import { CanvasElementOverlay } from './canvas-element-overlay';
<!-- TabIndex is needed to make the div selectable and catch keyboard events (delete). --> <!-- TabIndex is needed to make the div selectable and catch keyboard events (delete). -->
<div class="draggable-element" <div class="draggable-element"
[class.temporaryHighlight]="temporaryHighlight" [class.temporaryHighlight]="temporaryHighlight"
(click)="elementClicked($event)" (click)="selectElement($event)"
(dblclick)="openEditDialog()" (dblclick)="openEditDialog()"
(keyup.delete)="deleteSelectedElements()" tabindex="-1" (keyup.delete)="deleteSelectedElements()" tabindex="-1"
cdkDrag [cdkDragData]="{dragType: 'move', element: element}" cdkDrag [cdkDragData]="{dragType: 'move', element: element}"
(cdkDragStarted)="!isSelected && selectElement()" (cdkDragStarted)="selectElement()"
cdkDropList> cdkDropList>
<div *cdkDragPlaceholder></div> <div *cdkDragPlaceholder></div>
<!-- Needs extra div because styling can interfere with drag and drop--> <!-- Needs extra div because styling can interfere with drag and drop-->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment