@rossigee/clarity-angular 18.2.1-fixed → 18.2.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.
Files changed (182) hide show
  1. package/fesm2022/clr-angular-accordion.mjs +355 -0
  2. package/fesm2022/clr-angular-accordion.mjs.map +1 -0
  3. package/fesm2022/clr-angular-button.mjs +713 -0
  4. package/fesm2022/clr-angular-button.mjs.map +1 -0
  5. package/fesm2022/clr-angular-collapsible-panel.mjs +201 -0
  6. package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -0
  7. package/fesm2022/clr-angular-data-datagrid.mjs +7635 -0
  8. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -0
  9. package/fesm2022/clr-angular-data-stack-view.mjs +442 -0
  10. package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -0
  11. package/fesm2022/clr-angular-data-tree-view.mjs +1106 -0
  12. package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -0
  13. package/fesm2022/clr-angular-data.mjs +40 -0
  14. package/fesm2022/clr-angular-data.mjs.map +1 -0
  15. package/fesm2022/clr-angular-emphasis-alert.mjs +624 -0
  16. package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -0
  17. package/fesm2022/clr-angular-emphasis-badge.mjs +69 -0
  18. package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -0
  19. package/fesm2022/clr-angular-emphasis-common.mjs +25 -0
  20. package/fesm2022/clr-angular-emphasis-common.mjs.map +1 -0
  21. package/fesm2022/clr-angular-emphasis-label.mjs +105 -0
  22. package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -0
  23. package/fesm2022/clr-angular-emphasis.mjs +41 -0
  24. package/fesm2022/clr-angular-emphasis.mjs.map +1 -0
  25. package/fesm2022/clr-angular-forms-checkbox.mjs +270 -0
  26. package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -0
  27. package/fesm2022/clr-angular-forms-combobox.mjs +1775 -0
  28. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -0
  29. package/fesm2022/clr-angular-forms-common.mjs +1251 -0
  30. package/fesm2022/clr-angular-forms-common.mjs.map +1 -0
  31. package/fesm2022/clr-angular-forms-datalist.mjs +263 -0
  32. package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -0
  33. package/fesm2022/clr-angular-forms-datepicker.mjs +3274 -0
  34. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -0
  35. package/fesm2022/clr-angular-forms-file-input.mjs +826 -0
  36. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -0
  37. package/fesm2022/clr-angular-forms-input.mjs +153 -0
  38. package/fesm2022/clr-angular-forms-input.mjs.map +1 -0
  39. package/fesm2022/clr-angular-forms-number-input.mjs +236 -0
  40. package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -0
  41. package/fesm2022/clr-angular-forms-password.mjs +233 -0
  42. package/fesm2022/clr-angular-forms-password.mjs.map +1 -0
  43. package/fesm2022/clr-angular-forms-radio.mjs +231 -0
  44. package/fesm2022/clr-angular-forms-radio.mjs.map +1 -0
  45. package/fesm2022/clr-angular-forms-range.mjs +186 -0
  46. package/fesm2022/clr-angular-forms-range.mjs.map +1 -0
  47. package/fesm2022/clr-angular-forms-select.mjs +153 -0
  48. package/fesm2022/clr-angular-forms-select.mjs.map +1 -0
  49. package/fesm2022/clr-angular-forms-textarea.mjs +136 -0
  50. package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -0
  51. package/fesm2022/clr-angular-forms.mjs +100 -0
  52. package/fesm2022/clr-angular-forms.mjs.map +1 -0
  53. package/fesm2022/clr-angular-icon.mjs +7397 -0
  54. package/fesm2022/clr-angular-icon.mjs.map +1 -0
  55. package/fesm2022/clr-angular-layout-breadcrumbs.mjs +120 -0
  56. package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -0
  57. package/fesm2022/clr-angular-layout-main-container.mjs +100 -0
  58. package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -0
  59. package/fesm2022/clr-angular-layout-nav.mjs +582 -0
  60. package/fesm2022/clr-angular-layout-nav.mjs.map +1 -0
  61. package/fesm2022/clr-angular-layout-tabs.mjs +807 -0
  62. package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -0
  63. package/fesm2022/clr-angular-layout-vertical-nav.mjs +507 -0
  64. package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -0
  65. package/fesm2022/clr-angular-layout.mjs +44 -0
  66. package/fesm2022/clr-angular-layout.mjs.map +1 -0
  67. package/fesm2022/clr-angular-modal.mjs +617 -0
  68. package/fesm2022/clr-angular-modal.mjs.map +1 -0
  69. package/fesm2022/clr-angular-popover-common.mjs +1082 -0
  70. package/fesm2022/clr-angular-popover-common.mjs.map +1 -0
  71. package/fesm2022/clr-angular-popover-dropdown.mjs +492 -0
  72. package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -0
  73. package/fesm2022/clr-angular-popover-signpost.mjs +494 -0
  74. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -0
  75. package/fesm2022/clr-angular-popover-tooltip.mjs +293 -0
  76. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -0
  77. package/fesm2022/clr-angular-popover.mjs +41 -0
  78. package/fesm2022/clr-angular-popover.mjs.map +1 -0
  79. package/fesm2022/clr-angular-progress-progress-bars.mjs +217 -0
  80. package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -0
  81. package/fesm2022/clr-angular-progress-spinner.mjs +132 -0
  82. package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -0
  83. package/fesm2022/clr-angular-stepper.mjs +694 -0
  84. package/fesm2022/clr-angular-stepper.mjs.map +1 -0
  85. package/fesm2022/clr-angular-timeline.mjs +316 -0
  86. package/fesm2022/clr-angular-timeline.mjs.map +1 -0
  87. package/fesm2022/clr-angular-utils-conditional.mjs +351 -0
  88. package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -0
  89. package/fesm2022/clr-angular-utils-loading.mjs +107 -0
  90. package/fesm2022/clr-angular-utils-loading.mjs.map +1 -0
  91. package/fesm2022/clr-angular-utils.mjs +2079 -0
  92. package/fesm2022/clr-angular-utils.mjs.map +1 -0
  93. package/fesm2022/clr-angular-wizard.mjs +3074 -0
  94. package/fesm2022/clr-angular-wizard.mjs.map +1 -0
  95. package/fesm2022/{rossigee-clarity-angular.mjs → clr-angular.mjs} +2 -2
  96. package/fesm2022/clr-angular.mjs.map +1 -0
  97. package/package.json +105 -103
  98. package/schematics/ng-update/index.d.ts +2 -0
  99. package/schematics/ng-update/index.js +69 -0
  100. package/schematics/ng-update/index.js.map +1 -0
  101. package/schematics/ng-update/migrations/css-migration.d.ts +6 -0
  102. package/schematics/ng-update/migrations/css-migration.js +177 -0
  103. package/schematics/ng-update/migrations/css-migration.js.map +1 -0
  104. package/schematics/ng-update/migrations/import-migration.d.ts +4 -0
  105. package/schematics/ng-update/migrations/import-migration.js +187 -0
  106. package/schematics/ng-update/migrations/import-migration.js.map +1 -0
  107. package/schematics/ng-update/migrations/template-migration.d.ts +6 -0
  108. package/schematics/ng-update/migrations/template-migration.js +261 -0
  109. package/schematics/ng-update/migrations/template-migration.js.map +1 -0
  110. package/schematics/ng-update/replacements/css-replacements.d.ts +17 -0
  111. package/schematics/ng-update/replacements/css-replacements.js +74 -0
  112. package/schematics/ng-update/replacements/css-replacements.js.map +1 -0
  113. package/schematics/ng-update/replacements/import-replacements.d.ts +13 -0
  114. package/schematics/ng-update/replacements/import-replacements.js +108 -0
  115. package/schematics/ng-update/replacements/import-replacements.js.map +1 -0
  116. package/schematics/ng-update/replacements/symbol-replacements.d.ts +12 -0
  117. package/schematics/ng-update/replacements/symbol-replacements.js +67 -0
  118. package/schematics/ng-update/replacements/symbol-replacements.js.map +1 -0
  119. package/schematics/ng-update/replacements/template-replacements.d.ts +19 -0
  120. package/schematics/ng-update/replacements/template-replacements.js +57 -0
  121. package/schematics/ng-update/replacements/template-replacements.js.map +1 -0
  122. package/schematics/ng-update/tests/test-helpers.d.ts +6 -0
  123. package/schematics/ng-update/tests/test-helpers.js +34 -0
  124. package/schematics/ng-update/tests/test-helpers.js.map +1 -0
  125. package/schematics/ng-update/utils/file-visitor.d.ts +8 -0
  126. package/schematics/ng-update/utils/file-visitor.js +44 -0
  127. package/schematics/ng-update/utils/file-visitor.js.map +1 -0
  128. package/schematics/ng-update/utils/regexp-utils.d.ts +16 -0
  129. package/schematics/ng-update/utils/regexp-utils.js +34 -0
  130. package/schematics/ng-update/utils/regexp-utils.js.map +1 -0
  131. package/schematics/vitest.config.d.ts +2 -0
  132. package/schematics/vitest.config.js +17 -0
  133. package/schematics/vitest.config.js.map +1 -0
  134. package/types/clr-angular-accordion.d.ts +100 -0
  135. package/types/clr-angular-button.d.ts +169 -0
  136. package/types/clr-angular-collapsible-panel.d.ts +73 -0
  137. package/types/clr-angular-data-datagrid.d.ts +1843 -0
  138. package/types/clr-angular-data-stack-view.d.ts +87 -0
  139. package/types/clr-angular-data-tree-view.d.ts +229 -0
  140. package/types/clr-angular-data.d.ts +15 -0
  141. package/types/clr-angular-emphasis-alert.d.ts +175 -0
  142. package/types/clr-angular-emphasis-badge.d.ts +25 -0
  143. package/types/clr-angular-emphasis-common.d.ts +6 -0
  144. package/types/clr-angular-emphasis-label.d.ts +29 -0
  145. package/types/clr-angular-emphasis.d.ts +15 -0
  146. package/types/clr-angular-forms-checkbox.d.ts +69 -0
  147. package/types/clr-angular-forms-combobox.d.ts +353 -0
  148. package/types/clr-angular-forms-common.d.ts +339 -0
  149. package/types/clr-angular-forms-datalist.d.ts +59 -0
  150. package/types/clr-angular-forms-datepicker.d.ts +986 -0
  151. package/types/clr-angular-forms-file-input.d.ts +193 -0
  152. package/types/clr-angular-forms-input.d.ts +29 -0
  153. package/types/clr-angular-forms-number-input.d.ts +43 -0
  154. package/types/clr-angular-forms-password.d.ts +52 -0
  155. package/types/clr-angular-forms-radio.d.ts +50 -0
  156. package/types/clr-angular-forms-range.d.ts +37 -0
  157. package/types/clr-angular-forms-select.d.ts +36 -0
  158. package/types/clr-angular-forms-textarea.d.ts +29 -0
  159. package/types/clr-angular-forms.d.ts +36 -0
  160. package/types/clr-angular-icon.d.ts +1498 -0
  161. package/types/clr-angular-layout-breadcrumbs.d.ts +45 -0
  162. package/types/clr-angular-layout-main-container.d.ts +28 -0
  163. package/types/clr-angular-layout-nav.d.ts +142 -0
  164. package/types/clr-angular-layout-tabs.d.ts +158 -0
  165. package/types/clr-angular-layout-vertical-nav.d.ts +128 -0
  166. package/types/clr-angular-layout.d.ts +19 -0
  167. package/types/clr-angular-modal.d.ts +160 -0
  168. package/types/clr-angular-popover-common.d.ts +254 -0
  169. package/types/clr-angular-popover-dropdown.d.ts +123 -0
  170. package/types/clr-angular-popover-signpost.d.ts +157 -0
  171. package/types/clr-angular-popover-tooltip.d.ts +83 -0
  172. package/types/clr-angular-popover.d.ts +16 -0
  173. package/types/clr-angular-progress-progress-bars.d.ts +57 -0
  174. package/types/clr-angular-progress-spinner.d.ts +44 -0
  175. package/types/clr-angular-stepper.d.ts +179 -0
  176. package/types/clr-angular-timeline.d.ts +86 -0
  177. package/types/clr-angular-utils-conditional.d.ts +132 -0
  178. package/types/clr-angular-utils-loading.d.ts +38 -0
  179. package/types/clr-angular-utils.d.ts +913 -0
  180. package/types/clr-angular-wizard.d.ts +1508 -0
  181. package/fesm2022/rossigee-clarity-angular.mjs.map +0 -1
  182. /package/types/{rossigee-clarity-angular.d.ts → clr-angular.d.ts} +0 -0
