@sumaris-net/ngx-components 18.23.55-beta.2 → 18.23.55-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,11 +2,13 @@ import { DestroyRef, Directive, inject, input } from '@angular/core';
2
2
  import { APP_CELL_SELECTION_SERVICE_TOKEN } from './cell-selection.service';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { filter } from 'rxjs/operators';
5
+ import { arraySize } from '../../functions';
5
6
  import * as i0 from "@angular/core";
6
7
  export class CellIdentifierDirective {
7
8
  cellId = input.required({ alias: 'appCellId' });
8
9
  isInitialized = false;
9
10
  isCellSelected = false;
11
+ isMultipleCellsSelected = false;
10
12
  isDragging = false;
11
13
  service = inject(APP_CELL_SELECTION_SERVICE_TOKEN);
12
14
  destroyRef = inject(DestroyRef);
@@ -14,7 +16,10 @@ export class CellIdentifierDirective {
14
16
  // Listen to service selection changes and emit
15
17
  this.service.selectionChangeSubject
16
18
  .pipe(filter(() => this.isInitialized), takeUntilDestroyed(this.destroyRef))
17
- .subscribe(() => (this.isCellSelected = this.service.isCellSelected(this.cellId())));
19
+ .subscribe(() => {
20
+ this.isCellSelected = this.service.isCellSelected(this.cellId());
21
+ this.isMultipleCellsSelected = arraySize(this.service.selectedCells) > 1;
22
+ });
18
23
  this.isInitialized = true;
19
24
  }
20
25
  async handleMouseDown(event) {
@@ -28,7 +33,7 @@ export class CellIdentifierDirective {
28
33
  await this.service.handleCellMouseEnter(event, this.cellId());
29
34
  }
30
35
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellIdentifierDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
31
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: CellIdentifierDirective, isStandalone: true, selector: "[appCellId]", inputs: { cellId: { classPropertyName: "cellId", publicName: "appCellId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mousedown": "handleMouseDown($event)", "mouseenter": "handleMouseEnter($event)" }, properties: { "class.cell-selected": "isCellSelected", "class.cell-dragging": "isDragging", "attr.data-row-id": "cellId().rowId", "attr.data-column-name": "cellId().columnName" } }, ngImport: i0 });
36
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: CellIdentifierDirective, isStandalone: true, selector: "[appCellId]", inputs: { cellId: { classPropertyName: "cellId", publicName: "appCellId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mousedown": "handleMouseDown($event)", "mouseenter": "handleMouseEnter($event)" }, properties: { "class.cell-selected": "isCellSelected", "class.cell-multiple-selected": "isMultipleCellsSelected", "class.cell-dragging": "isDragging", "attr.data-row-id": "cellId().rowId", "attr.data-column-name": "cellId().columnName" } }, ngImport: i0 });
32
37
  }
33
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellIdentifierDirective, decorators: [{
34
39
  type: Directive,
@@ -39,10 +44,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
39
44
  '(mousedown)': 'handleMouseDown($event)',
40
45
  '(mouseenter)': 'handleMouseEnter($event)',
41
46
  '[class.cell-selected]': 'isCellSelected',
47
+ '[class.cell-multiple-selected]': 'isMultipleCellsSelected',
42
48
  '[class.cell-dragging]': 'isDragging',
43
49
  '[attr.data-row-id]': 'cellId().rowId',
44
50
  '[attr.data-column-name]': 'cellId().columnName',
45
51
  },
46
52
  }]
