@progress/kendo-angular-upload 21.1.1-develop.1 → 21.2.0-develop.1

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.
@@ -16,7 +16,7 @@ import { filter } from 'rxjs/operators';
16
16
  import { validatePackage } from '@progress/kendo-licensing';
17
17
  import { trigger, state, style, transition, animate } from '@angular/animations';
18
18
  import { ButtonComponent } from '@progress/kendo-angular-buttons';
19
- import { NgIf, NgFor, NgClass, NgTemplateOutlet } from '@angular/common';
19
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
20
20
  import { IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';
21
21
  import { ProgressBarComponent } from '@progress/kendo-angular-progressbar';
22
22
  import { PopupService } from '@progress/kendo-angular-popup';
@@ -1585,8 +1585,8 @@ const packageMetadata = {
1585
1585
  productName: 'Kendo UI for Angular',
1586
1586
  productCode: 'KENDOUIANGULAR',
1587
1587
  productCodes: ['KENDOUIANGULAR'],
1588
- publishDate: 1763645469,
1589
- version: '21.1.1-develop.1',
1588
+ publishDate: 1763998113,
1589
+ version: '21.2.0-develop.1',
1590
1590
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
1591
1591
  };
1592
1592
 
@@ -2278,56 +2278,61 @@ class FileListItemActionButtonComponent {
2278
2278
  return true;
2279
2279
  }
2280
2280
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileListItemActionButtonComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
2281
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FileListItemActionButtonComponent, isStandalone: true, selector: "kendo-upload-file-list-item-action-button", inputs: { file: "file", disabled: "disabled", progress: "progress" }, ngImport: i0, template: `
2281
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileListItemActionButtonComponent, isStandalone: true, selector: "kendo-upload-file-list-item-action-button", inputs: { file: "file", disabled: "disabled", progress: "progress" }, ngImport: i0, template: `
2282
2282
  <span class="k-upload-actions">
2283
- <span class="k-upload-pct" *ngIf="isUploading || isPaused">{{progress}}%</span>
2284
-
2283
+ @if (isUploading || isPaused) {
2284
+ <span class="k-upload-pct">{{progress}}%</span>
2285
+ }
2286
+
2287
+ @if (isFailed) {
2285
2288
  <button
2286
- *ngIf="isFailed"
2287
- kendoButton
2288
- type="button"
2289
- class="k-upload-action k-retry"
2290
- fillMode="flat"
2291
- [attr.tabIndex]="-1"
2292
- [attr.aria-hidden]="true"
2293
- [attr.title]="retryButtonTitle"
2294
- [svgIcon]="retrySVGIcon"
2295
- icon="refresh-sm"
2296
- (pointerdown)="$event.preventDefault()"
2297
- (click)="onRetryClick()"
2289
+ kendoButton
2290
+ type="button"
2291
+ class="k-upload-action k-retry"
2292
+ fillMode="flat"
2293
+ [attr.tabIndex]="-1"
2294
+ [attr.aria-hidden]="true"
2295
+ [attr.title]="retryButtonTitle"
2296
+ [svgIcon]="retrySVGIcon"
2297
+ icon="refresh-sm"
2298
+ (pointerdown)="$event.preventDefault()"
2299
+ (click)="onRetryClick()"
2298
2300
  ></button>
2299
-
2301
+ }
2302
+
2303
+ @if (isResumable) {
2300
2304
  <button
2301
- *ngIf="isResumable"
2302
- kendoButton
2303
- type="button"
2304
- class="k-upload-action"
2305
- fillMode="flat"
2306
- [attr.tabIndex]="-1"
2307
- [attr.aria-hidden]="true"
2308
- [attr.title]="pauseResumeButtonTitle"
2309
- [svgIcon]="isPaused ? playSVGIcon : pauseSVGIcon"
2310
- [icon]="isPaused ? 'play-sm' : 'pause-sm'"
2311
- (pointerdown)="$event.preventDefault()"
2312
- (click)="onPauseResumeClick()"
2305
+ kendoButton
2306
+ type="button"
2307
+ class="k-upload-action"
2308
+ fillMode="flat"
2309
+ [attr.tabIndex]="-1"
2310
+ [attr.aria-hidden]="true"
2311
+ [attr.title]="pauseResumeButtonTitle"
2312
+ [svgIcon]="isPaused ? playSVGIcon : pauseSVGIcon"
2313
+ [icon]="isPaused ? 'play-sm' : 'pause-sm'"
2314
+ (pointerdown)="$event.preventDefault()"
2315
+ (click)="onPauseResumeClick()"
2313
2316
  ></button>
2314
-
2315
- <button
2316
- *ngIf="isActionButtonVisible"
2317
- kendoButton
2318
- class="k-upload-action"
2319
- [class.k-delete]="!isUploading"
2320
- fillMode="flat"
2321
- type="button"
2322
- [attr.tabIndex]="-1"
2323
- [attr.aria-hidden]="true"
2324
- [attr.title]="actionButtonTitle"
2325
- [svgIcon]="isUploading ? cancelSVGIcon : deleteSVGIcon"
2326
- [icon]="isUploading ? 'cancel' : 'x'"
2327
- (click)="onRemoveCancelClick($event)"
2317
+ }
2318
+
2319
+ @if (isActionButtonVisible) {
2320
+ <button
2321
+ kendoButton
2322
+ class="k-upload-action"
2323
+ [class.k-delete]="!isUploading"
2324
+ fillMode="flat"
2325
+ type="button"
2326
+ [attr.tabIndex]="-1"
2327
+ [attr.aria-hidden]="true"
2328
+ [attr.title]="actionButtonTitle"
2329
+ [svgIcon]="isUploading ? cancelSVGIcon : deleteSVGIcon"
2330
+ [icon]="isUploading ? 'cancel' : 'x'"
2331
+ (click)="onRemoveCancelClick($event)"
2328
2332
  ></button>
2333
+ }
2329
2334
  </span>
2330
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
2335
+ `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
2331
2336
  }
2332
2337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileListItemActionButtonComponent, decorators: [{
2333
2338
  type: Component,
@@ -2335,56 +2340,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2335
2340
  selector: 'kendo-upload-file-list-item-action-button',
2336
2341
  template: `
2337
2342
  <span class="k-upload-actions">
2338
- <span class="k-upload-pct" *ngIf="isUploading || isPaused">{{progress}}%</span>
2339
-
2343
+ @if (isUploading || isPaused) {
2344
+ <span class="k-upload-pct">{{progress}}%</span>
2345
+ }
2346
+
2347
+ @if (isFailed) {
2340
2348
  <button
2341
- *ngIf="isFailed"
2342
- kendoButton
2343
- type="button"
2344
- class="k-upload-action k-retry"
2345
- fillMode="flat"
2346
- [attr.tabIndex]="-1"
2347
- [attr.aria-hidden]="true"
2348
- [attr.title]="retryButtonTitle"
2349
- [svgIcon]="retrySVGIcon"
2350
- icon="refresh-sm"
2351
- (pointerdown)="$event.preventDefault()"
2352
- (click)="onRetryClick()"
2349
+ kendoButton
2350
+ type="button"
2351
+ class="k-upload-action k-retry"
2352
+ fillMode="flat"
2353
+ [attr.tabIndex]="-1"
2354
+ [attr.aria-hidden]="true"
2355
+ [attr.title]="retryButtonTitle"
2356
+ [svgIcon]="retrySVGIcon"
2357
+ icon="refresh-sm"
2358
+ (pointerdown)="$event.preventDefault()"
2359
+ (click)="onRetryClick()"
2353
2360
  ></button>
2354
-
2361
+ }
2362
+
2363
+ @if (isResumable) {
2355
2364
  <button
2356
- *ngIf="isResumable"
2357
- kendoButton
2358
- type="button"
2359
- class="k-upload-action"
2360
- fillMode="flat"
2361
- [attr.tabIndex]="-1"
2362
- [attr.aria-hidden]="true"
2363
- [attr.title]="pauseResumeButtonTitle"
2364
- [svgIcon]="isPaused ? playSVGIcon : pauseSVGIcon"
2365
- [icon]="isPaused ? 'play-sm' : 'pause-sm'"
2366
- (pointerdown)="$event.preventDefault()"
2367
- (click)="onPauseResumeClick()"
2365
+ kendoButton
2366
+ type="button"
2367
+ class="k-upload-action"
2368
+ fillMode="flat"
2369
+ [attr.tabIndex]="-1"
2370
+ [attr.aria-hidden]="true"
2371
+ [attr.title]="pauseResumeButtonTitle"
2372
+ [svgIcon]="isPaused ? playSVGIcon : pauseSVGIcon"
2373
+ [icon]="isPaused ? 'play-sm' : 'pause-sm'"
2374
+ (pointerdown)="$event.preventDefault()"
2375
+ (click)="onPauseResumeClick()"
2368
2376
  ></button>
2369
-
2370
- <button
2371
- *ngIf="isActionButtonVisible"
2372
- kendoButton
2373
- class="k-upload-action"
2374
- [class.k-delete]="!isUploading"
2375
- fillMode="flat"
2376
- type="button"
2377
- [attr.tabIndex]="-1"
2378
- [attr.aria-hidden]="true"
2379
- [attr.title]="actionButtonTitle"
2380
- [svgIcon]="isUploading ? cancelSVGIcon : deleteSVGIcon"
2381
- [icon]="isUploading ? 'cancel' : 'x'"
2382
- (click)="onRemoveCancelClick($event)"
2377
+ }
2378
+
2379
+ @if (isActionButtonVisible) {
2380
+ <button
2381
+ kendoButton
2382
+ class="k-upload-action"
2383
+ [class.k-delete]="!isUploading"
2384
+ fillMode="flat"
2385
+ type="button"
2386
+ [attr.tabIndex]="-1"
2387
+ [attr.aria-hidden]="true"
2388
+ [attr.title]="actionButtonTitle"
2389
+ [svgIcon]="isUploading ? cancelSVGIcon : deleteSVGIcon"
2390
+ [icon]="isUploading ? 'cancel' : 'x'"
2391
+ (click)="onRemoveCancelClick($event)"
2383
2392
  ></button>
2393
+ }
2384
2394
  </span>
2385
2395
  `,
2386
2396
  standalone: true,
2387
- imports: [NgIf, ButtonComponent]
2397
+ imports: [ButtonComponent]
2388
2398
  }]
2389
2399
  }], ctorParameters: () => [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }], propDecorators: { file: [{
2390
2400
  type: Input
@@ -2445,52 +2455,55 @@ class FileListMultipleItemsComponent extends FileListItemBase {
2445
2455
  return this.files[0].state === FileState.Failed;
2446
2456
  }
2447
2457
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileListMultipleItemsComponent, deps: [{ token: i1$1.LocalizationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component });
2448
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FileListMultipleItemsComponent, isStandalone: true, selector: "kendo-upload-file-list-multiple-items", inputs: { disabled: "disabled", files: "files", fileInfoTemplate: "fileInfoTemplate" }, usesInheritance: true, ngImport: i0, template: `
2458
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileListMultipleItemsComponent, isStandalone: true, selector: "kendo-upload-file-list-multiple-items", inputs: { disabled: "disabled", files: "files", fileInfoTemplate: "fileInfoTemplate" }, usesInheritance: true, ngImport: i0, template: `
2449
2459
  <kendo-progressbar
2450
- [@progressState]="showProgress"
2451
- [value]="progressComplete"
2452
- [label]="{ visible: false }"
2453
- >
2460
+ [@progressState]="showProgress"
2461
+ [value]="progressComplete"
2462
+ [label]="{ visible: false }"
2463
+ >
2454
2464
  </kendo-progressbar>
2455
2465
  <span class="k-file-icon-wrapper">
2456
- <kendo-icon-wrapper
2457
- name="copy"
2458
- size="xxlarge"
2459
- [svgIcon]="copySVGIcon"
2460
- innerCssClass="k-file-icon"
2466
+ <kendo-icon-wrapper
2467
+ name="copy"
2468
+ size="xxlarge"
2469
+ [svgIcon]="copySVGIcon"
2470
+ innerCssClass="k-file-icon"
2461
2471
  >
2462
- </kendo-icon-wrapper>
2472
+ </kendo-icon-wrapper>
2463
2473
  </span>
2464
2474
  <span class="k-multiple-files-wrapper">
2465
- <ng-container *ngIf="!fileInfoTemplate">
2466
- <span *ngFor="let file of files" class="k-file-info">
2467
- <span [title]="file.name" class="k-file-name">
2468
- {{file.name}}
2469
- </span>
2475
+ @if (!fileInfoTemplate) {
2476
+ @for (file of files; track file) {
2477
+ <span class="k-file-info">
2478
+ <span [title]="file.name" class="k-file-name">
2479
+ {{file.name}}
2480
+ </span>
2470
2481
  <span [attr.aria-live]="'polite'" [ngClass]="{
2471
2482
  'k-file-validation-message': file.validationErrors,
2472
2483
  'k-file-size': !file.validationErrors
2473
2484
  }"
2474
- >{{fileStatusText(file)}}</span>
2475
- </span>
2476
- <span class="k-file-summary"
2477
- >{{batchStatusText}}</span>
2478
- </ng-container>
2485
+ >{{fileStatusText(file)}}</span>
2486
+ </span>
2487
+ }
2488
+ <span class="k-file-summary"
2489
+ >{{batchStatusText}}</span>
2490
+ }
2491
+ @if (fileInfoTemplate) {
2479
2492
  <ng-container
2480
- *ngIf="fileInfoTemplate"
2481
- [ngTemplateOutlet]="fileInfoTemplate.templateRef"
2493
+ [ngTemplateOutlet]="fileInfoTemplate.templateRef"
2482
2494
  [ngTemplateOutletContext]="{
2483
2495
  templateRef: fileInfoTemplate.templateRef,
2484
2496
  state: files[0].state,
2485
2497
  $implicit: files
2486
2498
  }"></ng-container>
2499
+ }
2487
2500
  </span>
2488
2501
  <kendo-upload-file-list-item-action-button
2489
- [file]='files[0]'
2490
- [disabled]='disabled'
2491
- [progress]='progressComplete'>
2502
+ [file]='files[0]'
2503
+ [disabled]='disabled'
2504
+ [progress]='progressComplete'>
2492
2505
  </kendo-upload-file-list-item-action-button>
2493
- `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FileListItemActionButtonComponent, selector: "kendo-upload-file-list-item-action-button", inputs: ["file", "disabled", "progress"] }], animations: [
2506
+ `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FileListItemActionButtonComponent, selector: "kendo-upload-file-list-item-action-button", inputs: ["file", "disabled", "progress"] }], animations: [
2494
2507
  trigger('progressState', [
2495
2508
  state('active', style({ opacity: 1 })),
2496
2509
  state('inactive', style({ opacity: 0 })),
@@ -2515,52 +2528,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2515
2528
  selector: 'kendo-upload-file-list-multiple-items',
2516
2529
  template: `
2517
2530
  <kendo-progressbar
2518
- [@progressState]="showProgress"
2519
- [value]="progressComplete"
2520
- [label]="{ visible: false }"
2521
- >
2531
+ [@progressState]="showProgress"
2532
+ [value]="progressComplete"
2533
+ [label]="{ visible: false }"
2534
+ >
2522
2535
  </kendo-progressbar>
2523
2536
  <span class="k-file-icon-wrapper">
2524
- <kendo-icon-wrapper
2525
- name="copy"
2526
- size="xxlarge"
2527
- [svgIcon]="copySVGIcon"
2528
- innerCssClass="k-file-icon"
2537
+ <kendo-icon-wrapper
2538
+ name="copy"
2539
+ size="xxlarge"
2540
+ [svgIcon]="copySVGIcon"
2541
+ innerCssClass="k-file-icon"
2529
2542
  >
2530
- </kendo-icon-wrapper>
2543
+ </kendo-icon-wrapper>
2531
2544
  </span>
2532
2545
  <span class="k-multiple-files-wrapper">
2533
- <ng-container *ngIf="!fileInfoTemplate">
2534
- <span *ngFor="let file of files" class="k-file-info">
2535
- <span [title]="file.name" class="k-file-name">
2536
- {{file.name}}
2537
- </span>
2546
+ @if (!fileInfoTemplate) {
2547
+ @for (file of files; track file) {
2548
+ <span class="k-file-info">
2549
+ <span [title]="file.name" class="k-file-name">
2550
+ {{file.name}}
2551
+ </span>
2538
2552
  <span [attr.aria-live]="'polite'" [ngClass]="{
2539
2553
  'k-file-validation-message': file.validationErrors,
2540
2554
  'k-file-size': !file.validationErrors
2541
2555
  }"
2542
- >{{fileStatusText(file)}}</span>
2543
- </span>
2544
- <span class="k-file-summary"
2545
- >{{batchStatusText}}</span>
2546
- </ng-container>
2556
+ >{{fileStatusText(file)}}</span>
2557
+ </span>
2558
+ }
2559
+ <span class="k-file-summary"
2560
+ >{{batchStatusText}}</span>
2561
+ }
2562
+ @if (fileInfoTemplate) {
2547
2563
  <ng-container
2548
- *ngIf="fileInfoTemplate"
2549
- [ngTemplateOutlet]="fileInfoTemplate.templateRef"
2564
+ [ngTemplateOutlet]="fileInfoTemplate.templateRef"
2550
2565
  [ngTemplateOutletContext]="{
2551
2566
  templateRef: fileInfoTemplate.templateRef,
2552
2567
  state: files[0].state,
2553
2568
  $implicit: files
2554
2569
  }"></ng-container>
