@angular/cdk-experimental 19.1.0-next.1 → 19.1.0-next.3

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.
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Directive, Injectable, NgZone, CSP_NONCE, ElementRef, NgModule, Injector } from '@angular/core';
2
+ import { InjectionToken, inject, Renderer2, Directive, Input, Injectable, NgZone, CSP_NONCE, ElementRef, NgModule, Injector } from '@angular/core';
3
3
  import { _IdGenerator } from '@angular/cdk/a11y';
4
- import { Subject, fromEvent, merge, combineLatest, Observable } from 'rxjs';
5
- import { map, takeUntil, filter, mapTo, take, startWith, pairwise, distinctUntilChanged, share, skip } from 'rxjs/operators';
4
+ import { Subject, merge, combineLatest, Observable } from 'rxjs';
5
+ import { mapTo, take, takeUntil, startWith, pairwise, distinctUntilChanged, share, map, skip, filter } from 'rxjs/operators';
6
6
  import { _closest } from '@angular/cdk-experimental/popover-edit';
7
7
  import { _COALESCED_STYLE_SCHEDULER, CdkTable } from '@angular/cdk/table';
8
8
  import { DOCUMENT } from '@angular/common';
@@ -18,17 +18,24 @@ const RESIZE_OVERLAY_SELECTOR = '.mat-column-resize-overlay-thumb';
18
18
 
19
19
  const HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';
20
20
  const WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';
21
+ const COLUMN_RESIZE_OPTIONS = new InjectionToken('CdkColumnResizeOptions');
21
22
  /**
22
23
  * Base class for ColumnResize directives which attach to mat-table elements to
23
24
  * provide common events and services for column resizing.
24
25
  */
25
26
  class ColumnResize {
26
- _idGenerator = inject(_IdGenerator);
27
+ _renderer = inject(Renderer2);
28
+ _eventCleanups;
27
29
  destroyed = new Subject();
28
30
  /** Unique ID for this table instance. */
29
- selectorId = this._idGenerator.getId('cdk-column-resize-');
31
+ selectorId = inject(_IdGenerator).getId('cdk-column-resize-');
30
32
  /** The id attribute of the table, if specified. */
31
33
  id;
34
+ /**
35
+ * Whether to update the column's width continuously as the mouse position
36
+ * changes, or to wait until mouseup to apply the new size.
37
+ */
38
+ liveResizeUpdates = inject(COLUMN_RESIZE_OPTIONS, { optional: true })?.liveResizeUpdates ?? true;
32
39
  ngAfterViewInit() {
33
40
  this.elementRef.nativeElement.classList.add(this.getUniqueCssClass());
34
41
  this._listenForRowHoverEvents();
@@ -36,6 +43,7 @@ class ColumnResize {
36
43
  this._listenForHoverActivity();
37
44
  }
38
45
  ngOnDestroy() {
46
+ this._eventCleanups?.forEach(cleanup => cleanup());
39
47
  this.destroyed.next();
40
48
  this.destroyed.complete();
41
49
  }
@@ -43,6 +51,10 @@ class ColumnResize {
43
51
  getUniqueCssClass() {
44
52
  return this.selectorId;
45
53
  }
54
+ /** Gets the ID for this table used for column size persistance. */
55
+ getTableId() {
56
+ return String(this.elementRef.nativeElement.id);
57
+ }
46
58
  /** Called when a column in the table is resized. Applies a css class to the table element. */
47
59
  setResized() {
48
60
  this.elementRef.nativeElement.classList.add(WITH_RESIZED_COLUMN_CLASS);
@@ -50,13 +62,17 @@ class ColumnResize {
50
62
  _listenForRowHoverEvents() {
51
63
  this.ngZone.runOutsideAngular(() => {
52
64
  const element = this.elementRef.nativeElement;
53
- fromEvent(element, 'mouseover')
54
- .pipe(map(event => _closest(event.target, HEADER_CELL_SELECTOR)), takeUntil(this.destroyed))
55
- .subscribe(this.eventDispatcher.headerCellHovered);
56
- fromEvent(element, 'mouseleave')
57
- .pipe(filter(event => !!event.relatedTarget &&
58
- !event.relatedTarget.matches(RESIZE_OVERLAY_SELECTOR)), mapTo(null), takeUntil(this.destroyed))
59
- .subscribe(this.eventDispatcher.headerCellHovered);
65
+ this._eventCleanups = [
66
+ this._renderer.listen(element, 'mouseover', (event) => {
67
+ this.eventDispatcher.headerCellHovered.next(_closest(event.target, HEADER_CELL_SELECTOR));
68
+ }),
69
+ this._renderer.listen(element, 'mouseleave', (event) => {
70
+ if (event.relatedTarget &&
71
+ !event.relatedTarget.matches(RESIZE_OVERLAY_SELECTOR)) {
72
+ this.eventDispatcher.headerCellHovered.next(null);
73
+ }
74
+ }),
75
+ ];
60
76
  });
61
77
  }
62
78
  _listenForResizeActivity() {
@@ -78,12 +94,14 @@ class ColumnResize {
78
94
  }
79
95
  });
80
96
  }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResize, deps: [], target: i0.ɵɵFactoryTarget.Directive });
82
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: ColumnResize, isStandalone: true, ngImport: i0 });
97
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResize, deps: [], target: i0.ɵɵFactoryTarget.Directive });
98
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0-next.3", type: ColumnResize, isStandalone: true, inputs: { liveResizeUpdates: "liveResizeUpdates" }, ngImport: i0 });
83
99
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResize, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResize, decorators: [{
85
101
  type: Directive
86
- }] });
102
+ }], propDecorators: { liveResizeUpdates: [{
103
+ type: Input
104
+ }] } });
87
105
 