47
53
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1pZGVudGlmaWVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvY2VsbC1zZWxlY3Rpb24vY2VsbC1pZGVudGlmaWVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBVyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFjeEMsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRTNDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDcEIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRVosT0FBTyxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25ELFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFakQsUUFBUTtRQUNOLCtDQUErQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQjthQUNoQyxJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDaEMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUNwQzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFUyxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQWlCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDaEMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRVMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQWlCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDaEMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO3dHQTdCVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFabkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixhQUFhLEVBQUUseUJBQXlCO3dCQUN4QyxjQUFjLEVBQUUsMEJBQTBCO3dCQUMxQyx1QkFBdUIsRUFBRSxnQkFBZ0I7d0JBQ3pDLHVCQUF1QixFQUFFLFlBQVk7d0JBQ3JDLG9CQUFvQixFQUFFLGdCQUFnQjt3QkFDdEMseUJBQXlCLEVBQUUscUJBQXFCO3FCQUNqRDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgaW5qZWN0LCBpbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBUFBfQ0VMTF9TRUxFQ1RJT05fU0VSVklDRV9UT0tFTiwgSUNlbGxJZCB9IGZyb20gJy4vY2VsbC1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBDZWxsSWRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICcobW91c2Vkb3duKSc6ICdoYW5kbGVNb3VzZURvd24oJGV2ZW50KScsXG4gICAgJyhtb3VzZWVudGVyKSc6ICdoYW5kbGVNb3VzZUVudGVyKCRldmVudCknLFxuICAgICdbY2xhc3MuY2VsbC1zZWxlY3RlZF0nOiAnaXNDZWxsU2VsZWN0ZWQnLFxuICAgICdbY2xhc3MuY2VsbC1kcmFnZ2luZ10nOiAnaXNEcmFnZ2luZycsXG4gICAgJ1thdHRyLmRhdGEtcm93LWlkXSc6ICdjZWxsSWQoKS5yb3dJZCcsXG4gICAgJ1thdHRyLmRhdGEtY29sdW1uLW5hbWVdJzogJ2NlbGxJZCgpLmNvbHVtbk5hbWUnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDZWxsSWRlbnRpZmllckRpcmVjdGl2ZTxDIGV4dGVuZHMgSUNlbGxJZCA9IElDZWxsSWQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY2VsbElkID0gaW5wdXQucmVxdWlyZWQ8Qz4oeyBhbGlhczogJ2FwcENlbGxJZCcgfSk7XG5cbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc0NlbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgaXNEcmFnZ2luZyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZSA9IGluamVjdChBUFBfQ0VMTF9TRUxFQ1RJT05fU0VSVklDRV9UT0tFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBMaXN0ZW4gdG8gc2VydmljZSBzZWxlY3Rpb24gY2hhbmdlcyBhbmQgZW1pdFxuICAgIHRoaXMuc2VydmljZS5zZWxlY3Rpb25DaGFuZ2VTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNJbml0aWFsaXplZCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmlzQ2VsbFNlbGVjdGVkID0gdGhpcy5zZXJ2aWNlLmlzQ2VsbFNlbGVjdGVkKHRoaXMuY2VsbElkKCkpKSk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5oYW5kbGVDZWxsTW91c2VEb3duKGV2ZW50LCB0aGlzLmNlbGxJZCgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVNb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuaGFuZGxlQ2VsbE1vdXNlRW50ZXIoZXZlbnQsIHRoaXMuY2VsbElkKCkpO1xuICB9XG59XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1pZGVudGlmaWVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvY2VsbC1zZWxlY3Rpb24vY2VsbC1pZGVudGlmaWVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBVyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZTVDLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUUzQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFWixPQUFPLEdBQUcsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDbkQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRCxRQUFRO1FBQ04sK0NBQStDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCO2FBQ2hDLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUNoQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3BDO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFUyxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQWlCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDaEMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRVMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQWlCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDaEMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO3dHQWpDVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFibkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixhQUFhLEVBQUUseUJBQXlCO3dCQUN4QyxjQUFjLEVBQUUsMEJBQTBCO3dCQUMxQyx1QkFBdUIsRUFBRSxnQkFBZ0I7d0JBQ3pDLGdDQUFnQyxFQUFFLHlCQUF5Qjt3QkFDM0QsdUJBQXVCLEVBQUUsWUFBWTt3QkFDckMsb0JBQW9CLEVBQUUsZ0JBQWdCO3dCQUN0Qyx5QkFBeUIsRUFBRSxxQkFBcUI7cUJBQ2pEO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFQUF9DRUxMX1NFTEVDVElPTl9TRVJWSUNFX1RPS0VOLCBJQ2VsbElkIH0gZnJvbSAnLi9jZWxsLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFycmF5U2l6ZSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBDZWxsSWRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICcobW91c2Vkb3duKSc6ICdoYW5kbGVNb3VzZURvd24oJGV2ZW50KScsXG4gICAgJyhtb3VzZWVudGVyKSc6ICdoYW5kbGVNb3VzZUVudGVyKCRldmVudCknLFxuICAgICdbY2xhc3MuY2VsbC1zZWxlY3RlZF0nOiAnaXNDZWxsU2VsZWN0ZWQnLFxuICAgICdbY2xhc3MuY2VsbC1tdWx0aXBsZS1zZWxlY3RlZF0nOiAnaXNNdWx0aXBsZUNlbGxzU2VsZWN0ZWQnLFxuICAgICdbY2xhc3MuY2VsbC1kcmFnZ2luZ10nOiAnaXNEcmFnZ2luZycsXG4gICAgJ1thdHRyLmRhdGEtcm93LWlkXSc6ICdjZWxsSWQoKS5yb3dJZCcsXG4gICAgJ1thdHRyLmRhdGEtY29sdW1uLW5hbWVdJzogJ2NlbGxJZCgpLmNvbHVtbk5hbWUnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDZWxsSWRlbnRpZmllckRpcmVjdGl2ZTxDIGV4dGVuZHMgSUNlbGxJZCA9IElDZWxsSWQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY2VsbElkID0gaW5wdXQucmVxdWlyZWQ8Qz4oeyBhbGlhczogJ2FwcENlbGxJZCcgfSk7XG5cbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc0NlbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgaXNNdWx0aXBsZUNlbGxzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzRHJhZ2dpbmcgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2UgPSBpbmplY3QoQVBQX0NFTExfU0VMRUNUSU9OX1NFUlZJQ0VfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gTGlzdGVuIHRvIHNlcnZpY2Ugc2VsZWN0aW9uIGNoYW5nZXMgYW5kIGVtaXRcbiAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0aW9uQ2hhbmdlU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzSW5pdGlhbGl6ZWQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDZWxsU2VsZWN0ZWQgPSB0aGlzLnNlcnZpY2UuaXNDZWxsU2VsZWN0ZWQodGhpcy5jZWxsSWQoKSk7XG4gICAgICAgIHRoaXMuaXNNdWx0aXBsZUNlbGxzU2VsZWN0ZWQgPSBhcnJheVNpemUodGhpcy5zZXJ2aWNlLnNlbGVjdGVkQ2VsbHMpID4gMTtcbiAgICAgIH0pO1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuaGFuZGxlQ2VsbE1vdXNlRG93bihldmVudCwgdGhpcy5jZWxsSWQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmhhbmRsZUNlbGxNb3VzZUVudGVyKGV2ZW50LCB0aGlzLmNlbGxJZCgpKTtcbiAgfVxufVxuIl19
@@ -29394,6 +29394,7 @@ class CellIdentifierDirective {
29394
29394
  cellId = input.required({ alias: 'appCellId' });
29395
29395
  isInitialized = false;
29396
29396
  isCellSelected = false;
29397
+ isMultipleCellsSelected = false;
29397
29398
  isDragging = false;
29398
29399
  service = inject(APP_CELL_SELECTION_SERVICE_TOKEN);
29399
29400
  destroyRef = inject(DestroyRef);
@@ -29401,7 +29402,10 @@ class CellIdentifierDirective {
29401
29402
  // Listen to service selection changes and emit
29402
29403
  this.service.selectionChangeSubject
29403
29404
  .pipe(filter(() => this.isInitialized), takeUntilDestroyed(this.destroyRef))
29404
- .subscribe(() => (this.isCellSelected = this.service.isCellSelected(this.cellId())));
29405
+ .subscribe(() => {
29406
+ this.isCellSelected = this.service.isCellSelected(this.cellId());
29407
+ this.isMultipleCellsSelected = arraySize(this.service.selectedCells) > 1;
29408
+ });
29405
29409
  this.isInitialized = true;
29406
29410
  }
29407
29411
  async handleMouseDown(event) {
@@ -29415,7 +29419,7 @@ class CellIdentifierDirective {
29415
29419
  await this.service.handleCellMouseEnter(event, this.cellId());
29416
29420
  }
29417
29421
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellIdentifierDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
29418
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: CellIdentifierDirective, isStandalone: true, selector: "[appCellId]", inputs: { cellId: { classPropertyName: "cellId", publicName: "appCellId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mousedown": "handleMouseDown($event)", "mouseenter": "handleMouseEnter($event)" }, properties: { "class.cell-selected": "isCellSelected", "class.cell-dragging": "isDragging", "attr.data-row-id": "cellId().rowId", "attr.data-column-name": "cellId().columnName" } }, ngImport: i0 });
29422
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: CellIdentifierDirective, isStandalone: true, selector: "[appCellId]", inputs: { cellId: { classPropertyName: "cellId", publicName: "appCellId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mousedown": "handleMouseDown($event)", "mouseenter": "handleMouseEnter($event)" }, properties: { "class.cell-selected": "isCellSelected", "class.cell-multiple-selected": "isMultipleCellsSelected", "class.cell-dragging": "isDragging", "attr.data-row-id": "cellId().rowId", "attr.data-column-name": "cellId().columnName" } }, ngImport: i0 });
29419
29423
  }
29420
29424
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellIdentifierDirective, decorators: [{
29421
29425
  type: Directive,
@@ -29426,6 +29430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
29426
29430
  '(mousedown)': 'handleMouseDown($event)',
29427
29431
  '(mouseenter)': 'handleMouseEnter($event)',
29428
29432
  '[class.cell-selected]': 'isCellSelected',
29433
+ '[class.cell-multiple-selected]': 'isMultipleCellsSelected',
29429
29434
  '[class.cell-dragging]': 'isDragging',
29430
29435
  '[attr.data-row-id]': 'cellId().rowId',
29431
29436
  '[attr.data-column-name]': 'cellId().columnName',