@odx/angular 1.0.0-rc.4 → 1.0.0-rc.6

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 (326) hide show
  1. package/animations/index.d.ts +1 -0
  2. package/animations/lib/wait-for-child-animations.d.ts +1 -0
  3. package/cdk/active-indicator/README.md +3 -0
  4. package/cdk/active-indicator/index.d.ts +2 -0
  5. package/cdk/active-indicator/lib/active-indicator.directive.d.ts +24 -0
  6. package/cdk/active-indicator/lib/models/active-indicator-direction.d.ts +5 -0
  7. package/cdk/active-indicator/lib/models/active-indicator-position.d.ts +6 -0
  8. package/cdk/active-indicator/lib/models/index.d.ts +2 -0
  9. package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +2 -3
  10. package/cdk/custom-form-control/lib/custom-form-control.d.ts +7 -14
  11. package/cdk/dynamic-view/lib/dynamic-view.service.d.ts +1 -0
  12. package/cdk/dynamic-view/lib/facade/dynamic-view-ref.d.ts +1 -0
  13. package/cdk/dynamic-view/lib/models/dynamic-component-ref.d.ts +1 -0
  14. package/cdk/dynamic-view/lib/models/dynamic-template-ref.d.ts +1 -0
  15. package/cdk/dynamic-view/lib/models/dynamic-view-options.d.ts +6 -3
  16. package/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.d.ts +3 -0
  17. package/cdk/dynamic-view/lib/tokens/index.d.ts +1 -0
  18. package/components/checkbox/index.d.ts +2 -0
  19. package/components/checkbox/lib/checkbox.module.d.ts +9 -0
  20. package/components/checkbox/lib/checkbox.validator.d.ts +6 -0
  21. package/components/form-field/lib/components/form-group/form-group.component.d.ts +0 -1
  22. package/components/form-field/lib/directives/form-field-control.directive.d.ts +3 -4
  23. package/components/form-field/lib/form-field.config.d.ts +0 -5
  24. package/components/list/README.md +3 -0
  25. package/components/list/index.d.ts +3 -0
  26. package/components/list/lib/components/index.d.ts +1 -0
  27. package/components/list/lib/components/list-item.component.d.ts +14 -0
  28. package/components/list/lib/list.component.d.ts +5 -0
  29. package/components/list/lib/list.module.d.ts +9 -0
  30. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +1 -1
  31. package/components/modal/lib/modal.component.d.ts +2 -2
  32. package/components/modal/lib/modal.service.d.ts +0 -2
  33. package/components/modal/lib/models/index.d.ts +1 -0
  34. package/components/modal/lib/models/modal-options.d.ts +2 -0
  35. package/components/modal/lib/models/modal-variant.d.ts +5 -0
  36. package/components/rail-navigation/README.md +3 -0
  37. package/components/rail-navigation/index.d.ts +3 -0
  38. package/components/rail-navigation/lib/components/rail-navigation-item.component.d.ts +15 -0
  39. package/components/rail-navigation/lib/rail-navigation.component.d.ts +14 -0
  40. package/components/rail-navigation/lib/rail-navigation.module.d.ts +9 -0
  41. package/components/slider/README.md +3 -0
  42. package/components/slider/index.d.ts +1 -0
  43. package/components/slider/lib/slider.directive.d.ts +13 -0
  44. package/components/switch/index.d.ts +2 -0
  45. package/components/switch/lib/switch.module.d.ts +9 -0
  46. package/components/switch/lib/switch.validator.d.ts +6 -0
  47. package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +5 -1
  48. package/esm2020/animations/index.mjs +2 -1
  49. package/esm2020/animations/lib/expand.mjs +4 -4
  50. package/esm2020/animations/lib/wait-for-child-animations.mjs +3 -0
  51. package/esm2020/cdk/active-indicator/index.mjs +3 -0
  52. package/esm2020/cdk/active-indicator/lib/active-indicator.directive.mjs +127 -0
  53. package/esm2020/cdk/active-indicator/lib/models/active-indicator-direction.mjs +5 -0
  54. package/esm2020/cdk/active-indicator/lib/models/active-indicator-position.mjs +6 -0
  55. package/esm2020/cdk/active-indicator/lib/models/index.mjs +3 -0
  56. package/esm2020/cdk/active-indicator/odx-angular-cdk-active-indicator.mjs +5 -0
  57. package/esm2020/cdk/checkbox-control/lib/checkbox-control.directive.mjs +11 -13
  58. package/esm2020/cdk/custom-form-control/lib/control.directive.mjs +4 -4
  59. package/esm2020/cdk/custom-form-control/lib/custom-form-control.mjs +20 -47
  60. package/esm2020/cdk/dynamic-view/lib/dynamic-view.component.mjs +4 -4
  61. package/esm2020/cdk/dynamic-view/lib/dynamic-view.directive.mjs +5 -5
  62. package/esm2020/cdk/dynamic-view/lib/dynamic-view.service.mjs +11 -9
  63. package/esm2020/cdk/dynamic-view/lib/facade/dynamic-view-ref.mjs +1 -1
  64. package/esm2020/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +12 -5
  65. package/esm2020/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +9 -5
  66. package/esm2020/cdk/dynamic-view/lib/models/dynamic-view-options.mjs +1 -1
  67. package/esm2020/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.mjs +10 -0
  68. package/esm2020/cdk/dynamic-view/lib/tokens/index.mjs +2 -1
  69. package/esm2020/cdk/expandable/lib/directives/expandable-item.directive.mjs +4 -4
  70. package/esm2020/cdk/expandable/lib/directives/extandable-container.directive.mjs +4 -4
  71. package/esm2020/cdk/expandable/lib/expandable.module.mjs +5 -5
  72. package/esm2020/cdk/radio-group-control/lib/radio-control.directive.mjs +5 -5
  73. package/esm2020/cdk/radio-group-control/lib/radio-group-control.directive.mjs +4 -4
  74. package/esm2020/cdk/radio-group-control/lib/radio-group-control.module.mjs +5 -5
  75. package/esm2020/components/accordion/lib/accordion.component.mjs +4 -4
  76. package/esm2020/components/accordion/lib/accordion.module.mjs +5 -5
  77. package/esm2020/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +4 -4
  78. package/esm2020/components/accordion/lib/directives/accordion-item-title.mjs +4 -4
  79. package/esm2020/components/action-group/action-group.component.mjs +4 -4
  80. package/esm2020/components/area-header/area-header.component.mjs +5 -5
  81. package/esm2020/components/area-header/area-header.module.mjs +5 -5
  82. package/esm2020/components/area-header/directives/area-header-content.directive.mjs +4 -4
  83. package/esm2020/components/area-header/directives/area-header-subtitle.directive.mjs +4 -4
  84. package/esm2020/components/avatar/lib/avatar.component.mjs +4 -4
  85. package/esm2020/components/badge/lib/badge.component.mjs +6 -6
  86. package/esm2020/components/badge/lib/badge.directive.mjs +7 -7
  87. package/esm2020/components/button/lib/button.component.mjs +5 -5
  88. package/esm2020/components/button-group/lib/button-group.component.mjs +4 -4
  89. package/esm2020/components/checkbox/index.mjs +3 -1
  90. package/esm2020/components/checkbox/lib/checkbox.component.mjs +5 -5
  91. package/esm2020/components/checkbox/lib/checkbox.module.mjs +19 -0
  92. package/esm2020/components/checkbox/lib/checkbox.validator.mjs +28 -0
  93. package/esm2020/components/chip/lib/chip.component.mjs +4 -4
  94. package/esm2020/components/circular-progress/lib/circular-progress.component.mjs +4 -4
  95. package/esm2020/components/content-box/lib/content-box.component.mjs +4 -4
  96. package/esm2020/components/content-box/lib/content-box.module.mjs +5 -5
  97. package/esm2020/components/content-box/lib/directives/content-box-footer-directive.mjs +4 -4
  98. package/esm2020/components/content-box/lib/directives/content-box-header-directive.mjs +4 -4
  99. package/esm2020/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +4 -4
  100. package/esm2020/components/form-field/lib/components/form-group/form-group.component.mjs +11 -13
  101. package/esm2020/components/form-field/lib/directives/form-field-control.directive.mjs +20 -13
  102. package/esm2020/components/form-field/lib/directives/form-field-error.directive.mjs +4 -4
  103. package/esm2020/components/form-field/lib/directives/form-field-hint.directive.mjs +4 -4
  104. package/esm2020/components/form-field/lib/directives/form-field-label.directive.mjs +4 -4
  105. package/esm2020/components/form-field/lib/directives/form.directive.mjs +4 -4
  106. package/esm2020/components/form-field/lib/form-field.component.mjs +4 -4
  107. package/esm2020/components/form-field/lib/form-field.config.mjs +1 -2
  108. package/esm2020/components/form-field/lib/form-field.module.mjs +5 -5
  109. package/esm2020/components/form-field/lib/form-field.service.mjs +4 -4
  110. package/esm2020/components/form-field/lib/services/form-field-error.service.mjs +4 -4
  111. package/esm2020/components/header/lib/directives/header-avatar.directive.mjs +4 -4
  112. package/esm2020/components/header/lib/directives/header-title.directive.mjs +4 -4
  113. package/esm2020/components/header/lib/header.component.mjs +4 -4
  114. package/esm2020/components/header/lib/header.module.mjs +5 -5
  115. package/esm2020/components/icon/lib/icon.component.mjs +4 -4
  116. package/esm2020/components/link/link.directive.mjs +4 -4
  117. package/esm2020/components/list/index.mjs +4 -0
  118. package/esm2020/components/list/lib/components/index.mjs +2 -0
  119. package/esm2020/components/list/lib/components/list-item.component.mjs +46 -0
  120. package/esm2020/components/list/lib/list.component.mjs +13 -0
  121. package/esm2020/components/list/lib/list.module.mjs +19 -0
  122. package/esm2020/components/list/odx-angular-components-list.mjs +5 -0
  123. package/esm2020/components/loading-spinner/lib/loading-spinner.component.mjs +4 -4
  124. package/esm2020/components/loading-spinner/lib/loading-spinner.directive.mjs +7 -7
  125. package/esm2020/components/loading-spinner/lib/loading-spinner.module.mjs +5 -5
  126. package/esm2020/components/loading-spinner/lib/loading-spinner.service.mjs +4 -4
  127. package/esm2020/components/logo/logo.directive.mjs +4 -4
  128. package/esm2020/components/main-menu/lib/directives/main-menu-button.directive.mjs +4 -4
  129. package/esm2020/components/main-menu/lib/directives/main-menu-item.directive.mjs +4 -4
  130. package/esm2020/components/main-menu/lib/main-menu.component.mjs +4 -4
  131. package/esm2020/components/main-menu/lib/main-menu.module.mjs +5 -5
  132. package/esm2020/components/main-menu/lib/main-menu.service.mjs +4 -4
  133. package/esm2020/components/modal/lib/components/modal-footer/modal-footer.component.mjs +4 -4
  134. package/esm2020/components/modal/lib/components/modal-header/modal-header.component.mjs +4 -4
  135. package/esm2020/components/modal/lib/directives/modal-close.directive.mjs +4 -4
  136. package/esm2020/components/modal/lib/directives/modal-content.directive.mjs +4 -4
  137. package/esm2020/components/modal/lib/directives/modal-dismiss.directive.mjs +4 -4
  138. package/esm2020/components/modal/lib/modal.component.mjs +23 -14
  139. package/esm2020/components/modal/lib/modal.config.mjs +3 -1
  140. package/esm2020/components/modal/lib/modal.directive.mjs +4 -4
  141. package/esm2020/components/modal/lib/modal.module.mjs +5 -5
  142. package/esm2020/components/modal/lib/modal.service.mjs +8 -21
  143. package/esm2020/components/modal/lib/models/index.mjs +2 -1
  144. package/esm2020/components/modal/lib/models/modal-options.mjs +1 -1
  145. package/esm2020/components/modal/lib/models/modal-variant.mjs +5 -0
  146. package/esm2020/components/modal/lib/services/open-modal-manager.service.mjs +4 -4
  147. package/esm2020/components/progress/lib/progress.component.mjs +4 -4
  148. package/esm2020/components/radio-group/lib/components/radio-button/radio-button.component.mjs +5 -5
  149. package/esm2020/components/radio-group/lib/radio-group.component.mjs +4 -4
  150. package/esm2020/components/radio-group/lib/radio-group.module.mjs +5 -5
  151. package/esm2020/components/rail-navigation/index.mjs +4 -0
  152. package/esm2020/components/rail-navigation/lib/components/rail-navigation-item.component.mjs +43 -0
  153. package/esm2020/components/rail-navigation/lib/rail-navigation.component.mjs +47 -0
  154. package/esm2020/components/rail-navigation/lib/rail-navigation.module.mjs +19 -0
  155. package/esm2020/components/rail-navigation/odx-angular-components-rail-navigation.mjs +5 -0
  156. package/esm2020/components/slider/index.mjs +2 -0
  157. package/esm2020/components/slider/lib/slider.directive.mjs +45 -0
  158. package/esm2020/components/slider/odx-angular-components-slider.mjs +5 -0
  159. package/esm2020/components/switch/index.mjs +3 -1
  160. package/esm2020/components/switch/lib/switch.component.mjs +5 -5
  161. package/esm2020/components/switch/lib/switch.module.mjs +19 -0
  162. package/esm2020/components/switch/lib/switch.validator.mjs +28 -0
  163. package/esm2020/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +5 -5
  164. package/esm2020/components/toggle-button-group/lib/toggle-button-group.component.mjs +20 -11
  165. package/esm2020/components/toggle-button-group/lib/toggle-button-group.module.mjs +5 -5
  166. package/esm2020/lib/controllers/controller.mjs +10 -9
  167. package/esm2020/lib/controllers/disabled.controller.mjs +7 -6
  168. package/esm2020/lib/controllers/readonly.controller.mjs +7 -6
  169. package/esm2020/lib/core.module.mjs +5 -5
  170. package/esm2020/lib/directives/click-outside.directive.mjs +4 -4
  171. package/esm2020/lib/services/window-ref.mjs +4 -4
  172. package/esm2020/rxjs/index.mjs +2 -2
  173. package/esm2020/rxjs/lib/from-element-resize.mjs +14 -0
  174. package/esm2020/utils/lib/helpers/angular.mjs +5 -2
  175. package/esm2020/utils/lib/helpers/dom.mjs +24 -1
  176. package/fesm2015/odx-angular-animations.mjs +7 -5
  177. package/fesm2015/odx-angular-animations.mjs.map +1 -1
  178. package/fesm2015/odx-angular-cdk-active-indicator.mjs +142 -0
  179. package/fesm2015/odx-angular-cdk-active-indicator.mjs.map +1 -0
  180. package/fesm2015/odx-angular-cdk-checkbox-control.mjs +10 -12
  181. package/fesm2015/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  182. package/fesm2015/odx-angular-cdk-custom-form-control.mjs +24 -51
  183. package/fesm2015/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  184. package/fesm2015/odx-angular-cdk-dynamic-view.mjs +46 -25
  185. package/fesm2015/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  186. package/fesm2015/odx-angular-cdk-expandable.mjs +10 -10
  187. package/fesm2015/odx-angular-cdk-expandable.mjs.map +1 -1
  188. package/fesm2015/odx-angular-cdk-radio-group-control.mjs +11 -11
  189. package/fesm2015/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  190. package/fesm2015/odx-angular-components-accordion.mjs +13 -13
  191. package/fesm2015/odx-angular-components-accordion.mjs.map +1 -1
  192. package/fesm2015/odx-angular-components-action-group.mjs +3 -3
  193. package/fesm2015/odx-angular-components-action-group.mjs.map +1 -1
  194. package/fesm2015/odx-angular-components-area-header.mjs +14 -14
  195. package/fesm2015/odx-angular-components-area-header.mjs.map +1 -1
  196. package/fesm2015/odx-angular-components-avatar.mjs +3 -3
  197. package/fesm2015/odx-angular-components-avatar.mjs.map +1 -1
  198. package/fesm2015/odx-angular-components-badge.mjs +10 -10
  199. package/fesm2015/odx-angular-components-badge.mjs.map +1 -1
  200. package/fesm2015/odx-angular-components-button-group.mjs +3 -3
  201. package/fesm2015/odx-angular-components-button-group.mjs.map +1 -1
  202. package/fesm2015/odx-angular-components-button.mjs +4 -5
  203. package/fesm2015/odx-angular-components-button.mjs.map +1 -1
  204. package/fesm2015/odx-angular-components-checkbox.mjs +47 -7
  205. package/fesm2015/odx-angular-components-checkbox.mjs.map +1 -1
  206. package/fesm2015/odx-angular-components-chip.mjs +3 -3
  207. package/fesm2015/odx-angular-components-chip.mjs.map +1 -1
  208. package/fesm2015/odx-angular-components-circular-progress.mjs +3 -3
  209. package/fesm2015/odx-angular-components-circular-progress.mjs.map +1 -1
  210. package/fesm2015/odx-angular-components-content-box.mjs +13 -13
  211. package/fesm2015/odx-angular-components-content-box.mjs.map +1 -1
  212. package/fesm2015/odx-angular-components-form-field.mjs +52 -51
  213. package/fesm2015/odx-angular-components-form-field.mjs.map +1 -1
  214. package/fesm2015/odx-angular-components-header.mjs +13 -13
  215. package/fesm2015/odx-angular-components-header.mjs.map +1 -1
  216. package/fesm2015/odx-angular-components-icon.mjs +3 -3
  217. package/fesm2015/odx-angular-components-icon.mjs.map +1 -1
  218. package/fesm2015/odx-angular-components-link.mjs +3 -3
  219. package/fesm2015/odx-angular-components-link.mjs.map +1 -1
  220. package/fesm2015/odx-angular-components-list.mjs +79 -0
  221. package/fesm2015/odx-angular-components-list.mjs.map +1 -0
  222. package/fesm2015/odx-angular-components-loading-spinner.mjs +16 -16
  223. package/fesm2015/odx-angular-components-loading-spinner.mjs.map +1 -1
  224. package/fesm2015/odx-angular-components-logo.mjs +3 -3
  225. package/fesm2015/odx-angular-components-logo.mjs.map +1 -1
  226. package/fesm2015/odx-angular-components-main-menu.mjs +16 -16
  227. package/fesm2015/odx-angular-components-main-menu.mjs.map +1 -1
  228. package/fesm2015/odx-angular-components-modal.mjs +61 -58
  229. package/fesm2015/odx-angular-components-modal.mjs.map +1 -1
  230. package/fesm2015/odx-angular-components-progress.mjs +3 -3
  231. package/fesm2015/odx-angular-components-progress.mjs.map +1 -1
  232. package/fesm2015/odx-angular-components-radio-group.mjs +11 -11
  233. package/fesm2015/odx-angular-components-radio-group.mjs.map +1 -1
  234. package/fesm2015/odx-angular-components-rail-navigation.mjs +103 -0
  235. package/fesm2015/odx-angular-components-rail-navigation.mjs.map +1 -0
  236. package/fesm2015/odx-angular-components-slider.mjs +51 -0
  237. package/fesm2015/odx-angular-components-slider.mjs.map +1 -0
  238. package/fesm2015/odx-angular-components-switch.mjs +47 -7
  239. package/fesm2015/odx-angular-components-switch.mjs.map +1 -1
  240. package/fesm2015/odx-angular-components-toggle-button-group.mjs +26 -18
  241. package/fesm2015/odx-angular-components-toggle-button-group.mjs.map +1 -1
  242. package/fesm2015/odx-angular-rxjs.mjs +15 -6
  243. package/fesm2015/odx-angular-rxjs.mjs.map +1 -1
  244. package/fesm2015/odx-angular-utils.mjs +28 -2
  245. package/fesm2015/odx-angular-utils.mjs.map +1 -1
  246. package/fesm2015/odx-angular.mjs +32 -28
  247. package/fesm2015/odx-angular.mjs.map +1 -1
  248. package/fesm2020/odx-angular-animations.mjs +7 -5
  249. package/fesm2020/odx-angular-animations.mjs.map +1 -1
  250. package/fesm2020/odx-angular-cdk-active-indicator.mjs +142 -0
  251. package/fesm2020/odx-angular-cdk-active-indicator.mjs.map +1 -0
  252. package/fesm2020/odx-angular-cdk-checkbox-control.mjs +10 -12
  253. package/fesm2020/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  254. package/fesm2020/odx-angular-cdk-custom-form-control.mjs +22 -49
  255. package/fesm2020/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  256. package/fesm2020/odx-angular-cdk-dynamic-view.mjs +42 -22
  257. package/fesm2020/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  258. package/fesm2020/odx-angular-cdk-expandable.mjs +10 -10
  259. package/fesm2020/odx-angular-cdk-expandable.mjs.map +1 -1
  260. package/fesm2020/odx-angular-cdk-radio-group-control.mjs +11 -11
  261. package/fesm2020/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  262. package/fesm2020/odx-angular-components-accordion.mjs +13 -13
  263. package/fesm2020/odx-angular-components-accordion.mjs.map +1 -1
  264. package/fesm2020/odx-angular-components-action-group.mjs +3 -3
  265. package/fesm2020/odx-angular-components-action-group.mjs.map +1 -1
  266. package/fesm2020/odx-angular-components-area-header.mjs +14 -14
  267. package/fesm2020/odx-angular-components-area-header.mjs.map +1 -1
  268. package/fesm2020/odx-angular-components-avatar.mjs +3 -3
  269. package/fesm2020/odx-angular-components-avatar.mjs.map +1 -1
  270. package/fesm2020/odx-angular-components-badge.mjs +10 -10
  271. package/fesm2020/odx-angular-components-badge.mjs.map +1 -1
  272. package/fesm2020/odx-angular-components-button-group.mjs +3 -3
  273. package/fesm2020/odx-angular-components-button-group.mjs.map +1 -1
  274. package/fesm2020/odx-angular-components-button.mjs +4 -4
  275. package/fesm2020/odx-angular-components-button.mjs.map +1 -1
  276. package/fesm2020/odx-angular-components-checkbox.mjs +47 -7
  277. package/fesm2020/odx-angular-components-checkbox.mjs.map +1 -1
  278. package/fesm2020/odx-angular-components-chip.mjs +3 -3
  279. package/fesm2020/odx-angular-components-chip.mjs.map +1 -1
  280. package/fesm2020/odx-angular-components-circular-progress.mjs +3 -3
  281. package/fesm2020/odx-angular-components-circular-progress.mjs.map +1 -1
  282. package/fesm2020/odx-angular-components-content-box.mjs +13 -13
  283. package/fesm2020/odx-angular-components-content-box.mjs.map +1 -1
  284. package/fesm2020/odx-angular-components-form-field.mjs +52 -51
  285. package/fesm2020/odx-angular-components-form-field.mjs.map +1 -1
  286. package/fesm2020/odx-angular-components-header.mjs +13 -13
  287. package/fesm2020/odx-angular-components-header.mjs.map +1 -1
  288. package/fesm2020/odx-angular-components-icon.mjs +3 -3
  289. package/fesm2020/odx-angular-components-icon.mjs.map +1 -1
  290. package/fesm2020/odx-angular-components-link.mjs +3 -3
  291. package/fesm2020/odx-angular-components-link.mjs.map +1 -1
  292. package/fesm2020/odx-angular-components-list.mjs +78 -0
  293. package/fesm2020/odx-angular-components-list.mjs.map +1 -0
  294. package/fesm2020/odx-angular-components-loading-spinner.mjs +16 -16
  295. package/fesm2020/odx-angular-components-loading-spinner.mjs.map +1 -1
  296. package/fesm2020/odx-angular-components-logo.mjs +3 -3
  297. package/fesm2020/odx-angular-components-logo.mjs.map +1 -1
  298. package/fesm2020/odx-angular-components-main-menu.mjs +16 -16
  299. package/fesm2020/odx-angular-components-main-menu.mjs.map +1 -1
  300. package/fesm2020/odx-angular-components-modal.mjs +61 -58
  301. package/fesm2020/odx-angular-components-modal.mjs.map +1 -1
  302. package/fesm2020/odx-angular-components-progress.mjs +3 -3
  303. package/fesm2020/odx-angular-components-progress.mjs.map +1 -1
  304. package/fesm2020/odx-angular-components-radio-group.mjs +11 -11
  305. package/fesm2020/odx-angular-components-radio-group.mjs.map +1 -1
  306. package/fesm2020/odx-angular-components-rail-navigation.mjs +102 -0
  307. package/fesm2020/odx-angular-components-rail-navigation.mjs.map +1 -0
  308. package/fesm2020/odx-angular-components-slider.mjs +51 -0
  309. package/fesm2020/odx-angular-components-slider.mjs.map +1 -0
  310. package/fesm2020/odx-angular-components-switch.mjs +47 -7
  311. package/fesm2020/odx-angular-components-switch.mjs.map +1 -1
  312. package/fesm2020/odx-angular-components-toggle-button-group.mjs +26 -18
  313. package/fesm2020/odx-angular-components-toggle-button-group.mjs.map +1 -1
  314. package/fesm2020/odx-angular-rxjs.mjs +15 -6
  315. package/fesm2020/odx-angular-rxjs.mjs.map +1 -1
  316. package/fesm2020/odx-angular-utils.mjs +28 -2
  317. package/fesm2020/odx-angular-utils.mjs.map +1 -1
  318. package/fesm2020/odx-angular.mjs +32 -28
  319. package/fesm2020/odx-angular.mjs.map +1 -1
  320. package/package.json +34 -2
  321. package/rxjs/index.d.ts +1 -1
  322. package/rxjs/lib/from-element-resize.d.ts +2 -0
  323. package/utils/lib/helpers/angular.d.ts +2 -1
  324. package/utils/lib/helpers/dom.d.ts +5 -1
  325. package/esm2020/rxjs/lib/mark-for-check.mjs +0 -5
  326. package/rxjs/lib/mark-for-check.d.ts +0 -3