88
106
  /**
89
107
  * Originating source of column resize events within a table.
@@ -96,10 +114,10 @@ class ColumnResizeNotifierSource {
96
114
  resizeCompleted = new Subject();
97
115
  /** Triggers a resize action. */
98
116
  triggerResize = new Subject();
99
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResizeNotifierSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResizeNotifierSource });
117
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResizeNotifierSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
118
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResizeNotifierSource });
101
119
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResizeNotifierSource, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResizeNotifierSource, decorators: [{
103
121
  type: Injectable
104
122
  }] });
105
123
  /** Service for triggering column resizes imperatively or being notified of them. */
@@ -116,10 +134,10 @@ class ColumnResizeNotifier {
116
134
  isStickyColumn: true,
117
135
  });
118
136
  }
119
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResizeNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
120
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResizeNotifier });
137
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResizeNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
138
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResizeNotifier });
121
139
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnResizeNotifier, decorators: [{
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnResizeNotifier, decorators: [{
123
141
  type: Injectable
124
142
  }] });
125
143
 
@@ -171,10 +189,10 @@ class HeaderRowEventDispatcher {
171
189
  complete: () => observer.complete(),
172
190
  }));
173
191
  }
174
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: HeaderRowEventDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
175
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: HeaderRowEventDispatcher });
192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: HeaderRowEventDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
193
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: HeaderRowEventDispatcher });
176
194
  }
177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: HeaderRowEventDispatcher, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: HeaderRowEventDispatcher, decorators: [{
178
196
  type: Injectable
179
197
  }] });
180
198
 
@@ -199,10 +217,10 @@ class ResizeStrategy {
199
217
  }
200
218
  this._pendingResizeDelta = (this._pendingResizeDelta ?? 0) + delta;
201
219
  }
202
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ResizeStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
203
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ResizeStrategy });
220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ResizeStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
221
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ResizeStrategy });
204
222
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ResizeStrategy, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ResizeStrategy, decorators: [{
206
224
  type: Injectable
207
225
  }] });
