@odx/angular 1.0.0-rc.0 → 1.0.0-rc.2

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 (450) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +44 -0
  3. package/animations/index.d.ts +3 -2
  4. package/animations/{config.d.ts → lib/config.d.ts} +0 -0
  5. package/animations/lib/expand.d.ts +2 -0
  6. package/animations/{fade.d.ts → lib/fade.d.ts} +0 -0
  7. package/animations/{slide.d.ts → lib/slide.d.ts} +0 -0
  8. package/cdk/checkbox-control/README.md +3 -0
  9. package/cdk/checkbox-control/index.d.ts +1 -0
  10. package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +16 -0
  11. package/cdk/custom-form-control/README.md +3 -0
  12. package/cdk/custom-form-control/index.d.ts +2 -0
  13. package/{lib/directives → cdk/custom-form-control/lib}/control.directive.d.ts +1 -3
  14. package/{lib/controls → cdk/custom-form-control/lib}/custom-form-control.d.ts +7 -8
  15. package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +1 -1
  16. package/cdk/dynamic-view/lib/facade/dynamic-content.d.ts +1 -1
  17. package/cdk/dynamic-view/lib/facade/dynamic-view-ref.d.ts +1 -1
  18. package/cdk/dynamic-view/lib/facade/index.d.ts +0 -1
  19. package/cdk/dynamic-view/lib/helpers/index.d.ts +0 -2
  20. package/cdk/dynamic-view/lib/models/dynamic-component-ref.d.ts +5 -3
  21. package/cdk/dynamic-view/lib/models/dynamic-template-ref.d.ts +1 -1
  22. package/cdk/expandable/README.md +3 -0
  23. package/cdk/expandable/index.d.ts +3 -0
  24. package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +18 -0
  25. package/cdk/expandable/lib/directives/extandable-container.directive.d.ts +13 -0
  26. package/cdk/expandable/lib/directives/index.d.ts +2 -0
  27. package/cdk/expandable/lib/expandable.module.d.ts +8 -0
  28. package/cdk/expandable/lib/facade/expandable-container.d.ts +6 -0
  29. package/cdk/expandable/lib/facade/expandable-item.d.ts +7 -0
  30. package/cdk/expandable/lib/facade/index.d.ts +2 -0
  31. package/cdk/radio-group-control/README.md +3 -0
  32. package/cdk/radio-group-control/index.d.ts +3 -0
  33. package/cdk/radio-group-control/lib/radio-control.directive.d.ts +13 -0
  34. package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +10 -0
  35. package/cdk/radio-group-control/lib/radio-group-control.module.d.ts +9 -0
  36. package/components/accordion/README.md +3 -0
  37. package/components/accordion/index.d.ts +4 -0
  38. package/components/accordion/lib/accordion.component.d.ts +7 -0
  39. package/components/accordion/lib/accordion.module.d.ts +10 -0
  40. package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +16 -0
  41. package/components/accordion/lib/components/index.d.ts +1 -0
  42. package/components/accordion/lib/directives/accordion-item-title.d.ts +5 -0
  43. package/components/accordion/lib/directives/index.d.ts +1 -0
  44. package/components/action-group/action-group.component.d.ts +1 -3
  45. package/components/area-header/area-header.component.d.ts +1 -3
  46. package/components/area-header/area-header.module.d.ts +2 -1
  47. package/components/avatar/lib/avatar.component.d.ts +1 -3
  48. package/components/badge/lib/badge.component.d.ts +3 -5
  49. package/components/badge/lib/badge.directive.d.ts +4 -5
  50. package/components/button/lib/button.component.d.ts +8 -16
  51. package/components/button/lib/models/button-size.d.ts +5 -0
  52. package/components/button/lib/models/index.d.ts +1 -0
  53. package/components/button-group/README.md +3 -0
  54. package/components/button-group/index.d.ts +1 -0
  55. package/components/button-group/lib/button-group.component.d.ts +15 -0
  56. package/components/checkbox/lib/checkbox.component.d.ts +5 -12
  57. package/components/form-field/README.md +3 -0
  58. package/components/form-field/index.d.ts +6 -0
  59. package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +9 -0
  60. package/components/form-field/lib/components/form-group/form-group.component.d.ts +14 -0
  61. package/components/form-field/lib/components/index.d.ts +2 -0
  62. package/components/form-field/lib/directives/form-field-control.directive.d.ts +22 -0
  63. package/components/form-field/lib/directives/form-field-error.directive.d.ts +10 -0
  64. package/components/form-field/lib/directives/form-field-hint.directive.d.ts +8 -0
  65. package/components/form-field/lib/directives/form-field-label.directive.d.ts +6 -0
  66. package/components/form-field/lib/directives/form.directive.d.ts +9 -0
  67. package/components/form-field/lib/directives/index.d.ts +5 -0
  68. package/components/form-field/lib/form-field.component.d.ts +18 -0
  69. package/components/form-field/lib/form-field.config.d.ts +19 -0
  70. package/components/form-field/lib/form-field.module.d.ts +18 -0
  71. package/components/form-field/lib/form-field.service.d.ts +30 -0
  72. package/components/form-field/lib/models/form-field-error-resolver.d.ts +27 -0
  73. package/components/form-field/lib/models/form-field-error.d.ts +7 -0
  74. package/components/form-field/lib/models/index.d.ts +2 -0
  75. package/components/form-field/lib/services/form-field-error.service.d.ts +18 -0
  76. package/components/form-field/lib/services/index.d.ts +1 -0
  77. package/components/header/lib/header.component.d.ts +1 -3
  78. package/components/header/lib/header.module.d.ts +2 -1
  79. package/components/icon/lib/icon.component.d.ts +9 -5
  80. package/components/link/link.directive.d.ts +4 -6
  81. package/components/logo/logo.directive.d.ts +1 -3
  82. package/components/main-menu/lib/directives/main-menu-button.directive.d.ts +1 -4
  83. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +3 -4
  84. package/components/main-menu/lib/main-menu.component.d.ts +2 -4
  85. package/components/main-menu/lib/main-menu.module.d.ts +6 -6
  86. package/components/modal/README.md +3 -0
  87. package/components/modal/index.d.ts +9 -0
  88. package/components/modal/lib/components/index.d.ts +2 -0
  89. package/components/modal/lib/components/modal-footer/modal-footer.component.d.ts +6 -0
  90. package/components/modal/lib/components/modal-header/modal-header.component.d.ts +11 -0
  91. package/components/modal/lib/directives/index.d.ts +3 -0
  92. package/components/modal/lib/directives/modal-close.directive.d.ts +8 -0
  93. package/components/modal/lib/directives/modal-content.directive.d.ts +6 -0
  94. package/components/modal/lib/directives/modal-dismiss.directive.d.ts +7 -0
  95. package/components/modal/lib/helpers/index.d.ts +2 -0
  96. package/components/modal/lib/helpers/inject-modal-ref.d.ts +2 -0
  97. package/components/modal/lib/helpers/provide-modal-ref.d.ts +3 -0
  98. package/components/modal/lib/modal.component.d.ts +16 -0
  99. package/components/modal/lib/modal.config.d.ts +3 -0
  100. package/components/modal/lib/modal.directive.d.ts +14 -0
  101. package/components/modal/lib/modal.module.d.ts +21 -0
  102. package/components/modal/lib/modal.service.d.ts +20 -0
  103. package/components/modal/lib/models/index.d.ts +4 -0
  104. package/components/modal/lib/models/modal-options.d.ts +13 -0
  105. package/components/modal/lib/models/modal-ref.d.ts +16 -0
  106. package/components/modal/lib/models/modal-size.d.ts +6 -0
  107. package/components/modal/lib/models/modal-type.d.ts +8 -0
  108. package/components/modal/lib/services/index.d.ts +1 -0
  109. package/components/modal/lib/services/open-modal-manager.service.d.ts +15 -0
  110. package/components/radio-group/lib/components/radio-button/radio-button.component.d.ts +4 -11
  111. package/components/radio-group/lib/radio-group.component.d.ts +3 -5
  112. package/components/radio-group/lib/radio-group.module.d.ts +4 -4
  113. package/components/switch/README.md +3 -0
  114. package/components/switch/index.d.ts +1 -0
  115. package/components/switch/lib/switch.component.d.ts +6 -0
  116. package/components/toggle-button-group/README.md +3 -0
  117. package/components/toggle-button-group/index.d.ts +3 -0
  118. package/components/toggle-button-group/lib/components/index.d.ts +1 -0
  119. package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +7 -0
  120. package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +7 -0
  121. package/components/toggle-button-group/lib/toggle-button-group.module.d.ts +9 -0
  122. package/esm2020/animations/index.mjs +4 -3
  123. package/esm2020/animations/lib/config.mjs +8 -0
  124. package/esm2020/animations/lib/expand.mjs +12 -0
  125. package/esm2020/animations/lib/fade.mjs +12 -0
  126. package/esm2020/animations/lib/slide.mjs +34 -0
  127. package/esm2020/cdk/checkbox-control/index.mjs +2 -0
  128. package/esm2020/cdk/checkbox-control/lib/checkbox-control.directive.mjs +43 -0
  129. package/esm2020/cdk/checkbox-control/odx-angular-cdk-checkbox-control.mjs +5 -0
  130. package/esm2020/cdk/custom-form-control/index.mjs +3 -0
  131. package/esm2020/cdk/custom-form-control/lib/control.directive.mjs +19 -0
  132. package/esm2020/cdk/custom-form-control/lib/custom-form-control.mjs +121 -0
  133. package/esm2020/cdk/custom-form-control/odx-angular-cdk-custom-form-control.mjs +5 -0
  134. package/esm2020/cdk/dynamic-view/lib/dynamic-view.component.mjs +3 -3
  135. package/esm2020/cdk/dynamic-view/lib/dynamic-view.directive.mjs +11 -10
  136. package/esm2020/cdk/dynamic-view/lib/dynamic-view.service.mjs +5 -5
  137. package/esm2020/cdk/dynamic-view/lib/facade/dynamic-content.mjs +1 -1
  138. package/esm2020/cdk/dynamic-view/lib/facade/dynamic-view-ref.mjs +1 -1
  139. package/esm2020/cdk/dynamic-view/lib/facade/index.mjs +1 -2
  140. package/esm2020/cdk/dynamic-view/lib/helpers/index.mjs +1 -3
  141. package/esm2020/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.mjs +2 -2
  142. package/esm2020/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +18 -8
  143. package/esm2020/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +6 -2
  144. package/esm2020/cdk/expandable/index.mjs +4 -0
  145. package/esm2020/cdk/expandable/lib/directives/expandable-item.directive.mjs +48 -0
  146. package/esm2020/cdk/expandable/lib/directives/extandable-container.directive.mjs +43 -0
  147. package/esm2020/cdk/expandable/lib/directives/index.mjs +3 -0
  148. package/esm2020/cdk/expandable/lib/expandable.module.mjs +17 -0
  149. package/esm2020/cdk/expandable/lib/facade/expandable-container.mjs +3 -0
  150. package/esm2020/cdk/expandable/lib/facade/expandable-item.mjs +3 -0
  151. package/esm2020/cdk/expandable/lib/facade/index.mjs +3 -0
  152. package/esm2020/cdk/expandable/odx-angular-cdk-expandable.mjs +5 -0
  153. package/esm2020/cdk/radio-group-control/index.mjs +4 -0
  154. package/esm2020/cdk/radio-group-control/lib/radio-control.directive.mjs +39 -0
  155. package/esm2020/cdk/radio-group-control/lib/radio-group-control.directive.mjs +43 -0
  156. package/esm2020/cdk/radio-group-control/lib/radio-group-control.module.mjs +19 -0
  157. package/esm2020/cdk/radio-group-control/odx-angular-cdk-radio-group-control.mjs +5 -0
  158. package/esm2020/components/accordion/index.mjs +5 -0
  159. package/esm2020/components/accordion/lib/accordion.component.mjs +24 -0
  160. package/esm2020/components/accordion/lib/accordion.module.mjs +20 -0
  161. package/esm2020/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +54 -0
  162. package/esm2020/components/accordion/lib/components/index.mjs +2 -0
  163. package/esm2020/components/accordion/lib/directives/accordion-item-title.mjs +14 -0
  164. package/esm2020/components/accordion/lib/directives/index.mjs +2 -0
  165. package/esm2020/components/accordion/odx-angular-components-accordion.mjs +5 -0
  166. package/esm2020/components/action-group/action-group.component.mjs +15 -18
  167. package/esm2020/components/area-header/area-header.component.mjs +10 -10
  168. package/esm2020/components/area-header/area-header.module.mjs +9 -8
  169. package/esm2020/components/area-header/directives/area-header-content.directive.mjs +4 -5
  170. package/esm2020/components/area-header/directives/area-header-subtitle.directive.mjs +4 -5
  171. package/esm2020/components/avatar/lib/avatar.component.mjs +10 -10
  172. package/esm2020/components/badge/lib/badge.component.mjs +20 -22
  173. package/esm2020/components/badge/lib/badge.directive.mjs +11 -11
  174. package/esm2020/components/button/lib/button.component.mjs +26 -33
  175. package/esm2020/components/button/lib/models/button-size.mjs +5 -0
  176. package/esm2020/components/button/lib/models/index.mjs +2 -1
  177. package/esm2020/components/button-group/index.mjs +2 -0
  178. package/esm2020/components/button-group/lib/button-group.component.mjs +54 -0
  179. package/esm2020/components/button-group/odx-angular-components-button-group.mjs +5 -0
  180. package/esm2020/components/checkbox/lib/checkbox.component.mjs +16 -33
  181. package/esm2020/components/content-box/lib/content-box.component.mjs +3 -3
  182. package/esm2020/components/content-box/lib/content-box.module.mjs +4 -4
  183. package/esm2020/components/content-box/lib/directives/content-box-footer-directive.mjs +4 -5
  184. package/esm2020/components/content-box/lib/directives/content-box-header-directive.mjs +4 -5
  185. package/esm2020/components/form-field/index.mjs +7 -0
  186. package/esm2020/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +24 -0
  187. package/esm2020/components/form-field/lib/components/form-group/form-group.component.mjs +36 -0
  188. package/esm2020/components/form-field/lib/components/index.mjs +3 -0
  189. package/esm2020/components/form-field/lib/directives/form-field-control.directive.mjs +68 -0
  190. package/esm2020/components/form-field/lib/directives/form-field-error.directive.mjs +25 -0
  191. package/esm2020/components/form-field/lib/directives/form-field-hint.directive.mjs +23 -0
  192. package/esm2020/components/form-field/lib/directives/form-field-label.directive.mjs +24 -0
  193. package/esm2020/components/form-field/lib/directives/form.directive.mjs +28 -0
  194. package/esm2020/components/form-field/lib/directives/index.mjs +6 -0
  195. package/esm2020/components/form-field/lib/form-field.component.mjs +47 -0
  196. package/esm2020/components/form-field/lib/form-field.config.mjs +7 -0
  197. package/esm2020/components/form-field/lib/form-field.module.mjs +49 -0
  198. package/esm2020/components/form-field/lib/form-field.service.mjs +53 -0
  199. package/esm2020/components/form-field/lib/models/form-field-error-resolver.mjs +2 -0
  200. package/esm2020/components/form-field/lib/models/form-field-error.mjs +2 -0
  201. package/esm2020/components/form-field/lib/models/index.mjs +3 -0
  202. package/esm2020/components/form-field/lib/services/form-field-error.service.mjs +56 -0
  203. package/esm2020/components/form-field/lib/services/index.mjs +2 -0
  204. package/esm2020/components/form-field/odx-angular-components-form-field.mjs +5 -0
  205. package/esm2020/components/header/lib/directives/header-avatar.directive.mjs +3 -3
  206. package/esm2020/components/header/lib/directives/header-title.directive.mjs +4 -5
  207. package/esm2020/components/header/lib/header.component.mjs +11 -11
  208. package/esm2020/components/header/lib/header.module.mjs +9 -9
  209. package/esm2020/components/icon/lib/icon.component.mjs +36 -12
  210. package/esm2020/components/link/link.directive.mjs +14 -18
  211. package/esm2020/components/logo/logo.directive.mjs +10 -11
  212. package/esm2020/components/main-menu/lib/directives/main-menu-button.directive.mjs +12 -13
  213. package/esm2020/components/main-menu/lib/directives/main-menu-item.directive.mjs +14 -14
  214. package/esm2020/components/main-menu/lib/main-menu.component.mjs +21 -22
  215. package/esm2020/components/main-menu/lib/main-menu.module.mjs +7 -7
  216. package/esm2020/components/main-menu/lib/main-menu.service.mjs +5 -5
  217. package/esm2020/components/modal/index.mjs +10 -0
  218. package/esm2020/components/modal/lib/components/index.mjs +3 -0
  219. package/esm2020/components/modal/lib/components/modal-footer/modal-footer.component.mjs +21 -0
  220. package/esm2020/components/modal/lib/components/modal-header/modal-header.component.mjs +38 -0
  221. package/esm2020/components/modal/lib/directives/index.mjs +4 -0
  222. package/esm2020/components/modal/lib/directives/modal-close.directive.mjs +29 -0
  223. package/esm2020/components/modal/lib/directives/modal-content.directive.mjs +24 -0
  224. package/esm2020/components/modal/lib/directives/modal-dismiss.directive.mjs +24 -0
  225. package/esm2020/components/modal/lib/helpers/index.mjs +3 -0
  226. package/esm2020/components/modal/lib/helpers/inject-modal-ref.mjs +6 -0
  227. package/esm2020/components/modal/lib/helpers/provide-modal-ref.mjs +5 -0
  228. package/esm2020/components/modal/lib/modal.component.mjs +63 -0
  229. package/esm2020/components/modal/lib/modal.config.mjs +8 -0
  230. package/esm2020/components/modal/lib/modal.directive.mjs +33 -0
  231. package/esm2020/components/modal/lib/modal.module.mjs +32 -0
  232. package/esm2020/components/modal/lib/modal.service.mjs +70 -0
  233. package/esm2020/components/modal/lib/models/index.mjs +5 -0
  234. package/esm2020/components/modal/lib/models/modal-options.mjs +2 -0
  235. package/esm2020/components/modal/lib/models/modal-ref.mjs +33 -0
  236. package/esm2020/components/modal/lib/models/modal-size.mjs +6 -0
  237. package/esm2020/components/modal/lib/models/modal-type.mjs +2 -0
  238. package/esm2020/components/modal/lib/services/index.mjs +2 -0
  239. package/esm2020/components/modal/lib/services/open-modal-manager.service.mjs +42 -0
  240. package/esm2020/components/modal/odx-angular-components-modal.mjs +5 -0
  241. package/esm2020/components/radio-group/lib/components/radio-button/radio-button.component.mjs +19 -38
  242. package/esm2020/components/radio-group/lib/radio-group.component.mjs +33 -16
  243. package/esm2020/components/radio-group/lib/radio-group.module.mjs +7 -7
  244. package/esm2020/components/switch/index.mjs +2 -0
  245. package/esm2020/components/switch/lib/switch.component.mjs +22 -0
  246. package/esm2020/components/switch/odx-angular-components-switch.mjs +5 -0
  247. package/esm2020/components/toggle-button-group/index.mjs +4 -0
  248. package/esm2020/components/toggle-button-group/lib/components/index.mjs +2 -0
  249. package/esm2020/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +30 -0
  250. package/esm2020/components/toggle-button-group/lib/toggle-button-group.component.mjs +33 -0
  251. package/esm2020/components/toggle-button-group/lib/toggle-button-group.module.mjs +19 -0
  252. package/esm2020/components/toggle-button-group/odx-angular-components-toggle-button-group.mjs +5 -0
  253. package/esm2020/index.mjs +1 -2
  254. package/esm2020/internal/decorators/css-modifier.mjs +6 -5
  255. package/esm2020/internal/helpers/camel-to-kebab-case.mjs +12 -0
  256. package/esm2020/internal/helpers/index.mjs +2 -4
  257. package/esm2020/internal/index.mjs +1 -4
  258. package/esm2020/lib/controllers/controller.mjs +37 -0
  259. package/esm2020/lib/controllers/disabled.controller.mjs +25 -19
  260. package/esm2020/lib/controllers/index.mjs +3 -1
  261. package/esm2020/lib/controllers/readonly.controller.mjs +68 -0
  262. package/esm2020/lib/core.module.mjs +11 -10
  263. package/esm2020/lib/directives/click-outside.directive.mjs +58 -0
  264. package/esm2020/lib/directives/index.mjs +2 -3
  265. package/esm2020/lib/services/index.mjs +1 -2
  266. package/esm2020/lib/services/window-ref.mjs +6 -6
  267. package/esm2020/rxjs/index.mjs +2 -1
  268. package/esm2020/rxjs/lib/mark-for-check.mjs +5 -0
  269. package/esm2020/utils/index.mjs +2 -1
  270. package/esm2020/utils/lib/helpers/angular.mjs +30 -0
  271. package/esm2020/utils/lib/helpers/dom.mjs +22 -0
  272. package/esm2020/utils/lib/helpers/index.mjs +6 -1
  273. package/esm2020/utils/lib/helpers/ng-changes.mjs +1 -1
  274. package/esm2020/utils/lib/helpers/provide-module-config.mjs +21 -0
  275. package/esm2020/utils/lib/helpers/type-guards.mjs +29 -0
  276. package/esm2020/utils/lib/helpers/until-destroyed.mjs +13 -0
  277. package/esm2020/utils/lib/types/get-properties.mjs +2 -0
  278. package/esm2020/utils/lib/types/index.mjs +2 -0
  279. package/fesm2015/odx-angular-animations.mjs +11 -1
  280. package/fesm2015/odx-angular-animations.mjs.map +1 -1
  281. package/fesm2015/odx-angular-cdk-checkbox-control.mjs +50 -0
  282. package/fesm2015/odx-angular-cdk-checkbox-control.mjs.map +1 -0
  283. package/fesm2015/odx-angular-cdk-custom-form-control.mjs +150 -0
  284. package/fesm2015/odx-angular-cdk-custom-form-control.mjs.map +1 -0
  285. package/fesm2015/odx-angular-cdk-dynamic-view.mjs +48 -55
  286. package/fesm2015/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  287. package/fesm2015/odx-angular-cdk-expandable.mjs +114 -0
  288. package/fesm2015/odx-angular-cdk-expandable.mjs.map +1 -0
  289. package/fesm2015/odx-angular-cdk-radio-group-control.mjs +99 -0
  290. package/fesm2015/odx-angular-cdk-radio-group-control.mjs.map +1 -0
  291. package/fesm2015/odx-angular-components-accordion.mjs +104 -0
  292. package/fesm2015/odx-angular-components-accordion.mjs.map +1 -0
  293. package/fesm2015/odx-angular-components-action-group.mjs +14 -17
  294. package/fesm2015/odx-angular-components-action-group.mjs.map +1 -1
  295. package/fesm2015/odx-angular-components-area-header.mjs +23 -24
  296. package/fesm2015/odx-angular-components-area-header.mjs.map +1 -1
  297. package/fesm2015/odx-angular-components-avatar.mjs +9 -9
  298. package/fesm2015/odx-angular-components-avatar.mjs.map +1 -1
  299. package/fesm2015/odx-angular-components-badge.mjs +27 -29
  300. package/fesm2015/odx-angular-components-badge.mjs.map +1 -1
  301. package/fesm2015/odx-angular-components-button-group.mjs +60 -0
  302. package/fesm2015/odx-angular-components-button-group.mjs.map +1 -0
  303. package/fesm2015/odx-angular-components-button.mjs +30 -36
  304. package/fesm2015/odx-angular-components-button.mjs.map +1 -1
  305. package/fesm2015/odx-angular-components-checkbox.mjs +15 -31
  306. package/fesm2015/odx-angular-components-checkbox.mjs.map +1 -1
  307. package/fesm2015/odx-angular-components-content-box.mjs +13 -15
  308. package/fesm2015/odx-angular-components-content-box.mjs.map +1 -1
  309. package/fesm2015/odx-angular-components-form-field.mjs +381 -0
  310. package/fesm2015/odx-angular-components-form-field.mjs.map +1 -0
  311. package/fesm2015/odx-angular-components-header.mjs +24 -25
  312. package/fesm2015/odx-angular-components-header.mjs.map +1 -1
  313. package/fesm2015/odx-angular-components-icon.mjs +35 -11
  314. package/fesm2015/odx-angular-components-icon.mjs.map +1 -1
  315. package/fesm2015/odx-angular-components-link.mjs +13 -17
  316. package/fesm2015/odx-angular-components-link.mjs.map +1 -1
  317. package/fesm2015/odx-angular-components-logo.mjs +9 -10
  318. package/fesm2015/odx-angular-components-logo.mjs.map +1 -1
  319. package/fesm2015/odx-angular-components-main-menu.mjs +48 -50
  320. package/fesm2015/odx-angular-components-main-menu.mjs.map +1 -1
  321. package/fesm2015/odx-angular-components-modal.mjs +380 -0
  322. package/fesm2015/odx-angular-components-modal.mjs.map +1 -0
  323. package/fesm2015/odx-angular-components-radio-group.mjs +64 -67
  324. package/fesm2015/odx-angular-components-radio-group.mjs.map +1 -1
  325. package/fesm2015/odx-angular-components-switch.mjs +28 -0
  326. package/fesm2015/odx-angular-components-switch.mjs.map +1 -0
  327. package/fesm2015/odx-angular-components-toggle-button-group.mjs +75 -0
  328. package/fesm2015/odx-angular-components-toggle-button-group.mjs.map +1 -0
  329. package/fesm2015/odx-angular-internal.mjs +39 -104
  330. package/fesm2015/odx-angular-internal.mjs.map +1 -1
  331. package/fesm2015/odx-angular-rxjs.mjs +6 -2
  332. package/fesm2015/odx-angular-rxjs.mjs.map +1 -1
  333. package/fesm2015/odx-angular-utils.mjs +110 -1
  334. package/fesm2015/odx-angular-utils.mjs.map +1 -1
  335. package/fesm2015/odx-angular.mjs +179 -212
  336. package/fesm2015/odx-angular.mjs.map +1 -1
  337. package/fesm2020/odx-angular-animations.mjs +11 -1
  338. package/fesm2020/odx-angular-animations.mjs.map +1 -1
  339. package/fesm2020/odx-angular-cdk-checkbox-control.mjs +50 -0
  340. package/fesm2020/odx-angular-cdk-checkbox-control.mjs.map +1 -0
  341. package/fesm2020/odx-angular-cdk-custom-form-control.mjs +144 -0
  342. package/fesm2020/odx-angular-cdk-custom-form-control.mjs.map +1 -0
  343. package/fesm2020/odx-angular-cdk-dynamic-view.mjs +41 -37
  344. package/fesm2020/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  345. package/fesm2020/odx-angular-cdk-expandable.mjs +113 -0
  346. package/fesm2020/odx-angular-cdk-expandable.mjs.map +1 -0
  347. package/fesm2020/odx-angular-cdk-radio-group-control.mjs +99 -0
  348. package/fesm2020/odx-angular-cdk-radio-group-control.mjs.map +1 -0
  349. package/fesm2020/odx-angular-components-accordion.mjs +103 -0
  350. package/fesm2020/odx-angular-components-accordion.mjs.map +1 -0
  351. package/fesm2020/odx-angular-components-action-group.mjs +14 -17
  352. package/fesm2020/odx-angular-components-action-group.mjs.map +1 -1
  353. package/fesm2020/odx-angular-components-area-header.mjs +23 -24
  354. package/fesm2020/odx-angular-components-area-header.mjs.map +1 -1
  355. package/fesm2020/odx-angular-components-avatar.mjs +9 -9
  356. package/fesm2020/odx-angular-components-avatar.mjs.map +1 -1
  357. package/fesm2020/odx-angular-components-badge.mjs +27 -29
  358. package/fesm2020/odx-angular-components-badge.mjs.map +1 -1
  359. package/fesm2020/odx-angular-components-button-group.mjs +60 -0
  360. package/fesm2020/odx-angular-components-button-group.mjs.map +1 -0
  361. package/fesm2020/odx-angular-components-button.mjs +30 -32
  362. package/fesm2020/odx-angular-components-button.mjs.map +1 -1
  363. package/fesm2020/odx-angular-components-checkbox.mjs +15 -31
  364. package/fesm2020/odx-angular-components-checkbox.mjs.map +1 -1
  365. package/fesm2020/odx-angular-components-content-box.mjs +13 -15
  366. package/fesm2020/odx-angular-components-content-box.mjs.map +1 -1
  367. package/fesm2020/odx-angular-components-form-field.mjs +378 -0
  368. package/fesm2020/odx-angular-components-form-field.mjs.map +1 -0
  369. package/fesm2020/odx-angular-components-header.mjs +24 -25
  370. package/fesm2020/odx-angular-components-header.mjs.map +1 -1
  371. package/fesm2020/odx-angular-components-icon.mjs +35 -11
  372. package/fesm2020/odx-angular-components-icon.mjs.map +1 -1
  373. package/fesm2020/odx-angular-components-link.mjs +13 -17
  374. package/fesm2020/odx-angular-components-link.mjs.map +1 -1
  375. package/fesm2020/odx-angular-components-logo.mjs +9 -10
  376. package/fesm2020/odx-angular-components-logo.mjs.map +1 -1
  377. package/fesm2020/odx-angular-components-main-menu.mjs +48 -50
  378. package/fesm2020/odx-angular-components-main-menu.mjs.map +1 -1
  379. package/fesm2020/odx-angular-components-modal.mjs +376 -0
  380. package/fesm2020/odx-angular-components-modal.mjs.map +1 -0
  381. package/fesm2020/odx-angular-components-radio-group.mjs +64 -66
  382. package/fesm2020/odx-angular-components-radio-group.mjs.map +1 -1
  383. package/fesm2020/odx-angular-components-switch.mjs +28 -0
  384. package/fesm2020/odx-angular-components-switch.mjs.map +1 -0
  385. package/fesm2020/odx-angular-components-toggle-button-group.mjs +75 -0
  386. package/fesm2020/odx-angular-components-toggle-button-group.mjs.map +1 -0
  387. package/fesm2020/odx-angular-internal.mjs +38 -102
  388. package/fesm2020/odx-angular-internal.mjs.map +1 -1
  389. package/fesm2020/odx-angular-rxjs.mjs +6 -2
  390. package/fesm2020/odx-angular-rxjs.mjs.map +1 -1
  391. package/fesm2020/odx-angular-utils.mjs +109 -1
  392. package/fesm2020/odx-angular-utils.mjs.map +1 -1
  393. package/fesm2020/odx-angular.mjs +175 -206
  394. package/fesm2020/odx-angular.mjs.map +1 -1
  395. package/index.d.ts +0 -1
  396. package/internal/helpers/camel-to-kebab-case.d.ts +2 -0
  397. package/internal/helpers/index.d.ts +1 -3
  398. package/internal/index.d.ts +0 -3
  399. package/{internal/abstract → lib/controllers}/controller.d.ts +3 -2
  400. package/lib/controllers/disabled.controller.d.ts +5 -3
  401. package/lib/controllers/index.d.ts +2 -0
  402. package/lib/controllers/readonly.controller.d.ts +18 -0
  403. package/lib/core.module.d.ts +3 -3
  404. package/lib/directives/click-outside.directive.d.ts +18 -0
  405. package/lib/directives/index.d.ts +1 -2
  406. package/lib/services/index.d.ts +0 -1
  407. package/package.json +94 -10
  408. package/rxjs/index.d.ts +1 -0
  409. package/rxjs/lib/mark-for-check.d.ts +3 -0
  410. package/utils/index.d.ts +1 -0
  411. package/utils/lib/helpers/angular.d.ts +5 -0
  412. package/utils/lib/helpers/dom.d.ts +5 -0
  413. package/utils/lib/helpers/index.d.ts +5 -0
  414. package/utils/lib/helpers/ng-changes.d.ts +1 -1
  415. package/utils/lib/helpers/provide-module-config.d.ts +12 -0
  416. package/{internal → utils/lib}/helpers/type-guards.d.ts +2 -1
  417. package/utils/lib/helpers/until-destroyed.d.ts +2 -0
  418. package/{internal → utils/lib}/types/get-properties.d.ts +1 -1
  419. package/{internal → utils/lib}/types/index.d.ts +0 -0
  420. package/cdk/dynamic-view/lib/facade/animated-component.d.ts +0 -4
  421. package/cdk/dynamic-view/lib/helpers/is-animated-component.d.ts +0 -3
  422. package/cdk/dynamic-view/lib/helpers/wait-for-animations.d.ts +0 -3
  423. package/esm2020/animations/config.mjs +0 -8
  424. package/esm2020/animations/fade.mjs +0 -12
  425. package/esm2020/animations/slide.mjs +0 -34
  426. package/esm2020/cdk/dynamic-view/lib/facade/animated-component.mjs +0 -2
  427. package/esm2020/cdk/dynamic-view/lib/helpers/is-animated-component.mjs +0 -5
  428. package/esm2020/cdk/dynamic-view/lib/helpers/wait-for-animations.mjs +0 -9
  429. package/esm2020/internal/abstract/controller.mjs +0 -29
  430. package/esm2020/internal/abstract/index.mjs +0 -2
  431. package/esm2020/internal/helpers/dom.mjs +0 -7
  432. package/esm2020/internal/helpers/type-guards.mjs +0 -27
  433. package/esm2020/internal/helpers/watch.mjs +0 -8
  434. package/esm2020/internal/providers/index.mjs +0 -2
  435. package/esm2020/internal/providers/watched-controller-provider.mjs +0 -9
  436. package/esm2020/internal/types/get-properties.mjs +0 -2
  437. package/esm2020/internal/types/index.mjs +0 -2
  438. package/esm2020/lib/controls/custom-form-control.mjs +0 -133
  439. package/esm2020/lib/controls/index.mjs +0 -2
  440. package/esm2020/lib/directives/control.directive.mjs +0 -18
  441. package/esm2020/lib/directives/monitor-focus.directive.mjs +0 -34
  442. package/esm2020/lib/services/destroy.service.mjs +0 -18
  443. package/internal/abstract/index.d.ts +0 -1
  444. package/internal/helpers/dom.d.ts +0 -2
  445. package/internal/helpers/watch.d.ts +0 -4
  446. package/internal/providers/index.d.ts +0 -1
  447. package/internal/providers/watched-controller-provider.d.ts +0 -5
  448. package/lib/controls/index.d.ts +0 -1
  449. package/lib/directives/monitor-focus.directive.d.ts +0 -12
  450. package/lib/services/destroy.service.d.ts +0 -9