@@ -0,0 +1,142 @@
1
+ import { __decorate, __metadata } from 'tslib';
2
+ import * as i0 from '@angular/core';
3
+ import { Directive, Input } from '@angular/core';
4
+ import { CSSModifier, CSSComponent } from '@odx/angular/internal';
5
+ import { fromElementResize$ } from '@odx/angular/rxjs';
6
+ import { untilDestroyed, injectElement, hasChanged, px, disableCSSTransitions, applyStyles } from '@odx/angular/utils';
7
+ import { BehaviorSubject, distinctUntilChanged, switchMap, EMPTY } from 'rxjs';
8
+
9
+ const ActiveIndicatorDirection = {
10
+ HORIZONTAL: 'horizontal',
11
+ VERTICAL: 'vertical',
12
+ };
13
+
14
+ const ActiveIndicatorPosition = {
15
+ START: 'start',
16
+ CENTER: 'center',
17
+ END: 'end',
18
+ };
19
+
20
+ let ActiveIndicatorDirective = class ActiveIndicatorDirective {
21
+ constructor() {
22
+ this.takeUntilDestroyed = untilDestroyed();
23
+ this.parentElement$$ = new BehaviorSubject(null);
24
+ this.onResize$ = this.parentElement$$.pipe(distinctUntilChanged(), switchMap((parentElement) => {
25
+ return parentElement ? fromElementResize$(parentElement) : EMPTY;
26
+ }));
27
+ this.element = injectElement();
28
+ this.isActive = false;
29
+ this.activeElement = null;
30
+ this.direction = ActiveIndicatorDirection.HORIZONTAL;
31
+ this.position = ActiveIndicatorPosition.CENTER;
32
+ }
33
+ set parent(value) {
34
+ this.parentElement$$.next(value);
35
+ }
36
+ ngAfterViewInit() {
37
+ this.onResize$.pipe(this.takeUntilDestroyed()).subscribe(() => this.updateStyles(true));
38
+ if (!this.parentElement$$.getValue()) {
39
+ this.parentElement$$.next(this.element.nativeElement.parentElement);
40
+ }
41
+ }
42
+ ngOnChanges(changes) {
43
+ if (hasChanged(changes, 'activeElement', false)) {
44
+ this.isActive = !!this.activeElement;
45
+ }
46
+ if (hasChanged(changes, ['activeElement', 'direction', 'position'])) {
47
+ this.updateStyles();
48
+ }
49
+ }
50
+ updateStyles(disableTransition = false) {
51
+ if (!this.activeElement)
52
+ return;
53
+ const isHorizontal = this.direction === ActiveIndicatorDirection.HORIZONTAL;
54
+ const isVertical = this.direction === ActiveIndicatorDirection.VERTICAL;
55
+ const relativeOffset = this.getIndicatorRelativeOffset();
56
+ let transform = null;
57
+ if (isHorizontal) {
58
+ const positionX = this.getIndicatorPositionX(this.activeElement);
59
+ transform = `translateX(${px(positionX)}) translateX(${relativeOffset}%)`;
60
+ }
61
+ if (isVertical) {
62
+ const positionY = this.getIndicatorPositionY(this.activeElement);
63
+ transform = `translateY(${px(positionY)}) translateY(${relativeOffset}%)`;
64
+ }
65
+ disableTransition && disableCSSTransitions(this.element.nativeElement, true);
66
+ applyStyles(this.element.nativeElement, {
67
+ transform,
68
+ width: isHorizontal ? px(this.activeElement.offsetWidth) : null,
69
+ height: isVertical ? px(this.activeElement.offsetHeight) : null,
70
+ });
71
+ disableTransition && disableCSSTransitions(this.element.nativeElement, false);
72
+ }
73
+ getIndicatorPositionX(activeElement) {
74
+ switch (this.position) {
75
+ case ActiveIndicatorPosition.START:
76
+ return activeElement.offsetLeft;
77
+ case ActiveIndicatorPosition.CENTER:
78
+ return activeElement.offsetLeft + activeElement.offsetWidth / 2;
79
+ case ActiveIndicatorPosition.END:
80
+ return activeElement.offsetLeft + activeElement.offsetWidth;
81
+ }
82
+ }
83
+ getIndicatorPositionY(activeElement) {
84
+ switch (this.position) {
85
+ case ActiveIndicatorPosition.START:
86
+ return activeElement.offsetTop;
87
+ case ActiveIndicatorPosition.CENTER:
88
+ return activeElement.offsetTop + activeElement.offsetHeight / 2;
89
+ case ActiveIndicatorPosition.END:
90
+ return activeElement.offsetTop + activeElement.offsetHeight;
91
+ }
92
+ }
93
+ getIndicatorRelativeOffset() {
94
+ switch (this.position) {
95
+ case ActiveIndicatorPosition.START:
96
+ return 0;
97
+ case ActiveIndicatorPosition.CENTER:
98
+ return -50;
99
+ case ActiveIndicatorPosition.END:
100
+ return -100;
101
+ }
102
+ }
103
+ };
104
+ ActiveIndicatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ActiveIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
105
+ ActiveIndicatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ActiveIndicatorDirective, isStandalone: true, selector: "[odxActiveIndicator]", inputs: { activeElement: ["odxActiveIndicator", "activeElement"], parent: ["odxActiveIndicatorParent", "parent"], direction: ["odxActiveIndicatorDirection", "direction"], position: ["odxActiveIndicatorPosition", "position"] }, usesOnChanges: true, ngImport: i0 });
106
+ __decorate([
107
+ CSSModifier(),
108
+ __metadata("design:type", Object)
109
+ ], ActiveIndicatorDirective.prototype, "isActive", void 0);
110
+ __decorate([
111
+ CSSModifier(),
112
+ __metadata("design:type", String)
113
+ ], ActiveIndicatorDirective.prototype, "direction", void 0);
114
+ ActiveIndicatorDirective = __decorate([
115
+ CSSComponent('cdk-active-indicator')
116
+ ], ActiveIndicatorDirective);
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ActiveIndicatorDirective, decorators: [{
118
+ type: Directive,
119
+ args: [{
120
+ standalone: true,
121
+ selector: '[odxActiveIndicator]',
122
+ }]
123
+ }], propDecorators: { isActive: [], activeElement: [{
124
+ type: Input,
125
+ args: ['odxActiveIndicator']
126
+ }], parent: [{
127
+ type: Input,
128
+ args: ['odxActiveIndicatorParent']
129
+ }], direction: [{
130
+ type: Input,
131
+ args: ['odxActiveIndicatorDirection']
132
+ }], position: [{
133
+ type: Input,
134
+ args: ['odxActiveIndicatorPosition']
135
+ }] } });
136
+
137
+ /**
138
+ * Generated bundle index. Do not edit.
139
+ */
140
+
141
+ export { ActiveIndicatorDirection, ActiveIndicatorDirective, ActiveIndicatorPosition };
142
+ //# sourceMappingURL=odx-angular-cdk-active-indicator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-cdk-active-indicator.mjs","sources":["../../../../libs/angular/cdk/active-indicator/src/lib/models/active-indicator-direction.ts","../../../../libs/angular/cdk/active-indicator/src/lib/models/active-indicator-position.ts","../../../../libs/angular/cdk/active-indicator/src/lib/active-indicator.directive.ts","../../../../libs/angular/cdk/active-indicator/src/odx-angular-cdk-active-indicator.ts"],"sourcesContent":["export type ActiveIndicatorDirection = typeof ActiveIndicatorDirection[keyof typeof ActiveIndicatorDirection];\n\nexport const ActiveIndicatorDirection = {\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical',\n} as const;\n","export type ActiveIndicatorPosition = typeof ActiveIndicatorPosition[keyof typeof ActiveIndicatorPosition];\n\nexport const ActiveIndicatorPosition = {\n START: 'start',\n CENTER: 'center',\n END: 'end',\n} as const;\n","import { AfterViewInit, Directive, Input, OnChanges } from '@angular/core';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { fromElementResize$ } from '@odx/angular/rxjs';\nimport { applyStyles, disableCSSTransitions, hasChanged, injectElement, NgChanges, px, untilDestroyed } from '@odx/angular/utils';\nimport { BehaviorSubject, distinctUntilChanged, EMPTY, switchMap } from 'rxjs';\nimport { ActiveIndicatorPosition } from './models';\nimport { ActiveIndicatorDirection } from './models/active-indicator-direction';\n\n@CSSComponent('cdk-active-indicator')\n@Directive({\n standalone: true,\n selector: '[odxActiveIndicator]',\n})\nexport class ActiveIndicatorDirective implements OnChanges, AfterViewInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n private readonly parentElement$$ = new BehaviorSubject<HTMLElement | null>(null);\n private readonly onResize$ = this.parentElement$$.pipe(\n distinctUntilChanged(),\n switchMap((parentElement) => {\n return parentElement ? fromElementResize$(parentElement) : EMPTY;\n })\n );\n public readonly element = injectElement();\n\n @CSSModifier()\n protected isActive = false;\n\n @Input('odxActiveIndicator')\n public activeElement?: HTMLElement | null = null;\n\n @Input('odxActiveIndicatorParent')\n public set parent(value: HTMLElement | null) {\n this.parentElement$$.next(value);\n }\n\n @CSSModifier()\n @Input('odxActiveIndicatorDirection')\n public direction: ActiveIndicatorDirection = ActiveIndicatorDirection.HORIZONTAL;\n\n @Input('odxActiveIndicatorPosition')\n public position: ActiveIndicatorPosition = ActiveIndicatorPosition.CENTER;\n\n public ngAfterViewInit(): void {\n this.onResize$.pipe(this.takeUntilDestroyed()).subscribe(() => this.updateStyles(true));\n if (!this.parentElement$$.getValue()) {\n this.parentElement$$.next(this.element.nativeElement.parentElement);\n }\n }\n\n public ngOnChanges(changes: NgChanges<ActiveIndicatorDirective>): void {\n if (hasChanged(changes, 'activeElement', false)) {\n this.isActive = !!this.activeElement;\n }\n if (hasChanged(changes, ['activeElement', 'direction', 'position'])) {\n this.updateStyles();\n }\n }\n\n private updateStyles(disableTransition = false): void {\n if (!this.activeElement) return;\n const isHorizontal = this.direction === ActiveIndicatorDirection.HORIZONTAL;\n const isVertical = this.direction === ActiveIndicatorDirection.VERTICAL;\n const relativeOffset = this.getIndicatorRelativeOffset();\n\n let transform = null;\n if (isHorizontal) {\n const positionX = this.getIndicatorPositionX(this.activeElement);\n transform = `translateX(${px(positionX)}) translateX(${relativeOffset}%)`;\n }\n if (isVertical) {\n const positionY = this.getIndicatorPositionY(this.activeElement);\n transform = `translateY(${px(positionY)}) translateY(${relativeOffset}%)`;\n }\n\n disableTransition && disableCSSTransitions(this.element.nativeElement, true);\n applyStyles(this.element.nativeElement, {\n transform,\n width: isHorizontal ? px(this.activeElement.offsetWidth) : null,\n height: isVertical ? px(this.activeElement.offsetHeight) : null,\n });\n disableTransition && disableCSSTransitions(this.element.nativeElement, false);\n }\n\n private getIndicatorPositionX(activeElement: HTMLElement): number {\n switch (this.position) {\n case ActiveIndicatorPosition.START:\n return activeElement.offsetLeft;\n case ActiveIndicatorPosition.CENTER:\n return activeElement.offsetLeft + activeElement.offsetWidth / 2;\n case ActiveIndicatorPosition.END:\n return activeElement.offsetLeft + activeElement.offsetWidth;\n }\n }\n\n private getIndicatorPositionY(activeElement: HTMLElement): number {\n switch (this.position) {\n case ActiveIndicatorPosition.START:\n return activeElement.offsetTop;\n case ActiveIndicatorPosition.CENTER:\n return activeElement.offsetTop + activeElement.offsetHeight / 2;\n case ActiveIndicatorPosition.END:\n return activeElement.offsetTop + activeElement.offsetHeight;\n }\n }\n\n private getIndicatorRelativeOffset(): number {\n switch (this.position) {\n case ActiveIndicatorPosition.START:\n return 0;\n case ActiveIndicatorPosition.CENTER:\n return -50;\n case ActiveIndicatorPosition.END:\n return -100;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Input } from '@angular/core';
3
- import { Validators } from '@angular/forms';
4
3
  import { detectControllerChanges } from '@odx/angular';