208
226
  /**
@@ -236,10 +254,10 @@ class TableLayoutFixedResizeStrategy extends ResizeStrategy {
236
254
  const newWidth = Math.min(currentWidth, sizeInPx);
237
255
  this.applyColumnSize(_, columnHeader, newWidth, currentWidth);
238
256
  }
239
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TableLayoutFixedResizeStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
240
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TableLayoutFixedResizeStrategy });
257
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: TableLayoutFixedResizeStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
258
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: TableLayoutFixedResizeStrategy });
241
259
  }
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TableLayoutFixedResizeStrategy, decorators: [{
260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: TableLayoutFixedResizeStrategy, decorators: [{
243
261
  type: Injectable
244
262
  }] });
245
263
  /**
@@ -349,10 +367,10 @@ class CdkFlexTableResizeStrategy extends ResizeStrategy {
349
367
  const body = propertyKeys.map(key => `${key}:${properties.get(key)}`).join(';');
350
368
  this._getStyleSheet().insertRule(`${selector} {${body}}`, index);
351
369
  }
352
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkFlexTableResizeStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
353
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkFlexTableResizeStrategy });
370
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkFlexTableResizeStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
371
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkFlexTableResizeStrategy });
354
372
  }
355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkFlexTableResizeStrategy, decorators: [{
373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkFlexTableResizeStrategy, decorators: [{
356
374
  type: Injectable
357
375
  }] });
358
376
  /** Converts CSS pixel values to numbers, eg "123px" to 123. Returns NaN for non pixel values. */
@@ -403,10 +421,10 @@ class CdkColumnResize extends ColumnResize {
403
421
  ngZone = inject(NgZone);
404
422
  notifier = inject(ColumnResizeNotifierSource);
405
423
  table = inject(CdkTable);
406
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResize, deps: null, target: i0.ɵɵFactoryTarget.Directive });
407
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: CdkColumnResize, isStandalone: true, selector: "table[cdk-table][columnResize]", providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }], usesInheritance: true, ngImport: i0 });
424
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResize, deps: null, target: i0.ɵɵFactoryTarget.Directive });
425
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0-next.3", type: CdkColumnResize, isStandalone: true, selector: "table[cdk-table][columnResize]", providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }], usesInheritance: true, ngImport: i0 });
408
426
  }
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResize, decorators: [{
427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResize, decorators: [{
410
428
  type: Directive,
411
429
  args: [{
412
430
  selector: 'table[cdk-table][columnResize]',
@@ -425,10 +443,10 @@ class CdkColumnResizeFlex extends ColumnResize {
425
443
  ngZone = inject(NgZone);
426
444
  notifier = inject(ColumnResizeNotifierSource);
427
445
  table = inject(CdkTable);
428
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeFlex, deps: null, target: i0.ɵɵFactoryTarget.Directive });
429
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: CdkColumnResizeFlex, isStandalone: true, selector: "cdk-table[columnResize]", providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }], usesInheritance: true, ngImport: i0 });
446
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeFlex, deps: null, target: i0.ɵɵFactoryTarget.Directive });
447
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0-next.3", type: CdkColumnResizeFlex, isStandalone: true, selector: "cdk-table[columnResize]", providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }], usesInheritance: true, ngImport: i0 });
430
448
  }
431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeFlex, decorators: [{
449
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeFlex, decorators: [{
432
450
  type: Directive,
433
451
  args: [{
434
452
  selector: 'cdk-table[columnResize]',
@@ -447,13 +465,13 @@ class CdkDefaultEnabledColumnResize extends ColumnResize {
447
465
  ngZone = inject(NgZone);
448
466
  notifier = inject(ColumnResizeNotifierSource);
449
467
  table = inject(CdkTable);
450
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkDefaultEnabledColumnResize, deps: null, target: i0.ɵɵFactoryTarget.Directive });
451
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: CdkDefaultEnabledColumnResize, isStandalone: true, selector: "table[cdk-table]", providers: [
468
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkDefaultEnabledColumnResize, deps: null, target: i0.ɵɵFactoryTarget.Directive });
469
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0-next.3", type: CdkDefaultEnabledColumnResize, isStandalone: true, selector: "table[cdk-table]", providers: [
452
470
  ...TABLE_PROVIDERS,
453
471
  { provide: ColumnResize, useExisting: CdkDefaultEnabledColumnResize },
454
472
  ], usesInheritance: true, ngImport: i0 });
455
473
  }
