@clr/angular 18.0.0-beta.2 → 18.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/fesm2022/clr-angular-accordion.mjs +1 -1
  2. package/fesm2022/clr-angular-accordion.mjs.map +1 -1
  3. package/fesm2022/clr-angular-button.mjs +5 -5
  4. package/fesm2022/clr-angular-button.mjs.map +1 -1
  5. package/fesm2022/clr-angular-data-datagrid.mjs +10 -10
  6. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -1
  7. package/fesm2022/clr-angular-data.mjs +11 -9102
  8. package/fesm2022/clr-angular-data.mjs.map +1 -1
  9. package/fesm2022/clr-angular-emphasis.mjs +12 -778
  10. package/fesm2022/clr-angular-emphasis.mjs.map +1 -1
  11. package/fesm2022/clr-angular-forms-combobox.mjs +4 -4
  12. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -1
  13. package/fesm2022/clr-angular-forms-common.mjs +8 -6
  14. package/fesm2022/clr-angular-forms-common.mjs.map +1 -1
  15. package/fesm2022/clr-angular-forms-datepicker.mjs +5 -5
  16. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -1
  17. package/fesm2022/clr-angular-forms-file-input.mjs +8 -6
  18. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -1
  19. package/fesm2022/clr-angular-forms.mjs +68 -8460
  20. package/fesm2022/clr-angular-forms.mjs.map +1 -1
  21. package/fesm2022/clr-angular-layout-tabs.mjs +1 -1
  22. package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -1
  23. package/fesm2022/clr-angular-layout.mjs +15 -2057
  24. package/fesm2022/clr-angular-layout.mjs.map +1 -1
  25. package/fesm2022/clr-angular-popover-common.mjs +1 -1
  26. package/fesm2022/clr-angular-popover-common.mjs.map +1 -1
  27. package/fesm2022/clr-angular-popover-signpost.mjs +4 -4
  28. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -1
  29. package/fesm2022/clr-angular-popover-tooltip.mjs +4 -4
  30. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -1
  31. package/fesm2022/clr-angular-popover.mjs +12 -2326
  32. package/fesm2022/clr-angular-popover.mjs.map +1 -1
  33. package/fesm2022/clr-angular-stepper.mjs +1 -1
  34. package/fesm2022/clr-angular-stepper.mjs.map +1 -1
  35. package/fesm2022/clr-angular-utils.mjs +4 -439
  36. package/fesm2022/clr-angular-utils.mjs.map +1 -1
  37. package/fesm2022/clr-angular.mjs +94 -38683
  38. package/fesm2022/clr-angular.mjs.map +1 -1
  39. package/package.json +2 -2
  40. package/types/clr-angular-accordion.d.ts +1 -1
  41. package/types/clr-angular-button.d.ts +1 -1
  42. package/types/clr-angular-data-datagrid.d.ts +23 -23
  43. package/types/clr-angular-data.d.ts +4 -2126
  44. package/types/clr-angular-emphasis.d.ts +4 -220
  45. package/types/clr-angular-forms-combobox.d.ts +1 -1
  46. package/types/clr-angular-forms-datepicker.d.ts +1 -1
  47. package/types/clr-angular-forms.d.ts +26 -2078
  48. package/types/clr-angular-layout-tabs.d.ts +1 -1
  49. package/types/clr-angular-layout.d.ts +6 -463
  50. package/types/clr-angular-popover-common.d.ts +1 -1
  51. package/types/clr-angular-popover-signpost.d.ts +1 -1
  52. package/types/clr-angular-popover-tooltip.d.ts +1 -1
  53. package/types/clr-angular-popover.d.ts +7 -593
  54. package/types/clr-angular-stepper.d.ts +1 -1
  55. package/types/clr-angular-utils.d.ts +5 -162
  56. package/types/clr-angular.d.ts +22 -10270
@@ -68,10 +68,10 @@ class ClrFileSuccess {
68
68
  this.context = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileSuccess, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileSuccess, isStandalone: false, selector: "clr-file-success", host: { properties: { "style.display": "context.success ? \"flex\" : \"none\"", "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileSuccess, isStandalone: false, selector: "clr-file-success", host: { properties: { "style.display": "context.success ? \"flex\" : \"none\"", "class.clr-subtext-wrapper": "true", "class.success": "true" } }, ngImport: i0, template: `
72
72
  @if (context.success) {
73
73
  <cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
74
- <span class="clr-subtext success">
74
+ <span class="clr-subtext">
75
75
  <ng-content></ng-content>
76
76
  </span>
77
77
  }
@@ -85,7 +85,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
85
85
  template: `
86
86
  @if (context.success) {
87
87
  <cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
88
- <span class="clr-subtext success">
88
+ <span class="clr-subtext">
89
89
  <ng-content></ng-content>
90
90
  </span>
91
91
  }
@@ -93,15 +93,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
93
93
  host: {
94
94
  '[style.display]': 'context.success ? "flex" : "none"',
95
95
  '[class.clr-subtext-wrapper]': 'true',
96
+ '[class.success]': 'true',
96
97
  },
97
98
  standalone: false,
98
99
  }]
99
100
  }] });
