cmat 0.0.87 → 0.0.88

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 (228) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -9
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs +98 -80
  4. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  5. package/fesm2022/cmat-components-card.mjs +26 -34
  6. package/fesm2022/cmat-components-card.mjs.map +1 -1
  7. package/fesm2022/cmat-components-carousel.mjs +467 -556
  8. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  9. package/fesm2022/cmat-components-cascade.mjs +270 -259
  10. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  11. package/fesm2022/cmat-components-chip-input.mjs +200 -116
  12. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  13. package/fesm2022/cmat-components-code-editor.mjs +85 -38
  14. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  15. package/fesm2022/cmat-components-color-picker.mjs +841 -0
  16. package/fesm2022/cmat-components-color-picker.mjs.map +1 -0
  17. package/fesm2022/cmat-components-custom-formly.mjs +1395 -838
  18. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  19. package/fesm2022/cmat-components-data-picker.mjs +996 -0
  20. package/fesm2022/cmat-components-data-picker.mjs.map +1 -0
  21. package/fesm2022/cmat-components-date-range.mjs +310 -264
  22. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  23. package/fesm2022/cmat-components-date-time-display.mjs +16 -20
  24. package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
  25. package/fesm2022/cmat-components-drawer.mjs +120 -137
  26. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  27. package/fesm2022/cmat-components-empty-state.mjs +17 -24
  28. package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
  29. package/fesm2022/cmat-components-file-preview.mjs +18 -24
  30. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  31. package/fesm2022/cmat-components-filter-toolbar.mjs +30 -39
  32. package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
  33. package/fesm2022/cmat-components-form-actions.mjs +12 -12
  34. package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
  35. package/fesm2022/cmat-components-fullscreen.mjs +10 -10
  36. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  37. package/fesm2022/cmat-components-highlight.mjs +48 -41
  38. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  39. package/fesm2022/cmat-components-image-viewer.mjs +104 -107
  40. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  41. package/fesm2022/cmat-components-inline-loading.mjs +12 -15
  42. package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
  43. package/fesm2022/cmat-components-json-editor.mjs +118 -75
  44. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  45. package/fesm2022/cmat-components-knob-input.mjs +196 -178
  46. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  47. package/fesm2022/cmat-components-masonry.mjs +26 -41
  48. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  49. package/fesm2022/cmat-components-material-color-picker.mjs +81 -80
  50. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  51. package/fesm2022/cmat-components-material-datetimepicker.mjs +1212 -1287
  52. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  53. package/fesm2022/cmat-components-navigation.mjs +467 -450
  54. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  55. package/fesm2022/cmat-components-opt-input.mjs +143 -132
  56. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  57. package/fesm2022/cmat-components-org-chart.mjs +68 -83
  58. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  59. package/fesm2022/cmat-components-page-header.mjs +18 -24
  60. package/fesm2022/cmat-components-page-header.mjs.map +1 -1
  61. package/fesm2022/cmat-components-pagination.mjs +220 -136
  62. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  63. package/fesm2022/cmat-components-password-strength.mjs +262 -215
  64. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  65. package/fesm2022/cmat-components-popover.mjs +227 -195
  66. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  67. package/fesm2022/cmat-components-progress-bar.mjs +15 -34
  68. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  69. package/fesm2022/cmat-components-qrcode.mjs +95 -88
  70. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  71. package/fesm2022/cmat-components-rating.mjs +70 -67
  72. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  73. package/fesm2022/cmat-components-rich-text-editor.mjs +23 -26
  74. package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
  75. package/fesm2022/cmat-components-select-search.mjs +190 -159
  76. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  77. package/fesm2022/cmat-components-select-table.mjs +276 -213
  78. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  79. package/fesm2022/cmat-components-select-tree.mjs +178 -128
  80. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  81. package/fesm2022/cmat-components-skeleton.mjs +44 -28
  82. package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
  83. package/fesm2022/cmat-components-speed-dial.mjs +107 -163
  84. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  85. package/fesm2022/cmat-components-status-tag.mjs +29 -36
  86. package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
  87. package/fesm2022/cmat-components-table-toolbar.mjs +14 -18
  88. package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
  89. package/fesm2022/cmat-components-timeline.mjs +111 -118
  90. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  91. package/fesm2022/cmat-components-toast.mjs +65 -66
  92. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  93. package/fesm2022/cmat-components-transfer-picker.mjs +130 -160
  94. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  95. package/fesm2022/cmat-components-treetable.mjs +32 -39
  96. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  97. package/fesm2022/cmat-components-upload.mjs +186 -176
  98. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  99. package/fesm2022/cmat-directives-animate-on-scroll.mjs +25 -28
  100. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  101. package/fesm2022/cmat-directives-arrow-cursor.mjs +85 -92
  102. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  103. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  104. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  105. package/fesm2022/cmat-directives-data-exporter.mjs +49 -50
  106. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  107. package/fesm2022/cmat-directives-debounce.mjs +16 -19
  108. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  109. package/fesm2022/cmat-directives-digit-only.mjs +60 -69
  110. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  111. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  112. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  113. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +31 -30
  114. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  115. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  116. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  117. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  118. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  119. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  120. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  121. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  122. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  123. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  124. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  125. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  126. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  127. package/fesm2022/cmat-pipes-secure.mjs +7 -13
  128. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  129. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  130. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  131. package/fesm2022/cmat-services-alert.mjs +26 -27
  132. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  133. package/fesm2022/cmat-services-config.mjs +14 -23
  134. package/fesm2022/cmat-services-config.mjs.map +1 -1
  135. package/fesm2022/cmat-services-confirmation.mjs +8 -8
  136. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  137. package/fesm2022/cmat-services-data.mjs +6 -10
  138. package/fesm2022/cmat-services-data.mjs.map +1 -1
  139. package/fesm2022/cmat-services-export-as.mjs +3 -3
  140. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  141. package/fesm2022/cmat-services-loading.mjs +30 -47
  142. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  143. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  144. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  145. package/fesm2022/cmat-services-media-watcher.mjs +43 -34
  146. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  147. package/fesm2022/cmat-services-platform.mjs +3 -3
  148. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  149. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  150. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  151. package/fesm2022/cmat-services-title.mjs +3 -3
  152. package/fesm2022/cmat-services-title.mjs.map +1 -1
  153. package/fesm2022/cmat-services-translation.mjs +11 -11
  154. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  155. package/fesm2022/cmat-services-utils.mjs +3 -3
  156. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  157. package/fesm2022/cmat.mjs +9228 -7507
  158. package/fesm2022/cmat.mjs.map +1 -1
  159. package/icons/material-icons/heroicons-outline.svg +3 -0
  160. package/icons/material-icons/heroicons-solid.svg +3 -0
  161. package/package.json +10 -1
  162. package/styles/components/bundle.scss +21 -0
  163. package/styles/overrides/angular-material.scss +22 -1
  164. package/tailwind/plugins/theming.js +183 -183
  165. package/types/cmat-components-breadcrumb.d.ts +40 -37
  166. package/types/cmat-components-card.d.ts +11 -13
  167. package/types/cmat-components-carousel.d.ts +87 -113
  168. package/types/cmat-components-cascade.d.ts +84 -65
  169. package/types/cmat-components-chip-input.d.ts +29 -24
  170. package/types/cmat-components-code-editor.d.ts +28 -12
  171. package/types/cmat-components-color-picker.d.ts +236 -0
  172. package/types/cmat-components-custom-formly.d.ts +316 -184
  173. package/types/cmat-components-data-picker.d.ts +372 -0
  174. package/types/cmat-components-date-range.d.ts +31 -36
  175. package/types/cmat-components-date-time-display.d.ts +8 -8
  176. package/types/cmat-components-drawer.d.ts +30 -32
  177. package/types/cmat-components-empty-state.d.ts +9 -10
  178. package/types/cmat-components-file-preview.d.ts +9 -9
  179. package/types/cmat-components-filter-toolbar.d.ts +15 -15
  180. package/types/cmat-components-form-actions.d.ts +5 -5
  181. package/types/cmat-components-fullscreen.d.ts +5 -5
  182. package/types/cmat-components-highlight.d.ts +13 -14
  183. package/types/cmat-components-image-viewer.d.ts +29 -33
  184. package/types/cmat-components-inline-loading.d.ts +6 -6
  185. package/types/cmat-components-json-editor.d.ts +15 -17
  186. package/types/cmat-components-knob-input.d.ts +58 -55
  187. package/types/cmat-components-masonry.d.ts +9 -12
  188. package/types/cmat-components-material-color-picker.d.ts +16 -21
  189. package/types/cmat-components-material-datetimepicker.d.ts +174 -216
  190. package/types/cmat-components-navigation.d.ts +34 -39
  191. package/types/cmat-components-opt-input.d.ts +35 -33
  192. package/types/cmat-components-org-chart.d.ts +8 -9
  193. package/types/cmat-components-page-header.d.ts +9 -9
  194. package/types/cmat-components-pagination.d.ts +36 -40
  195. package/types/cmat-components-password-strength.d.ts +58 -64
  196. package/types/cmat-components-popover.d.ts +22 -32
  197. package/types/cmat-components-progress-bar.d.ts +7 -10
  198. package/types/cmat-components-qrcode.d.ts +22 -22
  199. package/types/cmat-components-rating.d.ts +17 -19
  200. package/types/cmat-components-rich-text-editor.d.ts +11 -12
  201. package/types/cmat-components-select-search.d.ts +48 -36
  202. package/types/cmat-components-select-table.d.ts +38 -34
  203. package/types/cmat-components-select-tree.d.ts +17 -15
  204. package/types/cmat-components-skeleton.d.ts +27 -10
  205. package/types/cmat-components-speed-dial.d.ts +24 -33
  206. package/types/cmat-components-status-tag.d.ts +19 -9
  207. package/types/cmat-components-table-toolbar.d.ts +7 -7
  208. package/types/cmat-components-timeline.d.ts +33 -34
  209. package/types/cmat-components-toast.d.ts +26 -30
  210. package/types/cmat-components-transfer-picker.d.ts +51 -56
  211. package/types/cmat-components-treetable.d.ts +12 -13
  212. package/types/cmat-components-upload.d.ts +33 -38
  213. package/types/cmat-components-x6-angular-shape.d.ts +1 -1
  214. package/types/cmat-directives-animate-on-scroll.d.ts +7 -7
  215. package/types/cmat-directives-arrow-cursor.d.ts +18 -20
  216. package/types/cmat-directives-data-exporter.d.ts +10 -10
  217. package/types/cmat-directives-debounce.d.ts +5 -5
  218. package/types/cmat-directives-digit-only.d.ts +13 -13
  219. package/types/cmat-directives-seamless-auto-scroll.d.ts +7 -7
  220. package/types/cmat-pipes-secure.d.ts +1 -3
  221. package/types/cmat-services-alert.d.ts +11 -12
  222. package/types/cmat-services-config.d.ts +2 -7
  223. package/types/cmat-services-confirmation.d.ts +2 -2
  224. package/types/cmat-services-data.d.ts +0 -1
  225. package/types/cmat-services-loading.d.ts +14 -22
  226. package/types/cmat-services-media-watcher.d.ts +5 -5
  227. package/types/cmat-services-translation.d.ts +4 -5
  228. package/types/cmat.d.ts +2167 -1746
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, EventEmitter, Output, signal } from '@angular/core';
2
+ import { input, output, ChangeDetectionStrategy, ViewEncapsulation, Component, signal, computed, effect, untracked } from '@angular/core';
3
3
  import * as i1 from '@angular/material/button';
