@progress/kendo-angular-pdfviewer 16.9.0-develop.1 → 16.9.0-develop.11

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.
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-pdfviewer',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1724748682,
13
- version: '16.9.0-develop.1',
12
+ publishDate: 1725288183,
13
+ version: '16.9.0-develop.11',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
15
15
  };
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2024 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2, ViewChild, isDevMode } from '@angular/core';
5
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2, ViewChild, isDevMode } from '@angular/core';
6
6
  import { validatePackage } from '@progress/kendo-licensing';
7
7
  import { packageMetadata } from './package-metadata';
8
8
  import { INITIAL_ZOOM_LEVEL, zoomOptionsData, zoomToFitOptions } from './util';
@@ -25,10 +25,11 @@ let counter = 0;
25
25
  * Represents the [Kendo UI PDFViewer component for Angular]({% slug overview_pdfviewer %}).
26
26
  */
27
27
  export class PDFViewerComponent {
28
- constructor(ngZone, renderer, localizationService) {
28
+ constructor(ngZone, renderer, localizationService, cdr) {
29
29
  this.ngZone = ngZone;
30
30
  this.renderer = renderer;
31
31
  this.localizationService = localizationService;
32
+ this.cdr = cdr;
32
33
  this.hostClass = true;
33
34
  /**
34
35
  * Represents the tools collection rendered in the toolbar.
@@ -322,16 +323,17 @@ export class PDFViewerComponent {
322
323
  * @hidden
323
324
  */
324
325
  onZoomLevelChange(zoomLevel, emit = true) {
325
- if (typeof zoomLevel === 'string') {
326
- const parsedValue = parseFloat(zoomLevel);
327
- zoomLevel = { value: Number.isNaN(parsedValue) ? 1 : parsedValue / 100 };
328
- }
329
326
  if (!zoomLevel) {
330
- zoomLevel = { value: 1 };
327
+ zoomLevel = {
328
+ value: 1,
329
+ displayValue: '100%',
330
+ text: '100%'
331
+ };
331
332
  }
332
333
  let newZoom = calculateZoomLevel(zoomLevel.value, zoomLevel.type, this.pdfContext.zoom, this.pagesContainer.nativeElement);
333
334
  newZoom = Math.round(newZoom * 100) / 100;
334
- if (emit && hasObservers(this.zoomLevelChange)) {
335
+ const sameZoom = this.zoom === newZoom;
336
+ if (!sameZoom && emit && hasObservers(this.zoomLevelChange)) {
335
337
  this.zoomLevelChange.emit({
336
338
  previousZoomLevel: this.zoom,
337
339
  currentZoomLevel: newZoom
@@ -416,12 +418,14 @@ export class PDFViewerComponent {
416
418
  this.ngZone.run(() => {
417
419
  this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
418
420
  this.loading = false;
421
+ this.cdr.markForCheck();
419
422
  });
420
423
  }
421
424
  else {
422
425
  const zoomLevelOption = this.zoomOptionsData.find(item => item.type === this._fitType);
423
426
  this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
424
427
  this.onZoomLevelChange(zoomLevelOption, false);
428
+ this.cdr.markForCheck();
425
429
  }
426
430
  if (this.pdfScroller) {
427
431
  this.pdfScroller.destroy();
@@ -456,7 +460,10 @@ export class PDFViewerComponent {
456
460
  dom: this.pagesContainer.nativeElement,
457
461
  done: (pdfPages) => {
458
462
  this.pdfContext.pdfPages = pdfPages;
459
- this.ngZone.run(() => this.loading = false);
463
+ this.ngZone.run(() => {
464
+ this.loading = false;
465
+ this.cdr.markForCheck();
466
+ });
460
467
  this.assignPageIds();
461
468
  },
462
469
  error: (e) => {
@@ -480,7 +487,7 @@ export class PDFViewerComponent {
480
487
  }
481
488
  setZoomLevel(zoom) {
482
489
  const option = this.zoomOptionsData.find(item => !item.type && item.value === zoom);
483
- this.zoomLevel = option || {
490
+ this.zoomLevel = option ? { ...option } : {
484
491
  value: zoom,
485
492
  displayValue: `${Math.round(zoom * 100)}%`,
486
493
  text: `${Math.round(zoom * 100)}%`
@@ -500,7 +507,7 @@ export class PDFViewerComponent {
500
507
  return this[source] || (changes[source] && changes[source].currentValue);
501
508
  }
502
509
  }
503
- PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
510
+ PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
504
511
  PDFViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PDFViewerComponent, isStandalone: true, selector: "kendo-pdfviewer", inputs: { tools: "tools", loaderSettings: "loaderSettings", saveFileName: "saveFileName", saveOptions: "saveOptions", url: "url", data: "data", arrayBuffer: "arrayBuffer", typedArray: "typedArray", zoom: "zoom", zoomRate: "zoomRate", minZoom: "minZoom", maxZoom: "maxZoom" }, outputs: { load: "load", error: "error", download: "download", pageChange: "pageChange", zoomLevelChange: "zoomLevelChange" }, host: { properties: { "class.k-pdf-viewer": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
505
512
  LocalizationService,
506
513
  {
@@ -790,7 +797,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
790
797
  standalone: true,
791
798
  imports: [LocalizedPDFViewerMessagesDirective, NgIf, LoaderComponent, ToolbarComponent, PDFViewerSearchComponent, WatermarkOverlayComponent]
792
799
  }]
793
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
800
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
794
801
  type: HostBinding,
795
802
  args: ['class.k-pdf-viewer']
796
803
  }], direction: [{
@@ -14,6 +14,7 @@ import { ButtonComponent, ButtonGroupComponent } from '@progress/kendo-angular-b
14
14
  import { ToolbarFocusableDirective } from './toolbar-focusable.directive';
15
15
  import { ToolbarInputWrapperComponent } from './input-wrapper.component';
16
16
  import { NgFor, NgSwitch, NgSwitchCase, NgIf } from '@angular/common';
17
+ import { map } from 'rxjs/operators';
17
18
  import * as i0 from "@angular/core";
18
19
  import * as i1 from "@progress/kendo-angular-l10n";
19
20
  import * as i2 from "./toolbar-navigation.service";
@@ -59,6 +60,15 @@ export class ToolbarComponent {
59
60
  this.downloadIcon = downloadIcon;
60
61
  this.printIcon = printIcon;
61
62
  this.pagerType = 'input';
63
+ this.valueNormalizer = (text) => text.pipe(map((value) => {
64
+ const parsedValue = parseFloat(value);
65
+ const newValue = Number.isNaN(parsedValue) ? 1 : parsedValue / 100;
66
+ return {
67
+ value: newValue,
68
+ displayValue: `${Math.round(newValue * 100)}%`,
69
+ text: `${Math.round(newValue * 100)}%`
70
+ };
71
+ }));
62
72
  }
63
73
  messageFor(key) {
64
74
  return this.localization.get(key);
@@ -161,6 +171,8 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
161
171
  valueField="id"
162
172
  [value]="zoomLevelChooserValue"
163
173
  [allowCustom]="true"
174
+ [valueNormalizer]="valueNormalizer"
175
+ [clearButton]="false"
164
176
  (valueChange)="onZoomLevelChooserValueChange($event)">
165
177
  <ng-template kendoComboBoxItemTemplate let-dataItem>
166
178
  {{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
@@ -331,6 +343,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
331
343
  valueField="id"
332
344
  [value]="zoomLevelChooserValue"
333
345
  [allowCustom]="true"
346
+ [valueNormalizer]="valueNormalizer"
347
+ [clearButton]="false"
334
348
  (valueChange)="onZoomLevelChooserValueChange($event)">
335
349
  <ng-template kendoComboBoxItemTemplate let-dataItem>
336
350
  {{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
@@ -17,6 +17,7 @@ import * as i1$1 from '@progress/kendo-angular-dropdowns';
17
17
  import { ComboBoxComponent, ItemTemplateDirective } from '@progress/kendo-angular-dropdowns';
18
18
  import { ButtonGroupComponent, ButtonComponent } from '@progress/kendo-angular-buttons';
19
19
  import { NgFor, NgSwitch, NgSwitchCase, NgIf } from '@angular/common';
20
+ import { map } from 'rxjs/operators';
20
21
  import { TextBoxComponent, TextBoxSuffixTemplateDirective } from '@progress/kendo-angular-inputs';
21
22
  import { LoaderComponent as LoaderComponent$1 } from '@progress/kendo-angular-indicators';
22
23
  import 'pdfjs-dist/build/pdf.worker.entry';
@@ -125,8 +126,8 @@ const packageMetadata = {
125
126
  name: '@progress/kendo-angular-pdfviewer',
126
127
  productName: 'Kendo UI for Angular',
127
128
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
128
- publishDate: 1724748682,
129
- version: '16.9.0-develop.1',
129
+ publishDate: 1725288183,
130
+ version: '16.9.0-develop.11',
130
131
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
131
132
  };
132
133
 
@@ -463,6 +464,15 @@ class ToolbarComponent {
463
464
  this.downloadIcon = downloadIcon;
464
465
  this.printIcon = printIcon;
465
466
  this.pagerType = 'input';
467
+ this.valueNormalizer = (text) => text.pipe(map((value) => {
468
+ const parsedValue = parseFloat(value);
469
+ const newValue = Number.isNaN(parsedValue) ? 1 : parsedValue / 100;
470
+ return {
471
+ value: newValue,
472
+ displayValue: `${Math.round(newValue * 100)}%`,
473
+ text: `${Math.round(newValue * 100)}%`
474
+ };
475
+ }));
466
476
  }
467
477
  messageFor(key) {
468
478
  return this.localization.get(key);
@@ -565,6 +575,8 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
565
575
  valueField="id"
566
576
  [value]="zoomLevelChooserValue"
567
577
  [allowCustom]="true"
578
+ [valueNormalizer]="valueNormalizer"
579
+ [clearButton]="false"
568
580
  (valueChange)="onZoomLevelChooserValueChange($event)">
569
581
  <ng-template kendoComboBoxItemTemplate let-dataItem>
570
582
  {{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
@@ -735,6 +747,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
735
747
  valueField="id"
736
748
  [value]="zoomLevelChooserValue"
737
749
  [allowCustom]="true"
750
+ [valueNormalizer]="valueNormalizer"
751
+ [clearButton]="false"
738
752
  (valueChange)="onZoomLevelChooserValueChange($event)">
739
753
  <ng-template kendoComboBoxItemTemplate let-dataItem>
740
754
  {{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
@@ -1141,10 +1155,11 @@ let counter = 0;
1141
1155
  * Represents the [Kendo UI PDFViewer component for Angular]({% slug overview_pdfviewer %}).
1142
1156
  */
1143
1157
  class PDFViewerComponent {
1144
- constructor(ngZone, renderer, localizationService) {
1158
+ constructor(ngZone, renderer, localizationService, cdr) {
1145
1159
  this.ngZone = ngZone;
1146
1160
  this.renderer = renderer;
1147
1161
  this.localizationService = localizationService;
1162
+ this.cdr = cdr;
1148
1163
  this.hostClass = true;
1149
1164
  /**
1150
1165
  * Represents the tools collection rendered in the toolbar.
@@ -1441,16 +1456,17 @@ class PDFViewerComponent {
1441
1456
  * @hidden
1442
1457
  */
1443
1458
  onZoomLevelChange(zoomLevel, emit = true) {
1444
- if (typeof zoomLevel === 'string') {
1445
- const parsedValue = parseFloat(zoomLevel);
1446
- zoomLevel = { value: Number.isNaN(parsedValue) ? 1 : parsedValue / 100 };
1447
- }
1448
1459
  if (!zoomLevel) {
1449
- zoomLevel = { value: 1 };
1460
+ zoomLevel = {
1461
+ value: 1,
1462
+ displayValue: '100%',
1463
+ text: '100%'
1464
+ };
1450
1465
  }
1451
1466
  let newZoom = calculateZoomLevel(zoomLevel.value, zoomLevel.type, this.pdfContext.zoom, this.pagesContainer.nativeElement);
1452
1467
  newZoom = Math.round(newZoom * 100) / 100;
1453
- if (emit && hasObservers(this.zoomLevelChange)) {
1468
+ const sameZoom = this.zoom === newZoom;
1469
+ if (!sameZoom && emit && hasObservers(this.zoomLevelChange)) {
1454
1470
  this.zoomLevelChange.emit({
1455
1471
  previousZoomLevel: this.zoom,
1456
1472
  currentZoomLevel: newZoom
@@ -1536,12 +1552,14 @@ class PDFViewerComponent {
1536
1552
  this.ngZone.run(() => {
1537
1553
  this.pdfContext = Object.assign(Object.assign({}, e), { element: this.pagesContainer.nativeElement });
1538
1554
  this.loading = false;
1555
+ this.cdr.markForCheck();
1539
1556
  });
1540
1557
  }
1541
1558
  else {
1542
1559
  const zoomLevelOption = this.zoomOptionsData.find(item => item.type === this._fitType);
1543
1560
  this.pdfContext = Object.assign(Object.assign({}, e), { element: this.pagesContainer.nativeElement });
1544
1561
  this.onZoomLevelChange(zoomLevelOption, false);
1562
+ this.cdr.markForCheck();
1545
1563
  }
1546
1564
  if (this.pdfScroller) {
1547
1565
  this.pdfScroller.destroy();
@@ -1577,7 +1595,10 @@ class PDFViewerComponent {
1577
1595
  dom: this.pagesContainer.nativeElement,
1578
1596
  done: (pdfPages) => {
1579
1597
  this.pdfContext.pdfPages = pdfPages;
1580
- this.ngZone.run(() => this.loading = false);
1598
+ this.ngZone.run(() => {
1599
+ this.loading = false;
1600
+ this.cdr.markForCheck();
1601
+ });
1581
1602
  this.assignPageIds();
1582
1603
  },
1583
1604
  error: (e) => {
@@ -1601,7 +1622,7 @@ class PDFViewerComponent {
1601
1622
  }
1602
1623
  setZoomLevel(zoom) {
1603
1624
  const option = this.zoomOptionsData.find(item => !item.type && item.value === zoom);
1604
- this.zoomLevel = option || {
1625
+ this.zoomLevel = option ? Object.assign({}, option) : {
1605
1626
  value: zoom,
1606
1627
  displayValue: `${Math.round(zoom * 100)}%`,
1607
1628
  text: `${Math.round(zoom * 100)}%`
@@ -1621,7 +1642,7 @@ class PDFViewerComponent {
1621
1642
  return this[source] || (changes[source] && changes[source].currentValue);
1622
1643
  }
1623
1644
  }
1624
- PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
1645
+ PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1625
1646
  PDFViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PDFViewerComponent, isStandalone: true, selector: "kendo-pdfviewer", inputs: { tools: "tools", loaderSettings: "loaderSettings", saveFileName: "saveFileName", saveOptions: "saveOptions", url: "url", data: "data", arrayBuffer: "arrayBuffer", typedArray: "typedArray", zoom: "zoom", zoomRate: "zoomRate", minZoom: "minZoom", maxZoom: "maxZoom" }, outputs: { load: "load", error: "error", download: "download", pageChange: "pageChange", zoomLevelChange: "zoomLevelChange" }, host: { properties: { "class.k-pdf-viewer": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
1626
1647
  LocalizationService,
1627
1648
  {
@@ -1911,7 +1932,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1911
1932
  standalone: true,
1912
1933
  imports: [LocalizedPDFViewerMessagesDirective, NgIf, LoaderComponent, ToolbarComponent, PDFViewerSearchComponent, WatermarkOverlayComponent]
1913
1934
  }]
1914
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
1935
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
1915
1936
  type: HostBinding,
1916
1937
  args: ['class.k-pdf-viewer']
1917
1938
  }], direction: [{
@@ -17,6 +17,7 @@ import * as i1$1 from '@progress/kendo-angular-dropdowns';
17
17
  import { ComboBoxComponent, ItemTemplateDirective } from '@progress/kendo-angular-dropdowns';
18
18
  import { ButtonGroupComponent, ButtonComponent } from '@progress/kendo-angular-buttons';
19
19
  import { NgFor, NgSwitch, NgSwitchCase, NgIf } from '@angular/common';
20
+ import { map } from 'rxjs/operators';
20
21
  import { TextBoxComponent, TextBoxSuffixTemplateDirective } from '@progress/kendo-angular-inputs';
21
22
  import { LoaderComponent as LoaderComponent$1 } from '@progress/kendo-angular-indicators';
22
23
  import 'pdfjs-dist/build/pdf.worker.entry';
@@ -125,8 +126,8 @@ const packageMetadata = {
125
126
  name: '@progress/kendo-angular-pdfviewer',
126
127
  productName: 'Kendo UI for Angular',
127
128
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
128
- publishDate: 1724748682,
129
- version: '16.9.0-develop.1',
129
+ publishDate: 1725288183,
130
+ version: '16.9.0-develop.11',
130
131
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
131
132
  };
132
133
 
@@ -463,6 +464,15 @@ class ToolbarComponent {
463
464
  this.downloadIcon = downloadIcon;
464
465
  this.printIcon = printIcon;
465
466
  this.pagerType = 'input';
467
+ this.valueNormalizer = (text) => text.pipe(map((value) => {
468
+ const parsedValue = parseFloat(value);
469
+ const newValue = Number.isNaN(parsedValue) ? 1 : parsedValue / 100;
470
+ return {
471
+ value: newValue,
472
+ displayValue: `${Math.round(newValue * 100)}%`,
473
+ text: `${Math.round(newValue * 100)}%`
474
+ };
475
+ }));
466
476
  }
467
477
  messageFor(key) {
468
478
  return this.localization.get(key);
@@ -565,6 +575,8 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
565
575
  valueField="id"
566
576
  [value]="zoomLevelChooserValue"
567
577
  [allowCustom]="true"
578
+ [valueNormalizer]="valueNormalizer"
579
+ [clearButton]="false"
568
580
  (valueChange)="onZoomLevelChooserValueChange($event)">
569
581
  <ng-template kendoComboBoxItemTemplate let-dataItem>
570
582
  {{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
@@ -735,6 +747,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
735
747
  valueField="id"
736
748
  [value]="zoomLevelChooserValue"
737
749
  [allowCustom]="true"
750
+ [valueNormalizer]="valueNormalizer"
751
+ [clearButton]="false"
738
752
  (valueChange)="onZoomLevelChooserValueChange($event)">
739
753
  <ng-template kendoComboBoxItemTemplate let-dataItem>
740
754
  {{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
@@ -1141,10 +1155,11 @@ let counter = 0;
1141
1155
  * Represents the [Kendo UI PDFViewer component for Angular]({% slug overview_pdfviewer %}).
1142
1156
  */
1143
1157
  class PDFViewerComponent {
1144
- constructor(ngZone, renderer, localizationService) {
1158
+ constructor(ngZone, renderer, localizationService, cdr) {
1145
1159
  this.ngZone = ngZone;
1146
1160
  this.renderer = renderer;
1147
1161
  this.localizationService = localizationService;
1162
+ this.cdr = cdr;
1148
1163
  this.hostClass = true;
1149
1164
  /**
1150
1165
  * Represents the tools collection rendered in the toolbar.
@@ -1438,16 +1453,17 @@ class PDFViewerComponent {
1438
1453
  * @hidden
1439
1454
  */
1440
1455
  onZoomLevelChange(zoomLevel, emit = true) {
1441
- if (typeof zoomLevel === 'string') {
1442
- const parsedValue = parseFloat(zoomLevel);
1443
- zoomLevel = { value: Number.isNaN(parsedValue) ? 1 : parsedValue / 100 };
1444
- }
1445
1456
  if (!zoomLevel) {
1446
- zoomLevel = { value: 1 };
1457
+ zoomLevel = {
1458
+ value: 1,
1459
+ displayValue: '100%',
1460
+ text: '100%'
1461
+ };
1447
1462
  }
1448
1463
  let newZoom = calculateZoomLevel(zoomLevel.value, zoomLevel.type, this.pdfContext.zoom, this.pagesContainer.nativeElement);
1449
1464
  newZoom = Math.round(newZoom * 100) / 100;
1450
- if (emit && hasObservers(this.zoomLevelChange)) {
1465
+ const sameZoom = this.zoom === newZoom;
1466
+ if (!sameZoom && emit && hasObservers(this.zoomLevelChange)) {
1451
1467
  this.zoomLevelChange.emit({
1452
1468
  previousZoomLevel: this.zoom,
1453
1469
  currentZoomLevel: newZoom
@@ -1532,12 +1548,14 @@ class PDFViewerComponent {
1532
1548
  this.ngZone.run(() => {
1533
1549
  this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
1534
1550
  this.loading = false;
1551
+ this.cdr.markForCheck();
1535
1552
  });
1536
1553
  }
1537
1554
  else {
1538
1555
  const zoomLevelOption = this.zoomOptionsData.find(item => item.type === this._fitType);
1539
1556
  this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
1540
1557
  this.onZoomLevelChange(zoomLevelOption, false);
1558
+ this.cdr.markForCheck();
1541
1559
  }
1542
1560
  if (this.pdfScroller) {
1543
1561
  this.pdfScroller.destroy();
@@ -1572,7 +1590,10 @@ class PDFViewerComponent {
1572
1590
  dom: this.pagesContainer.nativeElement,
1573
1591
  done: (pdfPages) => {
1574
1592
  this.pdfContext.pdfPages = pdfPages;
1575
- this.ngZone.run(() => this.loading = false);
1593
+ this.ngZone.run(() => {
1594
+ this.loading = false;
1595
+ this.cdr.markForCheck();
1596
+ });
1576
1597
  this.assignPageIds();
1577
1598
  },
1578
1599
  error: (e) => {
@@ -1596,7 +1617,7 @@ class PDFViewerComponent {
1596
1617
  }
1597
1618
  setZoomLevel(zoom) {
1598
1619
  const option = this.zoomOptionsData.find(item => !item.type && item.value === zoom);
1599
- this.zoomLevel = option || {
1620
+ this.zoomLevel = option ? { ...option } : {
1600
1621
  value: zoom,
1601
1622
  displayValue: `${Math.round(zoom * 100)}%`,
1602
1623
  text: `${Math.round(zoom * 100)}%`
@@ -1616,7 +1637,7 @@ class PDFViewerComponent {
1616
1637
  return this[source] || (changes[source] && changes[source].currentValue);
1617
1638
  }
1618
1639
  }
1619
- PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
1640
+ PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1620
1641
  PDFViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PDFViewerComponent, isStandalone: true, selector: "kendo-pdfviewer", inputs: { tools: "tools", loaderSettings: "loaderSettings", saveFileName: "saveFileName", saveOptions: "saveOptions", url: "url", data: "data", arrayBuffer: "arrayBuffer", typedArray: "typedArray", zoom: "zoom", zoomRate: "zoomRate", minZoom: "minZoom", maxZoom: "maxZoom" }, outputs: { load: "load", error: "error", download: "download", pageChange: "pageChange", zoomLevelChange: "zoomLevelChange" }, host: { properties: { "class.k-pdf-viewer": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
1621
1642
  LocalizationService,
1622
1643
  {
@@ -1906,7 +1927,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1906
1927
  standalone: true,
1907
1928
  imports: [LocalizedPDFViewerMessagesDirective, NgIf, LoaderComponent, ToolbarComponent, PDFViewerSearchComponent, WatermarkOverlayComponent]
1908
1929
  }]
1909
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
1930
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
1910
1931
  type: HostBinding,
1911
1932
  args: ['class.k-pdf-viewer']
1912
1933
  }], direction: [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-pdfviewer",
3
- "version": "16.9.0-develop.1",
3
+ "version": "16.9.0-develop.11",
4
4
  "description": "Kendo UI PDFViewer for Angular",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -23,21 +23,21 @@
23
23
  "@angular/core": "15 - 18",
24
24
  "@angular/platform-browser": "15 - 18",
25
25
  "@progress/kendo-licensing": "^1.0.2",
26
- "@progress/kendo-angular-buttons": "16.9.0-develop.1",
27
- "@progress/kendo-angular-common": "16.9.0-develop.1",
28
- "@progress/kendo-angular-dropdowns": "16.9.0-develop.1",
29
- "@progress/kendo-angular-inputs": "16.9.0-develop.1",
30
- "@progress/kendo-angular-intl": "16.9.0-develop.1",
31
- "@progress/kendo-angular-l10n": "16.9.0-develop.1",
32
- "@progress/kendo-angular-icons": "16.9.0-develop.1",
33
- "@progress/kendo-angular-indicators": "16.9.0-develop.1",
34
- "@progress/kendo-angular-pager": "16.9.0-develop.1",
35
- "@progress/kendo-angular-popup": "16.9.0-develop.1",
26
+ "@progress/kendo-angular-buttons": "16.9.0-develop.11",
27
+ "@progress/kendo-angular-common": "16.9.0-develop.11",
28
+ "@progress/kendo-angular-dropdowns": "16.9.0-develop.11",
29
+ "@progress/kendo-angular-inputs": "16.9.0-develop.11",
30
+ "@progress/kendo-angular-intl": "16.9.0-develop.11",
31
+ "@progress/kendo-angular-l10n": "16.9.0-develop.11",
32
+ "@progress/kendo-angular-icons": "16.9.0-develop.11",
33
+ "@progress/kendo-angular-indicators": "16.9.0-develop.11",
34
+ "@progress/kendo-angular-pager": "16.9.0-develop.11",
35
+ "@progress/kendo-angular-popup": "16.9.0-develop.11",
36
36
  "rxjs": "^6.5.3 || ^7.0.0"
37
37
  },
38
38
  "dependencies": {
39
39
  "tslib": "^2.3.1",
40
- "@progress/kendo-angular-schematics": "16.9.0-develop.1",
40
+ "@progress/kendo-angular-schematics": "16.9.0-develop.11",
41
41
  "@progress/kendo-file-saver": "^1.0.1",
42
42
  "@progress/kendo-pdfviewer-common": "0.2.10"
43
43
  },
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2024 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { AfterViewInit, EventEmitter, NgZone, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
5
+ import { AfterViewInit, ChangeDetectorRef, EventEmitter, NgZone, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
6
6
  import { LoaderSettings } from './models/loader-settings';
7
7
  import { TypedArray } from '@progress/kendo-pdfviewer-common';
8
8
  import { PDFViewerContext } from './models/pdfviewer-context';
@@ -22,6 +22,7 @@ export declare class PDFViewerComponent implements OnInit, AfterViewInit, OnDest
22
22
  private ngZone;
23
23
  private renderer;
24
24
  private localizationService;
25
+ private cdr;
25
26
  hostClass: boolean;
26
27
  direction: string;
27
28
  /**
@@ -160,7 +161,7 @@ export declare class PDFViewerComponent implements OnInit, AfterViewInit, OnDest
160
161
  private pdfScroller;
161
162
  private searchService;
162
163
  private subs;
163
- constructor(ngZone: NgZone, renderer: Renderer2, localizationService: LocalizationService);
164
+ constructor(ngZone: NgZone, renderer: Renderer2, localizationService: LocalizationService, cdr: ChangeDetectorRef);
164
165
  ngOnInit(): void;
165
166
  ngAfterViewInit(): void;
166
167
  ngOnDestroy(): void;
@@ -196,7 +197,7 @@ export declare class PDFViewerComponent implements OnInit, AfterViewInit, OnDest
196
197
  /**
197
198
  * @hidden
198
199
  */
199
- onZoomLevelChange(zoomLevel: ZoomLevel | string, emit?: boolean): void;
200
+ onZoomLevelChange(zoomLevel: ZoomLevel, emit?: boolean): void;
200
201
  /**
201
202
  * @hidden
202
203
  */
@@ -4,8 +4,8 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'PDFViewerModule', package: 'pdfviewer', peerDependencies: {
6
6
  // peers of the dropdowns
7
- '@progress/kendo-angular-navigation': '16.9.0-develop.1',
8
- '@progress/kendo-angular-treeview': '16.9.0-develop.1'
7
+ '@progress/kendo-angular-navigation': '16.9.0-develop.11',
8
+ '@progress/kendo-angular-treeview': '16.9.0-develop.11'
9
9
  } });
10
10
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
11
11
  }
@@ -9,6 +9,7 @@ import { SVGIcon } from '@progress/kendo-svg-icons';
9
9
  import { ToolbarNavigationService } from './toolbar-navigation.service';
10
10
  import { PDFViewerTool } from '../models/toolbar-tool';
11
11
  import { ZoomLevel } from '../models/zoom-level';
12
+ import { Observable } from 'rxjs';
12
13
  import * as i0 from "@angular/core";
13
14
  /**
14
15
  * @hidden
@@ -61,6 +62,11 @@ export declare class ToolbarComponent {
61
62
  onFileSelect(e: any): void;
62
63
  onZoomLevelChooserValueChange(zoomLevel: ZoomLevel): void;
63
64
  focus(): void;
65
+ valueNormalizer: (text: Observable<string>) => Observable<{
66
+ value: number;
67
+ displayValue: string;
68
+ text: string;
69
+ }>;
64
70
  static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, never>;
65
71
  static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "[kendoPDFViewerToolbar]", never, { "zoomLevel": "zoomLevel"; "calculatedComboBoxValue": "calculatedComboBoxValue"; "skip": "skip"; "pageSize": "pageSize"; "total": "total"; "zoomInDisabled": "zoomInDisabled"; "zoomOutDisabled": "zoomOutDisabled"; "disabledTools": "disabledTools"; "zoomLevelChooserValue": "zoomLevelChooserValue"; "zoomOptionsData": "zoomOptionsData"; "pagesContainerId": "pagesContainerId"; "tools": "tools"; }, { "fileSelect": "fileSelect"; "fileSelectStart": "fileSelectStart"; "fileSelectError": "fileSelectError"; "download": "download"; "selectionEnabled": "selectionEnabled"; "panningEnabled": "panningEnabled"; "pageChange": "pageChange"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomLevelChange": "zoomLevelChange"; "print": "print"; "search": "search"; }, never, never, true, never>;
66
72
  }