@@ -0,0 +1,68 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { FormControl, NgControl } from '@angular/forms';
3
+ import { booleanToOptionalAttributeString, injectElement, reactiveAttributeBinding, untilDestroyed } from '@odx/angular/utils';
4
+ import { EMPTY, fromEvent, map, merge, NEVER, of, startWith, switchMap, tap } from 'rxjs';
5
+ import { injectFormFieldModuleConfig } from '../form-field.config';
6
+ import { FormFieldService } from '../form-field.service';
7
+ import { FormFieldErrorService } from '../services';
8
+ import { FormDirective } from './form.directive';
9
+ import * as i0 from "@angular/core";
10
+ export class FormFieldControlDirective {
11
+ constructor() {
12
+ this.config = injectFormFieldModuleConfig();
13
+ this.element = injectElement();
14
+ this.ngControl = inject(NgControl, { optional: true, self: true });
15
+ this.form = inject(FormDirective, { optional: true, skipSelf: true });
16
+ this.onFormReset$ = this.form?.reset$ ?? EMPTY;
17
+ this.onFormSubmit$ = this.form?.submit$ ?? EMPTY;
18
+ this.formFieldService = inject(FormFieldService);
19
+ this.formFieldErrorService = inject(FormFieldErrorService);
20
+ this.isInput = this.config.blurPredicate(this.element.nativeElement);
21
+ this.takeUntilDestroyed = untilDestroyed();
22
+ reactiveAttributeBinding(this.formFieldService.controlId$, 'id');
23
+ reactiveAttributeBinding(this.formFieldService.controlHintId$, 'aria-describedby');
24
+ reactiveAttributeBinding(this.formFieldService.isReadonly$, 'readonly');
25
+ reactiveAttributeBinding(this.formFieldService.isDisabled$.pipe(map(booleanToOptionalAttributeString)), 'aria-disabled');
26
+ reactiveAttributeBinding(this.formFieldService.isReadonly$.pipe(map(booleanToOptionalAttributeString)), 'aria-readonly');
27
+ reactiveAttributeBinding(this.formFieldService.isRequired$.pipe(map(booleanToOptionalAttributeString)), 'aria-required');
28
+ reactiveAttributeBinding(this.formFieldErrorService.hasError$.pipe(map(booleanToOptionalAttributeString)), 'aria-invalid');
29
+ reactiveAttributeBinding(this.formFieldErrorService.hasError$.pipe(switchMap((hasError) => (hasError ? this.formFieldService.controlErrorId$ : of(null)))), 'aria-errormessage');
30
+ }
31
+ ngOnInit() {
32
+ const control = this.ngControl?.control;
33
+ this.formFieldService.registerControl(control ?? new FormControl(), this.element);
34
+ if (!control)
35
+ return;
36
+ const controlChanges$ = merge(this.registerOnBlur(control), this.registerOnChange(control), this.registerOnSubmit(control));
37
+ const changes$ = merge(this.onFormReset$.pipe(tap(() => this.formFieldErrorService?.setError(null))), controlChanges$.pipe(tap(() => this.formFieldErrorService?.setError(control.errors))));
38
+ changes$.pipe(this.takeUntilDestroyed()).subscribe();
39
+ }
40
+ registerOnBlur({ valueChanges }) {
41
+ if (this.config.updateOn.includes('blur') && this.isInput) {
42
+ return fromEvent(this.element.nativeElement, 'focusout').pipe(switchMap(() => valueChanges.pipe(startWith(true))));
43
+ }
44
+ return EMPTY;
45
+ }
46
+ ngOnDestroy() {
47
+ this.formFieldService.removeControl();
48
+ }
49
+ registerOnChange({ valueChanges }) {
50
+ if (this.config.updateOn.includes('change') && this.isInput) {
51
+ return valueChanges;
52
+ }
53
+ return EMPTY;
54
+ }
55
+ registerOnSubmit({ statusChanges, valueChanges }) {
56
+ return merge(this.onFormSubmit$, this.onFormReset$).pipe(switchMap(({ type }) => (type === 'submit' ? merge(statusChanges, valueChanges).pipe(startWith(true)) : NEVER)));
57
+ }
58
+ }
59
+ FormFieldControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
60
+ FormFieldControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: FormFieldControlDirective, isStandalone: true, selector: "[odxFormFieldControl]", ngImport: i0 });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldControlDirective, decorators: [{
62
+ type: Directive,
63
+ args: [{
64
+ standalone: true,
65
+ selector: '[odxFormFieldControl]',
66
+ }]
67
+ }], ctorParameters: function () { return []; } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb250cm9sLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2Zvcm0tZmllbGQvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvcm0tZmllbGQtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0gsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBTWpELE1BQU0sT0FBTyx5QkFBeUI7SUFZcEM7UUFYaUIsV0FBTSxHQUFHLDJCQUEyQixFQUFFLENBQUM7UUFDdkMsWUFBTyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RCxTQUFJLEdBQUcsTUFB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LENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2hILENBQUM7SUFDSixDQUFDOztzSEE3RFUseUJBQXlCOzBHQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHVCQUF1QjtpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGJvb2xlYW5Ub09wdGlvbmFsQXR0cmlidXRlU3RyaW5nLCBpbmplY3RFbGVtZW50LCByZWFjdGl2ZUF0dHJpYnV0ZUJpbmRpbmcsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEVNUFRZLCBmcm9tRXZlbnQsIG1hcCwgbWVyZ2UsIE5FVkVSLCBPYnNlcnZhYmxlLCBvZiwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0Rm9ybUZpZWxkTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vZm9ybS1maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgRm9ybUZpZWxkU2VydmljZSB9IGZyb20gJy4uL2Zvcm0tZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtRmllbGRFcnJvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tvZHhGb3JtRmllbGRDb250cm9sXScsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZENvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0Rm9ybUZpZWxkTW9kdWxlQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGZvcm0gPSBpbmplY3QoRm9ybURpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25Gb3JtUmVzZXQkID0gdGhpcy5mb3JtPy5yZXNldCQgPz8gRU1QVFk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25Gb3JtU3VibWl0JCA9IHRoaXMuZm9ybT8uc3VibWl0JCA/PyBFTVBUWTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmllbGRTZXJ2aWNlID0gaW5qZWN0KEZvcm1GaWVsZFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1GaWVsZEVycm9yU2VydmljZSA9IGluamVjdChGb3JtRmllbGRFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzSW5wdXQgPSB0aGlzLmNvbmZpZy5ibHVyUHJlZGljYXRlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJlYWN0aXZlQXR0cmlidXRlQmluZGluZyh0aGlzLmZvcm1GaWVsZFNlcnZpY2UuY29udHJvbElkJCwgJ2lkJyk7XG4gICAgcmVhY3RpdmVBdHRyaWJ1dGVCaW5kaW5nKHRoaXMuZm9ybUZpZWxkU2VydmljZS5jb250cm9sSGludElkJCwgJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICByZWFjdGl2ZUF0dHJpYnV0ZUJpbmRpbmcodGhpcy5mb3JtRmllbGRTZXJ2aWNlLmlzUmVhZG9ubHkkLCAncmVhZG9ubHknKTtcbiAgICByZWFjdGl2ZUF0dHJpYnV0ZUJpbmRpbmcodGhpcy5mb3JtRmllbGRTZXJ2aWNlLmlzRGlzYWJsZWQkLnBpcGUobWFwKGJvb2xlYW5Ub09wdGlvbmFsQXR0cmlidXRlU3RyaW5nKSksICdhcmlhLWRpc2FibGVkJyk7XG4gICAgcmVhY3RpdmVBdHRyaWJ1dGVCaW5kaW5nKHRoaXMuZm9ybUZpZWxkU2VydmljZS5pc1JlYWRvbmx5JC5waXBlKG1hcChib29sZWFuVG9PcHRpb25hbEF0dHJpYnV0ZVN0cmluZykpLCAnYXJpYS1yZWFkb25seScpO1xuICAgIHJlYWN0aXZlQXR0cmlidXRlQmluZGluZyh0aGlzLmZvcm1GaWVsZFNlcnZpY2UuaXNSZXF1aXJlZCQucGlwZShtYXAoYm9vbGVhblRvT3B0aW9uYWxBdHRyaWJ1dGVTdHJpbmcpKSwgJ2FyaWEtcmVxdWlyZWQnKTtcbiAgICByZWFjdGl2ZUF0dHJpYnV0ZUJpbmRpbmcodGhpcy5mb3JtRmllbGRFcnJvclNlcnZpY2UuaGFzRXJyb3IkLnBpcGUobWFwKGJvb2xlYW5Ub09wdGlvbmFsQXR0cmlidXRlU3RyaW5nKSksICdhcmlhLWludmFsaWQnKTtcbiAgICByZWFjdGl2ZUF0dHJpYnV0ZUJpbmRpbmcoXG4gICAgICB0aGlzLmZvcm1GaWVsZEVycm9yU2VydmljZS5oYXNFcnJvciQucGlwZShzd2l0Y2hNYXAoKGhhc0Vycm9yKSA9PiAoaGFzRXJyb3IgPyB0aGlzLmZvcm1GaWVsZFNlcnZpY2UuY29udHJvbEVycm9ySWQkIDogb2YobnVsbCkpKSksXG4gICAgICAnYXJpYS1lcnJvcm1lc3NhZ2UnXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w7XG4gICAgdGhpcy5mb3JtRmllbGRTZXJ2aWNlLnJlZ2lzdGVyQ29udHJvbChjb250cm9sID8/IG5ldyBGb3JtQ29udHJvbCgpLCB0aGlzLmVsZW1lbnQpO1xuICAgIGlmICghY29udHJvbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udHJvbENoYW5nZXMkID0gbWVyZ2UodGhpcy5yZWdpc3Rlck9uQmx1cihjb250cm9sKSwgdGhpcy5yZWdpc3Rlck9uQ2hhbmdlKGNvbnRyb2wpLCB0aGlzLnJlZ2lzdGVyT25TdWJtaXQoY29udHJvbCkpO1xuICAgIGNvbnN0IGNoYW5nZXMkID0gbWVyZ2UoXG4gICAgICB0aGlzLm9uRm9ybVJlc2V0JC5waXBlKHRhcCgoKSA9PiB0aGlzLmZvcm1GaWVsZEVycm9yU2VydmljZT8uc2V0RXJyb3IobnVsbCkpKSxcbiAgICAgIGNvbnRyb2xDaGFuZ2VzJC5waXBlKHRhcCgoKSA9PiB0aGlzLmZvcm1GaWVsZEVycm9yU2VydmljZT8uc2V0RXJyb3IoY29udHJvbC5lcnJvcnMpKSlcbiAgICApO1xuICAgIGNoYW5nZXMkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyT25CbHVyKHsgdmFsdWVDaGFuZ2VzIH06IEFic3RyYWN0Q29udHJvbCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy51cGRhdGVPbi5pbmNsdWRlcygnYmx1cicpICYmIHRoaXMuaXNJbnB1dCkge1xuICAgICAgcmV0dXJuIGZyb21FdmVudCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3Vzb3V0JykucGlwZShzd2l0Y2hNYXAoKCkgPT4gdmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRydWUpKSkpO1xuICAgIH1cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRmllbGRTZXJ2aWNlLnJlbW92ZUNvbnRyb2woKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJPbkNoYW5nZSh7IHZhbHVlQ2hhbmdlcyB9OiBBYnN0cmFjdENvbnRyb2wpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICBpZiAodGhpcy5jb25maWcudXBkYXRlT24uaW5jbHVkZXMoJ2NoYW5nZScpICYmIHRoaXMuaXNJbnB1dCkge1xuICAgICAgcmV0dXJuIHZhbHVlQ2hhbmdlcztcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlck9uU3VibWl0KHsgc3RhdHVzQ2hhbmdlcywgdmFsdWVDaGFuZ2VzIH06IEFic3RyYWN0Q29udHJvbCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiBtZXJnZSh0aGlzLm9uRm9ybVN1Ym1pdCQsIHRoaXMub25Gb3JtUmVzZXQkKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh7IHR5cGUgfSkgPT4gKHR5cGUgPT09ICdzdWJtaXQnID8gbWVyZ2Uoc3RhdHVzQ2hhbmdlcywgdmFsdWVDaGFuZ2VzKS5waXBlKHN0YXJ0V2l0aCh0cnVlKSkgOiBORVZFUikpXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ import { Directive, inject, Input, TemplateRef } from '@angular/core';
2
+ import { FormFieldErrorService } from '../services';
3
+ import * as i0 from "@angular/core";
4
+ export class FormFieldErrorDirective {
5
+ constructor() {
6
+ this.formFieldErrorService = inject(FormFieldErrorService, { skipSelf: true });
7
+ this.template = inject(TemplateRef, { self: true });
8
+ }
9
+ ngOnInit() {
10
+ this.formFieldErrorService.registerCustomError(this.key, this.template);
11
+ }
12
+ }
13
+ FormFieldErrorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14
+ FormFieldErrorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: FormFieldErrorDirective, isStandalone: true, selector: "[odxFormFieldError]", inputs: { key: ["odxFormFieldError", "key"] }, ngImport: i0 });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldErrorDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ standalone: true,
19
+ selector: '[odxFormFieldError]',
20
+ }]
21
+ }], propDecorators: { key: [{
22
+ type: Input,
23
+ args: ['odxFormFieldError']
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLWVycm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLHVCQUF1QjtJQUpwQztRQUttQiwwQkFBcUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBUWpFO0lBSFEsUUFBUTtRQUNiLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDOztvSEFUVSx1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzs4QkFNUSxHQUFHO3NCQURULEtBQUs7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtRmllbGRFcnJvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tvZHhGb3JtRmllbGRFcnJvcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRFcnJvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybUZpZWxkRXJyb3JTZXJ2aWNlID0gaW5qZWN0KEZvcm1GaWVsZEVycm9yU2VydmljZSwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZiwgeyBzZWxmOiB0cnVlIH0pO1xuXG4gIEBJbnB1dCgnb2R4Rm9ybUZpZWxkRXJyb3InKVxuICBwdWJsaWMga2V5Pzogc3RyaW5nO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1GaWVsZEVycm9yU2VydmljZS5yZWdpc3RlckN1c3RvbUVycm9yKHRoaXMua2V5LCB0aGlzLnRlbXBsYXRlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,23 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { reactiveAttributeBinding } from '@odx/angular/utils';
3
+ import { FormFieldService } from '../form-field.service';
4
+ import * as i0 from "@angular/core";
5
+ export class FormFieldHintDirective {
6
+ constructor() {
7
+ this.formFieldService = inject(FormFieldService, { skipSelf: true });
8
+ reactiveAttributeBinding(inject(FormFieldService).controlHintId$, 'id');
9
+ }
10
+ }
11
+ FormFieldHintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ FormFieldHintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: FormFieldHintDirective, isStandalone: true, selector: "odx-form-field-hint", host: { properties: { "class.odx-form-field__hint": "true" } }, ngImport: i0 });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldHintDirective, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ standalone: true,
17
+ selector: 'odx-form-field-hint',
18
+ host: {
19
+ '[class.odx-form-field__hint]': 'true',
20
+ },
21
+ }]
22
+ }], ctorParameters: function () { return []; } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1oaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2Zvcm0tZmllbGQvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvcm0tZmllbGQtaGludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBU3pELE1BQU0sT0FBTyxzQkFBc0I7SUFHakM7UUFGbUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFHakYsd0JBQXdCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7O21IQUxVLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBUGxDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLElBQUksRUFBRTt3QkFDSiw4QkFBOEIsRUFBRSxNQUFNO3FCQUN2QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZWFjdGl2ZUF0dHJpYnV0ZUJpbmRpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkU2VydmljZSB9IGZyb20gJy4uL2Zvcm0tZmllbGQuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ29keC1mb3JtLWZpZWxkLWhpbnQnLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vZHgtZm9ybS1maWVsZF9faGludF0nOiAndHJ1ZScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEhpbnREaXJlY3RpdmUge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUZpZWxkU2VydmljZSA9IGluamVjdChGb3JtRmllbGRTZXJ2aWNlLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJlYWN0aXZlQXR0cmlidXRlQmluZGluZyhpbmplY3QoRm9ybUZpZWxkU2VydmljZSkuY29udHJvbEhpbnRJZCQsICdpZCcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive } from '@angular/core';
3
+ import { CSSComponent } from '@odx/angular/internal';
4
+ import { injectElement } from '@odx/angular/utils';
5
+ import * as i0 from "@angular/core";
6
+ let FormFieldLabelDirective = class FormFieldLabelDirective {
7
+ constructor() {
8
+ this.element = injectElement();
9
+ }
10
+ };
11
+ FormFieldLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ FormFieldLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: FormFieldLabelDirective, isStandalone: true, selector: "odx-form-field-label", ngImport: i0 });
13
+ FormFieldLabelDirective = __decorate([
14
+ CSSComponent('form-field-label')
15
+ ], FormFieldLabelDirective);
16
+ export { FormFieldLabelDirective };
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldLabelDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ standalone: true,
21
+ selector: 'odx-form-field-label',
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLWxhYmVsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU81QyxJQUFNLHVCQUF1QixHQUE3QixNQUFNLHVCQUF1QjtJQUE3QjtRQUNXLFlBQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztLQUMzQzs7b0hBRlksdUJBQXVCO3dHQUF2Qix1QkFBdUI7QUFBdkIsdUJBQXVCO0lBTG5DLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztHQUtwQix1QkFBdUIsQ0FFbkM7U0FGWSx1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuQENTU0NvbXBvbmVudCgnZm9ybS1maWVsZC1sYWJlbCcpXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdvZHgtZm9ybS1maWVsZC1sYWJlbCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlIHtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive } from '@angular/core';
3
+ import { CSSComponent } from '@odx/angular/internal';
4
+ import { injectElement, untilDestroyed } from '@odx/angular/utils';
5
+ import { fromEvent, share } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ let FormDirective = class FormDirective {
8
+ constructor() {
9
+ this.takeUntilDestroyed = untilDestroyed();
10
+ this.element = injectElement();
11
+ this.submit$ = fromEvent(this.element.nativeElement, 'submit').pipe(this.takeUntilDestroyed(), share());
12
+ this.reset$ = fromEvent(this.element.nativeElement, 'reset').pipe(this.takeUntilDestroyed(), share());
13
+ }
14
+ };
15
+ FormDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
16
+ FormDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: FormDirective, isStandalone: true, selector: "form[odxForm]", ngImport: i0 });
17
+ FormDirective = __decorate([
18
+ CSSComponent('form')
19
+ ], FormDirective);
20
+ export { FormDirective };
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormDirective, decorators: [{
22
+ type: Directive,
23
+ args: [{
24
+ standalone: true,
25
+ selector: 'form[odxForm]',
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZGlyZWN0aXZlcy9mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFPakMsSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYTtJQUFuQjtRQUNZLHVCQUFrQixHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXZDLFlBQU8sR0FBRyxhQUFhLEVBQW1CLENBQUM7UUFDM0MsWUFBTyxHQUFHLFNBQVMsQ0FBUSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRyxXQUFNLEdBQUcsU0FBUyxDQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3pIOzswR0FOWSxhQUFhOzhGQUFiLGFBQWE7QUFBYixhQUFhO0lBTHpCLFlBQVksQ0FBQyxNQUFNLENBQUM7R0FLUixhQUFhLENBTXpCO1NBTlksYUFBYTsyRkFBYixhQUFhO2tCQUp6QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsZUFBZTtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIHNoYXJlIH0gZnJvbSAncnhqcyc7XG5cbkBDU1NDb21wb25lbnQoJ2Zvcm0nKVxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnZm9ybVtvZHhGb3JtXScsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1EaXJlY3RpdmUge1xuICBwcml2YXRlIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50PEhUTUxGb3JtRWxlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHN1Ym1pdCQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc3VibWl0JykucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpLCBzaGFyZSgpKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlc2V0JCA9IGZyb21FdmVudDxFdmVudD4odGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdyZXNldCcpLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSwgc2hhcmUoKSk7XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './form-field-control.directive';
2
+ export * from './form-field-error.directive';
3
+ export * from './form-field-hint.directive';
4
+ export * from './form-field-label.directive';
5
+ export * from './form.directive';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQtY29udHJvbC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWVycm9yLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQtaGludC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWxhYmVsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0uZGlyZWN0aXZlJztcbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { ChangeDetectionStrategy, Component, ContentChild, inject, Input, ViewEncapsulation } from '@angular/core';
3
+ import { CoreModule, DisabledController, ReadonlyController } from '@odx/angular';
4
+ import { CSSComponent } from '@odx/angular/internal';
5
+ import { injectElement, reactiveClassBinding } from '@odx/angular/utils';
6
+ import { FormFieldInfoComponent, FormGroupComponent } from './components';
7
+ import { FormFieldLabelDirective } from './directives';
8
+ import { FormFieldService } from './form-field.service';
9
+ import { FormFieldErrorService } from './services';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ let FormFieldComponent = class FormFieldComponent {
13
+ constructor() {
14
+ this.formGroup = inject(FormGroupComponent, { optional: true, host: true });
15
+ this.formFieldService = inject(FormFieldService, { self: true });
16
+ this.formFieldErrorService = inject(FormFieldErrorService, { self: true });
17
+ this.element = injectElement();
18
+ this.label = null;
19
+ reactiveClassBinding(this.formFieldService.isRequired$, 'odx-form-field--required');
20
+ reactiveClassBinding(this.formFieldService.isDisabled$, 'is-disabled');
21
+ reactiveClassBinding(this.formFieldService.isReadonly$, 'is-readonly');
22
+ reactiveClassBinding(this.formFieldErrorService.hasError$, 'has-error');
23
+ }
24
+ get hasLabel() {
25
+ return !!(this.labelDirective || this.label);
26
+ }
27
+ get isStandalone() {
28
+ return !this.formGroup;
29
+ }
30
+ };
31
+ FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormFieldComponent, isStandalone: true, selector: "odx-form-field", inputs: { label: "label" }, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], queries: [{ propertyName: "labelDirective", first: true, predicate: FormFieldLabelDirective, descendants: true }], ngImport: i0, template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }, { kind: "directive", type: FormFieldLabelDirective, selector: "odx-form-field-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
33
+ FormFieldComponent = __decorate([
34
+ CSSComponent('form-field'),
35
+ __metadata("design:paramtypes", [])
36
+ ], FormFieldComponent);
37
+ export { FormFieldComponent };
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ standalone: true, selector: 'odx-form-field', imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n" }]
41
+ }], ctorParameters: function () { return []; }, propDecorators: { labelDirective: [{
42
+ type: ContentChild,
43
+ args: [FormFieldLabelDirective]
44
+ }], label: [{
45
+ type: Input
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQVk1QyxJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFrQjtJQW9CN0I7UUFuQm1CLGNBQVMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELDBCQUFxQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLFlBQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztRQU1uQyxVQUFLLEdBQW1CLElBQUksQ0FBQztRQVdsQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDcEYsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN2RSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQWJELElBQVcsUUFBUTtRQUNqQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekIsQ0FBQzs7K0dBbEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlGQUZsQixDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLHNFQVFsRyx1QkFBdUIsZ0RDekJ2QywyN0JBc0JBLDJDRFRZLFVBQVUsd0xBQUUsc0JBQXNCLG1GQUFFLHVCQUF1QjtBQU0xRCxrQkFBa0I7SUFWOUIsWUFBWSxDQUFDLFlBQVksQ0FBQzs7R0FVZCxrQkFBa0IsQ0EwQjlCO1NBMUJZLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQVQ5QixTQUFTO2lDQUNJLElBQUksWUFDTixnQkFBZ0IsV0FDakIsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLENBQUMsaUJBRXZELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQzswRUFTekcsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSTlCLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgaW5qZWN0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIERpc2FibGVkQ29udHJvbGxlciwgUmVhZG9ubHlDb250cm9sbGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50LCByZWFjdGl2ZUNsYXNzQmluZGluZyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBGb3JtRmllbGRJbmZvQ29tcG9uZW50LCBGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkU2VydmljZSB9IGZyb20gJy4vZm9ybS1maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1GaWVsZEVycm9yU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuXG5AQ1NTQ29tcG9uZW50KCdmb3JtLWZpZWxkJylcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ29keC1mb3JtLWZpZWxkJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEZvcm1GaWVsZEluZm9Db21wb25lbnQsIEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbRm9ybUZpZWxkU2VydmljZSwgRm9ybUZpZWxkRXJyb3JTZXJ2aWNlLCBEaXNhYmxlZENvbnRyb2xsZXIuY29ubmVjdCgpLCBSZWFkb25seUNvbnRyb2xsZXIuY29ubmVjdCgpXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1Hcm91cCA9IGluamVjdChGb3JtR3JvdXBDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUsIGhvc3Q6IHRydWUgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtRmllbGRTZXJ2aWNlID0gaW5qZWN0KEZvcm1GaWVsZFNlcnZpY2UsIHsgc2VsZjogdHJ1ZSB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1GaWVsZEVycm9yU2VydmljZSA9IGluamVjdChGb3JtRmllbGRFcnJvclNlcnZpY2UsIHsgc2VsZjogdHJ1ZSB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgQENvbnRlbnRDaGlsZChGb3JtRmllbGRMYWJlbERpcmVjdGl2ZSlcbiAgcHVibGljIGxhYmVsRGlyZWN0aXZlPzogRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsPzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBoYXNMYWJlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5sYWJlbERpcmVjdGl2ZSB8fCB0aGlzLmxhYmVsKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdGFuZGFsb25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mb3JtR3JvdXA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZWFjdGl2ZUNsYXNzQmluZGluZyh0aGlzLmZvcm1GaWVsZFNlcnZpY2UuaXNSZXF1aXJlZCQsICdvZHgtZm9ybS1maWVsZC0tcmVxdWlyZWQnKTtcbiAgICByZWFjdGl2ZUNsYXNzQmluZGluZyh0aGlzLmZvcm1GaWVsZFNlcnZpY2UuaXNEaXNhYmxlZCQsICdpcy1kaXNhYmxlZCcpO1xuICAgIHJlYWN0aXZlQ2xhc3NCaW5kaW5nKHRoaXMuZm9ybUZpZWxkU2VydmljZS5pc1JlYWRvbmx5JCwgJ2lzLXJlYWRvbmx5Jyk7XG4gICAgcmVhY3RpdmVDbGFzc0JpbmRpbmcodGhpcy5mb3JtRmllbGRFcnJvclNlcnZpY2UuaGFzRXJyb3IkLCAnaGFzLWVycm9yJyk7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19sYWJlbFwiIFthdHRyLmZvcl09XCJmb3JtRmllbGRTZXJ2aWNlLmNvbnRyb2xJZCQgfCBhc3luY1wiIFthdHRyLmFyaWEtb3duc109XCJmb3JtRmllbGRTZXJ2aWNlLmNvbnRyb2xJZCQgfCBhc3luY1wiICpuZ0lmPVwiaGFzTGFiZWxcIj5cbiAgPG9keC1mb3JtLWZpZWxkLWxhYmVsICpuZ0lmPVwibGFiZWw7IGVsc2UgbGFiZWxUZW1wbGF0ZVwiPlxuICAgIHt7IGxhYmVsIH19XG4gIDwvb2R4LWZvcm0tZmllbGQtbGFiZWw+XG4gIDxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJvZHgtZm9ybS1maWVsZC1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbGFiZWw+XG48ZGl2IGNsYXNzPVwib2R4LWZvcm0tZmllbGRfX2lubmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJvZHgtZm9ybS1maWVsZF9fY29udHJvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvZHgtZm9ybS1maWVsZF9fcHJlZml4XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbb2R4Rm9ybUZpZWxkUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19zdWZmaXhcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhGb3JtRmllbGRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG9keC1mb3JtLWZpZWxkLWluZm8gW2Vycm9yXT1cImZvcm1GaWVsZEVycm9yU2VydmljZS5lcnJvciQgfCBhc3luY1wiICpuZ0lmPVwiIWZvcm1Hcm91cFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm9keC1mb3JtLWZpZWxkLWhpbnRcIj48L25nLWNvbnRlbnQ+XG4gIDwvb2R4LWZvcm0tZmllbGQtaW5mbz5cbjwvZGl2PlxuIl19
@@ -0,0 +1,7 @@
1
+ import { createModuleConfigTokens } from '@odx/angular/utils';
2
+ export const { FormFieldDefaultModuleConfig, FormFieldModuleConfig, injectFormFieldModuleConfig } = createModuleConfigTokens('FormField', '@odx/angular/components/form-field', {
3
+ errors: {},
4
+ blurPredicate: ({ tagName }) => ['input', 'select', 'textarea'].includes(tagName.toLowerCase()),
5
+ updateOn: ['blur'],
6
+ });
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFxQjlELE1BQU0sQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLEVBQUUsR0FBRyx3QkFBd0IsQ0FDMUgsV0FBVyxFQUNYLG9DQUFvQyxFQUNwQztJQUNFLE1BQU0sRUFBRSxFQUFFO0lBQ1YsYUFBYSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEcsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO0NBQ00sQ0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZU1vZHVsZUNvbmZpZ1Rva2VucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBGb3JtRmllbGRFcnJvclJlc29sdmVycyB9IGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRmllbGRNb2R1bGVDb25maWcge1xuICAvKipcbiAgICogT2JqZWN0IG9mIGVycm9yIHJlc29sdmVycyB1c2VkIHRvIHJlc29sdmUgZXJyb3IgbWVzc2FnZXMgZ2xvYmFsbHlcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGVycm9yczogRm9ybUZpZWxkRXJyb3JSZXNvbHZlcnM7XG4gIC8qKlxuICAgKiBEZXRlY3QgaWYgbmF0aXZlIGNvbnRyb2wgZWxlbWVudCBzdXBwb3J0cyB0aGUgYGJsdXJgIGV2ZW50XG4gICAqIEBkZWZhdWx0ICh7IHRhZ05hbWUgfTogRWxlbWVudCkgPT4gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXS5pbmNsdWRlcyh0YWdOYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAqICovXG4gIGJsdXJQcmVkaWNhdGU6IChlbGVtZW50OiBFbGVtZW50KSA9PiBib29sZWFuO1xuICAvKipcbiAgICogRGV0ZWN0IGZvcm0gZmllbGQgY29udHJvbCBjaGFuZ2VzIG9uIGBibHVyYCBhbmQvb3IgYGNoYW5nZWBcbiAgICogQGRlZmF1bHQgWydibHVyJ11cbiAgICovXG4gIHVwZGF0ZU9uOiBBcnJheTwnYmx1cicgfCAnY2hhbmdlJz47XG59XG5cbmV4cG9ydCBjb25zdCB7IEZvcm1GaWVsZERlZmF1bHRNb2R1bGVDb25maWcsIEZvcm1GaWVsZE1vZHVsZUNvbmZpZywgaW5qZWN0Rm9ybUZpZWxkTW9kdWxlQ29uZmlnIH0gPSBjcmVhdGVNb2R1bGVDb25maWdUb2tlbnMoXG4gICdGb3JtRmllbGQnLFxuICAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZCcsXG4gIHtcbiAgICBlcnJvcnM6IHt9LFxuICAgIGJsdXJQcmVkaWNhdGU6ICh7IHRhZ05hbWUgfTogRWxlbWVudCkgPT4gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXS5pbmNsdWRlcyh0YWdOYW1lLnRvTG93ZXJDYXNlKCkpLFxuICAgIHVwZGF0ZU9uOiBbJ2JsdXInXSxcbiAgfSBhcyBGb3JtRmllbGRNb2R1bGVDb25maWdcbik7XG4iXX0=
@@ -0,0 +1,49 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CoreModule } from '@odx/angular';
3
+ import { provideModuleConfig } from '@odx/angular/utils';
4
+ import { FormGroupComponent } from './components';
5
+ import { FormDirective, FormFieldControlDirective, FormFieldErrorDirective, FormFieldHintDirective, FormFieldLabelDirective } from './directives';
6
+ import { FormFieldComponent } from './form-field.component';
7
+ import { FormFieldModuleConfig } from './form-field.config';
8
+ import * as i0 from "@angular/core";
9
+ const modules = [
10
+ FormFieldComponent,
11
+ FormGroupComponent,
12
+ FormDirective,
13
+ FormFieldControlDirective,
14
+ FormFieldErrorDirective,
15
+ FormFieldHintDirective,
16
+ FormFieldLabelDirective,
17
+ ];
18
+ export class FormFieldModule {
19
+ static forRoot(config) {
20
+ return {
21
+ ngModule: FormFieldModule,
22
+ providers: [provideModuleConfig(FormFieldModuleConfig, config)],
23
+ };
24
+ }
25
+ }
26
+ FormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
+ FormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: FormFieldModule, imports: [FormFieldComponent,
28
+ FormGroupComponent,
29
+ FormDirective,
30
+ FormFieldControlDirective,
31
+ FormFieldErrorDirective,
32
+ FormFieldHintDirective,
33
+ FormFieldLabelDirective], exports: [CoreModule, FormFieldComponent,
34
+ FormGroupComponent,
35
+ FormDirective,
36
+ FormFieldControlDirective,
37
+ FormFieldErrorDirective,
38
+ FormFieldHintDirective,
39
+ FormFieldLabelDirective] });
40
+ FormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldModule, imports: [FormFieldComponent,
41
+ FormGroupComponent, CoreModule] });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldModule, decorators: [{
43
+ type: NgModule,
44
+ args: [{
45
+ imports: modules,
46
+ exports: [CoreModule, ...modules],
47
+ }]
48
+ }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQWtELG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRTVELE1BQU0sT0FBTyxHQUFHO0lBQ2Qsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IseUJBQXlCO0lBQ3pCLHVCQUF1QjtJQUN2QixzQkFBc0I7SUFDdEIsdUJBQXVCO0NBQ3hCLENBQUM7QUFNRixNQUFNLE9BQU8sZUFBZTtJQUNuQixNQUFNLENBQUMsT0FBTyxDQUNuQixNQUErRDtRQUUvRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsQ0FBQztJQUNKLENBQUM7OzRHQVJVLGVBQWU7NkdBQWYsZUFBZSxZQWIxQixrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLHNCQUFzQjtRQUN0Qix1QkFBdUIsYUFLYixVQUFVLEVBWHBCLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLHlCQUF5QjtRQUN6Qix1QkFBdUI7UUFDdkIsc0JBQXNCO1FBQ3RCLHVCQUF1Qjs2R0FPWixlQUFlLFlBYjFCLGtCQUFrQjtRQUNsQixrQkFBa0IsRUFVUixVQUFVOzJGQUVULGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdEZXBlbmRlbmNpZXMsIE1vZHVsZUNvbmZpZ1Byb3ZpZGVyLCBwcm92aWRlTW9kdWxlQ29uZmlnIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEZvcm1Hcm91cENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGb3JtRGlyZWN0aXZlLCBGb3JtRmllbGRDb250cm9sRGlyZWN0aXZlLCBGb3JtRmllbGRFcnJvckRpcmVjdGl2ZSwgRm9ybUZpZWxkSGludERpcmVjdGl2ZSwgRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRmllbGRNb2R1bGVDb25maWcgfSBmcm9tICcuL2Zvcm0tZmllbGQuY29uZmlnJztcblxuY29uc3QgbW9kdWxlcyA9IFtcbiAgRm9ybUZpZWxkQ29tcG9uZW50LFxuICBGb3JtR3JvdXBDb21wb25lbnQsXG4gIEZvcm1EaXJlY3RpdmUsXG4gIEZvcm1GaWVsZENvbnRyb2xEaXJlY3RpdmUsXG4gIEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlLFxuICBGb3JtRmllbGRIaW50RGlyZWN0aXZlLFxuICBGb3JtRmllbGRMYWJlbERpcmVjdGl2ZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IG1vZHVsZXMsXG4gIGV4cG9ydHM6IFtDb3JlTW9kdWxlLCAuLi5tb2R1bGVzXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290PEQgZXh0ZW5kcyBNb2R1bGVDb25maWdEZXBlbmRlbmNpZXM+KFxuICAgIGNvbmZpZzogTW9kdWxlQ29uZmlnUHJvdmlkZXI8UGFydGlhbDxGb3JtRmllbGRNb2R1bGVDb25maWc+LCBEPlxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZvcm1GaWVsZE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRm9ybUZpZWxkTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZU1vZHVsZUNvbmZpZyhGb3JtRmllbGRNb2R1bGVDb25maWcsIGNvbmZpZyldLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { Controller, DisabledController, ReadonlyController } from '@odx/angular';
4
+ import { BehaviorSubject, distinctUntilChanged, EMPTY, map, merge, of, shareReplay, startWith, switchMap, tap } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class FormFieldService extends Controller {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.disabledController = DisabledController.inject();
10
+ this.readonlyController = ReadonlyController.inject();
11
+ this.control$$ = new BehaviorSubject(null);
12
+ this.control$ = this.control$$.pipe(shareReplay({ refCount: true }));
13
+ this.controlId$ = this.control$.pipe(map((control) => (control ? control.nativeElement.id || `odx-form-field-${FormFieldService.ID++}` : null)), shareReplay({ refCount: true }));
14
+ this.controlHintId$ = this.controlId$.pipe(map((id) => (id ? `${id}-hint` : null)), shareReplay({ refCount: true }));
15
+ this.controlErrorId$ = this.controlId$.pipe(map((id) => (id ? `${id}-error` : null)), shareReplay({ refCount: true }));
16
+ this.isDisabled$ = this.control$.pipe(switchMap((control) => (control ? merge(this.updateControlDisabledState(control), this.getControlDisabledState(control)) : of(false))), distinctUntilChanged(), shareReplay({ refCount: true }));
17
+ this.isRequired$ = this.control$.pipe(map((control) => (control ? control.nativeElement.hasAttribute('required') || control.control.hasValidator(Validators.required) : false)), shareReplay({ refCount: true }));
18
+ this.isReadonly$ = this.control$.pipe(switchMap((control) => (control && this.readonlyController ? this.readonlyController.isReadonly$ : of(false))));
19
+ }
20
+ ngOnDestroy() {
21
+ this.control$$.complete();
22
+ super.ngOnDestroy();
23
+ }
24
+ registerControl(control, { nativeElement }) {
25
+ this.control$$.next({ control, nativeElement });
26
+ }
27
+ removeControl() {
28
+ this.control$$.next(null);
29
+ }
30
+ updateControlDisabledState({ control }) {
31
+ if (this.disabledController) {
32
+ return this.disabledController.isDisabled$.pipe(tap((state) => {
33
+ if (state) {
34
+ control.disable();
35
+ }
36
+ else {
37
+ control.enable();
38
+ }
39
+ }));
40
+ }
41
+ return EMPTY;
42
+ }
43
+ getControlDisabledState({ control }) {
44
+ return control.statusChanges.pipe(startWith(control.status), map((status) => status === 'DISABLED'), distinctUntilChanged());
45
+ }
46
+ }
47
+ FormFieldService.ID = 0;
48
+ FormFieldService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
49
+ FormFieldService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldService });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldService, decorators: [{
51
+ type: Injectable
52
+ }] });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZC9zcmMvbGliL2Zvcm0tZmllbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUXhJLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxVQUFVO0lBRGhEOztRQUltQix1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRCx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBRTVELGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksa0JBQWtCLGdCQUFnQixDQUFDLEVBQUUs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LE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDbkI7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUNsQjtZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEVBQUUsT0FBTyxFQUFnQjtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUN6QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFDdEMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7O0FBbEVjLG1CQUFFLEdBQUcsQ0FBQyxDQUFDOzZHQURYLGdCQUFnQjtpSEFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xsZXIsIERpc2FibGVkQ29udHJvbGxlciwgUmVhZG9ubHlDb250cm9sbGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIEVNUFRZLCBtYXAsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIEZpZWxkQ29udHJvbCB7XG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcbiAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRTZXJ2aWNlIGV4dGVuZHMgQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIElEID0gMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkQ29udHJvbGxlciA9IERpc2FibGVkQ29udHJvbGxlci5pbmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWFkb25seUNvbnRyb2xsZXIgPSBSZWFkb25seUNvbnRyb2xsZXIuaW5qZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbCQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWVsZENvbnRyb2wgfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbCQgPSB0aGlzLmNvbnRyb2wkJC5waXBlKHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUgfSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkJCA9IHRoaXMuY29udHJvbCQucGlwZShcbiAgICBtYXAoKGNvbnRyb2wpID0+IChjb250cm9sID8gY29udHJvbC5uYXRpdmVFbGVtZW50LmlkIHx8IGBvZHgtZm9ybS1maWVsZC0ke0Zvcm1GaWVsZFNlcnZpY2UuSUQrK31gIDogbnVsbCkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUgfSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xIaW50SWQkID0gdGhpcy5jb250cm9sSWQkLnBpcGUoXG4gICAgbWFwKChpZCkgPT4gKGlkID8gYCR7aWR9LWhpbnRgIDogbnVsbCkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUgfSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xFcnJvcklkJCA9IHRoaXMuY29udHJvbElkJC5waXBlKFxuICAgIG1hcCgoaWQpID0+IChpZCA/IGAke2lkfS1lcnJvcmAgOiBudWxsKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNEaXNhYmxlZCQgPSB0aGlzLmNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiAoY29udHJvbCA/IG1lcmdlKHRoaXMudXBkYXRlQ29udHJvbERpc2FibGVkU3RhdGUoY29udHJvbCksIHRoaXMuZ2V0Q29udHJvbERpc2FibGVkU3RhdGUoY29udHJvbCkpIDogb2YoZmFsc2UpKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBpc1JlcXVpcmVkJCA9IHRoaXMuY29udHJvbCQucGlwZShcbiAgICBtYXAoKGNvbnRyb2wpID0+IChjb250cm9sID8gY29udHJvbC5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgncmVxdWlyZWQnKSB8fCBjb250cm9sLmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpIDogZmFsc2UpKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBpc1JlYWRvbmx5JCA9IHRoaXMuY29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IChjb250cm9sICYmIHRoaXMucmVhZG9ubHlDb250cm9sbGVyID8gdGhpcy5yZWFkb25seUNvbnRyb2xsZXIuaXNSZWFkb25seSQgOiBvZihmYWxzZSkpKVxuICApO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wkJC5jb21wbGV0ZSgpO1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJDb250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgeyBuYXRpdmVFbGVtZW50IH06IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sJCQubmV4dCh7IGNvbnRyb2wsIG5hdGl2ZUVsZW1lbnQgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ29udHJvbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wkJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sRGlzYWJsZWRTdGF0ZSh7IGNvbnRyb2wgfTogRmllbGRDb250cm9sKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWRDb250cm9sbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZENvbnRyb2xsZXIuaXNEaXNhYmxlZCQucGlwZShcbiAgICAgICAgdGFwKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgY29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sRGlzYWJsZWRTdGF0ZSh7IGNvbnRyb2wgfTogRmllbGRDb250cm9sKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKGNvbnRyb2wuc3RhdHVzKSxcbiAgICAgIG1hcCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdESVNBQkxFRCcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci1yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2Zvcm0tZmllbGQvc3JjL2xpYi9tb2RlbHMvZm9ybS1maWVsZC1lcnJvci1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY1RleHRDb250ZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuXG5leHBvcnQgdHlwZSBGb3JtRmllbGRFcnJvclJlc29sdmVyPEMgPSBib29sZWFuPiA9IChjb250ZXh0OiBDKSA9PiBEeW5hbWljVGV4dENvbnRlbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUZpZWxkRXJyb3JSZXNvbHZlcnMge1xuICBtaW4/OiBGb3JtRmllbGRFcnJvclJlc29sdmVyPHsgbWluOiBudW1iZXI7IGFjdHVhbDogbnVtYmVyIH0+O1xuICBtYXg/OiBGb3JtRmllbGRFcnJvclJlc29sdmVyPHsgbWF4OiBudW1iZXI7IGFjdHVhbDogbnVtYmVyIH0+O1xuICByZXF1aXJlZD86IEZvcm1GaWVsZEVycm9yUmVzb2x2ZXI7XG4gIHJlcXVpcmVkVHJ1ZT86IEZvcm1GaWVsZEVycm9yUmVzb2x2ZXI7XG4gIGVtYWlsPzogRm9ybUZpZWxkRXJyb3JSZXNvbHZlcjtcbiAgbWlubGVuZ3RoPzogRm9ybUZpZWxkRXJyb3JSZXNvbHZlcjx7IHJlcXVpcmVkTGVuZ3RoOiBudW1iZXI7IGFjdHVhbExlbmd0aDogbnVtYmVyIH0+O1xuICBtYXhsZW5ndGg/OiBGb3JtRmllbGRFcnJvclJlc29sdmVyPHsgcmVxdWlyZWRMZW5ndGg6IG51bWJlcjsgYWN0dWFsTGVuZ3RoOiBudW1iZXIgfT47XG4gIHBhdHRlcm4/OiBGb3JtRmllbGRFcnJvclJlc29sdmVyPHsgcmVxdWlyZWRQYXR0ZXJuOiBzdHJpbmcgfT47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFtrZXk6IHN0cmluZ106IEZvcm1GaWVsZEVycm9yUmVzb2x2ZXI8YW55PiB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2Zvcm0tZmllbGQvc3JjL2xpYi9tb2RlbHMvZm9ybS1maWVsZC1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUZpZWxkRXJyb3Ige1xuICBtZXNzYWdlOiBEeW5hbWljQ29udGVudDtcbiAgY29udGV4dD86IHsgJGltcGxpY2l0OiB1bmtub3duIH07XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './form-field-error';
2
+ export * from './form-field-error-resolver';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQtZXJyb3ItcmVzb2x2ZXInO1xuIl19
@@ -0,0 +1,56 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { isFunction, isTemplateRef } from '@odx/angular/utils';
3
+ import { BehaviorSubject, combineLatest, distinctUntilChanged, map, shareReplay } from 'rxjs';
4
+ import { injectFormFieldModuleConfig } from '../form-field.config';
5
+ import * as i0 from "@angular/core";
6
+ const DEFAULT_CUSTOM_FORM_FIELD_ERROR = '@odx/angular/form-field/default-error';
7
+ export class FormFieldErrorService {
8
+ constructor() {
9
+ this.config = injectFormFieldModuleConfig();
10
+ this.fieldError$$ = new BehaviorSubject(null);
11
+ this.customErrors$$ = new BehaviorSubject({});
12
+ this.error$ = combineLatest([this.fieldError$$, this.customErrors$$]).pipe(map(([error, customErrors]) => this.resolveError(error, customErrors)), distinctUntilChanged(), shareReplay({ refCount: true }));
13
+ this.hasError$ = this.error$.pipe(map((error) => error !== null));
14
+ }
15
+ get hasError() {
16
+ return this.fieldError$$.getValue() !== null;
17
+ }
18
+ ngOnDestroy() {
19
+ this.fieldError$$.next(null);
20
+ this.customErrors$$.next({});
21
+ this.fieldError$$.complete();
22
+ this.customErrors$$.complete();
23
+ }
24
+ setError(errors) {
25
+ if (!errors) {
26
+ this.fieldError$$.next(null);
27
+ }
28
+ else {
29
+ const [key, context] = Object.entries(errors)[0];
30
+ this.fieldError$$.next({ key, context });
31
+ }
32
+ }
33
+ registerCustomError(key, template) {
34
+ this.customErrors$$.next({ ...this.customErrors$$.getValue(), [key || DEFAULT_CUSTOM_FORM_FIELD_ERROR]: template });
35
+ }
36
+ resolveError(error, customErrors) {
37
+ if (!error)
38
+ return null;
39
+ const { key, context } = error;
40
+ const message = customErrors[key] ?? customErrors[DEFAULT_CUSTOM_FORM_FIELD_ERROR];
41
+ if (isTemplateRef(message)) {
42
+ return {
43
+ message,
44
+ context: { $implicit: context },
45
+ };
46
+ }
47
+ const getMessage = this.config.errors[key] ?? null;
48
+ return isFunction(getMessage) ? { message: getMessage(context) } : null;
49
+ }
50
+ }
51
+ FormFieldErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
+ FormFieldErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldErrorService });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormFieldErrorService, decorators: [{
54
+ type: Injectable
55
+ }] });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0tZmllbGQtZXJyb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBR25FLE1BQU0sK0JBQStCLEdBQUcsdUNBQXVDLENBQUM7QUFVaEYsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVtQixXQUFNLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQztRQUN2QyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLENBQUMsQ0FBQztRQUNsRSxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUVqRSxXQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25GLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUN0RSxvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDaEMsQ0FBQztRQUNjLGNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBd0M5RTtJQXRDQyxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUFnQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNMLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEdBQXVCLEVBQUUsUUFBOEI7UUFDaEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksK0JBQStCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFTyxZQUFZLENBQUMsS0FBOEIsRUFBRSxZQUFtQztRQUN0RixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRixJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQixPQUFPO2dCQUNMLE9BQU87Z0JBQ1AsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRTthQUNoQyxDQUFDO1NBQ0g7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDbkQsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUUsQ0FBQzs7a0hBakRVLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNUZW1wbGF0ZVJlZiB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbmplY3RGb3JtRmllbGRNb2R1bGVDb25maWcgfSBmcm9tICcuLi9mb3JtLWZpZWxkLmNvbmZpZyc7XG5pbXBvcnQgeyBGb3JtRmllbGRFcnJvciB9IGZyb20gJy4uL21vZGVscyc7XG5cbmNvbnN0IERFRkFVTFRfQ1VTVE9NX0ZPUk1fRklFTERfRVJST1IgPSAnQG9keC9hbmd1bGFyL2Zvcm0tZmllbGQvZGVmYXVsdC1lcnJvcic7XG5cbmludGVyZmFjZSBOZ0Zvcm1GaWVsZEVycm9yIHtcbiAga2V5OiBzdHJpbmc7XG4gIGNvbnRleHQ6IHVua25vd247XG59XG5cbnR5cGUgQ3VzdG9tRm9ybUZpZWxkRXJyb3JzID0gUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8dW5rbm93bj4+O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkRXJyb3JTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3RGb3JtRmllbGRNb2R1bGVDb25maWcoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWVsZEVycm9yJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5nRm9ybUZpZWxkRXJyb3IgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21FcnJvcnMkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3VzdG9tRm9ybUZpZWxkRXJyb3JzPih7fSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVycm9yJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZmllbGRFcnJvciQkLCB0aGlzLmN1c3RvbUVycm9ycyQkXSkucGlwZShcbiAgICBtYXAoKFtlcnJvciwgY3VzdG9tRXJyb3JzXSkgPT4gdGhpcy5yZXNvbHZlRXJyb3IoZXJyb3IsIGN1c3RvbUVycm9ycykpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaGFzRXJyb3IkID0gdGhpcy5lcnJvciQucGlwZShtYXAoKGVycm9yKSA9PiBlcnJvciAhPT0gbnVsbCkpO1xuXG4gIHB1YmxpYyBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvciQkLmdldFZhbHVlKCkgIT09IG51bGw7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZEVycm9yJCQubmV4dChudWxsKTtcbiAgICB0aGlzLmN1c3RvbUVycm9ycyQkLm5leHQoe30pO1xuICAgIHRoaXMuZmllbGRFcnJvciQkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jdXN0b21FcnJvcnMkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldEVycm9yKGVycm9ycz86IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFlcnJvcnMpIHtcbiAgICAgIHRoaXMuZmllbGRFcnJvciQkLm5leHQobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtrZXksIGNvbnRleHRdID0gT2JqZWN0LmVudHJpZXMoZXJyb3JzKVswXTtcbiAgICAgIHRoaXMuZmllbGRFcnJvciQkLm5leHQoeyBrZXksIGNvbnRleHQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyQ3VzdG9tRXJyb3Ioa2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPik6IHZvaWQge1xuICAgIHRoaXMuY3VzdG9tRXJyb3JzJCQubmV4dCh7IC4uLnRoaXMuY3VzdG9tRXJyb3JzJCQuZ2V0VmFsdWUoKSwgW2tleSB8fCBERUZBVUxUX0NVU1RPTV9GT1JNX0ZJRUxEX0VSUk9SXTogdGVtcGxhdGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVFcnJvcihlcnJvcjogTmdGb3JtRmllbGRFcnJvciB8IG51bGwsIGN1c3RvbUVycm9yczogQ3VzdG9tRm9ybUZpZWxkRXJyb3JzKTogRm9ybUZpZWxkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIWVycm9yKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IGtleSwgY29udGV4dCB9ID0gZXJyb3I7XG4gICAgY29uc3QgbWVzc2FnZSA9IGN1c3RvbUVycm9yc1trZXldID8/IGN1c3RvbUVycm9yc1tERUZBVUxUX0NVU1RPTV9GT1JNX0ZJRUxEX0VSUk9SXTtcbiAgICBpZiAoaXNUZW1wbGF0ZVJlZihtZXNzYWdlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbnRleHQgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0TWVzc2FnZSA9IHRoaXMuY29uZmlnLmVycm9yc1trZXldID8/IG51bGw7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oZ2V0TWVzc2FnZSkgPyB7IG1lc3NhZ2U6IGdldE1lc3NhZ2UoY29udGV4dCkgfSA6IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './form-field-error.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1lcnJvci5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2R4LWFuZ3VsYXItY29tcG9uZW50cy1mb3JtLWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZC9zcmMvb2R4LWFuZ3VsYXItY29tcG9uZW50cy1mb3JtLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -2,9 +2,9 @@ import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class HeaderAvatarDirective {
4
4
  }