@@ -0,0 +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\">\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.control ? this.control.disabled : this.fileInput.elementRef.nativeElement.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 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 @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 setDisabledState(isDisabled: boolean): void {\n this.elementRef.nativeElement.disabled = isDisabled;\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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"}
@@ -0,0 +1,153 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Self, Optional, Directive, NgModule } from '@angular/core';
3
+ import * as i2 from '@clr/angular/forms/common';
4
+ import { ClrAbstractContainer, NgControlService, ControlIdService, ControlClassService, WrappedFormControl, ClrCommonFormsModule } from '@clr/angular/forms/common';
5
+ import * as i1 from '@angular/common';
6
+ import { CommonModule } from '@angular/common';
7
+ import * as i1$1 from '@angular/forms';
8
+ import { FormsModule } from '@angular/forms';
9
+ import { ClarityIcons, successStandardIcon, errorStandardIcon, ClrIcon } from '@clr/angular/icon';
10
+
11
+ /*
12
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
13
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
14
+ * This software is released under MIT license.
15
+ * The full license information can be found in LICENSE in the root directory of this project.
16
+ */
17
+ class ClrInputContainer extends ClrAbstractContainer {
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputContainer, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrInputContainer, isStandalone: false, selector: "clr-input-container", host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-row": "addGrid()" } }, providers: [NgControlService, ControlIdService, ControlClassService], usesInheritance: true, ngImport: i0, template: `
20
+ <ng-content select="label"></ng-content>
21
+ @if (!label && addGrid()) {
22
+ <label></label>
23
+ }
24
+ <div class="clr-control-container" [ngClass]="controlClass()">
25
+ <div class="clr-input-wrapper">
26
+ <div class="clr-input-group">
27
+ <ng-content select="[clrInputPrefix]"></ng-content>
28
+ <ng-content select="[clrInput]"></ng-content>
29
+ <ng-content select="[clrInputSuffix]"></ng-content>
30
+ </div>
31
+ </div>
32
+ @if (showHelper) {
33
+ <ng-content select="clr-control-helper"></ng-content>
34
+ }
35
+ @if (showInvalid) {
36
+ <ng-content select="clr-control-error"></ng-content>
37
+ }
38
+ @if (showValid) {
39
+ <ng-content select="clr-control-success"></ng-content>
40
+ }
41
+ </div>
42
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputContainer, decorators: [{
45
+ type: Component,
46
+ args: [{
47
+ selector: 'clr-input-container',
48
+ template: `
49
+ <ng-content select="label"></ng-content>
50
+ @if (!label && addGrid()) {
51
+ <label></label>
52
+ }
53
+ <div class="clr-control-container" [ngClass]="controlClass()">
54
+ <div class="clr-input-wrapper">
55
+ <div class="clr-input-group">
56
+ <ng-content select="[clrInputPrefix]"></ng-content>
57
+ <ng-content select="[clrInput]"></ng-content>
58
+ <ng-content select="[clrInputSuffix]"></ng-content>
59
+ </div>
60
+ </div>
61
+ @if (showHelper) {
62
+ <ng-content select="clr-control-helper"></ng-content>
63
+ }
64
+ @if (showInvalid) {
65
+ <ng-content select="clr-control-error"></ng-content>
66
+ }
67
+ @if (showValid) {
68
+ <ng-content select="clr-control-success"></ng-content>
69
+ }
70
+ </div>
71
+ `,
72
+ host: {
73
+ '[class.clr-form-control]': 'true',
74
+ '[class.clr-form-control-disabled]': 'control?.disabled',
75
+ '[class.clr-row]': 'addGrid()',
76
+ },
77
+ providers: [NgControlService, ControlIdService, ControlClassService],
78
+ standalone: false,
79
+ }]
80
+ }] });
81
+
82
+ /*
83
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
84
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
85
+ * This software is released under MIT license.
86
+ * The full license information can be found in LICENSE in the root directory of this project.
87
+ */
88
+ class ClrInput extends WrappedFormControl {
89
+ constructor(vcr, injector, control, renderer, el) {
90
+ super(vcr, ClrInputContainer, injector, control, renderer, el);
91
+ this.index = 1;
92
+ if (this.el.nativeElement.getAttribute('type') === 'number') {
93
+ console.warn(`Warning: Inputs of type "number" should utilize the number-input component for proper handling.\n
94
+ Example usage:
95
+ <clr-number-input-container>
96
+ <label>Number Input</label>
97
+ <input clrNumberInput type="number"/>
98
+ </clr-number-input-container>
99
+ `);
100
+ }
101
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInput, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1$1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
103
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrInput, isStandalone: false, selector: "[clrInput]", host: { properties: { "class.clr-input": "true" } }, usesInheritance: true, ngImport: i0 }); }
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInput, decorators: [{
106
+ type: Directive,
107
+ args: [{
108
+ selector: '[clrInput]',
109
+ host: { '[class.clr-input]': 'true' },
110
+ standalone: false,
111
+ }]
112
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1$1.NgControl, decorators: [{
113
+ type: Self
114
+ }, {
115
+ type: Optional
116
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }] });
117
+
118
+ /*
119
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
120
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
121
+ * This software is released under MIT license.
122
+ * The full license information can be found in LICENSE in the root directory of this project.
123
+ */
124
+ class ClrInputModule {
125
+ constructor() {
126
+ ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
127
+ }
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
129
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, declarations: [ClrInput, ClrInputContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule], exports: [ClrCommonFormsModule, ClrInput, ClrInputContainer] }); }
130
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule, ClrCommonFormsModule] }); }
131
+ }
132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, decorators: [{
133
+ type: NgModule,
134
+ args: [{
135
+ imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule],
136
+ declarations: [ClrInput, ClrInputContainer],
137
+ exports: [ClrCommonFormsModule, ClrInput, ClrInputContainer],
138
+ }]
139
+ }], ctorParameters: () => [] });
140
+
141
+ /*
142
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
143
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
144
+ * This software is released under MIT license.
145
+ * The full license information can be found in LICENSE in the root directory of this project.
146
+ */
147
+
148
+ /**
149
+ * Generated bundle index. Do not edit.
150
+ */
151
+
152
+ export { ClrInput, ClrInputContainer, ClrInputModule };
153
+ //# sourceMappingURL=clr-angular-forms-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clr-angular-forms-input.mjs","sources":["../../../projects/angular/forms/input/input-container.ts","../../../projects/angular/forms/input/input.ts","../../../projects/angular/forms/input/input.module.ts","../../../projects/angular/forms/input/index.ts","../../../projects/angular/forms/input/clr-angular-forms-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\nimport { Component } from '@angular/core';\nimport {\n ClrAbstractContainer,\n ControlClassService,\n ControlIdService,\n NgControlService,\n} from '@clr/angular/forms/common';\n\n@Component({\n selector: 'clr-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-input-wrapper\">\n <div class=\"clr-input-group\">\n <ng-content select=\"[clrInputPrefix]\"></ng-content>\n <ng-content select=\"[clrInput]\"></ng-content>\n <ng-content select=\"[clrInputSuffix]\"></ng-content>\n </div>\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 </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [NgControlService, ControlIdService, ControlClassService],\n standalone: false,\n})\nexport class ClrInputContainer extends ClrAbstractContainer {}\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, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { WrappedFormControl } from '@clr/angular/forms/common';\n\nimport { ClrInputContainer } from './input-container';\n\n@Directive({\n selector: '[clrInput]',\n host: { '[class.clr-input]': 'true' },\n standalone: false,\n})\nexport class ClrInput extends WrappedFormControl<ClrInputContainer> {\n protected override index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef<HTMLInputElement>\n ) {\n super(vcr, ClrInputContainer, injector, control, renderer, el);\n if (this.el.nativeElement.getAttribute('type') === 'number') {\n console.warn(`Warning: Inputs of type \"number\" should utilize the number-input component for proper handling.\\n\n Example usage:\n <clr-number-input-container>\n <label>Number Input</label>\n <input clrNumberInput type=\"number\"/>\n </clr-number-input-container>\n `);\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ClrCommonFormsModule } from '@clr/angular/forms/common';\nimport { ClarityIcons, ClrIcon, errorStandardIcon, successStandardIcon } from '@clr/angular/icon';\n\nimport { ClrInput } from './input';\nimport { ClrInputContainer } from './input-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule],\n declarations: [ClrInput, ClrInputContainer],\n exports: [ClrCommonFormsModule, ClrInput, ClrInputContainer],\n})\nexport class ClrInputModule {\n constructor() {\n ClarityIcons.addIcons(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 './input';\nexport * from './input-container';\nexport * from './input.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -0,0 +1,236 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ContentChild, forwardRef, Optional, Component, HostListener, Self, Directive, NgModule } from '@angular/core';
3
+ import * as i1 from '@clr/angular/forms/common';
4
+ import { ClrAbstractContainer, FormsFocusService, NgControlService, ControlIdService, ControlClassService, WrappedFormControl, ClrCommonFormsModule } from '@clr/angular/forms/common';
5
+ import * as i2 from '@angular/common';
6
+ import { CommonModule } from '@angular/common';
7
+ import * as i3 from '@clr/angular/icon';
8
+ import { ClarityIcons, successStandardIcon, errorStandardIcon, minusIcon, plusIcon, ClrIcon } from '@clr/angular/icon';
9
+ import * as i2$1 from '@angular/forms';
10
+ import { FormsModule } from '@angular/forms';
11
+
12
+ /*
13
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
14
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
15
+ * This software is released under MIT license.
16
+ * The full license information can be found in LICENSE in the root directory of this project.
17
+ */
18
+ class ClrNumberInputContainer extends ClrAbstractContainer {
19
+ constructor(controlClassService, layoutService, ngControlService, focusService) {
20
+ super(layoutService, controlClassService, ngControlService);
21
+ this.focus = false;
22
+ this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));
23
+ }
24
+ focusOut() {
25
+ this.input.dispatchBlur();
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputContainer, deps: [{ token: i1.ControlClassService }, { token: i1.LayoutService, optional: true }, { token: i1.NgControlService }, { token: i1.FormsFocusService }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrNumberInputContainer, isStandalone: false, selector: "clr-number-input-container", host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-form-control-readonly": "input?.readonly", "class.clr-row": "addGrid()" } }, providers: [FormsFocusService, NgControlService, ControlIdService, ControlClassService], queries: [{ propertyName: "input", first: true, predicate: i0.forwardRef(() => ClrNumberInput), descendants: true }], usesInheritance: true, ngImport: i0, template: `
29
+ <ng-content select="label"></ng-content>
30
+ @if (!label && addGrid()) {
31
+ <label></label>
32
+ }
33
+ <div class="clr-control-container" [ngClass]="controlClass()">
34
+ <div class="clr-number-input-wrapper">
35
+ <div class="clr-input-group" [class.clr-focus]="focus">
36
+ <ng-content select="[clrNumberInput]"></ng-content>
37
+ <div class="clr-input-group-actions" (focusout)="focusOut()">
38
+ <button
39
+ type="button"
40
+ class="clr-input-group-icon-action"
41
+ (click)="input.stepDown()"
42
+ [disabled]="control?.disabled"
43
+ >
44
+ <cds-icon shape="minus" size="sm"></cds-icon>
45
+ </button>
46
+ <div class="clr-number-input-separator"></div>
47
+ <button
48
+ type="button"
49
+ class="clr-input-group-icon-action"
50
+ (click)="input.stepUp()"
51
+ [disabled]="control?.disabled"
52
+ >
53
+ <cds-icon shape="plus" size="sm"></cds-icon>
54
+ </button>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ @if (showHelper) {
59
+ <ng-content select="clr-control-helper"></ng-content>
60
+ }
61
+ @if (showInvalid) {
62
+ <ng-content select="clr-control-error"></ng-content>
63
+ }
64
+ @if (showValid) {
65
+ <ng-content select="clr-control-success"></ng-content>
66
+ }
67
+ </div>
68
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputContainer, decorators: [{
71
+ type: Component,
72
+ args: [{
73
+ selector: 'clr-number-input-container',
74
+ template: `
75
+ <ng-content select="label"></ng-content>
76
+ @if (!label && addGrid()) {
77
+ <label></label>
78
+ }
79
+ <div class="clr-control-container" [ngClass]="controlClass()">
80
+ <div class="clr-number-input-wrapper">
81
+ <div class="clr-input-group" [class.clr-focus]="focus">
82
+ <ng-content select="[clrNumberInput]"></ng-content>
83
+ <div class="clr-input-group-actions" (focusout)="focusOut()">
84
+ <button
85
+ type="button"
86
+ class="clr-input-group-icon-action"
87
+ (click)="input.stepDown()"
88
+ [disabled]="control?.disabled"
89
+ >
90
+ <cds-icon shape="minus" size="sm"></cds-icon>
91
+ </button>
92
+ <div class="clr-number-input-separator"></div>
93
+ <button
94
+ type="button"
95
+ class="clr-input-group-icon-action"
96
+ (click)="input.stepUp()"
97
+ [disabled]="control?.disabled"
98
+ >
99
+ <cds-icon shape="plus" size="sm"></cds-icon>
100
+ </button>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ @if (showHelper) {
105
+ <ng-content select="clr-control-helper"></ng-content>
106
+ }
107
+ @if (showInvalid) {
108
+ <ng-content select="clr-control-error"></ng-content>
109
+ }
110
+ @if (showValid) {
111
+ <ng-content select="clr-control-success"></ng-content>
112
+ }
113
+ </div>
114
+ `,
115
+ host: {
116
+ '[class.clr-form-control]': 'true',
117
+ '[class.clr-form-control-disabled]': 'control?.disabled',
118
+ '[class.clr-form-control-readonly]': 'input?.readonly',
119
+ '[class.clr-row]': 'addGrid()',
120
+ },
121
+ providers: [FormsFocusService, NgControlService, ControlIdService, ControlClassService],
122
+ standalone: false,
123
+ }]
124
+ }], ctorParameters: () => [{ type: i1.ControlClassService }, { type: i1.LayoutService, decorators: [{
125
+ type: Optional
126
+ }] }, { type: i1.NgControlService }, { type: i1.FormsFocusService }], propDecorators: { input: [{
127
+ type: ContentChild,
128
+ args: [forwardRef(() => ClrNumberInput)]
129
+ }] } });
130
+
131
+ /*
132
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
133
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
134
+ * This software is released under MIT license.
135
+ * The full license information can be found in LICENSE in the root directory of this project.
136
+ */
137
+ class ClrNumberInput extends WrappedFormControl {
138
+ constructor(focusService, vcr, injector, control, renderer, el) {
139
+ super(vcr, ClrNumberInputContainer, injector, control, renderer, el);
140
+ this.focusService = focusService;
141
+ this.control = control;
142
+ this.el = el;
143
+ this.index = 1;
144
+ if (!focusService) {
145
+ throw new Error('clrNumberInput requires being wrapped in <clr-number-input-container>');
146
+ }
147
+ }
148
+ get readonly() {
149
+ return this.el.nativeElement.getAttribute('readonly') !== null;
150
+ }
151
+ triggerFocus() {
152
+ if (!this.readonly && this.focusService) {
153
+ this.focusService.focused = true;
154
+ }
155
+ }
156
+ triggerValidation() {
157
+ if (!this.readonly) {
158
+ super.triggerValidation();
159
+ if (this.focusService) {
160
+ this.focusService.focused = false;
161
+ }
162
+ }
163
+ }
164
+ stepUp() {
165
+ this.el.nativeElement.stepUp();
166
+ this.dispatchStepChangeEvents();
167
+ }
168
+ stepDown() {
169
+ this.el.nativeElement.stepDown();
170
+ this.dispatchStepChangeEvents();
171
+ }
172
+ dispatchBlur() {
173
+ this.el.nativeElement.dispatchEvent(new Event('blur', { bubbles: true, cancelable: true }));
174
+ }
175
+ dispatchStepChangeEvents() {
176
+ this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));
177
+ this.el.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
178
+ this.triggerValidation();
179
+ }
180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInput, deps: [{ token: i1.FormsFocusService, optional: true }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i2$1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
181
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrNumberInput, isStandalone: false, selector: "input[type=\"number\"][clrNumberInput]", host: { listeners: { "focus": "triggerFocus()" }, properties: { "class.clr-input": "true", "class.clr-number-input": "true" } }, usesInheritance: true, ngImport: i0 }); }
182
+ }
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInput, decorators: [{
184
+ type: Directive,
185
+ args: [{
186
+ selector: 'input[type="number"][clrNumberInput]',
187
+ host: { '[class.clr-input]': 'true', '[class.clr-number-input]': 'true' },
188
+ standalone: false,
189
+ }]
190
+ }], ctorParameters: () => [{ type: i1.FormsFocusService, decorators: [{
191
+ type: Optional
192
+ }] }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i2$1.NgControl, decorators: [{
193
+ type: Self
194
+ }, {
195
+ type: Optional
196
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { triggerFocus: [{
197
+ type: HostListener,
198
+ args: ['focus']
199
+ }] } });
200
+
201
+ /*
202
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
203
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
204
+ * This software is released under MIT license.
205
+ * The full license information can be found in LICENSE in the root directory of this project.
206
+ */
207
+ class ClrNumberInputModule {
208
+ constructor() {
209
+ ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, minusIcon, plusIcon);
210
+ }
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
212
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, declarations: [ClrNumberInput, ClrNumberInputContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule], exports: [ClrCommonFormsModule, ClrNumberInput, ClrNumberInputContainer] }); }
213
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule, ClrCommonFormsModule] }); }
214
+ }
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, decorators: [{
216
+ type: NgModule,
217
+ args: [{
218
+ imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule],
219
+ declarations: [ClrNumberInput, ClrNumberInputContainer],
220
+ exports: [ClrCommonFormsModule, ClrNumberInput, ClrNumberInputContainer],
221
+ }]
222
+ }], ctorParameters: () => [] });
223
+
224
+ /*
225
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
226
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
227
+ * This software is released under MIT license.
228
+ * The full license information can be found in LICENSE in the root directory of this project.
229
+ */
230
+
231
+ /**
232
+ * Generated bundle index. Do not edit.
233
+ */
234
+
235
+ export { ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule };
236
+ //# sourceMappingURL=clr-angular-forms-number-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clr-angular-forms-number-input.mjs","sources":["../../../projects/angular/forms/number-input/number-input-container.ts","../../../projects/angular/forms/number-input/number-input.ts","../../../projects/angular/forms/number-input/number-input.module.ts","../../../projects/angular/forms/number-input/index.ts","../../../projects/angular/forms/number-input/clr-angular-forms-number-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\nimport { Component, ContentChild, forwardRef, Optional } from '@angular/core';\nimport {\n ClrAbstractContainer,\n ControlClassService,\n ControlIdService,\n FormsFocusService,\n LayoutService,\n NgControlService,\n} from '@clr/angular/forms/common';\n\nimport { ClrNumberInput } from './number-input';\n\n@Component({\n selector: 'clr-number-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-number-input-wrapper\">\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrNumberInput]\"></ng-content>\n <div class=\"clr-input-group-actions\" (focusout)=\"focusOut()\">\n <button\n type=\"button\"\n class=\"clr-input-group-icon-action\"\n (click)=\"input.stepDown()\"\n [disabled]=\"control?.disabled\"\n >\n <cds-icon shape=\"minus\" size=\"sm\"></cds-icon>\n </button>\n <div class=\"clr-number-input-separator\"></div>\n <button\n type=\"button\"\n class=\"clr-input-group-icon-action\"\n (click)=\"input.stepUp()\"\n [disabled]=\"control?.disabled\"\n >\n <cds-icon shape=\"plus\" size=\"sm\"></cds-icon>\n </button>\n </div>\n </div>\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 </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-form-control-readonly]': 'input.readonly',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [FormsFocusService, NgControlService, ControlIdService, ControlClassService],\n standalone: false,\n})\nexport class ClrNumberInputContainer extends ClrAbstractContainer {\n focus = false;\n\n @ContentChild(forwardRef(() => ClrNumberInput)) protected readonly input: ClrNumberInput;\n\n constructor(\n controlClassService: ControlClassService,\n @Optional() layoutService: LayoutService,\n ngControlService: NgControlService,\n focusService: FormsFocusService\n ) {\n super(layoutService, controlClassService, ngControlService);\n\n this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));\n }\n\n focusOut() {\n this.input.dispatchBlur();\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 HostListener,\n Injector,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { FormsFocusService, WrappedFormControl } from '@clr/angular/forms/common';\n\nimport { ClrNumberInputContainer } from './number-input-container';\n\n@Directive({\n selector: 'input[type=\"number\"][clrNumberInput]',\n host: { '[class.clr-input]': 'true', '[class.clr-number-input]': 'true' },\n standalone: false,\n})\nexport class ClrNumberInput extends WrappedFormControl<ClrNumberInputContainer> {\n protected override index = 1;\n\n constructor(\n @Optional() private focusService: FormsFocusService,\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n private control: NgControl,\n renderer: Renderer2,\n protected override el: ElementRef<HTMLInputElement>\n ) {\n super(vcr, ClrNumberInputContainer, injector, control, renderer, el);\n\n if (!focusService) {\n throw new Error('clrNumberInput requires being wrapped in <clr-number-input-container>');\n }\n }\n\n get readonly() {\n return this.el.nativeElement.getAttribute('readonly') !== null;\n }\n\n @HostListener('focus')\n triggerFocus() {\n if (!this.readonly && this.focusService) {\n this.focusService.focused = true;\n }\n }\n\n override triggerValidation() {\n if (!this.readonly) {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\n }\n }\n }\n\n stepUp(): void {\n this.el.nativeElement.stepUp();\n this.dispatchStepChangeEvents();\n }\n\n stepDown(): void {\n this.el.nativeElement.stepDown();\n this.dispatchStepChangeEvents();\n }\n\n dispatchBlur() {\n this.el.nativeElement.dispatchEvent(new Event('blur', { bubbles: true, cancelable: true }));\n }\n\n private dispatchStepChangeEvents() {\n this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));\n this.el.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n\n this.triggerValidation();\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ClrCommonFormsModule } from '@clr/angular/forms/common';\nimport { ClarityIcons, ClrIcon, errorStandardIcon, minusIcon, plusIcon, successStandardIcon } from '@clr/angular/icon';\n\nimport { ClrNumberInput } from './number-input';\nimport { ClrNumberInputContainer } from './number-input-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule],\n declarations: [ClrNumberInput, ClrNumberInputContainer],\n exports: [ClrCommonFormsModule, ClrNumberInput, ClrNumberInputContainer],\n})\nexport class ClrNumberInputModule {\n constructor() {\n ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, minusIcon, plusIcon);\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 './number-input';\nexport * from './number-input-container';\nexport * from './number-input.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}