5
4
  import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
6
5
  import { injectElement, booleanToAttributeString } from '@odx/angular/utils';
@@ -9,14 +8,15 @@ class CheckBoxControl extends CustomFormControl {
9
8
  constructor() {
10
9
  super(false);
11
10
  this.element = injectElement();
12
- this.value = null;
11
+ // eslint-disable-next-line @angular-eslint/no-input-rename
12
+ this.controlValue = null;
13
13
  detectControllerChanges(this).subscribe();
14
14
  }
15
15
  set checked(value) {
16
- this.controlValue = value;
16
+ this.value = value;
17
17
  }
18
18
  get checked() {
19
- return this.controlValue;
19
+ return this.value;
20
20
  }
21
21
  get ariaChecked() {
22
22
  return booleanToAttributeString(this.checked);
@@ -25,21 +25,19 @@ class CheckBoxControl extends CustomFormControl {
25
25
  event.stopPropagation();
26
26
  super.updateValue(event.target.checked);
27
27
  }
28
- updateRequiredValidator() {
29
- this.toggleValidator(Validators.requiredTrue, this.required);
30
- }
31
28
  }
32
- CheckBoxControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: CheckBoxControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
33
- CheckBoxControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.9", type: CheckBoxControl, selector: "[odxCheckBoxControl]", inputs: { checked: "checked", value: "value" }, usesInheritance: true, ngImport: i0 });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: CheckBoxControl, decorators: [{
29
+ CheckBoxControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CheckBoxControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
30
+ CheckBoxControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: CheckBoxControl, selector: "[odxCheckBoxControl]", inputs: { checked: "checked", controlValue: ["value", "controlValue"] }, usesInheritance: true, ngImport: i0 });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CheckBoxControl, decorators: [{
35
32
  type: Directive,
36
33
  args: [{
37
34
  selector: '[odxCheckBoxControl]',
38
35
  }]
39
36
  }], ctorParameters: function () { return []; }, propDecorators: { checked: [{
40
37
  type: Input
41
- }], value: [{
42
- type: Input
38
+ }], controlValue: [{
39
+ type: Input,
40
+ args: ['value']
43
41
  }] } });
