@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,233 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Input, Optional, Inject, Component, HostListener, Self, Directive, NgModule } from '@angular/core';
3
+ import * as i1 from '@clr/angular/forms/common';
4
+ import { ClrAbstractContainer, NgControlService, ControlIdService, ControlClassService, FormsFocusService, WrappedFormControl, ClrCommonFormsModule } from '@clr/angular/forms/common';
5
+ import * as i5 from 'rxjs';
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import * as i2 from '@clr/angular/utils';
8
+ import * as i3 from '@angular/common';
9
+ import { CommonModule } from '@angular/common';
10
+ import * as i4 from '@clr/angular/icon';
11
+ import { ClarityIcons, eyeHideIcon, eyeIcon, successStandardIcon, errorStandardIcon, ClrIcon } from '@clr/angular/icon';
12
+ import * as i1$1 from '@angular/forms';
13
+ import { FormsModule } from '@angular/forms';
14
+
15
+ /*
16
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
17
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
18
+ * This software is released under MIT license.
19
+ * The full license information can be found in LICENSE in the root directory of this project.
20
+ */
21
+ const TOGGLE_SERVICE = new InjectionToken(undefined);
22
+ function ToggleServiceFactory() {
23
+ return new BehaviorSubject(false);
24
+ }
25
+ const TOGGLE_SERVICE_PROVIDER = { provide: TOGGLE_SERVICE, useFactory: ToggleServiceFactory };
26
+ class ClrPasswordContainer extends ClrAbstractContainer {
27
+ constructor(layoutService, controlClassService, ngControlService, focusService, toggleService, commonStrings) {
28
+ super(layoutService, controlClassService, ngControlService);
29
+ this.focusService = focusService;
30
+ this.toggleService = toggleService;
31
+ this.commonStrings = commonStrings;
32
+ this.show = false;
33
+ this.focus = false;
34
+ this._toggle = true;
35
+ /* The unsubscribe is handle inside the ClrAbstractContainer */
36
+ this.subscriptions.push(focusService.focusChange.subscribe(state => {
37
+ this.focus = state;
38
+ }));
39
+ }
40
+ get clrToggle() {
41
+ return this._toggle;
42
+ }
43
+ set clrToggle(state) {
44
+ this._toggle = state;
45
+ if (!state) {
46
+ this.show = false;
47
+ }
48
+ }
49
+ toggle() {
50
+ this.show = !this.show;
51
+ this.toggleService.next(this.show);
52
+ }
53
+ showPasswordText(label) {
54
+ return this.commonStrings.parse(this.commonStrings.keys.passwordShow, { LABEL: label });
55
+ }
56
+ hidePasswordText(label) {
57
+ return this.commonStrings.parse(this.commonStrings.keys.passwordHide, { LABEL: label });
58
+ }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordContainer, deps: [{ token: i1.LayoutService, optional: true }, { token: i1.ControlClassService }, { token: i1.NgControlService }, { token: i1.FormsFocusService }, { token: TOGGLE_SERVICE }, { token: i2.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component }); }
60
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrPasswordContainer, isStandalone: false, selector: "clr-password-container", inputs: { clrToggle: "clrToggle" }, host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-row": "addGrid()" } }, providers: [NgControlService, ControlIdService, ControlClassService, FormsFocusService, TOGGLE_SERVICE_PROVIDER], usesInheritance: true, ngImport: i0, template: `
61
+ <ng-content select="label"></ng-content>
62
+ @if (!label && addGrid()) {
63
+ <label></label>
64
+ }
65
+ <div class="clr-control-container" [ngClass]="controlClass()">
66
+ <div class="clr-input-wrapper">
67
+ <div class="clr-input-group" [class.clr-focus]="focus">
68
+ <ng-content select="[clrPassword]"></ng-content>
69
+ @if (clrToggle) {
70
+ <button (click)="toggle()" [disabled]="control?.disabled" class="clr-input-group-icon-action" type="button">
71
+ <cds-icon class="clr-password-eye-icon" [shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
72
+ <span class="clr-sr-only">
73
+ {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}
74
+ </span>
75
+ </button>
76
+ }
77
+ </div>
78
+ </div>
79
+ @if (showHelper) {
80
+ <ng-content select="clr-control-helper"></ng-content>
81
+ }
82
+ @if (showInvalid) {
83
+ <ng-content select="clr-control-error"></ng-content>
84
+ }
85
+ @if (showValid) {
86
+ <ng-content select="clr-control-success"></ng-content>
87
+ }
88
+ </div>
89
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.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"] }] }); }
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordContainer, decorators: [{
92
+ type: Component,
93
+ args: [{
94
+ selector: 'clr-password-container',
95
+ template: `
96
+ <ng-content select="label"></ng-content>
97
+ @if (!label && addGrid()) {
98
+ <label></label>
99
+ }
100
+ <div class="clr-control-container" [ngClass]="controlClass()">
101
+ <div class="clr-input-wrapper">
102
+ <div class="clr-input-group" [class.clr-focus]="focus">
103
+ <ng-content select="[clrPassword]"></ng-content>
104
+ @if (clrToggle) {
105
+ <button (click)="toggle()" [disabled]="control?.disabled" class="clr-input-group-icon-action" type="button">
106
+ <cds-icon class="clr-password-eye-icon" [shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
107
+ <span class="clr-sr-only">
108
+ {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}
109
+ </span>
110
+ </button>
111
+ }
112
+ </div>
113
+ </div>
114
+ @if (showHelper) {
115
+ <ng-content select="clr-control-helper"></ng-content>
116
+ }
117
+ @if (showInvalid) {
118
+ <ng-content select="clr-control-error"></ng-content>
119
+ }
120
+ @if (showValid) {
121
+ <ng-content select="clr-control-success"></ng-content>
122
+ }
123
+ </div>
124
+ `,
125
+ host: {
126
+ '[class.clr-form-control]': 'true',
127
+ '[class.clr-form-control-disabled]': 'control?.disabled',
128
+ '[class.clr-row]': 'addGrid()',
129
+ },
130
+ providers: [NgControlService, ControlIdService, ControlClassService, FormsFocusService, TOGGLE_SERVICE_PROVIDER],
131
+ standalone: false,
132
+ }]
133
+ }], ctorParameters: () => [{ type: i1.LayoutService, decorators: [{
134
+ type: Optional
135
+ }] }, { type: i1.ControlClassService }, { type: i1.NgControlService }, { type: i1.FormsFocusService }, { type: i5.BehaviorSubject, decorators: [{
136
+ type: Inject,
137
+ args: [TOGGLE_SERVICE]
138
+ }] }, { type: i2.ClrCommonStringsService }], propDecorators: { clrToggle: [{
139
+ type: Input,
140
+ args: ['clrToggle']
141
+ }] } });
142
+
143
+ /*
144
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
145
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
146
+ * This software is released under MIT license.
147
+ * The full license information can be found in LICENSE in the root directory of this project.
148
+ */
149
+ class ClrPassword extends WrappedFormControl {
150
+ constructor(vcr, injector, control, renderer, el, focusService, toggleService) {
151
+ super(vcr, ClrPasswordContainer, injector, control, renderer, el);
152
+ this.focusService = focusService;
153
+ this.index = 1;
154
+ if (!focusService) {
155
+ throw new Error('clrPassword requires being wrapped in <clr-password-container>');
156
+ }
157
+ this.subscriptions.push(toggleService.subscribe(toggle => {
158
+ renderer.setProperty(el.nativeElement, 'type', toggle ? 'text' : 'password');
159
+ }));
160
+ }
161
+ triggerFocus() {
162
+ if (this.focusService) {
163
+ this.focusService.focused = true;
164
+ }
165
+ }
166
+ triggerValidation() {
167
+ super.triggerValidation();
168
+ if (this.focusService) {
169
+ this.focusService.focused = false;
170
+ }
171
+ }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPassword, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1$1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.FormsFocusService, optional: true }, { token: TOGGLE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
173
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPassword, isStandalone: false, selector: "[clrPassword]", host: { listeners: { "focus": "triggerFocus()" }, properties: { "class.clr-input": "true" } }, usesInheritance: true, ngImport: i0 }); }
174
+ }
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPassword, decorators: [{
176
+ type: Directive,
177
+ args: [{
178
+ selector: '[clrPassword]',
179
+ host: { '[class.clr-input]': 'true' },
180
+ standalone: false,
181
+ }]
182
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1$1.NgControl, decorators: [{
183
+ type: Self
184
+ }, {
185
+ type: Optional
186
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.FormsFocusService, decorators: [{
187
+ type: Optional
188
+ }] }, { type: i5.BehaviorSubject, decorators: [{
189
+ type: Optional
190
+ }, {
191
+ type: Inject,
192
+ args: [TOGGLE_SERVICE]
193
+ }] }], propDecorators: { triggerFocus: [{
194
+ type: HostListener,
195
+ args: ['focus']
196
+ }] } });
197
+
198
+ /*
199
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
200
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
201
+ * This software is released under MIT license.
202
+ * The full license information can be found in LICENSE in the root directory of this project.
203
+ */
204
+ class ClrPasswordModule {
205
+ constructor() {
206
+ ClarityIcons.addIcons(eyeHideIcon, eyeIcon, successStandardIcon, errorStandardIcon);
207
+ }
208
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
209
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, declarations: [ClrPassword, ClrPasswordContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule], exports: [ClrCommonFormsModule, ClrPassword, ClrPasswordContainer] }); }
210
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule, ClrCommonFormsModule] }); }
211
+ }
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, decorators: [{
213
+ type: NgModule,
214
+ args: [{
215
+ imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule],
216
+ declarations: [ClrPassword, ClrPasswordContainer],
217
+ exports: [ClrCommonFormsModule, ClrPassword, ClrPasswordContainer],
218
+ }]
219
+ }], ctorParameters: () => [] });
220
+
221
+ /*
222
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
223
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
224
+ * This software is released under MIT license.
225
+ * The full license information can be found in LICENSE in the root directory of this project.
226
+ */
227
+
228
+ /**
229
+ * Generated bundle index. Do not edit.
230
+ */
231
+
232
+ export { ClrPassword, ClrPasswordContainer, ClrPasswordModule, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory };
233
+ //# sourceMappingURL=clr-angular-forms-password.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clr-angular-forms-password.mjs","sources":["../../../projects/angular/forms/password/password-container.ts","../../../projects/angular/forms/password/password.ts","../../../projects/angular/forms/password/password.module.ts","../../../projects/angular/forms/password/index.ts","../../../projects/angular/forms/password/clr-angular-forms-password.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, Inject, InjectionToken, Input, Optional } from '@angular/core';\nimport {\n ClrAbstractContainer,\n ControlClassService,\n ControlIdService,\n FormsFocusService,\n LayoutService,\n NgControlService,\n} from '@clr/angular/forms/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { BehaviorSubject } from 'rxjs';\n\nexport const TOGGLE_SERVICE = new InjectionToken<BehaviorSubject<boolean>>(undefined);\nexport function ToggleServiceFactory() {\n return new BehaviorSubject<boolean>(false);\n}\nexport const TOGGLE_SERVICE_PROVIDER = { provide: TOGGLE_SERVICE, useFactory: ToggleServiceFactory };\n\n@Component({\n selector: 'clr-password-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\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrPassword]\"></ng-content>\n @if (clrToggle) {\n <button (click)=\"toggle()\" [disabled]=\"control?.disabled\" class=\"clr-input-group-icon-action\" type=\"button\">\n <cds-icon class=\"clr-password-eye-icon\" [shape]=\"show ? 'eye-hide' : 'eye'\"></cds-icon>\n <span class=\"clr-sr-only\">\n {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}\n </span>\n </button>\n }\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, FormsFocusService, TOGGLE_SERVICE_PROVIDER],\n standalone: false,\n})\nexport class ClrPasswordContainer extends ClrAbstractContainer {\n show = false;\n focus = false;\n\n private _toggle = true;\n\n constructor(\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n public focusService: FormsFocusService,\n @Inject(TOGGLE_SERVICE) private toggleService: BehaviorSubject<boolean>,\n public commonStrings: ClrCommonStringsService\n ) {\n super(layoutService, controlClassService, ngControlService);\n\n /* The unsubscribe is handle inside the ClrAbstractContainer */\n this.subscriptions.push(\n focusService.focusChange.subscribe(state => {\n this.focus = state;\n })\n );\n }\n\n @Input('clrToggle')\n get clrToggle() {\n return this._toggle;\n }\n set clrToggle(state: boolean) {\n this._toggle = state;\n if (!state) {\n this.show = false;\n }\n }\n\n toggle() {\n this.show = !this.show;\n this.toggleService.next(this.show);\n }\n\n showPasswordText(label: string) {\n return this.commonStrings.parse(this.commonStrings.keys.passwordShow, { LABEL: label });\n }\n\n hidePasswordText(label: string) {\n return this.commonStrings.parse(this.commonStrings.keys.passwordHide, { LABEL: label });\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 Inject,\n Injector,\n OnDestroy,\n OnInit,\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';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ClrPasswordContainer, TOGGLE_SERVICE } from './password-container';\n\n@Directive({\n selector: '[clrPassword]',\n host: { '[class.clr-input]': 'true' },\n standalone: false,\n})\nexport class ClrPassword extends WrappedFormControl<ClrPasswordContainer> implements OnInit, OnDestroy {\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 @Optional() private focusService: FormsFocusService,\n @Optional()\n @Inject(TOGGLE_SERVICE)\n toggleService: BehaviorSubject<boolean>\n ) {\n super(vcr, ClrPasswordContainer, injector, control, renderer, el);\n\n if (!focusService) {\n throw new Error('clrPassword requires being wrapped in <clr-password-container>');\n }\n\n this.subscriptions.push(\n toggleService.subscribe(toggle => {\n renderer.setProperty(el.nativeElement, 'type', toggle ? 'text' : 'password');\n })\n );\n }\n\n @HostListener('focus')\n triggerFocus() {\n if (this.focusService) {\n this.focusService.focused = true;\n }\n }\n\n override triggerValidation() {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\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, eyeHideIcon, eyeIcon, successStandardIcon } from '@clr/angular/icon';\n\nimport { ClrPassword } from './password';\nimport { ClrPasswordContainer } from './password-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule],\n declarations: [ClrPassword, ClrPasswordContainer],\n exports: [ClrCommonFormsModule, ClrPassword, ClrPasswordContainer],\n})\nexport class ClrPasswordModule {\n constructor() {\n ClarityIcons.addIcons(eyeHideIcon, eyeIcon, 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 './password';\nexport * from './password-container';\nexport * from './password.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;AAKG;MAcU,cAAc,GAAG,IAAI,cAAc,CAA2B,SAAS;SACpE,oBAAoB,GAAA;AAClC,IAAA,OAAO,IAAI,eAAe,CAAU,KAAK,CAAC;AAC5C;AACO,MAAM,uBAAuB,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB;AA0C5F,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;IAM5D,WAAA,CACc,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAC3B,YAA+B,EACN,aAAuC,EAChE,aAAsC,EAAA;AAE7C,QAAA,KAAK,CAAC,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;QAJpD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACa,IAAA,CAAA,aAAa,GAAb,aAAa;QACtC,IAAA,CAAA,aAAa,GAAb,aAAa;QAXtB,IAAA,CAAA,IAAI,GAAG,KAAK;QACZ,IAAA,CAAA,KAAK,GAAG,KAAK;QAEL,IAAA,CAAA,OAAO,GAAG,IAAI;;AAapB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAG;AACzC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QACpB,CAAC,CAAC,CACH;IACH;AAEA,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,OAAO;IACrB;IACA,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;QACnB;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzF;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzF;AA9CW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,mKAWrB,cAAc,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAXb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnCtG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FASU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,CAAC;AAChH,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAQI;;0BAIA,MAAM;2BAAC,cAAc;;sBAavB,KAAK;uBAAC,WAAW;;;ACzFpB;;;;;AAKG;AA0BG,MAAO,WAAY,SAAQ,kBAAwC,CAAA;AAGvE,IAAA,WAAA,CACE,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAgC,EACZ,YAA+B,EAGnD,aAAuC,EAAA;AAEvC,QAAA,KAAK,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;QAL7C,IAAA,CAAA,YAAY,GAAZ,YAAY;QAVf,IAAA,CAAA,KAAK,GAAG,CAAC;QAiB1B,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC;QACnF;QAEA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,aAAa,CAAC,SAAS,CAAC,MAAM,IAAG;AAC/B,YAAA,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;QAC9E,CAAC,CAAC,CACH;IACH;IAGA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;QAClC;IACF;IAES,iBAAiB,GAAA;QACxB,KAAK,CAAC,iBAAiB,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK;QACnC;IACF;AAzCW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,qOAaZ,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAbb,WAAW,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE;AACrC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAOI;;0BACA;;0BAIA;;0BACA;;0BACA,MAAM;2BAAC,cAAc;;sBAgBvB,YAAY;uBAAC,OAAO;;;AC5DvB;;;;;AAKG;MAgBU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;QACE,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;IACrF;8GAHW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAHb,WAAW,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CADtC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAExD,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;+GAEtD,iBAAiB,EAAA,OAAA,EAAA,CAJlB,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAExD,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAEnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,CAAC;AACnE,oBAAA,YAAY,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC;AACjD,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,CAAC;AACnE,iBAAA;;;ACpBD;;;;;AAKG;;ACLH;;AAEG;;;;"}
@@ -0,0 +1,231 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ContentChild, Component, Self, Optional, Directive, ElementRef, Input, ContentChildren, NgModule } from '@angular/core';
3
+ import * as i1 from '@clr/angular/forms/common';
4
+ import { ClrControlLabel, ControlIdService, WrappedFormControl, ClrAbstractContainer, NgControlService, ControlClassService, ContainerIdService, ClrCommonFormsModule } from '@clr/angular/forms/common';
5
+ import * as i1$1 from '@angular/forms';
6
+ import { uniqueIdFactory, ClrHostWrappingModule } from '@clr/angular/utils';
7
+ import * as i2 from '@angular/common';
8
+ import { CommonModule } from '@angular/common';
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 ClrRadioWrapper {
18
+ ngOnInit() {
19
+ if (this.label) {
20
+ this.label.disableGrid();
21
+ }
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioWrapper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrRadioWrapper, isStandalone: false, selector: "clr-radio-wrapper", host: { properties: { "class.clr-radio-wrapper": "true" } }, providers: [ControlIdService], queries: [{ propertyName: "label", first: true, predicate: ClrControlLabel, descendants: true, static: true }], ngImport: i0, template: `
25
+ <ng-content select="[clrRadio]"></ng-content>
26
+ <ng-content select="label"></ng-content>
27
+ @if (!label) {
28
+ <label></label>
29
+ }
30
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioWrapper, decorators: [{
33
+ type: Component,
34
+ args: [{
35
+ selector: 'clr-radio-wrapper',
36
+ template: `
37
+ <ng-content select="[clrRadio]"></ng-content>
38
+ <ng-content select="label"></ng-content>
39
+ @if (!label) {
40
+ <label></label>
41
+ }
42
+ `,
43
+ host: {
44
+ '[class.clr-radio-wrapper]': 'true',
45
+ },
46
+ providers: [ControlIdService],
47
+ standalone: false,
48
+ }]
49
+ }], propDecorators: { label: [{
50
+ type: ContentChild,
51
+ args: [ClrControlLabel, { static: true }]
52
+ }] } });
53
+
54
+ /*
55
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
56
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
57
+ * This software is released under MIT license.
58
+ * The full license information can be found in LICENSE in the root directory of this project.
59
+ */
60
+ class ClrRadio extends WrappedFormControl {
61
+ constructor(vcr, injector, control, renderer, el) {
62
+ super(vcr, ClrRadioWrapper, injector, control, renderer, el);
63
+ }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadio, 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 }); }
65
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrRadio, isStandalone: false, selector: "[clrRadio]", usesInheritance: true, ngImport: i0 }); }
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadio, decorators: [{
68
+ type: Directive,
69
+ args: [{
70
+ selector: '[clrRadio]',
71
+ standalone: false,
72
+ }]
73
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1$1.NgControl, decorators: [{
74
+ type: Self
75
+ }, {
76
+ type: Optional
77
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }] });
78
+
79
+ /*
80
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
81
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
82
+ * This software is released under MIT license.
83
+ * The full license information can be found in LICENSE in the root directory of this project.
84
+ */
85
+ class ClrRadioContainer extends ClrAbstractContainer {
86
+ constructor(layoutService, controlClassService, ngControlService) {
87
+ super(layoutService, controlClassService, ngControlService);
88
+ this.layoutService = layoutService;
89
+ this.controlClassService = controlClassService;
90
+ this.ngControlService = ngControlService;
91
+ this.inline = false;
92
+ this._generatedId = uniqueIdFactory();
93
+ }
94
+ /*
95
+ * Here we want to support the following cases
96
+ * clrInline - true by presence
97
+ * clrInline="true|false" - unless it is explicitly false, strings are considered true
98
+ * [clrInline]="true|false" - expect a boolean
99
+ */
100
+ get clrInline() {
101
+ return this.inline;
102
+ }
103
+ set clrInline(value) {
104
+ if (typeof value === 'string') {
105
+ this.inline = value === 'false' ? false : true;
106
+ }
107
+ else {
108
+ this.inline = !!value;
109
+ }
110
+ }
111
+ ngAfterContentInit() {
112
+ this.setAriaRoles();
113
+ this.setAriaLabelledBy();
114
+ }
115
+ setAriaRoles() {
116
+ this.role = this.radios.length ? 'radiogroup' : null;
117
+ }
118
+ setAriaLabelledBy() {
119
+ const _id = this.groupLabel?.nativeElement.getAttribute('id');
120
+ if (!_id) {
121
+ this.groupLabel?.nativeElement.setAttribute('id', this._generatedId);
122
+ this.ariaLabelledBy = this.radios.length ? this._generatedId : null;
123
+ }
124
+ else {
125
+ this.ariaLabelledBy = this.radios.length ? _id : null;
126
+ }
127
+ }
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioContainer, deps: [{ token: i1.LayoutService, optional: true }, { token: i1.ControlClassService }, { token: i1.NgControlService }], target: i0.ɵɵFactoryTarget.Component }); }
129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrRadioContainer, isStandalone: false, selector: "clr-radio-container", inputs: { clrInline: "clrInline" }, host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-row": "addGrid()", "attr.role": "role", "attr.aria-labelledby": "ariaLabelledBy" } }, providers: [NgControlService, ControlClassService, ContainerIdService], queries: [{ propertyName: "groupLabel", first: true, predicate: ClrControlLabel, descendants: true, read: ElementRef, static: true }, { propertyName: "radios", predicate: ClrRadio, descendants: true }], usesInheritance: true, ngImport: i0, template: `
130
+ <ng-content select="label"></ng-content>
131
+ @if (!label && addGrid()) {
132
+ <label></label>
133
+ }
134
+ <div class="clr-control-container" [class.clr-control-inline]="clrInline" [ngClass]="controlClass()">
135
+ <ng-content select="clr-radio-wrapper"></ng-content>
136
+ @if (showHelper) {
137
+ <div class="clr-subtext-wrapper">
138
+ <ng-content select="clr-control-helper"></ng-content>
139
+ </div>
140
+ }
141
+ @if (showInvalid) {
142
+ <ng-content select="clr-control-error"></ng-content>
143
+ }
144
+ @if (showValid) {
145
+ <ng-content select="clr-control-success"></ng-content>
146
+ }
147
+ </div>
148
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
149
+ }
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioContainer, decorators: [{
151
+ type: Component,
152
+ args: [{
153
+ selector: 'clr-radio-container',
154
+ template: `
155
+ <ng-content select="label"></ng-content>
156
+ @if (!label && addGrid()) {
157
+ <label></label>
158
+ }
159
+ <div class="clr-control-container" [class.clr-control-inline]="clrInline" [ngClass]="controlClass()">
160
+ <ng-content select="clr-radio-wrapper"></ng-content>
161
+ @if (showHelper) {
162
+ <div class="clr-subtext-wrapper">
163
+ <ng-content select="clr-control-helper"></ng-content>
164
+ </div>
165
+ }
166
+ @if (showInvalid) {
167
+ <ng-content select="clr-control-error"></ng-content>
168
+ }
169
+ @if (showValid) {
170
+ <ng-content select="clr-control-success"></ng-content>
171
+ }
172
+ </div>
173
+ `,
174
+ host: {
175
+ '[class.clr-form-control]': 'true',
176
+ '[class.clr-form-control-disabled]': 'control?.disabled',
177
+ '[class.clr-row]': 'addGrid()',
178
+ '[attr.role]': 'role',
179
+ '[attr.aria-labelledby]': 'ariaLabelledBy',
180
+ },
181
+ providers: [NgControlService, ControlClassService, ContainerIdService],
182
+ standalone: false,
183
+ }]
184
+ }], ctorParameters: () => [{ type: i1.LayoutService, decorators: [{
185
+ type: Optional
186
+ }] }, { type: i1.ControlClassService }, { type: i1.NgControlService }], propDecorators: { radios: [{
187
+ type: ContentChildren,
188
+ args: [ClrRadio, { descendants: true }]
189
+ }], groupLabel: [{
190
+ type: ContentChild,
191
+ args: [ClrControlLabel, { read: ElementRef, static: true }]
192
+ }], clrInline: [{
193
+ type: Input
194
+ }] } });
195
+
196
+ /*
197
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
198
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
199
+ * This software is released under MIT license.
200
+ * The full license information can be found in LICENSE in the root directory of this project.
201
+ */
202
+ class ClrRadioModule {
203
+ constructor() {
204
+ ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
205
+ }
206
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
207
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper], imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIcon], exports: [ClrCommonFormsModule, ClrRadio, ClrRadioContainer, ClrRadioWrapper] }); }
208
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIcon, ClrCommonFormsModule] }); }
209
+ }
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, decorators: [{
211
+ type: NgModule,
212
+ args: [{
213
+ imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIcon],
214
+ declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper],
215
+ exports: [ClrCommonFormsModule, ClrRadio, ClrRadioContainer, ClrRadioWrapper],
216
+ }]
217
+ }], ctorParameters: () => [] });
218
+
219
+ /*
220
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
221
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
222
+ * This software is released under MIT license.
223
+ * The full license information can be found in LICENSE in the root directory of this project.
224
+ */
225
+
226
+ /**
227
+ * Generated bundle index. Do not edit.
228
+ */
229
+
230
+ export { ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper };
231
+ //# sourceMappingURL=clr-angular-forms-radio.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clr-angular-forms-radio.mjs","sources":["../../../projects/angular/forms/radio/radio-wrapper.ts","../../../projects/angular/forms/radio/radio.ts","../../../projects/angular/forms/radio/radio-container.ts","../../../projects/angular/forms/radio/radio.module.ts","../../../projects/angular/forms/radio/index.ts","../../../projects/angular/forms/radio/clr-angular-forms-radio.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, OnInit } from '@angular/core';\nimport { ClrControlLabel, ControlIdService } from '@clr/angular/forms/common';\n\n@Component({\n selector: 'clr-radio-wrapper',\n template: `\n <ng-content select=\"[clrRadio]\"></ng-content>\n <ng-content select=\"label\"></ng-content>\n @if (!label) {\n <label></label>\n }\n `,\n host: {\n '[class.clr-radio-wrapper]': 'true',\n },\n providers: [ControlIdService],\n standalone: false,\n})\nexport class ClrRadioWrapper implements OnInit {\n @ContentChild(ClrControlLabel, { static: true }) label: ClrControlLabel;\n\n ngOnInit() {\n if (this.label) {\n this.label.disableGrid();\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, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { WrappedFormControl } from '@clr/angular/forms/common';\n\nimport { ClrRadioWrapper } from './radio-wrapper';\n\n@Directive({\n selector: '[clrRadio]',\n standalone: false,\n})\nexport class ClrRadio extends WrappedFormControl<ClrRadioWrapper> {\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, ClrRadioWrapper, injector, control, renderer, el);\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 AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n Optional,\n QueryList,\n} from '@angular/core';\nimport {\n ClrAbstractContainer,\n ClrControlLabel,\n ContainerIdService,\n ControlClassService,\n LayoutService,\n NgControlService,\n} from '@clr/angular/forms/common';\nimport { uniqueIdFactory } from '@clr/angular/utils';\n\nimport { ClrRadio } from './radio';\n\n@Component({\n selector: 'clr-radio-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n @if (!label && addGrid()) {\n <label></label>\n }\n <div class=\"clr-control-container\" [class.clr-control-inline]=\"clrInline\" [ngClass]=\"controlClass()\">\n <ng-content select=\"clr-radio-wrapper\"></ng-content>\n @if (showHelper) {\n <div class=\"clr-subtext-wrapper\">\n <ng-content select=\"clr-control-helper\"></ng-content>\n </div>\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 '[attr.role]': 'role',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n },\n providers: [NgControlService, ControlClassService, ContainerIdService],\n standalone: false,\n})\nexport class ClrRadioContainer extends ClrAbstractContainer implements AfterContentInit {\n role: string;\n ariaLabelledBy: string;\n\n @ContentChildren(ClrRadio, { descendants: true }) radios: QueryList<ClrRadio>;\n @ContentChild(ClrControlLabel, { read: ElementRef, static: true }) groupLabel: ElementRef<HTMLElement>;\n\n private inline = false;\n private _generatedId = uniqueIdFactory();\n\n constructor(\n @Optional() protected override layoutService: LayoutService,\n protected override controlClassService: ControlClassService,\n protected override ngControlService: NgControlService\n ) {\n super(layoutService, controlClassService, ngControlService);\n }\n\n /*\n * Here we want to support the following cases\n * clrInline - true by presence\n * clrInline=\"true|false\" - unless it is explicitly false, strings are considered true\n * [clrInline]=\"true|false\" - expect a boolean\n */\n @Input()\n get clrInline() {\n return this.inline;\n }\n set clrInline(value: boolean | string) {\n if (typeof value === 'string') {\n this.inline = value === 'false' ? false : true;\n } else {\n this.inline = !!value;\n }\n }\n\n ngAfterContentInit() {\n this.setAriaRoles();\n this.setAriaLabelledBy();\n }\n\n private setAriaRoles() {\n this.role = this.radios.length ? 'radiogroup' : null;\n }\n\n private setAriaLabelledBy() {\n const _id = this.groupLabel?.nativeElement.getAttribute('id');\n if (!_id) {\n this.groupLabel?.nativeElement.setAttribute('id', this._generatedId);\n this.ariaLabelledBy = this.radios.length ? this._generatedId : null;\n } else {\n this.ariaLabelledBy = this.radios.length ? _id : null;\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 { ClrCommonFormsModule } from '@clr/angular/forms/common';\nimport { ClarityIcons, ClrIcon, errorStandardIcon, successStandardIcon } from '@clr/angular/icon';\nimport { ClrHostWrappingModule } from '@clr/angular/utils';\n\nimport { ClrRadio } from './radio';\nimport { ClrRadioContainer } from './radio-container';\nimport { ClrRadioWrapper } from './radio-wrapper';\n\n@NgModule({\n imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIcon],\n declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper],\n exports: [ClrCommonFormsModule, ClrRadio, ClrRadioContainer, ClrRadioWrapper],\n})\nexport class ClrRadioModule {\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 './radio';\nexport * from './radio-container';\nexport * from './radio-wrapper';\nexport * from './radio.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}