456
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkDefaultEnabledColumnResize, decorators: [{
474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkDefaultEnabledColumnResize, decorators: [{
457
475
  type: Directive,
458
476
  args: [{
459
477
  selector: 'table[cdk-table]',
@@ -475,13 +493,13 @@ class CdkDefaultEnabledColumnResizeFlex extends ColumnResize {
475
493
  ngZone = inject(NgZone);
476
494
  notifier = inject(ColumnResizeNotifierSource);
477
495
  table = inject(CdkTable);
478
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkDefaultEnabledColumnResizeFlex, deps: null, target: i0.ɵɵFactoryTarget.Directive });
479
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: CdkDefaultEnabledColumnResizeFlex, isStandalone: true, selector: "cdk-table", providers: [
496
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkDefaultEnabledColumnResizeFlex, deps: null, target: i0.ɵɵFactoryTarget.Directive });
497
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0-next.3", type: CdkDefaultEnabledColumnResizeFlex, isStandalone: true, selector: "cdk-table", providers: [
480
498
  ...FLEX_PROVIDERS,
481
499
  { provide: ColumnResize, useExisting: CdkDefaultEnabledColumnResizeFlex },
482
500
  ], usesInheritance: true, ngImport: i0 });
483
501
  }
484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkDefaultEnabledColumnResizeFlex, decorators: [{
502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkDefaultEnabledColumnResizeFlex, decorators: [{
485
503
  type: Directive,
486
504
  args: [{
487
505
  selector: 'cdk-table',
@@ -497,11 +515,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
497
515
  * When using this module, columns are resizable by default.
498
516
  */
499
517
  class CdkColumnResizeDefaultEnabledModule {
500
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
501
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule, imports: [CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex], exports: [CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex] });
502
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule });
518
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
519
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule, imports: [CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex], exports: [CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex] });
520
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule });
503
521
  }
504
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule, decorators: [{
522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeDefaultEnabledModule, decorators: [{
505
523
  type: NgModule,
506
524
  args: [{
507
525
  imports: [CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex],
@@ -513,11 +531,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
513
531
  * When using this module, columns are not resizable by default.
514
532
  */
515
533
  class CdkColumnResizeModule {
516
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
517
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeModule, imports: [CdkColumnResize, CdkColumnResizeFlex], exports: [CdkColumnResize, CdkColumnResizeFlex] });
518
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeModule });
534
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
535
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeModule, imports: [CdkColumnResize, CdkColumnResizeFlex], exports: [CdkColumnResize, CdkColumnResizeFlex] });
536
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeModule });
519
537
  }