100
101
  class ClrFileError {
101
102
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileError, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileError, isStandalone: false, selector: "clr-file-error", host: { properties: { "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
103
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileError, isStandalone: false, selector: "clr-file-error", host: { properties: { "class.clr-subtext-wrapper": "true", "class.error": "true" } }, ngImport: i0, template: `
103
104
  <cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
104
- <span class="clr-subtext error">
105
+ <span class="clr-subtext">
105
106
  <ng-content></ng-content>
106
107
  </span>
107
108
  `, isInline: true, dependencies: [{ kind: "component", type: i1.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
@@ -113,12 +114,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
113
114
  // The host should have an `*ngIf` or `@if` that checks for the relevant error.
114
115
  template: `
115
116
  <cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
116
- <span class="clr-subtext error">
117
+ <span class="clr-subtext">
117
118
  <ng-content></ng-content>
118
119
  </span>
119
120
  `,
120
121
  host: {
121
122
  '[class.clr-subtext-wrapper]': 'true',
123
+ '[class.error]': 'true',
122
124
  },
123
125
  standalone: false,
124
126
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"clr-angular-forms-file-input.mjs","sources":["../../../projects/angular/forms/file-input/file-input.helpers.ts","../../../projects/angular/forms/file-input/file-messages.ts","../../../projects/angular/forms/file-input/file-messages-template.ts","../../../projects/angular/forms/file-input/file-list.ts","../../../projects/angular/forms/file-input/file-input-container.ts","../../../projects/angular/forms/file-input/file-input.ts","../../../projects/angular/forms/file-input/file-input-validator.ts","../../../projects/angular/forms/file-input/file-input-validator-errors.ts","../../../projects/angular/forms/file-input/file-input-value-accessor.ts","../../../projects/angular/forms/file-input/file-input.module.ts","../../../projects/angular/forms/file-input/index.ts","../../../projects/angular/forms/file-input/clr-angular-forms-file-input.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport function buildFileList(files: File[]) {\n const dataTransfer = new DataTransfer();\n\n for (const file of files) {\n dataTransfer.items.add(file);\n }\n\n return dataTransfer.files;\n}\n\nexport function selectFiles(fileInputElement: HTMLInputElement, files: File[] | FileList) {\n fileInputElement.files = files instanceof FileList ? files : buildFileList(files);\n fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n}\n\nexport function clearFiles(fileInputElement: HTMLInputElement) {\n fileInputElement.value = '';\n fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, inject, InjectionToken } from '@angular/core';\n\nimport { ClrFileMessagesTemplateContext } from './file-messages-template';\n\nexport const CLR_FILE_MESSAGES_TEMPLATE_CONTEXT = new InjectionToken<ClrFileMessagesTemplateContext>(\n 'ClrFileMessagesTemplateContext'\n);\n\n@Component({\n selector: 'clr-file-info',\n template: `\n <span class=\"clr-subtext\">\n <ng-content></ng-content>\n </span>\n `,\n host: {\n '[class.clr-subtext-wrapper]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileInfo {}\n\n@Component({\n selector: 'clr-file-success',\n // We check for success here so that consumers don't have to.\n template: `\n @if (context.success) {\n <cds-icon class=\"clr-validate-icon\" shape=\"success-standard\" status=\"success\" aria-hidden=\"true\"></cds-icon>\n <span class=\"clr-subtext success\">\n <ng-content></ng-content>\n </span>\n }\n `,\n host: {\n '[style.display]': 'context.success ? \"flex\" : \"none\"',\n '[class.clr-subtext-wrapper]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileSuccess {\n protected readonly context: ClrFileMessagesTemplateContext = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);\n}\n\n@Component({\n selector: 'clr-file-error',\n // The host should have an `*ngIf` or `@if` that checks for the relevant error.\n template: `\n <cds-icon class=\"clr-validate-icon\" shape=\"error-standard\" status=\"danger\" aria-hidden=\"true\"></cds-icon>\n <span class=\"clr-subtext error\">\n <ng-content></ng-content>\n </span>\n `,\n host: {\n '[class.clr-subtext-wrapper]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileError {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, inject, TemplateRef } from '@angular/core';\n\nimport { ClrFileAcceptError, ClrFileMaxFileSizeError, ClrFileMinFileSizeError } from './file-input-validator-errors';\n\nexport interface ClrSingleFileValidationErrors {\n accept?: ClrFileAcceptError;\n minFileSize?: ClrFileMinFileSizeError;\n maxFileSize?: ClrFileMaxFileSizeError;\n}\n\nexport interface ClrFileMessagesTemplateContext {\n $implicit: File;\n success: boolean;\n errors: ClrSingleFileValidationErrors;\n}\n\n@Directive({\n selector: 'ng-template[clr-file-messages]',\n standalone: false,\n})\nexport class ClrFileMessagesTemplate {\n readonly templateRef: TemplateRef<ClrFileMessagesTemplateContext> = inject(TemplateRef);\n\n static ngTemplateContextGuard(\n directive: ClrFileMessagesTemplate,\n context: unknown\n ): context is ClrFileMessagesTemplateContext {\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, inject, Injector } from '@angular/core';\nimport { NgControlService } from '@clr/angular/forms/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrFileInputContainer } from './file-input-container';\nimport { ClrFileListValidationErrors } from './file-input-validator-errors';\nimport { selectFiles } from './file-input.helpers';\nimport { CLR_FILE_MESSAGES_TEMPLATE_CONTEXT } from './file-messages';\nimport {\n ClrFileMessagesTemplate,\n ClrFileMessagesTemplateContext,\n ClrSingleFileValidationErrors,\n} from './file-messages-template';\n\n@Component({\n selector: 'clr-file-list',\n template: `\n @for (file of files; track file) {\n @if (createFileMessagesTemplateContext(file); as fileMessagesTemplateContext) {\n <div\n role=\"listitem\"\n class=\"clr-file-list-item\"\n [ngClass]=\"{\n 'clr-error': !fileMessagesTemplateContext.success,\n 'clr-success': fileMessagesTemplateContext.success,\n }\"\n >\n <div class=\"clr-file-label-and-status-icon\">\n <span class=\"label clr-file-label\">\n {{ file.name }}\n <button\n class=\"btn btn-sm btn-link-neutral btn-icon clr-file-clear-button\"\n [attr.aria-label]=\"getClearFileLabel(file.name)\"\n (click)=\"clearFile(file)\"\n >\n <cds-icon shape=\"times\"></cds-icon>\n </button>\n </span>\n </div>\n @if (fileMessagesTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"fileMessagesTemplate.templateRef\"\n [ngTemplateOutletContext]=\"fileMessagesTemplateContext\"\n [ngTemplateOutletInjector]=\"injectorCache.get(file)\"\n ></ng-container>\n }\n </div>\n }\n }\n `,\n host: {\n '[attr.role]': '\"list\"',\n '[class.clr-file-list]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileList {\n @ContentChild(ClrFileMessagesTemplate) protected readonly fileMessagesTemplate: ClrFileMessagesTemplate;\n\n protected injectorCache = new Map<File, Injector>();\n private contextCache = new Map<File, ClrFileMessagesTemplateContext>();\n\n private readonly injector = inject(Injector);\n private readonly commonStrings = inject(ClrCommonStringsService);\n private readonly ngControlService = inject(NgControlService, { optional: true });\n private readonly fileInputContainer = inject(ClrFileInputContainer, { optional: true });\n\n constructor() {\n if (!this.ngControlService || !this.fileInputContainer) {\n throw new Error('The clr-file-list component can only be used within a clr-file-input-container.');\n }\n }\n\n protected get files() {\n if (!this.fileInputContainer.fileInput) {\n return [];\n }\n\n const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;\n\n return Array.from(fileInputElement.files).sort((a, b) => a.name.localeCompare(b.name));\n }\n\n protected getClearFileLabel(filename: string) {\n return this.commonStrings.parse(this.commonStrings.keys.clearFile, {\n FILE: filename,\n });\n }\n\n protected clearFile(fileToRemove: File) {\n if (!this.fileInputContainer.fileInput) {\n return;\n }\n\n const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;\n const files = Array.from(fileInputElement.files);\n const newFiles = files.filter(file => file !== fileToRemove);\n\n selectFiles(fileInputElement, newFiles);\n this.fileInputContainer.focusBrowseButton();\n }\n\n protected createFileMessagesTemplateContext(file: File): ClrFileMessagesTemplateContext {\n const fileInputErrors: ClrFileListValidationErrors = this.ngControlService.controls[0].errors || {};\n\n const errors: ClrSingleFileValidationErrors = {\n accept: fileInputErrors.accept?.find(error => error.name === file.name),\n minFileSize: fileInputErrors.minFileSize?.find(error => error.name === file.name),\n maxFileSize: fileInputErrors.maxFileSize?.find(error => error.name === file.name),\n };\n\n const success = Object.values(errors).every(error => !error);\n\n const cached = this.contextCache.get(file);\n if (cached && cached.success === success && this.errorsEqual(cached.errors, errors)) {\n return cached;\n }\n\n // new context is made and old reference replaced\n const context: ClrFileMessagesTemplateContext = { $implicit: file, success, errors };\n this.contextCache.set(file, context);\n\n // new injector is made and old reference replaced\n const injector = this.createFileMessagesTemplateInjector(context);\n this.injectorCache.set(file, injector);\n\n return context;\n }\n\n private createFileMessagesTemplateInjector(fileMessagesTemplateContext: ClrFileMessagesTemplateContext) {\n return Injector.create({\n parent: this.injector,\n providers: [{ provide: CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, useValue: fileMessagesTemplateContext }],\n });\n }\n\n private errorsEqual(a: ClrSingleFileValidationErrors, b: ClrSingleFileValidationErrors): boolean {\n return a.accept === b.accept && a.minFileSize === b.minFileSize && a.maxFileSize === b.maxFileSize;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, ElementRef, forwardRef, inject, Input, ViewChild } from '@angular/core';\nimport {\n ClrAbstractContainer,\n ControlClassService,\n ControlIdService,\n NgControlService,\n} from '@clr/angular/forms/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrFileInput } from './file-input';\nimport { selectFiles } from './file-input.helpers';\nimport { ClrFileList } from './file-list';\nimport { ClrFileError, ClrFileSuccess } from './file-messages';\n\n@Component({\n selector: 'clr-file-input-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n @if (!label && addGrid()) {\n <label></label>\n }\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-file-input-wrapper\">\n <ng-content select=\"[clrFileInput]\"></ng-content>\n\n <!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->\n @if (fileList) {\n <input\n #fileListFileInput\n type=\"file\"\n class=\"clr-file-input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"addFilesToSelection(fileListFileInput.files)\"\n />\n }\n\n <button\n #browseButton\n type=\"button\"\n class=\"btn btn-sm clr-file-input-browse-button\"\n [attr.aria-describedby]=\"browseButtonDescribedBy\"\n [disabled]=\"disabled\"\n (click)=\"browse()\"\n >\n <cds-icon shape=\"folder-open\"></cds-icon>\n <span class=\"clr-file-input-browse-button-text\">{{ browseButtonText }}</span>\n </button>\n @if (!fileList && fileInput?.selection?.fileCount) {\n <button\n type=\"button\"\n class=\"btn btn-sm clr-file-input-clear-button\"\n [attr.aria-label]=\"fileInput?.selection?.clearFilesButtonLabel\"\n (click)=\"clearSelectedFiles()\"\n >\n <cds-icon shape=\"times\" status=\"neutral\"></cds-icon>\n </button>\n }\n </div>\n @if (showHelper) {\n <ng-content select=\"clr-control-helper\"></ng-content>\n }\n @if (showInvalid) {\n <ng-content select=\"clr-control-error\"></ng-content>\n }\n @if (showValid) {\n <ng-content select=\"clr-control-success\"></ng-content>\n }\n\n <!-- If this is present, this file input becomes an \"advanced\" file input. -->\n <ng-container>\n <div class=\"clr-file-list-break\"></div>\n <ng-content select=\"clr-file-list\"></ng-content>\n </ng-container>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [NgControlService, ControlIdService, ControlClassService],\n standalone: false,\n})\nexport class ClrFileInputContainer extends ClrAbstractContainer {\n @Input('clrButtonLabel') customButtonLabel: string;\n\n @ContentChild(forwardRef(() => ClrFileInput)) readonly fileInput: ClrFileInput;\n @ContentChild(forwardRef(() => ClrFileList)) protected readonly fileList: ClrFileList;\n\n @ViewChild('browseButton') private browseButtonElementRef: ElementRef<HTMLButtonElement>;\n @ViewChild('fileListFileInput') private fileListFileInputElementRef: ElementRef<HTMLInputElement>;\n\n // These are for the \"message present\" override properties\n @ContentChild(ClrFileSuccess) private readonly fileSuccessComponent: ClrFileSuccess;\n @ContentChild(ClrFileError) private readonly fileErrorComponent: ClrFileError;\n\n private readonly commonStrings = inject(ClrCommonStringsService);\n\n protected get accept() {\n return this.fileInput.elementRef.nativeElement.accept;\n }\n\n protected get multiple() {\n return this.fileInput.elementRef.nativeElement.multiple;\n }\n\n protected get disabled() {\n return this.fileInput.elementRef.nativeElement.disabled || (this.control && this.control.disabled);\n }\n\n protected get browseButtonText() {\n const selectionButtonLabel = this.fileList ? undefined : this.fileInput?.selection?.buttonLabel;\n\n return selectionButtonLabel || this.customButtonLabel || this.commonStrings.keys.browse;\n }\n\n protected get browseButtonDescribedBy() {\n return `${this.label?.forAttr} ${this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby')}`;\n }\n\n protected override get successMessagePresent() {\n return super.successMessagePresent || !!this.fileSuccessComponent;\n }\n\n protected override get errorMessagePresent() {\n return super.errorMessagePresent || !!this.fileErrorComponent;\n }\n\n focusBrowseButton() {\n this.browseButtonElementRef.nativeElement.focus();\n }\n\n protected browse() {\n const fileInputElementRef =\n this.fileList && this.multiple ? this.fileListFileInputElementRef : this.fileInput.elementRef;\n\n fileInputElementRef.nativeElement.click();\n }\n\n protected clearSelectedFiles() {\n this.fileInput.elementRef.nativeElement.value = '';\n this.fileInput.elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n\n this.focusBrowseButton();\n }\n\n protected addFilesToSelection(newFiles: FileList) {\n if (!newFiles.length) {\n return;\n }\n\n // start with new files\n const mergedFiles = [...newFiles];\n\n // add existing files if a new file doesn't have the same name\n for (const existingFile of this.fileInput.elementRef.nativeElement.files) {\n if (!mergedFiles.some(file => file.name === existingFile.name)) {\n mergedFiles.push(existingFile);\n }\n }\n\n // update file selection\n selectFiles(this.fileInput.elementRef.nativeElement, mergedFiles);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Injector,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { WrappedFormControl } from '@clr/angular/forms/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrFileInputContainer } from './file-input-container';\n\nexport interface ClrFileInputSelection {\n fileCount: number;\n buttonLabel: string;\n clearFilesButtonLabel: string;\n}\n\n@Directive({\n selector: 'input[type=\"file\"][clrFileInput]',\n host: {\n tabindex: '-1', // Remove the hidden file `input` element from the tab order because the browse `button` replaces it.\n 'aria-hidden': 'true', // Remove the hidden file `input` element from the accessibility tree because the browse `button` replaces it.\n '[class.clr-file-input]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileInput extends WrappedFormControl<ClrFileInputContainer> {\n selection: ClrFileInputSelection = undefined;\n\n constructor(\n injector: Injector,\n renderer: Renderer2,\n viewContainerRef: ViewContainerRef,\n readonly elementRef: ElementRef<HTMLInputElement>,\n @Self() @Optional() private readonly control: NgControl,\n private readonly commonStrings: ClrCommonStringsService\n ) {\n super(viewContainerRef, ClrFileInputContainer, injector, control, renderer, elementRef);\n }\n\n @HostBinding('disabled')\n protected get disabled() {\n return this.elementRef.nativeElement.disabled || (this.control && this.control.disabled);\n }\n\n @HostListener('change')\n private handleChange() {\n this.updateSelection();\n }\n\n private updateSelection() {\n const files = this.elementRef.nativeElement.files;\n let selectionButtonLabel: string;\n let clearFilesButtonLabel: string;\n\n if (files?.length === 1) {\n const filename = files[0].name;\n\n selectionButtonLabel = filename;\n\n clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFile, {\n FILE: filename,\n });\n } else if (files?.length > 1) {\n const fileCount = files.length.toString();\n\n selectionButtonLabel = this.commonStrings.parse(this.commonStrings.keys.fileCount, {\n COUNT: fileCount,\n });\n\n clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFiles, {\n COUNT: fileCount,\n });\n }\n\n this.selection = {\n fileCount: files.length,\n buttonLabel: selectionButtonLabel,\n clearFilesButtonLabel,\n };\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nimport { ClrFileListValidationErrors } from './file-input-validator-errors';\n\n@Directive({\n selector: 'input[type=\"file\"][clrFileInput]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ClrFileInputValidator, multi: true }],\n standalone: false,\n})\nexport class ClrFileInputValidator implements Validator {\n @Input('clrMinFileSize') minFileSize: number;\n @Input('clrMaxFileSize') maxFileSize: number;\n\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>) {}\n\n validate(control: AbstractControl<FileList>): ValidationErrors {\n const files = control.value;\n const fileInputElement = this.elementRef.nativeElement;\n\n const errors: ClrFileListValidationErrors = {};\n\n // required validation (native attribute)\n if (fileInputElement.required && files?.length === 0) {\n errors.required = true;\n }\n\n const accept = fileInputElement.accept ? fileInputElement.accept.split(',').map(type => type.trim()) : null;\n\n if (files?.length > 0 && (accept || this.minFileSize || this.maxFileSize)) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n\n // accept validation (native attribute)\n if (accept && accept.length) {\n if (!this.validateAccept(file, accept)) {\n errors.accept = errors.accept || [];\n errors.accept.push({\n name: file.name,\n accept,\n type: file.type || '',\n extension: this.getSuffixByDepth(file.name, 2), // last up to 2 parts for reporting\n });\n }\n }\n\n // min file validation (custom input)\n if (this.minFileSize && file.size < this.minFileSize) {\n errors.minFileSize = errors.minFileSize || [];\n errors.minFileSize.push({ name: file.name, minFileSize: this.minFileSize, actualFileSize: file.size });\n }\n\n // max file validation (custom input)\n if (this.maxFileSize && file.size > this.maxFileSize) {\n errors.maxFileSize = errors.maxFileSize || [];\n errors.maxFileSize.push({ name: file.name, maxFileSize: this.maxFileSize, actualFileSize: file.size });\n }\n }\n }\n\n return Object.keys(errors).length ? errors : null;\n }\n\n private getSuffixByDepth(filename: string, depth: number): string {\n const match = filename.toLowerCase().match(new RegExp(`(\\\\.[^.]+){1,${depth}}$`, 'i'));\n return match ? match[0] : '';\n }\n\n private validateAccept(file: File, acceptList: string[]): boolean {\n const name = file.name.toLowerCase();\n const type = (file.type || '').toLowerCase();\n\n for (const entryRaw of acceptList) {\n const entry = entryRaw.trim().toLowerCase();\n if (!entry) {\n continue;\n }\n\n // Extension check\n if (entry.startsWith('.')) {\n const depth = (entry.match(/\\./g) || []).length;\n if (this.getSuffixByDepth(name, depth) === entry) {\n return true;\n }\n continue;\n }\n\n // MIME check\n if (entry.endsWith('/*')) {\n const prefix = entry.slice(0, entry.length - 1); // keep trailing slash\n if (type.startsWith(prefix)) {\n return true;\n }\n } else if (entry.includes('/') && type === entry) {\n return true;\n }\n }\n\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrFileListValidationErrors {\n required?: boolean;\n accept?: ClrFileAcceptError[];\n minFileSize?: ClrFileMinFileSizeError[];\n maxFileSize?: ClrFileMaxFileSizeError[];\n}\n\nexport interface ClrFileAcceptError {\n /**\n * The name of the selected file.\n */\n name: string;\n\n /**\n * The file types that are accepted by the file input.\n */\n accept: string[];\n\n /**\n * The actual MIME type of the selected file.\n */\n type: string;\n\n /**\n * The actual extension of the selected file.\n */\n extension: string;\n}\n\nexport interface ClrFileMinFileSizeError {\n /**\n * The name of the selected file.\n */\n name: string;\n\n /**\n * The minimum file size that is accepted by the file input.\n */\n minFileSize: number;\n\n /**\n * The actual size of the selected file.\n */\n actualFileSize: number;\n}\n\nexport interface ClrFileMaxFileSizeError {\n /**\n * The name of the selected file.\n */\n name: string;\n\n /**\n * The maximum file size that is accepted by the file input.\n */\n maxFileSize: number;\n\n /**\n * The actual size of the selected file.\n */\n actualFileSize: number;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, HostListener } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { clearFiles, selectFiles } from './file-input.helpers';\n\n@Directive({\n selector: 'input[type=\"file\"][clrFileInput]',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ClrFileInputValueAccessor, multi: true }],\n standalone: false,\n})\nexport class ClrFileInputValueAccessor implements ControlValueAccessor {\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>) {}\n\n writeValue(value: FileList) {\n if (value !== undefined && value !== null && !(value instanceof FileList)) {\n throw new Error('The value of a file input control must be a FileList.');\n }\n\n if (value) {\n selectFiles(this.elementRef.nativeElement, value);\n } else if (this.elementRef.nativeElement.files.length) {\n clearFiles(this.elementRef.nativeElement);\n }\n }\n\n registerOnChange(fn: (value: FileList) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n @HostListener('change')\n private handleChange() {\n this.onTouched();\n this.onChange(this.elementRef.nativeElement.files);\n }\n\n private onChange = (_value: FileList) => {};\n\n private onTouched = () => {};\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ClrCommonFormsModule } from '@clr/angular/forms/common';\nimport { ClarityIcons, ClrIcon, errorStandardIcon, folderOpenIcon, successStandardIcon } from '@clr/angular/icon';\n\nimport { ClrFileInput } from './file-input';\nimport { ClrFileInputContainer } from './file-input-container';\nimport { ClrFileInputValidator } from './file-input-validator';\nimport { ClrFileInputValueAccessor } from './file-input-value-accessor';\nimport { ClrFileList } from './file-list';\nimport { ClrFileError, ClrFileInfo, ClrFileSuccess } from './file-messages';\nimport { ClrFileMessagesTemplate } from './file-messages-template';\n\n@NgModule({\n imports: [CommonModule, ClrIcon, ClrCommonFormsModule],\n declarations: [\n ClrFileInput,\n ClrFileInputContainer,\n ClrFileInputValidator,\n ClrFileInputValueAccessor,\n ClrFileList,\n ClrFileMessagesTemplate,\n ClrFileInfo,\n ClrFileSuccess,\n ClrFileError,\n ],\n exports: [\n ClrCommonFormsModule,\n ClrFileInput,\n ClrFileInputContainer,\n ClrFileInputValidator,\n ClrFileInputValueAccessor,\n ClrFileList,\n ClrFileMessagesTemplate,\n ClrFileInfo,\n ClrFileSuccess,\n ClrFileError,\n ],\n})\nexport class ClrFileInputModule {\n constructor() {\n ClarityIcons.addIcons(folderOpenIcon, successStandardIcon, errorStandardIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './file-input';\nexport * from './file-input-validator';\nexport * from './file-input-validator-errors';\nexport * from './file-input-value-accessor';\nexport * from './file-input-container';\nexport * from './file-list';\nexport * from './file-messages-template';\nexport * from './file-messages';\nexport * from './file-input.module';\nexport * from './file-input.helpers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"clr-angular-forms-file-input.mjs","sources":["../../../projects/angular/forms/file-input/file-input.helpers.ts","../../../projects/angular/forms/file-input/file-messages.ts","../../../projects/angular/forms/file-input/file-messages-template.ts","../../../projects/angular/forms/file-input/file-list.ts","../../../projects/angular/forms/file-input/file-input-container.ts","../../../projects/angular/forms/file-input/file-input.ts","../../../projects/angular/forms/file-input/file-input-validator.ts","../../../projects/angular/forms/file-input/file-input-validator-errors.ts","../../../projects/angular/forms/file-input/file-input-value-accessor.ts","../../../projects/angular/forms/file-input/file-input.module.ts","../../../projects/angular/forms/file-input/index.ts","../../../projects/angular/forms/file-input/clr-angular-forms-file-input.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport function buildFileList(files: File[]) {\n const dataTransfer = new DataTransfer();\n\n for (const file of files) {\n dataTransfer.items.add(file);\n }\n\n return dataTransfer.files;\n}\n\nexport function selectFiles(fileInputElement: HTMLInputElement, files: File[] | FileList) {\n fileInputElement.files = files instanceof FileList ? files : buildFileList(files);\n fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n}\n\nexport function clearFiles(fileInputElement: HTMLInputElement) {\n fileInputElement.value = '';\n fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, inject, InjectionToken } from '@angular/core';\n\nimport { ClrFileMessagesTemplateContext } from './file-messages-template';\n\nexport const CLR_FILE_MESSAGES_TEMPLATE_CONTEXT = new InjectionToken<ClrFileMessagesTemplateContext>(\n 'ClrFileMessagesTemplateContext'\n);\n\n@Component({\n selector: 'clr-file-info',\n template: `\n <span class=\"clr-subtext\">\n <ng-content></ng-content>\n </span>\n `,\n host: {\n '[class.clr-subtext-wrapper]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileInfo {}\n\n@Component({\n selector: 'clr-file-success',\n // We check for success here so that consumers don't have to.\n template: `\n @if (context.success) {\n <cds-icon class=\"clr-validate-icon\" shape=\"success-standard\" status=\"success\" aria-hidden=\"true\"></cds-icon>\n <span class=\"clr-subtext\">\n <ng-content></ng-content>\n </span>\n }\n `,\n host: {\n '[style.display]': 'context.success ? \"flex\" : \"none\"',\n '[class.clr-subtext-wrapper]': 'true',\n '[class.success]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileSuccess {\n protected readonly context: ClrFileMessagesTemplateContext = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);\n}\n\n@Component({\n selector: 'clr-file-error',\n // The host should have an `*ngIf` or `@if` that checks for the relevant error.\n template: `\n <cds-icon class=\"clr-validate-icon\" shape=\"error-standard\" status=\"danger\" aria-hidden=\"true\"></cds-icon>\n <span class=\"clr-subtext\">\n <ng-content></ng-content>\n </span>\n `,\n host: {\n '[class.clr-subtext-wrapper]': 'true',\n '[class.error]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileError {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, inject, TemplateRef } from '@angular/core';\n\nimport { ClrFileAcceptError, ClrFileMaxFileSizeError, ClrFileMinFileSizeError } from './file-input-validator-errors';\n\nexport interface ClrSingleFileValidationErrors {\n accept?: ClrFileAcceptError;\n minFileSize?: ClrFileMinFileSizeError;\n maxFileSize?: ClrFileMaxFileSizeError;\n}\n\nexport interface ClrFileMessagesTemplateContext {\n $implicit: File;\n success: boolean;\n errors: ClrSingleFileValidationErrors;\n}\n\n@Directive({\n selector: 'ng-template[clr-file-messages]',\n standalone: false,\n})\nexport class ClrFileMessagesTemplate {\n readonly templateRef: TemplateRef<ClrFileMessagesTemplateContext> = inject(TemplateRef);\n\n static ngTemplateContextGuard(\n directive: ClrFileMessagesTemplate,\n context: unknown\n ): context is ClrFileMessagesTemplateContext {\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, inject, Injector } from '@angular/core';\nimport { NgControlService } from '@clr/angular/forms/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrFileInputContainer } from './file-input-container';\nimport { ClrFileListValidationErrors } from './file-input-validator-errors';\nimport { selectFiles } from './file-input.helpers';\nimport { CLR_FILE_MESSAGES_TEMPLATE_CONTEXT } from './file-messages';\nimport {\n ClrFileMessagesTemplate,\n ClrFileMessagesTemplateContext,\n ClrSingleFileValidationErrors,\n} from './file-messages-template';\n\n@Component({\n selector: 'clr-file-list',\n template: `\n @for (file of files; track file) {\n @if (createFileMessagesTemplateContext(file); as fileMessagesTemplateContext) {\n <div\n role=\"listitem\"\n class=\"clr-file-list-item\"\n [ngClass]=\"{\n 'clr-error': !fileMessagesTemplateContext.success,\n 'clr-success': fileMessagesTemplateContext.success,\n }\"\n >\n <div class=\"clr-file-label-and-status-icon\">\n <span class=\"label clr-file-label\">\n {{ file.name }}\n <button\n class=\"btn btn-sm btn-link-neutral btn-icon clr-file-clear-button\"\n [attr.aria-label]=\"getClearFileLabel(file.name)\"\n (click)=\"clearFile(file)\"\n >\n <cds-icon shape=\"times\"></cds-icon>\n </button>\n </span>\n </div>\n @if (fileMessagesTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"fileMessagesTemplate.templateRef\"\n [ngTemplateOutletContext]=\"fileMessagesTemplateContext\"\n [ngTemplateOutletInjector]=\"injectorCache.get(file)\"\n ></ng-container>\n }\n </div>\n }\n }\n `,\n host: {\n '[attr.role]': '\"list\"',\n '[class.clr-file-list]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileList {\n @ContentChild(ClrFileMessagesTemplate) protected readonly fileMessagesTemplate: ClrFileMessagesTemplate;\n\n protected injectorCache = new Map<File, Injector>();\n private contextCache = new Map<File, ClrFileMessagesTemplateContext>();\n\n private readonly injector = inject(Injector);\n private readonly commonStrings = inject(ClrCommonStringsService);\n private readonly ngControlService = inject(NgControlService, { optional: true });\n private readonly fileInputContainer = inject(ClrFileInputContainer, { optional: true });\n\n constructor() {\n if (!this.ngControlService || !this.fileInputContainer) {\n throw new Error('The clr-file-list component can only be used within a clr-file-input-container.');\n }\n }\n\n protected get files() {\n if (!this.fileInputContainer.fileInput) {\n return [];\n }\n\n const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;\n\n return Array.from(fileInputElement.files).sort((a, b) => a.name.localeCompare(b.name));\n }\n\n protected getClearFileLabel(filename: string) {\n return this.commonStrings.parse(this.commonStrings.keys.clearFile, {\n FILE: filename,\n });\n }\n\n protected clearFile(fileToRemove: File) {\n if (!this.fileInputContainer.fileInput) {\n return;\n }\n\n const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;\n const files = Array.from(fileInputElement.files);\n const newFiles = files.filter(file => file !== fileToRemove);\n\n selectFiles(fileInputElement, newFiles);\n this.fileInputContainer.focusBrowseButton();\n }\n\n protected createFileMessagesTemplateContext(file: File): ClrFileMessagesTemplateContext {\n const fileInputErrors: ClrFileListValidationErrors = this.ngControlService.controls[0].errors || {};\n\n const errors: ClrSingleFileValidationErrors = {\n accept: fileInputErrors.accept?.find(error => error.name === file.name),\n minFileSize: fileInputErrors.minFileSize?.find(error => error.name === file.name),\n maxFileSize: fileInputErrors.maxFileSize?.find(error => error.name === file.name),\n };\n\n const success = Object.values(errors).every(error => !error);\n\n const cached = this.contextCache.get(file);\n if (cached && cached.success === success && this.errorsEqual(cached.errors, errors)) {\n return cached;\n }\n\n // new context is made and old reference replaced\n const context: ClrFileMessagesTemplateContext = { $implicit: file, success, errors };\n this.contextCache.set(file, context);\n\n // new injector is made and old reference replaced\n const injector = this.createFileMessagesTemplateInjector(context);\n this.injectorCache.set(file, injector);\n\n return context;\n }\n\n private createFileMessagesTemplateInjector(fileMessagesTemplateContext: ClrFileMessagesTemplateContext) {\n return Injector.create({\n parent: this.injector,\n providers: [{ provide: CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, useValue: fileMessagesTemplateContext }],\n });\n }\n\n private errorsEqual(a: ClrSingleFileValidationErrors, b: ClrSingleFileValidationErrors): boolean {\n return a.accept === b.accept && a.minFileSize === b.minFileSize && a.maxFileSize === b.maxFileSize;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, ElementRef, forwardRef, inject, Input, ViewChild } from '@angular/core';\nimport {\n ClrAbstractContainer,\n ControlClassService,\n ControlIdService,\n NgControlService,\n} from '@clr/angular/forms/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrFileInput } from './file-input';\nimport { selectFiles } from './file-input.helpers';\nimport { ClrFileList } from './file-list';\nimport { ClrFileError, ClrFileSuccess } from './file-messages';\n\n@Component({\n selector: 'clr-file-input-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n @if (!label && addGrid()) {\n <label></label>\n }\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-file-input-wrapper\">\n <ng-content select=\"[clrFileInput]\"></ng-content>\n\n <!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->\n @if (fileList) {\n <input\n #fileListFileInput\n type=\"file\"\n class=\"clr-file-input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"addFilesToSelection(fileListFileInput.files)\"\n />\n }\n\n <button\n #browseButton\n type=\"button\"\n class=\"btn btn-sm clr-file-input-browse-button\"\n [attr.aria-describedby]=\"browseButtonDescribedBy\"\n [disabled]=\"disabled\"\n (click)=\"browse()\"\n >\n <cds-icon shape=\"folder-open\"></cds-icon>\n <span class=\"clr-file-input-browse-button-text\">{{ browseButtonText }}</span>\n </button>\n @if (!fileList && fileInput?.selection?.fileCount) {\n <button\n type=\"button\"\n class=\"btn btn-sm clr-file-input-clear-button\"\n [attr.aria-label]=\"fileInput?.selection?.clearFilesButtonLabel\"\n (click)=\"clearSelectedFiles()\"\n >\n <cds-icon shape=\"times\" status=\"neutral\"></cds-icon>\n </button>\n }\n </div>\n @if (showHelper) {\n <ng-content select=\"clr-control-helper\"></ng-content>\n }\n @if (showInvalid) {\n <ng-content select=\"clr-control-error\"></ng-content>\n }\n @if (showValid) {\n <ng-content select=\"clr-control-success\"></ng-content>\n }\n\n <!-- If this is present, this file input becomes an \"advanced\" file input. -->\n <ng-container>\n <div class=\"clr-file-list-break\"></div>\n <ng-content select=\"clr-file-list\"></ng-content>\n </ng-container>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [NgControlService, ControlIdService, ControlClassService],\n standalone: false,\n})\nexport class ClrFileInputContainer extends ClrAbstractContainer {\n @Input('clrButtonLabel') customButtonLabel: string;\n\n @ContentChild(forwardRef(() => ClrFileInput)) readonly fileInput: ClrFileInput;\n @ContentChild(forwardRef(() => ClrFileList)) protected readonly fileList: ClrFileList;\n\n @ViewChild('browseButton') private browseButtonElementRef: ElementRef<HTMLButtonElement>;\n @ViewChild('fileListFileInput') private fileListFileInputElementRef: ElementRef<HTMLInputElement>;\n\n // These are for the \"message present\" override properties\n @ContentChild(ClrFileSuccess) private readonly fileSuccessComponent: ClrFileSuccess;\n @ContentChild(ClrFileError) private readonly fileErrorComponent: ClrFileError;\n\n private readonly commonStrings = inject(ClrCommonStringsService);\n\n protected get accept() {\n return this.fileInput.elementRef.nativeElement.accept;\n }\n\n protected get multiple() {\n return this.fileInput.elementRef.nativeElement.multiple;\n }\n\n protected get disabled() {\n return this.fileInput.elementRef.nativeElement.disabled || (this.control && this.control.disabled);\n }\n\n protected get browseButtonText() {\n const selectionButtonLabel = this.fileList ? undefined : this.fileInput?.selection?.buttonLabel;\n\n return selectionButtonLabel || this.customButtonLabel || this.commonStrings.keys.browse;\n }\n\n protected get browseButtonDescribedBy() {\n return `${this.label?.forAttr} ${this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby')}`;\n }\n\n protected override get successMessagePresent() {\n return super.successMessagePresent || !!this.fileSuccessComponent;\n }\n\n protected override get errorMessagePresent() {\n return super.errorMessagePresent || !!this.fileErrorComponent;\n }\n\n focusBrowseButton() {\n this.browseButtonElementRef.nativeElement.focus();\n }\n\n protected browse() {\n const fileInputElementRef =\n this.fileList && this.multiple ? this.fileListFileInputElementRef : this.fileInput.elementRef;\n\n fileInputElementRef.nativeElement.click();\n }\n\n protected clearSelectedFiles() {\n this.fileInput.elementRef.nativeElement.value = '';\n this.fileInput.elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n\n this.focusBrowseButton();\n }\n\n protected addFilesToSelection(newFiles: FileList) {\n if (!newFiles.length) {\n return;\n }\n\n // start with new files\n const mergedFiles = [...newFiles];\n\n // add existing files if a new file doesn't have the same name\n for (const existingFile of this.fileInput.elementRef.nativeElement.files) {\n if (!mergedFiles.some(file => file.name === existingFile.name)) {\n mergedFiles.push(existingFile);\n }\n }\n\n // update file selection\n selectFiles(this.fileInput.elementRef.nativeElement, mergedFiles);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Injector,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { WrappedFormControl } from '@clr/angular/forms/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrFileInputContainer } from './file-input-container';\n\nexport interface ClrFileInputSelection {\n fileCount: number;\n buttonLabel: string;\n clearFilesButtonLabel: string;\n}\n\n@Directive({\n selector: 'input[type=\"file\"][clrFileInput]',\n host: {\n tabindex: '-1', // Remove the hidden file `input` element from the tab order because the browse `button` replaces it.\n 'aria-hidden': 'true', // Remove the hidden file `input` element from the accessibility tree because the browse `button` replaces it.\n '[class.clr-file-input]': 'true',\n },\n standalone: false,\n})\nexport class ClrFileInput extends WrappedFormControl<ClrFileInputContainer> {\n selection: ClrFileInputSelection = undefined;\n\n constructor(\n injector: Injector,\n renderer: Renderer2,\n viewContainerRef: ViewContainerRef,\n readonly elementRef: ElementRef<HTMLInputElement>,\n @Self() @Optional() private readonly control: NgControl,\n private readonly commonStrings: ClrCommonStringsService\n ) {\n super(viewContainerRef, ClrFileInputContainer, injector, control, renderer, elementRef);\n }\n\n @HostBinding('disabled')\n protected get disabled() {\n return this.elementRef.nativeElement.disabled || (this.control && this.control.disabled);\n }\n\n @HostListener('change')\n private handleChange() {\n this.updateSelection();\n }\n\n private updateSelection() {\n const files = this.elementRef.nativeElement.files;\n let selectionButtonLabel: string;\n let clearFilesButtonLabel: string;\n\n if (files?.length === 1) {\n const filename = files[0].name;\n\n selectionButtonLabel = filename;\n\n clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFile, {\n FILE: filename,\n });\n } else if (files?.length > 1) {\n const fileCount = files.length.toString();\n\n selectionButtonLabel = this.commonStrings.parse(this.commonStrings.keys.fileCount, {\n COUNT: fileCount,\n });\n\n clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFiles, {\n COUNT: fileCount,\n });\n }\n\n this.selection = {\n fileCount: files.length,\n buttonLabel: selectionButtonLabel,\n clearFilesButtonLabel,\n };\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nimport { ClrFileListValidationErrors } from './file-input-validator-errors';\n\n@Directive({\n selector: 'input[type=\"file\"][clrFileInput]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ClrFileInputValidator, multi: true }],\n standalone: false,\n})\nexport class ClrFileInputValidator implements Validator {\n @Input('clrMinFileSize') minFileSize: number;\n @Input('clrMaxFileSize') maxFileSize: number;\n\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>) {}\n\n validate(control: AbstractControl<FileList>): ValidationErrors {\n const files = control.value;\n const fileInputElement = this.elementRef.nativeElement;\n\n const errors: ClrFileListValidationErrors = {};\n\n // required validation (native attribute)\n if (fileInputElement.required && files?.length === 0) {\n errors.required = true;\n }\n\n const accept = fileInputElement.accept ? fileInputElement.accept.split(',').map(type => type.trim()) : null;\n\n if (files?.length > 0 && (accept || this.minFileSize || this.maxFileSize)) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n\n // accept validation (native attribute)\n if (accept && accept.length) {\n if (!this.validateAccept(file, accept)) {\n errors.accept = errors.accept || [];\n errors.accept.push({\n name: file.name,\n accept,\n type: file.type || '',\n extension: this.getSuffixByDepth(file.name, 2), // last up to 2 parts for reporting\n });\n }\n }\n\n // min file validation (custom input)\n if (this.minFileSize && file.size < this.minFileSize) {\n errors.minFileSize = errors.minFileSize || [];\n errors.minFileSize.push({ name: file.name, minFileSize: this.minFileSize, actualFileSize: file.size });\n }\n\n // max file validation (custom input)\n if (this.maxFileSize && file.size > this.maxFileSize) {\n errors.maxFileSize = errors.maxFileSize || [];\n errors.maxFileSize.push({ name: file.name, maxFileSize: this.maxFileSize, actualFileSize: file.size });\n }\n }\n }\n\n return Object.keys(errors).length ? errors : null;\n }\n\n private getSuffixByDepth(filename: string, depth: number): string {\n const match = filename.toLowerCase().match(new RegExp(`(\\\\.[^.]+){1,${depth}}$`, 'i'));\n return match ? match[0] : '';\n }\n\n private validateAccept(file: File, acceptList: string[]): boolean {\n const name = file.name.toLowerCase();\n const type = (file.type || '').toLowerCase();\n\n for (const entryRaw of acceptList) {\n const entry = entryRaw.trim().toLowerCase();\n if (!entry) {\n continue;\n }\n\n // Extension check\n if (entry.startsWith('.')) {\n const depth = (entry.match(/\\./g) || []).length;\n if (this.getSuffixByDepth(name, depth) === entry) {\n return true;\n }\n continue;\n }\n\n // MIME check\n if (entry.endsWith('/*')) {\n const prefix = entry.slice(0, entry.length - 1); // keep trailing slash\n if (type.startsWith(prefix)) {\n return true;\n }\n } else if (entry.includes('/') && type === entry) {\n return true;\n }\n }\n\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrFileListValidationErrors {\n required?: boolean;\n accept?: ClrFileAcceptError[];\n minFileSize?: ClrFileMinFileSizeError[];\n maxFileSize?: ClrFileMaxFileSizeError[];\n}\n\nexport interface ClrFileAcceptError {\n /**\n * The name of the selected file.\n */\n name: string;\n\n /**\n * The file types that are accepted by the file input.\n */\n accept: string[];\n\n /**\n * The actual MIME type of the selected file.\n */\n type: string;\n\n /**\n * The actual extension of the selected file.\n */\n extension: string;\n}\n\nexport interface ClrFileMinFileSizeError {\n /**\n * The name of the selected file.\n */\n name: string;\n\n /**\n * The minimum file size that is accepted by the file input.\n */\n minFileSize: number;\n\n /**\n * The actual size of the selected file.\n */\n actualFileSize: number;\n}\n\nexport interface ClrFileMaxFileSizeError {\n /**\n * The name of the selected file.\n */\n name: string;\n\n /**\n * The maximum file size that is accepted by the file input.\n */\n maxFileSize: number;\n\n /**\n * The actual size of the selected file.\n */\n actualFileSize: number;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, HostListener } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { clearFiles, selectFiles } from './file-input.helpers';\n\n@Directive({\n selector: 'input[type=\"file\"][clrFileInput]',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ClrFileInputValueAccessor, multi: true }],\n standalone: false,\n})\nexport class ClrFileInputValueAccessor implements ControlValueAccessor {\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>) {}\n\n writeValue(value: FileList) {\n if (value !== undefined && value !== null && !(value instanceof FileList)) {\n throw new Error('The value of a file input control must be a FileList.');\n }\n\n if (value) {\n selectFiles(this.elementRef.nativeElement, value);\n } else if (this.elementRef.nativeElement.files.length) {\n clearFiles(this.elementRef.nativeElement);\n }\n }\n\n registerOnChange(fn: (value: FileList) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n @HostListener('change')\n private handleChange() {\n this.onTouched();\n this.onChange(this.elementRef.nativeElement.files);\n }\n\n private onChange = (_value: FileList) => {};\n\n private onTouched = () => {};\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ClrCommonFormsModule } from '@clr/angular/forms/common';\nimport { ClarityIcons, ClrIcon, errorStandardIcon, folderOpenIcon, successStandardIcon } from '@clr/angular/icon';\n\nimport { ClrFileInput } from './file-input';\nimport { ClrFileInputContainer } from './file-input-container';\nimport { ClrFileInputValidator } from './file-input-validator';\nimport { ClrFileInputValueAccessor } from './file-input-value-accessor';\nimport { ClrFileList } from './file-list';\nimport { ClrFileError, ClrFileInfo, ClrFileSuccess } from './file-messages';\nimport { ClrFileMessagesTemplate } from './file-messages-template';\n\n@NgModule({\n imports: [CommonModule, ClrIcon, ClrCommonFormsModule],\n declarations: [\n ClrFileInput,\n ClrFileInputContainer,\n ClrFileInputValidator,\n ClrFileInputValueAccessor,\n ClrFileList,\n ClrFileMessagesTemplate,\n ClrFileInfo,\n ClrFileSuccess,\n ClrFileError,\n ],\n exports: [\n ClrCommonFormsModule,\n ClrFileInput,\n ClrFileInputContainer,\n ClrFileInputValidator,\n ClrFileInputValueAccessor,\n ClrFileList,\n ClrFileMessagesTemplate,\n ClrFileInfo,\n ClrFileSuccess,\n ClrFileError,\n ],\n})\nexport class ClrFileInputModule {\n constructor() {\n ClarityIcons.addIcons(folderOpenIcon, successStandardIcon, errorStandardIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './file-input';\nexport * from './file-input-validator';\nexport * from './file-input-validator-errors';\nexport * from './file-input-value-accessor';\nexport * from './file-input-container';\nexport * from './file-list';\nexport * from './file-messages-template';\nexport * from './file-messages';\nexport * from './file-input.module';\nexport * from './file-input.helpers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}