@odx/angular 1.0.0-rc.3 → 1.0.0-rc.5

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 (361) 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.component.d.ts +3 -3
  12. package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +3 -1
  13. package/cdk/dynamic-view/lib/dynamic-view.service.d.ts +1 -0
  14. package/cdk/dynamic-view/lib/facade/dynamic-view-ref.d.ts +1 -0
  15. package/cdk/dynamic-view/lib/helpers/create-projectable-nodes.d.ts +2 -0
  16. package/cdk/dynamic-view/lib/helpers/index.d.ts +1 -0
  17. package/cdk/dynamic-view/lib/models/dynamic-component-ref.d.ts +1 -0
  18. package/cdk/dynamic-view/lib/models/dynamic-template-ref.d.ts +1 -0
  19. package/cdk/dynamic-view/lib/models/dynamic-view-options.d.ts +7 -3
  20. package/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.d.ts +3 -0
  21. package/cdk/dynamic-view/lib/tokens/index.d.ts +1 -0
  22. package/components/checkbox/index.d.ts +2 -0
  23. package/components/checkbox/lib/checkbox.module.d.ts +9 -0
  24. package/components/checkbox/lib/checkbox.validator.d.ts +6 -0
  25. package/components/chip/README.md +3 -0
  26. package/components/chip/index.d.ts +2 -0
  27. package/components/chip/lib/chip.component.d.ts +15 -0
  28. package/components/chip/lib/models/chip-size.d.ts +5 -0
  29. package/components/chip/lib/models/chip-variant.d.ts +7 -0
  30. package/components/chip/lib/models/index.d.ts +2 -0
  31. package/components/circular-progress/README.md +3 -0
  32. package/components/circular-progress/index.d.ts +2 -0
  33. package/components/circular-progress/lib/circular-progress.component.d.ts +28 -0
  34. package/components/circular-progress/lib/models/circular-progress-size.d.ts +7 -0
  35. package/components/circular-progress/lib/models/index.d.ts +1 -0
  36. package/components/form-field/lib/components/form-group/form-group.component.d.ts +0 -1
  37. package/components/form-field/lib/directives/form-field-control.directive.d.ts +3 -4
  38. package/components/form-field/lib/form-field.config.d.ts +0 -5
  39. package/components/list/README.md +3 -0
  40. package/components/list/index.d.ts +3 -0
  41. package/components/list/lib/components/index.d.ts +1 -0
  42. package/components/list/lib/components/list-item.component.d.ts +14 -0
  43. package/components/list/lib/list.component.d.ts +5 -0
  44. package/components/list/lib/list.module.d.ts +9 -0
  45. package/components/loading-spinner/README.md +3 -0
  46. package/components/loading-spinner/index.d.ts +3 -0
  47. package/components/loading-spinner/lib/loading-spinner.component.d.ts +15 -0
  48. package/components/loading-spinner/lib/loading-spinner.directive.d.ts +26 -0
  49. package/components/loading-spinner/lib/loading-spinner.module.d.ts +9 -0
  50. package/components/loading-spinner/lib/loading-spinner.service.d.ts +9 -0
  51. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +6 -1
  52. package/components/main-menu/lib/main-menu.component.d.ts +3 -1
  53. package/components/modal/lib/components/modal-header/modal-header.component.d.ts +1 -0
  54. package/components/modal/lib/modal.component.d.ts +4 -3
  55. package/components/modal/lib/modal.directive.d.ts +8 -4
  56. package/components/modal/lib/modal.service.d.ts +0 -2
  57. package/components/modal/lib/models/index.d.ts +1 -0
  58. package/components/modal/lib/models/modal-options.d.ts +2 -0
  59. package/components/modal/lib/models/modal-ref.d.ts +4 -2
  60. package/components/modal/lib/models/modal-variant.d.ts +5 -0
  61. package/components/progress/README.md +3 -0
  62. package/components/progress/index.d.ts +1 -0
  63. package/components/progress/lib/progress.component.d.ts +14 -0
  64. package/components/rail-navigation/README.md +3 -0
  65. package/components/rail-navigation/index.d.ts +3 -0
  66. package/components/rail-navigation/lib/components/rail-navigation-item.component.d.ts +15 -0
  67. package/components/rail-navigation/lib/rail-navigation.component.d.ts +12 -0
  68. package/components/rail-navigation/lib/rail-navigation.module.d.ts +9 -0
  69. package/components/switch/index.d.ts +2 -0
  70. package/components/switch/lib/switch.module.d.ts +9 -0
  71. package/components/switch/lib/switch.validator.d.ts +6 -0
  72. package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +5 -1
  73. package/esm2020/animations/index.mjs +2 -1
  74. package/esm2020/animations/lib/fade.mjs +2 -5
  75. package/esm2020/animations/lib/wait-for-child-animations.mjs +3 -0
  76. package/esm2020/cdk/active-indicator/index.mjs +3 -0
  77. package/esm2020/cdk/active-indicator/lib/active-indicator.directive.mjs +127 -0
  78. package/esm2020/cdk/active-indicator/lib/models/active-indicator-direction.mjs +5 -0
  79. package/esm2020/cdk/active-indicator/lib/models/active-indicator-position.mjs +6 -0
  80. package/esm2020/cdk/active-indicator/lib/models/index.mjs +3 -0
  81. package/esm2020/cdk/active-indicator/odx-angular-cdk-active-indicator.mjs +5 -0
  82. package/esm2020/cdk/checkbox-control/lib/checkbox-control.directive.mjs +13 -15
  83. package/esm2020/cdk/custom-form-control/lib/control.directive.mjs +4 -4
  84. package/esm2020/cdk/custom-form-control/lib/custom-form-control.mjs +20 -47
  85. package/esm2020/cdk/dynamic-view/lib/dynamic-view.component.mjs +23 -14
  86. package/esm2020/cdk/dynamic-view/lib/dynamic-view.directive.mjs +21 -9
  87. package/esm2020/cdk/dynamic-view/lib/dynamic-view.service.mjs +11 -9
  88. package/esm2020/cdk/dynamic-view/lib/facade/dynamic-view-ref.mjs +1 -1
  89. package/esm2020/cdk/dynamic-view/lib/helpers/create-projectable-nodes.mjs +9 -0
  90. package/esm2020/cdk/dynamic-view/lib/helpers/index.mjs +2 -1
  91. package/esm2020/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +13 -5
  92. package/esm2020/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +9 -5
  93. package/esm2020/cdk/dynamic-view/lib/models/dynamic-view-options.mjs +1 -1
  94. package/esm2020/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.mjs +10 -0
  95. package/esm2020/cdk/dynamic-view/lib/tokens/index.mjs +2 -1
  96. package/esm2020/cdk/expandable/lib/directives/expandable-item.directive.mjs +4 -4
  97. package/esm2020/cdk/expandable/lib/directives/extandable-container.directive.mjs +4 -4
  98. package/esm2020/cdk/expandable/lib/expandable.module.mjs +5 -5
  99. package/esm2020/cdk/radio-group-control/lib/radio-control.directive.mjs +7 -7
  100. package/esm2020/cdk/radio-group-control/lib/radio-group-control.directive.mjs +4 -4
  101. package/esm2020/cdk/radio-group-control/lib/radio-group-control.module.mjs +5 -5
  102. package/esm2020/components/accordion/lib/accordion.component.mjs +4 -4
  103. package/esm2020/components/accordion/lib/accordion.module.mjs +5 -5
  104. package/esm2020/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +4 -4
  105. package/esm2020/components/accordion/lib/directives/accordion-item-title.mjs +4 -4
  106. package/esm2020/components/action-group/action-group.component.mjs +4 -4
  107. package/esm2020/components/area-header/area-header.component.mjs +4 -4
  108. package/esm2020/components/area-header/area-header.module.mjs +5 -5
  109. package/esm2020/components/area-header/directives/area-header-content.directive.mjs +4 -4
  110. package/esm2020/components/area-header/directives/area-header-subtitle.directive.mjs +4 -4
  111. package/esm2020/components/avatar/lib/avatar.component.mjs +4 -4
  112. package/esm2020/components/badge/lib/badge.component.mjs +6 -6
  113. package/esm2020/components/badge/lib/badge.directive.mjs +7 -7
  114. package/esm2020/components/button/lib/button.component.mjs +5 -5
  115. package/esm2020/components/button-group/lib/button-group.component.mjs +4 -4
  116. package/esm2020/components/checkbox/index.mjs +3 -1
  117. package/esm2020/components/checkbox/lib/checkbox.component.mjs +5 -5
  118. package/esm2020/components/checkbox/lib/checkbox.module.mjs +19 -0
  119. package/esm2020/components/checkbox/lib/checkbox.validator.mjs +28 -0
  120. package/esm2020/components/chip/index.mjs +3 -0
  121. package/esm2020/components/chip/lib/chip.component.mjs +54 -0
  122. package/esm2020/components/chip/lib/models/chip-size.mjs +5 -0
  123. package/esm2020/components/chip/lib/models/chip-variant.mjs +7 -0
  124. package/esm2020/components/chip/lib/models/index.mjs +3 -0
  125. package/esm2020/components/chip/odx-angular-components-chip.mjs +5 -0
  126. package/esm2020/components/circular-progress/index.mjs +3 -0
  127. package/esm2020/components/circular-progress/lib/circular-progress.component.mjs +91 -0
  128. package/esm2020/components/circular-progress/lib/models/circular-progress-size.mjs +7 -0
  129. package/esm2020/components/circular-progress/lib/models/index.mjs +2 -0
  130. package/esm2020/components/circular-progress/odx-angular-components-circular-progress.mjs +5 -0
  131. package/esm2020/components/content-box/lib/content-box.component.mjs +4 -4
  132. package/esm2020/components/content-box/lib/content-box.module.mjs +5 -5
  133. package/esm2020/components/content-box/lib/directives/content-box-footer-directive.mjs +4 -4
  134. package/esm2020/components/content-box/lib/directives/content-box-header-directive.mjs +4 -4
  135. package/esm2020/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +4 -4
  136. package/esm2020/components/form-field/lib/components/form-group/form-group.component.mjs +11 -13
  137. package/esm2020/components/form-field/lib/directives/form-field-control.directive.mjs +20 -13
  138. package/esm2020/components/form-field/lib/directives/form-field-error.directive.mjs +4 -4
  139. package/esm2020/components/form-field/lib/directives/form-field-hint.directive.mjs +4 -4
  140. package/esm2020/components/form-field/lib/directives/form-field-label.directive.mjs +4 -4
  141. package/esm2020/components/form-field/lib/directives/form.directive.mjs +4 -4
  142. package/esm2020/components/form-field/lib/form-field.component.mjs +4 -4
  143. package/esm2020/components/form-field/lib/form-field.config.mjs +1 -2
  144. package/esm2020/components/form-field/lib/form-field.module.mjs +5 -5
  145. package/esm2020/components/form-field/lib/form-field.service.mjs +4 -4
  146. package/esm2020/components/form-field/lib/services/form-field-error.service.mjs +4 -4
  147. package/esm2020/components/header/lib/directives/header-avatar.directive.mjs +4 -4
  148. package/esm2020/components/header/lib/directives/header-title.directive.mjs +4 -4
  149. package/esm2020/components/header/lib/header.component.mjs +4 -4
  150. package/esm2020/components/header/lib/header.module.mjs +5 -5
  151. package/esm2020/components/icon/lib/icon.component.mjs +4 -4
  152. package/esm2020/components/link/link.directive.mjs +4 -4
  153. package/esm2020/components/list/index.mjs +4 -0
  154. package/esm2020/components/list/lib/components/index.mjs +2 -0
  155. package/esm2020/components/list/lib/components/list-item.component.mjs +46 -0
  156. package/esm2020/components/list/lib/list.component.mjs +13 -0
  157. package/esm2020/components/list/lib/list.module.mjs +19 -0
  158. package/esm2020/components/list/odx-angular-components-list.mjs +5 -0
  159. package/esm2020/components/loading-spinner/index.mjs +4 -0
  160. package/esm2020/components/loading-spinner/lib/loading-spinner.component.mjs +58 -0
  161. package/esm2020/components/loading-spinner/lib/loading-spinner.directive.mjs +87 -0
  162. package/esm2020/components/loading-spinner/lib/loading-spinner.module.mjs +19 -0
  163. package/esm2020/components/loading-spinner/lib/loading-spinner.service.mjs +17 -0
  164. package/esm2020/components/loading-spinner/odx-angular-components-loading-spinner.mjs +5 -0
  165. package/esm2020/components/logo/logo.directive.mjs +4 -4
  166. package/esm2020/components/main-menu/lib/directives/main-menu-button.directive.mjs +4 -4
  167. package/esm2020/components/main-menu/lib/directives/main-menu-item.directive.mjs +20 -9
  168. package/esm2020/components/main-menu/lib/main-menu.component.mjs +7 -6
  169. package/esm2020/components/main-menu/lib/main-menu.module.mjs +5 -5
  170. package/esm2020/components/main-menu/lib/main-menu.service.mjs +4 -4
  171. package/esm2020/components/modal/lib/components/modal-footer/modal-footer.component.mjs +4 -4
  172. package/esm2020/components/modal/lib/components/modal-header/modal-header.component.mjs +10 -8
  173. package/esm2020/components/modal/lib/directives/modal-close.directive.mjs +4 -4
  174. package/esm2020/components/modal/lib/directives/modal-content.directive.mjs +4 -4
  175. package/esm2020/components/modal/lib/directives/modal-dismiss.directive.mjs +4 -4
  176. package/esm2020/components/modal/lib/modal.component.mjs +29 -16
  177. package/esm2020/components/modal/lib/modal.config.mjs +3 -1
  178. package/esm2020/components/modal/lib/modal.directive.mjs +24 -6
  179. package/esm2020/components/modal/lib/modal.module.mjs +5 -5
  180. package/esm2020/components/modal/lib/modal.service.mjs +8 -21
  181. package/esm2020/components/modal/lib/models/index.mjs +2 -1
  182. package/esm2020/components/modal/lib/models/modal-options.mjs +1 -1
  183. package/esm2020/components/modal/lib/models/modal-ref.mjs +9 -2
  184. package/esm2020/components/modal/lib/models/modal-variant.mjs +5 -0
  185. package/esm2020/components/modal/lib/services/open-modal-manager.service.mjs +4 -4
  186. package/esm2020/components/progress/index.mjs +2 -0
  187. package/esm2020/components/progress/lib/progress.component.mjs +51 -0
  188. package/esm2020/components/progress/odx-angular-components-progress.mjs +5 -0
  189. package/esm2020/components/radio-group/lib/components/radio-button/radio-button.component.mjs +5 -5
  190. package/esm2020/components/radio-group/lib/radio-group.component.mjs +4 -4
  191. package/esm2020/components/radio-group/lib/radio-group.module.mjs +5 -5
  192. package/esm2020/components/rail-navigation/index.mjs +4 -0
  193. package/esm2020/components/rail-navigation/lib/components/rail-navigation-item.component.mjs +43 -0
  194. package/esm2020/components/rail-navigation/lib/rail-navigation.component.mjs +41 -0
  195. package/esm2020/components/rail-navigation/lib/rail-navigation.module.mjs +19 -0
  196. package/esm2020/components/rail-navigation/odx-angular-components-rail-navigation.mjs +5 -0
  197. package/esm2020/components/switch/index.mjs +3 -1
  198. package/esm2020/components/switch/lib/switch.component.mjs +5 -5
  199. package/esm2020/components/switch/lib/switch.module.mjs +19 -0
  200. package/esm2020/components/switch/lib/switch.validator.mjs +28 -0
  201. package/esm2020/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +5 -5
  202. package/esm2020/components/toggle-button-group/lib/toggle-button-group.component.mjs +20 -11
  203. package/esm2020/components/toggle-button-group/lib/toggle-button-group.module.mjs +5 -5
  204. package/esm2020/lib/controllers/controller.mjs +15 -13
  205. package/esm2020/lib/controllers/disabled.controller.mjs +7 -6
  206. package/esm2020/lib/controllers/readonly.controller.mjs +7 -6
  207. package/esm2020/lib/core.module.mjs +5 -5
  208. package/esm2020/lib/directives/click-outside.directive.mjs +4 -4
  209. package/esm2020/lib/services/window-ref.mjs +4 -4
  210. package/esm2020/rxjs/index.mjs +2 -2
  211. package/esm2020/rxjs/lib/from-element-resize.mjs +14 -0
  212. package/esm2020/utils/lib/helpers/angular.mjs +5 -2
  213. package/esm2020/utils/lib/helpers/dom.mjs +24 -1
  214. package/fesm2015/odx-angular-animations.mjs +5 -3
  215. package/fesm2015/odx-angular-animations.mjs.map +1 -1
  216. package/fesm2015/odx-angular-cdk-active-indicator.mjs +142 -0
  217. package/fesm2015/odx-angular-cdk-active-indicator.mjs.map +1 -0
  218. package/fesm2015/odx-angular-cdk-checkbox-control.mjs +12 -14
  219. package/fesm2015/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  220. package/fesm2015/odx-angular-cdk-custom-form-control.mjs +24 -51
  221. package/fesm2015/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  222. package/fesm2015/odx-angular-cdk-dynamic-view.mjs +88 -38
  223. package/fesm2015/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  224. package/fesm2015/odx-angular-cdk-expandable.mjs +10 -10
  225. package/fesm2015/odx-angular-cdk-expandable.mjs.map +1 -1
  226. package/fesm2015/odx-angular-cdk-radio-group-control.mjs +13 -13
  227. package/fesm2015/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  228. package/fesm2015/odx-angular-components-accordion.mjs +13 -13
  229. package/fesm2015/odx-angular-components-accordion.mjs.map +1 -1
  230. package/fesm2015/odx-angular-components-action-group.mjs +3 -3
  231. package/fesm2015/odx-angular-components-action-group.mjs.map +1 -1
  232. package/fesm2015/odx-angular-components-area-header.mjs +13 -13
  233. package/fesm2015/odx-angular-components-area-header.mjs.map +1 -1
  234. package/fesm2015/odx-angular-components-avatar.mjs +3 -3
  235. package/fesm2015/odx-angular-components-avatar.mjs.map +1 -1
  236. package/fesm2015/odx-angular-components-badge.mjs +10 -10
  237. package/fesm2015/odx-angular-components-badge.mjs.map +1 -1
  238. package/fesm2015/odx-angular-components-button-group.mjs +3 -3
  239. package/fesm2015/odx-angular-components-button-group.mjs.map +1 -1
  240. package/fesm2015/odx-angular-components-button.mjs +4 -5
  241. package/fesm2015/odx-angular-components-button.mjs.map +1 -1
  242. package/fesm2015/odx-angular-components-checkbox.mjs +47 -7
  243. package/fesm2015/odx-angular-components-checkbox.mjs.map +1 -1
  244. package/fesm2015/odx-angular-components-chip.mjs +71 -0
  245. package/fesm2015/odx-angular-components-chip.mjs.map +1 -0
  246. package/fesm2015/odx-angular-components-circular-progress.mjs +103 -0
  247. package/fesm2015/odx-angular-components-circular-progress.mjs.map +1 -0
  248. package/fesm2015/odx-angular-components-content-box.mjs +13 -13
  249. package/fesm2015/odx-angular-components-content-box.mjs.map +1 -1
  250. package/fesm2015/odx-angular-components-form-field.mjs +52 -51
  251. package/fesm2015/odx-angular-components-form-field.mjs.map +1 -1
  252. package/fesm2015/odx-angular-components-header.mjs +13 -13
  253. package/fesm2015/odx-angular-components-header.mjs.map +1 -1
  254. package/fesm2015/odx-angular-components-icon.mjs +3 -3
  255. package/fesm2015/odx-angular-components-icon.mjs.map +1 -1
  256. package/fesm2015/odx-angular-components-link.mjs +3 -3
  257. package/fesm2015/odx-angular-components-link.mjs.map +1 -1
  258. package/fesm2015/odx-angular-components-list.mjs +79 -0
  259. package/fesm2015/odx-angular-components-list.mjs.map +1 -0
  260. package/fesm2015/odx-angular-components-loading-spinner.mjs +173 -0
  261. package/fesm2015/odx-angular-components-loading-spinner.mjs.map +1 -0
  262. package/fesm2015/odx-angular-components-logo.mjs +3 -3
  263. package/fesm2015/odx-angular-components-logo.mjs.map +1 -1
  264. package/fesm2015/odx-angular-components-main-menu.mjs +34 -23
  265. package/fesm2015/odx-angular-components-main-menu.mjs.map +1 -1
  266. package/fesm2015/odx-angular-components-modal.mjs +97 -66
  267. package/fesm2015/odx-angular-components-modal.mjs.map +1 -1
  268. package/fesm2015/odx-angular-components-progress.mjs +57 -0
  269. package/fesm2015/odx-angular-components-progress.mjs.map +1 -0
  270. package/fesm2015/odx-angular-components-radio-group.mjs +11 -11
  271. package/fesm2015/odx-angular-components-radio-group.mjs.map +1 -1
  272. package/fesm2015/odx-angular-components-rail-navigation.mjs +97 -0
  273. package/fesm2015/odx-angular-components-rail-navigation.mjs.map +1 -0
  274. package/fesm2015/odx-angular-components-switch.mjs +47 -7
  275. package/fesm2015/odx-angular-components-switch.mjs.map +1 -1
  276. package/fesm2015/odx-angular-components-toggle-button-group.mjs +26 -18
  277. package/fesm2015/odx-angular-components-toggle-button-group.mjs.map +1 -1
  278. package/fesm2015/odx-angular-rxjs.mjs +15 -6
  279. package/fesm2015/odx-angular-rxjs.mjs.map +1 -1
  280. package/fesm2015/odx-angular-utils.mjs +28 -2
  281. package/fesm2015/odx-angular-utils.mjs.map +1 -1
  282. package/fesm2015/odx-angular.mjs +38 -33
  283. package/fesm2015/odx-angular.mjs.map +1 -1
  284. package/fesm2020/odx-angular-animations.mjs +5 -6
  285. package/fesm2020/odx-angular-animations.mjs.map +1 -1
  286. package/fesm2020/odx-angular-cdk-active-indicator.mjs +142 -0
  287. package/fesm2020/odx-angular-cdk-active-indicator.mjs.map +1 -0
  288. package/fesm2020/odx-angular-cdk-checkbox-control.mjs +12 -14
  289. package/fesm2020/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  290. package/fesm2020/odx-angular-cdk-custom-form-control.mjs +22 -49
  291. package/fesm2020/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  292. package/fesm2020/odx-angular-cdk-dynamic-view.mjs +82 -33
  293. package/fesm2020/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  294. package/fesm2020/odx-angular-cdk-expandable.mjs +10 -10
  295. package/fesm2020/odx-angular-cdk-expandable.mjs.map +1 -1
  296. package/fesm2020/odx-angular-cdk-radio-group-control.mjs +13 -13
  297. package/fesm2020/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  298. package/fesm2020/odx-angular-components-accordion.mjs +13 -13
  299. package/fesm2020/odx-angular-components-accordion.mjs.map +1 -1
  300. package/fesm2020/odx-angular-components-action-group.mjs +3 -3
  301. package/fesm2020/odx-angular-components-action-group.mjs.map +1 -1
  302. package/fesm2020/odx-angular-components-area-header.mjs +13 -13
  303. package/fesm2020/odx-angular-components-area-header.mjs.map +1 -1
  304. package/fesm2020/odx-angular-components-avatar.mjs +3 -3
  305. package/fesm2020/odx-angular-components-avatar.mjs.map +1 -1
  306. package/fesm2020/odx-angular-components-badge.mjs +10 -10
  307. package/fesm2020/odx-angular-components-badge.mjs.map +1 -1
  308. package/fesm2020/odx-angular-components-button-group.mjs +3 -3
  309. package/fesm2020/odx-angular-components-button-group.mjs.map +1 -1
  310. package/fesm2020/odx-angular-components-button.mjs +4 -4
  311. package/fesm2020/odx-angular-components-button.mjs.map +1 -1
  312. package/fesm2020/odx-angular-components-checkbox.mjs +47 -7
  313. package/fesm2020/odx-angular-components-checkbox.mjs.map +1 -1
  314. package/fesm2020/odx-angular-components-chip.mjs +71 -0
  315. package/fesm2020/odx-angular-components-chip.mjs.map +1 -0
  316. package/fesm2020/odx-angular-components-circular-progress.mjs +103 -0
  317. package/fesm2020/odx-angular-components-circular-progress.mjs.map +1 -0
  318. package/fesm2020/odx-angular-components-content-box.mjs +13 -13
  319. package/fesm2020/odx-angular-components-content-box.mjs.map +1 -1
  320. package/fesm2020/odx-angular-components-form-field.mjs +52 -51
  321. package/fesm2020/odx-angular-components-form-field.mjs.map +1 -1
  322. package/fesm2020/odx-angular-components-header.mjs +13 -13
  323. package/fesm2020/odx-angular-components-header.mjs.map +1 -1
  324. package/fesm2020/odx-angular-components-icon.mjs +3 -3
  325. package/fesm2020/odx-angular-components-icon.mjs.map +1 -1
  326. package/fesm2020/odx-angular-components-link.mjs +3 -3
  327. package/fesm2020/odx-angular-components-link.mjs.map +1 -1
  328. package/fesm2020/odx-angular-components-list.mjs +78 -0
  329. package/fesm2020/odx-angular-components-list.mjs.map +1 -0
  330. package/fesm2020/odx-angular-components-loading-spinner.mjs +172 -0
  331. package/fesm2020/odx-angular-components-loading-spinner.mjs.map +1 -0
  332. package/fesm2020/odx-angular-components-logo.mjs +3 -3
  333. package/fesm2020/odx-angular-components-logo.mjs.map +1 -1
  334. package/fesm2020/odx-angular-components-main-menu.mjs +34 -23
  335. package/fesm2020/odx-angular-components-main-menu.mjs.map +1 -1
  336. package/fesm2020/odx-angular-components-modal.mjs +96 -65
  337. package/fesm2020/odx-angular-components-modal.mjs.map +1 -1
  338. package/fesm2020/odx-angular-components-progress.mjs +57 -0
  339. package/fesm2020/odx-angular-components-progress.mjs.map +1 -0
  340. package/fesm2020/odx-angular-components-radio-group.mjs +11 -11
  341. package/fesm2020/odx-angular-components-radio-group.mjs.map +1 -1
  342. package/fesm2020/odx-angular-components-rail-navigation.mjs +96 -0
  343. package/fesm2020/odx-angular-components-rail-navigation.mjs.map +1 -0
  344. package/fesm2020/odx-angular-components-switch.mjs +47 -7
  345. package/fesm2020/odx-angular-components-switch.mjs.map +1 -1
  346. package/fesm2020/odx-angular-components-toggle-button-group.mjs +26 -18
  347. package/fesm2020/odx-angular-components-toggle-button-group.mjs.map +1 -1
  348. package/fesm2020/odx-angular-rxjs.mjs +15 -6
  349. package/fesm2020/odx-angular-rxjs.mjs.map +1 -1
  350. package/fesm2020/odx-angular-utils.mjs +28 -2
  351. package/fesm2020/odx-angular-utils.mjs.map +1 -1
  352. package/fesm2020/odx-angular.mjs +38 -33
  353. package/fesm2020/odx-angular.mjs.map +1 -1
  354. package/lib/controllers/controller.d.ts +1 -2
  355. package/package.json +59 -2
  356. package/rxjs/index.d.ts +1 -1
  357. package/rxjs/lib/from-element-resize.d.ts +2 -0
  358. package/utils/lib/helpers/angular.d.ts +2 -1
  359. package/utils/lib/helpers/dom.d.ts +5 -1
  360. package/esm2020/rxjs/lib/mark-for-check.mjs +0 -5
  361. package/rxjs/lib/mark-for-check.d.ts +0 -3