4
4
  import { MatButtonModule } from '@angular/material/button';
5
5
  import * as i2 from '@angular/material/core';
@@ -14,22 +14,27 @@ import { MatCardModule } from '@angular/material/card';
14
14
 
15
15
  class CmatPassToggleVisibilityComponent {
16
16
  constructor() {
17
+ this.isVisible = input(false, /* @ts-ignore */
18
+ ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
19
+ this.isVisibleChange = output();
20
+ this.tabindex = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "tabindex" }] : /* istanbul ignore next */ []));
17
22
  this._type = 'text';
18
23
  }
19
24
  get type() {
20
- return this.isVisible ? 'text' : 'password';
25
+ return this.isVisible() ? 'text' : 'password';
21
26
  }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatPassToggleVisibilityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: CmatPassToggleVisibilityComponent, isStandalone: true, selector: "cmat-pass-toggle-visibility", inputs: { isVisible: "isVisible", tabindex: "tabindex" }, exportAs: ["cmatPassToggleVisibility"], ngImport: i0, template: "<button type=\"button\" class=\"matIconButton cdk-focused cdk-mouse-focused\" matIconButton \r\n matRipple [matRippleCentered]=\"true\" [attr.tabindex]=\"tabindex ? tabindex : null\" (click)=\"isVisible = !isVisible\">\r\n <mat-icon svgIcon=\"{{isVisible ? 'mat_outline:visibility' : 'mat_outline:visibility_off' }}\"></mat-icon>\r\n</button>", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
27
+ toggleVisibility() {
28
+ const newValue = !this.isVisible();
29
+ this.isVisibleChange.emit(newValue);
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatPassToggleVisibilityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: CmatPassToggleVisibilityComponent, isStandalone: true, selector: "cmat-pass-toggle-visibility", inputs: { isVisible: { classPropertyName: "isVisible", publicName: "isVisible", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isVisibleChange: "isVisibleChange" }, exportAs: ["cmatPassToggleVisibility"], ngImport: i0, template: "<button type=\"button\" class=\"matIconButton cdk-focused cdk-mouse-focused\" matIconButton \r\n matRipple [matRippleCentered]=\"true\" [attr.tabindex]=\"tabindex() ? tabindex() : null\" (click)=\"toggleVisibility()\">\r\n <mat-icon svgIcon=\"{{isVisible() ? 'mat_outline:visibility' : 'mat_outline:visibility_off' }}\"></mat-icon>\r\n</button>\r\n", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24
33
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatPassToggleVisibilityComponent, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatPassToggleVisibilityComponent, decorators: [{
26
35
  type: Component,
27
- args: [{ selector: 'cmat-pass-toggle-visibility', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatPassToggleVisibility', imports: [MatButtonModule, MatRippleModule, MatIconModule], template: "<button type=\"button\" class=\"matIconButton cdk-focused cdk-mouse-focused\" matIconButton \r\n matRipple [matRippleCentered]=\"true\" [attr.tabindex]=\"tabindex ? tabindex : null\" (click)=\"isVisible = !isVisible\">\r\n <mat-icon svgIcon=\"{{isVisible ? 'mat_outline:visibility' : 'mat_outline:visibility_off' }}\"></mat-icon>\r\n</button>" }]
28
- }], propDecorators: { isVisible: [{
29
- type: Input
30
- }], tabindex: [{
31
- type: Input
32
- }] } });
36
+ args: [{ selector: 'cmat-pass-toggle-visibility', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatPassToggleVisibility', imports: [MatButtonModule, MatRippleModule, MatIconModule], template: "<button type=\"button\" class=\"matIconButton cdk-focused cdk-mouse-focused\" matIconButton \r\n matRipple [matRippleCentered]=\"true\" [attr.tabindex]=\"tabindex() ? tabindex() : null\" (click)=\"toggleVisibility()\">\r\n <mat-icon svgIcon=\"{{isVisible() ? 'mat_outline:visibility' : 'mat_outline:visibility_off' }}\"></mat-icon>\r\n</button>\r\n" }]
37
+ }], propDecorators: { isVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "isVisible", required: false }] }], isVisibleChange: [{ type: i0.Output, args: ["isVisibleChange"] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }] } });
33
38
 
34
39
  /* eslint-disable @typescript-eslint/naming-convention */
35
40
  var Colors;