520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: CdkColumnResizeModule, decorators: [{
538
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: CdkColumnResizeModule, decorators: [{
521
539
  type: NgModule,
522
540
  args: [{
523
541
  imports: [CdkColumnResize, CdkColumnResizeFlex],
@@ -529,10 +547,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
529
547
  * Can be provided by the host application to enable persistence of column resize state.
530
548
  */
531
549
  class ColumnSizeStore {
532
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnSizeStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
533
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnSizeStore });
550
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnSizeStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
551
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnSizeStore });
534
552
  }
535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ColumnSizeStore, decorators: [{
553
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ColumnSizeStore, decorators: [{
536
554
  type: Injectable
537
555
  }] });
538
556
 
@@ -542,11 +560,13 @@ class ResizeRef {
542
560
  overlayRef;
543
561
  minWidthPx;
544
562
  maxWidthPx;
545
- constructor(origin, overlayRef, minWidthPx, maxWidthPx) {
563
+ liveUpdates;
564
+ constructor(origin, overlayRef, minWidthPx, maxWidthPx, liveUpdates = true) {
546
565
  this.origin = origin;
547
566
  this.overlayRef = overlayRef;
548
567
  this.minWidthPx = minWidthPx;
549
568
  this.maxWidthPx = maxWidthPx;
569
+ this.liveUpdates = liveUpdates;
550
570
  }
551
571
  }
552
572
 
@@ -561,6 +581,7 @@ class Resizable {
561
581
  inlineHandle;
562
582
  overlayRef;
563
583
  destroyed = new Subject();
584
+ columnSizeStore = inject(ColumnSizeStore, { optional: true });
564
585
  _viewInitialized = false;
565
586
  _isDestroyed = false;
566
587
  /** The minimum width to allow the column to be sized to. */
@@ -595,6 +616,15 @@ class Resizable {
595
616
  this._viewInitialized = true;
596
617
  this._applyMinWidthPx();
597
618
  this._applyMaxWidthPx();
619
+ this.columnSizeStore
620
+ ?.getSize(this.columnResize.getTableId(), this.columnDef.name)
621
+ ?.pipe(take(1), takeUntil(this.destroyed))
622
+ .subscribe(size => {
623
+ if (size == null) {
624
+ return;
625
+ }
626
+ this._applySize(size);
627
+ });
598
628
  });
599
629
  }
600
630
  ngOnDestroy() {
@@ -668,6 +698,11 @@ class Resizable {
668
698
  .subscribe(columnSize => {
669
699
  this._cleanUpAfterResize(columnSize);
670
700
  });
701
+ this.resizeNotifier.resizeCompleted
702
+ .pipe(filter(sizeUpdate => sizeUpdate.columnId === this.columnDef.name), distinctUntilChanged((a, b) => a.size === b.size), takeUntil(this.destroyed))
703
+ .subscribe(sizeUpdate => {
704
+ this.columnSizeStore?.setSize(this.columnResize.getTableId(), this.columnDef.name, sizeUpdate.size);
705
+ });
671
706
  }
672
707
  _completeResizeOperation() {
673
708
  this.ngZone.run(() => {
@@ -693,7 +728,7 @@ class Resizable {
693
728
  providers: [
694
729
  {
695
730
  provide: ResizeRef,
696
- useValue: new ResizeRef(this.elementRef, this.overlayRef, this.minWidthPx, this.maxWidthPx),
731
+ useValue: new ResizeRef(this.elementRef, this.overlayRef, this.minWidthPx, this.maxWidthPx, this.columnResize.liveResizeUpdates),
697
732
  },
698
733
  ],
699
734
  });
@@ -727,10 +762,10 @@ class Resizable {
727
762
  this.elementRef.nativeElement.appendChild(this.inlineHandle);
728
763
  });
729
764
  }
730
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: Resizable, deps: [], target: i0.ɵɵFactoryTarget.Directive });
731
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: Resizable, isStandalone: true, ngImport: i0 });
765
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: Resizable, deps: [], target: i0.ɵɵFactoryTarget.Directive });
766
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0-next.3", type: Resizable, isStandalone: true, ngImport: i0 });
732
767
  }
733
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: Resizable, decorators: [{
768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: Resizable, decorators: [{
734
769
  type: Directive
735
770
  }] });
736
771
 
@@ -741,7 +776,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
741
776
  * for handling column resize mouse events and displaying any visible UI on the column edge.
742
777
  */
743
778
  class ResizeOverlayHandle {
779
+ _renderer = inject(Renderer2);
744
780
  destroyed = new Subject();
781
+ _cumulativeDeltaX = 0;
745
782
  ngAfterViewInit() {
746
783
  this._listenForMouseEvents();
747
784
  }
@@ -751,13 +788,13 @@ class ResizeOverlayHandle {
751
788
  }
752
789
  _listenForMouseEvents() {
753
790
  this.ngZone.runOutsideAngular(() => {
754
- fromEvent(this.elementRef.nativeElement, 'mouseenter')
791
+ this._observableFromEvent(this.elementRef.nativeElement, 'mouseenter')
755
792
  .pipe(mapTo(this.resizeRef.origin.nativeElement), takeUntil(this.destroyed))
756
793
  .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));
757
- fromEvent(this.elementRef.nativeElement, 'mouseleave')
794
+ this._observableFromEvent(this.elementRef.nativeElement, 'mouseleave')
758
795
  .pipe(map(event => event.relatedTarget && _closest(event.relatedTarget, HEADER_CELL_SELECTOR)), takeUntil(this.destroyed))
759
796
  .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));