2570
+ }
2555
2571
  </span>
2556
2572
  <kendo-upload-file-list-item-action-button
2557
- [file]='files[0]'
2558
- [disabled]='disabled'
2559
- [progress]='progressComplete'>
2573
+ [file]='files[0]'
2574
+ [disabled]='disabled'
2575
+ [progress]='progressComplete'>
2560
2576
  </kendo-upload-file-list-item-action-button>
2561
- `,
2577
+ `,
2562
2578
  standalone: true,
2563
- imports: [ProgressBarComponent, IconWrapperComponent, NgIf, NgFor, NgClass, NgTemplateOutlet, FileListItemActionButtonComponent]
2579
+ imports: [ProgressBarComponent, IconWrapperComponent, NgClass, NgTemplateOutlet, FileListItemActionButtonComponent]
2564
2580
  }]
2565
2581
  }], ctorParameters: () => [{ type: i1$1.LocalizationService }, { type: UploadService }], propDecorators: { disabled: [{
2566
2582
  type: Input
@@ -2620,44 +2636,46 @@ class FileListSingleItemComponent extends FileListItemBase {
2620
2636
  return !this.isUploadFailed && !this.isUploadSuccessful;
2621
2637
  }
2622
2638
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileListSingleItemComponent, deps: [{ token: i1$1.LocalizationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component });
2623
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FileListSingleItemComponent, isStandalone: true, selector: "kendo-upload-file-list-single-item", inputs: { disabled: "disabled", file: "file", fileInfoTemplate: "fileInfoTemplate" }, usesInheritance: true, ngImport: i0, template: `
2639
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileListSingleItemComponent, isStandalone: true, selector: "kendo-upload-file-list-single-item", inputs: { disabled: "disabled", file: "file", fileInfoTemplate: "fileInfoTemplate" }, usesInheritance: true, ngImport: i0, template: `
2624
2640
  <kendo-progressbar
2625
- [@progressState]="showProgress"
2626
- [value]="progressComplete"
2627
- [label]="{ visible: false }"
2628
- >
2641
+ [@progressState]="showProgress"
2642
+ [value]="progressComplete"
2643
+ [label]="{ visible: false }"
2644
+ >
2629
2645
  </kendo-progressbar>
2630
2646
  <span class="k-file-icon-wrapper">
2631
- <kendo-icon-wrapper
2632
- size="xxlarge"
2633
- [name]="fileGroupClass"
2634
- [svgIcon]="fileSVGGroupIcon"
2635
- innerCssClass="k-file-icon"
2647
+ <kendo-icon-wrapper
2648
+ size="xxlarge"
2649
+ [name]="fileGroupClass"
2650
+ [svgIcon]="fileSVGGroupIcon"
2651
+ innerCssClass="k-file-icon"
2636
2652
  >
2637
- </kendo-icon-wrapper>
2653
+ </kendo-icon-wrapper>
2638
2654
  </span>
2639
2655
  <span class="k-file-info">
2640
- <ng-container *ngIf="!fileInfoTemplate">
2641
- <span class="k-file-name" [title]="file.name">{{ file.name }}</span>
2656
+ @if (!fileInfoTemplate) {
2657
+ <span class="k-file-name" [title]="file.name">{{ file.name }}</span>
2642
2658
  <span [attr.aria-live]="'polite'" [ngClass]="{
2643
2659
  'k-file-validation-message': file.validationErrors,
2644
2660
  'k-file-size': !file.validationErrors && isNotYetUploaded,
2645
2661
  'k-file-summary': isUploadSuccessful || isUploadFailed
2646
2662
  }"
2647
- >{{fileStatusText}}</span>
2648
- </ng-container>
2649
- <ng-container *ngIf="fileInfoTemplate" [ngTemplateOutlet]="fileInfoTemplate.templateRef" [ngTemplateOutletContext]="{
2663
+ >{{fileStatusText}}</span>
2664
+ }
2665
+ @if (fileInfoTemplate) {
2666
+ <ng-container [ngTemplateOutlet]="fileInfoTemplate.templateRef" [ngTemplateOutletContext]="{
2650
2667
  templateRef: fileInfoTemplate.templateRef,
2651
2668
  state: file.state,
2652
2669
  $implicit: [file]
2653
2670
  }"></ng-container>
2671
+ }
2654
2672
  </span>
2655
2673
  <kendo-upload-file-list-item-action-button
2656
- [file]='file'
2657
- [disabled]='disabled'
2658
- [progress]='progressComplete'>
2674
+ [file]='file'
2675
+ [disabled]='disabled'
2676
+ [progress]='progressComplete'>
2659
2677
  </kendo-upload-file-list-item-action-button>
2660
- `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FileListItemActionButtonComponent, selector: "kendo-upload-file-list-item-action-button", inputs: ["file", "disabled", "progress"] }], animations: [
2678
+ `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FileListItemActionButtonComponent, selector: "kendo-upload-file-list-item-action-button", inputs: ["file", "disabled", "progress"] }], animations: [
2661
2679
  trigger('progressState', [
2662
2680
  state('active', style({ opacity: 1 })),
2663
2681
  state('inactive', style({ opacity: 0 })),
@@ -2682,44 +2700,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2682
2700
  selector: 'kendo-upload-file-list-single-item',
2683
2701
  template: `
2684
2702
  <kendo-progressbar
2685
- [@progressState]="showProgress"
2686
- [value]="progressComplete"
2687
- [label]="{ visible: false }"
2688
- >
2703
+ [@progressState]="showProgress"
2704
+ [value]="progressComplete"
2705
+ [label]="{ visible: false }"
2706
+ >
2689
2707
  </kendo-progressbar>
2690
2708
  <span class="k-file-icon-wrapper">
2691
- <kendo-icon-wrapper
2692
- size="xxlarge"
2693
- [name]="fileGroupClass"
2694
- [svgIcon]="fileSVGGroupIcon"
2695
- innerCssClass="k-file-icon"
2709
+ <kendo-icon-wrapper
2710
+ size="xxlarge"
2711
+ [name]="fileGroupClass"
2712
+ [svgIcon]="fileSVGGroupIcon"
2713
+ innerCssClass="k-file-icon"
2696
2714
  >
2697
- </kendo-icon-wrapper>
2715
+ </kendo-icon-wrapper>
2698
2716
  </span>
2699
2717
  <span class="k-file-info">
2700
- <ng-container *ngIf="!fileInfoTemplate">
2701
- <span class="k-file-name" [title]="file.name">{{ file.name }}</span>
2718
+ @if (!fileInfoTemplate) {
2719
+ <span class="k-file-name" [title]="file.name">{{ file.name }}</span>
2702
2720
  <span [attr.aria-live]="'polite'" [ngClass]="{
2703
2721
  'k-file-validation-message': file.validationErrors,
2704
2722
  'k-file-size': !file.validationErrors && isNotYetUploaded,
2705
2723
  'k-file-summary': isUploadSuccessful || isUploadFailed
2706
2724
  }"
2707
- >{{fileStatusText}}</span>
2708
- </ng-container>
2709
- <ng-container *ngIf="fileInfoTemplate" [ngTemplateOutlet]="fileInfoTemplate.templateRef" [ngTemplateOutletContext]="{
2725
+ >{{fileStatusText}}</span>
2726
+ }
2727
+ @if (fileInfoTemplate) {
2728
+ <ng-container [ngTemplateOutlet]="fileInfoTemplate.templateRef" [ngTemplateOutletContext]="{
2710
2729
  templateRef: fileInfoTemplate.templateRef,
2711
2730
  state: file.state,
2712
2731
  $implicit: [file]
2713
2732
  }"></ng-container>
2733
+ }
2714
2734
  </span>
2715
2735
  <kendo-upload-file-list-item-action-button
2716
- [file]='file'
2717
- [disabled]='disabled'
2718
- [progress]='progressComplete'>
2736
+ [file]='file'
2737
+ [disabled]='disabled'
2738
+ [progress]='progressComplete'>
2719
2739
  </kendo-upload-file-list-item-action-button>
2720
- `,
2740
+ `,
2721
2741
  standalone: true,
2722
- imports: [ProgressBarComponent, IconWrapperComponent, NgIf, NgClass, NgTemplateOutlet, FileListItemActionButtonComponent]
2742
+ imports: [ProgressBarComponent, IconWrapperComponent, NgClass, NgTemplateOutlet, FileListItemActionButtonComponent]
2723
2743
  }]
2724
2744
  }], ctorParameters: () => [{ type: i1$1.LocalizationService }, { type: UploadService }], propDecorators: { disabled: [{
2725
2745
  type: Input
@@ -2813,67 +2833,69 @@ class FileListComponent {
2813
2833
  this.actionSubscription.unsubscribe();
2814
2834
  }
2815
2835
  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 });
2816
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.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: `
2817
- <ng-template ngFor
2818
- [ngForOf]="fileList"
2819
- let-files
2820
- let-index="index">
2821
- <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
2822
- <kendo-upload-file-list-single-item
2823
- class='k-file-single'
2824
- *ngIf='files.length === 1 && !fileTemplate'
2825
- [disabled]='disabled'
2826
- [file]='files[0]'
2827
- [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-single-item>
2828
- <kendo-upload-file-list-multiple-items
2829
- class='k-file-multiple'
2830
- *ngIf='files.length > 1 && !fileTemplate'
2831
- [disabled]='disabled'
2832
- [files]='files'
2833
- [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-multiple-items>
2834
- <ng-container
2835
- *ngIf="fileTemplate" [ngTemplateOutlet]="fileTemplate.templateRef" [ngTemplateOutletContext]="{
2836
+ 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) {
2838
+ <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
2839
+ @if (files.length === 1 && !fileTemplate) {
2840
+ <kendo-upload-file-list-single-item
2841
+ class='k-file-single'
2842
+ [disabled]='disabled'
2843
+ [file]='files[0]'
2844
+ [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-single-item>
2845
+ }
2846
+ @if (files.length > 1 && !fileTemplate) {
2847
+ <kendo-upload-file-list-multiple-items
2848
+ class='k-file-multiple'
2849
+ [disabled]='disabled'
2850
+ [files]='files'
2851
+ [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-multiple-items>
2852
+ }
2853
+ @if (fileTemplate) {
2854
+ <ng-container
2855
+ [ngTemplateOutlet]="fileTemplate.templateRef" [ngTemplateOutletContext]="{
2836
2856
  templateRef: fileTemplate.templateRef,
2837
2857
  state: files[0].state,
2838
2858
  $implicit: files
2839
2859
  }"></ng-container>
2840
- </li>
2841
- </ng-template>
2842
- `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: FileListItemDirective, selector: "[kendoUploadFileListItem]", inputs: ["files", "index"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FileListSingleItemComponent, selector: "kendo-upload-file-list-single-item", inputs: ["disabled", "file", "fileInfoTemplate"] }, { kind: "component", type: FileListMultipleItemsComponent, selector: "kendo-upload-file-list-multiple-items", inputs: ["disabled", "files", "fileInfoTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
2860
+ }
2861
+ </li>
2862
+ }
2863
+ `, isInline: true, dependencies: [{ kind: "directive", type: FileListItemDirective, selector: "[kendoUploadFileListItem]", inputs: ["files", "index"] }, { kind: "component", type: FileListSingleItemComponent, selector: "kendo-upload-file-list-single-item", inputs: ["disabled", "file", "fileInfoTemplate"] }, { kind: "component", type: FileListMultipleItemsComponent, selector: "kendo-upload-file-list-multiple-items", inputs: ["disabled", "files", "fileInfoTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
2843
2864
  }
2844
2865
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileListComponent, decorators: [{
2845
2866
  type: Component,
2846
2867
  args: [{
2847
2868
  selector: '[kendo-upload-file-list]',
2848
2869
  template: `
2849
- <ng-template ngFor
2850
- [ngForOf]="fileList"
2851
- let-files
2852
- let-index="index">
2853
- <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
2854
- <kendo-upload-file-list-single-item
2855
- class='k-file-single'
2856
- *ngIf='files.length === 1 && !fileTemplate'
2857
- [disabled]='disabled'
2858
- [file]='files[0]'
2859
- [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-single-item>
2860
- <kendo-upload-file-list-multiple-items
2861
- class='k-file-multiple'
2862
- *ngIf='files.length > 1 && !fileTemplate'
2863
- [disabled]='disabled'
2864
- [files]='files'
2865
- [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-multiple-items>
2866
- <ng-container
2867
- *ngIf="fileTemplate" [ngTemplateOutlet]="fileTemplate.templateRef" [ngTemplateOutletContext]="{
2870
+ @for (files of fileList; track files; let index = $index) {
2871
+ <li kendoUploadFileListItem [files]='files' [index]='index' role="listitem">
2872
+ @if (files.length === 1 && !fileTemplate) {
2873
+ <kendo-upload-file-list-single-item
2874
+ class='k-file-single'
2875
+ [disabled]='disabled'
2876
+ [file]='files[0]'
2877
+ [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-single-item>
2878
+ }
2879
+ @if (files.length > 1 && !fileTemplate) {
2880
+ <kendo-upload-file-list-multiple-items
2881
+ class='k-file-multiple'
2882
+ [disabled]='disabled'
2883
+ [files]='files'
2884
+ [fileInfoTemplate]="fileInfoTemplate"></kendo-upload-file-list-multiple-items>
2885
+ }
2886
+ @if (fileTemplate) {
2887
+ <ng-container
2888
+ [ngTemplateOutlet]="fileTemplate.templateRef" [ngTemplateOutletContext]="{
2868
2889
  templateRef: fileTemplate.templateRef,
2869
2890
  state: files[0].state,
2870
2891
  $implicit: files
2871
2892
  }"></ng-container>
2872
- </li>
2873
- </ng-template>
2874
- `,
2893
+ }
2894
+ </li>
2895
+ }
2896
+ `,
2875
2897
  standalone: true,
2876
- imports: [NgFor, FileListItemDirective, NgIf, FileListSingleItemComponent, FileListMultipleItemsComponent, NgTemplateOutlet]
2898
+ imports: [FileListItemDirective, FileListSingleItemComponent, FileListMultipleItemsComponent, NgTemplateOutlet]
2877
2899
  }]
2878
2900
  }], ctorParameters: () => [{ type: UploadService }, { type: NavigationService }], propDecorators: { disabled: [{
2879
2901
  type: Input
@@ -4015,7 +4037,7 @@ class UploadComponent extends UploadFileSelectBase {
4015
4037
  }));
4016
4038
  }
4017
4039
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UploadComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }, { token: DropZoneService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
4018
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UploadComponent, isStandalone: true, selector: "kendo-upload", inputs: { autoUpload: "autoUpload", batch: "batch", withCredentials: "withCredentials", saveField: "saveField", saveHeaders: "saveHeaders", saveMethod: "saveMethod", saveUrl: "saveUrl", responseType: "responseType", removeField: "removeField", removeHeaders: "removeHeaders", removeMethod: "removeMethod", removeUrl: "removeUrl", chunkable: "chunkable", concurrent: "concurrent", showFileList: "showFileList", tabIndex: "tabIndex", actionsLayout: "actionsLayout" }, outputs: { cancel: "cancel", clear: "clear", complete: "complete", error: "error", pause: "pause", resume: "resume", success: "success", upload: "upload", uploadProgress: "uploadProgress", valueChange: "valueChange" }, host: { properties: { "attr.dir": "this.dir" } }, providers: [
4040
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UploadComponent, isStandalone: true, selector: "kendo-upload", inputs: { autoUpload: "autoUpload", batch: "batch", withCredentials: "withCredentials", saveField: "saveField", saveHeaders: "saveHeaders", saveMethod: "saveMethod", saveUrl: "saveUrl", responseType: "responseType", removeField: "removeField", removeHeaders: "removeHeaders", removeMethod: "removeMethod", removeUrl: "removeUrl", chunkable: "chunkable", concurrent: "concurrent", showFileList: "showFileList", tabIndex: "tabIndex", actionsLayout: "actionsLayout" }, outputs: { cancel: "cancel", clear: "clear", complete: "complete", error: "error", pause: "pause", resume: "resume", success: "success", upload: "upload", uploadProgress: "uploadProgress", valueChange: "valueChange" }, host: { properties: { "attr.dir": "this.dir" } }, providers: [
4019
4041
  LocalizationService,
4020
4042
  NavigationService,
4021
4043
  UploadService,
@@ -4031,116 +4053,121 @@ class UploadComponent extends UploadFileSelectBase {
4031
4053
  }
4032
4054
  ], viewQueries: [{ propertyName: "fileSelectInput", first: true, predicate: ["fileSelectInput"], descendants: true, static: true }], exportAs: ["kendoUpload"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
4033
4055
  <ng-container kendoUploadLocalizedMessages
4034
- i18n-cancel="kendo.upload.cancel|The text for the Cancel button"
4035
- cancel="Cancel"
4036
-
4037
- i18n-clearSelectedFiles="kendo.upload.clearSelectedFiles|The text for the Clear button"
4038
- clearSelectedFiles="Clear"
4039
-
4040
- i18n-dropFilesHere="kendo.upload.dropFilesHere|The drop zone hint"
4041
- dropFilesHere="Drop files here to upload"
4042
-
4043
- i18n-filesBatchStatus="kendo.upload.filesBatchStatus|The status message for a batch of files"
4044
- filesBatchStatus="files"
4045
-
4046
- i18n-filesBatchStatusFailed="kendo.upload.filesBatchStatusFailed|The status message for a batch of files after failed upload"
4047
- filesBatchStatusFailed="files failed to upload."
4048
-
4049
- i18n-filesBatchStatusUploaded="kendo.upload.filesBatchStatusUploaded|The status message for a batch of files after successful upload"
4050
- filesBatchStatusUploaded="files successfully uploaded."
4051
-
4052
- i18n-fileStatusFailed="kendo.upload.fileStatusFailed|The file status message after failed upload"
4053
- fileStatusFailed="File failed to upload."
4054
-
4055
- i18n-fileStatusUploaded="kendo.upload.fileStatusUploaded|The file status message after successful upload"
4056
- fileStatusUploaded="File successfully uploaded."
4057
-
4058
- i18n-headerStatusPaused="kendo.upload.headerStatusPaused|The header status message when the file upload is paused"
4059
- headerStatusPaused="Paused"
4060
-
4061
- i18n-headerStatusUploaded="kendo.upload.headerStatusUploaded|The header status message after file upload completion"
4062
- headerStatusUploaded="Done"
4063
-
4064
- i18n-headerStatusUploading="kendo.upload.headerStatusUploading|The header status message during file upload"
4065
- headerStatusUploading="Uploading..."
4066
-
4067
- i18n-invalidFileExtension="kendo.upload.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4068
- invalidFileExtension="File type not allowed."
4069
-
4070
- i18n-invalidMaxFileSize="kendo.upload.invalidMaxFileSize|The text for the invalid max file size restriction message"
4071
- invalidMaxFileSize="File size too large."
4072
-
4073
- i18n-invalidMinFileSize="kendo.upload.invalidMinFileSize|The text for the invalid min file size restriction message"
4074
- invalidMinFileSize="File size too small."
4075
-
4076
- i18n-pause="kendo.upload.pause|The text for the Pause button"
4077
- pause="Pause"
4078
-
4079
- i18n-remove="kendo.upload.remove|The text for the Remove button"
4080
- remove="Remove"
4081
-
4082
- i18n-resume="kendo.upload.resume|The text for the Resume button"
4083
- resume="Resume"
4084
-
4085
- i18n-retry="kendo.upload.retry|The text for the Retry button"
4086
- retry="Retry"
4087
-
4088
- i18n-select="kendo.upload.select|The text for the Select button"
4089
- select="Select files..."
4090
-
4091
- i18n-uploadSelectedFiles="kendo.upload.uploadSelectedFiles|The text for the Upload files button"
4092
- uploadSelectedFiles="Upload"
4093
- >
4056
+ i18n-cancel="kendo.upload.cancel|The text for the Cancel button"
4057
+ cancel="Cancel"
4058
+
4059
+ i18n-clearSelectedFiles="kendo.upload.clearSelectedFiles|The text for the Clear button"
4060
+ clearSelectedFiles="Clear"
4061
+
4062
+ i18n-dropFilesHere="kendo.upload.dropFilesHere|The drop zone hint"
4063
+ dropFilesHere="Drop files here to upload"
4064
+
4065
+ i18n-filesBatchStatus="kendo.upload.filesBatchStatus|The status message for a batch of files"
4066
+ filesBatchStatus="files"
4067
+
4068
+ i18n-filesBatchStatusFailed="kendo.upload.filesBatchStatusFailed|The status message for a batch of files after failed upload"
4069
+ filesBatchStatusFailed="files failed to upload."
4070
+
4071
+ i18n-filesBatchStatusUploaded="kendo.upload.filesBatchStatusUploaded|The status message for a batch of files after successful upload"
4072
+ filesBatchStatusUploaded="files successfully uploaded."
4073
+
4074
+ i18n-fileStatusFailed="kendo.upload.fileStatusFailed|The file status message after failed upload"
4075
+ fileStatusFailed="File failed to upload."
4076
+
4077
+ i18n-fileStatusUploaded="kendo.upload.fileStatusUploaded|The file status message after successful upload"
4078
+ fileStatusUploaded="File successfully uploaded."
4079
+
4080
+ i18n-headerStatusPaused="kendo.upload.headerStatusPaused|The header status message when the file upload is paused"
4081
+ headerStatusPaused="Paused"
4082
+
4083
+ i18n-headerStatusUploaded="kendo.upload.headerStatusUploaded|The header status message after file upload completion"
4084
+ headerStatusUploaded="Done"
4085
+
4086
+ i18n-headerStatusUploading="kendo.upload.headerStatusUploading|The header status message during file upload"
4087
+ headerStatusUploading="Uploading..."
4088
+
4089
+ i18n-invalidFileExtension="kendo.upload.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4090
+ invalidFileExtension="File type not allowed."
4091
+
4092
+ i18n-invalidMaxFileSize="kendo.upload.invalidMaxFileSize|The text for the invalid max file size restriction message"
4093
+ invalidMaxFileSize="File size too large."
4094
+
4095
+ i18n-invalidMinFileSize="kendo.upload.invalidMinFileSize|The text for the invalid min file size restriction message"
4096
+ invalidMinFileSize="File size too small."
4097
+
4098
+ i18n-pause="kendo.upload.pause|The text for the Pause button"
4099
+ pause="Pause"
4100
+
4101
+ i18n-remove="kendo.upload.remove|The text for the Remove button"
4102
+ remove="Remove"
4103
+
4104
+ i18n-resume="kendo.upload.resume|The text for the Resume button"
4105
+ resume="Resume"
4106
+
4107
+ i18n-retry="kendo.upload.retry|The text for the Retry button"
4108
+ retry="Retry"
4109
+
4110
+ i18n-select="kendo.upload.select|The text for the Select button"
4111
+ select="Select files..."
4112
+
4113
+ i18n-uploadSelectedFiles="kendo.upload.uploadSelectedFiles|The text for the Upload files button"
4114
+ uploadSelectedFiles="Upload"
4115
+ >
4094
4116
  </ng-container>
4095
4117
  <div kendoUploadInternalDropZone
4096
- [restrictions]="restrictions"
4097
- [multiple]="multiple"
4098
- [disabled]="disabled"
4099
- >
4100
- <div class="k-upload-button-wrap">
4101
- <button
4102
- kendoButton
4103
- #fileSelectButton
4104
- class="k-upload-button"
4105
- type="button"
4106
- (click)="fileSelectInput.click()"
4107
- (focus)="onFileSelectButtonFocus()"
4108
- [id]="focusableId"
4109
- [attr.aria-label]="textFor('select')"
4110
- [attr.tabindex]="tabindex"
4111
- [attr.aria-expanded]="hasFileList"
4112
- [attr.aria-controls]="hasFileList ? fileListId : undefined"
4113
- >
4114
- {{textFor('select')}}
4115
- </button>
4116
- <input kendoFileSelect #fileSelectInput
4117
- [dir]="direction"
4118
- [accept]="accept"
4119
- [restrictions]="restrictions"
4120
- [multiple]="multiple"
4121
- [disabled]="disabled"
4122
- [required]="isControlRequired" />
4123
- </div>
4124
- <kendo-upload-status-total *ngIf="showTotalStatus"
4125
- class="k-upload-status"
4126
- [fileList]="fileList">
4118
+ [restrictions]="restrictions"
4119
+ [multiple]="multiple"
4120
+ [disabled]="disabled"
4121
+ >
4122
+ <div class="k-upload-button-wrap">
4123
+ <button
4124
+ kendoButton
4125
+ #fileSelectButton
4126
+ class="k-upload-button"
4127
+ type="button"
4128
+ (click)="fileSelectInput.click()"
4129
+ (focus)="onFileSelectButtonFocus()"
4130
+ [id]="focusableId"
4131
+ [attr.aria-label]="textFor('select')"
4132
+ [attr.tabindex]="tabindex"
4133
+ [attr.aria-expanded]="hasFileList"
4134
+ [attr.aria-controls]="hasFileList ? fileListId : undefined"
4135
+ >
4136
+ {{textFor('select')}}
4137
+ </button>
4138
+ <input kendoFileSelect #fileSelectInput
4139
+ [dir]="direction"
4140
+ [accept]="accept"
4141
+ [restrictions]="restrictions"
4142
+ [multiple]="multiple"
4143
+ [disabled]="disabled"
4144
+ [required]="isControlRequired" />
4145
+ </div>
4146
+ @if (showTotalStatus) {
4147
+ <kendo-upload-status-total
4148
+ class="k-upload-status"
4149
+ [fileList]="fileList">
4127
4150
  </kendo-upload-status-total>
4128
- <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4151
+ }
4152
+ <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4129
4153
  </div>
4130
- <ul kendo-upload-file-list *ngIf="hasFileList"
4154
+ @if (hasFileList) {
4155
+ <ul kendo-upload-file-list
4131
4156
  class="k-upload-files k-reset"
4132
4157
  [disabled]="disabled"
4133
4158
  [fileList]="fileList.files"
4134
4159
  [fileTemplate]="fileTemplate"
4135
4160
  [fileInfoTemplate]="fileInfoTemplate"
4136
4161
  [id]="fileListId">
4137
- </ul>
4138
- <kendo-upload-action-buttons
4139
- *ngIf="showActionButtons"
4162
+ </ul>
4163
+ }
4164
+ @if (showActionButtons) {
4165
+ <kendo-upload-action-buttons
4140
4166
  [disabled]="disabled"
4141
4167
  [actionsLayout]="actionsLayout">
4142
- </kendo-upload-action-buttons>
4143
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoUploadLocalizedMessages],\n [kendoFileSelectLocalizedMessages],\n [kendoUploadDropZoneLocalizedMessages]\n " }, { kind: "directive", type: DropZoneInternalDirective, selector: "\n [kendoUploadInternalDropZone],\n [kendoFileSelectInternalDropZone]\n ", inputs: ["disabled", "multiple", "restrictions"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FileSelectDirective, selector: "[kendoFileSelect]", inputs: ["dir", "disabled", "multiple", "restrictions", "accept", "required"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UploadStatusTotalComponent, selector: "kendo-upload-status-total", inputs: ["fileList"] }, { kind: "component", type: FileListComponent, selector: "[kendo-upload-file-list]", inputs: ["disabled", "fileList", "fileTemplate", "fileInfoTemplate"] }, { kind: "component", type: UploadActionButtonsComponent, selector: "kendo-upload-action-buttons", inputs: ["disabled", "actionsLayout"] }] });
4168
+ </kendo-upload-action-buttons>
4169
+ }
4170
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoUploadLocalizedMessages],\n [kendoFileSelectLocalizedMessages],\n [kendoUploadDropZoneLocalizedMessages]\n " }, { kind: "directive", type: DropZoneInternalDirective, selector: "\n [kendoUploadInternalDropZone],\n [kendoFileSelectInternalDropZone]\n ", inputs: ["disabled", "multiple", "restrictions"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FileSelectDirective, selector: "[kendoFileSelect]", inputs: ["dir", "disabled", "multiple", "restrictions", "accept", "required"] }, { kind: "component", type: UploadStatusTotalComponent, selector: "kendo-upload-status-total", inputs: ["fileList"] }, { kind: "component", type: FileListComponent, selector: "[kendo-upload-file-list]", inputs: ["disabled", "fileList", "fileTemplate", "fileInfoTemplate"] }, { kind: "component", type: UploadActionButtonsComponent, selector: "kendo-upload-action-buttons", inputs: ["disabled", "actionsLayout"] }] });
4144
4171
  }
4145
4172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UploadComponent, decorators: [{
4146
4173
  type: Component,
@@ -4164,118 +4191,123 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4164
4191
  selector: 'kendo-upload',
4165
4192
  template: `
4166
4193
  <ng-container kendoUploadLocalizedMessages
4167
- i18n-cancel="kendo.upload.cancel|The text for the Cancel button"
4168
- cancel="Cancel"
4169
-
4170
- i18n-clearSelectedFiles="kendo.upload.clearSelectedFiles|The text for the Clear button"
4171
- clearSelectedFiles="Clear"
4172
-
4173
- i18n-dropFilesHere="kendo.upload.dropFilesHere|The drop zone hint"
4174
- dropFilesHere="Drop files here to upload"
4175
-
4176
- i18n-filesBatchStatus="kendo.upload.filesBatchStatus|The status message for a batch of files"
4177
- filesBatchStatus="files"
4178
-
4179
- i18n-filesBatchStatusFailed="kendo.upload.filesBatchStatusFailed|The status message for a batch of files after failed upload"
4180
- filesBatchStatusFailed="files failed to upload."
4181
-
4182
- i18n-filesBatchStatusUploaded="kendo.upload.filesBatchStatusUploaded|The status message for a batch of files after successful upload"
4183
- filesBatchStatusUploaded="files successfully uploaded."
4184
-
4185
- i18n-fileStatusFailed="kendo.upload.fileStatusFailed|The file status message after failed upload"
4186
- fileStatusFailed="File failed to upload."
4187
-
4188
- i18n-fileStatusUploaded="kendo.upload.fileStatusUploaded|The file status message after successful upload"
4189
- fileStatusUploaded="File successfully uploaded."
4190
-
4191
- i18n-headerStatusPaused="kendo.upload.headerStatusPaused|The header status message when the file upload is paused"
4192
- headerStatusPaused="Paused"
4193
-
4194
- i18n-headerStatusUploaded="kendo.upload.headerStatusUploaded|The header status message after file upload completion"
4195
- headerStatusUploaded="Done"
4196
-
4197
- i18n-headerStatusUploading="kendo.upload.headerStatusUploading|The header status message during file upload"
4198
- headerStatusUploading="Uploading..."
4199
-
4200
- i18n-invalidFileExtension="kendo.upload.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4201
- invalidFileExtension="File type not allowed."
4202
-
4203
- i18n-invalidMaxFileSize="kendo.upload.invalidMaxFileSize|The text for the invalid max file size restriction message"
4204
- invalidMaxFileSize="File size too large."
4205
-
4206
- i18n-invalidMinFileSize="kendo.upload.invalidMinFileSize|The text for the invalid min file size restriction message"
4207
- invalidMinFileSize="File size too small."
4208
-
4209
- i18n-pause="kendo.upload.pause|The text for the Pause button"
4210
- pause="Pause"
4211
-
4212
- i18n-remove="kendo.upload.remove|The text for the Remove button"
4213
- remove="Remove"
4214
-
4215
- i18n-resume="kendo.upload.resume|The text for the Resume button"
4216
- resume="Resume"
4217
-
4218
- i18n-retry="kendo.upload.retry|The text for the Retry button"
4219
- retry="Retry"
4220
-
4221
- i18n-select="kendo.upload.select|The text for the Select button"
4222
- select="Select files..."
4223
-
4224
- i18n-uploadSelectedFiles="kendo.upload.uploadSelectedFiles|The text for the Upload files button"
4225
- uploadSelectedFiles="Upload"
4226
- >
4194
+ i18n-cancel="kendo.upload.cancel|The text for the Cancel button"
4195
+ cancel="Cancel"
4196
+
4197
+ i18n-clearSelectedFiles="kendo.upload.clearSelectedFiles|The text for the Clear button"
4198
+ clearSelectedFiles="Clear"
4199
+
4200
+ i18n-dropFilesHere="kendo.upload.dropFilesHere|The drop zone hint"
4201
+ dropFilesHere="Drop files here to upload"
4202
+
4203
+ i18n-filesBatchStatus="kendo.upload.filesBatchStatus|The status message for a batch of files"
4204
+ filesBatchStatus="files"
4205
+
4206
+ i18n-filesBatchStatusFailed="kendo.upload.filesBatchStatusFailed|The status message for a batch of files after failed upload"
4207
+ filesBatchStatusFailed="files failed to upload."
4208
+
4209
+ i18n-filesBatchStatusUploaded="kendo.upload.filesBatchStatusUploaded|The status message for a batch of files after successful upload"
4210
+ filesBatchStatusUploaded="files successfully uploaded."
4211
+
4212
+ i18n-fileStatusFailed="kendo.upload.fileStatusFailed|The file status message after failed upload"
4213
+ fileStatusFailed="File failed to upload."
4214
+
4215
+ i18n-fileStatusUploaded="kendo.upload.fileStatusUploaded|The file status message after successful upload"
4216
+ fileStatusUploaded="File successfully uploaded."
4217
+
4218
+ i18n-headerStatusPaused="kendo.upload.headerStatusPaused|The header status message when the file upload is paused"
4219
+ headerStatusPaused="Paused"
4220
+
4221
+ i18n-headerStatusUploaded="kendo.upload.headerStatusUploaded|The header status message after file upload completion"
4222
+ headerStatusUploaded="Done"
4223
+
4224
+ i18n-headerStatusUploading="kendo.upload.headerStatusUploading|The header status message during file upload"
4225
+ headerStatusUploading="Uploading..."
4226
+
4227
+ i18n-invalidFileExtension="kendo.upload.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4228
+ invalidFileExtension="File type not allowed."
4229
+
4230
+ i18n-invalidMaxFileSize="kendo.upload.invalidMaxFileSize|The text for the invalid max file size restriction message"
4231
+ invalidMaxFileSize="File size too large."
4232
+
4233
+ i18n-invalidMinFileSize="kendo.upload.invalidMinFileSize|The text for the invalid min file size restriction message"
4234
+ invalidMinFileSize="File size too small."
4235
+
4236
+ i18n-pause="kendo.upload.pause|The text for the Pause button"
4237
+ pause="Pause"
4238
+
4239
+ i18n-remove="kendo.upload.remove|The text for the Remove button"
4240
+ remove="Remove"
4241
+
4242
+ i18n-resume="kendo.upload.resume|The text for the Resume button"
4243
+ resume="Resume"
4244
+
4245
+ i18n-retry="kendo.upload.retry|The text for the Retry button"
4246
+ retry="Retry"
4247
+
4248
+ i18n-select="kendo.upload.select|The text for the Select button"
4249
+ select="Select files..."
4250
+
4251
+ i18n-uploadSelectedFiles="kendo.upload.uploadSelectedFiles|The text for the Upload files button"
4252
+ uploadSelectedFiles="Upload"
4253
+ >
4227
4254
  </ng-container>
4228
4255
  <div kendoUploadInternalDropZone
4229
- [restrictions]="restrictions"
4230
- [multiple]="multiple"
4231
- [disabled]="disabled"
4232
- >
4233
- <div class="k-upload-button-wrap">
4234
- <button
4235
- kendoButton
4236
- #fileSelectButton
4237
- class="k-upload-button"
4238
- type="button"
4239
- (click)="fileSelectInput.click()"
4240
- (focus)="onFileSelectButtonFocus()"
4241
- [id]="focusableId"
4242
- [attr.aria-label]="textFor('select')"
4243
- [attr.tabindex]="tabindex"
4244
- [attr.aria-expanded]="hasFileList"
4245
- [attr.aria-controls]="hasFileList ? fileListId : undefined"
4246
- >
4247
- {{textFor('select')}}
4248
- </button>
4249
- <input kendoFileSelect #fileSelectInput
4250
- [dir]="direction"
4251
- [accept]="accept"
4252
- [restrictions]="restrictions"
4253
- [multiple]="multiple"
4254
- [disabled]="disabled"
4255
- [required]="isControlRequired" />
4256
- </div>
4257
- <kendo-upload-status-total *ngIf="showTotalStatus"
4258
- class="k-upload-status"
4259
- [fileList]="fileList">
4256
+ [restrictions]="restrictions"
4257
+ [multiple]="multiple"
4258
+ [disabled]="disabled"
4259
+ >
4260
+ <div class="k-upload-button-wrap">
4261
+ <button
4262
+ kendoButton
4263
+ #fileSelectButton
4264
+ class="k-upload-button"
4265
+ type="button"
4266
+ (click)="fileSelectInput.click()"
4267
+ (focus)="onFileSelectButtonFocus()"
4268
+ [id]="focusableId"
4269
+ [attr.aria-label]="textFor('select')"
4270
+ [attr.tabindex]="tabindex"
4271
+ [attr.aria-expanded]="hasFileList"
4272
+ [attr.aria-controls]="hasFileList ? fileListId : undefined"
4273
+ >
4274
+ {{textFor('select')}}
4275
+ </button>
4276
+ <input kendoFileSelect #fileSelectInput
4277
+ [dir]="direction"
4278
+ [accept]="accept"
4279
+ [restrictions]="restrictions"
4280
+ [multiple]="multiple"
4281
+ [disabled]="disabled"
4282
+ [required]="isControlRequired" />
4283
+ </div>
4284
+ @if (showTotalStatus) {
4285
+ <kendo-upload-status-total
4286
+ class="k-upload-status"
4287
+ [fileList]="fileList">
4260
4288
  </kendo-upload-status-total>
4261
- <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4289
+ }
4290
+ <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4262
4291
  </div>
4263
- <ul kendo-upload-file-list *ngIf="hasFileList"
4292
+ @if (hasFileList) {
4293
+ <ul kendo-upload-file-list
4264
4294
  class="k-upload-files k-reset"
4265
4295
  [disabled]="disabled"
4266
4296
  [fileList]="fileList.files"
4267
4297
  [fileTemplate]="fileTemplate"
4268
4298
  [fileInfoTemplate]="fileInfoTemplate"
4269
4299
  [id]="fileListId">
4270
- </ul>
4271
- <kendo-upload-action-buttons
4272
- *ngIf="showActionButtons"
4300
+ </ul>
4301
+ }
4302
+ @if (showActionButtons) {
4303
+ <kendo-upload-action-buttons
4273
4304
  [disabled]="disabled"
4274
4305
  [actionsLayout]="actionsLayout">
4275
- </kendo-upload-action-buttons>
4306
+ </kendo-upload-action-buttons>
4307
+ }
4276
4308
  `,
4277
4309
  standalone: true,
4278
- imports: [LocalizedMessagesDirective, DropZoneInternalDirective, ButtonComponent, FileSelectDirective, NgIf, UploadStatusTotalComponent, FileListComponent, UploadActionButtonsComponent]
4310
+ imports: [LocalizedMessagesDirective, DropZoneInternalDirective, ButtonComponent, FileSelectDirective, UploadStatusTotalComponent, FileListComponent, UploadActionButtonsComponent]
4279
4311
  }]
4280
4312
  }], ctorParameters: () => [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Injector }], propDecorators: { autoUpload: [{
4281
4313
  type: Input
@@ -4845,7 +4877,7 @@ class FileSelectComponent extends UploadFileSelectBase {
4845
4877
  this.uploadService.component = 'FileSelect';
4846
4878
  }
4847
4879
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileSelectComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }, { token: DropZoneService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
4848
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FileSelectComponent, isStandalone: true, selector: "kendo-fileselect", inputs: { name: "name" }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.dir": "this.dir" } }, providers: [
4880
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileSelectComponent, isStandalone: true, selector: "kendo-fileselect", inputs: { name: "name" }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.dir": "this.dir" } }, providers: [
4849
4881
  LocalizationService,
4850
4882
  NavigationService,
4851
4883
  UploadService,
@@ -4861,67 +4893,68 @@ class FileSelectComponent extends UploadFileSelectBase {
4861
4893
  }
4862
4894
  ], viewQueries: [{ propertyName: "fileSelectInput", first: true, predicate: ["fileSelectInput"], descendants: true, static: true }], exportAs: ["kendoFileSelect"], usesInheritance: true, ngImport: i0, template: `
4863
4895
  <ng-container kendoFileSelectLocalizedMessages
4864
- i18n-dropFilesHere="kendo.fileselect.dropFilesHere|The drop zone hint"
4865
- dropFilesHere="Drop files here to select"
4866
-
4867
- i18n-invalidFileExtension="kendo.fileselect.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4868
- invalidFileExtension="File type not allowed."
4869
-
4870
- i18n-invalidMaxFileSize="kendo.fileselect.invalidMaxFileSize|The text for the invalid max file size restriction message"
4871
- invalidMaxFileSize="File size too large."
4872
-
4873
- i18n-invalidMinFileSize="kendo.fileselect.invalidMinFileSize|The text for the invalid min file size restriction message"
4874
- invalidMinFileSize="File size too small."
4875
-
4876
- i18n-remove="kendo.fileselect.remove|The text for the Remove button"
4877
- remove="Remove"
4878
-
4879
- i18n-select="kendo.fileselect.select|The text for the Select button"
4880
- select="Select files..."
4881
- >
4896
+ i18n-dropFilesHere="kendo.fileselect.dropFilesHere|The drop zone hint"
4897
+ dropFilesHere="Drop files here to select"
4898
+
4899
+ i18n-invalidFileExtension="kendo.fileselect.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4900
+ invalidFileExtension="File type not allowed."
4901
+
4902
+ i18n-invalidMaxFileSize="kendo.fileselect.invalidMaxFileSize|The text for the invalid max file size restriction message"
4903
+ invalidMaxFileSize="File size too large."
4904
+
4905
+ i18n-invalidMinFileSize="kendo.fileselect.invalidMinFileSize|The text for the invalid min file size restriction message"
4906
+ invalidMinFileSize="File size too small."
4907
+
4908
+ i18n-remove="kendo.fileselect.remove|The text for the Remove button"
4909
+ remove="Remove"
4910
+
4911
+ i18n-select="kendo.fileselect.select|The text for the Select button"
4912
+ select="Select files..."
4913
+ >
4882
4914
  </ng-container>
4883
4915
  <div kendoFileSelectInternalDropZone
4884
- [restrictions]="restrictions"
4885
- [multiple]="multiple"
4886
- [disabled]="disabled">
4887
- <div class="k-upload-button-wrap">
4916
+ [restrictions]="restrictions"
4917
+ [multiple]="multiple"
4918
+ [disabled]="disabled">
4919
+ <div class="k-upload-button-wrap">
4888
4920
  <button
4889
- kendoButton
4890
- #fileSelectButton
4891
- class="k-upload-button"
4892
- type="button"
4893
- role="button"
4894
- (click)="fileSelectInput.click()"
4895
- (focus)="onFileSelectButtonFocus()"
4896
- [id]="focusableId"
4897
- [attr.aria-label]="textFor('select')"
4898
- [attr.tabindex]="tabindex"
4899
- [attr.aria-expanded]="hasFileList"
4900
- [attr.aria-controls]="hasFileList ? fileListId : undefined"
4901
- >
4902
- {{textFor('select')}}
4921
+ kendoButton
4922
+ #fileSelectButton
4923
+ class="k-upload-button"
4924
+ type="button"
4925
+ role="button"
4926
+ (click)="fileSelectInput.click()"
4927
+ (focus)="onFileSelectButtonFocus()"
4928
+ [id]="focusableId"
4929
+ [attr.aria-label]="textFor('select')"
4930
+ [attr.tabindex]="tabindex"
4931
+ [attr.aria-expanded]="hasFileList"
4932
+ [attr.aria-controls]="hasFileList ? fileListId : undefined"
4933
+ >
4934
+ {{textFor('select')}}
4903
4935
  </button>
4904
4936
  <input kendoFileSelect #fileSelectInput
4905
- [dir]="direction"
4906
- [accept]="accept"
4907
- [restrictions]="restrictions"
4908
- [multiple]="multiple"
4909
- [disabled]="disabled"
4910
- [required]="isControlRequired"
4911
- />
4912
- </div>
4913
- <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4937
+ [dir]="direction"
4938
+ [accept]="accept"
4939
+ [restrictions]="restrictions"
4940
+ [multiple]="multiple"
4941
+ [disabled]="disabled"
4942
+ [required]="isControlRequired"
4943
+ />
4944
+ </div>
4945
+ <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4914
4946
  </div>
4915
- <ul kendo-upload-file-list
4947
+ @if (hasFileList) {
4948
+ <ul kendo-upload-file-list
4916
4949
  class="k-upload-files k-reset"
4917
- *ngIf="hasFileList"
4918
4950
  [disabled]="disabled"
4919
4951
  [fileList]="fileList.files"
4920
4952
  [fileTemplate]="fileTemplate"
4921
4953
  [fileInfoTemplate]="fileInfoTemplate"
4922
4954
  [id]="fileListId">
4923
- </ul>
4924
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoUploadLocalizedMessages],\n [kendoFileSelectLocalizedMessages],\n [kendoUploadDropZoneLocalizedMessages]\n " }, { kind: "directive", type: DropZoneInternalDirective, selector: "\n [kendoUploadInternalDropZone],\n [kendoFileSelectInternalDropZone]\n ", inputs: ["disabled", "multiple", "restrictions"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FileSelectDirective, selector: "[kendoFileSelect]", inputs: ["dir", "disabled", "multiple", "restrictions", "accept", "required"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FileListComponent, selector: "[kendo-upload-file-list]", inputs: ["disabled", "fileList", "fileTemplate", "fileInfoTemplate"] }] });
4955
+ </ul>
4956
+ }
4957
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoUploadLocalizedMessages],\n [kendoFileSelectLocalizedMessages],\n [kendoUploadDropZoneLocalizedMessages]\n " }, { kind: "directive", type: DropZoneInternalDirective, selector: "\n [kendoUploadInternalDropZone],\n [kendoFileSelectInternalDropZone]\n ", inputs: ["disabled", "multiple", "restrictions"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FileSelectDirective, selector: "[kendoFileSelect]", inputs: ["dir", "disabled", "multiple", "restrictions", "accept", "required"] }, { kind: "component", type: FileListComponent, selector: "[kendo-upload-file-list]", inputs: ["disabled", "fileList", "fileTemplate", "fileInfoTemplate"] }] });
4925
4958
  }
4926
4959
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileSelectComponent, decorators: [{
4927
4960
  type: Component,
@@ -4945,69 +4978,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4945
4978
  selector: 'kendo-fileselect',
4946
4979
  template: `
4947
4980
  <ng-container kendoFileSelectLocalizedMessages
4948
- i18n-dropFilesHere="kendo.fileselect.dropFilesHere|The drop zone hint"
4949
- dropFilesHere="Drop files here to select"
4950
-
4951
- i18n-invalidFileExtension="kendo.fileselect.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4952
- invalidFileExtension="File type not allowed."
4953
-
4954
- i18n-invalidMaxFileSize="kendo.fileselect.invalidMaxFileSize|The text for the invalid max file size restriction message"
4955
- invalidMaxFileSize="File size too large."
4956
-
4957
- i18n-invalidMinFileSize="kendo.fileselect.invalidMinFileSize|The text for the invalid min file size restriction message"
4958
- invalidMinFileSize="File size too small."
4959
-
4960
- i18n-remove="kendo.fileselect.remove|The text for the Remove button"
4961
- remove="Remove"
4962
-
4963
- i18n-select="kendo.fileselect.select|The text for the Select button"
4964
- select="Select files..."
4965
- >
4981
+ i18n-dropFilesHere="kendo.fileselect.dropFilesHere|The drop zone hint"
4982
+ dropFilesHere="Drop files here to select"
4983
+
4984
+ i18n-invalidFileExtension="kendo.fileselect.invalidFileExtension|The text for the invalid allowed extensions restriction message"
4985
+ invalidFileExtension="File type not allowed."
4986
+
4987
+ i18n-invalidMaxFileSize="kendo.fileselect.invalidMaxFileSize|The text for the invalid max file size restriction message"
4988
+ invalidMaxFileSize="File size too large."
4989
+
4990
+ i18n-invalidMinFileSize="kendo.fileselect.invalidMinFileSize|The text for the invalid min file size restriction message"
4991
+ invalidMinFileSize="File size too small."
4992
+
4993
+ i18n-remove="kendo.fileselect.remove|The text for the Remove button"
4994
+ remove="Remove"
4995
+
4996
+ i18n-select="kendo.fileselect.select|The text for the Select button"
4997
+ select="Select files..."
4998
+ >
4966
4999
  </ng-container>
4967
5000
  <div kendoFileSelectInternalDropZone
4968
- [restrictions]="restrictions"
4969
- [multiple]="multiple"
4970
- [disabled]="disabled">
4971
- <div class="k-upload-button-wrap">
5001
+ [restrictions]="restrictions"
5002
+ [multiple]="multiple"
5003
+ [disabled]="disabled">
5004
+ <div class="k-upload-button-wrap">
4972
5005
  <button
4973
- kendoButton
4974
- #fileSelectButton
4975
- class="k-upload-button"
4976
- type="button"
4977
- role="button"
4978
- (click)="fileSelectInput.click()"
4979
- (focus)="onFileSelectButtonFocus()"
4980
- [id]="focusableId"
4981
- [attr.aria-label]="textFor('select')"
4982
- [attr.tabindex]="tabindex"
4983
- [attr.aria-expanded]="hasFileList"
4984
- [attr.aria-controls]="hasFileList ? fileListId : undefined"
4985
- >
4986
- {{textFor('select')}}
5006
+ kendoButton
5007
+ #fileSelectButton
5008
+ class="k-upload-button"
5009
+ type="button"
5010
+ role="button"
5011
+ (click)="fileSelectInput.click()"
5012
+ (focus)="onFileSelectButtonFocus()"
5013
+ [id]="focusableId"
5014
+ [attr.aria-label]="textFor('select')"
5015
+ [attr.tabindex]="tabindex"
5016
+ [attr.aria-expanded]="hasFileList"
5017
+ [attr.aria-controls]="hasFileList ? fileListId : undefined"
5018
+ >
5019
+ {{textFor('select')}}
4987
5020
  </button>
4988
5021
  <input kendoFileSelect #fileSelectInput
4989
- [dir]="direction"
4990
- [accept]="accept"
4991
- [restrictions]="restrictions"
4992
- [multiple]="multiple"
4993
- [disabled]="disabled"
4994
- [required]="isControlRequired"
4995
- />
5022
+ [dir]="direction"
5023
+ [accept]="accept"
5024
+ [restrictions]="restrictions"
5025
+ [multiple]="multiple"
5026
+ [disabled]="disabled"
5027
+ [required]="isControlRequired"
5028
+ />
5029
+ </div>
5030
+ <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4996
5031
  </div>
4997
- <div class="k-dropzone-hint">{{textFor('dropFilesHere')}}</div>
4998
- </div>
4999
- <ul kendo-upload-file-list
5032
+ @if (hasFileList) {
5033
+ <ul kendo-upload-file-list
5000
5034
  class="k-upload-files k-reset"
5001
- *ngIf="hasFileList"
5002
5035
  [disabled]="disabled"
5003
5036
  [fileList]="fileList.files"
5004
5037
  [fileTemplate]="fileTemplate"
5005
5038
  [fileInfoTemplate]="fileInfoTemplate"
5006
5039
  [id]="fileListId">
5007
- </ul>
5008
- `,
5040
+ </ul>
5041
+ }
5042
+ `,
5009
5043
  standalone: true,
5010
- imports: [LocalizedMessagesDirective, DropZoneInternalDirective, ButtonComponent, FileSelectDirective, NgIf, FileListComponent]
5044
+ imports: [LocalizedMessagesDirective, DropZoneInternalDirective, ButtonComponent, FileSelectDirective, FileListComponent]
5011
5045
  }]
5012
5046
  }], ctorParameters: () => [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Injector }], propDecorators: { fileSelectInput: [{
5013
5047
  type: ViewChild,