@@ -1,5 +1,5 @@
1
1
  import { ɵwithMultipleDescriptors } from '@odx/angular/internal';
2
- import { TemplateRef, inject, ChangeDetectorRef, ElementRef, InjectionToken } from '@angular/core';
2
+ import { TemplateRef, inject, ChangeDetectorRef, Injector, ElementRef, InjectionToken } from '@angular/core';
3
3
  import { Subject, takeUntil, tap } from 'rxjs';
4
4
  import { deepmerge } from 'deepmerge-ts';
5
5
 
@@ -56,6 +56,21 @@ function booleanToOptionalAttributeString(state) {
56
56
  function px(value) {
57
57
  return isNumber(value) ? `${Math.round(value)}px` : '0px';
58
58
  }
59
+ function cssTranslate(x, y) {
60
+ return `translate3d(${x}, ${y}, 0)`;
61
+ }
62
+ function disableCSSTransitions(element, disabled) {
63
+ if (disabled) {
64
+ applyStyles(element, { transition: 'none' });
65
+ }
66
+ else {
67
+ forceLayoutReflow(element);
68
+ applyStyles(element, { transition: null });
69
+ }
70
+ }
71
+ function forceLayoutReflow(element) {
72
+ element.offsetHeight;
73
+ }
59
74
  function setAttribute(element, attribute, value) {
60
75
  if (isString(value)) {
61
76
  element.setAttribute(attribute, value);
@@ -64,6 +79,14 @@ function setAttribute(element, attribute, value) {
64
79
  element.toggleAttribute(attribute, !!value);
65
80
  }
66
81
  }
82
+ function createResizeObserver(callback) {
83
+ try {
84
+ return new ResizeObserver(callback);
85
+ }
86
+ catch {
87
+ return { observe: () => void 0, disconnect: () => void 0, unobserve: () => void 0 };
88
+ }
89
+ }
67
90
 
68
91
  function untilDestroyed() {
69
92
  const destroyed$$ = new Subject();
@@ -98,6 +121,9 @@ function reactiveAttributeBinding(source$, ...attributes) {
98
121
  .subscribe();
99
122
  }
100
123
  }
124
+ function getInjector() {
125
+ return inject(Injector);
126
+ }
101
127
  function injectElement() {
102
128
  return inject(ElementRef);
103
129
  }
@@ -143,5 +169,5 @@ function createModuleConfigTokens(name, prefix, defaultValue) {
143
169
  * Generated bundle index. Do not edit.
144
170
  */
145
171
 
146
- export { Transform, applyStyles, booleanToAttributeString, booleanToOptionalAttributeString, createModuleConfigTokens, hasChanged, injectElement, isBoolean, isComponent, isFunction, isNonEmptyString, isNumber, isPresent, isString, isTemplateRef, isViewContainer, pluckFromArray, provideModuleConfig, px, reactiveAttributeBinding, reactiveClassBinding, setAttribute, untilDestroyed };
172
+ export { Transform, applyStyles, booleanToAttributeString, booleanToOptionalAttributeString, createModuleConfigTokens, createResizeObserver, cssTranslate, disableCSSTransitions, forceLayoutReflow, getInjector, hasChanged, injectElement, isBoolean, isComponent, isFunction, isNonEmptyString, isNumber, isPresent, isString, isTemplateRef, isViewContainer, pluckFromArray, provideModuleConfig, px, reactiveAttributeBinding, reactiveClassBinding, setAttribute, untilDestroyed };
147
173
  //# sourceMappingURL=odx-angular-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-utils.mjs","sources":["../../../../libs/angular/utils/src/lib/decorators/transform.ts","../../../../libs/angular/utils/src/lib/helpers/type-guards.ts","../../../../libs/angular/utils/src/lib/helpers/dom.ts","../../../../libs/angular/utils/src/lib/helpers/until-destroyed.ts","../../../../libs/angular/utils/src/lib/helpers/angular.ts","../../../../libs/angular/utils/src/lib/helpers/array.ts","../../../../libs/angular/utils/src/lib/helpers/ng-changes.ts","../../../../libs/angular/utils/src/lib/helpers/provide-module-config.ts","../../../../libs/angular/utils/src/odx-angular-utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ɵwithMultipleDescriptors } from '@odx/angular/internal';\n\ntype TransformFn<Klass = any, R = any> = (this: Klass, value: R) => R;\n\nexport function Transform(transformer: TransformFn) {\n return (target: any, propertyKey: PropertyKey) => {\n const propertySymbol = Symbol(`__${propertyKey.toString()}ClassTmpl__`);\n const descriptors = ɵwithMultipleDescriptors(target, propertyKey, propertySymbol);\n\n function setter(this: any, value: any) {\n this[propertySymbol] = transformer.apply(this, [value]);\n }\n\n descriptors.addSetter(setter);\n descriptors.init();\n };\n}\n","import { TemplateRef, Type, ViewContainerRef } from '@angular/core';\n\nexport function isViewContainer(value: unknown): value is ViewContainerRef {\n return isFunction((value as ViewContainerRef)?.createComponent);\n}\n\nexport function isTemplateRef<T = unknown>(value: unknown): value is TemplateRef<T> {\n return value instanceof TemplateRef;\n}\n\nexport function isComponent<T = unknown>(value: unknown): value is Type<T> {\n return isFunction(value);\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nexport function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value.length > 0;\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return value === true || value === false;\n}\n\nexport function isFunction(value: unknown): value is CallableFunction {\n return typeof value === 'function';\n}\n\nexport function isPresent<T>(value: T | null | undefined): value is NonNullable<T> {\n return value !== null && value !== undefined;\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","import { isNumber, isString } from './type-guards';\n\nexport function applyStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration | Record<keyof CSSStyleDeclaration, string | null>>): void {\n Object.assign(element.style, styles);\n}\n\nexport function booleanToAttributeString(state: boolean): string {\n return booleanToOptionalAttributeString(state) ?? 'false';\n}\n\nexport function booleanToOptionalAttributeString(state: boolean): string | null {\n return state ? 'true' : null;\n}\n\nexport function px(value: unknown): string {\n return isNumber(value) ? `${Math.round(value)}px` : '0px';\n}\n\nexport function setAttribute(element: HTMLElement, attribute: string, value?: unknown) {\n if (isString(value)) {\n element.setAttribute(attribute, value);\n } else {\n element.toggleAttribute(attribute, !!value);\n }\n}\n","import { ChangeDetectorRef, inject, ViewRef } from '@angular/core';\nimport { MonoTypeOperatorFunction, Subject, takeUntil } from 'rxjs';\n\nexport function untilDestroyed(): <T>() => MonoTypeOperatorFunction<T> {\n const destroyed$$ = new Subject<void>();\n const viewRef = inject(ChangeDetectorRef) as ViewRef;\n\n function onDestroy() {\n destroyed$$.next();\n destroyed$$.complete();\n }\n\n Promise.resolve().then(() => (viewRef.destroyed ? onDestroy() : viewRef.onDestroy(onDestroy)));\n\n return <T>() => takeUntil<T>(destroyed$$.asObservable());\n}\n","import { ElementRef, inject } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, tap } from 'rxjs';\nimport { setAttribute } from './dom';\nimport { untilDestroyed } from './until-destroyed';\n\nfunction reactiveBinding<T>(updateFn: (state: unknown) => void): MonoTypeOperatorFunction<T> {\n const takeUntilDestroyed = untilDestroyed();\n\n return (source$: Observable<T>) =>\n source$.pipe(\n tap((state) => updateFn(state)),\n takeUntilDestroyed()\n );\n}\n\nexport function reactiveClassBinding<T>(source$: Observable<T> | null | undefined, cssClass: string): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$.pipe(reactiveBinding((state) => nativeElement.classList.toggle(cssClass, !!state))).subscribe();\n }\n}\n\nexport function reactiveAttributeBinding<T>(source$: Observable<T> | null | undefined, ...attributes: string[]): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$\n .pipe(\n reactiveBinding((value) => {\n for (const attribute of attributes) {\n setAttribute(nativeElement, attribute, value);\n }\n })\n )\n .subscribe();\n }\n}\n\nexport function injectElement<T = HTMLElement>(): ElementRef<T> {\n return inject<ElementRef<T>>(ElementRef);\n}\n","export function pluckFromArray<T, K extends keyof T>(arr: T[], key: K): Array<T[K]> {\n return arr.map((value) => value[key]);\n}\n","import { GetProperties } from '../types';\n\nexport type NgChanges<C, Properties = GetProperties<C>> = {\n [Key in keyof Properties]: {\n previousValue: Properties[Key];\n currentValue: Properties[Key];\n firstChange: boolean;\n isFirstChange(): boolean;\n };\n};\n\nexport function hasChanged<U extends Record<string, unknown>, T extends NgChanges<U>, K extends keyof T>(\n changes: T,\n keyOrKeys: K | K[],\n ignoreFirstChange = true\n): boolean {\n if (Array.isArray(keyOrKeys)) {\n for (const key of keyOrKeys) {\n if (hasChanged(changes, key, ignoreFirstChange)) {\n return true;\n }\n }\n return false;\n } else {\n return keyOrKeys in changes && (!ignoreFirstChange || !changes[keyOrKeys].isFirstChange());\n }\n}\n","import { FactoryProvider, inject, InjectionToken, Type, ValueProvider } from '@angular/core';\nimport { deepmerge } from 'deepmerge-ts';\n\ninterface ModuleConfigFactoryProvider<T, D extends ModuleConfigDependencies> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useFactory: (...args: { [I in keyof D]: D[I] extends Type<unknown> ? InstanceType<D[I]> : D[I] extends InjectionToken<unknown> ? any : never }) => T;\n deps?: [...D];\n}\n\nexport type ModuleConfigDependencies<T = unknown> = ReadonlyArray<Type<T> | InjectionToken<T>>;\nexport type ModuleConfigProvider<T = unknown, D extends ModuleConfigDependencies = []> = ModuleConfigFactoryProvider<T, D> | T;\n\nexport function provideModuleConfig<T, D extends ModuleConfigDependencies = ModuleConfigDependencies>(\n token: InjectionToken<T> | string,\n config: ModuleConfigProvider<T, D>\n): FactoryProvider | ValueProvider {\n if ('useFactory' in config) {\n return { provide: token, useFactory: config.useFactory, deps: config.deps };\n }\n return { provide: token, useValue: config };\n}\n\nexport function createModuleConfigTokens<T, N extends string>(name: N, prefix: string, defaultValue: T) {\n const moduleConfig = `${name}ModuleConfig` as const;\n const defaultModuleConfig = `${name}DefaultModuleConfig` as const;\n const injectModuleConfig = `inject${name}ModuleConfig` as const;\n const tokenName = `${prefix}::${moduleConfig}`;\n const token = new InjectionToken<Partial<T>>(tokenName, { providedIn: 'root', factory: () => defaultValue });\n\n return {\n [moduleConfig]: token,\n [defaultModuleConfig]: defaultValue,\n [injectModuleConfig]: () => deepmerge(defaultValue, inject(token)),\n } as Record<typeof moduleConfig, InjectionToken<Partial<T>>> & Record<typeof defaultModuleConfig, T> & Record<typeof injectModuleConfig, () => T>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-utils.mjs","sources":["../../../../libs/angular/utils/src/lib/decorators/transform.ts","../../../../libs/angular/utils/src/lib/helpers/type-guards.ts","../../../../libs/angular/utils/src/lib/helpers/dom.ts","../../../../libs/angular/utils/src/lib/helpers/until-destroyed.ts","../../../../libs/angular/utils/src/lib/helpers/angular.ts","../../../../libs/angular/utils/src/lib/helpers/array.ts","../../../../libs/angular/utils/src/lib/helpers/ng-changes.ts","../../../../libs/angular/utils/src/lib/helpers/provide-module-config.ts","../../../../libs/angular/utils/src/odx-angular-utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ɵwithMultipleDescriptors } from '@odx/angular/internal';\n\ntype TransformFn<Klass = any, R = any> = (this: Klass, value: R) => R;\n\nexport function Transform(transformer: TransformFn) {\n return (target: any, propertyKey: PropertyKey) => {\n const propertySymbol = Symbol(`__${propertyKey.toString()}ClassTmpl__`);\n const descriptors = ɵwithMultipleDescriptors(target, propertyKey, propertySymbol);\n\n function setter(this: any, value: any) {\n this[propertySymbol] = transformer.apply(this, [value]);\n }\n\n descriptors.addSetter(setter);\n descriptors.init();\n };\n}\n","import { TemplateRef, Type, ViewContainerRef } from '@angular/core';\n\nexport function isViewContainer(value: unknown): value is ViewContainerRef {\n return isFunction((value as ViewContainerRef)?.createComponent);\n}\n\nexport function isTemplateRef<T = unknown>(value: unknown): value is TemplateRef<T> {\n return value instanceof TemplateRef;\n}\n\nexport function isComponent<T = unknown>(value: unknown): value is Type<T> {\n return isFunction(value);\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nexport function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value.length > 0;\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return value === true || value === false;\n}\n\nexport function isFunction(value: unknown): value is CallableFunction {\n return typeof value === 'function';\n}\n\nexport function isPresent<T>(value: T | null | undefined): value is NonNullable<T> {\n return value !== null && value !== undefined;\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","import { isNumber, isString } from './type-guards';\n\nexport function applyStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration | Record<keyof CSSStyleDeclaration, string | null>>): void {\n Object.assign(element.style, styles);\n}\n\nexport function booleanToAttributeString(state: boolean): string {\n return booleanToOptionalAttributeString(state) ?? 'false';\n}\n\nexport function booleanToOptionalAttributeString(state: boolean): string | null {\n return state ? 'true' : null;\n}\n\nexport function px(value: unknown): `${number}px` {\n return isNumber(value) ? `${Math.round(value)}px` : '0px';\n}\n\nexport function cssTranslate(x: string | 0, y: string | 0): `translate3d(${string | 0}, ${string | 0}, 0)` {\n return `translate3d(${x}, ${y}, 0)`;\n}\n\nexport function disableCSSTransitions(element: HTMLElement, disabled: boolean): void {\n if (disabled) {\n applyStyles(element, { transition: 'none' });\n } else {\n forceLayoutReflow(element);\n applyStyles(element, { transition: null });\n }\n}\n\nexport function forceLayoutReflow(element: HTMLElement): void {\n element.offsetHeight;\n}\n\nexport function setAttribute(element: HTMLElement, attribute: string, value?: unknown) {\n if (isString(value)) {\n element.setAttribute(attribute, value);\n } else {\n element.toggleAttribute(attribute, !!value);\n }\n}\n\nexport function createResizeObserver(callback: ResizeObserverCallback): ResizeObserver {\n try {\n return new ResizeObserver(callback);\n } catch {\n return { observe: () => void 0, disconnect: () => void 0, unobserve: () => void 0 };\n }\n}\n","import { ChangeDetectorRef, inject, ViewRef } from '@angular/core';\nimport { MonoTypeOperatorFunction, Subject, takeUntil } from 'rxjs';\n\nexport function untilDestroyed(): <T>() => MonoTypeOperatorFunction<T> {\n const destroyed$$ = new Subject<void>();\n const viewRef = inject(ChangeDetectorRef) as ViewRef;\n\n function onDestroy() {\n destroyed$$.next();\n destroyed$$.complete();\n }\n\n Promise.resolve().then(() => (viewRef.destroyed ? onDestroy() : viewRef.onDestroy(onDestroy)));\n\n return <T>() => takeUntil<T>(destroyed$$.asObservable());\n}\n","import { ElementRef, inject, Injector } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, tap } from 'rxjs';\nimport { setAttribute } from './dom';\nimport { untilDestroyed } from './until-destroyed';\n\nfunction reactiveBinding<T>(updateFn: (state: unknown) => void): MonoTypeOperatorFunction<T> {\n const takeUntilDestroyed = untilDestroyed();\n\n return (source$: Observable<T>) =>\n source$.pipe(\n tap((state) => updateFn(state)),\n takeUntilDestroyed()\n );\n}\n\nexport function reactiveClassBinding<T>(source$: Observable<T> | null | undefined, cssClass: string): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$.pipe(reactiveBinding((state) => nativeElement.classList.toggle(cssClass, !!state))).subscribe();\n }\n}\n\nexport function reactiveAttributeBinding<T>(source$: Observable<T> | null | undefined, ...attributes: string[]): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$\n .pipe(\n reactiveBinding((value) => {\n for (const attribute of attributes) {\n setAttribute(nativeElement, attribute, value);\n }\n })\n )\n .subscribe();\n }\n}\n\nexport function getInjector(): Injector {\n return inject(Injector);\n}\n\nexport function injectElement<T = HTMLElement>(): ElementRef<T> {\n return inject<ElementRef<T>>(ElementRef);\n}\n","export function pluckFromArray<T, K extends keyof T>(arr: T[], key: K): Array<T[K]> {\n return arr.map((value) => value[key]);\n}\n","import { GetProperties } from '../types';\n\nexport type NgChanges<C, Properties = GetProperties<C>> = {\n [Key in keyof Properties]: {\n previousValue: Properties[Key];\n currentValue: Properties[Key];\n firstChange: boolean;\n isFirstChange(): boolean;\n };\n};\n\nexport function hasChanged<U extends Record<string, unknown>, T extends NgChanges<U>, K extends keyof T>(\n changes: T,\n keyOrKeys: K | K[],\n ignoreFirstChange = true\n): boolean {\n if (Array.isArray(keyOrKeys)) {\n for (const key of keyOrKeys) {\n if (hasChanged(changes, key, ignoreFirstChange)) {\n return true;\n }\n }\n return false;\n } else {\n return keyOrKeys in changes && (!ignoreFirstChange || !changes[keyOrKeys].isFirstChange());\n }\n}\n","import { FactoryProvider, inject, InjectionToken, Type, ValueProvider } from '@angular/core';\nimport { deepmerge } from 'deepmerge-ts';\n\ninterface ModuleConfigFactoryProvider<T, D extends ModuleConfigDependencies> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useFactory: (...args: { [I in keyof D]: D[I] extends Type<unknown> ? InstanceType<D[I]> : D[I] extends InjectionToken<unknown> ? any : never }) => T;\n deps?: [...D];\n}\n\nexport type ModuleConfigDependencies<T = unknown> = ReadonlyArray<Type<T> | InjectionToken<T>>;\nexport type ModuleConfigProvider<T = unknown, D extends ModuleConfigDependencies = []> = ModuleConfigFactoryProvider<T, D> | T;\n\nexport function provideModuleConfig<T, D extends ModuleConfigDependencies = ModuleConfigDependencies>(\n token: InjectionToken<T> | string,\n config: ModuleConfigProvider<T, D>\n): FactoryProvider | ValueProvider {\n if ('useFactory' in config) {\n return { provide: token, useFactory: config.useFactory, deps: config.deps };\n }\n return { provide: token, useValue: config };\n}\n\nexport function createModuleConfigTokens<T, N extends string>(name: N, prefix: string, defaultValue: T) {\n const moduleConfig = `${name}ModuleConfig` as const;\n const defaultModuleConfig = `${name}DefaultModuleConfig` as const;\n const injectModuleConfig = `inject${name}ModuleConfig` as const;\n const tokenName = `${prefix}::${moduleConfig}`;\n const token = new InjectionToken<Partial<T>>(tokenName, { providedIn: 'root', factory: () => defaultValue });\n\n return {\n [moduleConfig]: token,\n [defaultModuleConfig]: defaultValue,\n [injectModuleConfig]: () => deepmerge(defaultValue, inject(token)),\n } as Record<typeof moduleConfig, InjectionToken<Partial<T>>> & Record<typeof defaultModuleConfig, T> & Record<typeof injectModuleConfig, () => T>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,25 +1,28 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, InjectionToken, inject, ChangeDetectorRef, forwardRef, Input, EventEmitter, Output, NgModule, Injectable } from '@angular/core';
3
- import { markForCheck, fromEvents } from '@odx/angular/rxjs';
2
+ import { inject, ChangeDetectorRef, Directive, InjectionToken, forwardRef, Input, EventEmitter, Output, NgModule, Injectable } from '@angular/core';
4
3
  import { pluckFromArray, isPresent, booleanToOptionalAttributeString } from '@odx/angular/utils';
5
- import { merge, Subject, share, map, distinctUntilChanged, shareReplay, startWith } from 'rxjs';
4
+ import { merge, tap, Subject, shareReplay, map, distinctUntilChanged, startWith } from 'rxjs';
6
5
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
7
6
  import { CommonModule, DOCUMENT } from '@angular/common';
7
+ import { fromEvents } from '@odx/angular/rxjs';
8
8
 
9
- function detectControllerChanges(changeDetector, ...controllers) {
10
- return controllerChanges(...controllers).pipe(markForCheck(changeDetector));
11
- }
12
- function controllerChanges(...controllers) {
9
+ function controllerChanges(controllers) {
13
10
  const changes$ = pluckFromArray(controllers.filter(isPresent), 'change$');
14
11
  return merge(...changes$);
15
12
  }
13
+ function detectControllerChanges(...controllers) {
14
+ const changeDetector = inject(ChangeDetectorRef);
15
+ return controllerChanges(controllers).pipe(tap(() => changeDetector.markForCheck()));
16
+ }
16
17
  class Controller {
17
18
  constructor() {
18
19
  this.change$$ = new Subject();
19
- this.change$ = this.change$$.pipe(share());
20
+ this.change$ = this.change$$.pipe(shareReplay({ refCount: true }));
20
21
  }
21
22
  static setup(controller, changeDetector) {
22
- detectControllerChanges(changeDetector, controller).subscribe();
23
+ controllerChanges([controller])
24
+ .pipe(tap(() => changeDetector.markForCheck()))
25
+ .subscribe();
23
26
  return controller;
24
27
  }
25
28
  ngOnChanges() {
@@ -32,9 +35,9 @@ class Controller {
32
35
  this.change$$.next();
33
36
  }
34
37
  }
35
- Controller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: Controller, deps: [], target: i0.ɵɵFactoryTarget.Directive });
36
- Controller.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: Controller, usesOnChanges: true, ngImport: i0 });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: Controller, decorators: [{
38
+ Controller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: Controller, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
+ Controller.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: Controller, usesOnChanges: true, ngImport: i0 });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: Controller, decorators: [{
38
41
  type: Directive
39
42
  }] });
