@cauca-911/material 20.2.13 → 20.2.14

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 (246) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -22
  3. package/fesm2022/cauca-911-material.mjs +4629 -0
  4. package/fesm2022/cauca-911-material.mjs.map +1 -0
  5. package/package.json +38 -23
  6. package/types/cauca-911-material.d.ts +795 -0
  7. package/.eslintrc.json +0 -77
  8. package/README_PACKAGE.md +0 -5
  9. package/karma.conf.js +0 -50
  10. package/ng-package.json +0 -7
  11. package/src/lib/cauca-material.component.html +0 -1
  12. package/src/lib/cauca-material.component.spec.ts +0 -29
  13. package/src/lib/cauca-material.component.ts +0 -12
  14. package/src/lib/cauca-material.service.spec.ts +0 -16
  15. package/src/lib/cauca-material.service.ts +0 -7
  16. package/src/lib/components/button/button.component.html +0 -52
  17. package/src/lib/components/button/button.component.scss +0 -6
  18. package/src/lib/components/button/button.component.spec.ts +0 -134
  19. package/src/lib/components/button/button.component.ts +0 -21
  20. package/src/lib/components/buttons/base-button.ts +0 -35
  21. package/src/lib/components/buttons/basic-button/basic-button.component.html +0 -5
  22. package/src/lib/components/buttons/basic-button/basic-button.component.scss +0 -12
  23. package/src/lib/components/buttons/basic-button/basic-button.component.spec.ts +0 -106
  24. package/src/lib/components/buttons/basic-button/basic-button.component.ts +0 -17
  25. package/src/lib/components/buttons/fab-button/fab-button.component.html +0 -3
  26. package/src/lib/components/buttons/fab-button/fab-button.component.scss +0 -12
  27. package/src/lib/components/buttons/fab-button/fab-button.component.spec.ts +0 -82
  28. package/src/lib/components/buttons/fab-button/fab-button.component.ts +0 -16
  29. package/src/lib/components/buttons/flat-button/flat-button.component.html +0 -5
  30. package/src/lib/components/buttons/flat-button/flat-button.component.scss +0 -12
  31. package/src/lib/components/buttons/flat-button/flat-button.component.spec.ts +0 -106
  32. package/src/lib/components/buttons/flat-button/flat-button.component.ts +0 -17
  33. package/src/lib/components/buttons/icon-button/icon-button.component.html +0 -3
  34. package/src/lib/components/buttons/icon-button/icon-button.component.scss +0 -23
  35. package/src/lib/components/buttons/icon-button/icon-button.component.spec.ts +0 -38
  36. package/src/lib/components/buttons/icon-button/icon-button.component.ts +0 -15
  37. package/src/lib/components/buttons/link-button/link-button.component.html +0 -1
  38. package/src/lib/components/buttons/link-button/link-button.component.scss +0 -3
  39. package/src/lib/components/buttons/link-button/link-button.component.spec.ts +0 -97
  40. package/src/lib/components/buttons/link-button/link-button.component.ts +0 -25
  41. package/src/lib/components/buttons/menu-item/menu-item.component.html +0 -5
  42. package/src/lib/components/buttons/menu-item/menu-item.component.scss +0 -6
  43. package/src/lib/components/buttons/menu-item/menu-item.component.spec.ts +0 -66
  44. package/src/lib/components/buttons/menu-item/menu-item.component.ts +0 -19
  45. package/src/lib/components/buttons/raised-button/raised-button.component.html +0 -5
  46. package/src/lib/components/buttons/raised-button/raised-button.component.scss +0 -12
  47. package/src/lib/components/buttons/raised-button/raised-button.component.spec.ts +0 -108
  48. package/src/lib/components/buttons/raised-button/raised-button.component.ts +0 -17
  49. package/src/lib/components/buttons/refresh-button/refresh-button.component.html +0 -1
  50. package/src/lib/components/buttons/refresh-button/refresh-button.component.scss +0 -0
  51. package/src/lib/components/buttons/refresh-button/refresh-button.component.spec.ts +0 -81
  52. package/src/lib/components/buttons/refresh-button/refresh-button.component.ts +0 -19
  53. package/src/lib/components/buttons/round-button/round-button.component.html +0 -3
  54. package/src/lib/components/buttons/round-button/round-button.component.scss +0 -34
  55. package/src/lib/components/buttons/round-button/round-button.component.spec.ts +0 -26
  56. package/src/lib/components/buttons/round-button/round-button.component.ts +0 -14
  57. package/src/lib/components/buttons/stroked-button/stroked-button.component.html +0 -5
  58. package/src/lib/components/buttons/stroked-button/stroked-button.component.scss +0 -23
  59. package/src/lib/components/buttons/stroked-button/stroked-button.component.spec.ts +0 -114
  60. package/src/lib/components/buttons/stroked-button/stroked-button.component.ts +0 -17
  61. package/src/lib/components/cauca-date-time-picker/cauca-date-time-picker.component.html +0 -9
  62. package/src/lib/components/cauca-date-time-picker/cauca-date-time-picker.component.scss +0 -7
  63. package/src/lib/components/cauca-date-time-picker/cauca-date-time-picker.component.spec.ts +0 -68
  64. package/src/lib/components/cauca-date-time-picker/cauca-date-time-picker.component.ts +0 -155
  65. package/src/lib/components/cauca-date-time-picker/components/desktop-time-picker/desktop-time-picker.component.html +0 -6
  66. package/src/lib/components/cauca-date-time-picker/components/desktop-time-picker/desktop-time-picker.component.scss +0 -25
  67. package/src/lib/components/cauca-date-time-picker/components/desktop-time-picker/desktop-time-picker.component.spec.ts +0 -23
  68. package/src/lib/components/cauca-date-time-picker/components/desktop-time-picker/desktop-time-picker.component.ts +0 -23
  69. package/src/lib/components/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.html +0 -53
  70. package/src/lib/components/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.scss +0 -124
  71. package/src/lib/components/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.spec.ts +0 -93
  72. package/src/lib/components/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.ts +0 -227
  73. package/src/lib/components/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.html +0 -9
  74. package/src/lib/components/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.scss +0 -15
  75. package/src/lib/components/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.spec.ts +0 -103
  76. package/src/lib/components/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.ts +0 -47
  77. package/src/lib/components/cauca-date-time-picker/models/dialog-date-time-picker-data.ts +0 -29
  78. package/src/lib/components/deprecated-components/cauca-input-file/cauca-input-file.component.html +0 -11
  79. package/src/lib/components/deprecated-components/cauca-input-file/cauca-input-file.component.scss +0 -3
  80. package/src/lib/components/deprecated-components/cauca-input-file/cauca-input-file.component.ts +0 -87
  81. package/src/lib/components/deprecated-components/cauca-input-multiple-langue/cauca-input-multiple-langue.component.html +0 -8
  82. package/src/lib/components/deprecated-components/cauca-input-multiple-langue/cauca-input-multiple-langue.component.scss +0 -3
  83. package/src/lib/components/deprecated-components/cauca-input-multiple-langue/cauca-input-multiple-langue.component.spec.ts +0 -35
  84. package/src/lib/components/deprecated-components/cauca-input-multiple-langue/cauca-input-multiple-langue.component.ts +0 -57
  85. package/src/lib/components/deprecated-components/cauca-menu-sidebar/cauca-menu-sidebar.component.html +0 -19
  86. package/src/lib/components/deprecated-components/cauca-menu-sidebar/cauca-menu-sidebar.component.scss +0 -142
  87. package/src/lib/components/deprecated-components/cauca-menu-sidebar/cauca-menu-sidebar.component.spec.ts +0 -30
  88. package/src/lib/components/deprecated-components/cauca-menu-sidebar/cauca-menu-sidebar.component.ts +0 -112
  89. package/src/lib/components/deprecated-components/cauca-menu-vertical/cauca-menu-vertical.component.html +0 -26
  90. package/src/lib/components/deprecated-components/cauca-menu-vertical/cauca-menu-vertical.component.scss +0 -52
  91. package/src/lib/components/deprecated-components/cauca-menu-vertical/cauca-menu-vertical.component.spec.ts +0 -28
  92. package/src/lib/components/deprecated-components/cauca-menu-vertical/cauca-menu-vertical.component.ts +0 -53
  93. package/src/lib/components/deprecated-components/cauca-simple-dialog/cauca-simple-dialog.component.html +0 -7
  94. package/src/lib/components/deprecated-components/cauca-simple-dialog/cauca-simple-dialog.component.scss +0 -4
  95. package/src/lib/components/deprecated-components/cauca-simple-dialog/cauca-simple-dialog.component.spec.ts +0 -39
  96. package/src/lib/components/deprecated-components/cauca-simple-dialog/cauca-simple-dialog.component.ts +0 -20
  97. package/src/lib/components/deprecated-components/cauca-slideshow/cauca-slideshow.component.html +0 -7
  98. package/src/lib/components/deprecated-components/cauca-slideshow/cauca-slideshow.component.scss +0 -41
  99. package/src/lib/components/deprecated-components/cauca-slideshow/cauca-slideshow.component.spec.ts +0 -24
  100. package/src/lib/components/deprecated-components/cauca-slideshow/cauca-slideshow.component.ts +0 -67
  101. package/src/lib/components/deprecated-components/shared/models/menu-item.ts +0 -11
  102. package/src/lib/components/deprecated-components/shared/models/simple-dialog-data.ts +0 -5
  103. package/src/lib/components/dialogs/alert-dialog/alert-dialog.component.html +0 -10
  104. package/src/lib/components/dialogs/alert-dialog/alert-dialog.component.scss +0 -14
  105. package/src/lib/components/dialogs/alert-dialog/alert-dialog.component.spec.ts +0 -90
  106. package/src/lib/components/dialogs/alert-dialog/alert-dialog.component.ts +0 -41
  107. package/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.html +0 -11
  108. package/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.scss +0 -29
  109. package/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.spec.ts +0 -137
  110. package/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.ts +0 -47
  111. package/src/lib/components/dialogs/delete-dialog/delete-dialog.component.html +0 -17
  112. package/src/lib/components/dialogs/delete-dialog/delete-dialog.component.scss +0 -14
  113. package/src/lib/components/dialogs/delete-dialog/delete-dialog.component.spec.ts +0 -96
  114. package/src/lib/components/dialogs/delete-dialog/delete-dialog.component.ts +0 -40
  115. package/src/lib/components/dialogs/delete-dialog/models/delete-dialog-data.spec.ts +0 -7
  116. package/src/lib/components/dialogs/delete-dialog/models/delete-dialog-data.ts +0 -5
  117. package/src/lib/components/dialogs/dialog-styles.css +0 -9
  118. package/src/lib/components/dialogs/dialog-styles.scss +0 -9
  119. package/src/lib/components/dialogs/error-dialog/error-dialog.component.html +0 -10
  120. package/src/lib/components/dialogs/error-dialog/error-dialog.component.scss +0 -10
  121. package/src/lib/components/dialogs/error-dialog/error-dialog.component.spec.ts +0 -91
  122. package/src/lib/components/dialogs/error-dialog/error-dialog.component.ts +0 -32
  123. package/src/lib/components/dialogs/services/dialog.service.spec.ts +0 -82
  124. package/src/lib/components/dialogs/services/dialog.service.ts +0 -107
  125. package/src/lib/components/dialogs/text-input-dialog/text-input-dialog.component.html +0 -24
  126. package/src/lib/components/dialogs/text-input-dialog/text-input-dialog.component.scss +0 -22
  127. package/src/lib/components/dialogs/text-input-dialog/text-input-dialog.component.spec.ts +0 -126
  128. package/src/lib/components/dialogs/text-input-dialog/text-input-dialog.component.ts +0 -66
  129. package/src/lib/components/inputs/color-picker/color-picker.component.html +0 -9
  130. package/src/lib/components/inputs/color-picker/color-picker.component.scss +0 -0
  131. package/src/lib/components/inputs/color-picker/color-picker.component.spec.ts +0 -29
  132. package/src/lib/components/inputs/color-picker/color-picker.component.ts +0 -111
  133. package/src/lib/components/inputs/date-range-picker/date-range-picker.component.html +0 -13
  134. package/src/lib/components/inputs/date-range-picker/date-range-picker.component.scss +0 -0
  135. package/src/lib/components/inputs/date-range-picker/date-range-picker.component.spec.ts +0 -80
  136. package/src/lib/components/inputs/date-range-picker/date-range-picker.component.ts +0 -46
  137. package/src/lib/components/inputs/dropdown-chip-autocomplete/dropdown-chip-autocomplete.component.html +0 -40
  138. package/src/lib/components/inputs/dropdown-chip-autocomplete/dropdown-chip-autocomplete.component.scss +0 -39
  139. package/src/lib/components/inputs/dropdown-chip-autocomplete/dropdown-chip-autocomplete.component.spec.ts +0 -135
  140. package/src/lib/components/inputs/dropdown-chip-autocomplete/dropdown-chip-autocomplete.component.ts +0 -263
  141. package/src/lib/components/inputs/password/password-criteria/password-criteria.component.html +0 -6
  142. package/src/lib/components/inputs/password/password-criteria/password-criteria.component.scss +0 -27
  143. package/src/lib/components/inputs/password/password-criteria/password-criteria.component.spec.ts +0 -90
  144. package/src/lib/components/inputs/password/password-criteria/password-criteria.component.ts +0 -17
  145. package/src/lib/components/inputs/password/password-criteria-viewer/password-criteria-viewer.component.html +0 -5
  146. package/src/lib/components/inputs/password/password-criteria-viewer/password-criteria-viewer.component.scss +0 -8
  147. package/src/lib/components/inputs/password/password-criteria-viewer/password-criteria-viewer.component.spec.ts +0 -98
  148. package/src/lib/components/inputs/password/password-criteria-viewer/password-criteria-viewer.component.ts +0 -16
  149. package/src/lib/components/inputs/password/password-input/password-input.component.html +0 -11
  150. package/src/lib/components/inputs/password/password-input/password-input.component.scss +0 -12
  151. package/src/lib/components/inputs/password/password-input/password-input.component.spec.ts +0 -141
  152. package/src/lib/components/inputs/password/password-input/password-input.component.ts +0 -67
  153. package/src/lib/components/inputs/password/password-selection/password-selection.component.html +0 -15
  154. package/src/lib/components/inputs/password/password-selection/password-selection.component.scss +0 -32
  155. package/src/lib/components/inputs/password/password-selection/password-selection.component.spec.ts +0 -138
  156. package/src/lib/components/inputs/password/password-selection/password-selection.component.ts +0 -100
  157. package/src/lib/components/inputs/select-with-search/select-with-search.component.html +0 -19
  158. package/src/lib/components/inputs/select-with-search/select-with-search.component.scss +0 -0
  159. package/src/lib/components/inputs/select-with-search/select-with-search.component.spec.ts +0 -213
  160. package/src/lib/components/inputs/select-with-search/select-with-search.component.ts +0 -108
  161. package/src/lib/components/layout/expandable-panel/expandable-panel.component.html +0 -12
  162. package/src/lib/components/layout/expandable-panel/expandable-panel.component.scss +0 -43
  163. package/src/lib/components/layout/expandable-panel/expandable-panel.component.spec.ts +0 -48
  164. package/src/lib/components/layout/expandable-panel/expandable-panel.component.ts +0 -19
  165. package/src/lib/components/layout/group-container/group-container.component.html +0 -6
  166. package/src/lib/components/layout/group-container/group-container.component.scss +0 -22
  167. package/src/lib/components/layout/group-container/group-container.component.spec.ts +0 -34
  168. package/src/lib/components/layout/group-container/group-container.component.ts +0 -14
  169. package/src/lib/components/layout/menu-expandable-panel/menu-expandable-panel.component.html +0 -13
  170. package/src/lib/components/layout/menu-expandable-panel/menu-expandable-panel.component.scss +0 -27
  171. package/src/lib/components/layout/menu-expandable-panel/menu-expandable-panel.component.spec.ts +0 -144
  172. package/src/lib/components/layout/menu-expandable-panel/menu-expandable-panel.component.ts +0 -52
  173. package/src/lib/components/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.html +0 -4
  174. package/src/lib/components/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.scss +0 -10
  175. package/src/lib/components/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.spec.ts +0 -80
  176. package/src/lib/components/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.ts +0 -28
  177. package/src/lib/components/layout/page-title/page-title.component.html +0 -28
  178. package/src/lib/components/layout/page-title/page-title.component.scss +0 -40
  179. package/src/lib/components/layout/page-title/page-title.component.spec.ts +0 -162
  180. package/src/lib/components/layout/page-title/page-title.component.ts +0 -28
  181. package/src/lib/components/layout/sections/main-section/main-section.component.html +0 -6
  182. package/src/lib/components/layout/sections/main-section/main-section.component.scss +0 -27
  183. package/src/lib/components/layout/sections/main-section/main-section.component.spec.ts +0 -42
  184. package/src/lib/components/layout/sections/main-section/main-section.component.ts +0 -13
  185. package/src/lib/components/layout/sections/section-column/section-column.component.html +0 -3
  186. package/src/lib/components/layout/sections/section-column/section-column.component.scss +0 -18
  187. package/src/lib/components/layout/sections/section-column/section-column.component.spec.ts +0 -35
  188. package/src/lib/components/layout/sections/section-column/section-column.component.ts +0 -12
  189. package/src/lib/components/layout/sections/section-field/section-field.component.html +0 -21
  190. package/src/lib/components/layout/sections/section-field/section-field.component.scss +0 -44
  191. package/src/lib/components/layout/sections/section-field/section-field.component.spec.ts +0 -74
  192. package/src/lib/components/layout/sections/section-field/section-field.component.ts +0 -22
  193. package/src/lib/components/list-paginator/list-paginator.component.html +0 -16
  194. package/src/lib/components/list-paginator/list-paginator.component.scss +0 -46
  195. package/src/lib/components/list-paginator/list-paginator.component.spec.ts +0 -248
  196. package/src/lib/components/list-paginator/list-paginator.component.ts +0 -81
  197. package/src/lib/components/misc/loading-error/loading-error.component.html +0 -11
  198. package/src/lib/components/misc/loading-error/loading-error.component.scss +0 -0
  199. package/src/lib/components/misc/loading-error/loading-error.component.spec.ts +0 -75
  200. package/src/lib/components/misc/loading-error/loading-error.component.ts +0 -18
  201. package/src/lib/components/misc/loading-spinner-indicator/loading-spinner-indicator.component.html +0 -3
  202. package/src/lib/components/misc/loading-spinner-indicator/loading-spinner-indicator.component.scss +0 -0
  203. package/src/lib/components/misc/loading-spinner-indicator/loading-spinner-indicator.component.spec.ts +0 -43
  204. package/src/lib/components/misc/loading-spinner-indicator/loading-spinner-indicator.component.ts +0 -16
  205. package/src/lib/components/misc/snack-bar/snack-bar.component.html +0 -16
  206. package/src/lib/components/misc/snack-bar/snack-bar.component.scss +0 -84
  207. package/src/lib/components/misc/snack-bar/snack-bar.component.spec.ts +0 -136
  208. package/src/lib/components/misc/snack-bar/snack-bar.component.ts +0 -39
  209. package/src/lib/components/notifications/saving-confirmed-box/saving-confirmed-box.component.html +0 -11
  210. package/src/lib/components/notifications/saving-confirmed-box/saving-confirmed-box.component.scss +0 -0
  211. package/src/lib/components/notifications/saving-confirmed-box/saving-confirmed-box.component.spec.ts +0 -67
  212. package/src/lib/components/notifications/saving-confirmed-box/saving-confirmed-box.component.ts +0 -15
  213. package/src/lib/components/notifications/saving-error-box/saving-error-box.component.html +0 -11
  214. package/src/lib/components/notifications/saving-error-box/saving-error-box.component.scss +0 -0
  215. package/src/lib/components/notifications/saving-error-box/saving-error-box.component.spec.ts +0 -77
  216. package/src/lib/components/notifications/saving-error-box/saving-error-box.component.ts +0 -17
  217. package/src/lib/components/presenters/badge/badge.component.html +0 -6
  218. package/src/lib/components/presenters/badge/badge.component.scss +0 -10
  219. package/src/lib/components/presenters/badge/badge.component.spec.ts +0 -41
  220. package/src/lib/components/presenters/badge/badge.component.ts +0 -18
  221. package/src/lib/components/presenters/icon/icon.component.scss +0 -9
  222. package/src/lib/components/presenters/icon/icon.component.spec.ts +0 -38
  223. package/src/lib/components/presenters/icon/icon.component.ts +0 -37
  224. package/src/lib/core/breadcrumb.service.spec.ts +0 -35
  225. package/src/lib/core/breadcrumb.service.ts +0 -24
  226. package/src/lib/core/directives/auto-trim-and-lower.directive.spec.ts +0 -22
  227. package/src/lib/core/directives/auto-trim-and-lower.directive.ts +0 -19
  228. package/src/lib/core/directives/form-error/form-error.module.ts +0 -21
  229. package/src/lib/core/directives/form-error/has-error-root.directive.ts +0 -29
  230. package/src/lib/core/directives/form-error/has-error.directive.ts +0 -95
  231. package/src/lib/core/loading-state.service.spec.ts +0 -57
  232. package/src/lib/core/loading-state.service.ts +0 -44
  233. package/src/lib/core/models/breadcrumb-location.ts +0 -6
  234. package/src/lib/core/models/password-validation.ts +0 -20
  235. package/src/lib/core/validators/password/password-validator.spec.ts +0 -155
  236. package/src/lib/core/validators/password/password-validator.ts +0 -30
  237. package/src/lib/provide-cauca-material.ts +0 -10
  238. package/src/public-api.ts +0 -74
  239. package/src/test.ts +0 -17
  240. package/tsconfig.lib.json +0 -22
  241. package/tsconfig.lib.prod.json +0 -4
  242. package/tsconfig.spec.json +0 -17
  243. /package/{src/assets → assets}/i18n/cauca/en-material.json +0 -0
  244. /package/{src/assets → assets}/i18n/cauca/es-material.json +0 -0
  245. /package/{src/assets → assets}/i18n/cauca/fr-material.json +0 -0
  246. /package/{src/assets → assets}/images/loading.gif +0 -0