@@ -97,294 +102,336 @@ const RegExpValidator = {
97
102
 
98
103
  class CmatPasswordStrengthComponent {
99
104
  constructor() {
100
- this.enableLengthRule = true;
101
- this.enableLowerCaseLetterRule = true;
102
- this.enableUpperCaseLetterRule = true;
103
- this.enableDigitRule = true;
104
- this.enableSpecialCharRule = true;
105
- this.min = 8;
106
- this.max = 30;
107
- this.warnThreshold = 21;
108
- this.accentThreshold = 81;
109
- this.strengthChanged = new EventEmitter();
110
- this.criteriaMap = new Map();
105
+ this.password = input('', /* @ts-ignore */
106
+ ...(ngDevMode ? [{ debugName: "password" }] : /* istanbul ignore next */ []));
107
+ this.externalError = input(false, /* @ts-ignore */
108
+ ...(ngDevMode ? [{ debugName: "externalError" }] : /* istanbul ignore next */ []));
109
+ this.enableLengthRule = input(true, /* @ts-ignore */
110
+ ...(ngDevMode ? [{ debugName: "enableLengthRule" }] : /* istanbul ignore next */ []));
111
+ this.enableLowerCaseLetterRule = input(true, /* @ts-ignore */
112
+ ...(ngDevMode ? [{ debugName: "enableLowerCaseLetterRule" }] : /* istanbul ignore next */ []));
113
+ this.enableUpperCaseLetterRule = input(true, /* @ts-ignore */
114
+ ...(ngDevMode ? [{ debugName: "enableUpperCaseLetterRule" }] : /* istanbul ignore next */ []));
115
+ this.enableDigitRule = input(true, /* @ts-ignore */
116
+ ...(ngDevMode ? [{ debugName: "enableDigitRule" }] : /* istanbul ignore next */ []));
117
+ this.enableSpecialCharRule = input(true, /* @ts-ignore */
118
+ ...(ngDevMode ? [{ debugName: "enableSpecialCharRule" }] : /* istanbul ignore next */ []));
119
+ this.min = input(8, /* @ts-ignore */
120
+ ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
121
+ this.max = input(30, /* @ts-ignore */
122
+ ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
123
+ this.customValidator = input(/* @ts-ignore */
124
+ ...(ngDevMode ? [undefined, { debugName: "customValidator" }] : /* istanbul ignore next */ []));
125
+ this.warnThreshold = input(21, /* @ts-ignore */
126
+ ...(ngDevMode ? [{ debugName: "warnThreshold" }] : /* istanbul ignore next */ []));
127
+ this.accentThreshold = input(81, /* @ts-ignore */
128
+ ...(ngDevMode ? [{ debugName: "accentThreshold" }] : /* istanbul ignore next */ []));
129
+ this.strengthChanged = output();
130
+ this.criteriaMap = signal(new Map(), /* @ts-ignore */
131
+ ...(ngDevMode ? [{ debugName: "criteriaMap" }] : /* istanbul ignore next */ []));
132
+ this.containAtLeastMinChars = signal(false, /* @ts-ignore */
133
+ ...(ngDevMode ? [{ debugName: "containAtLeastMinChars" }] : /* istanbul ignore next */ []));
134
+ this.containAtLeastOneLowerCaseLetter = signal(false, /* @ts-ignore */
135
+ ...(ngDevMode ? [{ debugName: "containAtLeastOneLowerCaseLetter" }] : /* istanbul ignore next */ []));
136
+ this.containAtLeastOneUpperCaseLetter = signal(false, /* @ts-ignore */
137
+ ...(ngDevMode ? [{ debugName: "containAtLeastOneUpperCaseLetter" }] : /* istanbul ignore next */ []));
138
+ this.containAtLeastOneDigit = signal(false, /* @ts-ignore */
139
+ ...(ngDevMode ? [{ debugName: "containAtLeastOneDigit" }] : /* istanbul ignore next */ []));
140
+ this.containAtLeastOneSpecialChar = signal(false, /* @ts-ignore */
141
+ ...(ngDevMode ? [{ debugName: "containAtLeastOneSpecialChar" }] : /* istanbul ignore next */ []));
142
+ this.containAtCustomChars = signal(false, /* @ts-ignore */
143
+ ...(ngDevMode ? [{ debugName: "containAtCustomChars" }] : /* istanbul ignore next */ []));
111
144
  this.passwordFormControl = new FormControl();
112
145
  this.passwordConfirmationFormControl = new FormControl();
113
- this.validatorsArray = [];
146
+ this.validatorsArray = signal([], /* @ts-ignore */
147
+ ...(ngDevMode ? [{ debugName: "validatorsArray" }] : /* istanbul ignore next */ []));
148
+ this.validators = signal(null, /* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "validators" }] : /* istanbul ignore next */ []));
150
+ this.strength = computed(() => this._strength() || 0, /* @ts-ignore */
151
+ ...(ngDevMode ? [{ debugName: "strength" }] : /* istanbul ignore next */ []));
152
+ this.color = computed(() => this._color(), /* @ts-ignore */
153
+ ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
114
154
  this.cmatPasswordStrengthValidator = new CmatPasswordStrengthValidator();
115
- this._strength = 0;
116
- this._color = 'warn';
117
- }
118
- get strength() {
119
- return this._strength ? this._strength : 0;
120
- }
121
- get color() {
122
- return this._color;
123
- }
124
- ngOnInit() {
155
+ this._strength = signal(0, /* @ts-ignore */
156
+ ...(ngDevMode ? [{ debugName: "_strength" }] : /* istanbul ignore next */ []));
157
+ this._color = signal('warn', /* @ts-ignore */
158
+ ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
159
+ this._isProcessingEffect = false;
160
+ // 初始化时设置一次验证器
125
161
  this.setRulesAndValidators();
126
- if (this.password) {
127
- this.calculatePasswordStrength();
128
- }
129
- }
130
- ngOnChanges(changes) {
131
- if ((changes['externalError']?.firstChange) || (changes['password']?.isFirstChange())) {
132
- return;
133
- }
134
- else if (changes['externalError']?.currentValue) {
135
- this._color = Colors.warn;
136
- return;
137
- }
138
- else if (changes['password'] && changes['password'].previousValue === changes['password'].currentValue && !changes['password'].firstChange) {
139
- this._checkPassword();
140
- }
141
- else if (this.password && this.password.length > 0) {
142
- this._checkPassword();
143
- }
144
- else {
145
- this.reset();
146
- }
162
+ effect(() => {
163
+ if (this._isProcessingEffect) {
164
+ return;
165
+ }
166
+ const pwd = this.password();
167
+ untracked(() => {
168
+ // 密码为空时重置
169
+ if (!pwd || pwd.length === 0) {
170
+ this.reset();
171
+ return;
172
+ }
173
+ // 密码存在时计算强度(不重建验证器)
174
+ this.calculatePasswordStrength(false);
175
+ });
176
+ });
177
+ effect(() => {
178
+ if (this._isProcessingEffect) {
179
+ return;
180
+ }
181
+ const extError = this.externalError();
182
+ if (extError) {
183
+ this._color.set(Colors.warn);
184
+ }
185
+ });
186
+ // 监听配置变化,重新构建验证器
187
+ effect(() => {
188
+ if (this._isProcessingEffect) {
189
+ return;
190
+ }
191
+ // 读取所有配置项,任何一项变化都会触发此 effect
192
+ this.enableLengthRule();
193
+ this.enableLowerCaseLetterRule();
194
+ this.enableUpperCaseLetterRule();
195
+ this.enableDigitRule();
196
+ this.enableSpecialCharRule();
197
+ this.min();
198
+ this.max();
199
+ this.customValidator();
200
+ untracked(() => {
201
+ // 配置变化时重新构建验证器
202
+ this.setRulesAndValidators();
203
+ // 如果当前有密码,重新计算强度
204
+ const pwd = this.password();
205
+ if (pwd && pwd.length > 0) {
206
+ this.calculatePasswordStrength(false);
207
+ }
208
+ });
209
+ });
147
210
  }
148
211
  parseCustomValidatorsRegex() {
149
- if (this.customValidator instanceof RegExp) {
150
- return this.customValidator;
212
+ const validator = this.customValidator();
213
+ if (validator instanceof RegExp) {
214
+ return validator;
151
215
  }
152
216
  else {
153
- return RegExp(this.customValidator);
217
+ return RegExp(validator);
154
218
  }
155
219
  }
156
220
  setRulesAndValidators() {
157
- this.validatorsArray = [];
158
- this.criteriaMap = new Map();
221
+ this.validatorsArray.set([]);
222
+ this.criteriaMap.set(new Map());
159
223
  this.passwordConfirmationFormControl
160
224
  .setValidators(Validators.compose([
161
- Validators.required, this.cmatPasswordStrengthValidator.confirm(this.password)
225
+ Validators.required, this.cmatPasswordStrengthValidator.confirm(this.password())
162
226
  ]));
163
- this.validatorsArray.push(Validators.required);
164
- if (this.enableLengthRule) {
165
- this.criteriaMap.set(Criteria.at_least_eight_chars, RegExp(`^.{${this.min},${this.max}}$`));
166
- this.validatorsArray.push(Validators.minLength(this.min));
167
- this.validatorsArray.push(Validators.maxLength(this.max));
168
- }
169
- if (this.enableLowerCaseLetterRule) {
170
- this.criteriaMap.set(Criteria.at_least_one_lower_case_char, RegExpValidator.lowerCase);
171
- this.validatorsArray.push(Validators.pattern(RegExpValidator.lowerCase));
172
- }
173
- if (this.enableUpperCaseLetterRule) {
174
- this.criteriaMap.set(Criteria.at_least_one_upper_case_char, RegExpValidator.upperCase);
175
- this.validatorsArray.push(Validators.pattern(RegExpValidator.upperCase));
176
- }
177
- if (this.enableDigitRule) {
178
- this.criteriaMap.set(Criteria.at_least_one_digit_char, RegExpValidator.digit);
179
- this.validatorsArray.push(Validators.pattern(RegExpValidator.digit));
180
- }
181
- if (this.enableSpecialCharRule) {
182
- this.criteriaMap.set(Criteria.at_least_one_special_char, RegExpValidator.specialChar);
183
- this.validatorsArray.push(Validators.pattern(RegExpValidator.specialChar));
184
- }
185
- if (this.customValidator) {
186
- this.criteriaMap.set(Criteria.at_custom_chars, this.parseCustomValidatorsRegex());
187
- this.validatorsArray.push(Validators.pattern(this.parseCustomValidatorsRegex()));
188
- }
189
- this.criteriaMap.forEach((value, key) => {
190
- this.validatorsArray.push(this.cmatPasswordStrengthValidator.validate(key, value));
227
+ const validators = [Validators.required];
228
+ if (this.enableLengthRule()) {
229
+ this.criteriaMap().set(Criteria.at_least_eight_chars, RegExp(`^.{${this.min()},${this.max()}}$`));
230
+ validators.push(Validators.minLength(this.min()));
231
+ validators.push(Validators.maxLength(this.max()));
232
+ }
233
+ if (this.enableLowerCaseLetterRule()) {
234
+ this.criteriaMap().set(Criteria.at_least_one_lower_case_char, RegExpValidator.lowerCase);
235
+ validators.push(Validators.pattern(RegExpValidator.lowerCase));
236
+ }
237
+ if (this.enableUpperCaseLetterRule()) {
238
+ this.criteriaMap().set(Criteria.at_least_one_upper_case_char, RegExpValidator.upperCase);
239
+ validators.push(Validators.pattern(RegExpValidator.upperCase));
240
+ }
241
+ if (this.enableDigitRule()) {
242
+ this.criteriaMap().set(Criteria.at_least_one_digit_char, RegExpValidator.digit);
243
+ validators.push(Validators.pattern(RegExpValidator.digit));
244
+ }
245
+ if (this.enableSpecialCharRule()) {
246
+ this.criteriaMap().set(Criteria.at_least_one_special_char, RegExpValidator.specialChar);
247
+ validators.push(Validators.pattern(RegExpValidator.specialChar));
248
+ }
249
+ if (this.customValidator()) {
250
+ this.criteriaMap().set(Criteria.at_custom_chars, this.parseCustomValidatorsRegex());
251
+ validators.push(Validators.pattern(this.parseCustomValidatorsRegex()));
252
+ }
253
+ this.criteriaMap().forEach((value, key) => {
254
+ validators.push(this.cmatPasswordStrengthValidator.validate(key, value));
191
255
  });
192
- this.passwordFormControl.setValidators(Validators.compose([...this.validatorsArray]));
193
- this.validators = Validators.compose([...this.validatorsArray]);
256
+ this.passwordFormControl.setValidators(Validators.compose([...validators]));
257
+ this.validatorsArray.set(validators);
258
+ this.validators.set(Validators.compose([...validators]));
194
259
  }
195
- calculatePasswordStrength() {
196
- const requirements = [];
197
- const unit = 100 / this.criteriaMap.size;
198
- requirements.push(this.enableLengthRule ? this._containAtLeastMinChars() : false, this.enableLowerCaseLetterRule ? this._containAtLeastOneLowerCaseLetter() : false, this.enableUpperCaseLetterRule ? this._containAtLeastOneUpperCaseLetter() : false, this.enableDigitRule ? this._containAtLeastOneDigit() : false, this.enableSpecialCharRule ? this._containAtLeastOneSpecialChar() : false, this.customValidator ? this._containCustomChars() : false);
199
- this._strength = requirements.filter(v => v).length * unit;
200
- this.strengthChanged.emit(this.strength);
201
- this.setRulesAndValidators();
202
- if (this._strength < this.warnThreshold) {
203
- this._color = Colors.warn;
204
- }
205
- else if (this._strength < this.accentThreshold) {
206
- this._color = Colors.accent;
260
+ calculatePasswordStrength(rebuildValidators = false) {
261
+ try {
262
+ this._isProcessingEffect = true;
263
+ // 如果需要重建验证器(仅在配置变化时)
264
+ if (rebuildValidators) {
265
+ this.setRulesAndValidators();
266
+ }
267
+ const requirements = [];
268
+ const unit = 100 / this.criteriaMap().size;
269
+ requirements.push(this.enableLengthRule() ? this._containAtLeastMinChars() : false, this.enableLowerCaseLetterRule() ? this._containAtLeastOneLowerCaseLetter() : false, this.enableUpperCaseLetterRule() ? this._containAtLeastOneUpperCaseLetter() : false, this.enableDigitRule() ? this._containAtLeastOneDigit() : false, this.enableSpecialCharRule() ? this._containAtLeastOneSpecialChar() : false, this.customValidator() ? this._containCustomChars() : false);
270
+ this._strength.set(requirements.filter(v => v).length * unit);
271
+ this.strengthChanged.emit(this.strength());
272
+ const currentStrength = this._strength();
273
+ if (currentStrength < this.warnThreshold()) {
274
+ this._color.set(Colors.warn);
275
+ }
276
+ else if (currentStrength < this.accentThreshold()) {
277
+ this._color.set(Colors.accent);
278
+ }
279
+ else {
280
+ this._color.set(Colors.primary);
281
+ }
207
282
  }
208
- else {
209
- this._color = Colors.primary;
283
+ finally {
284
+ this._isProcessingEffect = false;
210
285
  }
211
286
  }
212
287
  reset() {
213
- this._strength = 0;
214
- this.containAtLeastMinChars =
215
- this.containAtLeastOneLowerCaseLetter =
216
- this.containAtLeastOneUpperCaseLetter =
217
- this.containAtLeastOneDigit =
218
- this.containAtCustomChars =
219
- this.containAtLeastOneSpecialChar = false;
220
- this._color = Colors.warn;
221
- this.strengthChanged.emit(this.strength);
288
+ try {
289
+ this._isProcessingEffect = true;
290
+ this._strength.set(0);
291
+ this.containAtLeastMinChars.set(false);
292
+ this.containAtLeastOneLowerCaseLetter.set(false);
293
+ this.containAtLeastOneUpperCaseLetter.set(false);
294
+ this.containAtLeastOneDigit.set(false);
295
+ this.containAtCustomChars.set(false);
296
+ this.containAtLeastOneSpecialChar.set(false);
297
+ this._color.set(Colors.warn);
298
+ this.strengthChanged.emit(this.strength());
299
+ }
300
+ finally {
301
+ this._isProcessingEffect = false;
302
+ }
222
303
  }
223
304
  _containAtLeastMinChars() {
224
- this.containAtLeastMinChars = this.password.length >= this.min;
225
- return this.containAtLeastMinChars;
305
+ const result = this.password().length >= this.min();
306
+ this.containAtLeastMinChars.set(result);
307
+ return result;
226
308
  }
227
309
  _containAtLeastOneLowerCaseLetter() {
228
- this.containAtLeastOneLowerCaseLetter =
229
- this.criteriaMap
230
- .get(Criteria.at_least_one_lower_case_char)?.test(this.password);
231
- return this.containAtLeastOneLowerCaseLetter ?? false;
310
+ const result = this.criteriaMap()
311
+ .get(Criteria.at_least_one_lower_case_char)?.test(this.password());
312
+ this.containAtLeastOneLowerCaseLetter.set(result);
313
+ return result ?? false;
232
314
  }
233
315
  _containAtLeastOneUpperCaseLetter() {
234
- this.containAtLeastOneUpperCaseLetter =
235
- this.criteriaMap
236
- .get(Criteria.at_least_one_upper_case_char)?.test(this.password);
237
- return this.containAtLeastOneUpperCaseLetter ?? false;
316
+ const result = this.criteriaMap()
317
+ .get(Criteria.at_least_one_upper_case_char)?.test(this.password());
318
+ this.containAtLeastOneUpperCaseLetter.set(result);
319
+ return result ?? false;
238
320
  }
239
321
  _containAtLeastOneDigit() {
240
- this.containAtLeastOneDigit =
241
- this.criteriaMap
242
- .get(Criteria.at_least_one_digit_char)?.test(this.password);
243
- return this.containAtLeastOneDigit ?? false;
322
+ const result = this.criteriaMap()
323
+ .get(Criteria.at_least_one_digit_char)?.test(this.password());
324
+ this.containAtLeastOneDigit.set(result);
325
+ return result ?? false;
244
326
  }
245
327
  _containAtLeastOneSpecialChar() {
246
- this.containAtLeastOneSpecialChar =
247
- this.criteriaMap
248
- .get(Criteria.at_least_one_special_char)?.test(this.password);
249
- return this.containAtLeastOneSpecialChar ?? false;
328
+ const result = this.criteriaMap()
329
+ .get(Criteria.at_least_one_special_char)?.test(this.password());
330
+ this.containAtLeastOneSpecialChar.set(result);
331
+ return result ?? false;
250
332
  }
251
333
  _containCustomChars() {
252
- this.containAtCustomChars =
253
- this.criteriaMap
254
- .get(Criteria.at_custom_chars)?.test(this.password);
255
- return this.containAtCustomChars ?? false;
334
+ const result = this.criteriaMap()
335
+ .get(Criteria.at_custom_chars)?.test(this.password());
336
+ this.containAtCustomChars.set(result);
337
+ return result ?? false;
256
338
  }
257
339
  _checkPassword() {
258
340
  this.calculatePasswordStrength();
259
341
  this.passwordConfirmationFormControl.updateValueAndValidity();
260
342
  }
261
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatPasswordStrengthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
262
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: CmatPasswordStrengthComponent, isStandalone: true, selector: "cmat-password-strength", inputs: { password: "password", externalError: "externalError", enableLengthRule: "enableLengthRule", enableLowerCaseLetterRule: "enableLowerCaseLetterRule", enableUpperCaseLetterRule: "enableUpperCaseLetterRule", enableDigitRule: "enableDigitRule", enableSpecialCharRule: "enableSpecialCharRule", min: "min", max: "max", customValidator: "customValidator", warnThreshold: "warnThreshold", accentThreshold: "accentThreshold" }, outputs: { strengthChanged: "strengthChanged" }, exportAs: ["cmatPasswordStrength"], usesOnChanges: true, ngImport: i0, template: "<mat-progress-bar mode=\"determinate\" [color]=\"color\" [value]=\"strength\"></mat-progress-bar>", dependencies: [{ kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
343
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatPasswordStrengthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
344
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: CmatPasswordStrengthComponent, isStandalone: true, selector: "cmat-password-strength", inputs: { password: { classPropertyName: "password", publicName: "password", isSignal: true, isRequired: false, transformFunction: null }, externalError: { classPropertyName: "externalError", publicName: "externalError", isSignal: true, isRequired: false, transformFunction: null }, enableLengthRule: { classPropertyName: "enableLengthRule", publicName: "enableLengthRule", isSignal: true, isRequired: false, transformFunction: null }, enableLowerCaseLetterRule: { classPropertyName: "enableLowerCaseLetterRule", publicName: "enableLowerCaseLetterRule", isSignal: true, isRequired: false, transformFunction: null }, enableUpperCaseLetterRule: { classPropertyName: "enableUpperCaseLetterRule", publicName: "enableUpperCaseLetterRule", isSignal: true, isRequired: false, transformFunction: null }, enableDigitRule: { classPropertyName: "enableDigitRule", publicName: "enableDigitRule", isSignal: true, isRequired: false, transformFunction: null }, enableSpecialCharRule: { classPropertyName: "enableSpecialCharRule", publicName: "enableSpecialCharRule", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, customValidator: { classPropertyName: "customValidator", publicName: "customValidator", isSignal: true, isRequired: false, transformFunction: null }, warnThreshold: { classPropertyName: "warnThreshold", publicName: "warnThreshold", isSignal: true, isRequired: false, transformFunction: null }, accentThreshold: { classPropertyName: "accentThreshold", publicName: "accentThreshold", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { strengthChanged: "strengthChanged" }, exportAs: ["cmatPasswordStrength"], ngImport: i0, template: "<mat-progress-bar mode=\"determinate\" [color]=\"color()\" [value]=\"strength()\"></mat-progress-bar>", dependencies: [{ kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
263
345
  }
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatPasswordStrengthComponent, decorators: [{
346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatPasswordStrengthComponent, decorators: [{
265
347
  type: Component,
266
- args: [{ selector: 'cmat-password-strength', exportAs: 'cmatPasswordStrength', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatProgressBarModule], template: "<mat-progress-bar mode=\"determinate\" [color]=\"color\" [value]=\"strength\"></mat-progress-bar>" }]
267
- }], propDecorators: { password: [{
268
- type: Input
269
- }], externalError: [{
270
- type: Input
271
- }], enableLengthRule: [{
272
- type: Input
273
- }], enableLowerCaseLetterRule: [{
274
- type: Input
275
- }], enableUpperCaseLetterRule: [{
276
- type: Input
277
- }], enableDigitRule: [{
278
- type: Input
279
- }], enableSpecialCharRule: [{
280
- type: Input
281
- }], min: [{
282
- type: Input
283
- }], max: [{
284
- type: Input
285
- }], customValidator: [{
286
- type: Input
287
- }], warnThreshold: [{
288
- type: Input
289
- }], accentThreshold: [{
290
- type: Input
291
- }], strengthChanged: [{
292
- type: Output
293
- }] } });
348
+ args: [{ selector: 'cmat-password-strength', exportAs: 'cmatPasswordStrength', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatProgressBarModule], template: "<mat-progress-bar mode=\"determinate\" [color]=\"color()\" [value]=\"strength()\"></mat-progress-bar>" }]
349
+ }], ctorParameters: () => [], propDecorators: { password: [{ type: i0.Input, args: [{ isSignal: true, alias: "password", required: false }] }], externalError: [{ type: i0.Input, args: [{ isSignal: true, alias: "externalError", required: false }] }], enableLengthRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLengthRule", required: false }] }], enableLowerCaseLetterRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableLowerCaseLetterRule", required: false }] }], enableUpperCaseLetterRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableUpperCaseLetterRule", required: false }] }], enableDigitRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDigitRule", required: false }] }], enableSpecialCharRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableSpecialCharRule", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], customValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "customValidator", required: false }] }], warnThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "warnThreshold", required: false }] }], accentThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "accentThreshold", required: false }] }], strengthChanged: [{ type: i0.Output, args: ["strengthChanged"] }] } });
294
350
 
295
351
  class CmatPasswordStrengthInfoComponent {
296
352
  constructor() {
297
- this.enableScoreInfo = false;
298
- this.lowerCaseCriteriaMsg = '包含至少一个小写字母';
299
- this.upperCaseCriteriaMsg = '包含至少一个大写字母';
300
- this.digitsCriteriaMsg = '包含至少一个数字';
301
- this.specialCharsCriteriaMsg = '包含至少一个特殊字符';
302
- this.customCharsCriteriaMsg = '包含至少一个传统字符';
303
- this.pageLoaded = signal(false, ...(ngDevMode ? [{ debugName: "pageLoaded" }] : /* istanbul ignore next */ []));
304
- }
305
- ngOnInit() {
306
- if (!this.minCharsCriteriaMsg) {
307
- this.minCharsCriteriaMsg = `包含至少 ${this.passwordComponent.min} 个字符`;
308
- }
309
- }
310
- ngAfterViewInit() {
353
+ this.passwordComponent = input.required(/* @ts-ignore */
354
+ ...(ngDevMode ? [{ debugName: "passwordComponent" }] : /* istanbul ignore next */ []));
355
+ this.enableScoreInfo = input(false, /* @ts-ignore */
356
+ ...(ngDevMode ? [{ debugName: "enableScoreInfo" }] : /* istanbul ignore next */ []));
357
+ this.lowerCaseCriteriaMsg = input('包含至少一个小写字母', /* @ts-ignore */
358
+ ...(ngDevMode ? [{ debugName: "lowerCaseCriteriaMsg" }] : /* istanbul ignore next */ []));
359
+ this.upperCaseCriteriaMsg = input('包含至少一个大写字母', /* @ts-ignore */
360
+ ...(ngDevMode ? [{ debugName: "upperCaseCriteriaMsg" }] : /* istanbul ignore next */ []));
361
+ this.digitsCriteriaMsg = input('包含至少一个数字', /* @ts-ignore */
362
+ ...(ngDevMode ? [{ debugName: "digitsCriteriaMsg" }] : /* istanbul ignore next */ []));
363
+ this.specialCharsCriteriaMsg = input('包含至少一个特殊字符', /* @ts-ignore */
364
+ ...(ngDevMode ? [{ debugName: "specialCharsCriteriaMsg" }] : /* istanbul ignore next */ []));
365
+ this.customCharsCriteriaMsg = input('包含至少一个传统字符', /* @ts-ignore */
366
+ ...(ngDevMode ? [{ debugName: "customCharsCriteriaMsg" }] : /* istanbul ignore next */ []));
367
+ this.minCharsCriteriaMsg = input(/* @ts-ignore */
368
+ ...(ngDevMode ? [undefined, { debugName: "minCharsCriteriaMsg" }] : /* istanbul ignore next */ []));
369
+ this.pageLoaded = signal(false, /* @ts-ignore */
370
+ ...(ngDevMode ? [{ debugName: "pageLoaded" }] : /* istanbul ignore next */ []));
311
371
  setTimeout(() => {
312
372
  this.pageLoaded.set(true);
313
373
  }, 100);
314
374
  }
375
+ getMinCharsMsg() {
376
+ return this.minCharsCriteriaMsg() ?? `包含至少 ${this.passwordComponent().min()} 个字符`;
377
+ }
315
378
  getEnterIndex(itemType) {
316
379
  const enabledItems = [];
317
- if (this.passwordComponent.enableLowerCaseLetterRule) {
380
+ if (this.passwordComponent().enableLowerCaseLetterRule()) {
318
381
  enabledItems.push('lowerCase');
319
382
  }
320
- if (this.passwordComponent.enableUpperCaseLetterRule) {
383
+ if (this.passwordComponent().enableUpperCaseLetterRule()) {
321
384
  enabledItems.push('upperCase');
322
385
  }
323
- if (this.passwordComponent.enableDigitRule) {
386
+ if (this.passwordComponent().enableDigitRule()) {
324
387
  enabledItems.push('digit');
325
388
  }
326
- if (this.passwordComponent.enableSpecialCharRule) {
389
+ if (this.passwordComponent().enableSpecialCharRule()) {
327
390
  enabledItems.push('specialChar');
328
391
  }
329
- if (this.passwordComponent.enableLengthRule) {
392
+ if (this.passwordComponent().enableLengthRule()) {
330
393
  enabledItems.push('length');
331
394
  }
332
- if (this.passwordComponent.customValidator) {
395
+ if (this.passwordComponent().customValidator()) {
333
396
  enabledItems.push('custom');
334
397
  }
335
- if (this.enableScoreInfo) {
398
+ if (this.enableScoreInfo()) {
336
399
  enabledItems.push('score');
337
400
  }
338
401
  return enabledItems.findIndex(i => i === itemType);
339
402
  }
340
403
  getLeaveIndex(itemType) {
341
404
  const enabledItems = [];
342
- if (this.passwordComponent.enableLowerCaseLetterRule) {
405
+ if (this.passwordComponent().enableLowerCaseLetterRule()) {
343
406
  enabledItems.push('lowerCase');
344
407
  }
345
- if (this.passwordComponent.enableUpperCaseLetterRule) {
408
+ if (this.passwordComponent().enableUpperCaseLetterRule()) {
346
409
  enabledItems.push('upperCase');
347
410
  }
348
- if (this.passwordComponent.enableDigitRule) {
411
+ if (this.passwordComponent().enableDigitRule()) {
349
412
  enabledItems.push('digit');
350
413
  }
351
- if (this.passwordComponent.enableSpecialCharRule) {
414
+ if (this.passwordComponent().enableSpecialCharRule()) {
352
415
  enabledItems.push('specialChar');
353
416
  }
354
- if (this.passwordComponent.enableLengthRule) {
417
+ if (this.passwordComponent().enableLengthRule()) {
355
418
  enabledItems.push('length');
356
419
  }
357
- if (this.passwordComponent.customValidator) {
420
+ if (this.passwordComponent().customValidator()) {
358
421
  enabledItems.push('custom');
359
422
  }
360
- if (this.enableScoreInfo) {
423
+ if (this.enableScoreInfo()) {
361
424
  enabledItems.push('score');
362
425
  }
363
426
  return enabledItems.length - enabledItems.findIndex(j => j === itemType) - 1;
364
427
  }
365
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatPasswordStrengthInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
366
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: CmatPasswordStrengthInfoComponent, isStandalone: true, selector: "cmat-password-strength-info", inputs: { passwordComponent: "passwordComponent", enableScoreInfo: "enableScoreInfo", lowerCaseCriteriaMsg: "lowerCaseCriteriaMsg", upperCaseCriteriaMsg: "upperCaseCriteriaMsg", digitsCriteriaMsg: "digitsCriteriaMsg", specialCharsCriteriaMsg: "specialCharsCriteriaMsg", customCharsCriteriaMsg: "customCharsCriteriaMsg", minCharsCriteriaMsg: "minCharsCriteriaMsg" }, exportAs: ["cmatPasswordStrengthInfo"], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/no-inline-styles -->\r\n<mat-card class=\"info-card\">\r\n <mat-card-content>\r\n @if (passwordComponent.enableLowerCaseLetterRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('lowerCase')\" [style.--leave-item-index]=\"getLeaveIndex('lowerCase')\">\r\n @if (passwordComponent.containAtLeastOneLowerCaseLetter) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{lowerCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableUpperCaseLetterRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('upperCase')\" [style.--leave-item-index]=\"getLeaveIndex('upperCase')\">\r\n @if (passwordComponent.containAtLeastOneUpperCaseLetter) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{upperCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableDigitRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('digit')\" [style.--leave-item-index]=\"getLeaveIndex('digit')\">\r\n @if (passwordComponent.containAtLeastOneDigit) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{digitsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableSpecialCharRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('specialChar')\"\r\n [style.--leave-item-index]=\"getLeaveIndex('specialChar')\">\r\n @if (passwordComponent.containAtLeastOneSpecialChar) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{specialCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableLengthRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('length')\" [style.--leave-item-index]=\"getLeaveIndex('length')\">\r\n @if (passwordComponent.containAtLeastMinChars) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{minCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.customValidator) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('custom')\" [style.--leave-item-index]=\"getLeaveIndex('custom')\">\r\n @if (passwordComponent.containAtCustomChars) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n }\r\n <span>{{customCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (enableScoreInfo) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('score')\" [style.--leave-item-index]=\"getLeaveIndex('score')\">\r\n @if (passwordComponent.strength === 100) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n }\r\n <span>\u7035\u55D9\u721C\u5BEE\u54C4\u5BB3= {{passwordComponent.strength}} %100</span>\r\n </div>\r\n }\r\n\r\n </mat-card-content>\r\n<!-- eslint-enable @angular-eslint/template/no-inline-styles -->\r\n</mat-card>\r\n", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}cmat-password-strength-info .info-card .info-row.info-row-enter{transition-property:opacity,transform;transition-delay:calc(.3s * var(--enter-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5)}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-enter{transform:scale(.5);opacity:0}}cmat-password-strength-info .info-card .info-row.info-row-leave{transition-property:opacity,transform,height;transition-delay:calc(.3s * var(--leave-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5);opacity:0;transform:scale(.5);height:0;margin:0}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-leave{transform:scale(1);opacity:1;height:inherit}}cmat-password-strength-info .shake-info-animation{animation:shake 1s}cmat-password-strength-info .flip-in-x-animation{backface-visibility:visible;animation:flipInX 1s ease-in}cmat-password-strength-info .flip-in-y-animation{backface-visibility:visible;animation:flipInY 1s ease-in}@keyframes shake{0%{transform:translateZ(0)}10%{transform:translate3d(-10px,0,0)}20%{transform:translate3d(10px,0,0)}30%{transform:translate3d(-10px,0,0)}40%{transform:translate3d(10px,0,0)}50%{transform:translate3d(-10px,0,0)}60%{transform:translate3d(10px,0,0)}70%{transform:translate3d(-10px,0,0)}80%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes flipInX{0%{opacity:0;transform:perspective(400px) rotateX(90deg)}40%{opacity:1;transform:perspective(400px) rotateX(-20deg)}60%{transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}@keyframes flipInY{0%{opacity:0;transform:perspective(400px) rotateY(90deg)}40%{opacity:1;transform:perspective(400px) rotateY(-20deg)}60%{transform:perspective(400px) rotateY(10deg)}80%{transform:perspective(400px) rotateY(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1$2.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None }); }
428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatPasswordStrengthInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
429
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: CmatPasswordStrengthInfoComponent, isStandalone: true, selector: "cmat-password-strength-info", inputs: { passwordComponent: { classPropertyName: "passwordComponent", publicName: "passwordComponent", isSignal: true, isRequired: true, transformFunction: null }, enableScoreInfo: { classPropertyName: "enableScoreInfo", publicName: "enableScoreInfo", isSignal: true, isRequired: false, transformFunction: null }, lowerCaseCriteriaMsg: { classPropertyName: "lowerCaseCriteriaMsg", publicName: "lowerCaseCriteriaMsg", isSignal: true, isRequired: false, transformFunction: null }, upperCaseCriteriaMsg: { classPropertyName: "upperCaseCriteriaMsg", publicName: "upperCaseCriteriaMsg", isSignal: true, isRequired: false, transformFunction: null }, digitsCriteriaMsg: { classPropertyName: "digitsCriteriaMsg", publicName: "digitsCriteriaMsg", isSignal: true, isRequired: false, transformFunction: null }, specialCharsCriteriaMsg: { classPropertyName: "specialCharsCriteriaMsg", publicName: "specialCharsCriteriaMsg", isSignal: true, isRequired: false, transformFunction: null }, customCharsCriteriaMsg: { classPropertyName: "customCharsCriteriaMsg", publicName: "customCharsCriteriaMsg", isSignal: true, isRequired: false, transformFunction: null }, minCharsCriteriaMsg: { classPropertyName: "minCharsCriteriaMsg", publicName: "minCharsCriteriaMsg", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["cmatPasswordStrengthInfo"], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/no-inline-styles -->\r\n<mat-card class=\"info-card\">\r\n <mat-card-content>\r\n @if (passwordComponent().enableLowerCaseLetterRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('lowerCase')\" [style.--leave-item-index]=\"getLeaveIndex('lowerCase')\">\r\n @if (passwordComponent().containAtLeastOneLowerCaseLetter()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{lowerCaseCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableUpperCaseLetterRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('upperCase')\" [style.--leave-item-index]=\"getLeaveIndex('upperCase')\">\r\n @if (passwordComponent().containAtLeastOneUpperCaseLetter()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{upperCaseCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableDigitRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('digit')\" [style.--leave-item-index]=\"getLeaveIndex('digit')\">\r\n @if (passwordComponent().containAtLeastOneDigit()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{digitsCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableSpecialCharRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('specialChar')\"\r\n [style.--leave-item-index]=\"getLeaveIndex('specialChar')\">\r\n @if (passwordComponent().containAtLeastOneSpecialChar()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{specialCharsCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableLengthRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('length')\" [style.--leave-item-index]=\"getLeaveIndex('length')\">\r\n @if (passwordComponent().containAtLeastMinChars()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{getMinCharsMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().customValidator()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('custom')\" [style.--leave-item-index]=\"getLeaveIndex('custom')\">\r\n @if (passwordComponent().containAtCustomChars()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{customCharsCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (enableScoreInfo()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('score')\" [style.--leave-item-index]=\"getLeaveIndex('score')\">\r\n @if (passwordComponent().strength() === 100) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>\u5BC6\u7801\u5F3A\u5EA6= {{passwordComponent().strength()}} %100</span>\r\n </div>\r\n }\r\n\r\n </mat-card-content>\r\n<!-- eslint-enable @angular-eslint/template/no-inline-styles -->\r\n</mat-card>\r\n", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}cmat-password-strength-info .info-card .info-row.info-row-enter{transition-property:opacity,transform;transition-delay:calc(.3s * var(--enter-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5)}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-enter{transform:scale(.5);opacity:0}}cmat-password-strength-info .info-card .info-row.info-row-leave{transition-property:opacity,transform,height;transition-delay:calc(.3s * var(--leave-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5);opacity:0;transform:scale(.5);height:0;margin:0}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-leave{transform:scale(1);opacity:1;height:inherit}}cmat-password-strength-info .shake-info-animation{animation:shake 1s}cmat-password-strength-info .flip-in-x-animation{backface-visibility:visible;animation:flipInX 1s ease-in}cmat-password-strength-info .flip-in-y-animation{backface-visibility:visible;animation:flipInY 1s ease-in}@keyframes shake{0%{transform:translateZ(0)}10%{transform:translate3d(-10px,0,0)}20%{transform:translate3d(10px,0,0)}30%{transform:translate3d(-10px,0,0)}40%{transform:translate3d(10px,0,0)}50%{transform:translate3d(-10px,0,0)}60%{transform:translate3d(10px,0,0)}70%{transform:translate3d(-10px,0,0)}80%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes flipInX{0%{opacity:0;transform:perspective(400px) rotateX(90deg)}40%{opacity:1;transform:perspective(400px) rotateX(-20deg)}60%{transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}@keyframes flipInY{0%{opacity:0;transform:perspective(400px) rotateY(90deg)}40%{opacity:1;transform:perspective(400px) rotateY(-20deg)}60%{transform:perspective(400px) rotateY(10deg)}80%{transform:perspective(400px) rotateY(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1$2.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None }); }
367
430
  }
368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatPasswordStrengthInfoComponent, decorators: [{
431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatPasswordStrengthInfoComponent, decorators: [{
369
432
  type: Component,
370
- args: [{ selector: 'cmat-password-strength-info', exportAs: 'cmatPasswordStrengthInfo', encapsulation: ViewEncapsulation.None, imports: [MatCardModule, MatIconModule], template: "<!-- eslint-disable @angular-eslint/template/no-inline-styles -->\r\n<mat-card class=\"info-card\">\r\n <mat-card-content>\r\n @if (passwordComponent.enableLowerCaseLetterRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('lowerCase')\" [style.--leave-item-index]=\"getLeaveIndex('lowerCase')\">\r\n @if (passwordComponent.containAtLeastOneLowerCaseLetter) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{lowerCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableUpperCaseLetterRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('upperCase')\" [style.--leave-item-index]=\"getLeaveIndex('upperCase')\">\r\n @if (passwordComponent.containAtLeastOneUpperCaseLetter) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{upperCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableDigitRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('digit')\" [style.--leave-item-index]=\"getLeaveIndex('digit')\">\r\n @if (passwordComponent.containAtLeastOneDigit) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{digitsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableSpecialCharRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('specialChar')\"\r\n [style.--leave-item-index]=\"getLeaveIndex('specialChar')\">\r\n @if (passwordComponent.containAtLeastOneSpecialChar) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{specialCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableLengthRule) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('length')\" [style.--leave-item-index]=\"getLeaveIndex('length')\">\r\n @if (passwordComponent.containAtLeastMinChars) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{minCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.customValidator) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('custom')\" [style.--leave-item-index]=\"getLeaveIndex('custom')\">\r\n @if (passwordComponent.containAtCustomChars) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n }\r\n <span>{{customCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (enableScoreInfo) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('score')\" [style.--leave-item-index]=\"getLeaveIndex('score')\">\r\n @if (passwordComponent.strength === 100) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded\"></mat-icon>\r\n }\r\n <span>\u7035\u55D9\u721C\u5BEE\u54C4\u5BB3= {{passwordComponent.strength}} %100</span>\r\n </div>\r\n }\r\n\r\n </mat-card-content>\r\n<!-- eslint-enable @angular-eslint/template/no-inline-styles -->\r\n</mat-card>\r\n", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}cmat-password-strength-info .info-card .info-row.info-row-enter{transition-property:opacity,transform;transition-delay:calc(.3s * var(--enter-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5)}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-enter{transform:scale(.5);opacity:0}}cmat-password-strength-info .info-card .info-row.info-row-leave{transition-property:opacity,transform,height;transition-delay:calc(.3s * var(--leave-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5);opacity:0;transform:scale(.5);height:0;margin:0}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-leave{transform:scale(1);opacity:1;height:inherit}}cmat-password-strength-info .shake-info-animation{animation:shake 1s}cmat-password-strength-info .flip-in-x-animation{backface-visibility:visible;animation:flipInX 1s ease-in}cmat-password-strength-info .flip-in-y-animation{backface-visibility:visible;animation:flipInY 1s ease-in}@keyframes shake{0%{transform:translateZ(0)}10%{transform:translate3d(-10px,0,0)}20%{transform:translate3d(10px,0,0)}30%{transform:translate3d(-10px,0,0)}40%{transform:translate3d(10px,0,0)}50%{transform:translate3d(-10px,0,0)}60%{transform:translate3d(10px,0,0)}70%{transform:translate3d(-10px,0,0)}80%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes flipInX{0%{opacity:0;transform:perspective(400px) rotateX(90deg)}40%{opacity:1;transform:perspective(400px) rotateX(-20deg)}60%{transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}@keyframes flipInY{0%{opacity:0;transform:perspective(400px) rotateY(90deg)}40%{opacity:1;transform:perspective(400px) rotateY(-20deg)}60%{transform:perspective(400px) rotateY(10deg)}80%{transform:perspective(400px) rotateY(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}\n"] }]
371
- }], propDecorators: { passwordComponent: [{
372
- type: Input
373
- }], enableScoreInfo: [{
374
- type: Input
375
- }], lowerCaseCriteriaMsg: [{
376
- type: Input
377
- }], upperCaseCriteriaMsg: [{
378
- type: Input
379
- }], digitsCriteriaMsg: [{
380
- type: Input
381
- }], specialCharsCriteriaMsg: [{
382
- type: Input
383
- }], customCharsCriteriaMsg: [{
384
- type: Input
385
- }], minCharsCriteriaMsg: [{
386
- type: Input
387
- }] } });
433
+ args: [{ selector: 'cmat-password-strength-info', exportAs: 'cmatPasswordStrengthInfo', encapsulation: ViewEncapsulation.None, imports: [MatCardModule, MatIconModule], template: "<!-- eslint-disable @angular-eslint/template/no-inline-styles -->\r\n<mat-card class=\"info-card\">\r\n <mat-card-content>\r\n @if (passwordComponent().enableLowerCaseLetterRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('lowerCase')\" [style.--leave-item-index]=\"getLeaveIndex('lowerCase')\">\r\n @if (passwordComponent().containAtLeastOneLowerCaseLetter()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{lowerCaseCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableUpperCaseLetterRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('upperCase')\" [style.--leave-item-index]=\"getLeaveIndex('upperCase')\">\r\n @if (passwordComponent().containAtLeastOneUpperCaseLetter()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{upperCaseCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableDigitRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('digit')\" [style.--leave-item-index]=\"getLeaveIndex('digit')\">\r\n @if (passwordComponent().containAtLeastOneDigit()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{digitsCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableSpecialCharRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('specialChar')\"\r\n [style.--leave-item-index]=\"getLeaveIndex('specialChar')\">\r\n @if (passwordComponent().containAtLeastOneSpecialChar()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{specialCharsCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().enableLengthRule()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('length')\" [style.--leave-item-index]=\"getLeaveIndex('length')\">\r\n @if (passwordComponent().containAtLeastMinChars()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{getMinCharsMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent().customValidator()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('custom')\" [style.--leave-item-index]=\"getLeaveIndex('custom')\">\r\n @if (passwordComponent().containAtCustomChars()) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>{{customCharsCriteriaMsg()}}</span>\r\n </div>\r\n }\r\n\r\n @if (enableScoreInfo()) {\r\n <div class=\"info-row info-row-enter\" animate.leave=\"info-row-leave\"\r\n [style.--enter-item-index]=\"getEnterIndex('score')\" [style.--leave-item-index]=\"getLeaveIndex('score')\">\r\n @if (passwordComponent().strength() === 100) {\r\n <mat-icon animate.enter=\"flip-in-x-animation\" color=\"primary\" svgIcon=\"mat_outline:done\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n } @else {\r\n <mat-icon animate.enter=\"shake-info-animation\" color=\"warn\" svgIcon=\"mat_outline:error\" [class.animate-none]=\"!pageLoaded()\"></mat-icon>\r\n }\r\n <span>\u5BC6\u7801\u5F3A\u5EA6= {{passwordComponent().strength()}} %100</span>\r\n </div>\r\n }\r\n\r\n </mat-card-content>\r\n<!-- eslint-enable @angular-eslint/template/no-inline-styles -->\r\n</mat-card>\r\n", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}cmat-password-strength-info .info-card .info-row.info-row-enter{transition-property:opacity,transform;transition-delay:calc(.3s * var(--enter-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5)}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-enter{transform:scale(.5);opacity:0}}cmat-password-strength-info .info-card .info-row.info-row-leave{transition-property:opacity,transform,height;transition-delay:calc(.3s * var(--leave-item-index, 0));transition-duration:1s;transition-timing-function:cubic-bezier(.8,-.6,.2,1.5);opacity:0;transform:scale(.5);height:0;margin:0}@starting-style{cmat-password-strength-info .info-card .info-row.info-row-leave{transform:scale(1);opacity:1;height:inherit}}cmat-password-strength-info .shake-info-animation{animation:shake 1s}cmat-password-strength-info .flip-in-x-animation{backface-visibility:visible;animation:flipInX 1s ease-in}cmat-password-strength-info .flip-in-y-animation{backface-visibility:visible;animation:flipInY 1s ease-in}@keyframes shake{0%{transform:translateZ(0)}10%{transform:translate3d(-10px,0,0)}20%{transform:translate3d(10px,0,0)}30%{transform:translate3d(-10px,0,0)}40%{transform:translate3d(10px,0,0)}50%{transform:translate3d(-10px,0,0)}60%{transform:translate3d(10px,0,0)}70%{transform:translate3d(-10px,0,0)}80%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes flipInX{0%{opacity:0;transform:perspective(400px) rotateX(90deg)}40%{opacity:1;transform:perspective(400px) rotateX(-20deg)}60%{transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}@keyframes flipInY{0%{opacity:0;transform:perspective(400px) rotateY(90deg)}40%{opacity:1;transform:perspective(400px) rotateY(-20deg)}60%{transform:perspective(400px) rotateY(10deg)}80%{transform:perspective(400px) rotateY(-5deg)}to{opacity:1;transform:perspective(400px) rotate3d(0,0,0,0)}}\n"] }]
434
+ }], ctorParameters: () => [], propDecorators: { passwordComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "passwordComponent", required: true }] }], enableScoreInfo: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableScoreInfo", required: false }] }], lowerCaseCriteriaMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "lowerCaseCriteriaMsg", required: false }] }], upperCaseCriteriaMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "upperCaseCriteriaMsg", required: false }] }], digitsCriteriaMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "digitsCriteriaMsg", required: false }] }], specialCharsCriteriaMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "specialCharsCriteriaMsg", required: false }] }], customCharsCriteriaMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "customCharsCriteriaMsg", required: false }] }], minCharsCriteriaMsg: [{ type: i0.Input, args: [{ isSignal: true, alias: "minCharsCriteriaMsg", required: false }] }] } });
388
435
 
389
436
  /**
390
437
  * Generated bundle index. Do not edit.