40
43
 
@@ -60,8 +63,9 @@ class DisabledController extends Controller {
60
63
  this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';
61
64
  }
62
65
  set disabled(value) {
63
- if (this.isDisabled !== value) {
64
- this.isDisabled = coerceBooleanProperty(value);
66
+ const coercedValue = coerceBooleanProperty(value);
67
+ if (this.isDisabled !== coercedValue) {
68
+ this.isDisabled = coercedValue;
65
69
  this.hasDisabledAttribute = this.isDisabled && ELEMENTS_WITH_DISABLED_ATTRIBUTE[this.nodeName];
66
70
  }
67
71
  }
@@ -86,14 +90,14 @@ class DisabledController extends Controller {
86
90
  this.ngOnChanges();
87
91
  }
88
92
  }
89
- DisabledController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: DisabledController, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
90
- DisabledController.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: DisabledController, isStandalone: true, selector: "[disabled]", inputs: { disabled: "disabled" }, host: { properties: { "attr.aria-disabled": "ariaDisabled", "attr.disabled": "hasDisabledAttribute || null" } }, providers: [
93
+ DisabledController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: DisabledController, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
94
+ DisabledController.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: DisabledController, isStandalone: true, selector: "[disabled]", inputs: { disabled: "disabled" }, host: { properties: { "attr.aria-disabled": "ariaDisabled", "attr.disabled": "hasDisabledAttribute || null" } }, providers: [
91
95
  {
92
96
  provide: DISABLED_INTERNAL_CONTROLLER,
93
97
  useExisting: forwardRef(() => DisabledController),
94
98
  },
95
99
  ], usesInheritance: true, ngImport: i0 });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: DisabledController, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: DisabledController, decorators: [{
97
101
  type: Directive,
98
102
  args: [{
99
103
  standalone: true,
@@ -131,8 +135,9 @@ class ReadonlyController extends Controller {
131
135
  this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';
132
136
  }
133
137
  set readonly(value) {
134
- if (this.isReadonly !== value) {
135
- this.isReadonly = coerceBooleanProperty(value);
138
+ const coercedValue = coerceBooleanProperty(value);
139
+ if (this.isReadonly !== coercedValue) {
140
+ this.isReadonly = coercedValue;
136
141
  this.hasReadonlyAttribute = this.isReadonly && ELEMENTS_WITH_READONLY_ATTRIBUTE[this.nodeName];
137
142
  }
138
143
  }
@@ -150,14 +155,14 @@ class ReadonlyController extends Controller {
150
155
  };
151
156
  }
152
157
  }
153
- ReadonlyController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ReadonlyController, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
154
- ReadonlyController.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: ReadonlyController, isStandalone: true, selector: "[readonly]", inputs: { readonly: "readonly" }, host: { properties: { "attr.readonly": "hasReadonlyAttribute || null" } }, providers: [
158
+ ReadonlyController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ReadonlyController, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
159
+ ReadonlyController.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: ReadonlyController, isStandalone: true, selector: "[readonly]", inputs: { readonly: "readonly" }, host: { properties: { "attr.readonly": "hasReadonlyAttribute || null" } }, providers: [
155
160
  {
156
161
  provide: READONLY_INTERNAL_CONTROLLER,
157
162
  useExisting: forwardRef(() => ReadonlyController),
158
163
  },
159
164
  ], usesInheritance: true, ngImport: i0 });
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ReadonlyController, decorators: [{
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ReadonlyController, decorators: [{
161
166
  type: Directive,
162
167
  args: [{
163
168
  standalone: true,
@@ -218,9 +223,9 @@ class ClickOutsideDirective {
218
223
  }, 0);
219
224
  }
220
225
  }
221
- ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
222
- ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: ClickOutsideDirective, isStandalone: true, selector: "[odxClickOutside]", inputs: { odxClickOutsideActive: "odxClickOutsideActive" }, outputs: { odxClickOutside: "odxClickOutside" }, usesOnChanges: true, ngImport: i0 });
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ClickOutsideDirective, decorators: [{
226
+ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
227
+ ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: ClickOutsideDirective, isStandalone: true, selector: "[odxClickOutside]", inputs: { odxClickOutsideActive: "odxClickOutsideActive" }, outputs: { odxClickOutside: "odxClickOutside" }, usesOnChanges: true, ngImport: i0 });
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ClickOutsideDirective, decorators: [{
224
229
  type: Directive,
225
230
  args: [{
226
231
  standalone: true,
@@ -236,10 +241,10 @@ const controllers = [DisabledController, ReadonlyController];
236
241
  const modules = [ClickOutsideDirective];
237
242
  class CoreModule {
238
243
  }
239
- CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
240
- CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.8", ngImport: i0, type: CoreModule, imports: [DisabledController, ReadonlyController, ClickOutsideDirective], exports: [CommonModule, DisabledController, ReadonlyController, ClickOutsideDirective] });
241
- CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CoreModule, imports: [CommonModule] });
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CoreModule, decorators: [{
244
+ CoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
245
+ CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.10", ngImport: i0, type: CoreModule, imports: [DisabledController, ReadonlyController, ClickOutsideDirective], exports: [CommonModule, DisabledController, ReadonlyController, ClickOutsideDirective] });
246
+ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: CoreModule, imports: [CommonModule] });
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: CoreModule, decorators: [{
243
248
  type: NgModule,
244
249
  args: [{
245
250
  imports: [...controllers, ...modules],
@@ -265,9 +270,9 @@ class WindowRef {
265
270
  return this.location.reload();
266
271
  }
267
272
  }
268
- WindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: WindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
269
- WindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: WindowRef, providedIn: 'root' });
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: WindowRef, decorators: [{
273
+ WindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: WindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
274
+ WindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: WindowRef, providedIn: 'root' });
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: WindowRef, decorators: [{
271
276
  type: Injectable,
272
277
  args: [{
273
278
  providedIn: 'root',
@@ -278,5 +283,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
278
283
  * Generated bundle index. Do not edit.
279
284
  */
280
285
 
281
- export { ClickOutsideDirective, Controller, CoreModule, DISABLED_CONTROLLER, DisabledController, ReadonlyController, WindowRef, controllerChanges, detectControllerChanges };
286
+ export { ClickOutsideDirective, Controller, CoreModule, DISABLED_CONTROLLER, DisabledController, ReadonlyController, WindowRef, detectControllerChanges };
282
287
  //# sourceMappingURL=odx-angular.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular.mjs","sources":["../../../../libs/angular/src/lib/controllers/controller.ts","../../../../libs/angular/src/lib/controllers/disabled.controller.ts","../../../../libs/angular/src/lib/controllers/readonly.controller.ts","../../../../libs/angular/src/lib/directives/click-outside.directive.ts","../../../../libs/angular/src/lib/core.module.ts","../../../../libs/angular/src/lib/services/window-ref.ts","../../../../libs/angular/src/odx-angular.ts"],"sourcesContent":["import { ChangeDetectorRef, Directive, OnChanges, OnDestroy } from '@angular/core';\nimport { markForCheck } from '@odx/angular/rxjs';\nimport { isPresent, pluckFromArray } from '@odx/angular/utils';\nimport { merge, Observable, share, Subject } from 'rxjs';\n\nexport function detectControllerChanges(changeDetector: ChangeDetectorRef, ...controllers: Array<Controller | undefined | null>): Observable<void> {\n return controllerChanges(...controllers).pipe(markForCheck(changeDetector));\n}\n\nexport function controllerChanges(...controllers: Array<Controller | undefined | null>): Observable<void> {\n const changes$ = pluckFromArray(controllers.filter(isPresent), 'change$');\n\n return merge(...changes$);\n}\n\n@Directive()\nexport abstract class Controller implements OnChanges, OnDestroy {\n private readonly change$$ = new Subject<void>();\n\n public readonly change$ = this.change$$.pipe(share());\n\n public static setup(controller: Controller | null, changeDetector: ChangeDetectorRef): Controller | null {\n detectControllerChanges(changeDetector, controller).subscribe();\n\n return controller;\n }\n\n public ngOnChanges(): void {\n this.triggerControllerChange();\n }\n\n public ngOnDestroy(): void {\n this.change$$.complete();\n }\n\n protected triggerControllerChange() {\n this.change$$.next();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Directive, ElementRef, forwardRef, inject, InjectionToken, Input, Provider } from '@angular/core';\nimport { booleanToOptionalAttributeString } from '@odx/angular/utils';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nconst ELEMENTS_WITH_DISABLED_ATTRIBUTE = {\n button: true,\n fieldset: true,\n input: true,\n optgroup: true,\n option: true,\n select: true,\n textarea: true,\n} as Record<string, boolean>;\n\nexport const DISABLED_CONTROLLER = new InjectionToken<DisabledController>('@odx/angular::DisabledWatchedController');\nconst DISABLED_INTERNAL_CONTROLLER = new InjectionToken<DisabledController | null>('@odx/angular::DisabledController', {\n factory: () => new DisabledController(null),\n});\n\n@Directive({\n standalone: true,\n selector: '[disabled]',\n providers: [\n {\n provide: DISABLED_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => DisabledController),\n },\n ],\n host: {\n '[attr.aria-disabled]': 'ariaDisabled',\n '[attr.disabled]': 'hasDisabledAttribute || null',\n },\n})\nexport class DisabledController extends Controller {\n public static ngAcceptInputType_disabled: BooleanInput;\n\n private readonly nodeName: string;\n private isDisabled = false;\n\n protected hasDisabledAttribute = false;\n public readonly isDisabled$ = this.change$.pipe(\n map(() => this.isDisabled),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n\n @Input()\n public set disabled(value: unknown) {\n if (this.isDisabled !== value) {\n this.isDisabled = coerceBooleanProperty(value);\n this.hasDisabledAttribute = this.isDisabled && ELEMENTS_WITH_DISABLED_ATTRIBUTE[this.nodeName];\n }\n }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get ariaDisabled(): string | null {\n return booleanToOptionalAttributeString(this.hasDisabledAttribute);\n }\n\n constructor(element: ElementRef<HTMLElement> | null) {\n super();\n this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';\n }\n\n public static inject(): DisabledController | null {\n return inject(DISABLED_CONTROLLER, { optional: true });\n }\n\n public static connect(): Provider {\n return {\n provide: DISABLED_CONTROLLER,\n useFactory: Controller.setup,\n deps: [DISABLED_INTERNAL_CONTROLLER, ChangeDetectorRef],\n };\n }\n\n public setDisabledState(state: boolean): void {\n this.disabled = state;\n this.ngOnChanges();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Directive, ElementRef, forwardRef, inject, InjectionToken, Input, Provider } from '@angular/core';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nconst ELEMENTS_WITH_READONLY_ATTRIBUTE = {\n input: true,\n textarea: true,\n select: true,\n} as Record<string, boolean>;\n\nconst READONLY_CONTROLLER = new InjectionToken<ReadonlyController>('@odx/angular::ReadonlyWatchedController');\nconst READONLY_INTERNAL_CONTROLLER = new InjectionToken<ReadonlyController | null>('@odx/angular::ReadonlyController', {\n factory: () => new ReadonlyController(null),\n});\n\n@Directive({\n standalone: true,\n selector: '[readonly]',\n providers: [\n {\n provide: READONLY_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => ReadonlyController),\n },\n ],\n host: {\n '[attr.readonly]': 'hasReadonlyAttribute || null',\n },\n})\nexport class ReadonlyController extends Controller {\n public static ngAcceptInputType_readonly: BooleanInput;\n\n private readonly nodeName: string;\n private isReadonly = false;\n\n protected hasReadonlyAttribute = false;\n\n public readonly isReadonly$ = this.change$.pipe(\n map(() => this.isReadonly),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n\n @Input()\n public set readonly(value: unknown) {\n if (this.isReadonly !== value) {\n this.isReadonly = coerceBooleanProperty(value);\n this.hasReadonlyAttribute = this.isReadonly && ELEMENTS_WITH_READONLY_ATTRIBUTE[this.nodeName];\n }\n }\n public get readonly(): boolean {\n return this.isReadonly;\n }\n\n constructor(element: ElementRef<HTMLElement> | null) {\n super();\n this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';\n }\n\n public static inject(): ReadonlyController | null {\n return inject(READONLY_CONTROLLER, { optional: true });\n }\n\n public static connect(): Provider {\n return {\n provide: READONLY_CONTROLLER,\n useFactory: Controller.setup,\n deps: [READONLY_INTERNAL_CONTROLLER, ChangeDetectorRef],\n };\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { NgChanges } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n selector: '[odxClickOutside]',\n})\nexport class ClickOutsideDirective implements OnChanges, OnInit, OnDestroy {\n private listener?: () => void;\n\n @Input()\n public odxClickOutsideActive = true;\n\n @Output()\n public readonly odxClickOutside = new EventEmitter<MouseEvent>();\n\n constructor(private readonly element: ElementRef<HTMLElement>, private readonly renderer: Renderer2) {\n this.odxClickOutsideActive = true;\n }\n\n public ngOnInit(): void {\n if (this.odxClickOutsideActive) {\n this.registerHandler();\n }\n }\n\n public ngOnChanges({ odxClickOutsideActive: clickOutsideActive }: NgChanges<ClickOutsideDirective>): void {\n if (!clickOutsideActive?.firstChange && clickOutsideActive?.previousValue !== clickOutsideActive?.currentValue) {\n if (clickOutsideActive?.currentValue) {\n this.registerHandler();\n } else {\n this.destroy();\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n private destroy() {\n if (this.listener) {\n this.listener();\n this.listener = undefined;\n }\n }\n\n private registerHandler() {\n setTimeout(() => {\n this.listener ??= this.renderer.listen('document', 'click', (event) => {\n if (this.odxClickOutsideActive && this.element?.nativeElement.isConnected && !this.element?.nativeElement.contains(event.target)) {\n this.odxClickOutside.emit(event);\n }\n });\n }, 0);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DisabledController, ReadonlyController } from './controllers';\nimport { ClickOutsideDirective } from './directives';\n\nconst controllers = [DisabledController, ReadonlyController];\nconst modules = [ClickOutsideDirective];\n\n@NgModule({\n imports: [...controllers, ...modules],\n exports: [CommonModule, ...controllers, ...modules],\n})\nexport class CoreModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { fromEvents } from '@odx/angular/rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowRef {\n public readonly nativeWindow = inject(DOCUMENT).defaultView ?? window;\n public readonly isOnline$ = fromEvents(this.nativeWindow, 'offline', 'online').pipe(\n startWith(null),\n map(() => this.nativeWindow.navigator.onLine),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n\n public get location(): Location {\n return this.nativeWindow.location;\n }\n\n public getLanguage(): string {\n return this.nativeWindow.navigator.language;\n }\n\n public getOrigin(): string {\n return this.location.origin;\n }\n\n public reloadPage(): void {\n return this.location.reload();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular.mjs","sources":["../../../../libs/angular/src/lib/controllers/controller.ts","../../../../libs/angular/src/lib/controllers/disabled.controller.ts","../../../../libs/angular/src/lib/controllers/readonly.controller.ts","../../../../libs/angular/src/lib/directives/click-outside.directive.ts","../../../../libs/angular/src/lib/core.module.ts","../../../../libs/angular/src/lib/services/window-ref.ts","../../../../libs/angular/src/odx-angular.ts"],"sourcesContent":["import { ChangeDetectorRef, Directive, inject, OnChanges, OnDestroy } from '@angular/core';\nimport { isPresent, pluckFromArray } from '@odx/angular/utils';\nimport { merge, Observable, shareReplay, Subject, tap } from 'rxjs';\n\nfunction controllerChanges(controllers: Array<Controller | undefined | null>): Observable<void> {\n const changes$ = pluckFromArray(controllers.filter(isPresent), 'change$');\n\n return merge(...changes$);\n}\n\nexport function detectControllerChanges(...controllers: Array<Controller | undefined | null>): Observable<void> {\n const changeDetector = inject(ChangeDetectorRef);\n\n return controllerChanges(controllers).pipe(tap(() => changeDetector.markForCheck()));\n}\n\n@Directive()\nexport abstract class Controller implements OnChanges, OnDestroy {\n private readonly change$$ = new Subject<void>();\n\n public readonly change$ = this.change$$.pipe(shareReplay({ refCount: true }));\n\n public static setup(controller: Controller | null, changeDetector: ChangeDetectorRef): Controller | null {\n controllerChanges([controller])\n .pipe(tap(() => changeDetector.markForCheck()))\n .subscribe();\n\n return controller;\n }\n\n public ngOnChanges(): void {\n this.triggerControllerChange();\n }\n\n public ngOnDestroy(): void {\n this.change$$.complete();\n }\n\n protected triggerControllerChange() {\n this.change$$.next();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Directive, ElementRef, forwardRef, inject, InjectionToken, Input, Provider } from '@angular/core';\nimport { booleanToOptionalAttributeString } from '@odx/angular/utils';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nconst ELEMENTS_WITH_DISABLED_ATTRIBUTE = {\n button: true,\n fieldset: true,\n input: true,\n optgroup: true,\n option: true,\n select: true,\n textarea: true,\n} as Record<string, boolean>;\n\nexport const DISABLED_CONTROLLER = new InjectionToken<DisabledController>('@odx/angular::DisabledWatchedController');\nconst DISABLED_INTERNAL_CONTROLLER = new InjectionToken<DisabledController | null>('@odx/angular::DisabledController', {\n factory: () => new DisabledController(null),\n});\n\n@Directive({\n standalone: true,\n selector: '[disabled]',\n providers: [\n {\n provide: DISABLED_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => DisabledController),\n },\n ],\n host: {\n '[attr.aria-disabled]': 'ariaDisabled',\n '[attr.disabled]': 'hasDisabledAttribute || null',\n },\n})\nexport class DisabledController extends Controller {\n public static ngAcceptInputType_disabled: BooleanInput;\n\n private readonly nodeName: string;\n private isDisabled = false;\n\n protected hasDisabledAttribute = false;\n public readonly isDisabled$ = this.change$.pipe(\n map(() => this.isDisabled),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n\n @Input()\n public set disabled(value: unknown) {\n const coercedValue = coerceBooleanProperty(value);\n if (this.isDisabled !== coercedValue) {\n this.isDisabled = coercedValue;\n this.hasDisabledAttribute = this.isDisabled && ELEMENTS_WITH_DISABLED_ATTRIBUTE[this.nodeName];\n }\n }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get ariaDisabled(): string | null {\n return booleanToOptionalAttributeString(this.hasDisabledAttribute);\n }\n\n constructor(element: ElementRef<HTMLElement> | null) {\n super();\n this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';\n }\n\n public static inject(): DisabledController | null {\n return inject(DISABLED_CONTROLLER, { optional: true });\n }\n\n public static connect(): Provider {\n return {\n provide: DISABLED_CONTROLLER,\n useFactory: Controller.setup,\n deps: [DISABLED_INTERNAL_CONTROLLER, ChangeDetectorRef],\n };\n }\n\n public setDisabledState(state: boolean): void {\n this.disabled = state;\n this.ngOnChanges();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Directive, ElementRef, forwardRef, inject, InjectionToken, Input, Provider } from '@angular/core';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nconst ELEMENTS_WITH_READONLY_ATTRIBUTE = {\n input: true,\n textarea: true,\n select: true,\n} as Record<string, boolean>;\n\nconst READONLY_CONTROLLER = new InjectionToken<ReadonlyController>('@odx/angular::ReadonlyWatchedController');\nconst READONLY_INTERNAL_CONTROLLER = new InjectionToken<ReadonlyController | null>('@odx/angular::ReadonlyController', {\n factory: () => new ReadonlyController(null),\n});\n\n@Directive({\n standalone: true,\n selector: '[readonly]',\n providers: [\n {\n provide: READONLY_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => ReadonlyController),\n },\n ],\n host: {\n '[attr.readonly]': 'hasReadonlyAttribute || null',\n },\n})\nexport class ReadonlyController extends Controller {\n public static ngAcceptInputType_readonly: BooleanInput;\n\n private readonly nodeName: string;\n private isReadonly = false;\n\n protected hasReadonlyAttribute = false;\n\n public readonly isReadonly$ = this.change$.pipe(\n map(() => this.isReadonly),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n\n @Input()\n public set readonly(value: unknown) {\n const coercedValue = coerceBooleanProperty(value);\n if (this.isReadonly !== coercedValue) {\n this.isReadonly = coercedValue;\n this.hasReadonlyAttribute = this.isReadonly && ELEMENTS_WITH_READONLY_ATTRIBUTE[this.nodeName];\n }\n }\n public get readonly(): boolean {\n return this.isReadonly;\n }\n\n constructor(element: ElementRef<HTMLElement> | null) {\n super();\n this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';\n }\n\n public static inject(): ReadonlyController | null {\n return inject(READONLY_CONTROLLER, { optional: true });\n }\n\n public static connect(): Provider {\n return {\n provide: READONLY_CONTROLLER,\n useFactory: Controller.setup,\n deps: [READONLY_INTERNAL_CONTROLLER, ChangeDetectorRef],\n };\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { NgChanges } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n selector: '[odxClickOutside]',\n})\nexport class ClickOutsideDirective implements OnChanges, OnInit, OnDestroy {\n private listener?: () => void;\n\n @Input()\n public odxClickOutsideActive = true;\n\n @Output()\n public readonly odxClickOutside = new EventEmitter<MouseEvent>();\n\n constructor(private readonly element: ElementRef<HTMLElement>, private readonly renderer: Renderer2) {\n this.odxClickOutsideActive = true;\n }\n\n public ngOnInit(): void {\n if (this.odxClickOutsideActive) {\n this.registerHandler();\n }\n }\n\n public ngOnChanges({ odxClickOutsideActive: clickOutsideActive }: NgChanges<ClickOutsideDirective>): void {\n if (!clickOutsideActive?.firstChange && clickOutsideActive?.previousValue !== clickOutsideActive?.currentValue) {\n if (clickOutsideActive?.currentValue) {\n this.registerHandler();\n } else {\n this.destroy();\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n private destroy() {\n if (this.listener) {\n this.listener();\n this.listener = undefined;\n }\n }\n\n private registerHandler() {\n setTimeout(() => {\n this.listener ??= this.renderer.listen('document', 'click', (event) => {\n if (this.odxClickOutsideActive && this.element?.nativeElement.isConnected && !this.element?.nativeElement.contains(event.target)) {\n this.odxClickOutside.emit(event);\n }\n });\n }, 0);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DisabledController, ReadonlyController } from './controllers';\nimport { ClickOutsideDirective } from './directives';\n\nconst controllers = [DisabledController, ReadonlyController];\nconst modules = [ClickOutsideDirective];\n\n@NgModule({\n imports: [...controllers, ...modules],\n exports: [CommonModule, ...controllers, ...modules],\n})\nexport class CoreModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { fromEvents } from '@odx/angular/rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowRef {\n public readonly nativeWindow = inject(DOCUMENT).defaultView ?? window;\n public readonly isOnline$ = fromEvents(this.nativeWindow, 'offline', 'online').pipe(\n startWith(null),\n map(() => this.nativeWindow.navigator.onLine),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n\n public get location(): Location {\n return this.nativeWindow.location;\n }\n\n public getLanguage(): string {\n return this.nativeWindow.navigator.language;\n }\n\n public getOrigin(): string {\n return this.location.origin;\n }\n\n public reloadPage(): void {\n return this.location.reload();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { ChangeDetectorRef, OnChanges, OnDestroy } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
- export declare function detectControllerChanges(changeDetector: ChangeDetectorRef, ...controllers: Array<Controller | undefined | null>): Observable<void>;
5
- export declare function controllerChanges(...controllers: Array<Controller | undefined | null>): Observable<void>;
4
+ export declare function detectControllerChanges(...controllers: Array<Controller | undefined | null>): Observable<void>;
6
5
  export declare abstract class Controller implements OnChanges, OnDestroy {
7
6
  private readonly change$$;
8
7
  readonly change$: Observable<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "1.0.0-rc.3",
3
+ "version": "1.0.0-rc.5",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -9,8 +9,9 @@
9
9
  "@angular/common": ">=14.2.0",
10
10
  "@angular/core": ">=14.2.0",
11
11
  "@angular/forms": ">=14.2.0",
12
+ "@angular/router": ">=14.2.0",
12
13
  "rxjs": ">=7.5.0",
13
- "@odx/ui": "1.0.0-rc.3"
14
+ "@odx/ui": "1.0.0-rc.5"
14
15
  },
15
16
  "dependencies": {
16
17
  "@floating-ui/dom": "^1.0.1",
@@ -46,6 +47,14 @@
46
47
  "node": "./fesm2015/odx-angular-animations.mjs",
47
48
  "default": "./fesm2020/odx-angular-animations.mjs"
48
49
  },
50
+ "./cdk/active-indicator": {
51
+ "types": "./cdk/active-indicator/index.d.ts",
52
+ "esm2020": "./esm2020/cdk/active-indicator/odx-angular-cdk-active-indicator.mjs",
53
+ "es2020": "./fesm2020/odx-angular-cdk-active-indicator.mjs",
54
+ "es2015": "./fesm2015/odx-angular-cdk-active-indicator.mjs",
55
+ "node": "./fesm2015/odx-angular-cdk-active-indicator.mjs",
56
+ "default": "./fesm2020/odx-angular-cdk-active-indicator.mjs"
57
+ },
49
58
  "./cdk/checkbox-control": {
50
59
  "types": "./cdk/checkbox-control/index.d.ts",
51
60
  "esm2020": "./esm2020/cdk/checkbox-control/odx-angular-cdk-checkbox-control.mjs",
@@ -150,6 +159,22 @@
150
159
  "node": "./fesm2015/odx-angular-components-checkbox.mjs",
151
160
  "default": "./fesm2020/odx-angular-components-checkbox.mjs"
152
161
  },
162
+ "./components/chip": {
163
+ "types": "./components/chip/index.d.ts",
164
+ "esm2020": "./esm2020/components/chip/odx-angular-components-chip.mjs",
165
+ "es2020": "./fesm2020/odx-angular-components-chip.mjs",
166
+ "es2015": "./fesm2015/odx-angular-components-chip.mjs",
167
+ "node": "./fesm2015/odx-angular-components-chip.mjs",
168
+ "default": "./fesm2020/odx-angular-components-chip.mjs"
169
+ },
170
+ "./components/circular-progress": {
171
+ "types": "./components/circular-progress/index.d.ts",
172
+ "esm2020": "./esm2020/components/circular-progress/odx-angular-components-circular-progress.mjs",
173
+ "es2020": "./fesm2020/odx-angular-components-circular-progress.mjs",
174
+ "es2015": "./fesm2015/odx-angular-components-circular-progress.mjs",
175
+ "node": "./fesm2015/odx-angular-components-circular-progress.mjs",
176
+ "default": "./fesm2020/odx-angular-components-circular-progress.mjs"
177
+ },
153
178
  "./components/content-box": {
154
179
  "types": "./components/content-box/index.d.ts",
155
180
  "esm2020": "./esm2020/components/content-box/odx-angular-components-content-box.mjs",
@@ -190,6 +215,22 @@
190
215
  "node": "./fesm2015/odx-angular-components-link.mjs",
191
216
  "default": "./fesm2020/odx-angular-components-link.mjs"
192
217
  },
218
+ "./components/list": {
219
+ "types": "./components/list/index.d.ts",
220
+ "esm2020": "./esm2020/components/list/odx-angular-components-list.mjs",
221
+ "es2020": "./fesm2020/odx-angular-components-list.mjs",
222
+ "es2015": "./fesm2015/odx-angular-components-list.mjs",
223
+ "node": "./fesm2015/odx-angular-components-list.mjs",
224
+ "default": "./fesm2020/odx-angular-components-list.mjs"
225
+ },
226
+ "./components/loading-spinner": {
227
+ "types": "./components/loading-spinner/index.d.ts",
228
+ "esm2020": "./esm2020/components/loading-spinner/odx-angular-components-loading-spinner.mjs",
229
+ "es2020": "./fesm2020/odx-angular-components-loading-spinner.mjs",
230
+ "es2015": "./fesm2015/odx-angular-components-loading-spinner.mjs",
231
+ "node": "./fesm2015/odx-angular-components-loading-spinner.mjs",
232
+ "default": "./fesm2020/odx-angular-components-loading-spinner.mjs"
233
+ },
193
234
  "./components/logo": {
194
235
  "types": "./components/logo/index.d.ts",
195
236
  "esm2020": "./esm2020/components/logo/odx-angular-components-logo.mjs",
@@ -214,6 +255,14 @@
214
255
  "node": "./fesm2015/odx-angular-components-modal.mjs",
215
256
  "default": "./fesm2020/odx-angular-components-modal.mjs"
216
257
  },
258
+ "./components/progress": {
259
+ "types": "./components/progress/index.d.ts",
260
+ "esm2020": "./esm2020/components/progress/odx-angular-components-progress.mjs",
261
+ "es2020": "./fesm2020/odx-angular-components-progress.mjs",
262
+ "es2015": "./fesm2015/odx-angular-components-progress.mjs",
263
+ "node": "./fesm2015/odx-angular-components-progress.mjs",
264
+ "default": "./fesm2020/odx-angular-components-progress.mjs"
265
+ },
217
266
  "./components/radio-group": {
218
267
  "types": "./components/radio-group/index.d.ts",
219
268
  "esm2020": "./esm2020/components/radio-group/odx-angular-components-radio-group.mjs",
@@ -222,6 +271,14 @@
222
271
  "node": "./fesm2015/odx-angular-components-radio-group.mjs",
223
272
  "default": "./fesm2020/odx-angular-components-radio-group.mjs"
224
273
  },
274
+ "./components/rail-navigation": {
275
+ "types": "./components/rail-navigation/index.d.ts",
276
+ "esm2020": "./esm2020/components/rail-navigation/odx-angular-components-rail-navigation.mjs",
277
+ "es2020": "./fesm2020/odx-angular-components-rail-navigation.mjs",
278
+ "es2015": "./fesm2015/odx-angular-components-rail-navigation.mjs",
279
+ "node": "./fesm2015/odx-angular-components-rail-navigation.mjs",
280
+ "default": "./fesm2020/odx-angular-components-rail-navigation.mjs"
281
+ },
225
282
  "./components/switch": {
226
283
  "types": "./components/switch/index.d.ts",
227
284
  "esm2020": "./esm2020/components/switch/odx-angular-components-switch.mjs",
package/rxjs/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
+ export * from './lib/from-element-resize';
1
2
  export * from './lib/from-events';
2
- export * from './lib/mark-for-check';
@@ -0,0 +1,2 @@
1
+ import { Observable } from 'rxjs';
2
+ export declare function fromElementResize$(element: Element, debounceDuration?: number): Observable<ResizeObserverEntry[]>;
@@ -1,5 +1,6 @@
1
- import { ElementRef } from '@angular/core';
1
+ import { ElementRef, Injector } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  export declare function reactiveClassBinding<T>(source$: Observable<T> | null | undefined, cssClass: string): void;
4
4
  export declare function reactiveAttributeBinding<T>(source$: Observable<T> | null | undefined, ...attributes: string[]): void;
5
+ export declare function getInjector(): Injector;
5
6
  export declare function injectElement<T = HTMLElement>(): ElementRef<T>;
@@ -1,5 +1,9 @@
1
1
  export declare function applyStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration | Record<keyof CSSStyleDeclaration, string | null>>): void;
2
2
  export declare function booleanToAttributeString(state: boolean): string;
3
3
  export declare function booleanToOptionalAttributeString(state: boolean): string | null;
4
- export declare function px(value: unknown): string;
4
+ export declare function px(value: unknown): `${number}px`;
5
+ export declare function cssTranslate(x: string | 0, y: string | 0): `translate3d(${string | 0}, ${string | 0}, 0)`;
6
+ export declare function disableCSSTransitions(element: HTMLElement, disabled: boolean): void;
7
+ export declare function forceLayoutReflow(element: HTMLElement): void;
5
8
  export declare function setAttribute(element: HTMLElement, attribute: string, value?: unknown): void;
9
+ export declare function createResizeObserver(callback: ResizeObserverCallback): ResizeObserver;
@@ -1,5 +0,0 @@
1
- import { tap } from 'rxjs';
2
- export function markForCheck(changeDetectorRef) {
3
- return tap(() => changeDetectorRef.markForCheck());
4
- }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1mb3ItY2hlY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvcnhqcy9zcmMvbGliL21hcmstZm9yLWNoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBNEIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJELE1BQU0sVUFBVSxZQUFZLENBQUksaUJBQW9DO0lBQ2xFLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFya0ZvckNoZWNrPFQ+KGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIHJldHVybiB0YXAoKCkgPT4gY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xufVxuIl19
@@ -1,3 +0,0 @@
1
- import { ChangeDetectorRef } from '@angular/core';
2
- import { MonoTypeOperatorFunction } from 'rxjs';
3
- export declare function markForCheck<T>(changeDetectorRef: ChangeDetectorRef): MonoTypeOperatorFunction<T>;