@inobeta/ui 18.0.1-build.1722007687

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 (369) hide show
  1. package/README.md +1 -0
  2. package/_index.scss +1 -0
  3. package/esm2022/inobeta-ui.mjs +5 -0
  4. package/esm2022/public_api.mjs +17 -0
  5. package/esm2022/src/app/inobeta-ui/core/filter.pipe.mjs +23 -0
  6. package/esm2022/src/app/inobeta-ui/core/index.mjs +2 -0
  7. package/esm2022/src/app/inobeta-ui/http/auth/guard.service.mjs +157 -0
  8. package/esm2022/src/app/inobeta-ui/http/auth/login.service.mjs +137 -0
  9. package/esm2022/src/app/inobeta-ui/http/auth/login.service.stub.spec.mjs +20 -0
  10. package/esm2022/src/app/inobeta-ui/http/auth/session.model.mjs +16 -0
  11. package/esm2022/src/app/inobeta-ui/http/http/auth.interceptor.mjs +79 -0
  12. package/esm2022/src/app/inobeta-ui/http/http/error.interceptor.mjs +76 -0
  13. package/esm2022/src/app/inobeta-ui/http/http/loader.interceptor.mjs +45 -0
  14. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton-container.component.mjs +36 -0
  15. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.component.mjs +34 -0
  16. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.mjs +66 -0
  17. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.mjs +22 -0
  18. package/esm2022/src/app/inobeta-ui/http/http/messages.decorator.mjs +42 -0
  19. package/esm2022/src/app/inobeta-ui/http/http/role-check.directive.mjs +45 -0
  20. package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.component.mjs +28 -0
  21. package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.mjs +15 -0
  22. package/esm2022/src/app/inobeta-ui/http/http-test.module.mjs +35 -0
  23. package/esm2022/src/app/inobeta-ui/http/http.module.mjs +178 -0
  24. package/esm2022/src/app/inobeta-ui/http/index.mjs +26 -0
  25. package/esm2022/src/app/inobeta-ui/http/store/index.mjs +11 -0
  26. package/esm2022/src/app/inobeta-ui/http/store/loader/actions.mjs +7 -0
  27. package/esm2022/src/app/inobeta-ui/http/store/loader/interfaces.mjs +2 -0
  28. package/esm2022/src/app/inobeta-ui/http/store/loader/reducers.mjs +35 -0
  29. package/esm2022/src/app/inobeta-ui/http/store/loader/selectors.mjs +9 -0
  30. package/esm2022/src/app/inobeta-ui/http/store/session/actions.mjs +17 -0
  31. package/esm2022/src/app/inobeta-ui/http/store/session/effects.mjs +50 -0
  32. package/esm2022/src/app/inobeta-ui/http/store/session/interfaces.mjs +2 -0
  33. package/esm2022/src/app/inobeta-ui/http/store/session/reducers.mjs +12 -0
  34. package/esm2022/src/app/inobeta-ui/http/store/session/selectors.mjs +22 -0
  35. package/esm2022/src/app/inobeta-ui/http/translations.mjs +13 -0
  36. package/esm2022/src/app/inobeta-ui/hydration/actions.mjs +3 -0
  37. package/esm2022/src/app/inobeta-ui/hydration/effects.mjs +45 -0
  38. package/esm2022/src/app/inobeta-ui/hydration/index.mjs +21 -0
  39. package/esm2022/src/app/inobeta-ui/hydration/reducer.mjs +36 -0
  40. package/esm2022/src/app/inobeta-ui/storage/index.mjs +4 -0
  41. package/esm2022/src/app/inobeta-ui/storage/storage-test.module.mjs +23 -0
  42. package/esm2022/src/app/inobeta-ui/storage/storage.module.mjs +22 -0
  43. package/esm2022/src/app/inobeta-ui/storage/storage.service.mjs +105 -0
  44. package/esm2022/src/app/inobeta-ui/storage/storage.stub.spec.mjs +8 -0
  45. package/esm2022/src/app/inobeta-ui/translate/index.mjs +2 -0
  46. package/esm2022/src/app/inobeta-ui/translate/translate-loader.service.mjs +37 -0
  47. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.mjs +63 -0
  48. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.mjs +44 -0
  49. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/index.mjs +4 -0
  50. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.mjs +16 -0
  51. package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.module.mjs +92 -0
  52. package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.service.mjs +83 -0
  53. package/esm2022/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.mjs +42 -0
  54. package/esm2022/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.mjs +66 -0
  55. package/esm2022/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.mjs +26 -0
  56. package/esm2022/src/app/inobeta-ui/ui/data-export/index.mjs +10 -0
  57. package/esm2022/src/app/inobeta-ui/ui/data-export/provider.mjs +3 -0
  58. package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.mjs +113 -0
  59. package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export.component.mjs +58 -0
  60. package/esm2022/src/app/inobeta-ui/ui/data-export/transformer.mjs +68 -0
  61. package/esm2022/src/app/inobeta-ui/ui/forms/array/array.mjs +26 -0
  62. package/esm2022/src/app/inobeta-ui/ui/forms/controls/checkbox.mjs +5 -0
  63. package/esm2022/src/app/inobeta-ui/ui/forms/controls/dropdown.mjs +5 -0
  64. package/esm2022/src/app/inobeta-ui/ui/forms/controls/form-control-base.mjs +80 -0
  65. package/esm2022/src/app/inobeta-ui/ui/forms/controls/radio.mjs +5 -0
  66. package/esm2022/src/app/inobeta-ui/ui/forms/controls/textbox.mjs +5 -0
  67. package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.mjs +118 -0
  68. package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.mjs +46 -0
  69. package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.mjs +28 -0
  70. package/esm2022/src/app/inobeta-ui/ui/forms/form-control.service.mjs +57 -0
  71. package/esm2022/src/app/inobeta-ui/ui/forms/forms.module.mjs +36 -0
  72. package/esm2022/src/app/inobeta-ui/ui/forms/forms.pipes.mjs +41 -0
  73. package/esm2022/src/app/inobeta-ui/ui/forms/forms.types.mjs +2 -0
  74. package/esm2022/src/app/inobeta-ui/ui/forms/index.mjs +12 -0
  75. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.mjs +14 -0
  76. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.mjs +31 -0
  77. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.component.mjs +149 -0
  78. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.types.mjs +30 -0
  79. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.mjs +83 -0
  80. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.mjs +48 -0
  81. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.mjs +284 -0
  82. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.mjs +111 -0
  83. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.mjs +99 -0
  84. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.mjs +106 -0
  85. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.mjs +98 -0
  86. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.mjs +109 -0
  87. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.module.mjs +175 -0
  88. package/esm2022/src/app/inobeta-ui/ui/kai-filter/index.mjs +14 -0
  89. package/esm2022/src/app/inobeta-ui/ui/kai-filter/tokens.mjs +3 -0
  90. package/esm2022/src/app/inobeta-ui/ui/kai-filter/translations.mjs +51 -0
  91. package/esm2022/src/app/inobeta-ui/ui/kai-table/action.mjs +48 -0
  92. package/esm2022/src/app/inobeta-ui/ui/kai-table/cells.mjs +212 -0
  93. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/action-column.mjs +23 -0
  94. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/column.mjs +260 -0
  95. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/date-column.mjs +93 -0
  96. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/index.mjs +7 -0
  97. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/number-column.mjs +112 -0
  98. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/selection-column.mjs +149 -0
  99. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/text-column.mjs +90 -0
  100. package/esm2022/src/app/inobeta-ui/ui/kai-table/index.mjs +13 -0
  101. package/esm2022/src/app/inobeta-ui/ui/kai-table/paginator-intl.mjs +53 -0
  102. package/esm2022/src/app/inobeta-ui/ui/kai-table/remote-data-source.mjs +73 -0
  103. package/esm2022/src/app/inobeta-ui/ui/kai-table/rowgroup.mjs +17 -0
  104. package/esm2022/src/app/inobeta-ui/ui/kai-table/sort-header.mjs +37 -0
  105. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/const.mjs +2 -0
  106. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/index.mjs +9 -0
  107. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.mjs +13 -0
  108. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.mjs +47 -0
  109. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.mjs +2 -0
  110. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.mjs +56 -0
  111. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.mjs +19 -0
  112. package/esm2022/src/app/inobeta-ui/ui/kai-table/table-data-source.mjs +450 -0
  113. package/esm2022/src/app/inobeta-ui/ui/kai-table/table-url.service.mjs +129 -0
  114. package/esm2022/src/app/inobeta-ui/ui/kai-table/table.component.mjs +260 -0
  115. package/esm2022/src/app/inobeta-ui/ui/kai-table/table.module.mjs +150 -0
  116. package/esm2022/src/app/inobeta-ui/ui/kai-table/table.types.mjs +2 -0
  117. package/esm2022/src/app/inobeta-ui/ui/kai-table/tokens.mjs +13 -0
  118. package/esm2022/src/app/inobeta-ui/ui/kai-table/translations.mjs +41 -0
  119. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.mjs +120 -0
  120. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.mjs +38 -0
  121. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.mjs +48 -0
  122. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.mjs +139 -0
  123. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.mjs +41 -0
  124. package/esm2022/src/app/inobeta-ui/ui/main-menu/index.mjs +13 -0
  125. package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.mjs +24 -0
  126. package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu.module.mjs +63 -0
  127. package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.mjs +2 -0
  128. package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.mjs +2 -0
  129. package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.mjs +2 -0
  130. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.mjs +108 -0
  131. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/button.mjs +80 -0
  132. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/checkbox.mjs +54 -0
  133. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/datepicker.mjs +96 -0
  134. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/dropdown.mjs +149 -0
  135. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/label.mjs +50 -0
  136. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/padding.mjs +26 -0
  137. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/radio.mjs +61 -0
  138. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.mjs +62 -0
  139. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textarea.mjs +63 -0
  140. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textbox.mjs +205 -0
  141. package/esm2022/src/app/inobeta-ui/ui/material-forms/index.mjs +18 -0
  142. package/esm2022/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.mjs +73 -0
  143. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.mjs +48 -0
  144. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.mjs +65 -0
  145. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.mjs +18 -0
  146. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.mjs +64 -0
  147. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-test.module.mjs +32 -0
  148. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form.module.mjs +168 -0
  149. package/esm2022/src/app/inobeta-ui/ui/material-forms/translations.mjs +26 -0
  150. package/esm2022/src/app/inobeta-ui/ui/modal/index.mjs +7 -0
  151. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.component.mjs +76 -0
  152. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.model.mjs +2 -0
  153. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.mjs +64 -0
  154. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.mjs +15 -0
  155. package/esm2022/src/app/inobeta-ui/ui/modal/modal-test.module.mjs +26 -0
  156. package/esm2022/src/app/inobeta-ui/ui/modal/modal.module.mjs +46 -0
  157. package/esm2022/src/app/inobeta-ui/ui/modal/translations.mjs +10 -0
  158. package/esm2022/src/app/inobeta-ui/ui/toast/index.mjs +5 -0
  159. package/esm2022/src/app/inobeta-ui/ui/toast/toast-test.module.mjs +23 -0
  160. package/esm2022/src/app/inobeta-ui/ui/toast/toast.module.mjs +21 -0
  161. package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.mjs +54 -0
  162. package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.mjs +4 -0
  163. package/esm2022/src/app/inobeta-ui/ui/uploader/index.mjs +3 -0
  164. package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.component.mjs +41 -0
  165. package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.module.mjs +42 -0
  166. package/esm2022/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.mjs +20 -0
  167. package/esm2022/src/app/inobeta-ui/ui/views/components/index.mjs +6 -0
  168. package/esm2022/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.mjs +37 -0
  169. package/esm2022/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.mjs +186 -0
  170. package/esm2022/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.mjs +110 -0
  171. package/esm2022/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.mjs +43 -0
  172. package/esm2022/src/app/inobeta-ui/ui/views/index.mjs +5 -0
  173. package/esm2022/src/app/inobeta-ui/ui/views/store/actions.mjs +11 -0
  174. package/esm2022/src/app/inobeta-ui/ui/views/store/index.mjs +3 -0
  175. package/esm2022/src/app/inobeta-ui/ui/views/store/reducer.mjs +5 -0
  176. package/esm2022/src/app/inobeta-ui/ui/views/store/views/index.mjs +4 -0
  177. package/esm2022/src/app/inobeta-ui/ui/views/store/views/reducer.mjs +19 -0
  178. package/esm2022/src/app/inobeta-ui/ui/views/store/views/selectors.mjs +5 -0
  179. package/esm2022/src/app/inobeta-ui/ui/views/store/views/table-view.mjs +13 -0
  180. package/esm2022/src/app/inobeta-ui/ui/views/translations.mjs +34 -0
  181. package/esm2022/src/app/inobeta-ui/ui/views/view.module.mjs +98 -0
  182. package/esm2022/src/app/inobeta-ui/ui/views/view.service.mjs +137 -0
  183. package/fesm2022/inobeta-ui.mjs +8610 -0
  184. package/fesm2022/inobeta-ui.mjs.map +1 -0
  185. package/index.d.ts +5 -0
  186. package/package.json +55 -0
  187. package/public_api.d.ts +16 -0
  188. package/src/app/inobeta-ui/core/filter.pipe.d.ts +7 -0
  189. package/src/app/inobeta-ui/core/index.d.ts +1 -0
  190. package/src/app/inobeta-ui/http/auth/guard.service.d.ts +96 -0
  191. package/src/app/inobeta-ui/http/auth/login.service.d.ts +63 -0
  192. package/src/app/inobeta-ui/http/auth/login.service.stub.spec.d.ts +9 -0
  193. package/src/app/inobeta-ui/http/auth/session.model.d.ts +18 -0
  194. package/src/app/inobeta-ui/http/http/auth.interceptor.d.ts +21 -0
  195. package/src/app/inobeta-ui/http/http/error.interceptor.d.ts +18 -0
  196. package/src/app/inobeta-ui/http/http/loader.interceptor.d.ts +17 -0
  197. package/src/app/inobeta-ui/http/http/loading-skeleton-container.component.d.ts +13 -0
  198. package/src/app/inobeta-ui/http/http/loading-skeleton.component.d.ts +12 -0
  199. package/src/app/inobeta-ui/http/http/loading-skeleton.directive.d.ts +27 -0
  200. package/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.d.ts +13 -0
  201. package/src/app/inobeta-ui/http/http/messages.decorator.d.ts +18 -0
  202. package/src/app/inobeta-ui/http/http/role-check.directive.d.ts +17 -0
  203. package/src/app/inobeta-ui/http/http/spinner-loading.component.d.ts +9 -0
  204. package/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.d.ts +5 -0
  205. package/src/app/inobeta-ui/http/http-test.module.d.ts +8 -0
  206. package/src/app/inobeta-ui/http/http.module.d.ts +20 -0
  207. package/src/app/inobeta-ui/http/index.d.ts +23 -0
  208. package/src/app/inobeta-ui/http/store/index.d.ts +10 -0
  209. package/src/app/inobeta-ui/http/store/loader/actions.d.ts +17 -0
  210. package/src/app/inobeta-ui/http/store/loader/interfaces.d.ts +8 -0
  211. package/src/app/inobeta-ui/http/store/loader/reducers.d.ts +3 -0
  212. package/src/app/inobeta-ui/http/store/loader/selectors.d.ts +5 -0
  213. package/src/app/inobeta-ui/http/store/session/actions.d.ts +20 -0
  214. package/src/app/inobeta-ui/http/store/session/effects.d.ts +16 -0
  215. package/src/app/inobeta-ui/http/store/session/interfaces.d.ts +4 -0
  216. package/src/app/inobeta-ui/http/store/session/reducers.d.ts +3 -0
  217. package/src/app/inobeta-ui/http/store/session/selectors.d.ts +4 -0
  218. package/src/app/inobeta-ui/http/translations.d.ts +12 -0
  219. package/src/app/inobeta-ui/hydration/actions.d.ts +1 -0
  220. package/src/app/inobeta-ui/hydration/effects.d.ts +13 -0
  221. package/src/app/inobeta-ui/hydration/index.d.ts +13 -0
  222. package/src/app/inobeta-ui/hydration/reducer.d.ts +2 -0
  223. package/src/app/inobeta-ui/storage/index.d.ts +3 -0
  224. package/src/app/inobeta-ui/storage/storage-test.module.d.ts +6 -0
  225. package/src/app/inobeta-ui/storage/storage.module.d.ts +6 -0
  226. package/src/app/inobeta-ui/storage/storage.service.d.ts +62 -0
  227. package/src/app/inobeta-ui/storage/storage.stub.spec.d.ts +5 -0
  228. package/src/app/inobeta-ui/translate/index.d.ts +1 -0
  229. package/src/app/inobeta-ui/translate/translate-loader.service.d.ts +11 -0
  230. package/src/app/inobeta-ui/ui/_index.scss +87 -0
  231. package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.d.ts +28 -0
  232. package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.d.ts +12 -0
  233. package/src/app/inobeta-ui/ui/breadcrumb/index.d.ts +3 -0
  234. package/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.d.ts +6 -0
  235. package/src/app/inobeta-ui/ui/data-export/data-export.module.d.ts +20 -0
  236. package/src/app/inobeta-ui/ui/data-export/data-export.service.d.ts +35 -0
  237. package/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.d.ts +19 -0
  238. package/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.d.ts +20 -0
  239. package/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.d.ts +14 -0
  240. package/src/app/inobeta-ui/ui/data-export/index.d.ts +9 -0
  241. package/src/app/inobeta-ui/ui/data-export/provider.d.ts +15 -0
  242. package/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.d.ts +23 -0
  243. package/src/app/inobeta-ui/ui/data-export/table-data-export.component.d.ts +13 -0
  244. package/src/app/inobeta-ui/ui/data-export/transformer.d.ts +50 -0
  245. package/src/app/inobeta-ui/ui/forms/array/array.d.ts +32 -0
  246. package/src/app/inobeta-ui/ui/forms/controls/checkbox.d.ts +4 -0
  247. package/src/app/inobeta-ui/ui/forms/controls/dropdown.d.ts +4 -0
  248. package/src/app/inobeta-ui/ui/forms/controls/form-control-base.d.ts +88 -0
  249. package/src/app/inobeta-ui/ui/forms/controls/radio.d.ts +4 -0
  250. package/src/app/inobeta-ui/ui/forms/controls/textbox.d.ts +4 -0
  251. package/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.d.ts +50 -0
  252. package/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.d.ts +18 -0
  253. package/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.d.ts +11 -0
  254. package/src/app/inobeta-ui/ui/forms/form-control.service.d.ts +13 -0
  255. package/src/app/inobeta-ui/ui/forms/forms.module.d.ts +12 -0
  256. package/src/app/inobeta-ui/ui/forms/forms.pipes.d.ts +20 -0
  257. package/src/app/inobeta-ui/ui/forms/forms.types.d.ts +3 -0
  258. package/src/app/inobeta-ui/ui/forms/index.d.ts +11 -0
  259. package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.d.ts +5 -0
  260. package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.d.ts +8 -0
  261. package/src/app/inobeta-ui/ui/kai-filter/filter.component.d.ts +41 -0
  262. package/src/app/inobeta-ui/ui/kai-filter/filter.types.d.ts +141 -0
  263. package/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.d.ts +42 -0
  264. package/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.d.ts +12 -0
  265. package/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.d.ts +56 -0
  266. package/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.d.ts +27 -0
  267. package/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.d.ts +16 -0
  268. package/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.d.ts +28 -0
  269. package/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.d.ts +21 -0
  270. package/src/app/inobeta-ui/ui/kai-filter/filters.d.ts +16 -0
  271. package/src/app/inobeta-ui/ui/kai-filter/filters.module.d.ts +35 -0
  272. package/src/app/inobeta-ui/ui/kai-filter/index.d.ts +13 -0
  273. package/src/app/inobeta-ui/ui/kai-filter/tokens.d.ts +2 -0
  274. package/src/app/inobeta-ui/ui/kai-filter/translations.d.ts +50 -0
  275. package/src/app/inobeta-ui/ui/kai-table/_table-theme.scss +123 -0
  276. package/src/app/inobeta-ui/ui/kai-table/action.d.ts +19 -0
  277. package/src/app/inobeta-ui/ui/kai-table/cells.d.ts +88 -0
  278. package/src/app/inobeta-ui/ui/kai-table/columns/action-column.d.ts +9 -0
  279. package/src/app/inobeta-ui/ui/kai-table/columns/column.d.ts +87 -0
  280. package/src/app/inobeta-ui/ui/kai-table/columns/date-column.d.ts +21 -0
  281. package/src/app/inobeta-ui/ui/kai-table/columns/index.d.ts +6 -0
  282. package/src/app/inobeta-ui/ui/kai-table/columns/number-column.d.ts +16 -0
  283. package/src/app/inobeta-ui/ui/kai-table/columns/selection-column.d.ts +26 -0
  284. package/src/app/inobeta-ui/ui/kai-table/columns/text-column.d.ts +16 -0
  285. package/src/app/inobeta-ui/ui/kai-table/index.d.ts +12 -0
  286. package/src/app/inobeta-ui/ui/kai-table/paginator-intl.d.ts +18 -0
  287. package/src/app/inobeta-ui/ui/kai-table/remote-data-source.d.ts +60 -0
  288. package/src/app/inobeta-ui/ui/kai-table/rowgroup.d.ts +8 -0
  289. package/src/app/inobeta-ui/ui/kai-table/sort-header.d.ts +20 -0
  290. package/src/app/inobeta-ui/ui/kai-table/store/const.d.ts +1 -0
  291. package/src/app/inobeta-ui/ui/kai-table/store/index.d.ts +8 -0
  292. package/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.d.ts +59 -0
  293. package/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.d.ts +15 -0
  294. package/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.d.ts +16 -0
  295. package/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.d.ts +2 -0
  296. package/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.d.ts +3 -0
  297. package/src/app/inobeta-ui/ui/kai-table/table-data-source.d.ts +164 -0
  298. package/src/app/inobeta-ui/ui/kai-table/table-url.service.d.ts +51 -0
  299. package/src/app/inobeta-ui/ui/kai-table/table.component.d.ts +79 -0
  300. package/src/app/inobeta-ui/ui/kai-table/table.module.d.ts +30 -0
  301. package/src/app/inobeta-ui/ui/kai-table/table.types.d.ts +21 -0
  302. package/src/app/inobeta-ui/ui/kai-table/tokens.d.ts +22 -0
  303. package/src/app/inobeta-ui/ui/kai-table/translations.d.ts +40 -0
  304. package/src/app/inobeta-ui/ui/main-menu/_main-menu-theme.scss +226 -0
  305. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.d.ts +56 -0
  306. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.d.ts +18 -0
  307. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.d.ts +13 -0
  308. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.d.ts +9 -0
  309. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.d.ts +16 -0
  310. package/src/app/inobeta-ui/ui/main-menu/index.d.ts +10 -0
  311. package/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.d.ts +8 -0
  312. package/src/app/inobeta-ui/ui/main-menu/main-menu.module.d.ts +16 -0
  313. package/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.d.ts +8 -0
  314. package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.d.ts +14 -0
  315. package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.d.ts +4 -0
  316. package/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.d.ts +14 -0
  317. package/src/app/inobeta-ui/ui/material-forms/controls/button.d.ts +28 -0
  318. package/src/app/inobeta-ui/ui/material-forms/controls/checkbox.d.ts +10 -0
  319. package/src/app/inobeta-ui/ui/material-forms/controls/datepicker.d.ts +17 -0
  320. package/src/app/inobeta-ui/ui/material-forms/controls/dropdown.d.ts +29 -0
  321. package/src/app/inobeta-ui/ui/material-forms/controls/label.d.ts +10 -0
  322. package/src/app/inobeta-ui/ui/material-forms/controls/padding.d.ts +10 -0
  323. package/src/app/inobeta-ui/ui/material-forms/controls/radio.d.ts +10 -0
  324. package/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.d.ts +10 -0
  325. package/src/app/inobeta-ui/ui/material-forms/controls/textarea.d.ts +17 -0
  326. package/src/app/inobeta-ui/ui/material-forms/controls/textbox.d.ts +21 -0
  327. package/src/app/inobeta-ui/ui/material-forms/index.d.ts +17 -0
  328. package/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.d.ts +25 -0
  329. package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.d.ts +26 -0
  330. package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.d.ts +21 -0
  331. package/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.d.ts +6 -0
  332. package/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.d.ts +19 -0
  333. package/src/app/inobeta-ui/ui/material-forms/material-form-test.module.d.ts +9 -0
  334. package/src/app/inobeta-ui/ui/material-forms/material-form.module.d.ts +49 -0
  335. package/src/app/inobeta-ui/ui/material-forms/translations.d.ts +25 -0
  336. package/src/app/inobeta-ui/ui/modal/index.d.ts +6 -0
  337. package/src/app/inobeta-ui/ui/modal/modal-message.component.d.ts +10 -0
  338. package/src/app/inobeta-ui/ui/modal/modal-message.model.d.ts +32 -0
  339. package/src/app/inobeta-ui/ui/modal/modal-message.service.d.ts +49 -0
  340. package/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.d.ts +6 -0
  341. package/src/app/inobeta-ui/ui/modal/modal-test.module.d.ts +7 -0
  342. package/src/app/inobeta-ui/ui/modal/modal.module.d.ts +11 -0
  343. package/src/app/inobeta-ui/ui/modal/translations.d.ts +9 -0
  344. package/src/app/inobeta-ui/ui/toast/_toast-theme.scss +56 -0
  345. package/src/app/inobeta-ui/ui/toast/index.d.ts +4 -0
  346. package/src/app/inobeta-ui/ui/toast/toast-test.module.d.ts +6 -0
  347. package/src/app/inobeta-ui/ui/toast/toast.module.d.ts +7 -0
  348. package/src/app/inobeta-ui/ui/toast/toast.service.d.ts +36 -0
  349. package/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.d.ts +3 -0
  350. package/src/app/inobeta-ui/ui/uploader/index.d.ts +2 -0
  351. package/src/app/inobeta-ui/ui/uploader/uploader.component.d.ts +12 -0
  352. package/src/app/inobeta-ui/ui/uploader/uploader.module.d.ts +10 -0
  353. package/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.d.ts +8 -0
  354. package/src/app/inobeta-ui/ui/views/components/index.d.ts +5 -0
  355. package/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.d.ts +14 -0
  356. package/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.d.ts +45 -0
  357. package/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.d.ts +22 -0
  358. package/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.d.ts +16 -0
  359. package/src/app/inobeta-ui/ui/views/index.d.ts +4 -0
  360. package/src/app/inobeta-ui/ui/views/store/actions.d.ts +27 -0
  361. package/src/app/inobeta-ui/ui/views/store/index.d.ts +2 -0
  362. package/src/app/inobeta-ui/ui/views/store/reducer.d.ts +7 -0
  363. package/src/app/inobeta-ui/ui/views/store/views/index.d.ts +3 -0
  364. package/src/app/inobeta-ui/ui/views/store/views/reducer.d.ts +3 -0
  365. package/src/app/inobeta-ui/ui/views/store/views/selectors.d.ts +4 -0
  366. package/src/app/inobeta-ui/ui/views/store/views/table-view.d.ts +22 -0
  367. package/src/app/inobeta-ui/ui/views/translations.d.ts +33 -0
  368. package/src/app/inobeta-ui/ui/views/view.module.d.ts +23 -0
  369. package/src/app/inobeta-ui/ui/views/view.service.d.ts +40 -0
