@progress/kendo-angular-upload 21.2.0 → 21.3.0-develop.10

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.
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1764751401,
14
- version: '21.2.0',
13
+ publishDate: 1765272908,
14
+ version: '21.3.0-develop.10',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -95,13 +95,21 @@ export class FileListComponent {
95
95
  hasDelete(item) {
96
96
  return item.element.nativeElement.getElementsByClassName('k-svg-i-x').length > 0;
97
97
  }
98
+ /**
99
+ * Tracks files array by the UID of the first file in the batch.
100
+ * Each batch of files shares the same UID, which remains stable
101
+ * throughout the file lifecycle until the batch is removed.
102
+ */
103
+ trackByUid(index, files) {
104
+ return files[0]?.uid || index.toString();
105
+ }
98
106
  ngOnDestroy() {
99
107
  this.focusSubscription.unsubscribe();
100
108
  this.actionSubscription.unsubscribe();
101
109
  }
102
110
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileListComponent, deps: [{ token: i1.UploadService }, { token: i2.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
103
111
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileListComponent, isStandalone: true, selector: "[kendo-upload-file-list]", inputs: { disabled: "disabled", fileList: "fileList", fileTemplate: "fileTemplate", fileInfoTemplate: "fileInfoTemplate" }, host: { properties: { "attr.role": "this.fileListRole" } }, viewQueries: [{ propertyName: "fileListItems", predicate: FileListItemDirective, descendants: true }], ngImport: i0, template: `
104
- @for (files of fileList; track files; let index = $index) {
112
+ @for (files of fileList; track trackByUid($index, files); let index = $index) {
105
113
  <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
106
114
  @if (files.length === 1 && !fileTemplate) {
107
115
  <kendo-upload-file-list-single-item
@@ -134,7 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
134
142
  args: [{
135
143
  selector: '[kendo-upload-file-list]',
136
144
  template: `
137
- @for (files of fileList; track files; let index = $index) {
145
+ @for (files of fileList; track trackByUid($index, files); let index = $index) {
138
146
  <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
139
147
  @if (files.length === 1 && !fileTemplate) {
140
148
  <kendo-upload-file-list-single-item
@@ -1585,8 +1585,8 @@ const packageMetadata = {
1585
1585
  productName: 'Kendo UI for Angular',
1586
1586
  productCode: 'KENDOUIANGULAR',
1587
1587
  productCodes: ['KENDOUIANGULAR'],
1588
- publishDate: 1764751401,
1589
- version: '21.2.0',
1588
+ publishDate: 1765272908,
1589
+ version: '21.3.0-develop.10',
1590
1590
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
1591
1591
  };
1592
1592
 
@@ -2828,13 +2828,21 @@ class FileListComponent {
2828
2828
  hasDelete(item) {
2829
2829
  return item.element.nativeElement.getElementsByClassName('k-svg-i-x').length > 0;
2830
2830
  }
2831
+ /**
2832
+ * Tracks files array by the UID of the first file in the batch.
2833
+ * Each batch of files shares the same UID, which remains stable
2834
+ * throughout the file lifecycle until the batch is removed.
2835
+ */
2836
+ trackByUid(index, files) {
2837
+ return files[0]?.uid || index.toString();
2838
+ }
2831
2839
  ngOnDestroy() {
2832
2840
  this.focusSubscription.unsubscribe();
2833
2841
  this.actionSubscription.unsubscribe();
2834
2842
  }
2835
2843
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileListComponent, deps: [{ token: UploadService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
2836
2844
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileListComponent, isStandalone: true, selector: "[kendo-upload-file-list]", inputs: { disabled: "disabled", fileList: "fileList", fileTemplate: "fileTemplate", fileInfoTemplate: "fileInfoTemplate" }, host: { properties: { "attr.role": "this.fileListRole" } }, viewQueries: [{ propertyName: "fileListItems", predicate: FileListItemDirective, descendants: true }], ngImport: i0, template: `
2837
- @for (files of fileList; track files; let index = $index) {
2845
+ @for (files of fileList; track trackByUid($index, files); let index = $index) {
2838
2846
  <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
2839
2847
  @if (files.length === 1 && !fileTemplate) {
2840
2848
  <kendo-upload-file-list-single-item
@@ -2867,7 +2875,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2867
2875
  args: [{
2868
2876
  selector: '[kendo-upload-file-list]',
2869
2877
  template: `
2870
- @for (files of fileList; track files; let index = $index) {
2878
+ @for (files of fileList; track trackByUid($index, files); let index = $index) {
2871
2879
  <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
2872
2880
  @if (files.length === 1 && !fileTemplate) {
2873
2881
  <kendo-upload-file-list-single-item
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-upload",
3
- "version": "21.2.0",
3
+ "version": "21.3.0-develop.10",
4
4
  "description": "Kendo UI Angular Upload Component",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -19,7 +19,7 @@
19
19
  "package": {
20
20
  "productName": "Kendo UI for Angular",
21
21
  "productCode": "KENDOUIANGULAR",
22
- "publishDate": 1764751401,
22
+ "publishDate": 1765272908,
23
23
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
24
24
  }
25
25
  },
@@ -30,16 +30,16 @@
30
30
  "@angular/forms": "18 - 21",
31
31
  "@angular/platform-browser": "18 - 21",
32
32
  "@progress/kendo-licensing": "^1.7.0",
33
- "@progress/kendo-angular-common": "21.2.0",
34
- "@progress/kendo-angular-l10n": "21.2.0",
35
- "@progress/kendo-angular-icons": "21.2.0",
36
- "@progress/kendo-angular-buttons": "21.2.0",
37
- "@progress/kendo-angular-progressbar": "21.2.0",
33
+ "@progress/kendo-angular-common": "21.3.0-develop.10",
34
+ "@progress/kendo-angular-l10n": "21.3.0-develop.10",
35
+ "@progress/kendo-angular-icons": "21.3.0-develop.10",
36
+ "@progress/kendo-angular-buttons": "21.3.0-develop.10",
37
+ "@progress/kendo-angular-progressbar": "21.3.0-develop.10",
38
38
  "rxjs": "^6.5.3 || ^7.0.0"
39
39
  },
40
40
  "dependencies": {
41
41
  "tslib": "^2.3.1",
42
- "@progress/kendo-angular-schematics": "21.2.0"
42
+ "@progress/kendo-angular-schematics": "21.3.0-develop.10"
43
43
  },
44
44
  "schematics": "./schematics/collection.json",
45
45
  "module": "fesm2022/progress-kendo-angular-upload.mjs",
@@ -29,6 +29,12 @@ export declare class FileListComponent implements OnDestroy {
29
29
  onItemAction(): void;
30
30
  itemActionHandler(key: string): void;
31
31
  hasDelete(item: FileListItemDirective): boolean;
32
+ /**
33
+ * Tracks files array by the UID of the first file in the batch.
34
+ * Each batch of files shares the same UID, which remains stable
35
+ * throughout the file lifecycle until the batch is removed.
36
+ */
37
+ trackByUid(index: number, files: Array<FileInfo>): string;
32
38
  ngOnDestroy(): void;
33
39
  static ɵfac: i0.ɵɵFactoryDeclaration<FileListComponent, never>;
34
40
  static ɵcmp: i0.ɵɵComponentDeclaration<FileListComponent, "[kendo-upload-file-list]", never, { "disabled": { "alias": "disabled"; "required": false; }; "fileList": { "alias": "fileList"; "required": false; }; "fileTemplate": { "alias": "fileTemplate"; "required": false; }; "fileInfoTemplate": { "alias": "fileInfoTemplate"; "required": false; }; }, {}, never, never, true, never>;
@@ -15,9 +15,9 @@ function default_1(options) {
15
15
  ], peerDependencies: {
16
16
  // peer dep of the icons
17
17
  '@progress/kendo-svg-icons': '^4.0.0',
18
- '@progress/kendo-angular-buttons': '21.2.0',
19
- '@progress/kendo-angular-progressbar': '21.2.0',
20
- '@progress/kendo-angular-popup': '21.2.0',
18
+ '@progress/kendo-angular-buttons': '21.3.0-develop.10',
19
+ '@progress/kendo-angular-progressbar': '21.3.0-develop.10',
20
+ '@progress/kendo-angular-popup': '21.3.0-develop.10',
21
21
  } });
22
22
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
23
23
  }