@@ -1,263 +0,0 @@
1
- import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { CommonModule } from '@angular/common';
3
- import {
4
- Component,
5
- ContentChild,
6
- DoCheck,
7
- ElementRef,
8
- EventEmitter,
9
- HostBinding,
10
- input,
11
- Input,
12
- OnDestroy,
13
- Optional,
14
- Output,
15
- Self,
16
- TemplateRef,
17
- ViewChild
18
- } from '@angular/core';
19
- import { ControlValueAccessor, FormGroupDirective, FormsModule, NgControl, NgForm } from '@angular/forms';
20
- import { MatAutocomplete, MatAutocompleteModule, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
21
- import { MatChip, MatChipGrid, MatChipInput, MatChipRemove } from '@angular/material/chips';
22
- import { MatFormFieldControl } from '@angular/material/form-field';
23
- import { MatIcon } from '@angular/material/icon';
24
- import { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';
25
- import { Observable, Subject, map, startWith } from 'rxjs';
26
-
27
- @Component({
28
- selector: 'cauca-dropdown-chip-autocomplete',
29
- templateUrl: './dropdown-chip-autocomplete.component.html',
30
- styleUrls: ['./dropdown-chip-autocomplete.component.scss'],
31
- providers: [{
32
- provide: MatFormFieldControl,
33
- useExisting: DropdownChipAutocompleteComponent,
34
- }],
35
- imports: [
36
- MatChipGrid,
37
- MatChip,
38
- MatChipRemove,
39
- FormsModule,
40
- MatAutocompleteModule,
41
- MatChipInput,
42
- MatIcon,
43
- CommonModule
44
- ]
45
- })
46
- export class DropdownChipAutocompleteComponent implements ControlValueAccessor, MatFormFieldControl<any[]>, OnDestroy, DoCheck {
47
- @HostBinding('id')
48
- public id = `cauca-dropdown-chip-autocomplete-${DropdownChipAutocompleteComponent.nextId++}`;
49
-
50
- @ViewChild('auto') public matAutocomplete: MatAutocomplete;
51
- @ViewChild('chipInput') public matChipInput: ElementRef<HTMLInputElement>;
52
- @ViewChild(MatAutocompleteTrigger) public matAutocompletePanel: MatAutocompleteTrigger;
53
- @Output() public clearAll: EventEmitter<void> = new EventEmitter<void>();
54
- @Input() public listAutoComplete: object[] = [];
55
- @Input() public keyValue = 'id';
56
- @Input() public displayValue = 'name';
57
- @Input() public allowRemove = true;
58
- @Input() public ariaDescribedBy: string;
59
- public canRemoveAll = input(true);
60
- public hasOptionTemplate = input<boolean>(false);
61
- @ContentChild(TemplateRef) public optionTemplate: TemplateRef<any>;
62
-
63
- public stateChanges = new Subject<void>();
64
- public static nextId = 0;
65
- public focused = false;
66
- public touched = false;
67
- public errorState = false;
68
- public controlType = 'dropdown-chip-autocomplete';
69
- public separatorKeysCodes: any = ',';
70
- public filteredListAutoComplete: Observable<object[]>;
71
-
72
- private _required = false;
73
- private _disabled = false;
74
- private _placeholder: string;
75
- private _searchValue: string = null;
76
- private selectedValues: any[] = [];
77
-
78
- public get searchValue(): string {
79
- return this._searchValue;
80
- }
81
-
82
- public set searchValue(newValue: string) {
83
- if (this._searchValue !== newValue && (typeof newValue === 'string') || newValue===null) {
84
- this._searchValue = newValue;
85
- this.stateChanges.next();
86
- }
87
- }
88
-
89
- @HostBinding('class.floating')
90
- public get shouldLabelFloat() {
91
- return this.focused || !this.empty || !!this._searchValue;
92
- }
93
-
94
- @Input()
95
- public get value(): any[] {
96
- return this.selectedValues;
97
- }
98
- public set value(values: any[]) {
99
- this.selectedValues = values;
100
- this.onChange(this.selectedValues);
101
- this.stateChanges.next();
102
- }
103
-
104
- @Input()
105
- public get required(): boolean {
106
- return this._required;
107
- }
108
- public set required(req: BooleanInput) {
109
- this._required = coerceBooleanProperty(req);
110
- this.stateChanges.next();
111
- }
112
-
113
- @Input()
114
- public get disabled(): boolean {
115
- return this._disabled;
116
- }
117
- public set disabled(value: BooleanInput) {
118
- this._disabled = coerceBooleanProperty(value);
119
- this.stateChanges.next();
120
- }
121
-
122
- public get empty() {
123
- return !this.selectedValues?.length;
124
- }
125
-
126
- @Input()
127
- public get placeholder() {
128
- return this._placeholder;
129
- }
130
- public set placeholder(plh) {
131
- this._placeholder = plh;
132
- this.stateChanges.next();
133
- }
134
-
135
- public constructor(
136
- @Optional() @Self() public ngControl: NgControl,
137
- @Optional() private readonly parentForm: NgForm,
138
- @Optional() private readonly parentFormGroup: FormGroupDirective,
139
- private readonly elementRef: ElementRef<HTMLElement>,
140
- ) {
141
- elementRef.nativeElement.addEventListener('focusin', this.onFocusIn.bind(this));
142
- elementRef.nativeElement.addEventListener('focusout', this.onFocusOut.bind(this));
143
- if (this.ngControl != null) {
144
- this.ngControl.valueAccessor = this;
145
- }
146
-
147
- this.filteredListAutoComplete = this.stateChanges.pipe(
148
- startWith(null),
149
- map(() => this.filterSelectedItem())
150
- );
151
- }
152
-
153
- public ngDoCheck() {
154
- if (this.ngControl) {
155
- this.updateErrorState();
156
- }
157
- }
158
-
159
- public ngOnDestroy() {
160
- this.stateChanges.complete();
161
- }
162
-
163
- public onChange = (_: any): void => {
164
- // Do nothing for now
165
- };
166
- public onTouched = (): void => {
167
- // Do nothing for now
168
- };
169
-
170
- public onFocusIn() {
171
- if (!this.focused) {
172
- this.focused = true;
173
- this.stateChanges.next();
174
- }
175
- }
176
-
177
- public markAsClean(): void {
178
- this.touched = false;
179
- this.focused = false;
180
- this.stateChanges.next();
181
- }
182
-
183
- public onFocusOut(event: FocusEvent) {
184
- if (!this.elementRef.nativeElement.contains(event.relatedTarget as Element)) {
185
- this.touched = true;
186
- this.focused = false;
187
- this.onTouched();
188
- this.stateChanges.next();
189
- }
190
- }
191
-
192
- public setDisabledState(isDisabled: boolean): void {
193
- this.disabled = isDisabled;
194
- }
195
-
196
- public setDescribedByIds(ids: string[]) {
197
- const controlElement = this.elementRef.nativeElement.querySelector('.dropdown-chip-autocomplete-container');
198
- controlElement.setAttribute('aria-describedby', ids.join(' '));
199
- }
200
-
201
- public onContainerClick(event: MouseEvent) {
202
- if ((event.target as Element).tagName.toLowerCase() != 'input') {
203
- this.elementRef.nativeElement.querySelector('input').focus();
204
- }
205
- this.searchValue = null;
206
- }
207
-
208
- public writeValue(value: string[] | []): void {
209
- this.value = value;
210
- }
211
-
212
- public registerOnChange(fn: any): void {
213
- this.onChange = fn;
214
- }
215
-
216
- public registerOnTouched(fn: any): void {
217
- this.onTouched = fn;
218
- }
219
-
220
- public selectItemOnAutocomplete(e: MatAutocompleteSelectedEvent): void {
221
- this.value = [].concat(this.selectedValues, e.option.value);
222
- this.matChipInput.nativeElement.value = '';
223
- }
224
-
225
- public removeSelectedItem(key: any): void {
226
- const index = this.selectedValues.indexOf(key);
227
-
228
- if (index >= 0) {
229
- this.selectedValues.splice(index, 1);
230
- this.value = this.selectedValues;
231
- }
232
- }
233
-
234
- public getValueDisplay(key: any): string {
235
- const selectedItem = this.listAutoComplete.find((item: object) => `${item[this.keyValue]}` === `${key}`);
236
- return selectedItem ? selectedItem[this.displayValue] : '';
237
- }
238
-
239
- public onClearAll(): void {
240
- this.matAutocompletePanel.closePanel();
241
- this.value = [];
242
- this.clearAll.emit();
243
- }
244
-
245
- private updateErrorState() {
246
- const parent = this.parentFormGroup || this.parentForm;
247
- const oldState = this.errorState;
248
-
249
- const newState = (this.ngControl?.invalid) && (this.touched || parent.submitted);
250
- if (oldState !== newState) {
251
- this.errorState = newState;
252
- }
253
- }
254
-
255
- private filterSelectedItem(): object[] {
256
- const searchValue = toLowerCaseAndWithoutDiacritics(this.searchValue);
257
- const filtered = this.listAutoComplete.filter((item: object) =>
258
- !this.selectedValues.includes(item[this.keyValue])
259
- && toLowerCaseAndWithoutDiacritics(item[this.displayValue]).includes(searchValue));
260
- return filtered;
261
- }
262
-
263
- }
@@ -1,6 +0,0 @@
1
- @if (condition()) {
2
- <mat-icon [ngClass]="disabled() ? 'disabled' : ''" class="green">check_circle</mat-icon>
3
- }@else {
4
- <mat-icon [ngClass]="disabled() ? 'disabled' : ''" class="red">cancel</mat-icon>
5
- }
6
- <label [ngClass]="disabled() ? 'disabled' : ''" class="body2" translate>{{label()}}</label>
@@ -1,27 +0,0 @@
1
- :host {
2
- display: flex;
3
- align-items: center;
4
- gap: 8px;
5
- }
6
-
7
- mat-icon {
8
- flex-shrink: 0;
9
- }
10
-
11
- .green {
12
- fill: #81C784;
13
- color: #81C784;
14
- }
15
-
16
- .red {
17
- fill: #E57373;
18
- color: #E57373;
19
- }
20
-
21
- label {
22
- color: #000;
23
- }
24
-
25
- .disabled {
26
- opacity: 0.5;
27
- }
@@ -1,90 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { PasswordCriteriaComponent } from './password-criteria.component';
4
- import { HarnessLoader } from '@angular/cdk/testing';
5
- import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
6
- import { MatIconHarness } from '@angular/material/icon/testing';
7
- import { MockDirective, MockModule, ngMocks } from 'ng-mocks';
8
- import { TranslateDirective, TranslateModule } from '@ngx-translate/core';
9
- import { By } from '@angular/platform-browser';
10
- import { MatIcon } from '@angular/material/icon';
11
-
12
- describe('PasswordCriteriaComponent', () => {
13
- let component: PasswordCriteriaComponent;
14
- let fixture: ComponentFixture<PasswordCriteriaComponent>;
15
- let loader: HarnessLoader;
16
-
17
- const someLabel = 'A label!';
18
-
19
- beforeEach(async () => {
20
- await TestBed.configureTestingModule({
21
- imports: [PasswordCriteriaComponent,
22
- MockModule(TranslateModule)
23
- ],
24
- declarations: [
25
- MockDirective(TranslateDirective)
26
- ]
27
- })
28
- .compileComponents();
29
-
30
- fixture = TestBed.createComponent(PasswordCriteriaComponent);
31
- loader = TestbedHarnessEnvironment.loader(fixture);
32
- component = fixture.componentInstance;
33
- fixture.componentRef.setInput('label', someLabel);
34
- fixture.detectChanges();
35
- });
36
-
37
- it('should create', () => {
38
- expect(component).toBeTruthy();
39
- });
40
-
41
- it('should show check circle icon when condition is met', async () => {
42
- fixture.componentRef.setInput('condition', true);
43
- fixture.detectChanges();
44
-
45
- const icons = await loader.getAllHarnesses(MatIconHarness);
46
-
47
- expect(icons.length).toBe(1);
48
- expect(await icons[0].getName()).toBe('check_circle');
49
- });
50
-
51
- it('should show cancel icon when condition is not met', async () => {
52
- fixture.componentRef.setInput('condition', false);
53
- fixture.detectChanges();
54
-
55
- const icons = await loader.getAllHarnesses(MatIconHarness);
56
-
57
- expect(icons.length).toBe(1);
58
- expect(await icons[0].getName()).toBe('cancel');
59
- });
60
-
61
- it('should show label', () => {
62
- const label = fixture.debugElement.query(By.css('label'));
63
-
64
- expect(label.properties.innerText).toBe(someLabel);
65
- });
66
-
67
- it('should disable icon and label when receiving disable and condition is false', async () => {
68
- fixture.componentRef.setInput('disabled', true);
69
- fixture.componentRef.setInput('condition', false);
70
- fixture.detectChanges();
71
-
72
- const icon = ngMocks.find<MatIcon>('mat-icon');
73
- const label = ngMocks.find<HTMLLabelElement>('label');
74
-
75
- expect(icon.classes.disabled).toBeDefined();
76
- expect(label.classes.disabled).toBeDefined();
77
- });
78
-
79
- it('should disable icon and label when receiving disable and condition is true', async () => {
80
- fixture.componentRef.setInput('disabled', true);
81
- fixture.componentRef.setInput('condition', true);
82
- fixture.detectChanges();
83
-
84
- const icon = ngMocks.find<MatIcon>('mat-icon');
85
- const label = ngMocks.find<HTMLLabelElement>('label');
86
-
87
- expect(icon.classes.disabled).toBeDefined();
88
- expect(label.classes.disabled).toBeDefined();
89
- });
90
- });
@@ -1,17 +0,0 @@
1
- import { NgClass } from '@angular/common';
2
- import { Component, InputSignal, input } from '@angular/core';
3
- import { MatIconModule } from '@angular/material/icon';
4
- import { TranslateModule } from '@ngx-translate/core';
5
-
6
- @Component({
7
- selector: 'cauca-password-criteria',
8
- standalone: true,
9
- imports: [MatIconModule, TranslateModule, NgClass],
10
- templateUrl: './password-criteria.component.html',
11
- styleUrl: './password-criteria.component.scss'
12
- })
13
- export class PasswordCriteriaComponent {
14
- public label: InputSignal<string> = input.required<string>();
15
- public condition: InputSignal<boolean> = input(false);
16
- public disabled: InputSignal<boolean> = input(false);
17
- }
@@ -1,5 +0,0 @@
1
- <cauca-password-criteria [disabled]="disabled()" label="passwordEdition.minimumCharacters" [condition]="passwordValidation().hasMinimumCharacters"/>
2
- <cauca-password-criteria [disabled]="disabled()" label="passwordEdition.minimumOneNumeric" [condition]="passwordValidation().hasMinimumNumeric"/>
3
- <cauca-password-criteria [disabled]="disabled()" label="passwordEdition.minimumOneSpecialCharacter" [condition]="passwordValidation().hasSpecialCharacter"/>
4
- <cauca-password-criteria [disabled]="disabled()" label="passwordEdition.needLowerAndUppercase" [condition]="passwordValidation().hasLowerAndUppercase"/>
5
- <cauca-password-criteria [disabled]="disabled()" label="passwordEdition.equalPasswords" [condition]="passwordValidation().hasIdenticalPassword"/>
@@ -1,8 +0,0 @@
1
- :host {
2
- display: flex;
3
- flex-direction: column;
4
-
5
- > * {
6
- flex-grow: 1;
7
- }
8
- }
@@ -1,98 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { PasswordCriteriaViewerComponent } from './password-criteria-viewer.component';
4
- import { MockComponent, ngMocks } from 'ng-mocks';
5
- import { PasswordCriteriaComponent } from '../password-criteria/password-criteria.component';
6
- import { PasswordValidation } from '../../../../core/models/password-validation';
7
-
8
- describe('PasswordCriteriaViewerComponent', () => {
9
- let component: PasswordCriteriaViewerComponent;
10
- let fixture: ComponentFixture<PasswordCriteriaViewerComponent>;
11
-
12
- beforeEach(async () => {
13
- await TestBed.configureTestingModule({
14
- imports: [PasswordCriteriaViewerComponent, MockComponent(PasswordCriteriaComponent)]
15
- }).compileComponents();
16
-
17
- fixture = TestBed.createComponent(PasswordCriteriaViewerComponent);
18
- component = fixture.componentInstance;
19
- fixture.componentRef.setInput('passwordValidation', new PasswordValidation());
20
- fixture.detectChanges();
21
- });
22
-
23
- it('should create', () => {
24
- expect(component).toBeTruthy();
25
- });
26
-
27
- it('should display criteria component for each password criteria', () => {
28
- const criterias = ngMocks.findAll<PasswordCriteriaComponent>('cauca-password-criteria');
29
-
30
- expect(criterias.length).toBe(5);
31
- });
32
-
33
- it('should display minimum character has first criteria and send condition', () => {
34
- const criterias = ngMocks.findAll<PasswordCriteriaComponent>('cauca-password-criteria');
35
- const criteria = criterias[0].componentInstance;
36
-
37
- const passwordValidation = new PasswordValidation();
38
- passwordValidation.hasMinimumCharacters = true;
39
- fixture.componentRef.setInput('passwordValidation', passwordValidation);
40
- fixture.detectChanges();
41
-
42
- expect(criteria.label).toBe('passwordEdition.minimumCharacters');
43
- expect(criteria.condition).toBe(true);
44
- });
45
-
46
-
47
- it('should display minimum numeric has second criteria and send condition', () => {
48
- const criterias = ngMocks.findAll<PasswordCriteriaComponent>('cauca-password-criteria');
49
- const criteria = criterias[1].componentInstance;
50
-
51
- const passwordValidation = new PasswordValidation();
52
- passwordValidation.hasMinimumNumeric = true;
53
- fixture.componentRef.setInput('passwordValidation', passwordValidation);
54
- fixture.detectChanges();
55
-
56
- expect(criteria.label).toBe('passwordEdition.minimumOneNumeric');
57
- expect(criteria.condition).toBe(true);
58
- });
59
-
60
- it('should display minimum special character has third criteria and send condition', () => {
61
- const criterias = ngMocks.findAll<PasswordCriteriaComponent>('cauca-password-criteria');
62
- const criteria = criterias[2].componentInstance;
63
-
64
- const passwordValidation = new PasswordValidation();
65
- passwordValidation.hasSpecialCharacter = true;
66
- fixture.componentRef.setInput('passwordValidation', passwordValidation);
67
- fixture.detectChanges();
68
-
69
- expect(criteria.label).toBe('passwordEdition.minimumOneSpecialCharacter');
70
- expect(criteria.condition).toBe(true);
71
- });
72
-
73
- it('should display minimum upper and lowercase has fourth criteria and send condition', () => {
74
- const criterias = ngMocks.findAll<PasswordCriteriaComponent>('cauca-password-criteria');
75
- const criteria = criterias[3].componentInstance;
76
-
77
- const passwordValidation = new PasswordValidation();
78
- passwordValidation.hasLowerAndUppercase = true;
79
- fixture.componentRef.setInput('passwordValidation', passwordValidation);
80
- fixture.detectChanges();
81
-
82
- expect(criteria.label).toBe('passwordEdition.needLowerAndUppercase');
83
- expect(criteria.condition).toBe(true);
84
- });
85
-
86
- it('should display identical password has fifth criteria and send condition', () => {
87
- const criterias = ngMocks.findAll<PasswordCriteriaComponent>('cauca-password-criteria');
88
- const criteria = criterias[4].componentInstance;
89
-
90
- const passwordValidation = new PasswordValidation();
91
- passwordValidation.hasIdenticalPassword = true;
92
- fixture.componentRef.setInput('passwordValidation', passwordValidation);
93
- fixture.detectChanges();
94
-
95
- expect(criteria.label).toBe('passwordEdition.equalPasswords');
96
- expect(criteria.condition).toBe(true);
97
- });
98
- });
@@ -1,16 +0,0 @@
1
- import { Component, InputSignal, input } from '@angular/core';
2
- import { PasswordCriteriaComponent } from '../password-criteria/password-criteria.component';
3
- import { PasswordValidation } from '../../../../core/models/password-validation';
4
-
5
-
6
- @Component({
7
- selector: 'cauca-password-criteria-viewer',
8
- standalone: true,
9
- imports: [PasswordCriteriaComponent],
10
- templateUrl: './password-criteria-viewer.component.html',
11
- styleUrl: './password-criteria-viewer.component.scss'
12
- })
13
- export class PasswordCriteriaViewerComponent {
14
- public passwordValidation: InputSignal<PasswordValidation> = input.required();
15
- public disabled: InputSignal<boolean> = input(false);
16
- }
@@ -1,11 +0,0 @@
1
- <mat-form-field subscriptSizing="dynamic">
2
- @if(translateLabel()) {<mat-label>{{label() | translate}}</mat-label>}
3
- @else {<mat-label>{{label()}}</mat-label>}
4
- <input (keydown.enter)="enterKeyDown.emit()" [autocomplete]="autocomplete()" #password class="password"
5
- [type]="inputType()" [formControl]="passwordControl" matInput [required]="required()"
6
- [placeholder]="translatePlaceholder() ? (placeholder() | translate) : placeholder()" />
7
- <mat-icon [ngClass]="disabled() ? 'disabled' : ''" style="cursor: pointer" matSuffix
8
- (click)="showPassword.set(!showPassword())">
9
- {{ password.type === "password" ? "visibility_off" : "visibility" }}
10
- </mat-icon>
11
- </mat-form-field>
@@ -1,12 +0,0 @@
1
- :host {
2
- width: 100%;
3
- }
4
-
5
- mat-form-field {
6
- width: 100%;
7
- }
8
-
9
-
10
- .disabled {
11
- opacity: 0.5;
12
- }