760
- fromEvent(this.elementRef.nativeElement, 'mousedown')
797
+ this._observableFromEvent(this.elementRef.nativeElement, 'mousedown')
761
798
  .pipe(takeUntil(this.destroyed))
762
799
  .subscribe(mousedownEvent => {
763
800
  this._dragStarted(mousedownEvent);
@@ -769,15 +806,16 @@ class ResizeOverlayHandle {
769
806
  if (mousedownEvent.button !== 0) {
770
807
  return;
771
808
  }
772
- const mouseup = fromEvent(this.document, 'mouseup');
773
- const mousemove = fromEvent(this.document, 'mousemove');
774
- const escape = fromEvent(this.document, 'keyup').pipe(filter(event => event.keyCode === ESCAPE));
809
+ const mouseup = this._observableFromEvent(this.document, 'mouseup');
810
+ const mousemove = this._observableFromEvent(this.document, 'mousemove');
811
+ const escape = this._observableFromEvent(this.document, 'keyup').pipe(filter(event => event.keyCode === ESCAPE));
775
812
  const startX = mousedownEvent.screenX;
776
813
  const initialSize = this._getOriginWidth();
777
814
  let overlayOffset = 0;
778
815
  let originOffset = this._getOriginOffset();
779
816
  let size = initialSize;
780
817
  let overshot = 0;
818
+ this._cumulativeDeltaX = 0;
781
819
  this.updateResizeActive(true);
782
820
  mouseup.pipe(takeUntil(merge(escape, this.destroyed))).subscribe(({ screenX }) => {
783
821
  this.styleScheduler.scheduleEnd(() => {
@@ -791,6 +829,12 @@ class ResizeOverlayHandle {
791
829
  .pipe(map(({ screenX }) => screenX), startWith(startX), distinctUntilChanged(), pairwise(), takeUntil(merge(mouseup, escape, this.destroyed)))
792
830
  .subscribe(([prevX, currX]) => {
793
831
  let deltaX = currX - prevX;
832
+ if (!this.resizeRef.liveUpdates) {
833
+ this._cumulativeDeltaX += deltaX;
834
+ const sizeDelta = this._computeNewSize(size, this._cumulativeDeltaX) - size;
835
+ this._updateOverlayOffset(sizeDelta);
836
+ return;
837
+ }
794
838
  // If the mouse moved further than the resize was able to match, limit the
795
839
  // movement of the overlay to match the actual size and position of the origin.
796
840
  if (overshot !== 0) {
@@ -808,14 +852,7 @@ class ResizeOverlayHandle {
808
852
  }
809
853
  }
810
854
  }
811
- let computedNewSize = size + (this._isLtr() ? deltaX : -deltaX);
812
- computedNewSize = Math.min(Math.max(computedNewSize, this.resizeRef.minWidthPx, 0), this.resizeRef.maxWidthPx);
813
- this.resizeNotifier.triggerResize.next({
814
- columnId: this.columnDef.name,
815
- size: computedNewSize,
816
- previousSize: size,
817
- isStickyColumn: this.columnDef.sticky || this.columnDef.stickyEnd,
818
- });
855
+ this._triggerResize(size, deltaX);
819
856
  this.styleScheduler.scheduleEnd(() => {
820
857
  const originNewSize = this._getOriginWidth();
821
858
  const originNewOffset = this._getOriginOffset();
@@ -832,6 +869,19 @@ class ResizeOverlayHandle {
832
869
  updateResizeActive(active) {
833
870
  this.eventDispatcher.overlayHandleActiveForCell.next(active ? this.resizeRef.origin.nativeElement : null);
834
871
  }
872
+ _triggerResize(startSize, deltaX) {
873
+ this.resizeNotifier.triggerResize.next({
874
+ columnId: this.columnDef.name,
875
+ size: this._computeNewSize(startSize, deltaX),
876
+ previousSize: startSize,
877
+ isStickyColumn: this.columnDef.sticky || this.columnDef.stickyEnd,
878
+ });
879
+ }
880
+ _computeNewSize(startSize, deltaX) {
881
+ let computedNewSize = startSize + (this._isLtr() ? deltaX : -deltaX);
882
+ computedNewSize = Math.min(Math.max(computedNewSize, this.resizeRef.minWidthPx, 0), this.resizeRef.maxWidthPx);
883
+ return computedNewSize;
884
+ }
835
885
  _getOriginWidth() {
836
886
  return this.resizeRef.origin.nativeElement.offsetWidth;
837
887
  }
@@ -847,8 +897,14 @@ class ResizeOverlayHandle {
847
897
  _notifyResizeEnded(size, completedSuccessfully = false) {
848
898
  this.updateResizeActive(false);
849
899
  this.ngZone.run(() => {
850
- const sizeMessage = { columnId: this.columnDef.name, size };
900
+ const sizeMessage = {
901
+ columnId: this.columnDef.name,
902
+ size: this._computeNewSize(size, this._cumulativeDeltaX),
903
+ };
851
904
  if (completedSuccessfully) {
905
+ if (!this.resizeRef.liveUpdates) {
906
+ this._triggerResize(size, this._cumulativeDeltaX);
907
+ }
852
908
  this.resizeNotifier.resizeCompleted.next(sizeMessage);
853
909
  }
854
910
  else {
@@ -856,10 +912,20 @@ class ResizeOverlayHandle {
856
912
  }
857
913
  });
858
914
  }
859
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ResizeOverlayHandle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
860
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: ResizeOverlayHandle, isStandalone: true, ngImport: i0 });
915
+ _observableFromEvent(element, name) {
916
+ return new Observable(subscriber => {
917
+ const handler = (event) => subscriber.next(event);
918
+ const cleanup = this._renderer.listen(element, name, handler);
919
+ return () => {
920
+ cleanup();
921
+ subscriber.complete();
922
+ };
923
+ });
924
+ }
925
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ResizeOverlayHandle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
926
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0-next.3", type: ResizeOverlayHandle, isStandalone: true, ngImport: i0 });
861
927
  }
862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ResizeOverlayHandle, decorators: [{
928
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0-next.3", ngImport: i0, type: ResizeOverlayHandle, decorators: [{
863
929
  type: Directive
864
930
  }] });
865
931
 
@@ -867,5 +933,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
867
933
  * Generated bundle index. Do not edit.
868
934
  */
869
935
 
870
- export { CdkColumnResize, CdkColumnResizeDefaultEnabledModule, CdkColumnResizeFlex, CdkColumnResizeModule, CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex, CdkFlexTableResizeStrategy, ColumnResize, ColumnResizeNotifier, ColumnResizeNotifierSource, ColumnSizeStore, FLEX_RESIZE_STRATEGY_PROVIDER, HeaderRowEventDispatcher, Resizable, ResizeOverlayHandle, ResizeRef, ResizeStrategy, TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER, TableLayoutFixedResizeStrategy };
936
+ export { COLUMN_RESIZE_OPTIONS, CdkColumnResize, CdkColumnResizeDefaultEnabledModule, CdkColumnResizeFlex, CdkColumnResizeModule, CdkDefaultEnabledColumnResize, CdkDefaultEnabledColumnResizeFlex, CdkFlexTableResizeStrategy, ColumnResize, ColumnResizeNotifier, ColumnResizeNotifierSource, ColumnSizeStore, FLEX_RESIZE_STRATEGY_PROVIDER, HeaderRowEventDispatcher, Resizable, ResizeOverlayHandle, ResizeRef, ResizeStrategy, TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER, TableLayoutFixedResizeStrategy };
871
937
  //# sourceMappingURL=column-resize.mjs.map