Skip to content

Commit 27d40b6

Browse files
refactor(single-select): rename and restructure single select components
- Renamed FSingleSelectRequest to SingleSelectRequest for clarity - Updated FSingleSelectExecution to SingleSelect and adjusted its logic - Changed import paths to reflect new naming conventions - Removed deprecated references to old single select files - Enhanced readability and maintainability of the single select logic Signed-off-by: Siarhei Huzarevich <shuzarevich@gmail.com>
1 parent f16f87b commit 27d40b6

File tree

10 files changed

+43
-40
lines changed

10 files changed

+43
-40
lines changed

projects/f-flow/src/f-draggable/f-draggable.directive.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ import {
4949
FExternalItemPreparationRequest,
5050
PreventDefaultIsExternalItemRequest,
5151
} from '../f-external-item';
52-
import { FSingleSelectRequest } from './f-single-select';
52+
import { SingleSelectRequest } from './single-select';
5353
import { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './f-node-resize';
5454
import {
5555
F_AFTER_MAIN_PLUGIN,
@@ -247,7 +247,7 @@ export class FDraggableDirective
247247

248248
this._mediator.execute<void>(new PinchToZoomPreparationRequest(event));
249249

250-
this._mediator.execute<void>(new FSingleSelectRequest(event, this.fMultiSelectTrigger));
250+
this._mediator.execute<void>(new SingleSelectRequest(event, this.fMultiSelectTrigger));
251251

252252
this._mediator.execute<void>(
253253
new FReassignConnectionPreparationRequest(event, this.fReassignConnectionTrigger),

projects/f-flow/src/f-draggable/f-single-select/f-single-select.request.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

projects/f-flow/src/f-draggable/f-single-select/index.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

projects/f-flow/src/f-draggable/f-single-select/providers.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

projects/f-flow/src/f-draggable/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export * from './f-node-resize';
1414

1515
export * from './f-node-rotate';
1616

17-
export * from './f-single-select';
17+
export * from './single-select';
1818

1919
export * from './pinch-to-zoom';
2020

projects/f-flow/src/f-draggable/providers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CANVAS_PROVIDERS } from './f-canvas';
22
import { CONNECTIONS_PROVIDERS } from './f-connection';
3-
import { SINGLE_SELECT_PROVIDERS } from './f-single-select';
3+
import { SINGLE_SELECT_PROVIDERS } from './single-select';
44
import { NODE_PROVIDERS } from './f-node-move';
55
import { NODE_RESIZE_PROVIDERS } from './f-node-resize';
66
import { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain/providers';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export * from './providers';
2+
3+
export * from './single-select';
4+
5+
export * from './single-select-request';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { SingleSelect } from './single-select';
2+
3+
export const SINGLE_SELECT_PROVIDERS = [SingleSelect];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { FEventTrigger } from '../../domain';
2+
import { IPointerEvent } from '../../drag-toolkit';
3+
4+
export class SingleSelectRequest {
5+
static readonly fToken = Symbol('SingleSelectRequest');
6+
7+
constructor(
8+
public readonly event: IPointerEvent,
9+
public readonly trigger: FEventTrigger,
10+
) {}
11+
}

projects/f-flow/src/f-draggable/f-single-select/f-single-select.execution.ts renamed to projects/f-flow/src/f-draggable/single-select/single-select.ts

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { inject, Injectable } from '@angular/core';
22
import { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';
3-
import { FSingleSelectRequest } from './f-single-select.request';
3+
import { SingleSelectRequest } from './single-select-request';
44
import { isValidEventTrigger, UpdateItemAndChildrenLayersRequest } from '../../domain';
55
import { FConnectionBase } from '../../f-connection';
66
import { FComponentsStore } from '../../f-storage';
@@ -48,14 +48,18 @@ import { IPointerEvent } from '../../drag-toolkit';
4848
*/
4949

5050
@Injectable()
51-
@FExecutionRegister(FSingleSelectRequest)
52-
export class FSingleSelectExecution implements IExecution<FSingleSelectRequest, void> {
53-
private readonly _fMediator = inject(FMediator);
51+
@FExecutionRegister(SingleSelectRequest)
52+
export class SingleSelect implements IExecution<SingleSelectRequest, void> {
53+
private readonly _mediator = inject(FMediator);
5454
private readonly _store = inject(FComponentsStore);
5555
private readonly _dragContext = inject(FDraggableDataContext);
5656

57-
public handle(request: FSingleSelectRequest): void {
58-
if (!this._isValid(request)) {
57+
private get _flowHost(): HTMLElement {
58+
return this._store.flowHost;
59+
}
60+
61+
public handle(request: SingleSelectRequest): void {
62+
if (!this._isValid(request.event)) {
5963
return;
6064
}
6165

@@ -66,12 +70,12 @@ export class FSingleSelectExecution implements IExecution<FSingleSelectRequest,
6670
this._isMultiSelect(request) ? this._multiSelect(fItem) : this._singleSelect(fItem);
6771
}
6872

69-
private _isValid(request: FSingleSelectRequest): boolean {
70-
return this._isEventInFlowBounds(request.event) && this._dragContext.isEmpty();
73+
private _isValid(event: IPointerEvent): boolean {
74+
return this._isEventInFlowBounds(event) && this._dragContext.isEmpty();
7175
}
7276

7377
private _isEventInFlowBounds(event: IPointerEvent): boolean {
74-
return this._store.fFlow!.hostElement.contains(event.targetElement);
78+
return this._flowHost.contains(event.targetElement);
7579
}
7680

7781
private _getItemToSelect(event: IPointerEvent): ISelectable | undefined {
@@ -94,14 +98,17 @@ export class FSingleSelectExecution implements IExecution<FSingleSelectRequest,
9498

9599
private _updateItemAndChildrenLayers(fItem?: ISelectable): void {
96100
if (fItem) {
97-
this._fMediator.execute<void>(
98-
new UpdateItemAndChildrenLayersRequest(fItem, fItem.hostElement.parentElement!),
101+
this._mediator.execute<void>(
102+
new UpdateItemAndChildrenLayersRequest(
103+
fItem,
104+
fItem.hostElement.parentElement as HTMLElement,
105+
),
99106
);
100107
}
101108
}
102109

103-
private _isMultiSelect(request: FSingleSelectRequest): boolean {
104-
return isValidEventTrigger(request.event.originalEvent, request.fMultiSelectTrigger);
110+
private _isMultiSelect({ event, trigger }: SingleSelectRequest): boolean {
111+
return isValidEventTrigger(event.originalEvent, trigger);
105112
}
106113

107114
private _singleSelect(fItem?: ISelectable): void {

0 commit comments

Comments
 (0)