44
42
 
45
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-checkbox-control.mjs","sources":["../../../../libs/angular/cdk/checkbox-control/src/lib/checkbox-control.directive.ts","../../../../libs/angular/cdk/checkbox-control/src/odx-angular-cdk-checkbox-control.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { detectControllerChanges } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { booleanToAttributeString, injectElement } from '@odx/angular/utils';\n\n@Directive({\n selector: '[odxCheckBoxControl]',\n})\nexport class CheckBoxControl extends CustomFormControl<boolean> {\n public static ngAcceptInputType_checked: BooleanInput;\n\n public readonly element = injectElement();\n\n @Input()\n public set checked(value: boolean) {\n this.controlValue = value;\n }\n public get checked(): boolean {\n return this.controlValue;\n }\n\n @Input()\n public value: string | null = null;\n\n public get ariaChecked(): string {\n return booleanToAttributeString(this.checked);\n }\n\n constructor() {\n super(false);\n detectControllerChanges(this).subscribe();\n }\n\n public onChanged(event: Event): void {\n event.stopPropagation();\n super.updateValue((event.target as HTMLInputElement).checked);\n }\n\n protected override updateRequiredValidator(): void {\n this.toggleValidator(Validators.requiredTrue, this.required);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAUM,MAAO,eAAgB,SAAQ,iBAA0B,CAAA;AAoB7D,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;QAlBC,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;QAWnC,IAAK,CAAA,KAAA,GAAkB,IAAI,CAAC;AAQjC,QAAA,uBAAuB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;KAC3C;IAlBD,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AACD,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAKD,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/C;AAOM,IAAA,SAAS,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,WAAW,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC,CAAC;KAC/D;IAEkB,uBAAuB,GAAA;QACxC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC9D;;4GAhCU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;0EAOY,OAAO,EAAA,CAAA;sBADjB,KAAK;gBASC,KAAK,EAAA,CAAA;sBADX,KAAK;;;ACvBR;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-cdk-checkbox-control.mjs","sources":["../../../../libs/angular/cdk/checkbox-control/src/lib/checkbox-control.directive.ts","../../../../libs/angular/cdk/checkbox-control/src/odx-angular-cdk-checkbox-control.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\nimport { detectControllerChanges } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { booleanToAttributeString, injectElement } from '@odx/angular/utils';\n\n@Directive({\n selector: '[odxCheckBoxControl]',\n})\nexport class CheckBoxControl extends CustomFormControl<boolean> {\n public static ngAcceptInputType_checked: BooleanInput;\n\n public readonly element = injectElement();\n\n @Input()\n public set checked(value: boolean) {\n this.value = value;\n }\n public get checked(): boolean {\n return this.value;\n }\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value')\n public controlValue: string | null = null;\n\n public get ariaChecked(): string {\n return booleanToAttributeString(this.checked);\n }\n\n constructor() {\n super(false);\n detectControllerChanges(this).subscribe();\n }\n\n public onChanged(event: Event): void {\n event.stopPropagation();\n super.updateValue((event.target as HTMLInputElement).checked);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AASM,MAAO,eAAgB,SAAQ,iBAA0B,CAAA;AAqB7D,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;QAnBC,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;;QAYnC,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;AAQxC,QAAA,uBAAuB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;KAC3C;IAnBD,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACD,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAMD,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/C;AAOM,IAAA,SAAS,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,WAAW,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC,CAAC;KAC/D;;6GA7BU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAf,eAAe,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;0EAOY,OAAO,EAAA,CAAA;sBADjB,KAAK;gBAUC,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,OAAO,CAAA;;;ACvBhB;;AAEG;;;;"}
@@ -1,19 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, inject, Input, ViewChild } from '@angular/core';
3
3
  import { injectElement } from '@odx/angular/utils';
4
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
- import { NgControl, Validators } from '@angular/forms';
4
+ import { RequiredValidator, NgControl, Validators } from '@angular/forms';
6
5
  import { Controller, DisabledController, ReadonlyController } from '@odx/angular';
7
- import { filter, EMPTY } from 'rxjs';
8
6
 
9
7
  class ControlDirective {
10
8
  constructor() {
11
9
  this.element = injectElement();
12
10
  }
13
11
  }
14
- ControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
15
- ControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.9", type: ControlDirective, isStandalone: true, selector: "[odxControl]", exportAs: ["odxControl"], ngImport: i0 });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ControlDirective, decorators: [{
12
+ ControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13
+ ControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ControlDirective, isStandalone: true, selector: "[odxControl]", exportAs: ["odxControl"], ngImport: i0 });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlDirective, decorators: [{
17
15
  type: Directive,
18
16
  args: [{
19
17
  standalone: true,
@@ -25,10 +23,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImpor
25
23
  class CustomFormControl extends Controller {
26
24
  constructor(initialValue) {
27
25
  super();
28
- this.isRequired = false;
26
+ this.requiredValidator = inject(RequiredValidator, { optional: true, self: true });
29
27
  this.disabledController = DisabledController.inject();
30
28
  this.readonlyController = ReadonlyController.inject();
31
- this.enabled$ = this.disabledController?.change$.pipe(filter(() => !this.isDisabled)) ?? EMPTY;
32
29
  this.ngControl = inject(NgControl, { self: true, optional: true });
33
30
  this.id = null;
34
31
  this.name = `odx-form-control-${CustomFormControl.CURRENT_INDEX++}`;
@@ -37,22 +34,14 @@ class CustomFormControl extends Controller {
37
34
  if (this.ngControl) {
38
35
  this.ngControl.valueAccessor = this;
39
36
  }
40
- this.enabled$.subscribe(() => this.updateRequiredValidator());
41
37
  }
42
- set required(value) {
43
- this.isRequired = coerceBooleanProperty(value);
44
- this.updateRequiredValidator();
45
- }
46
- get required() {
47
- return this.isRequired;
48
- }
49
- set controlValue(value) {
38
+ set value(value) {
50
39
  if (this.internalValue !== value) {
51
40
  this.internalValue = value;
52
41
  this.triggerControllerChange();
53
42
  }
54
43
  }
55
- get controlValue() {
44
+ get value() {
56
45
  return this.internalValue;
57
46
  }
58
47
  get hasError() {
@@ -64,14 +53,14 @@ class CustomFormControl extends Controller {
64
53
  get isReadonly() {
65
54
  return !!this.readonlyController?.readonly;
66
55
  }
67
- ngAfterContentInit() {
68
- this.updateRequiredValidator();
56
+ get isRequired() {
57
+ return !!this.requiredValidator?.required || this.hasValidator(Validators.required) || this.hasValidator(Validators.requiredTrue);
69
58
  }
70
59
  onTouched() {
71
- // empty;
60
+ // implemented by control value accessor
72
61
  }
73
62
  onChange(_value) {
74
- // empty
63
+ // implemented by control value accessor
75
64
  }
76
65
  registerOnChange(fn) {
77
66
  this.onChange = fn;
@@ -83,39 +72,25 @@ class CustomFormControl extends Controller {
83
72
  this.disabledController?.setDisabledState(isDisabled);
84
73
  }
85
74
  writeValue(value) {
86
- this.controlValue = value;
75
+ if (this.isDisabled)
76
+ return;
77
+ this.value = value;
78
+ this.onChange(value);
87
79
  }
88
80
  updateValue(value) {
81
+ if (this.isDisabled)
82
+ return;
89
83
  this.writeValue(value);
90
- this.onChange(value);
91
84
  this.onTouched();
92
85
  }
93
- toggleValidator(validator, state) {
94
- const control = this.ngControl?.control;
95
- if (!control)
96
- return;
97
- const hasValidator = control.hasValidator(validator);
98
- if (state && hasValidator)
99
- return;
100
- if (!state && !hasValidator)
101
- return;
102
- if (state) {
103
- control.addValidators(validator);
104
- }
105
- else {
106
- control.removeValidators(validator);
107
- }
108
- control.updateValueAndValidity();
109
- control.markAsUntouched();
110
- }
111
- updateRequiredValidator() {
112
- this.toggleValidator(Validators.required, this.isRequired);
86
+ hasValidator(validator) {
87
+ return !!this.ngControl?.control?.hasValidator(validator);
113
88
  }
114
89
  }
115
90
  CustomFormControl.CURRENT_INDEX = 0;
116
- CustomFormControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: CustomFormControl, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
117
- CustomFormControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.9", type: CustomFormControl, inputs: { id: "id", name: "name", required: "required" }, host: { properties: { "class.has-error": "hasError", "class.is-disabled": "isDisabled", "class.is-readonly": "isReadonly", "class.is-required": "required" } }, viewQueries: [{ propertyName: "control", first: true, predicate: ControlDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: CustomFormControl, decorators: [{
91
+ CustomFormControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomFormControl, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
92
+ CustomFormControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: CustomFormControl, inputs: { id: "id", name: "name" }, host: { properties: { "class.has-error": "hasError", "class.is-disabled": "isDisabled", "class.is-readonly": "isReadonly", "class.is-required": "required" } }, viewQueries: [{ propertyName: "control", first: true, predicate: ControlDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomFormControl, decorators: [{
119
94
  type: Directive,
120
95
  args: [{
121
96
  host: {
@@ -129,8 +104,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImpor
129
104
  type: Input
130
105
  }], name: [{
131
106
  type: Input
132
- }], required: [{
133
- type: Input
134
107
  }], control: [{
135
108
  type: ViewChild,
136
109
  args: [ControlDirective]
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-custom-form-control.mjs","sources":["../../../../libs/angular/cdk/custom-form-control/src/lib/control.directive.ts","../../../../libs/angular/cdk/custom-form-control/src/lib/custom-form-control.ts","../../../../libs/angular/cdk/custom-form-control/src/odx-angular-cdk-custom-form-control.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { injectElement } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n selector: '[odxControl]',\n exportAs: 'odxControl',\n})\nexport class ControlDirective {\n public readonly element = injectElement();\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterContentInit, Directive, inject, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl, ValidatorFn, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { EMPTY, filter } from 'rxjs';\nimport { ControlDirective } from './control.directive';\n\n@Directive({\n host: {\n '[class.has-error]': 'hasError',\n '[class.is-disabled]': 'isDisabled',\n '[class.is-readonly]': 'isReadonly',\n '[class.is-required]': 'required',\n },\n})\nexport abstract class CustomFormControl<T> extends Controller implements ControlValueAccessor, AfterContentInit {\n private static CURRENT_INDEX = 0;\n public static ngAcceptInputType_required: BooleanInput;\n\n private internalValue: T;\n private isRequired = false;\n protected readonly disabledController = DisabledController.inject();\n protected readonly readonlyController = ReadonlyController.inject();\n protected readonly enabled$ = this.disabledController?.change$.pipe(filter(() => !this.isDisabled)) ?? EMPTY;\n protected readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n @Input()\n public id: string | null = null;\n\n @Input()\n public name = `odx-form-control-${CustomFormControl.CURRENT_INDEX++}`;\n\n @Input()\n public set required(value: unknown) {\n this.isRequired = coerceBooleanProperty(value);\n this.updateRequiredValidator();\n }\n public get required(): boolean {\n return this.isRequired;\n }\n\n public set controlValue(value: T) {\n if (this.internalValue !== value) {\n this.internalValue = value;\n this.triggerControllerChange();\n }\n }\n public get controlValue(): T {\n return this.internalValue;\n }\n\n public get hasError(): boolean {\n return !!this.ngControl?.touched && !!this.ngControl?.invalid;\n }\n\n public get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n public get isReadonly(): boolean {\n return !!this.readonlyController?.readonly;\n }\n\n @ViewChild(ControlDirective)\n public readonly control: ControlDirective | null = null;\n\n constructor(initialValue: T) {\n super();\n this.internalValue = initialValue;\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n this.enabled$.subscribe(() => this.updateRequiredValidator());\n }\n\n public ngAfterContentInit(): void {\n this.updateRequiredValidator();\n }\n\n public onTouched() {\n // empty;\n }\n\n public onChange(_value: T) {\n // empty\n }\n\n public registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabledController?.setDisabledState(isDisabled);\n }\n\n public writeValue(value: T): void {\n this.controlValue = value;\n }\n\n public updateValue(value: T): void {\n this.writeValue(value);\n this.onChange(value);\n this.onTouched();\n }\n\n protected toggleValidator(validator: ValidatorFn, state: boolean): void {\n const control = this.ngControl?.control;\n if (!control) return;\n const hasValidator = control.hasValidator(validator);\n if (state && hasValidator) return;\n if (!state && !hasValidator) return;\n if (state) {\n control.addValidators(validator);\n } else {\n control.removeValidators(validator);\n }\n control.updateValueAndValidity();\n control.markAsUntouched();\n }\n\n protected updateRequiredValidator(): void {\n this.toggleValidator(Validators.required, this.isRequired);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAQa,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAMkB,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;AAC3C,KAAA;;6GAFY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA,CAAA;;;ACQK,MAAgB,iBAAqB,SAAQ,UAAU,CAAA;AAmD3D,IAAA,WAAA,CAAY,YAAe,EAAA;AACzB,QAAA,KAAK,EAAE,CAAC;QA/CF,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACR,QAAA,IAAA,CAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC;QACjD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;AAC1F,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAG1E,IAAE,CAAA,EAAA,GAAkB,IAAI,CAAC;AAGzB,QAAA,IAAA,CAAA,IAAI,GAAG,CAAoB,iBAAA,EAAA,iBAAiB,CAAC,aAAa,EAAE,EAAE,CAAC;QAkCtD,IAAO,CAAA,OAAA,GAA4B,IAAI,CAAC;AAItD,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;KAC/D;IAzCD,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AACD,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAW,YAAY,CAAC,KAAQ,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAChC,SAAA;KACF;AACD,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;KAC/D;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;KAC5C;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;KAC5C;IAcM,kBAAkB,GAAA;QACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAEM,SAAS,GAAA;;KAEf;AAEM,IAAA,QAAQ,CAAC,MAAS,EAAA;;KAExB;AAEM,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAEM,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;KACvD;AAEM,IAAA,UAAU,CAAC,KAAQ,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AAEM,IAAA,WAAW,CAAC,KAAQ,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAES,eAAe,CAAC,SAAsB,EAAE,KAAc,EAAA;AAC9D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,YAAY;YAAE,OAAO;AAClC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY;YAAE,OAAO;AACpC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAClC,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,SAAA;QACD,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACjC,OAAO,CAAC,eAAe,EAAE,CAAC;KAC3B;IAES,uBAAuB,GAAA;QAC/B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC5D;;AA9Gc,iBAAa,CAAA,aAAA,GAAG,CAAC,CAAC;8GADb,iBAAiB,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,6RAgD1B,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAhDP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,UAAU;AAC/B,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,qBAAqB,EAAE,UAAU;AAClC,qBAAA;AACF,iBAAA,CAAA;6FAaQ,EAAE,EAAA,CAAA;sBADR,KAAK;gBAIC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAIK,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBAgCU,OAAO,EAAA,CAAA;sBADtB,SAAS;uBAAC,gBAAgB,CAAA;;;AC/D7B;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-cdk-custom-form-control.mjs","sources":["../../../../libs/angular/cdk/custom-form-control/src/lib/control.directive.ts","../../../../libs/angular/cdk/custom-form-control/src/lib/custom-form-control.ts","../../../../libs/angular/cdk/custom-form-control/src/odx-angular-cdk-custom-form-control.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { injectElement } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n selector: '[odxControl]',\n exportAs: 'odxControl',\n})\nexport class ControlDirective {\n public readonly element = injectElement();\n}\n","import { Directive, inject, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl, RequiredValidator, ValidatorFn, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { ControlDirective } from './control.directive';\n\n@Directive({\n host: {\n '[class.has-error]': 'hasError',\n '[class.is-disabled]': 'isDisabled',\n '[class.is-readonly]': 'isReadonly',\n '[class.is-required]': 'required',\n },\n})\nexport abstract class CustomFormControl<T> extends Controller implements ControlValueAccessor {\n private static CURRENT_INDEX = 0;\n\n private readonly requiredValidator = inject(RequiredValidator, { optional: true, self: true });\n private internalValue: T;\n protected readonly disabledController = DisabledController.inject();\n protected readonly readonlyController = ReadonlyController.inject();\n protected readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n @Input()\n public id: string | null = null;\n\n @Input()\n public name = `odx-form-control-${CustomFormControl.CURRENT_INDEX++}`;\n\n public set value(value: T) {\n if (this.internalValue !== value) {\n this.internalValue = value;\n this.triggerControllerChange();\n }\n }\n public get value(): T {\n return this.internalValue;\n }\n\n public get hasError(): boolean {\n return !!this.ngControl?.touched && !!this.ngControl?.invalid;\n }\n\n public get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n public get isReadonly(): boolean {\n return !!this.readonlyController?.readonly;\n }\n\n public get isRequired(): boolean {\n return !!this.requiredValidator?.required || this.hasValidator(Validators.required) || this.hasValidator(Validators.requiredTrue);\n }\n\n @ViewChild(ControlDirective)\n public readonly control: ControlDirective | null = null;\n\n constructor(initialValue: T) {\n super();\n this.internalValue = initialValue;\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public onTouched() {\n // implemented by control value accessor\n }\n\n public onChange(_value: T) {\n // implemented by control value accessor\n }\n\n public registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabledController?.setDisabledState(isDisabled);\n }\n\n public writeValue(value: T): void {\n if (this.isDisabled) return;\n this.value = value;\n this.onChange(value);\n }\n\n public updateValue(value: T): void {\n if (this.isDisabled) return;\n this.writeValue(value);\n this.onTouched();\n }\n\n protected hasValidator(validator: ValidatorFn): boolean {\n return !!this.ngControl?.control?.hasValidator(validator);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, reflectComponentType, ApplicationRef, createComponent, EnvironmentInjector, InjectionToken, inject, Injector, Injectable, ViewContainerRef, TemplateRef, Directive } from '@angular/core';
3
- import { injectElement, isString, isTemplateRef, isComponent, hasChanged } from '@odx/angular/utils';
3
+ import { injectElement, isString, isViewContainer, getInjector, isTemplateRef, isComponent, hasChanged } from '@odx/angular/utils';
4
4
  import { isObservable, distinctUntilChanged } from 'rxjs';
5
+ import { DOCUMENT } from '@angular/common';
5
6
 
6
7
  class DynamicViewComponent {
7
8
  constructor() {
@@ -27,9 +28,9 @@ class DynamicViewComponent {
27
28
  this.element.nativeElement.innerHTML = value;
28
29
  }
29
30
  }
30
- DynamicViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: DynamicViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- DynamicViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: DynamicViewComponent, isStandalone: true, selector: "odx-dynamic-view", inputs: { content: "content" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: DynamicViewComponent, decorators: [{
31
+ DynamicViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DynamicViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ DynamicViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DynamicViewComponent, isStandalone: true, selector: "odx-dynamic-view", inputs: { content: "content" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DynamicViewComponent, decorators: [{
33
34
  type: Component,
34
35
  args: [{
35
36
  selector: 'odx-dynamic-view',
@@ -59,17 +60,20 @@ class DynamicComponentRef {
59
60
  this.options = options;
60
61
  this.application = this.options.injector.get(ApplicationRef);
61
62
  this.componentRef = null;
62
- const { component, context, injector, projectableNodes, vcr } = options;
63
+ const { component, context, injector, projectableNodes, host } = options;
63
64
  this.componentRef = createComponent(component, {
64
65
  environmentInjector: injector.get(EnvironmentInjector),
65
66
  elementInjector: injector,
66
67
  projectableNodes,
67
68
  });
68
- if (vcr) {
69
- vcr.insert(this.componentRef.hostView);
69
+ if (isViewContainer(host)) {
70
+ host.insert(this.componentRef.hostView);
70
71
  }
71
72
  else {
72
73
  this.application.attachView(this.componentRef.hostView);
74
+ if (host) {
75
+ host.appendChild(this.getElement());
76
+ }
73
77
  }
74
78
  if (context) {
75
79
  this.update(context);
@@ -83,7 +87,7 @@ class DynamicComponentRef {
83
87
  this.componentRef = null;
84
88
  return;
85
89
  }
86
- if (this.componentRef && !this.options.vcr) {
90
+ if (this.componentRef && !isViewContainer(this.options.host)) {
87
91
  this.application.detachView(this.componentRef.hostView);
88
92
  }
89
93
  this.componentRef?.destroy();
@@ -97,6 +101,9 @@ class DynamicComponentRef {
97
101
  this.componentRef?.setInput(key, context[key]);
98
102
  }
99
103
  }
104
+ getContext() {
105
+ return this.options.context ?? {};
106
+ }
100
107
  getView() {
101
108
  return this.componentRef?.hostView ?? null;
102
109
  }
@@ -117,7 +124,7 @@ class DynamicTemplateRef {
117
124
  this.embeddedViewRef = null;
118
125
  return;
119
126
  }
120
- if (!this.options.vcr && this.embeddedViewRef) {
127
+ if (!isViewContainer(this.options.host) && this.embeddedViewRef) {
121
128
  this.application.detachView(this.embeddedViewRef);
122
129
  }
123
130
  this.embeddedViewRef?.destroy();
@@ -132,12 +139,15 @@ class DynamicTemplateRef {
132
139
  this.detectChanges();
133
140
  }
134
141
  }
142
+ getContext() {
143
+ return this.options.context ?? {};
144
+ }
135
145
  getView() {
136
146
  return this.embeddedViewRef;
137
147
  }
138
- create({ context, template, vcr }) {
139
- if (vcr) {
140
- this.embeddedViewRef = vcr.createEmbeddedView(template, context, { injector: this.options.injector });
148
+ create({ context, template, host }) {
149
+ if (isViewContainer(host)) {
150
+ this.embeddedViewRef = host.createEmbeddedView(template, context, { injector: this.options.injector });
141
151
  }
142
152
  else {
143
153
  this.embeddedViewRef = template.createEmbeddedView(context ?? {}, this.options.injector);
@@ -152,15 +162,25 @@ function isDynamicView(value) {
152
162
 
153
163
  const DYNAMIC_VIEW_CONTEXT = new InjectionToken('@odx/angular/cdk/dynamic-view::DynamicViewContext');
154
164
 
165
+ const ODX_DYNAMIC_VIEW_DEFAULT_HOST = new InjectionToken('@odx/angular/cdk/dynamic-view::DynamicViewDefaultHost', {
166
+ providedIn: 'root',
167
+ factory: () => inject(DOCUMENT).body,
168
+ });
169
+ function getDynamicViewDefaultHost() {
170
+ return inject(ODX_DYNAMIC_VIEW_DEFAULT_HOST);
171
+ }
172
+
155
173
  class DynamicViewService {
156
174
  constructor() {
157
- this.injector = inject(Injector);
175
+ this.injector = getInjector();
176
+ this.defaultHost = getDynamicViewDefaultHost();
158
177
  }
159
178
  createView(content, options = {}) {
160
179
  const viewOptions = {
161
180
  ...options,
181
+ host: options.host ?? this.defaultHost,
162
182
  injector: Injector.create({
163
- providers: [{ provide: DYNAMIC_VIEW_CONTEXT, useValue: options.context }],
183
+ providers: [{ provide: DYNAMIC_VIEW_CONTEXT, useValue: options.context }, options.providers ?? []],
164
184
  parent: options.injector ?? this.injector,
165
185
  }),
166
186
  };
@@ -180,9 +200,9 @@ class DynamicViewService {
180
200
  throw new Error('Content type is not supported');
181
201
  }
182
202
  }
183
- DynamicViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: DynamicViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
184
- DynamicViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: DynamicViewService, providedIn: 'root' });
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: DynamicViewService, decorators: [{
203
+ DynamicViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DynamicViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
204
+ DynamicViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DynamicViewService, providedIn: 'root' });
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DynamicViewService, decorators: [{
186
206
  type: Injectable,
187
207
  args: [{ providedIn: 'root' }]
188
208
  }] });
@@ -244,7 +264,7 @@ class DynamicViewDirective {
244
264
  context: this.context ?? undefined,
245
265
  injector: this.injector ?? this.viewContainer.injector,
246
266
  projectableNodes,
247
- vcr: this.viewContainer,
267
+ host: this.viewContainer,
248
268
  });
249
269
  }
250
270
  }
@@ -255,9 +275,9 @@ class DynamicViewDirective {
255
275
  this.viewRef = null;
256
276
  }
257
277
  }
258
- DynamicViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: DynamicViewDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
259
- DynamicViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.9", type: DynamicViewDirective, isStandalone: true, selector: "ng-template[odxDynamicView]", inputs: { content: ["odxDynamicView", "content"], injector: ["odxDynamicViewInjector", "injector"], context: ["odxDynamicViewContext", "context"] }, usesOnChanges: true, ngImport: i0 });
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: DynamicViewDirective, decorators: [{
278
+ DynamicViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DynamicViewDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
279
+ DynamicViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DynamicViewDirective, isStandalone: true, selector: "ng-template[odxDynamicView]", inputs: { content: ["odxDynamicView", "content"], injector: ["odxDynamicViewInjector", "injector"], context: ["odxDynamicViewContext", "context"] }, usesOnChanges: true, ngImport: i0 });
280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DynamicViewDirective, decorators: [{
261
281
  type: Directive,
262
282
  args: [{
263
283
  selector: 'ng-template[odxDynamicView]',
@@ -278,5 +298,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImpor
278
298
  * Generated bundle index. Do not edit.
279
299
  */
280
300
 
281
- export { DYNAMIC_VIEW_CONTEXT, DynamicComponentRef, DynamicTemplateRef, DynamicViewComponent, DynamicViewDirective, DynamicViewService, createProjectableNodes, isDynamicTextContent, isDynamicView };
301
+ export { DYNAMIC_VIEW_CONTEXT, DynamicComponentRef, DynamicTemplateRef, DynamicViewComponent, DynamicViewDirective, DynamicViewService, ODX_DYNAMIC_VIEW_DEFAULT_HOST, createProjectableNodes, getDynamicViewDefaultHost, isDynamicTextContent, isDynamicView };
282
302
  //# sourceMappingURL=odx-angular-cdk-dynamic-view.mjs.map