@progress/kendo-angular-common 25.0.0-develop.2 → 25.0.0-develop.21

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.
@@ -3,10 +3,10 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { EventEmitter, Output, Input, Directive, Injectable, Component, InjectionToken, HostBinding, ViewChild, Optional, isDevMode } from '@angular/core';
6
+ import { afterNextRender, EventEmitter, signal, Output, Input, Directive, Injectable, ChangeDetectionStrategy, Component, InjectionToken, HostBinding, ViewChild, Optional, isDevMode, SkipSelf, Inject } from '@angular/core';
7
7
  import { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';
8
- import { take, auditTime } from 'rxjs/operators';
9
8
  import { Draggable } from '@progress/kendo-draggable';
9
+ import { auditTime } from 'rxjs/operators';
10
10
  import { merge, fromEvent, from, Subscription } from 'rxjs';
11
11
  import { NgStyle, NgTemplateOutlet } from '@angular/common';
12
12
  import { registerLicenseMessage, getLicenseStatus } from '@progress/kendo-licensing';
@@ -159,11 +159,12 @@ const parseArrayClassNames = (value) => {
159
159
  /**
160
160
  * @hidden
161
161
  */
162
- const setHTMLAttributes = (attributes, renderer, element, zone) => {
163
- if (zone) {
164
- zone.onStable.pipe(take(1)).subscribe(() => {
162
+ const setHTMLAttributes = (attributes, renderer, element, injector) => {
163
+ if (injector) {
164
+ // compatible both for zoned and zoneless apps
165
+ afterNextRender(() => {
165
166
  applyAttributes(attributes, renderer, element);
166
- });
167
+ }, { injector });
167
168
  }
168
169
  else {
169
170
  applyAttributes(attributes, renderer, element);
@@ -242,23 +243,21 @@ const processCssValue = (value) => {
242
243
  class DraggableDirective {
243
244
  element;
244
245
  ngZone;
245
- enableDrag = true;
246
+ set enableDrag(value) {
247
+ this._enableDrag.set(value);
248
+ this.toggleDraggable();
249
+ }
250
+ get enableDrag() { return this._enableDrag(); }
246
251
  kendoPress = new EventEmitter();
247
252
  kendoDrag = new EventEmitter();
248
253
  kendoRelease = new EventEmitter();
249
- draggable;
254
+ draggable = signal(undefined, ...(ngDevMode ? [{ debugName: "draggable" }] : []));
255
+ _enableDrag = signal(true, ...(ngDevMode ? [{ debugName: "_enableDrag" }] : []));
250
256
  constructor(element, ngZone) {
251
257
  this.element = element;
252
258
  this.ngZone = ngZone;
253
- }
254
- ngOnInit() {
255
259
  this.toggleDraggable();
256
260
  }
257
- ngOnChanges(changes) {
258
- if (isChanged('enableDrag', changes)) {
259
- this.toggleDraggable();
260
- }
261
- }
262
261
  ngOnDestroy() {
263
262
  this.destroyDraggable();
264
263
  }
@@ -266,25 +265,25 @@ class DraggableDirective {
266
265
  if (isDocumentAvailable()) {
267
266
  this.destroyDraggable();
268
267
  if (this.enableDrag) {
269
- this.draggable = new Draggable({
268
+ this.draggable.set(new Draggable({
270
269
  drag: (e) => this.kendoDrag.next(e),
271
270
  press: (e) => this.kendoPress.next(e),
272
271
  release: (e) => this.kendoRelease.next(e)
273
- });
274
- this.ngZone.runOutsideAngular(() => this.draggable?.bindTo(this.element.nativeElement));
272
+ }));
273
+ this.ngZone.runOutsideAngular(() => this.draggable()?.bindTo(this.element.nativeElement));
275
274
  }
276
275
  }
277
276
  }
278
277
  destroyDraggable() {
279
- if (this.draggable) {
280
- this.draggable.destroy();
281
- this.draggable = undefined;
278
+ if (this.draggable()) {
279
+ this.draggable()?.destroy();
280
+ this.draggable.set(undefined);
282
281
  }
283
282
  }
284
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DraggableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
285
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: DraggableDirective, isStandalone: true, selector: "[kendoDraggable]", inputs: { enableDrag: "enableDrag" }, outputs: { kendoPress: "kendoPress", kendoDrag: "kendoDrag", kendoRelease: "kendoRelease" }, usesOnChanges: true, ngImport: i0 });
283
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: DraggableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
284
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: DraggableDirective, isStandalone: true, selector: "[kendoDraggable]", inputs: { enableDrag: "enableDrag" }, outputs: { kendoPress: "kendoPress", kendoDrag: "kendoDrag", kendoRelease: "kendoRelease" }, ngImport: i0 });
286
285
  }
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DraggableDirective, decorators: [{
286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: DraggableDirective, decorators: [{
288
287
  type: Directive,
289
288
  args: [{
290
289
  selector: '[kendoDraggable]',
@@ -451,14 +450,18 @@ class EventsOutsideAngularDirective {
451
450
  element;
452
451
  ngZone;
453
452
  renderer;
454
- events = {};
455
- scope;
453
+ set events(value) { this._events.set(value); }
454
+ get events() { return this._events(); }
455
+ _scope = signal(undefined, ...(ngDevMode ? [{ debugName: "_scope" }] : []));
456
+ set scope(value) { this._scope.set(value); }
457
+ get scope() { return this._scope(); }
456
458
  subscriptions;
457
459
  constructor(element, ngZone, renderer) {
458
460
  this.element = element;
459
461
  this.ngZone = ngZone;
460
462
  this.renderer = renderer;
461
463
  }
464
+ _events = signal({}, ...(ngDevMode ? [{ debugName: "_events" }] : []));
462
465
  ngOnInit() {
463
466
  if (!this.element?.nativeElement) {
464
467
  return;
@@ -481,10 +484,10 @@ class EventsOutsideAngularDirective {
481
484
  this.subscriptions = null;
482
485
  }
483
486
  }
484
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EventsOutsideAngularDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
485
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: EventsOutsideAngularDirective, isStandalone: true, selector: "[kendoEventsOutsideAngular]", inputs: { events: ["kendoEventsOutsideAngular", "events"], scope: "scope" }, ngImport: i0 });
487
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EventsOutsideAngularDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
488
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: EventsOutsideAngularDirective, isStandalone: true, selector: "[kendoEventsOutsideAngular]", inputs: { events: ["kendoEventsOutsideAngular", "events"], scope: "scope" }, ngImport: i0 });
486
489
  }
487
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EventsOutsideAngularDirective, decorators: [{
490
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: EventsOutsideAngularDirective, decorators: [{
488
491
  type: Directive,
489
492
  args: [{
490
493
  selector: '[kendoEventsOutsideAngular]',
@@ -500,11 +503,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
500
503
  class ResizeService {
501
504
  resizeBatchService;
502
505
  resize = new EventEmitter();
503
- acceptedSize = false;
504
- lastWidth;
505
- lastHeight;
506
- state = 0 /* ServiceState.Initial */;
507
- parentElement;
506
+ set acceptedSize(value) { this._acceptedSize.set(value); }
507
+ get acceptedSize() { return this._acceptedSize(); }
508
+ set lastWidth(value) { this._lastWidth?.set(value); }
509
+ get lastWidth() { return this._lastWidth?.(); }
510
+ set lastHeight(value) { this._lastHeight?.set(value); }
511
+ get lastHeight() { return this._lastHeight?.(); }
512
+ set state(value) { this._state.set(value); }
513
+ get state() { return this._state(); }
514
+ set parentElement(value) { this._parentElement.set(value); }
515
+ get parentElement() { return this._parentElement(); }
516
+ _acceptedSize = signal(false, ...(ngDevMode ? [{ debugName: "_acceptedSize" }] : []));
517
+ _lastWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "_lastWidth" }] : []));
518
+ _lastHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "_lastHeight" }] : []));
519
+ _state = signal(0 /* ServiceState.Initial */, ...(ngDevMode ? [{ debugName: "_state" }] : []));
520
+ _parentElement = signal(null, ...(ngDevMode ? [{ debugName: "_parentElement" }] : []));
508
521
  constructor(resizeBatchService) {
509
522
  this.resizeBatchService = resizeBatchService;
510
523
  }
@@ -594,9 +607,15 @@ const SHRINK_CHILD_STYLES = {
594
607
  class ResizeCompatService extends ResizeService {
595
608
  element;
596
609
  ngZone;
597
- expand;
598
- expandChild;
599
- shrink;
610
+ set expand(value) { this._expand.set(value); }
611
+ get expand() { return this._expand(); }
612
+ set expandChild(value) { this._expandChild.set(value); }
613
+ get expandChild() { return this._expandChild(); }
614
+ set shrink(value) { this._shrink.set(value); }
615
+ get shrink() { return this._shrink(); }
616
+ _expand = signal(null, ...(ngDevMode ? [{ debugName: "_expand" }] : []));
617
+ _expandChild = signal(null, ...(ngDevMode ? [{ debugName: "_expandChild" }] : []));
618
+ _shrink = signal(null, ...(ngDevMode ? [{ debugName: "_shrink" }] : []));
600
619
  subscription;
601
620
  constructor(resizeBatchService, element, ngZone) {
602
621
  super(resizeBatchService);
@@ -692,10 +711,12 @@ const HAS_OBSERVER = typeof ResizeObserver !== 'undefined';
692
711
  class ResizeObserverService extends ResizeService {
693
712
  element;
694
713
  ngZone;
695
- resizeObserver;
714
+ set resizeObserver(value) { this._resizeObserver.set(value); }
715
+ get resizeObserver() { return this._resizeObserver(); }
696
716
  static supported() {
697
717
  return HAS_OBSERVER;
698
718
  }
719
+ _resizeObserver = signal(null, ...(ngDevMode ? [{ debugName: "_resizeObserver" }] : []));
699
720
  constructor(resizeBatchService, element, ngZone) {
700
721
  super(resizeBatchService);
701
722
  this.element = element;
@@ -727,7 +748,9 @@ class ResizeObserverService extends ResizeService {
727
748
  */
728
749
  class ResizeBatchService {
729
750
  ngZone;
730
- scheduled = [];
751
+ set scheduled(value) { this._scheduled.set(value); }
752
+ get scheduled() { return this._scheduled(); }
753
+ _scheduled = signal([], ...(ngDevMode ? [{ debugName: "_scheduled" }] : []));
731
754
  resolvedPromise = Promise.resolve(null);
732
755
  subscription;
733
756
  constructor(ngZone) {
@@ -739,7 +762,9 @@ class ResizeBatchService {
739
762
  if (!this.subscription) {
740
763
  this.ngZone.runOutsideAngular(() => {
741
764
  this.subscription = from(this.resolvedPromise)
742
- .subscribe(this.flush);
765
+ .subscribe(() => {
766
+ this.flush();
767
+ });
743
768
  });
744
769
  }
745
770
  }
@@ -775,10 +800,10 @@ class ResizeBatchService {
775
800
  this.scheduled = [];
776
801
  this.unsubscribe();
777
802
  }
778
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ResizeBatchService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
779
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ResizeBatchService, providedIn: 'root' });
803
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ResizeBatchService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
804
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ResizeBatchService, providedIn: 'root' });
780
805
  }
781
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ResizeBatchService, decorators: [{
806
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ResizeBatchService, decorators: [{
782
807
  type: Injectable,
783
808
  args: [{
784
809
  providedIn: 'root'
@@ -801,13 +826,15 @@ class ResizeSensorComponent {
801
826
  *
802
827
  * Defaults to 10.
803
828
  */
804
- rateLimit = DEFAULT_RATE_LIMIT;
829
+ set rateLimit(value) { this._rateLimit.set(value); }
830
+ get rateLimit() { return this._rateLimit(); }
805
831
  /**
806
832
  * Fires when the parent DOM element has been resized.
807
833
  */
808
834
  resize = new EventEmitter();
809
835
  subscription;
810
- resizeService;
836
+ set resizeService(value) { this._resizeService.set(value); }
837
+ get resizeService() { return this._resizeService(); }
811
838
  constructor(resizeBatchService, element, ngZone) {
812
839
  const serviceType = ResizeObserverService.supported() ? ResizeObserverService : ResizeCompatService;
813
840
  this.resizeService = new serviceType(resizeBatchService, element, ngZone);
@@ -820,6 +847,8 @@ class ResizeSensorComponent {
820
847
  }
821
848
  });
822
849
  }
850
+ _rateLimit = signal(DEFAULT_RATE_LIMIT, ...(ngDevMode ? [{ debugName: "_rateLimit" }] : []));
851
+ _resizeService = signal(undefined, ...(ngDevMode ? [{ debugName: "_resizeService" }] : []));
823
852
  ngAfterViewChecked() {
824
853
  this.resizeService.checkChanges();
825
854
  }
@@ -830,15 +859,16 @@ class ResizeSensorComponent {
830
859
  acceptSize(size) {
831
860
  this.resizeService.acceptSize(size);
832
861
  }
833
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ResizeSensorComponent, deps: [{ token: ResizeBatchService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
834
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ResizeSensorComponent, isStandalone: true, selector: "kendo-resize-sensor", inputs: { rateLimit: "rateLimit" }, outputs: { resize: "resize" }, ngImport: i0, template: '', isInline: true });
862
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ResizeSensorComponent, deps: [{ token: ResizeBatchService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
863
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: ResizeSensorComponent, isStandalone: true, selector: "kendo-resize-sensor", inputs: { rateLimit: "rateLimit" }, outputs: { resize: "resize" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
835
864
  }
836
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ResizeSensorComponent, decorators: [{
865
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ResizeSensorComponent, decorators: [{
837
866
  type: Component,
838
867
  args: [{
839
868
  selector: 'kendo-resize-sensor',
840
869
  template: '',
841
- standalone: true
870
+ standalone: true,
871
+ changeDetection: ChangeDetectionStrategy.OnPush
842
872
  }]
843
873
  }], ctorParameters: () => [{ type: ResizeBatchService }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { rateLimit: [{
844
874
  type: Input
@@ -1111,19 +1141,59 @@ let bannerPresentOnPage = false;
1111
1141
  * @hidden
1112
1142
  */
1113
1143
  class WatermarkOverlayComponent {
1114
- licenseMessage;
1144
+ set licenseMessage(value) {
1145
+ this._licenseMessage.set(value);
1146
+ }
1147
+ get licenseMessage() {
1148
+ return this._licenseMessage();
1149
+ }
1115
1150
  banner;
1116
1151
  watermarkStyle = watermarkStyles;
1117
- isOpen = true;
1118
- isMobile = false;
1119
- isNarrow = false;
1120
- isCloseHovered = false;
1121
- isCTAHovered = false;
1122
- bannerMounted = false;
1152
+ set isOpen(value) {
1153
+ this._isOpen.set(value);
1154
+ }
1155
+ get isOpen() {
1156
+ return this._isOpen();
1157
+ }
1158
+ set isMobile(value) {
1159
+ this._isMobile.set(value);
1160
+ }
1161
+ get isMobile() {
1162
+ return this._isMobile();
1163
+ }
1164
+ set isNarrow(value) {
1165
+ this._isNarrow.set(value);
1166
+ }
1167
+ get isNarrow() {
1168
+ return this._isNarrow();
1169
+ }
1170
+ set isCloseHovered(value) {
1171
+ this._isCloseHovered.set(value);
1172
+ }
1173
+ get isCloseHovered() {
1174
+ return this._isCloseHovered();
1175
+ }
1176
+ set isCTAHovered(value) {
1177
+ this._isCTAHovered.set(value);
1178
+ }
1179
+ get isCTAHovered() {
1180
+ return this._isCTAHovered();
1181
+ }
1182
+ set bannerMounted(value) {
1183
+ this._bannerMounted.set(value);
1184
+ }
1185
+ get bannerMounted() {
1186
+ return this._bannerMounted();
1187
+ }
1123
1188
  get messages() {
1124
1189
  return [this.primaryMessage, ...this.extraMessages];
1125
1190
  }
1126
- extraMessages = [];
1191
+ set extraMessages(value) {
1192
+ this._extraMessages.set(value);
1193
+ }
1194
+ get extraMessages() {
1195
+ return this._extraMessages();
1196
+ }
1127
1197
  get primaryMessage() {
1128
1198
  return (this.licenseMessage || {
1129
1199
  severity: 'ERROR',
@@ -1136,6 +1206,14 @@ class WatermarkOverlayComponent {
1136
1206
  });
1137
1207
  }
1138
1208
  licenseKeyUrl = licenseKeyUrl;
1209
+ _isOpen = signal(true, ...(ngDevMode ? [{ debugName: "_isOpen" }] : []));
1210
+ _isMobile = signal(false, ...(ngDevMode ? [{ debugName: "_isMobile" }] : []));
1211
+ _isNarrow = signal(false, ...(ngDevMode ? [{ debugName: "_isNarrow" }] : []));
1212
+ _isCloseHovered = signal(false, ...(ngDevMode ? [{ debugName: "_isCloseHovered" }] : []));
1213
+ _isCTAHovered = signal(false, ...(ngDevMode ? [{ debugName: "_isCTAHovered" }] : []));
1214
+ _bannerMounted = signal(false, ...(ngDevMode ? [{ debugName: "_bannerMounted" }] : []));
1215
+ _licenseMessage = signal(undefined, ...(ngDevMode ? [{ debugName: "_licenseMessage" }] : []));
1216
+ _extraMessages = signal([], ...(ngDevMode ? [{ debugName: "_extraMessages" }] : []));
1139
1217
  getContent(msg) {
1140
1218
  const iconContent = msg.notificationIcon?.content;
1141
1219
  return {
@@ -1181,7 +1259,7 @@ class WatermarkOverlayComponent {
1181
1259
  subscribeLicenseMessage() {
1182
1260
  this.unsubscribeLicenseMessage = registerLicenseMessage(this.licenseMessage, 'KENDOUIANGULAR', ({ message }) => {
1183
1261
  // Add messages from other suites
1184
- this.extraMessages.push(message);
1262
+ this._extraMessages.update(msgs => [...msgs, message]);
1185
1263
  }, () => {
1186
1264
  // Show our own message dialog
1187
1265
  this.bannerMounted = true;
@@ -1199,8 +1277,8 @@ class WatermarkOverlayComponent {
1199
1277
  resetPresenceCheck() {
1200
1278
  bannerPresentOnPage = false;
1201
1279
  }
1202
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: WatermarkOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1203
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: WatermarkOverlayComponent, isStandalone: true, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: { licenseMessage: "licenseMessage" }, host: { properties: { "style": "this.watermarkStyle" } }, viewQueries: [{ propertyName: "banner", first: true, predicate: ["banner"], descendants: true }], ngImport: i0, template: `
1280
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: WatermarkOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1281
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.26", type: WatermarkOverlayComponent, isStandalone: true, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: { licenseMessage: "licenseMessage" }, host: { properties: { "style": "this.watermarkStyle" } }, viewQueries: [{ propertyName: "banner", first: true, predicate: ["banner"], descendants: true }], ngImport: i0, template: `
1204
1282
  <ng-template #buttonTemplate>
1205
1283
  <button
1206
1284
  [ngStyle]="{
@@ -1352,9 +1430,9 @@ class WatermarkOverlayComponent {
1352
1430
  }
1353
1431
  </div>
1354
1432
  }
1355
- `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
1433
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1356
1434
  }
1357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: WatermarkOverlayComponent, decorators: [{
1435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: WatermarkOverlayComponent, decorators: [{
1358
1436
  type: Component,
1359
1437
  args: [{
1360
1438
  selector: 'div[kendoWatermarkOverlay], kendo-watermark-overlay',
@@ -1513,6 +1591,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
1513
1591
  `,
1514
1592
  standalone: true,
1515
1593
  imports: [NgStyle, NgTemplateOutlet],
1594
+ changeDetection: ChangeDetectionStrategy.OnPush,
1516
1595
  }]
1517
1596
  }], propDecorators: { licenseMessage: [{
1518
1597
  type: Input
@@ -1524,7 +1603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
1524
1603
  args: ['style']
1525
1604
  }] } });
1526
1605
 
1527
- const allowed = ['telerik.com', 'progress.com', 'stackblitz.io', 'csb.app'];
1606
+ const allowed = ['telerik.com', 'progress.com', 'stackblitz.io', 'csb.app', 'webcontainer.io'];
1528
1607
  /**
1529
1608
  * @hidden
1530
1609
  */
@@ -1575,10 +1654,10 @@ class PrefixTemplateDirective {
1575
1654
  constructor(templateRef) {
1576
1655
  this.templateRef = templateRef;
1577
1656
  }
1578
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PrefixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1579
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: PrefixTemplateDirective, isStandalone: true, selector: "[kendoPrefixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
1657
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PrefixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1658
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: PrefixTemplateDirective, isStandalone: true, selector: "[kendoPrefixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
1580
1659
  }
1581
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PrefixTemplateDirective, decorators: [{
1660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: PrefixTemplateDirective, decorators: [{
1582
1661
  type: Directive,
1583
1662
  args: [{
1584
1663
  selector: '[kendoPrefixTemplate]',
@@ -1629,10 +1708,10 @@ class SuffixTemplateDirective {
1629
1708
  constructor(templateRef) {
1630
1709
  this.templateRef = templateRef;
1631
1710
  }
1632
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SuffixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1633
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: SuffixTemplateDirective, isStandalone: true, selector: "[kendoSuffixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
1711
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SuffixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1712
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: SuffixTemplateDirective, isStandalone: true, selector: "[kendoSuffixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
1634
1713
  }
1635
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SuffixTemplateDirective, decorators: [{
1714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SuffixTemplateDirective, decorators: [{
1636
1715
  type: Directive,
1637
1716
  args: [{
1638
1717
  selector: '[kendoSuffixTemplate]',
@@ -1686,10 +1765,10 @@ class SeparatorComponent {
1686
1765
  * @hidden
1687
1766
  */
1688
1767
  hostClass = true;
1689
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1690
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: SeparatorComponent, isStandalone: true, selector: "kendo-separator", inputs: { orientation: "orientation" }, host: { properties: { "class.k-input-separator-vertical": "this.vertical", "class.k-input-separator-horizontal": "this.horizontal", "class.k-input-separator": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
1768
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1769
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.26", type: SeparatorComponent, isStandalone: true, selector: "kendo-separator", inputs: { orientation: "orientation" }, host: { properties: { "class.k-input-separator-vertical": "this.vertical", "class.k-input-separator-horizontal": "this.horizontal", "class.k-input-separator": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
1691
1770
  }
1692
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SeparatorComponent, decorators: [{
1771
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: SeparatorComponent, decorators: [{
1693
1772
  type: Component,
1694
1773
  args: [{
1695
1774
  selector: 'kendo-separator',
@@ -1814,10 +1893,10 @@ class ScrollbarService {
1814
1893
  this.subscription?.unsubscribe();
1815
1894
  this.subscription = null;
1816
1895
  }
1817
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScrollbarService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
1818
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScrollbarService, providedIn: 'root' });
1896
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ScrollbarService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
1897
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ScrollbarService, providedIn: 'root' });
1819
1898
  }
1820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScrollbarService, decorators: [{
1899
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ScrollbarService, decorators: [{
1821
1900
  type: Injectable,
1822
1901
  args: [{
1823
1902
  providedIn: 'root'
@@ -1855,6 +1934,7 @@ class ToggleButtonTabStopDirective {
1855
1934
  hostEl;
1856
1935
  renderer;
1857
1936
  zone;
1937
+ injector;
1858
1938
  hostComponent;
1859
1939
  /**
1860
1940
  * @hidden
@@ -1863,25 +1943,33 @@ class ToggleButtonTabStopDirective {
1863
1943
  *
1864
1944
  * @default true
1865
1945
  */
1866
- active;
1946
+ set active(value) { this._active.set(value); }
1947
+ /**
1948
+ * @hidden
1949
+ */
1950
+ get active() { return this._active(); }
1867
1951
  /**
1868
1952
  * Defines the value of the `aria-label` attribute of the toggle button when active.
1869
1953
  *
1870
1954
  * @default "toggle popup"
1871
1955
  */
1872
- toggleButtonAriaLabel = 'toggle popup';
1956
+ set toggleButtonAriaLabel(value) { this._toggleButtonAriaLabel.set(value); }
1957
+ get toggleButtonAriaLabel() { return this._toggleButtonAriaLabel(); }
1873
1958
  button;
1874
1959
  sub = new Subscription();
1875
1960
  focusButton;
1876
1961
  isSplitButton;
1877
1962
  observer;
1963
+ _active = signal(undefined, ...(ngDevMode ? [{ debugName: "_active" }] : []));
1964
+ _toggleButtonAriaLabel = signal('toggle popup', ...(ngDevMode ? [{ debugName: "_toggleButtonAriaLabel" }] : []));
1878
1965
  /**
1879
1966
  * @hidden
1880
1967
  */
1881
- constructor(hostEl, renderer, zone, hostComponent) {
1968
+ constructor(hostEl, renderer, zone, injector, hostComponent) {
1882
1969
  this.hostEl = hostEl;
1883
1970
  this.renderer = renderer;
1884
1971
  this.zone = zone;
1972
+ this.injector = injector;
1885
1973
  this.hostComponent = hostComponent;
1886
1974
  if (isDevMode() && tags.indexOf(hostEl.nativeElement.tagName.toLowerCase()) === -1) {
1887
1975
  console.warn(`The kendoToggleButtonTabStop directive can be applied to the following components only: ${tags}`);
@@ -2023,9 +2111,9 @@ class ToggleButtonTabStopDirective {
2023
2111
  }
2024
2112
  returnFocusToToggleButton() {
2025
2113
  if (this.isSplitButton) {
2026
- this.zone.onStable.pipe(take(1)).subscribe(() => {
2114
+ afterNextRender(() => {
2027
2115
  this.focusToggleButton();
2028
- });
2116
+ }, { injector: this.injector });
2029
2117
  }
2030
2118
  else {
2031
2119
  this.focusToggleButton();
@@ -2065,16 +2153,16 @@ class ToggleButtonTabStopDirective {
2065
2153
  this.observer.observe(mainFocusableElement, mutationConfig);
2066
2154
  });
2067
2155
  }
2068
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ToggleButtonTabStopDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: MultiTabStop }], target: i0.ɵɵFactoryTarget.Directive });
2069
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: ToggleButtonTabStopDirective, isStandalone: true, selector: "[kendoToggleButtonTabStop]", inputs: { active: ["kendoToggleButtonTabStop", "active"], toggleButtonAriaLabel: "toggleButtonAriaLabel" }, usesOnChanges: true, ngImport: i0 });
2156
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToggleButtonTabStopDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.Injector }, { token: MultiTabStop }], target: i0.ɵɵFactoryTarget.Directive });
2157
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ToggleButtonTabStopDirective, isStandalone: true, selector: "[kendoToggleButtonTabStop]", inputs: { active: ["kendoToggleButtonTabStop", "active"], toggleButtonAriaLabel: "toggleButtonAriaLabel" }, usesOnChanges: true, ngImport: i0 });
2070
2158
  }
2071
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ToggleButtonTabStopDirective, decorators: [{
2159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ToggleButtonTabStopDirective, decorators: [{
2072
2160
  type: Directive,
2073
2161
  args: [{
2074
2162
  selector: '[kendoToggleButtonTabStop]',
2075
2163
  standalone: true
2076
2164
  }]
2077
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: MultiTabStop }], propDecorators: { active: [{
2165
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.Injector }, { type: MultiTabStop }], propDecorators: { active: [{
2078
2166
  type: Input,
2079
2167
  args: ['kendoToggleButtonTabStop']
2080
2168
  }], toggleButtonAriaLabel: [{
@@ -2099,10 +2187,10 @@ class TemplateContextDirective {
2099
2187
  constructor(viewContainerRef) {
2100
2188
  this.viewContainerRef = viewContainerRef;
2101
2189
  }
2102
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
2103
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: TemplateContextDirective, isStandalone: true, selector: "[templateContext]", inputs: { templateContext: "templateContext" }, ngImport: i0 });
2190
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
2191
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: TemplateContextDirective, isStandalone: true, selector: "[templateContext]", inputs: { templateContext: "templateContext" }, ngImport: i0 });
2104
2192
  }
2105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TemplateContextDirective, decorators: [{
2193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: TemplateContextDirective, decorators: [{
2106
2194
  type: Directive,
2107
2195
  args: [{
2108
2196
  selector: '[templateContext]',
@@ -2171,11 +2259,92 @@ const KENDO_TEMPLATE_CONTEXT = [
2171
2259
  /**
2172
2260
  * @hidden
2173
2261
  */
2174
- const replaceMessagePlaceholder = (message, name, value) => (message ?? '').replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
2262
+ const replaceMessagePlaceholder = (message, name, value) => (message ?? '').replace(new RegExp(`\\[\\[\\s*${name}\\s*]]|{\\s*${name}\\s*}`, 'g'), value);
2263
+
2264
+ /**
2265
+ * An injection token that holds the accumulated component ancestry chain (outermost -> innermost).
2266
+ * Kendo components add their identifier to the chain through `provideComponentName`.
2267
+ * Used internally by features that need to forward component context to a service (for example,
2268
+ * per-component icon overrides).
2269
+ *
2270
+ * @hidden
2271
+ */
2272
+ const KENDO_COMPONENT_NAME = new InjectionToken('Kendo Component Name');
2273
+ /**
2274
+ * Adds `name` to the ancestry chain provided by any parent component, so nested components
2275
+ * automatically accumulate the full ancestry chain without any coordination between packages.
2276
+ *
2277
+ * @hidden
2278
+ */
2279
+ function provideComponentName(name) {
2280
+ return {
2281
+ provide: KENDO_COMPONENT_NAME,
2282
+ useFactory: (parentChain) => parentChain ? [...parentChain, name] : [name],
2283
+ deps: [[new Optional(), new SkipSelf(), KENDO_COMPONENT_NAME]]
2284
+ };
2285
+ }
2286
+
2287
+ /**
2288
+ * Appends a component identifier to the icon component-name ancestry chain for a template subtree.
2289
+ *
2290
+ * Use this directive when a component declares a template at its own root but that template is rendered
2291
+ * inside a different (child) component through `ngTemplateOutlet` — for example, the default Pager
2292
+ * template that the Grid and TreeList declare and the Pager renders. Because an embedded view resolves
2293
+ * element-level DI from its lexical declaration site, the rendering component would otherwise be missing
2294
+ * from the ancestry chain and per-component icon overrides for it would not apply. Wrap the projected
2295
+ * content with this directive to restore the missing segment.
2296
+ *
2297
+ * @hidden
2298
+ */
2299
+ class ComponentNameDirective {
2300
+ /**
2301
+ * The component identifier to append to the ancestry chain.
2302
+ */
2303
+ name;
2304
+ parentChain;
2305
+ constructor(parentChain) {
2306
+ this.parentChain = parentChain;
2307
+ }
2308
+ /**
2309
+ * The accumulated ancestry chain including this component identifier.
2310
+ */
2311
+ get chain() {
2312
+ const parent = this.parentChain ?? [];
2313
+ return this.name ? [...parent, this.name] : parent;
2314
+ }
2315
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ComponentNameDirective, deps: [{ token: KENDO_COMPONENT_NAME, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
2316
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.26", type: ComponentNameDirective, isStandalone: true, selector: "[kendoComponentName]", inputs: { name: ["kendoComponentName", "name"] }, providers: [{
2317
+ provide: KENDO_COMPONENT_NAME,
2318
+ useFactory: (directive) => directive.chain,
2319
+ deps: [ComponentNameDirective]
2320
+ }], ngImport: i0 });
2321
+ }
2322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.26", ngImport: i0, type: ComponentNameDirective, decorators: [{
2323
+ type: Directive,
2324
+ args: [{
2325
+ selector: '[kendoComponentName]',
2326
+ standalone: true,
2327
+ providers: [{
2328
+ provide: KENDO_COMPONENT_NAME,
2329
+ useFactory: (directive) => directive.chain,
2330
+ deps: [ComponentNameDirective]
2331
+ }]
2332
+ }]
2333
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2334
+ type: Optional
2335
+ }, {
2336
+ type: SkipSelf
2337
+ }, {
2338
+ type: Inject,
2339
+ args: [KENDO_COMPONENT_NAME]
2340
+ }] }], propDecorators: { name: [{
2341
+ type: Input,
2342
+ args: ['kendoComponentName']
2343
+ }] } });
2175
2344
 
2176
2345
  /**
2177
2346
  * Generated bundle index. Do not edit.
2178
2347
  */
2179
2348
 
2180
- export { ScrollbarService as BrowserSupportService, DraggableDirective, EventsOutsideAngularDirective, KENDO_ADORNMENTS, KENDO_COMMON, KENDO_DRAGGABLE, KENDO_EVENTS, KENDO_RESIZESENSOR, KENDO_TEMPLATE_CONTEXT, KENDO_TOGGLEBUTTONTABSTOP, KENDO_WATERMARK, KENDO_WEBMCP_HOST, KendoInput, Keys, MultiTabStop, PrefixTemplateDirective, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ScrollbarService, SeparatorComponent, SuffixTemplateDirective, TemplateContextDirective, ToggleButtonTabStopDirective, WatermarkOverlayComponent, anyChanged, applyAttributes, areObjectsEqual, closest, closestBySelector, closestInScope, contains, findElement, findFocusable, findFocusableChild, firefoxMaxHeight, focusableSelector, getLicenseMessage, getter, guid, hasClasses, hasFocusableParent, hasObservers, isChanged, isControlRequired, isDocumentAvailable, isFirefox, isFocusable, isFocusableWithTabKey, isObject, isObjectPresent, isPresent, isSafari, isSet, isString, isVisible, matchesClasses, matchesNodeName, normalizeKeys, parseAttributes, parseCSSClassNames, processCssValue, removeHTMLAttributes, replaceMessagePlaceholder, rtlScrollLeft, rtlScrollPosition, scrollbarWidth, setHTMLAttributes, setter, shouldShowValidationUI, splitStringToArray };
2349
+ export { ScrollbarService as BrowserSupportService, ComponentNameDirective, DraggableDirective, EventsOutsideAngularDirective, KENDO_ADORNMENTS, KENDO_COMMON, KENDO_COMPONENT_NAME, KENDO_DRAGGABLE, KENDO_EVENTS, KENDO_RESIZESENSOR, KENDO_TEMPLATE_CONTEXT, KENDO_TOGGLEBUTTONTABSTOP, KENDO_WATERMARK, KENDO_WEBMCP_HOST, KendoInput, Keys, MultiTabStop, PrefixTemplateDirective, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ScrollbarService, SeparatorComponent, SuffixTemplateDirective, TemplateContextDirective, ToggleButtonTabStopDirective, WatermarkOverlayComponent, anyChanged, applyAttributes, areObjectsEqual, closest, closestBySelector, closestInScope, contains, findElement, findFocusable, findFocusableChild, firefoxMaxHeight, focusableSelector, getLicenseMessage, getter, guid, hasClasses, hasFocusableParent, hasObservers, isChanged, isControlRequired, isDocumentAvailable, isFirefox, isFocusable, isFocusableWithTabKey, isObject, isObjectPresent, isPresent, isSafari, isSet, isString, isVisible, matchesClasses, matchesNodeName, normalizeKeys, parseAttributes, parseCSSClassNames, processCssValue, provideComponentName, removeHTMLAttributes, replaceMessagePlaceholder, rtlScrollLeft, rtlScrollPosition, scrollbarWidth, setHTMLAttributes, setter, shouldShowValidationUI, splitStringToArray };
2181
2350
 
package/index.d.ts CHANGED
@@ -3,21 +3,21 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { OnInit, OnChanges, OnDestroy, EventEmitter, ElementRef, NgZone, Renderer2, AfterViewChecked, InjectionToken, SimpleChanges, AfterViewInit, TemplateRef, ViewContainerRef } from '@angular/core';
6
+ import { OnDestroy, EventEmitter, ElementRef, NgZone, OnInit, Renderer2, AfterViewChecked, InjectionToken, SimpleChanges, Injector, AfterViewInit, TemplateRef, ViewContainerRef, Provider } from '@angular/core';
7
7
  import { AbstractControl } from '@angular/forms';
8
8
  import { LicenseMessage, PackageMetadata } from '@progress/kendo-licensing';
9
9
 
10
- declare class DraggableDirective implements OnInit, OnChanges, OnDestroy {
11
- private element;
10
+ declare class DraggableDirective implements OnDestroy {
11
+ private readonly element;
12
12
  private ngZone;
13
- enableDrag: boolean;
13
+ set enableDrag(value: boolean);
14
+ get enableDrag(): boolean;
14
15
  kendoPress: EventEmitter<any>;
15
16
  kendoDrag: EventEmitter<any>;
16
17
  kendoRelease: EventEmitter<any>;
17
18
  private draggable?;
19
+ private _enableDrag;
18
20
  constructor(element: ElementRef, ngZone: NgZone);
19
- ngOnInit(): void;
20
- ngOnChanges(changes: any): void;
21
21
  ngOnDestroy(): void;
22
22
  private toggleDraggable;
23
23
  private destroyDraggable;
@@ -64,10 +64,14 @@ declare class EventsOutsideAngularDirective implements OnInit, OnDestroy {
64
64
  private element;
65
65
  private ngZone;
66
66
  private renderer;
67
- events: any;
68
- scope: any;
67
+ set events(value: any);
68
+ get events(): any;
69
+ private _scope;
70
+ set scope(value: any);
71
+ get scope(): any;
69
72
  protected subscriptions?: any[] | null;
70
73
  constructor(element: ElementRef, ngZone: NgZone, renderer: Renderer2);
74
+ private _events;
71
75
  ngOnInit(): void;
72
76
  ngOnDestroy(): void;
73
77
  static ɵfac: i0.ɵɵFactoryDeclaration<EventsOutsideAngularDirective, never>;
@@ -79,7 +83,9 @@ declare class EventsOutsideAngularDirective implements OnInit, OnDestroy {
79
83
  */
80
84
  declare class ResizeBatchService implements OnDestroy {
81
85
  private ngZone;
82
- private scheduled;
86
+ private set scheduled(value);
87
+ private get scheduled();
88
+ private _scheduled;
83
89
  private resolvedPromise;
84
90
  private subscription?;
85
91
  constructor(ngZone: NgZone);
@@ -104,14 +110,18 @@ declare class ResizeSensorComponent implements OnDestroy, AfterViewChecked {
104
110
  *
105
111
  * Defaults to 10.
106
112
  */
107
- rateLimit: number;
113
+ set rateLimit(value: number);
114
+ get rateLimit(): number;
108
115
  /**
109
116
  * Fires when the parent DOM element has been resized.
110
117
  */
111
118
  resize: EventEmitter<any>;
112
119
  private subscription;
113
- private resizeService;
120
+ private set resizeService(value);
121
+ private get resizeService();
114
122
  constructor(resizeBatchService: ResizeBatchService, element: ElementRef, ngZone: NgZone);
123
+ private _rateLimit;
124
+ private _resizeService;
115
125
  ngAfterViewChecked(): void;
116
126
  ngOnDestroy(): void;
117
127
  acceptSize(size?: any): void;
@@ -127,12 +137,22 @@ declare const enum ServiceState {
127
137
  declare abstract class ResizeService {
128
138
  protected resizeBatchService: ResizeBatchService;
129
139
  resize: EventEmitter<any>;
130
- acceptedSize: boolean;
131
- lastWidth?: number;
132
- lastHeight?: number;
133
- protected state: ServiceState;
134
- protected parentElement: any;
140
+ set acceptedSize(value: boolean);
141
+ get acceptedSize(): boolean;
142
+ set lastWidth(value: number | undefined);
143
+ get lastWidth(): number | undefined;
144
+ set lastHeight(value: number | undefined);
145
+ get lastHeight(): number | undefined;
146
+ protected set state(value: ServiceState);
147
+ protected get state(): ServiceState;
148
+ protected set parentElement(value: any);
149
+ protected get parentElement(): any;
135
150
  protected abstract init(): void;
151
+ private _acceptedSize;
152
+ private _lastWidth?;
153
+ private _lastHeight?;
154
+ private _state;
155
+ private _parentElement;
136
156
  constructor(resizeBatchService: ResizeBatchService);
137
157
  acceptSize(size?: any): void;
138
158
  checkChanges(): void;
@@ -145,9 +165,15 @@ declare abstract class ResizeService {
145
165
  declare class ResizeCompatService extends ResizeService {
146
166
  private element;
147
167
  private ngZone;
148
- private expand;
149
- private expandChild;
150
- private shrink;
168
+ private set expand(value);
169
+ private get expand();
170
+ private set expandChild(value);
171
+ private get expandChild();
172
+ private set shrink(value);
173
+ private get shrink();
174
+ private _expand;
175
+ private _expandChild;
176
+ private _shrink;
151
177
  private subscription?;
152
178
  constructor(resizeBatchService: ResizeBatchService, element: ElementRef | null, ngZone: NgZone);
153
179
  checkChanges(): void;
@@ -165,8 +191,10 @@ declare class ResizeCompatService extends ResizeService {
165
191
  declare class ResizeObserverService extends ResizeService {
166
192
  private element;
167
193
  private ngZone;
168
- private resizeObserver;
194
+ private set resizeObserver(value);
195
+ private get resizeObserver();
169
196
  static supported(): boolean;
197
+ private _resizeObserver;
170
198
  constructor(resizeBatchService: ResizeBatchService, element: ElementRef, ngZone: NgZone);
171
199
  destroy(): void;
172
200
  protected init(): void;
@@ -229,7 +257,7 @@ declare const firefoxMaxHeight = 17895697;
229
257
  */
230
258
  declare const setHTMLAttributes: (attributes: {
231
259
  [key: string]: string;
232
- }, renderer: Renderer2, element: Element, zone?: NgZone) => void;
260
+ }, renderer: Renderer2, element: Element, injector?: Injector) => void;
233
261
  /**
234
262
  * @hidden
235
263
  */
@@ -403,19 +431,35 @@ declare function setter(field: string): any;
403
431
  * @hidden
404
432
  */
405
433
  declare class WatermarkOverlayComponent implements OnInit, AfterViewInit, OnDestroy {
406
- licenseMessage?: LicenseMessage;
434
+ set licenseMessage(value: LicenseMessage | undefined);
435
+ get licenseMessage(): LicenseMessage | undefined;
407
436
  banner: ElementRef;
408
437
  watermarkStyle: string;
409
- isOpen: boolean;
410
- isMobile: boolean;
411
- isNarrow: boolean;
412
- isCloseHovered: boolean;
413
- isCTAHovered: boolean;
414
- bannerMounted: boolean;
438
+ set isOpen(value: boolean);
439
+ get isOpen(): boolean;
440
+ set isMobile(value: boolean);
441
+ get isMobile(): boolean;
442
+ set isNarrow(value: boolean);
443
+ get isNarrow(): boolean;
444
+ set isCloseHovered(value: boolean);
445
+ get isCloseHovered(): boolean;
446
+ set isCTAHovered(value: boolean);
447
+ get isCTAHovered(): boolean;
448
+ set bannerMounted(value: boolean);
449
+ get bannerMounted(): boolean;
415
450
  get messages(): LicenseMessage[];
416
- extraMessages: LicenseMessage[];
451
+ set extraMessages(value: LicenseMessage[]);
452
+ get extraMessages(): LicenseMessage[];
417
453
  get primaryMessage(): LicenseMessage;
418
454
  licenseKeyUrl: string;
455
+ private _isOpen;
456
+ private _isMobile;
457
+ private _isNarrow;
458
+ private _isCloseHovered;
459
+ private _isCTAHovered;
460
+ private _bannerMounted;
461
+ private _licenseMessage;
462
+ private _extraMessages;
419
463
  getContent(msg: LicenseMessage): {
420
464
  iconSrc?: string;
421
465
  title: string;
@@ -630,6 +674,7 @@ declare class ToggleButtonTabStopDirective {
630
674
  private hostEl;
631
675
  private renderer;
632
676
  private zone;
677
+ private injector;
633
678
  private hostComponent;
634
679
  /**
635
680
  * @hidden
@@ -638,22 +683,29 @@ declare class ToggleButtonTabStopDirective {
638
683
  *
639
684
  * @default true
640
685
  */
641
- active: any;
686
+ set active(value: any);
687
+ /**
688
+ * @hidden
689
+ */
690
+ get active(): any;
642
691
  /**
643
692
  * Defines the value of the `aria-label` attribute of the toggle button when active.
644
693
  *
645
694
  * @default "toggle popup"
646
695
  */
647
- toggleButtonAriaLabel: string;
696
+ set toggleButtonAriaLabel(value: string);
697
+ get toggleButtonAriaLabel(): string;
648
698
  private button;
649
699
  private sub;
650
700
  private focusButton;
651
701
  private isSplitButton;
652
702
  private observer;
703
+ private _active;
704
+ private _toggleButtonAriaLabel;
653
705
  /**
654
706
  * @hidden
655
707
  */
656
- constructor(hostEl: ElementRef, renderer: Renderer2, zone: NgZone, hostComponent: MultiTabStop);
708
+ constructor(hostEl: ElementRef, renderer: Renderer2, zone: NgZone, injector: Injector, hostComponent: MultiTabStop);
657
709
  ngOnInit(): void;
658
710
  ngAfterViewInit(): void;
659
711
  ngOnChanges(changes: SimpleChanges): void;
@@ -723,5 +775,49 @@ declare const KENDO_TEMPLATE_CONTEXT: readonly [typeof TemplateContextDirective]
723
775
  */
724
776
  declare const replaceMessagePlaceholder: (message: string, name: string, value: string) => string;
725
777
 
726
- export { ScrollbarService as BrowserSupportService, DraggableDirective, EventsOutsideAngularDirective, KENDO_ADORNMENTS, KENDO_COMMON, KENDO_DRAGGABLE, KENDO_EVENTS, KENDO_RESIZESENSOR, KENDO_TEMPLATE_CONTEXT, KENDO_TOGGLEBUTTONTABSTOP, KENDO_WATERMARK, KENDO_WEBMCP_HOST, KendoInput, Keys, MultiTabStop, PrefixTemplateDirective, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ScrollbarService, SeparatorComponent, SuffixTemplateDirective, TemplateContextDirective, ToggleButtonTabStopDirective, WatermarkOverlayComponent, anyChanged, applyAttributes, areObjectsEqual, closest, closestBySelector, closestInScope, contains, findElement, findFocusable, findFocusableChild, firefoxMaxHeight, focusableSelector, getLicenseMessage, getter, guid, hasClasses, hasFocusableParent, hasObservers, isChanged, isControlRequired, isDocumentAvailable, isFirefox, isFocusable, isFocusableWithTabKey, isObject, isObjectPresent, isPresent, isSafari, isSet, isString, isVisible, matchesClasses, matchesNodeName, normalizeKeys, parseAttributes, parseCSSClassNames, processCssValue, removeHTMLAttributes, replaceMessagePlaceholder, rtlScrollLeft, rtlScrollPosition, scrollbarWidth, setHTMLAttributes, setter, shouldShowValidationUI, splitStringToArray };
778
+ /**
779
+ * An injection token that holds the accumulated component ancestry chain (outermost -> innermost).
780
+ * Kendo components add their identifier to the chain through `provideComponentName`.
781
+ * Used internally by features that need to forward component context to a service (for example,
782
+ * per-component icon overrides).
783
+ *
784
+ * @hidden
785
+ */
786
+ declare const KENDO_COMPONENT_NAME: InjectionToken<string[]>;
787
+ /**
788
+ * Adds `name` to the ancestry chain provided by any parent component, so nested components
789
+ * automatically accumulate the full ancestry chain without any coordination between packages.
790
+ *
791
+ * @hidden
792
+ */
793
+ declare function provideComponentName(name: string): Provider;
794
+
795
+ /**
796
+ * Appends a component identifier to the icon component-name ancestry chain for a template subtree.
797
+ *
798
+ * Use this directive when a component declares a template at its own root but that template is rendered
799
+ * inside a different (child) component through `ngTemplateOutlet` — for example, the default Pager
800
+ * template that the Grid and TreeList declare and the Pager renders. Because an embedded view resolves
801
+ * element-level DI from its lexical declaration site, the rendering component would otherwise be missing
802
+ * from the ancestry chain and per-component icon overrides for it would not apply. Wrap the projected
803
+ * content with this directive to restore the missing segment.
804
+ *
805
+ * @hidden
806
+ */
807
+ declare class ComponentNameDirective {
808
+ /**
809
+ * The component identifier to append to the ancestry chain.
810
+ */
811
+ name: string;
812
+ private parentChain;
813
+ constructor(parentChain: string[]);
814
+ /**
815
+ * The accumulated ancestry chain including this component identifier.
816
+ */
817
+ get chain(): string[];
818
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComponentNameDirective, [{ optional: true; skipSelf: true; }]>;
819
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComponentNameDirective, "[kendoComponentName]", never, { "name": { "alias": "kendoComponentName"; "required": false; }; }, {}, never, never, true, never>;
820
+ }
821
+
822
+ export { ScrollbarService as BrowserSupportService, ComponentNameDirective, DraggableDirective, EventsOutsideAngularDirective, KENDO_ADORNMENTS, KENDO_COMMON, KENDO_COMPONENT_NAME, KENDO_DRAGGABLE, KENDO_EVENTS, KENDO_RESIZESENSOR, KENDO_TEMPLATE_CONTEXT, KENDO_TOGGLEBUTTONTABSTOP, KENDO_WATERMARK, KENDO_WEBMCP_HOST, KendoInput, Keys, MultiTabStop, PrefixTemplateDirective, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ScrollbarService, SeparatorComponent, SuffixTemplateDirective, TemplateContextDirective, ToggleButtonTabStopDirective, WatermarkOverlayComponent, anyChanged, applyAttributes, areObjectsEqual, closest, closestBySelector, closestInScope, contains, findElement, findFocusable, findFocusableChild, firefoxMaxHeight, focusableSelector, getLicenseMessage, getter, guid, hasClasses, hasFocusableParent, hasObservers, isChanged, isControlRequired, isDocumentAvailable, isFirefox, isFocusable, isFocusableWithTabKey, isObject, isObjectPresent, isPresent, isSafari, isSet, isString, isVisible, matchesClasses, matchesNodeName, normalizeKeys, parseAttributes, parseCSSClassNames, processCssValue, provideComponentName, removeHTMLAttributes, replaceMessagePlaceholder, rtlScrollLeft, rtlScrollPosition, scrollbarWidth, setHTMLAttributes, setter, shouldShowValidationUI, splitStringToArray };
727
823
  export type { SeparatorOrientation };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-common",
3
- "version": "25.0.0-develop.2",
3
+ "version": "25.0.0-develop.21",
4
4
  "description": "Kendo UI for Angular - Utility Package",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -23,7 +23,7 @@
23
23
  "@progress/kendo-common": "^1.0.1",
24
24
  "@progress/kendo-draggable": "^3.0.2",
25
25
  "tslib": "^2.3.1",
26
- "@progress/kendo-angular-schematics": "25.0.0-develop.2"
26
+ "@progress/kendo-angular-schematics": "25.0.0-develop.21"
27
27
  },
28
28
  "publishConfig": {
29
29
  "access": "public"