5
- HeaderAvatarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: HeaderAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- HeaderAvatarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: HeaderAvatarDirective, isStandalone: true, selector: "button[odxHeaderAvatar]", host: { properties: { "class.odx-header__avatar": "true" } }, ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: HeaderAvatarDirective, decorators: [{
5
+ HeaderAvatarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HeaderAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ HeaderAvatarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: HeaderAvatarDirective, isStandalone: true, selector: "button[odxHeaderAvatar]", host: { properties: { "class.odx-header__avatar": "true" } }, ngImport: i0 });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HeaderAvatarDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  standalone: true,
@@ -2,12 +2,11 @@ import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class HeaderTitleDirective {
4
4
  }
5
- HeaderTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: HeaderTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- HeaderTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: HeaderTitleDirective, isStandalone: true, selector: "odx-header-title", host: { properties: { "class.odx-header__title": "true" } }, ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: HeaderTitleDirective, decorators: [{
5
+ HeaderTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HeaderTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ HeaderTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: HeaderTitleDirective, isStandalone: true, selector: "odx-header-title", host: { properties: { "class.odx-header__title": "true" } }, ngImport: i0 });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HeaderTitleDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
- // eslint-disable-next-line @angular-eslint/directive-selector
11
10
  selector: 'odx-header-title',
12
11
  standalone: true,
13
12
  host: {
@@ -15,4 +14,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
15
14
  },
16
15
  }]
17
16
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXRpdGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2hlYWRlci9zcmMvbGliL2RpcmVjdGl2ZXMvaGVhZGVyLXRpdGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVUxQyxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFSaEMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osMkJBQTJCLEVBQUUsTUFBTTtxQkFDcEM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnb2R4LWhlYWRlci10aXRsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm9keC1oZWFkZXJfX3RpdGxlXSc6ICd0cnVlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyVGl0bGVEaXJlY3RpdmUge31cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXRpdGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2hlYWRlci9zcmMvbGliL2RpcmVjdGl2ZXMvaGVhZGVyLXRpdGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMxQyxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFQaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLDJCQUEyQixFQUFFLE1BQU07cUJBQ3BDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ29keC1oZWFkZXItdGl0bGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vZHgtaGVhZGVyX190aXRsZV0nOiAndHJ1ZScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlclRpdGxlRGlyZWN0aXZlIHt9XG4iXX0=