@@ -0,0 +1,118 @@
1
+ import { Component, EventEmitter, Input, Output, } from "@angular/core";
2
+ import { Subject } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../form-control.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "../dynamic-form-control/dynamic-form-control.component";
8
+ import * as i5 from "../dynamic-form-array/dynamic-form-array.component";
9
+ import * as i6 from "../forms.pipes";
10
+ export class IbDynamicFormComponent {
11
+ cs;
12
+ fields = [];
13
+ value = {};
14
+ actions = [{ key: "submit", label: "Save" }];
15
+ cols;
16
+ /**
17
+ * @ignore
18
+ * @deprecated
19
+ * this input will be removed in a future release.
20
+ * Utilizzare una subscription ad `afterInit()` per eseguire codice immediatamente dopo aver
21
+ * inizializzato il `FormGroup` (come `form.disable()`)
22
+ */
23
+ disabledOnInit = false;
24
+ disabled = false;
25
+ ibSubmit = new EventEmitter();
26
+ form;
27
+ /** @ignore */
28
+ onInitSubject = new Subject();
29
+ /** @ignore */
30
+ onChangesSubject = new Subject();
31
+ constructor(cs) {
32
+ this.cs = cs;
33
+ }
34
+ ngOnInit() {
35
+ this.form = this.cs.toFormGroup(this.fields);
36
+ if (this.disabled) {
37
+ this.form?.disable();
38
+ }
39
+ else {
40
+ this.form?.enable();
41
+ }
42
+ this.form.patchValue(this.value);
43
+ this.onInitSubject.next(this.form);
44
+ if (this.disabledOnInit) {
45
+ this.form.disable();
46
+ }
47
+ }
48
+ ngOnChanges(changes) {
49
+ const fields = changes.fields;
50
+ if (fields && !fields.isFirstChange()) {
51
+ this.form = this.cs.toFormGroup(fields.currentValue);
52
+ this.form.patchValue(this.value);
53
+ }
54
+ const value = changes.value;
55
+ if (value && !value.isFirstChange()) {
56
+ this.form.patchValue(value.currentValue);
57
+ }
58
+ if (this.disabled) {
59
+ this.form?.disable();
60
+ }
61
+ else {
62
+ this.form?.enable();
63
+ }
64
+ const cols = changes.cols;
65
+ if (fields && cols) {
66
+ const hasFormArray = fields.currentValue.find((f) => f.role === "array");
67
+ if (hasFormArray && cols.currentValue > 0) {
68
+ console.warn(`IbFormArray is not supported in grid mode and will not be shown. Please, remove the cols input from ib-material-form`);
69
+ }
70
+ }
71
+ for (const prop of Object.values(changes)) {
72
+ if (!prop.isFirstChange()) {
73
+ this.onChangesSubject.next({ changes, form: this.form });
74
+ break;
75
+ }
76
+ }
77
+ }
78
+ ngOnDestroy() {
79
+ this.onInitSubject?.complete();
80
+ this.onChangesSubject?.complete();
81
+ }
82
+ handleSubmit() {
83
+ this.ibSubmit.emit(this.form.getRawValue());
84
+ }
85
+ handleActionClick(source) {
86
+ if (source.key === "submit") {
87
+ return;
88
+ }
89
+ source.handler(this.form);
90
+ }
91
+ afterInit() {
92
+ return this.onInitSubject;
93
+ }
94
+ afterChanges() {
95
+ return this.onChangesSubject;
96
+ }
97
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormComponent, deps: [{ token: i1.IbFormControlService }], target: i0.ɵɵFactoryTarget.Component });
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: IbDynamicFormComponent, selector: "ib-form", inputs: { fields: "fields", value: "value", actions: "actions", cols: "cols", disabledOnInit: "disabledOnInit", disabled: "disabled" }, outputs: { ibSubmit: "ibSubmit" }, usesOnChanges: true, ngImport: i0, template: "<form (ngSubmit)=\"handleSubmit()\" [formGroup]=\"form\" class=\"ibForm\">\n\n <ng-container *ngFor=\"let field of fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-dynamic-form-control *ngSwitchCase=\"'control'\" class=\"ibFormRow\" [base]=\"field | asFormControl\" [form]=\"form\"></ib-dynamic-form-control>\n <ib-dynamic-form-array *ngSwitchCase=\"'array'\" class=\"ibFormRow\" [base]=\"field | asFormArray\" [form]=\"form\"></ib-dynamic-form-array>\n </ng-container>\n </ng-container>\n\n <div class=\"ibFormRow ibFormActions\">\n <button type=\"submit\" [disabled]=\"!form.valid\">Save</button>\n </div>\n</form>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.IbDynamicFormControlComponent, selector: "ib-dynamic-form-control", inputs: ["base", "form"] }, { kind: "component", type: i5.IbDynamicFormArrayComponent, selector: "ib-dynamic-form-array", inputs: ["base", "form"] }, { kind: "pipe", type: i6.IbFormArrayPipe, name: "asFormArray" }, { kind: "pipe", type: i6.IbFormControlPipe, name: "asFormControl" }] });
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: "ib-form", template: "<form (ngSubmit)=\"handleSubmit()\" [formGroup]=\"form\" class=\"ibForm\">\n\n <ng-container *ngFor=\"let field of fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-dynamic-form-control *ngSwitchCase=\"'control'\" class=\"ibFormRow\" [base]=\"field | asFormControl\" [form]=\"form\"></ib-dynamic-form-control>\n <ib-dynamic-form-array *ngSwitchCase=\"'array'\" class=\"ibFormRow\" [base]=\"field | asFormArray\" [form]=\"form\"></ib-dynamic-form-array>\n </ng-container>\n </ng-container>\n\n <div class=\"ibFormRow ibFormActions\">\n <button type=\"submit\" [disabled]=\"!form.valid\">Save</button>\n </div>\n</form>" }]
103
+ }], ctorParameters: () => [{ type: i1.IbFormControlService }], propDecorators: { fields: [{
104
+ type: Input
105
+ }], value: [{
106
+ type: Input
107
+ }], actions: [{
108
+ type: Input
109
+ }], cols: [{
110
+ type: Input
111
+ }], disabledOnInit: [{
112
+ type: Input
113
+ }], disabled: [{
114
+ type: Input
115
+ }], ibSubmit: [{
116
+ type: Output
117
+ }] } });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9mb3Jtcy9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9mb3Jtcy9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFxQjNDLE1BQU0sT0FBTyxzQkFBc0I7SUF1QmI7SUF0QlgsTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDM0IsS0FBSyxHQUE0QixFQUFFLENBQUM7SUFDcEMsT0FBTyxHQUFtQixDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3RCxJQUFJLENBQVM7SUFDdEI7Ozs7OztPQU1HO0lBQ00sY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzdDLElBQUksQ0FBbUI7SUFFdkIsY0FBYztJQUNHLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztJQUVqRSxjQUFjO0lBQ0csZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7SUFFbkUsWUFBb0IsRUFBd0I7UUFBeEIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7SUFBRyxDQUFDO0lBRWhELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFOUIsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDdkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQzFCLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLE1BQU0sWUFBWSxHQUFJLE1BQU0sQ0FBQyxZQUE4QixDQUFDLElBQUksQ0FDOUQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUMxQixDQUFDO1lBQ0YsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLElBQUksQ0FDVixzSEFBc0gsQ0FDdkgsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDekQsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBb0I7UUFDcEMsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO3VHQXBHVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiwrT0NoQ25DLDJvQkFZTzs7MkZEb0JNLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxTQUFTO3lGQUlWLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBJYkZvcm1Db250cm9sU2VydmljZSB9IGZyb20gXCIuLi9mb3JtLWNvbnRyb2wuc2VydmljZVwiO1xuaW1wb3J0IHsgSWJGb3JtRmllbGQgfSBmcm9tIFwiLi4vZm9ybXMudHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJYkZvcm1BY3Rpb24ge1xuICBrZXk/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhhbmRsZXI/OiAoZm9ybTogVW50eXBlZEZvcm1Hcm91cCkgPT4gdm9pZDtcbiAgb3B0aW9ucz86IGFueTtcbiAgcmVxdWlyZUNvbmZpcm1PbkRpcnR5PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEliRm9ybU9uQ2hhbmdlcyB7XG4gIGNoYW5nZXM6IFNpbXBsZUNoYW5nZXM7XG4gIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJpYi1mb3JtXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG59KVxuZXhwb3J0IGNsYXNzIEliRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZmllbGRzOiBJYkZvcm1GaWVsZFtdID0gW107XG4gIEBJbnB1dCgpIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBASW5wdXQoKSBhY3Rpb25zOiBJYkZvcm1BY3Rpb25bXSA9IFt7IGtleTogXCJzdWJtaXRcIiwgbGFiZWw6IFwiU2F2ZVwiIH1dO1xuICBASW5wdXQoKSBjb2xzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIHRoaXMgaW5wdXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXG4gICAqIFV0aWxpenphcmUgdW5hIHN1YnNjcmlwdGlvbiBhZCBgYWZ0ZXJJbml0KClgIHBlciBlc2VndWlyZSBjb2RpY2UgaW1tZWRpYXRhbWVudGUgZG9wbyBhdmVyXG4gICAqIGluaXppYWxpenphdG8gaWwgYEZvcm1Hcm91cGAgKGNvbWUgYGZvcm0uZGlzYWJsZSgpYClcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkT25Jbml0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBpYlN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVhZG9ubHkgb25Jbml0U3ViamVjdCA9IG5ldyBTdWJqZWN0PFVudHlwZWRGb3JtR3JvdXA+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvbkNoYW5nZXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8SWJGb3JtT25DaGFuZ2VzPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3M6IEliRm9ybUNvbnRyb2xTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuY3MudG9Gb3JtR3JvdXAodGhpcy5maWVsZHMpO1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmZvcm0/LmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtPy5lbmFibGUoKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkluaXRTdWJqZWN0Lm5leHQodGhpcy5mb3JtKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZE9uSW5pdCkge1xuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgZmllbGRzID0gY2hhbmdlcy5maWVsZHM7XG5cbiAgICBpZiAoZmllbGRzICYmICFmaWVsZHMuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLmNzLnRvRm9ybUdyb3VwKGZpZWxkcy5jdXJyZW50VmFsdWUpO1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBjaGFuZ2VzLnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh2YWx1ZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmZvcm0/LmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtPy5lbmFibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xzID0gY2hhbmdlcy5jb2xzO1xuICAgIGlmIChmaWVsZHMgJiYgY29scykge1xuICAgICAgY29uc3QgaGFzRm9ybUFycmF5ID0gKGZpZWxkcy5jdXJyZW50VmFsdWUgYXMgSWJGb3JtRmllbGRbXSkuZmluZChcbiAgICAgICAgKGYpID0+IGYucm9sZSA9PT0gXCJhcnJheVwiXG4gICAgICApO1xuICAgICAgaWYgKGhhc0Zvcm1BcnJheSAmJiBjb2xzLmN1cnJlbnRWYWx1ZSA+IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBJYkZvcm1BcnJheSBpcyBub3Qgc3VwcG9ydGVkIGluIGdyaWQgbW9kZSBhbmQgd2lsbCBub3QgYmUgc2hvd24uIFBsZWFzZSwgcmVtb3ZlIHRoZSBjb2xzIGlucHV0IGZyb20gaWItbWF0ZXJpYWwtZm9ybWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LnZhbHVlcyhjaGFuZ2VzKSkge1xuICAgICAgaWYgKCFwcm9wLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlc1N1YmplY3QubmV4dCh7IGNoYW5nZXMsIGZvcm06IHRoaXMuZm9ybSB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vbkluaXRTdWJqZWN0Py5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25DaGFuZ2VzU3ViamVjdD8uY29tcGxldGUoKTtcbiAgfVxuXG4gIGhhbmRsZVN1Ym1pdCgpIHtcbiAgICB0aGlzLmliU3VibWl0LmVtaXQodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uQ2xpY2soc291cmNlOiBJYkZvcm1BY3Rpb24pIHtcbiAgICBpZiAoc291cmNlLmtleSA9PT0gXCJzdWJtaXRcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzb3VyY2UuaGFuZGxlcih0aGlzLmZvcm0pO1xuICB9XG5cbiAgYWZ0ZXJJbml0KCk6IE9ic2VydmFibGU8VW50eXBlZEZvcm1Hcm91cD4ge1xuICAgIHJldHVybiB0aGlzLm9uSW5pdFN1YmplY3Q7XG4gIH1cblxuICBhZnRlckNoYW5nZXMoKTogT2JzZXJ2YWJsZTxJYkZvcm1PbkNoYW5nZXM+IHtcbiAgICByZXR1cm4gdGhpcy5vbkNoYW5nZXNTdWJqZWN0O1xuICB9XG59XG4iLCI8Zm9ybSAobmdTdWJtaXQpPVwiaGFuZGxlU3VibWl0KClcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImliRm9ybVwiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkLnJvbGVcIj5cbiAgICAgIDxpYi1keW5hbWljLWZvcm0tY29udHJvbCAqbmdTd2l0Y2hDYXNlPVwiJ2NvbnRyb2wnXCIgY2xhc3M9XCJpYkZvcm1Sb3dcIiBbYmFzZV09XCJmaWVsZCB8IGFzRm9ybUNvbnRyb2xcIiBbZm9ybV09XCJmb3JtXCI+PC9pYi1keW5hbWljLWZvcm0tY29udHJvbD5cbiAgICAgIDxpYi1keW5hbWljLWZvcm0tYXJyYXkgKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIiBjbGFzcz1cImliRm9ybVJvd1wiIFtiYXNlXT1cImZpZWxkIHwgYXNGb3JtQXJyYXlcIiBbZm9ybV09XCJmb3JtXCI+PC9pYi1keW5hbWljLWZvcm0tYXJyYXk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJpYkZvcm1Sb3cgaWJGb3JtQWN0aW9uc1wiPlxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiPlNhdmU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+Il19
@@ -0,0 +1,46 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../form-control.service";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/forms";
6
+ import * as i4 from "../dynamic-form-control/dynamic-form-control.component";
7
+ export class IbDynamicFormArrayComponent {
8
+ cs;
9
+ base;
10
+ form;
11
+ constructor(cs) {
12
+ this.cs = cs;
13
+ }
14
+ get array() {
15
+ return this.form.get(this.base.key);
16
+ }
17
+ get max() {
18
+ return this.base.options.max;
19
+ }
20
+ get lines() {
21
+ return this.array.controls.length;
22
+ }
23
+ getGroupAt(index) {
24
+ return this.array.at(index);
25
+ }
26
+ addField() {
27
+ this.array.push(this.cs.toFormGroup(this.base.fields));
28
+ this.base.addRow(this.array, this.lines);
29
+ }
30
+ removeField(index) {
31
+ const removedData = structuredClone(this.getGroupAt(index)?.getRawValue());
32
+ this.array.removeAt(index);
33
+ this.base.removeRow(this.array, this.lines, index, removedData);
34
+ }
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormArrayComponent, deps: [{ token: i1.IbFormControlService }], target: i0.ɵɵFactoryTarget.Component });
36
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: IbDynamicFormArrayComponent, selector: "ib-dynamic-form-array", inputs: { base: "base", form: "form" }, ngImport: i0, template: "<div [formGroup]=\"form\">\n\n <section class=\"ibFormArrayItem\" *ngFor=\"let line of array.controls; let index = index\">\n <ng-container *ngFor=\"let field of base.fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-dynamic-form-control *ngSwitchCase=\"'control'\" class=\"ibFormRow\" [base]=\"field\"\n [form]=\"getGroupAt(index)\"></ib-dynamic-form-control>\n <!-- <ib-dynamic-form-array *ngSwitchCase=\"'array'\" class=\"ibFormRow\" [base]=\"field\" [form]=\"form\"></ib-dynamic-form-array> -->\n </ng-container>\n </ng-container>\n <div class=\"ibFormRow ibFormActions\">\n <button *ngIf=\"lines > 1\" (click)=\"removeField(index)\" [disabled]=\"array.disabled\">-</button>\n <button *ngIf=\"lines - 1 === index\" (click)=\"addField()\" [disabled]=\"array.disabled\">Add</button>\n </div>\n </section>\n\n</div>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.IbDynamicFormControlComponent, selector: "ib-dynamic-form-control", inputs: ["base", "form"] }] });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormArrayComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: "ib-dynamic-form-array", template: "<div [formGroup]=\"form\">\n\n <section class=\"ibFormArrayItem\" *ngFor=\"let line of array.controls; let index = index\">\n <ng-container *ngFor=\"let field of base.fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-dynamic-form-control *ngSwitchCase=\"'control'\" class=\"ibFormRow\" [base]=\"field\"\n [form]=\"getGroupAt(index)\"></ib-dynamic-form-control>\n <!-- <ib-dynamic-form-array *ngSwitchCase=\"'array'\" class=\"ibFormRow\" [base]=\"field\" [form]=\"form\"></ib-dynamic-form-array> -->\n </ng-container>\n </ng-container>\n <div class=\"ibFormRow ibFormActions\">\n <button *ngIf=\"lines > 1\" (click)=\"removeField(index)\" [disabled]=\"array.disabled\">-</button>\n <button *ngIf=\"lines - 1 === index\" (click)=\"addField()\" [disabled]=\"array.disabled\">Add</button>\n </div>\n </section>\n\n</div>" }]
41
+ }], ctorParameters: () => [{ type: i1.IbFormControlService }], propDecorators: { base: [{
42
+ type: Input
43
+ }], form: [{
44
+ type: Input
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWFycmF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9mb3Jtcy9keW5hbWljLWZvcm0tYXJyYXkvZHluYW1pYy1mb3JtLWFycmF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9mb3Jtcy9keW5hbWljLWZvcm0tYXJyYXkvZHluYW1pYy1mb3JtLWFycmF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFTakQsTUFBTSxPQUFPLDJCQUEyQjtJQUlsQjtJQUhYLElBQUksQ0FBYztJQUNsQixJQUFJLENBQW1CO0lBRWhDLFlBQW9CLEVBQXdCO1FBQXhCLE9BQUUsR0FBRixFQUFFLENBQXNCO0lBQUcsQ0FBQztJQUVoRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFxQixDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQzt1R0EvQlUsMkJBQTJCOzJGQUEzQiwyQkFBMkIscUdDVHhDLG8zQkFnQk07OzJGRFBPLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSx1QkFBdUI7eUZBSXhCLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEliRm9ybUFycmF5IH0gZnJvbSBcIi4uL2FycmF5L2FycmF5XCI7XG5pbXBvcnQgeyBJYkZvcm1Db250cm9sU2VydmljZSB9IGZyb20gXCIuLi9mb3JtLWNvbnRyb2wuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiaWItZHluYW1pYy1mb3JtLWFycmF5XCIsXG4gIHRlbXBsYXRlVXJsOiBcImR5bmFtaWMtZm9ybS1hcnJheS5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBJYkR5bmFtaWNGb3JtQXJyYXlDb21wb25lbnQge1xuICBASW5wdXQoKSBiYXNlOiBJYkZvcm1BcnJheTtcbiAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNzOiBJYkZvcm1Db250cm9sU2VydmljZSkge31cblxuICBnZXQgYXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQodGhpcy5iYXNlLmtleSkgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldCBtYXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZS5vcHRpb25zLm1heDtcbiAgfVxuXG4gIGdldCBsaW5lcygpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheS5jb250cm9scy5sZW5ndGg7XG4gIH1cblxuICBnZXRHcm91cEF0KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheS5hdChpbmRleCkgYXMgVW50eXBlZEZvcm1Hcm91cDtcbiAgfVxuXG4gIGFkZEZpZWxkKCkge1xuICAgIHRoaXMuYXJyYXkucHVzaCh0aGlzLmNzLnRvRm9ybUdyb3VwKHRoaXMuYmFzZS5maWVsZHMpKTtcbiAgICB0aGlzLmJhc2UuYWRkUm93KHRoaXMuYXJyYXksIHRoaXMubGluZXMpXG4gIH1cblxuICByZW1vdmVGaWVsZChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVtb3ZlZERhdGEgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5nZXRHcm91cEF0KGluZGV4KT8uZ2V0UmF3VmFsdWUoKSlcbiAgICB0aGlzLmFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmJhc2UucmVtb3ZlUm93KHRoaXMuYXJyYXksIHRoaXMubGluZXMsIGluZGV4LCByZW1vdmVkRGF0YSk7XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJpYkZvcm1BcnJheUl0ZW1cIiAqbmdGb3I9XCJsZXQgbGluZSBvZiBhcnJheS5jb250cm9sczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBiYXNlLmZpZWxkc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGQucm9sZVwiPlxuICAgICAgICA8aWItZHluYW1pYy1mb3JtLWNvbnRyb2wgKm5nU3dpdGNoQ2FzZT1cIidjb250cm9sJ1wiIGNsYXNzPVwiaWJGb3JtUm93XCIgW2Jhc2VdPVwiZmllbGRcIlxuICAgICAgICAgIFtmb3JtXT1cImdldEdyb3VwQXQoaW5kZXgpXCI+PC9pYi1keW5hbWljLWZvcm0tY29udHJvbD5cbiAgICAgICAgPCEtLSA8aWItZHluYW1pYy1mb3JtLWFycmF5ICpuZ1N3aXRjaENhc2U9XCInYXJyYXknXCIgY2xhc3M9XCJpYkZvcm1Sb3dcIiBbYmFzZV09XCJmaWVsZFwiIFtmb3JtXT1cImZvcm1cIj48L2liLWR5bmFtaWMtZm9ybS1hcnJheT4gLS0+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiaWJGb3JtUm93IGliRm9ybUFjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJsaW5lcyA+IDFcIiAoY2xpY2spPVwicmVtb3ZlRmllbGQoaW5kZXgpXCIgW2Rpc2FibGVkXT1cImFycmF5LmRpc2FibGVkXCI+LTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImxpbmVzIC0gMSA9PT0gaW5kZXhcIiAoY2xpY2spPVwiYWRkRmllbGQoKVwiIFtkaXNhYmxlZF09XCJhcnJheS5kaXNhYmxlZFwiPkFkZDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/forms";
5
+ /**
6
+ * @deprecated Do not use this component. It will be removed in a future release
7
+ */
8
+ export class IbDynamicFormControlComponent {
9
+ base;
10
+ form;
11
+ get self() { return this.form.get(this.base.key); }
12
+ hasError(e) {
13
+ return this.self.hasError(e);
14
+ }
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: IbDynamicFormControlComponent, selector: "ib-dynamic-form-control", inputs: { base: "base", form: "form" }, host: { classAttribute: "ibFormControl" }, ngImport: i0, template: "<div [formGroup]=\"form\">\n <label [attr.for]=\"base.key\" class=\"ibFormControl-label\">{{base.label}}</label>\n\n <div [ngSwitch]=\"base.controlType\">\n\n <input\n [ngSwitch]=\"base.controlType\"\n *ngSwitchCase=\"'textbox'\"\n [formControlName]=\"base.key\"\n [type]=\"base.type\"\n (keyup)=\"base.change(self)\"\n >\n\n <select\n *ngSwitchCase=\"'dropdown'\"\n [formControlName]=\"base.key\"\n (change)=\"base.change(self)\"\n >\n <option *ngFor=\"let opt of base.options\" [value]=\"opt.key\">{{opt.value}}</option>\n </select>\n\n </div>\n\n <div class=\"ibFormControl-errorMessage\" *ngIf=\"self.invalid && self.dirty\">{{base.label}} is required</div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormControlComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'ib-dynamic-form-control', host: {
21
+ class: 'ibFormControl'
22
+ }, template: "<div [formGroup]=\"form\">\n <label [attr.for]=\"base.key\" class=\"ibFormControl-label\">{{base.label}}</label>\n\n <div [ngSwitch]=\"base.controlType\">\n\n <input\n [ngSwitch]=\"base.controlType\"\n *ngSwitchCase=\"'textbox'\"\n [formControlName]=\"base.key\"\n [type]=\"base.type\"\n (keyup)=\"base.change(self)\"\n >\n\n <select\n *ngSwitchCase=\"'dropdown'\"\n [formControlName]=\"base.key\"\n (change)=\"base.change(self)\"\n >\n <option *ngFor=\"let opt of base.options\" [value]=\"opt.key\">{{opt.value}}</option>\n </select>\n\n </div>\n\n <div class=\"ibFormControl-errorMessage\" *ngIf=\"self.invalid && self.dirty\">{{base.label}} is required</div>\n</div>\n" }]
23
+ }], propDecorators: { base: [{
24
+ type: Input
25
+ }], form: [{
26
+ type: Input
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9pbm9iZXRhLXVpL3VpL2Zvcm1zL2R5bmFtaWMtZm9ybS1jb250cm9sL2R5bmFtaWMtZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9mb3Jtcy9keW5hbWljLWZvcm0tY29udHJvbC9keW5hbWljLWZvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVd6RDs7R0FFRztBQUNILE1BQU0sT0FBTyw2QkFBNkI7SUFDL0IsSUFBSSxDQUF5QjtJQUM3QixJQUFJLENBQW1CO0lBRWhDLElBQUksSUFBSSxLQUF5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixDQUFDLENBQUMsQ0FBQztJQUU3RixRQUFRLENBQUMsQ0FBQztRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQzt1R0FSVSw2QkFBNkI7MkZBQTdCLDZCQUE2QixrSkNkMUMsaXVCQXlCQTs7MkZEWGEsNkJBQTZCO2tCQVZ6QyxTQUFTOytCQUNFLHlCQUF5QixRQUU3Qjt3QkFDSixLQUFLLEVBQUUsZUFBZTtxQkFDdkI7OEJBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWJGb3JtQ29udHJvbEJhc2UgfSBmcm9tICcuLi9jb250cm9scy9mb3JtLWNvbnRyb2wtYmFzZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2liLWR5bmFtaWMtZm9ybS1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnaWJGb3JtQ29udHJvbCdcbiAgfSxcbn0pXG4vKipcbiAqIEBkZXByZWNhdGVkIERvIG5vdCB1c2UgdGhpcyBjb21wb25lbnQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBJYkR5bmFtaWNGb3JtQ29udHJvbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGJhc2U6IEliRm9ybUNvbnRyb2xCYXNlPGFueT47XG4gIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgZ2V0IHNlbGYoKTogVW50eXBlZEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybS5nZXQodGhpcy5iYXNlLmtleSkgYXMgVW50eXBlZEZvcm1Db250cm9sOyB9XG5cbiAgaGFzRXJyb3IoZSkge1xuICAgIHJldHVybiB0aGlzLnNlbGYuaGFzRXJyb3IoZSk7XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxsYWJlbCBbYXR0ci5mb3JdPVwiYmFzZS5rZXlcIiBjbGFzcz1cImliRm9ybUNvbnRyb2wtbGFiZWxcIj57e2Jhc2UubGFiZWx9fTwvbGFiZWw+XG5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwiYmFzZS5jb250cm9sVHlwZVwiPlxuXG4gICAgPGlucHV0XG4gICAgICBbbmdTd2l0Y2hdPVwiYmFzZS5jb250cm9sVHlwZVwiXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gnXCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiYmFzZS5rZXlcIlxuICAgICAgW3R5cGVdPVwiYmFzZS50eXBlXCJcbiAgICAgIChrZXl1cCk9XCJiYXNlLmNoYW5nZShzZWxmKVwiXG4gICAgPlxuXG4gICAgPHNlbGVjdFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkcm9wZG93bidcIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJiYXNlLmtleVwiXG4gICAgICAoY2hhbmdlKT1cImJhc2UuY2hhbmdlKHNlbGYpXCJcbiAgICA+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2YgYmFzZS5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdC5rZXlcIj57e29wdC52YWx1ZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImliRm9ybUNvbnRyb2wtZXJyb3JNZXNzYWdlXCIgKm5nSWY9XCJzZWxmLmludmFsaWQgJiYgc2VsZi5kaXJ0eVwiPnt7YmFzZS5sYWJlbH19IGlzIHJlcXVpcmVkPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,57 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { IbFormControlBase } from "./controls/form-control-base";
3
+ import { UntypedFormControl, Validators, UntypedFormGroup, UntypedFormArray, } from "@angular/forms";
4
+ import { IbFormArray } from "./array/array";
5
+ import * as i0 from "@angular/core";
6
+ export class IbFormControlService {
7
+ constructor() { }
8
+ toFormGroup(fields) {
9
+ const group = new UntypedFormGroup({});
10
+ for (const field of fields) {
11
+ if (!field.key) {
12
+ continue;
13
+ }
14
+ if (field instanceof IbFormControlBase) {
15
+ group.addControl(field.key, this.toControl(field));
16
+ }
17
+ if (field instanceof IbFormArray) {
18
+ group.addControl(field.key, this.toFormArray(field));
19
+ }
20
+ }
21
+ return group;
22
+ }
23
+ toControl(field) {
24
+ const elem = {
25
+ value: field.value === undefined ? null : field.value,
26
+ disabled: field.disabled,
27
+ };
28
+ let validators = [];
29
+ if (field.validators && field.validators.length) {
30
+ validators = validators.concat(field.validators);
31
+ }
32
+ if (field.required) {
33
+ validators.push(Validators.required);
34
+ }
35
+ return new UntypedFormControl(elem, validators);
36
+ }
37
+ toFormArray(source) {
38
+ const formArray = new UntypedFormArray([]);
39
+ const patchValue = formArray.patchValue;
40
+ formArray.patchValue = (value, options) => {
41
+ formArray.controls = [];
42
+ let i = Math.min(Math.max(value.length, 0), source.options.max);
43
+ while (i--) {
44
+ formArray.push(this.toFormGroup(source.fields));
45
+ }
46
+ patchValue.call(formArray, value, options);
47
+ };
48
+ return formArray;
49
+ }
50
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormControlService, providedIn: "root" });
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormControlService, decorators: [{
54
+ type: Injectable,
55
+ args: [{ providedIn: "root" }]
56
+ }], ctorParameters: () => [] });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkvZm9ybXMvZm9ybS1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixnQkFBZSxDQUFDO0lBRWhCLFdBQVcsQ0FBQyxNQUFxQjtRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZixTQUFTO1lBQ1gsQ0FBQztZQUVELElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3ZDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDcEQsQ0FBQztZQUVELElBQUksS0FBSyxZQUFZLFdBQVcsRUFBRSxDQUFDO2dCQUNqQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTZCO1FBQ3JDLE1BQU0sSUFBSSxHQUFHO1lBQ1gsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3JELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDO1FBQ0YsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hELFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFtQjtRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDeEMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQVksRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUMvQyxTQUFTLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDWCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUNELFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUE7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO3VHQWxEVSxvQkFBb0I7MkdBQXBCLG9CQUFvQixjQURQLE1BQU07OzJGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJYkZvcm1Db250cm9sQmFzZSB9IGZyb20gXCIuL2NvbnRyb2xzL2Zvcm0tY29udHJvbC1iYXNlXCI7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFVudHlwZWRGb3JtQXJyYXksXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgSWJGb3JtRmllbGQgfSBmcm9tIFwiLi9mb3Jtcy50eXBlc1wiO1xuaW1wb3J0IHsgSWJGb3JtQXJyYXkgfSBmcm9tIFwiLi9hcnJheS9hcnJheVwiO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgSWJGb3JtQ29udHJvbFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgdG9Gb3JtR3JvdXAoZmllbGRzOiBJYkZvcm1GaWVsZFtdKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgaWYgKCFmaWVsZC5rZXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChmaWVsZCBpbnN0YW5jZW9mIEliRm9ybUNvbnRyb2xCYXNlKSB7XG4gICAgICAgIGdyb3VwLmFkZENvbnRyb2woZmllbGQua2V5LCB0aGlzLnRvQ29udHJvbChmaWVsZCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZCBpbnN0YW5jZW9mIEliRm9ybUFycmF5KSB7XG4gICAgICAgIGdyb3VwLmFkZENvbnRyb2woZmllbGQua2V5LCB0aGlzLnRvRm9ybUFycmF5KGZpZWxkKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgdG9Db250cm9sKGZpZWxkOiBJYkZvcm1Db250cm9sQmFzZTxhbnk+KSB7XG4gICAgY29uc3QgZWxlbSA9IHtcbiAgICAgIHZhbHVlOiBmaWVsZC52YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGZpZWxkLnZhbHVlLFxuICAgICAgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkLFxuICAgIH07XG4gICAgbGV0IHZhbGlkYXRvcnMgPSBbXTtcbiAgICBpZiAoZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCkge1xuICAgICAgdmFsaWRhdG9ycyA9IHZhbGlkYXRvcnMuY29uY2F0KGZpZWxkLnZhbGlkYXRvcnMpO1xuICAgIH1cbiAgICBpZiAoZmllbGQucmVxdWlyZWQpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZWxlbSwgdmFsaWRhdG9ycylcbiAgfVxuXG4gIHRvRm9ybUFycmF5KHNvdXJjZTogSWJGb3JtQXJyYXkpIHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSk7XG4gICAgY29uc3QgcGF0Y2hWYWx1ZSA9IGZvcm1BcnJheS5wYXRjaFZhbHVlO1xuICAgIGZvcm1BcnJheS5wYXRjaFZhbHVlID0gKHZhbHVlOiBhbnlbXSwgb3B0aW9ucykgPT4ge1xuICAgICAgZm9ybUFycmF5LmNvbnRyb2xzID0gW107XG4gICAgICBsZXQgaSA9IE1hdGgubWluKE1hdGgubWF4KHZhbHVlLmxlbmd0aCwgMCksIHNvdXJjZS5vcHRpb25zLm1heCk7XG4gICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGZvcm1BcnJheS5wdXNoKHRoaXMudG9Gb3JtR3JvdXAoc291cmNlLmZpZWxkcykpO1xuICAgICAgfVxuICAgICAgcGF0Y2hWYWx1ZS5jYWxsKGZvcm1BcnJheSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybUFycmF5O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { NgModule } from "@angular/core";
3
+ import { ReactiveFormsModule } from "@angular/forms";
4
+ import { IbDynamicFormArrayComponent } from "./dynamic-form-array/dynamic-form-array.component";
5
+ import { IbDynamicFormControlComponent } from "./dynamic-form-control/dynamic-form-control.component";
6
+ import { IbDynamicFormComponent } from "./dynamic-form/dynamic-form.component";
7
+ import { IbFormControlService } from "./form-control.service";
8
+ import { IbFormPipeModule } from "./forms.pipes";
9
+ import * as i0 from "@angular/core";
10
+ export class IbDynamicFormsModule {
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormsModule, declarations: [IbDynamicFormControlComponent,
13
+ IbDynamicFormComponent,
14
+ IbDynamicFormArrayComponent], imports: [CommonModule, ReactiveFormsModule, IbFormPipeModule], exports: [IbDynamicFormComponent,
15
+ IbDynamicFormControlComponent,
16
+ IbDynamicFormArrayComponent] });
17
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormsModule, providers: [IbFormControlService], imports: [CommonModule, ReactiveFormsModule, IbFormPipeModule] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDynamicFormsModule, decorators: [{
20
+ type: NgModule,
21
+ args: [{
22
+ declarations: [
23
+ IbDynamicFormControlComponent,
24
+ IbDynamicFormComponent,
25
+ IbDynamicFormArrayComponent,
26
+ ],
27
+ imports: [CommonModule, ReactiveFormsModule, IbFormPipeModule],
28
+ providers: [IbFormControlService],
29
+ exports: [
30
+ IbDynamicFormComponent,
31
+ IbDynamicFormControlComponent,
32
+ IbDynamicFormArrayComponent,
33
+ ],
34
+ }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9pbm9iZXRhLXVpL3VpL2Zvcm1zL2Zvcm1zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBZ0JqRCxNQUFNLE9BQU8sb0JBQW9CO3VHQUFwQixvQkFBb0I7d0dBQXBCLG9CQUFvQixpQkFaN0IsNkJBQTZCO1lBQzdCLHNCQUFzQjtZQUN0QiwyQkFBMkIsYUFFbkIsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixhQUczRCxzQkFBc0I7WUFDdEIsNkJBQTZCO1lBQzdCLDJCQUEyQjt3R0FHbEIsb0JBQW9CLGFBUHBCLENBQUMsb0JBQW9CLENBQUMsWUFEdkIsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQjs7MkZBUWxELG9CQUFvQjtrQkFkaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osNkJBQTZCO3dCQUM3QixzQkFBc0I7d0JBQ3RCLDJCQUEyQjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixDQUFDO29CQUM5RCxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIsNkJBQTZCO3dCQUM3QiwyQkFBMkI7cUJBQzVCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgSWJEeW5hbWljRm9ybUFycmF5Q29tcG9uZW50IH0gZnJvbSBcIi4vZHluYW1pYy1mb3JtLWFycmF5L2R5bmFtaWMtZm9ybS1hcnJheS5jb21wb25lbnRcIjtcbmltcG9ydCB7IEliRHluYW1pY0Zvcm1Db250cm9sQ29tcG9uZW50IH0gZnJvbSBcIi4vZHluYW1pYy1mb3JtLWNvbnRyb2wvZHluYW1pYy1mb3JtLWNvbnRyb2wuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJYkR5bmFtaWNGb3JtQ29tcG9uZW50IH0gZnJvbSBcIi4vZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnRcIjtcbmltcG9ydCB7IEliRm9ybUNvbnRyb2xTZXJ2aWNlIH0gZnJvbSBcIi4vZm9ybS1jb250cm9sLnNlcnZpY2VcIjtcbmltcG9ydCB7IEliRm9ybVBpcGVNb2R1bGUgfSBmcm9tIFwiLi9mb3Jtcy5waXBlc1wiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBJYkR5bmFtaWNGb3JtQ29udHJvbENvbXBvbmVudCxcbiAgICBJYkR5bmFtaWNGb3JtQ29tcG9uZW50LFxuICAgIEliRHluYW1pY0Zvcm1BcnJheUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSWJGb3JtUGlwZU1vZHVsZV0sXG4gIHByb3ZpZGVyczogW0liRm9ybUNvbnRyb2xTZXJ2aWNlXSxcbiAgZXhwb3J0czogW1xuICAgIEliRHluYW1pY0Zvcm1Db21wb25lbnQsXG4gICAgSWJEeW5hbWljRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgSWJEeW5hbWljRm9ybUFycmF5Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJYkR5bmFtaWNGb3Jtc01vZHVsZSB7fVxuIl19
@@ -0,0 +1,41 @@
1
+ import { NgModule, Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class IbFormControlPipe {
4
+ transform(value) {
5
+ return value;
6
+ }
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormControlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
8
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: IbFormControlPipe, name: "asFormControl" });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormControlPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'asFormControl'
14
+ }]
15
+ }] });
16
+ export class IbFormArrayPipe {
17
+ transform(value) {
18
+ return value;
19
+ }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
21
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: IbFormArrayPipe, name: "asFormArray" });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormArrayPipe, decorators: [{
24
+ type: Pipe,
25
+ args: [{
26
+ name: 'asFormArray',
27
+ }]
28
+ }] });
29
+ export class IbFormPipeModule {
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: IbFormPipeModule, declarations: [IbFormArrayPipe, IbFormControlPipe], exports: [IbFormArrayPipe, IbFormControlPipe] });
32
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormPipeModule });
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFormPipeModule, decorators: [{
35
+ type: NgModule,
36
+ args: [{
37
+ exports: [IbFormArrayPipe, IbFormControlPipe],
38
+ declarations: [IbFormArrayPipe, IbFormControlPipe],
39
+ }]
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkvZm9ybXMvZm9ybXMucGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQVE5RCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFNBQVMsQ0FBQyxLQUFrQjtRQUMxQixPQUFPLEtBQWtDLENBQUM7SUFDNUMsQ0FBQzt1R0FIVSxpQkFBaUI7cUdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFIN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtpQkFDdEI7O0FBVUQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsU0FBUyxDQUFDLEtBQWtCO1FBQzFCLE9BQU8sS0FBb0IsQ0FBQztJQUM5QixDQUFDO3VHQUhVLGVBQWU7cUdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFIM0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtpQkFDcEI7O0FBV0QsTUFBTSxPQUFPLGdCQUFnQjt1R0FBaEIsZ0JBQWdCO3dHQUFoQixnQkFBZ0IsaUJBVmhCLGVBQWUsRUFUZixpQkFBaUIsYUFTakIsZUFBZSxFQVRmLGlCQUFpQjt3R0FtQmpCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLENBQUM7b0JBQzdDLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztpQkFDbkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWJGb3JtQXJyYXkgfSBmcm9tICcuL2FycmF5L2FycmF5JztcbmltcG9ydCB7IEliRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSAnLi9jb250cm9scy9mb3JtLWNvbnRyb2wtYmFzZSc7XG5pbXBvcnQgeyBJYkZvcm1GaWVsZCB9IGZyb20gJy4vZm9ybXMudHlwZXMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdhc0Zvcm1Db250cm9sJ1xufSlcbmV4cG9ydCBjbGFzcyBJYkZvcm1Db250cm9sUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IEliRm9ybUZpZWxkKTogSWJGb3JtQ29udHJvbEJhc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIEliRm9ybUNvbnRyb2xCYXNlPHN0cmluZz47XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnYXNGb3JtQXJyYXknLFxufSlcbmV4cG9ydCBjbGFzcyBJYkZvcm1BcnJheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBJYkZvcm1GaWVsZCk6IEliRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdmFsdWUgYXMgSWJGb3JtQXJyYXk7XG4gIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW0liRm9ybUFycmF5UGlwZSwgSWJGb3JtQ29udHJvbFBpcGVdLFxuICBkZWNsYXJhdGlvbnM6IFtJYkZvcm1BcnJheVBpcGUsIEliRm9ybUNvbnRyb2xQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgSWJGb3JtUGlwZU1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkvZm9ybXMvZm9ybXMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEliRm9ybUFycmF5IH0gZnJvbSBcIi4vYXJyYXkvYXJyYXlcIjtcbmltcG9ydCB7IEliRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSBcIi4vY29udHJvbHMvZm9ybS1jb250cm9sLWJhc2VcIjtcblxuZXhwb3J0IHR5cGUgSWJGb3JtRmllbGQgPSBJYkZvcm1Db250cm9sQmFzZTxhbnk+IHwgSWJGb3JtQXJyYXk7Il19
@@ -0,0 +1,12 @@
1
+ export * from "./array/array";
2
+ export * from "./controls/checkbox";
3
+ export * from "./controls/dropdown";
4
+ export * from "./controls/form-control-base";
5
+ export * from "./controls/radio";
6
+ export * from "./controls/textbox";
7
+ export * from "./dynamic-form-array/dynamic-form-array.component";
8
+ export * from "./dynamic-form-control/dynamic-form-control.component";
9
+ export * from "./dynamic-form/dynamic-form.component";
10
+ export * from "./form-control.service";
11
+ export * from "./forms.module";
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkvZm9ybXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FycmF5L2FycmF5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb250cm9scy9jaGVja2JveFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29udHJvbHMvZHJvcGRvd25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnRyb2xzL2Zvcm0tY29udHJvbC1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb250cm9scy9yYWRpb1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29udHJvbHMvdGV4dGJveFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZHluYW1pYy1mb3JtLWFycmF5L2R5bmFtaWMtZm9ybS1hcnJheS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2R5bmFtaWMtZm9ybS1jb250cm9sL2R5bmFtaWMtZm9ybS1jb250cm9sLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zvcm0tY29udHJvbC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3Jtcy5tb2R1bGVcIjtcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { Directive } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class IbFilterActionGroup {
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFilterActionGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: IbFilterActionGroup, isStandalone: true, selector: "ib-filter-action-group", ngImport: i0 });
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFilterActionGroup, decorators: [{
8
+ type: Directive,
9
+ args: [{
10
+ standalone: true,
11
+ selector: "ib-filter-action-group",
12
+ }]
13
+ }] });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWFjdGlvbi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkva2FpLWZpbHRlci9maWx0ZXItYnV0dG9uL2ZpbHRlci1hY3Rpb24tZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTFDLE1BQU0sT0FBTyxtQkFBbUI7dUdBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJpYi1maWx0ZXItYWN0aW9uLWdyb3VwXCIsXG59KVxuZXhwb3J0IGNsYXNzIEliRmlsdGVyQWN0aW9uR3JvdXAge31cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, ViewChild } from "@angular/core";
2
+ import { MatButtonModule } from "@angular/material/button";
3
+ import { MatDividerModule } from "@angular/material/divider";
4
+ import { MatIconModule } from "@angular/material/icon";
5
+ import { MatMenuModule, MatMenuTrigger } from "@angular/material/menu";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/button";
8
+ import * as i2 from "@angular/material/icon";
9
+ import * as i3 from "@angular/material/menu";
10
+ import * as i4 from "@angular/material/divider";
11
+ export class IbFilterButton {
12
+ trigger;
13
+ closeMenu() {
14
+ this.trigger.closeMenu();
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFilterButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: IbFilterButton, isStandalone: true, selector: "ib-filter-button", viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<button class=\"ib-filter-button\" [matMenuTriggerFor]=\"menu\" mat-stroked-button>\n <section>\n <ng-content select=\"[ib-filter-name]\"></ng-content>\n <ng-content select=\"[ib-filter-value]\"></ng-content>\n </section>\n <mat-icon iconPositionEnd>arrow_drop_down</mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <section (click)=\"$event.stopPropagation();\" style=\"display:flex;flex-direction: column; width: 280px\">\n <ng-content></ng-content>\n <mat-divider></mat-divider>\n <section style=\"display:flex; justify-content: flex-end; margin-right: 1em; margin-top: 0.5em\">\n <ng-content select=\"ib-filter-action-group\"></ng-content>\n </section>\n </section>\n</mat-menu>", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbFilterButton, decorators: [{
20
+ type: Component,
21
+ args: [{ standalone: true, imports: [
22
+ MatButtonModule,
23
+ MatIconModule,
24
+ MatMenuModule,
25
+ MatDividerModule
26
+ ], selector: "ib-filter-button", template: "<button class=\"ib-filter-button\" [matMenuTriggerFor]=\"menu\" mat-stroked-button>\n <section>\n <ng-content select=\"[ib-filter-name]\"></ng-content>\n <ng-content select=\"[ib-filter-value]\"></ng-content>\n </section>\n <mat-icon iconPositionEnd>arrow_drop_down</mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <section (click)=\"$event.stopPropagation();\" style=\"display:flex;flex-direction: column; width: 280px\">\n <ng-content></ng-content>\n <mat-divider></mat-divider>\n <section style=\"display:flex; justify-content: flex-end; margin-right: 1em; margin-top: 0.5em\">\n <ng-content select=\"ib-filter-action-group\"></ng-content>\n </section>\n </section>\n</mat-menu>" }]
27
+ }], propDecorators: { trigger: [{
28
+ type: ViewChild,
29
+ args: [MatMenuTrigger]
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkva2FpLWZpbHRlci9maWx0ZXItYnV0dG9uL2ZpbHRlci1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9pbm9iZXRhLXVpL3VpL2thaS1maWx0ZXIvZmlsdGVyLWJ1dHRvbi9maWx0ZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBYXZFLE1BQU0sT0FBTyxjQUFjO0lBQ0UsT0FBTyxDQUFpQjtJQUVuRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDO3VHQUxVLGNBQWM7MkZBQWQsY0FBYyxxSEFDZCxjQUFjLGdEQ2xCM0IsOHNCQWdCVywyQ0RQUCxlQUFlLDJOQUNmLGFBQWEsbUxBQ2IsYUFBYSx5bUJBQ2IsZ0JBQWdCOzsyRkFLUCxjQUFjO2tCQVgxQixTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCLFlBQ1Msa0JBQWtCOzhCQUlELE9BQU87c0JBQWpDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlclwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiBcImliLWZpbHRlci1idXR0b25cIixcbiAgdGVtcGxhdGVVcmw6IFwiZmlsdGVyLWJ1dHRvbi5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBJYkZpbHRlckJ1dHRvbiB7XG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIGNsb3NlTWVudSgpIHtcbiAgICB0aGlzLnRyaWdnZXIuY2xvc2VNZW51KCk7XG4gIH1cbn1cbiIsIjxidXR0b24gY2xhc3M9XCJpYi1maWx0ZXItYnV0dG9uXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBtYXQtc3Ryb2tlZC1idXR0b24+XG4gIDxzZWN0aW9uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpYi1maWx0ZXItbmFtZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2liLWZpbHRlci12YWx1ZV1cIj48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbiAgPG1hdC1pY29uIGljb25Qb3NpdGlvbkVuZD5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuPC9idXR0b24+XG5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgPHNlY3Rpb24gKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB3aWR0aDogMjgwcHhcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPHNlY3Rpb24gc3R5bGU9XCJkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IG1hcmdpbi1yaWdodDogMWVtOyBtYXJnaW4tdG9wOiAwLjVlbVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWItZmlsdGVyLWFjdGlvbi1ncm91cFwiPjwvbmctY29udGVudD5cbiAgICA8L3NlY3Rpb24+XG4gIDwvc2VjdGlvbj5cbjwvbWF0LW1lbnU+Il19