@tft/crispr-forms 13.0.23 → 14.0.1-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/README.md +77 -76
  2. package/esm2020/public-api.mjs +5 -0
  3. package/esm2020/src/index.mjs +2 -0
  4. package/esm2020/src/lib/crispr-forms.module.mjs +57 -0
  5. package/esm2020/src/lib/field-component-map.const.mjs +27 -0
  6. package/esm2020/src/lib/field.directive.mjs +69 -0
  7. package/esm2020/src/lib/form/form.component.mjs +63 -0
  8. package/esm2020/src/lib/form-group-list/form-group-list.component.mjs +93 -0
  9. package/esm2020/src/lib/form-group-list/index.mjs +2 -0
  10. package/esm2020/src/lib/pipes/crispr-pipes.module.mjs +24 -0
  11. package/esm2020/src/lib/pipes/initial-control-value.pipe.mjs +21 -0
  12. package/esm2020/src/lib/public_api.mjs +3 -0
  13. package/esm2020/src/lib/sub-group/index.mjs +3 -0
  14. package/esm2020/src/lib/sub-group/sub-group.component.mjs +21 -0
  15. package/esm2020/src/lib/sub-group/sub-group.module.mjs +42 -0
  16. package/esm2020/tft-crispr-forms.mjs +2 -2
  17. package/esm2020/ui/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +127 -0
  18. package/esm2020/ui/autocomplete-chiplist-field/index.mjs +2 -0
  19. package/esm2020/ui/autocomplete-field/autocomplete-field.component.mjs +90 -0
  20. package/esm2020/ui/autocomplete-field/index.mjs +2 -0
  21. package/esm2020/ui/button/button.component.mjs +46 -0
  22. package/esm2020/ui/button/index.mjs +2 -0
  23. package/esm2020/ui/checkbox-field/checkbox-field.component.mjs +42 -0
  24. package/esm2020/ui/checkbox-field/index.mjs +2 -0
  25. package/esm2020/ui/datepicker-field/datepicker-field.component.mjs +60 -0
  26. package/esm2020/ui/datepicker-field/index.mjs +2 -0
  27. package/esm2020/ui/divider/divider.component.mjs +28 -0
  28. package/esm2020/ui/divider/index.mjs +2 -0
  29. package/esm2020/ui/field-container/field-container.component.mjs +58 -0
  30. package/esm2020/ui/field-container/public-api.mjs +2 -0
  31. package/esm2020/ui/field-container/tft-crispr-forms-ui-field-container.mjs +5 -0
  32. package/esm2020/ui/file-dropzone/file-dropzone.directive.mjs +40 -0
  33. package/esm2020/ui/file-dropzone/public-api.mjs +2 -0
  34. package/esm2020/ui/file-dropzone/tft-crispr-forms-ui-file-dropzone.mjs +5 -0
  35. package/esm2020/ui/file-upload/file-upload.component.mjs +108 -0
  36. package/esm2020/ui/file-upload/index.mjs +2 -0
  37. package/esm2020/ui/heading/heading.component.mjs +31 -0
  38. package/esm2020/ui/heading/public-api.mjs +2 -0
  39. package/esm2020/ui/heading/tft-crispr-forms-ui-heading.mjs +5 -0
  40. package/esm2020/ui/image-upload-field/image-upload-field.component.mjs +179 -0
  41. package/esm2020/ui/image-upload-field/public-api.mjs +2 -0
  42. package/esm2020/ui/image-upload-field/tft-crispr-forms-ui-image-upload-field.mjs +5 -0
  43. package/esm2020/ui/info/info.component.mjs +23 -0
  44. package/esm2020/ui/info/public-api.mjs +2 -0
  45. package/esm2020/ui/info/tft-crispr-forms-ui-info.mjs +5 -0
  46. package/esm2020/ui/input-field/index.mjs +2 -0
  47. package/esm2020/ui/input-field/input-field.component.mjs +38 -0
  48. package/esm2020/ui/option/index.mjs +2 -0
  49. package/esm2020/ui/option/option.component.mjs +19 -0
  50. package/esm2020/ui/public-api.mjs +21 -0
  51. package/esm2020/ui/radio-field/index.mjs +2 -0
  52. package/esm2020/ui/radio-field/radio-field.component.mjs +36 -0
  53. package/esm2020/ui/select-field/index.mjs +2 -0
  54. package/esm2020/ui/select-field/select-field.component.mjs +74 -0
  55. package/esm2020/ui/selected-file/public-api.mjs +2 -0
  56. package/esm2020/ui/selected-file/selected-file.component.mjs +26 -0
  57. package/esm2020/ui/selected-file/tft-crispr-forms-ui-selected-file.mjs +5 -0
  58. package/esm2020/ui/slider-field/index.mjs +2 -0
  59. package/esm2020/ui/slider-field/slider-field.component.mjs +41 -0
  60. package/esm2020/ui/textarea-field/index.mjs +2 -0
  61. package/esm2020/ui/textarea-field/textarea-field.component.mjs +39 -0
  62. package/esm2020/ui/tft-crispr-forms-ui.mjs +5 -0
  63. package/esm2020/ui/unit-conversion-field/index.mjs +2 -0
  64. package/esm2020/ui/unit-conversion-field/unit-conversion-field.component.mjs +81 -0
  65. package/esm2020/utils/abstracts/autocomplete-field.abstract.mjs +30 -0
  66. package/esm2020/utils/abstracts/crispr-control.mixin.mjs +27 -0
  67. package/esm2020/utils/abstracts/crispr-field.abstract.mjs +20 -0
  68. package/esm2020/utils/abstracts/index.mjs +4 -0
  69. package/esm2020/utils/functions/buildFormGroupFromConfig.mjs +28 -0
  70. package/esm2020/utils/functions/callOptionsIfFunction.mjs +4 -0
  71. package/esm2020/utils/functions/createControlForType.mjs +19 -0
  72. package/esm2020/utils/functions/filterOptionsByLabel.mjs +11 -0
  73. package/esm2020/utils/functions/image-compression.helpers.mjs +50 -0
  74. package/esm2020/utils/functions/index.mjs +8 -0
  75. package/esm2020/utils/functions/isControlConfig.mjs +7 -0
  76. package/esm2020/utils/functions/observablifyOptions.mjs +29 -0
  77. package/esm2020/utils/models/autocomplete-chiplist-field.config.mjs +2 -0
  78. package/esm2020/utils/models/autocomplete-field.config.mjs +2 -0
  79. package/esm2020/utils/models/button.config.mjs +2 -0
  80. package/esm2020/utils/models/checkbox-field.config.mjs +2 -0
  81. package/esm2020/utils/models/crispr-field.config.mjs +23 -0
  82. package/esm2020/utils/models/datepicker-field.config.mjs +2 -0
  83. package/esm2020/utils/models/divider.config.mjs +2 -0
  84. package/esm2020/utils/models/file-upload-field.config.mjs +2 -0
  85. package/esm2020/utils/models/form-group-list.config.mjs +2 -0
  86. package/esm2020/utils/models/heading.config.mjs +3 -0
  87. package/esm2020/utils/models/image-upload-field.config.mjs +2 -0
  88. package/esm2020/utils/models/index.mjs +18 -0
  89. package/esm2020/utils/models/input-field.config.mjs +2 -0
  90. package/esm2020/utils/models/radio-field.config.mjs +2 -0
  91. package/esm2020/utils/models/select-field.config.mjs +2 -0
  92. package/esm2020/utils/models/slider-field.config.mjs +2 -0
  93. package/esm2020/utils/models/textarea-field.config.mjs +2 -0
  94. package/esm2020/utils/models/unit-conversion-field.config.mjs +2 -0
  95. package/esm2020/utils/operators/form.operators.mjs +24 -0
  96. package/esm2020/utils/operators/index.mjs +2 -0
  97. package/esm2020/utils/public-api.mjs +5 -0
  98. package/esm2020/utils/tft-crispr-forms-utils.mjs +5 -0
  99. package/fesm2015/tft-crispr-forms-ui-field-container.mjs +64 -0
  100. package/fesm2015/tft-crispr-forms-ui-field-container.mjs.map +1 -0
  101. package/fesm2015/tft-crispr-forms-ui-file-dropzone.mjs +47 -0
  102. package/fesm2015/tft-crispr-forms-ui-file-dropzone.mjs.map +1 -0
  103. package/fesm2015/tft-crispr-forms-ui-heading.mjs +37 -0
  104. package/fesm2015/tft-crispr-forms-ui-heading.mjs.map +1 -0
  105. package/fesm2015/tft-crispr-forms-ui-image-upload-field.mjs +182 -0
  106. package/fesm2015/tft-crispr-forms-ui-image-upload-field.mjs.map +1 -0
  107. package/fesm2015/tft-crispr-forms-ui-info.mjs +30 -0
  108. package/fesm2015/tft-crispr-forms-ui-info.mjs.map +1 -0
  109. package/fesm2015/tft-crispr-forms-ui-selected-file.mjs +33 -0
  110. package/fesm2015/tft-crispr-forms-ui-selected-file.mjs.map +1 -0
  111. package/fesm2015/tft-crispr-forms-ui.mjs +684 -0
  112. package/fesm2015/tft-crispr-forms-ui.mjs.map +1 -0
  113. package/fesm2015/tft-crispr-forms-utils.mjs +270 -0
  114. package/fesm2015/tft-crispr-forms-utils.mjs.map +1 -0
  115. package/fesm2015/tft-crispr-forms.mjs +117 -1730
  116. package/fesm2015/tft-crispr-forms.mjs.map +1 -1
  117. package/fesm2020/tft-crispr-forms-ui-field-container.mjs +65 -0
  118. package/fesm2020/tft-crispr-forms-ui-field-container.mjs.map +1 -0
  119. package/fesm2020/tft-crispr-forms-ui-file-dropzone.mjs +47 -0
  120. package/fesm2020/tft-crispr-forms-ui-file-dropzone.mjs.map +1 -0
  121. package/fesm2020/tft-crispr-forms-ui-heading.mjs +37 -0
  122. package/fesm2020/tft-crispr-forms-ui-heading.mjs.map +1 -0
  123. package/fesm2020/tft-crispr-forms-ui-image-upload-field.mjs +185 -0
  124. package/fesm2020/tft-crispr-forms-ui-image-upload-field.mjs.map +1 -0
  125. package/fesm2020/tft-crispr-forms-ui-info.mjs +30 -0
  126. package/fesm2020/tft-crispr-forms-ui-info.mjs.map +1 -0
  127. package/fesm2020/tft-crispr-forms-ui-selected-file.mjs +33 -0
  128. package/fesm2020/tft-crispr-forms-ui-selected-file.mjs.map +1 -0
  129. package/fesm2020/tft-crispr-forms-ui.mjs +676 -0
  130. package/fesm2020/tft-crispr-forms-ui.mjs.map +1 -0
  131. package/fesm2020/tft-crispr-forms-utils.mjs +269 -0
  132. package/fesm2020/tft-crispr-forms-utils.mjs.map +1 -0
  133. package/fesm2020/tft-crispr-forms.mjs +117 -1723
  134. package/fesm2020/tft-crispr-forms.mjs.map +1 -1
  135. package/index.d.ts +5 -1
  136. package/package.json +77 -15
  137. package/public-api.d.ts +3 -0
  138. package/src/index.d.ts +1 -0
  139. package/src/lib/crispr-forms.module.d.ts +15 -0
  140. package/{lib → src/lib}/field-component-map.const.d.ts +7 -6
  141. package/{lib → src/lib}/field.directive.d.ts +4 -10
  142. package/{lib → src/lib}/form/form.component.d.ts +3 -3
  143. package/{lib → src/lib}/form-group-list/form-group-list.component.d.ts +12 -14
  144. package/{lib → src/lib}/form-group-list/index.d.ts +0 -1
  145. package/{lib → src/lib}/pipes/crispr-pipes.module.d.ts +0 -0
  146. package/{lib → src/lib}/pipes/initial-control-value.pipe.d.ts +2 -2
  147. package/src/lib/public_api.d.ts +2 -0
  148. package/{lib → src/lib}/sub-group/index.d.ts +0 -0
  149. package/src/lib/sub-group/sub-group.component.d.ts +22 -0
  150. package/{lib → src/lib}/sub-group/sub-group.module.d.ts +2 -2
  151. package/tft-crispr-forms-14.0.1-rc.2.tgz +0 -0
  152. package/ui/README.md +3 -0
  153. package/{lib/material → ui}/autocomplete-chiplist-field/autocomplete-chiplist-field.component.d.ts +2 -3
  154. package/ui/autocomplete-chiplist-field/index.d.ts +1 -0
  155. package/{lib/material → ui}/autocomplete-field/autocomplete-field.component.d.ts +2 -3
  156. package/ui/autocomplete-field/index.d.ts +1 -0
  157. package/{lib/material → ui}/button/button.component.d.ts +2 -3
  158. package/ui/button/index.d.ts +1 -0
  159. package/ui/checkbox-field/checkbox-field.component.d.ts +21 -0
  160. package/ui/checkbox-field/index.d.ts +1 -0
  161. package/{lib/material → ui}/datepicker-field/datepicker-field.component.d.ts +14 -17
  162. package/ui/datepicker-field/index.d.ts +1 -0
  163. package/{lib/material → ui}/divider/divider.component.d.ts +2 -3
  164. package/ui/divider/index.d.ts +1 -0
  165. package/{lib → ui}/field-container/field-container.component.d.ts +3 -10
  166. package/ui/field-container/index.d.ts +5 -0
  167. package/{lib/field-container/index.d.ts → ui/field-container/public-api.d.ts} +0 -0
  168. package/{lib/material/file-upload → ui/file-dropzone}/file-dropzone.directive.d.ts +1 -1
  169. package/ui/file-dropzone/index.d.ts +5 -0
  170. package/{lib/material/file-upload/index.d.ts → ui/file-dropzone/public-api.d.ts} +0 -1
  171. package/ui/file-upload/file-upload.component.d.ts +37 -0
  172. package/ui/file-upload/index.d.ts +1 -0
  173. package/ui/heading/heading.component.d.ts +8 -0
  174. package/ui/heading/index.d.ts +5 -0
  175. package/ui/heading/public-api.d.ts +1 -0
  176. package/ui/image-upload-field/image-upload-field.component.d.ts +48 -0
  177. package/ui/image-upload-field/index.d.ts +5 -0
  178. package/{lib/material/image-upload-field/index.d.ts → ui/image-upload-field/public-api.d.ts} +0 -0
  179. package/ui/index.d.ts +5 -0
  180. package/ui/info/index.d.ts +5 -0
  181. package/ui/info/info.component.d.ts +7 -0
  182. package/ui/info/public-api.d.ts +1 -0
  183. package/ui/input-field/index.d.ts +1 -0
  184. package/ui/input-field/input-field.component.d.ts +22 -0
  185. package/{lib/material → ui}/option/index.d.ts +0 -0
  186. package/{lib/material → ui}/option/option.component.d.ts +2 -2
  187. package/ui/public-api.d.ts +19 -0
  188. package/ui/radio-field/index.d.ts +1 -0
  189. package/ui/radio-field/radio-field.component.d.ts +23 -0
  190. package/ui/select-field/index.d.ts +1 -0
  191. package/{lib/material → ui}/select-field/select-field.component.d.ts +12 -14
  192. package/ui/selected-file/index.d.ts +5 -0
  193. package/ui/selected-file/public-api.d.ts +1 -0
  194. package/ui/selected-file/selected-file.component.d.ts +10 -0
  195. package/ui/slider-field/index.d.ts +1 -0
  196. package/ui/slider-field/slider-field.component.d.ts +25 -0
  197. package/ui/textarea-field/index.d.ts +1 -0
  198. package/ui/textarea-field/textarea-field.component.d.ts +21 -0
  199. package/ui/unit-conversion-field/index.d.ts +1 -0
  200. package/{lib/material → ui}/unit-conversion-field/unit-conversion-field.component.d.ts +14 -17
  201. package/utils/README.md +3 -0
  202. package/{lib → utils}/abstracts/autocomplete-field.abstract.d.ts +4 -4
  203. package/{lib → utils}/abstracts/crispr-control.mixin.d.ts +0 -0
  204. package/{lib → utils}/abstracts/crispr-field.abstract.d.ts +1 -1
  205. package/{lib → utils}/abstracts/index.d.ts +0 -0
  206. package/utils/functions/buildFormGroupFromConfig.d.ts +9 -0
  207. package/utils/functions/callOptionsIfFunction.d.ts +3 -0
  208. package/utils/functions/createControlForType.d.ts +9 -0
  209. package/utils/functions/filterOptionsByLabel.d.ts +7 -0
  210. package/utils/functions/image-compression.helpers.d.ts +5 -0
  211. package/utils/functions/index.d.ts +7 -0
  212. package/utils/functions/isControlConfig.d.ts +5 -0
  213. package/utils/functions/observablifyOptions.d.ts +12 -0
  214. package/utils/index.d.ts +5 -0
  215. package/{lib → utils}/models/autocomplete-chiplist-field.config.d.ts +2 -1
  216. package/{lib → utils}/models/autocomplete-field.config.d.ts +1 -2
  217. package/{lib → utils}/models/button.config.d.ts +0 -0
  218. package/{lib → utils}/models/checkbox-field.config.d.ts +1 -2
  219. package/{lib → utils}/models/crispr-field.config.d.ts +5 -7
  220. package/{lib → utils}/models/datepicker-field.config.d.ts +4 -6
  221. package/{lib → utils}/models/divider.config.d.ts +1 -1
  222. package/{lib → utils}/models/file-upload-field.config.d.ts +3 -4
  223. package/{lib → utils}/models/form-group-list.config.d.ts +1 -2
  224. package/{lib → utils}/models/heading.config.d.ts +1 -2
  225. package/{lib → utils}/models/image-upload-field.config.d.ts +2 -1
  226. package/{lib → utils}/models/index.d.ts +0 -0
  227. package/{lib → utils}/models/input-field.config.d.ts +1 -2
  228. package/{lib → utils}/models/radio-field.config.d.ts +0 -0
  229. package/{lib → utils}/models/select-field.config.d.ts +1 -2
  230. package/{lib → utils}/models/slider-field.config.d.ts +1 -2
  231. package/{lib → utils}/models/textarea-field.config.d.ts +1 -2
  232. package/{lib → utils}/models/unit-conversion-field.config.d.ts +1 -2
  233. package/{lib → utils/operators}/form.operators.d.ts +0 -0
  234. package/utils/operators/index.d.ts +1 -0
  235. package/utils/public-api.d.ts +4 -0
  236. package/esm2020/index.mjs +0 -2
  237. package/esm2020/lib/abstracts/autocomplete-field.abstract.mjs +0 -30
  238. package/esm2020/lib/abstracts/crispr-control.mixin.mjs +0 -27
  239. package/esm2020/lib/abstracts/crispr-field.abstract.mjs +0 -17
  240. package/esm2020/lib/abstracts/index.mjs +0 -4
  241. package/esm2020/lib/crispr-forms.module.mjs +0 -66
  242. package/esm2020/lib/field-component-map.const.mjs +0 -28
  243. package/esm2020/lib/field-container/field-container.component.mjs +0 -85
  244. package/esm2020/lib/field-container/index.mjs +0 -2
  245. package/esm2020/lib/field.directive.mjs +0 -90
  246. package/esm2020/lib/form/form.component.mjs +0 -53
  247. package/esm2020/lib/form-group-list/form-group-list.component.mjs +0 -77
  248. package/esm2020/lib/form-group-list/form-group-list.module.mjs +0 -54
  249. package/esm2020/lib/form-group-list/index.mjs +0 -3
  250. package/esm2020/lib/form.helpers.mjs +0 -190
  251. package/esm2020/lib/form.operators.mjs +0 -24
  252. package/esm2020/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +0 -111
  253. package/esm2020/lib/material/autocomplete-field/autocomplete-field.component.mjs +0 -78
  254. package/esm2020/lib/material/button/button.component.mjs +0 -35
  255. package/esm2020/lib/material/checkbox-field/checkbox-field.component.mjs +0 -31
  256. package/esm2020/lib/material/datepicker-field/datepicker-field.component.mjs +0 -45
  257. package/esm2020/lib/material/divider/divider.component.mjs +0 -22
  258. package/esm2020/lib/material/file-upload/file-dropzone.directive.mjs +0 -39
  259. package/esm2020/lib/material/file-upload/file-upload.component.mjs +0 -145
  260. package/esm2020/lib/material/file-upload/index.mjs +0 -3
  261. package/esm2020/lib/material/heading/heading.component.mjs +0 -54
  262. package/esm2020/lib/material/image-upload-field/image-compression.helpers.mjs +0 -4
  263. package/esm2020/lib/material/image-upload-field/image-upload-field.component.mjs +0 -265
  264. package/esm2020/lib/material/image-upload-field/index.mjs +0 -2
  265. package/esm2020/lib/material/index.mjs +0 -18
  266. package/esm2020/lib/material/info/info.component.mjs +0 -46
  267. package/esm2020/lib/material/input-field/input-field.component.mjs +0 -27
  268. package/esm2020/lib/material/material.module.mjs +0 -200
  269. package/esm2020/lib/material/option/index.mjs +0 -2
  270. package/esm2020/lib/material/option/option.component.mjs +0 -15
  271. package/esm2020/lib/material/radio-field/radio-field.component.mjs +0 -29
  272. package/esm2020/lib/material/select-field/select-field.component.mjs +0 -58
  273. package/esm2020/lib/material/selected-file/selected-file.component.mjs +0 -47
  274. package/esm2020/lib/material/slider-field/slider-field.component.mjs +0 -30
  275. package/esm2020/lib/material/textarea-field/textarea-field.component.mjs +0 -28
  276. package/esm2020/lib/material/unit-conversion-field/unit-conversion-field.component.mjs +0 -69
  277. package/esm2020/lib/models/autocomplete-chiplist-field.config.mjs +0 -2
  278. package/esm2020/lib/models/autocomplete-field.config.mjs +0 -2
  279. package/esm2020/lib/models/button.config.mjs +0 -2
  280. package/esm2020/lib/models/checkbox-field.config.mjs +0 -2
  281. package/esm2020/lib/models/crispr-field.config.mjs +0 -23
  282. package/esm2020/lib/models/datepicker-field.config.mjs +0 -2
  283. package/esm2020/lib/models/divider.config.mjs +0 -2
  284. package/esm2020/lib/models/file-upload-field.config.mjs +0 -2
  285. package/esm2020/lib/models/form-group-list.config.mjs +0 -2
  286. package/esm2020/lib/models/heading.config.mjs +0 -3
  287. package/esm2020/lib/models/image-upload-field.config.mjs +0 -2
  288. package/esm2020/lib/models/index.mjs +0 -18
  289. package/esm2020/lib/models/input-field.config.mjs +0 -2
  290. package/esm2020/lib/models/radio-field.config.mjs +0 -2
  291. package/esm2020/lib/models/select-field.config.mjs +0 -2
  292. package/esm2020/lib/models/slider-field.config.mjs +0 -2
  293. package/esm2020/lib/models/textarea-field.config.mjs +0 -2
  294. package/esm2020/lib/models/unit-conversion-field.config.mjs +0 -2
  295. package/esm2020/lib/pipes/crispr-pipes.module.mjs +0 -26
  296. package/esm2020/lib/pipes/initial-control-value.pipe.mjs +0 -20
  297. package/esm2020/lib/public_api.mjs +0 -10
  298. package/esm2020/lib/sub-group/index.mjs +0 -3
  299. package/esm2020/lib/sub-group/sub-group.component.mjs +0 -20
  300. package/esm2020/lib/sub-group/sub-group.module.mjs +0 -45
  301. package/lib/crispr-forms.module.d.ts +0 -16
  302. package/lib/form-group-list/form-group-list.module.d.ts +0 -15
  303. package/lib/form.helpers.d.ts +0 -88
  304. package/lib/material/checkbox-field/checkbox-field.component.d.ts +0 -23
  305. package/lib/material/file-upload/file-upload.component.d.ts +0 -54
  306. package/lib/material/heading/heading.component.d.ts +0 -17
  307. package/lib/material/image-upload-field/image-compression.helpers.d.ts +0 -1
  308. package/lib/material/image-upload-field/image-upload-field.component.d.ts +0 -68
  309. package/lib/material/index.d.ts +0 -17
  310. package/lib/material/info/info.component.d.ts +0 -15
  311. package/lib/material/input-field/input-field.component.d.ts +0 -24
  312. package/lib/material/material.module.d.ts +0 -44
  313. package/lib/material/radio-field/radio-field.component.d.ts +0 -26
  314. package/lib/material/selected-file/selected-file.component.d.ts +0 -17
  315. package/lib/material/slider-field/slider-field.component.d.ts +0 -27
  316. package/lib/material/textarea-field/textarea-field.component.d.ts +0 -24
  317. package/lib/public_api.d.ts +0 -9
  318. package/lib/sub-group/sub-group.component.d.ts +0 -24
  319. package/tft-crispr-forms-13.0.23.tgz +0 -0
  320. package/tft-crispr-forms.d.ts +0 -5
@@ -1,27 +0,0 @@
1
- import { ControlType } from '../models/crispr-field.config';
2
- export function crisprControlMixin(BaseClass) {
3
- return class extends BaseClass {
4
- set value(value) {
5
- this.setControlValue(value);
6
- this._value = value;
7
- }
8
- get value() {
9
- return this._value;
10
- }
11
- ngOnInit() {
12
- super.ngOnInit();
13
- this.control = this.group.get(this.config.controlName);
14
- this.setControlValue(this.value);
15
- // setTimeouts are ugly but this seems to be the only way to get the computed field to compute initial values
16
- setTimeout(() => {
17
- this.control.updateValueAndValidity();
18
- });
19
- }
20
- setControlValue(value) {
21
- if (value && this.control && this.config.controlType !== ControlType.SUB_GROUP) {
22
- this.control.setValue(value);
23
- }
24
- }
25
- };
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jpc3ByLWNvbnRyb2wubWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Fic3RyYWN0cy9jcmlzcHItY29udHJvbC5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFDLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRy9GLE1BQU0sVUFBVSxrQkFBa0IsQ0FBZ0MsU0FBc0M7SUFDdEcsT0FBTyxLQUFNLFNBQVEsU0FBWTtRQU0vQixJQUFJLEtBQUssQ0FBQyxLQUFtQjtZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLEtBQUs7WUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckIsQ0FBQztRQUVELFFBQVE7WUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLDZHQUE2RztZQUM3RyxVQUFVLENBQUMsR0FBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxlQUFlLENBQUMsS0FBbUI7WUFDakMsSUFBRyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsU0FBUyxFQUFFO2dCQUM3RSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTthQUM3QjtRQUNILENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ3Jpc3ByQ29udHJvbENvbmZpZywgQ29udHJvbFZhbHVlLCBDb250cm9sVHlwZSB9IGZyb20gJy4uL21vZGVscy9jcmlzcHItZmllbGQuY29uZmlnJztcbmltcG9ydCB7IENyaXNwckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jcmlzcHItZmllbGQuYWJzdHJhY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3Jpc3ByQ29udHJvbE1peGluPEMgZXh0ZW5kcyBDcmlzcHJDb250cm9sQ29uZmlnPihCYXNlQ2xhc3M6IHR5cGVvZiBDcmlzcHJGaWVsZENvbXBvbmVudCkge1xuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlQ2xhc3M8Qz4ge1xuICAgIGNvbmZpZzogQztcbiAgICBncm91cDogRm9ybUdyb3VwO1xuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICAgIF92YWx1ZTogQ29udHJvbFZhbHVlO1xuICAgIHNldCB2YWx1ZSh2YWx1ZTogQ29udHJvbFZhbHVlKSB7XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmdyb3VwLmdldCh0aGlzLmNvbmZpZy5jb250cm9sTmFtZSk7XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIC8vIHNldFRpbWVvdXRzIGFyZSB1Z2x5IGJ1dCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIGZpZWxkIHRvIGNvbXB1dGUgaW5pdGlhbCB2YWx1ZXNcbiAgICAgIHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KVxuICAgIH1cblxuICAgIHNldENvbnRyb2xWYWx1ZSh2YWx1ZTogQ29udHJvbFZhbHVlKSB7XG4gICAgICBpZih2YWx1ZSAmJiB0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb25maWcuY29udHJvbFR5cGUgIT09IENvbnRyb2xUeXBlLlNVQl9HUk9VUCkge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,17 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- // eslint-disable-next-line @angular-eslint/directive-class-suffix
4
- export class CrisprFieldComponent {
5
- ngOnInit() {
6
- this.applyDefaultConfig();
7
- }
8
- applyDefaultConfig() {
9
- this.config = this.defaultConfig ? { ...this.defaultConfig, ...this.config } : this.config;
10
- }
11
- }
12
- CrisprFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13
- CrisprFieldComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFieldComponent, ngImport: i0 });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldComponent, decorators: [{
15
- type: Directive
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jpc3ByLWZpZWxkLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9hYnN0cmFjdHMvY3Jpc3ByLWZpZWxkLmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR2xELGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLG9CQUFvQjtJQUl4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNGLENBQUM7O2lIQVZtQixvQkFBb0I7cUdBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQUZ6QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBDcmlzcHJGaWVsZENvbmZpZyxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE9uSW5pdCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3Jpc3ByRmllbGRDb21wb25lbnQ8QyBleHRlbmRzIENyaXNwckZpZWxkQ29uZmlnPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbmZpZzogQztcbiAgZGVmYXVsdENvbmZpZz86IFBhcnRpYWw8Qz5cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFwcGx5RGVmYXVsdENvbmZpZygpO1xuICB9XG5cbiAgYXBwbHlEZWZhdWx0Q29uZmlnKCkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5kZWZhdWx0Q29uZmlnID8gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4udGhpcy5jb25maWd9IDogdGhpcy5jb25maWc7XG4gIH1cbn1cblxuXG4iXX0=
@@ -1,4 +0,0 @@
1
- export * from './autocomplete-field.abstract';
2
- export * from './crispr-control.mixin';
3
- export * from './crispr-field.abstract';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Fic3RyYWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0b2NvbXBsZXRlLWZpZWxkLmFic3RyYWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9jcmlzcHItY29udHJvbC5taXhpbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3Jpc3ByLWZpZWxkLmFic3RyYWN0JztcclxuIl19
@@ -1,66 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- // custom modules
5
- import { MaterialModule } from './material/material.module';
6
- import { FormValidationHandlerModule } from '@tft/form-validation-handler';
7
- // components
8
- import { CrisprFormComponent } from './form/form.component';
9
- import { FormGroupListModule } from './form-group-list';
10
- // directives
11
- import { CrisprFieldModule } from './field.directive';
12
- import { SubGroupModule } from './sub-group';
13
- import { CrisprPipesModule } from './pipes/crispr-pipes.module';
14
- import { FieldContainerModule } from './field-container';
15
- import * as i0 from "@angular/core";
16
- export class CrisprFormsModule {
17
- }
18
- CrisprFormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
- CrisprFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormsModule, declarations: [CrisprFormComponent], imports: [CommonModule,
20
- ReactiveFormsModule,
21
- FormValidationHandlerModule,
22
- FormGroupListModule,
23
- FieldContainerModule,
24
- CrisprFieldModule,
25
- SubGroupModule,
26
- MaterialModule,
27
- CrisprPipesModule], exports: [CrisprFormComponent,
28
- FieldContainerModule,
29
- MaterialModule] });
30
- CrisprFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormsModule, imports: [[
31
- CommonModule,
32
- ReactiveFormsModule,
33
- FormValidationHandlerModule,
34
- FormGroupListModule,
35
- FieldContainerModule,
36
- CrisprFieldModule,
37
- SubGroupModule,
38
- MaterialModule,
39
- CrisprPipesModule,
40
- ], FieldContainerModule,
41
- MaterialModule] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormsModule, decorators: [{
43
- type: NgModule,
44
- args: [{
45
- imports: [
46
- CommonModule,
47
- ReactiveFormsModule,
48
- FormValidationHandlerModule,
49
- FormGroupListModule,
50
- FieldContainerModule,
51
- CrisprFieldModule,
52
- SubGroupModule,
53
- MaterialModule,
54
- CrisprPipesModule,
55
- ],
56
- declarations: [
57
- CrisprFormComponent,
58
- ],
59
- exports: [
60
- CrisprFormComponent,
61
- FieldContainerModule,
62
- MaterialModule
63
- ]
64
- }]
65
- }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jpc3ByLWZvcm1zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvY3Jpc3ByLWZvcm1zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRTNELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNFLGFBQWE7QUFDYixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxhQUFhO0FBQ2IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUF1QnpELE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFSMUIsbUJBQW1CLGFBWG5CLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsMkJBQTJCO1FBQzNCLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxjQUFjO1FBQ2QsaUJBQWlCLGFBTWpCLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsY0FBYzsrR0FHTCxpQkFBaUIsWUFwQm5CO1lBQ1AsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQiwyQkFBMkI7WUFDM0IsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGNBQWM7WUFDZCxpQkFBaUI7U0FDbEIsRUFNQyxvQkFBb0I7UUFDcEIsY0FBYzsyRkFHTCxpQkFBaUI7a0JBckI3QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsaUJBQWlCO3FCQUNsQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGNBQWM7cUJBQ2Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyBjdXN0b20gbW9kdWxlc1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsL21hdGVyaWFsLm1vZHVsZSdcblxuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb25IYW5kbGVyTW9kdWxlIH0gZnJvbSAnQHRmdC9mb3JtLXZhbGlkYXRpb24taGFuZGxlcic7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENyaXNwckZvcm1Db21wb25lbnQgfSBmcm9tICcuL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUdyb3VwTGlzdE1vZHVsZSB9IGZyb20gJy4vZm9ybS1ncm91cC1saXN0Jztcbi8vIGRpcmVjdGl2ZXNcbmltcG9ydCB7IENyaXNwckZpZWxkTW9kdWxlIH0gZnJvbSAnLi9maWVsZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3ViR3JvdXBNb2R1bGUgfSBmcm9tICcuL3N1Yi1ncm91cCc7XG5pbXBvcnQgeyBDcmlzcHJQaXBlc01vZHVsZSB9IGZyb20gJy4vcGlwZXMvY3Jpc3ByLXBpcGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBGaWVsZENvbnRhaW5lck1vZHVsZSB9IGZyb20gJy4vZmllbGQtY29udGFpbmVyJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1WYWxpZGF0aW9uSGFuZGxlck1vZHVsZSxcbiAgICBGb3JtR3JvdXBMaXN0TW9kdWxlLFxuICAgIEZpZWxkQ29udGFpbmVyTW9kdWxlLFxuICAgIENyaXNwckZpZWxkTW9kdWxlLFxuICAgIFN1Ykdyb3VwTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIENyaXNwclBpcGVzTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDcmlzcHJGb3JtQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ3Jpc3ByRm9ybUNvbXBvbmVudCxcbiAgICBGaWVsZENvbnRhaW5lck1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENyaXNwckZvcm1zTW9kdWxlIHsgfVxuIl19
@@ -1,28 +0,0 @@
1
- import { isControlConfig } from './form.helpers';
2
- import { ControlType } from './models';
3
- export const FIELD_COMPONENTS = {
4
- groupList: import('./form-group-list').then(({ FormGroupListComponent }) => FormGroupListComponent),
5
- subGroup: import('./sub-group').then(({ SubGroupComponent }) => SubGroupComponent),
6
- button: import('./material').then(({ ButtonComponent }) => ButtonComponent),
7
- input: import('./material').then(({ InputFieldComponent }) => InputFieldComponent),
8
- select: import('./material').then(({ SelectFieldComponent }) => SelectFieldComponent),
9
- radio: import('./material').then(({ RadioFieldComponent }) => RadioFieldComponent),
10
- autocomplete: import('./material').then(({ AutocompleteFieldComponent }) => AutocompleteFieldComponent),
11
- autocompleteChiplist: import('./material').then(({ AutocompleteChiplistFieldComponent }) => AutocompleteChiplistFieldComponent),
12
- textarea: import('./material').then(({ TextareaFieldComponent }) => TextareaFieldComponent),
13
- checkbox: import('./material').then(({ CheckboxFieldComponent }) => CheckboxFieldComponent),
14
- slider: import('./material').then(({ SliderFieldComponent }) => SliderFieldComponent),
15
- datepicker: import('./material').then(({ DatepickerFieldComponent }) => DatepickerFieldComponent),
16
- fileUpload: import('./material').then(({ FileUploadFieldComponent }) => FileUploadFieldComponent),
17
- imageUpload: import('./material').then(({ ImageUploadFieldComponent }) => ImageUploadFieldComponent),
18
- heading: import('./material').then(({ HeadingComponent }) => HeadingComponent),
19
- divider: import('./material').then(({ DividerComponent }) => DividerComponent),
20
- unitConversion: import('./material').then(({ UnitConversionFieldComponent }) => UnitConversionFieldComponent)
21
- };
22
- export function isControlComponent(component) {
23
- return component && isControlConfig(component.config) && 'value' in component; // || component.config.controlType === ControlType.BUTTON;
24
- }
25
- export function isControlOrButtonComponent(component) {
26
- return isControlComponent(component) || component.config.controlType === ControlType.BUTTON;
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29tcG9uZW50LW1hcC5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvZmllbGQtY29tcG9uZW50LW1hcC5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixTQUFTLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFFLENBQUMsRUFBQyxzQkFBc0IsRUFBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztJQUNsRyxRQUFRLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUMsRUFBRSxFQUFFLENBQUUsaUJBQWlCLENBQUM7SUFDbEYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBQyxFQUFFLEVBQUUsQ0FBRSxlQUFlLENBQUM7SUFDM0UsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixFQUFDLEVBQUUsRUFBRSxDQUFFLG1CQUFtQixDQUFDO0lBQ2xGLE1BQU0sRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsRUFBQyxFQUFFLEVBQUUsQ0FBRSxvQkFBb0IsQ0FBQztJQUNyRixLQUFLLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUMsRUFBRSxFQUFFLENBQUUsbUJBQW1CLENBQUM7SUFDbEYsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixFQUFDLEVBQUUsRUFBRSxDQUFFLDBCQUEwQixDQUFDO0lBQ3ZHLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLGtDQUFrQyxFQUFDLEVBQUUsRUFBRSxDQUFFLGtDQUFrQyxDQUFDO0lBQy9ILFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxzQkFBc0IsRUFBQyxFQUFFLEVBQUUsQ0FBRSxzQkFBc0IsQ0FBQztJQUMzRixRQUFRLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLEVBQUMsRUFBRSxFQUFFLENBQUUsc0JBQXNCLENBQUM7SUFDM0YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFDLEVBQUUsRUFBRSxDQUFFLG9CQUFvQixDQUFDO0lBQ3JGLFVBQVUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBQyxFQUFFLEVBQUUsQ0FBRSx3QkFBd0IsQ0FBQztJQUNqRyxVQUFVLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsd0JBQXdCLEVBQUMsRUFBRSxFQUFFLENBQUUsd0JBQXdCLENBQUM7SUFDakcsV0FBVyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixFQUFDLEVBQUUsRUFBRSxDQUFFLHlCQUF5QixDQUFDO0lBQ3BHLE9BQU8sRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBQyxFQUFFLEVBQUUsQ0FBRSxnQkFBZ0IsQ0FBQztJQUM5RSxPQUFPLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUMsRUFBRSxFQUFFLENBQUUsZ0JBQWdCLENBQUM7SUFDOUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLDRCQUE0QixFQUFDLEVBQUUsRUFBRSxDQUFFLDRCQUE0QixDQUFDO0NBQzlHLENBQUM7QUFFRixNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBK0I7SUFDaEUsT0FBTyxTQUFTLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLElBQUksU0FBUyxDQUFBLENBQUMsMERBQTBEO0FBQzFJLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsU0FBK0I7SUFDeEUsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQzlGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuaW1wb3J0IHR5cGUgeyBJbnB1dEZpZWxkQ29tcG9uZW50LCBTZWxlY3RGaWVsZENvbXBvbmVudCwgQXV0b2NvbXBsZXRlRmllbGRDb21wb25lbnQsXG4gIEF1dG9jb21wbGV0ZUNoaXBsaXN0RmllbGRDb21wb25lbnQsIFRleHRhcmVhRmllbGRDb21wb25lbnQsIENoZWNrYm94RmllbGRDb21wb25lbnQsXG4gIFJhZGlvRmllbGRDb21wb25lbnQsIEZpbGVVcGxvYWRGaWVsZENvbXBvbmVudCwgU2xpZGVyRmllbGRDb21wb25lbnQsIERhdGVwaWNrZXJGaWVsZENvbXBvbmVudCxcbiAgSGVhZGluZ0NvbXBvbmVudCwgRGl2aWRlckNvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBVbml0Q29udmVyc2lvbkZpZWxkQ29tcG9uZW50LCBJbWFnZVVwbG9hZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9tYXRlcmlhbCc7XG5pbXBvcnQgdHlwZSB7IEZvcm1Hcm91cExpc3RDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZ3JvdXAtbGlzdC9mb3JtLWdyb3VwLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgU3ViR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3N1Yi1ncm91cC9zdWItZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IGlzQ29udHJvbENvbmZpZyB9IGZyb20gJy4vZm9ybS5oZWxwZXJzJztcbmltcG9ydCB7IENvbnRyb2xUeXBlIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09NUE9ORU5UUyA9IHtcbiAgZ3JvdXBMaXN0OiBpbXBvcnQoJy4vZm9ybS1ncm91cC1saXN0JykudGhlbiAoKHtGb3JtR3JvdXBMaXN0Q29tcG9uZW50fSkgPT4gRm9ybUdyb3VwTGlzdENvbXBvbmVudCksXG4gIHN1Ykdyb3VwOiBpbXBvcnQoJy4vc3ViLWdyb3VwJykudGhlbigoeyBTdWJHcm91cENvbXBvbmVudH0pID0+ICBTdWJHcm91cENvbXBvbmVudCksXG4gIGJ1dHRvbjogaW1wb3J0KCcuL21hdGVyaWFsJykudGhlbigoeyBCdXR0b25Db21wb25lbnR9KSA9PiAgQnV0dG9uQ29tcG9uZW50KSxcbiAgaW5wdXQ6IGltcG9ydCgnLi9tYXRlcmlhbCcpLnRoZW4oKHsgSW5wdXRGaWVsZENvbXBvbmVudH0pID0+ICBJbnB1dEZpZWxkQ29tcG9uZW50KSxcbiAgc2VsZWN0OiBpbXBvcnQoJy4vbWF0ZXJpYWwnKS50aGVuKCh7IFNlbGVjdEZpZWxkQ29tcG9uZW50fSkgPT4gIFNlbGVjdEZpZWxkQ29tcG9uZW50KSxcbiAgcmFkaW86IGltcG9ydCgnLi9tYXRlcmlhbCcpLnRoZW4oKHsgUmFkaW9GaWVsZENvbXBvbmVudH0pID0+ICBSYWRpb0ZpZWxkQ29tcG9uZW50KSxcbiAgYXV0b2NvbXBsZXRlOiBpbXBvcnQoJy4vbWF0ZXJpYWwnKS50aGVuKCh7IEF1dG9jb21wbGV0ZUZpZWxkQ29tcG9uZW50fSkgPT4gIEF1dG9jb21wbGV0ZUZpZWxkQ29tcG9uZW50KSxcbiAgYXV0b2NvbXBsZXRlQ2hpcGxpc3Q6IGltcG9ydCgnLi9tYXRlcmlhbCcpLnRoZW4oKHsgQXV0b2NvbXBsZXRlQ2hpcGxpc3RGaWVsZENvbXBvbmVudH0pID0+ICBBdXRvY29tcGxldGVDaGlwbGlzdEZpZWxkQ29tcG9uZW50KSxcbiAgdGV4dGFyZWE6IGltcG9ydCgnLi9tYXRlcmlhbCcpLnRoZW4oKHsgVGV4dGFyZWFGaWVsZENvbXBvbmVudH0pID0+ICBUZXh0YXJlYUZpZWxkQ29tcG9uZW50KSxcbiAgY2hlY2tib3g6IGltcG9ydCgnLi9tYXRlcmlhbCcpLnRoZW4oKHsgQ2hlY2tib3hGaWVsZENvbXBvbmVudH0pID0+ICBDaGVja2JveEZpZWxkQ29tcG9uZW50KSxcbiAgc2xpZGVyOiBpbXBvcnQoJy4vbWF0ZXJpYWwnKS50aGVuKCh7IFNsaWRlckZpZWxkQ29tcG9uZW50fSkgPT4gIFNsaWRlckZpZWxkQ29tcG9uZW50KSxcbiAgZGF0ZXBpY2tlcjogaW1wb3J0KCcuL21hdGVyaWFsJykudGhlbigoeyBEYXRlcGlja2VyRmllbGRDb21wb25lbnR9KSA9PiAgRGF0ZXBpY2tlckZpZWxkQ29tcG9uZW50KSxcbiAgZmlsZVVwbG9hZDogaW1wb3J0KCcuL21hdGVyaWFsJykudGhlbigoeyBGaWxlVXBsb2FkRmllbGRDb21wb25lbnR9KSA9PiAgRmlsZVVwbG9hZEZpZWxkQ29tcG9uZW50KSxcbiAgaW1hZ2VVcGxvYWQ6IGltcG9ydCgnLi9tYXRlcmlhbCcpLnRoZW4oKHsgSW1hZ2VVcGxvYWRGaWVsZENvbXBvbmVudH0pID0+ICBJbWFnZVVwbG9hZEZpZWxkQ29tcG9uZW50KSxcbiAgaGVhZGluZzogaW1wb3J0KCcuL21hdGVyaWFsJykudGhlbigoeyBIZWFkaW5nQ29tcG9uZW50fSkgPT4gIEhlYWRpbmdDb21wb25lbnQpLFxuICBkaXZpZGVyOiBpbXBvcnQoJy4vbWF0ZXJpYWwnKS50aGVuKCh7IERpdmlkZXJDb21wb25lbnR9KSA9PiAgRGl2aWRlckNvbXBvbmVudCksXG4gIHVuaXRDb252ZXJzaW9uOiBpbXBvcnQoJy4vbWF0ZXJpYWwnKS50aGVuKCh7IFVuaXRDb252ZXJzaW9uRmllbGRDb21wb25lbnR9KSA9PiAgVW5pdENvbnZlcnNpb25GaWVsZENvbXBvbmVudClcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRyb2xDb21wb25lbnQoY29tcG9uZW50OiBDcmlzcHJGaWVsZENvbXBvbmVudCk6IGNvbXBvbmVudCBpcyBDcmlzcHJDb250cm9sQ29tcG9uZW50IHtcbiAgcmV0dXJuIGNvbXBvbmVudCAmJiBpc0NvbnRyb2xDb25maWcoY29tcG9uZW50LmNvbmZpZykgJiYgJ3ZhbHVlJyBpbiBjb21wb25lbnQgLy8gfHwgY29tcG9uZW50LmNvbmZpZy5jb250cm9sVHlwZSA9PT0gQ29udHJvbFR5cGUuQlVUVE9OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb250cm9sT3JCdXR0b25Db21wb25lbnQoY29tcG9uZW50OiBDcmlzcHJGaWVsZENvbXBvbmVudCk6IGNvbXBvbmVudCBpcyBDcmlzcHJDb250cm9sT3JCdXR0b24ge1xuICByZXR1cm4gaXNDb250cm9sQ29tcG9uZW50KGNvbXBvbmVudCkgfHwgY29tcG9uZW50LmNvbmZpZy5jb250cm9sVHlwZSA9PT0gQ29udHJvbFR5cGUuQlVUVE9OO1xufVxuXG5leHBvcnQgdHlwZSBDcmlzcHJDb250cm9sT3JCdXR0b24gPSBDcmlzcHJDb250cm9sQ29tcG9uZW50IHwgQnV0dG9uQ29tcG9uZW50O1xuXG5leHBvcnQgdHlwZSBDcmlzcHJDb250cm9sQ29tcG9uZW50ID0gSW5wdXRGaWVsZENvbXBvbmVudCB8XG4gIFNlbGVjdEZpZWxkQ29tcG9uZW50IHxcbiAgUmFkaW9GaWVsZENvbXBvbmVudCB8XG4gIFN1Ykdyb3VwQ29tcG9uZW50IHxcbiAgRm9ybUdyb3VwTGlzdENvbXBvbmVudCB8XG4gIEF1dG9jb21wbGV0ZUZpZWxkQ29tcG9uZW50IHxcbiAgQXV0b2NvbXBsZXRlQ2hpcGxpc3RGaWVsZENvbXBvbmVudCB8XG4gIFRleHRhcmVhRmllbGRDb21wb25lbnQgfFxuICBDaGVja2JveEZpZWxkQ29tcG9uZW50IHxcbiAgU2xpZGVyRmllbGRDb21wb25lbnQgfFxuICBGaWxlVXBsb2FkRmllbGRDb21wb25lbnQgfFxuICBJbWFnZVVwbG9hZEZpZWxkQ29tcG9uZW50fFxuICBEYXRlcGlja2VyRmllbGRDb21wb25lbnQgfFxuICBVbml0Q29udmVyc2lvbkZpZWxkQ29tcG9uZW50O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnRLZXlzID0ga2V5b2YgdHlwZW9mIEZJRUxEX0NPTVBPTkVOVFM7XG4vLyBleHBvcnQgdHlwZSBDcmlzcHJGaWVsZENvbXBvbmVudCA9IEZJRUxEX0NPTVBPTkVOVFNbQ29tcG9uZW50S2V5c107XG5cbmV4cG9ydCB0eXBlIENyaXNwckZpZWxkQ29tcG9uZW50ID0gQ3Jpc3ByQ29udHJvbENvbXBvbmVudCB8XG4gIEhlYWRpbmdDb21wb25lbnQgfFxuICBEaXZpZGVyQ29tcG9uZW50IHxcbiAgQnV0dG9uQ29tcG9uZW50O1xuXG4iXX0=
@@ -1,85 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import { FormGroup } from '@angular/forms';
4
- import { tap, distinctUntilChanged } from 'rxjs/operators';
5
- import { computeValueFromFields } from '../form.helpers';
6
- import { CommonModule } from '@angular/common';
7
- import { HeadingModule } from '../material/heading/heading.component';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../material/heading/heading.component";
10
- import * as i2 from "@angular/common";
11
- export class FieldContainerComponent {
12
- constructor() {
13
- // boolean whether field-container is inline
14
- this.inlineField = false;
15
- this.subs = [];
16
- }
17
- ngOnInit() {
18
- this.disabled$ = this.connectDisabledCallback(this.group, this.config);
19
- // we tried moving this into afterViewChecked and afterContentChecked lifecycle hooks without any luck
20
- if (this.config.computeValue) {
21
- this.subs.push(this.config.computeValue(this.group).pipe(distinctUntilChanged(), tap(computedValue => this.group.get(this.config.controlName).setValue(computedValue))).subscribe());
22
- }
23
- else if (this.config.computeFieldConfig) {
24
- console.warn(`computeFieldConfig property is deprecated, please use computeValue. Example here: https://stackblitz.com/github/nayfin/tft-documentation?file=src%2Fapp%2Fcrispr-forms-demo%2Ffeatures%2Fcomputed-field%2Fcomputed-field.component.ts`);
25
- this.subs.push(computeValueFromFields(this.group, this.config.computeFieldConfig).pipe(distinctUntilChanged(), tap(computedValue => this.group.get(this.config.controlName).setValue(computedValue))).subscribe());
26
- }
27
- }
28
- ngOnDestroy() {
29
- this.subs.forEach(sub => sub.unsubscribe);
30
- }
31
- /**
32
- * Connects user defined disabledCallback function to the the view, so that the control is enabled/disabled
33
- * appropriately. It also keeps the form will hide disabled fields in the UI unless `hideDisabled` is set to
34
- * false in the controls config
35
- * @param group used to get valueChanges from control
36
- * @param config configuration object used to
37
- */
38
- connectDisabledCallback(group, config = null) {
39
- const control = group.get(config.controlName);
40
- // If the disabled$ function exists on the field config then call it with the disabledCallbackConfig
41
- // as a parameter otherwise return an observable of true.
42
- return config?.disabledCallback && config.disabledCallback instanceof Function
43
- ? config.disabledCallback(group, config.disabledCallbackConfig || null).pipe(
44
- // This enables/disables when callback conditions are met
45
- tap((shouldDisable) => shouldDisable ? control.disable() : control.enable()))
46
- : of(false);
47
- }
48
- }
49
- FieldContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FieldContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
50
- FieldContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: FieldContainerComponent, selector: "crispr-field-container", inputs: { config: "config", group: "group", inlineField: "inlineField" }, ngImport: i0, template: "<div\n *ngIf=\"(disabled$ | async) ? !config.hideDisabled : true\"\n [ngClass]=\"config.classes\"\n [class.inline-field]=\"inlineField\"\n class=\"field-container\">\n\n <crispr-heading\n *ngIf=\"config.heading\"\n [config]=\"config.heading\">\n </crispr-heading>\n\n <ng-content>\n </ng-content>\n\n</div>\n", styles: ["::ng-deep mat-form-field.mat-form-field{display:block;padding:.25em 0}.inline-field{display:inline-block}\n"], components: [{ type: i1.HeadingComponent, selector: "crispr-heading", inputs: ["config"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FieldContainerComponent, decorators: [{
52
- type: Component,
53
- args: [{ selector: 'crispr-field-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"(disabled$ | async) ? !config.hideDisabled : true\"\n [ngClass]=\"config.classes\"\n [class.inline-field]=\"inlineField\"\n class=\"field-container\">\n\n <crispr-heading\n *ngIf=\"config.heading\"\n [config]=\"config.heading\">\n </crispr-heading>\n\n <ng-content>\n </ng-content>\n\n</div>\n", styles: ["::ng-deep mat-form-field.mat-form-field{display:block;padding:.25em 0}.inline-field{display:inline-block}\n"] }]
54
- }], propDecorators: { config: [{
55
- type: Input
56
- }], group: [{
57
- type: Input
58
- }], inlineField: [{
59
- type: Input
60
- }] } });
61
- export class FieldContainerModule {
62
- }
63
- FieldContainerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FieldContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
64
- FieldContainerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FieldContainerModule, declarations: [FieldContainerComponent], imports: [CommonModule,
65
- HeadingModule], exports: [FieldContainerComponent] });
66
- FieldContainerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FieldContainerModule, imports: [[
67
- CommonModule,
68
- HeadingModule,
69
- ]] });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FieldContainerModule, decorators: [{
71
- type: NgModule,
72
- args: [{
73
- imports: [
74
- CommonModule,
75
- HeadingModule,
76
- ],
77
- exports: [
78
- FieldContainerComponent
79
- ],
80
- declarations: [
81
- FieldContainerComponent
82
- ]
83
- }]
84
- }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvZmllbGQtY29udGFpbmVyL2ZpZWxkLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2ZpZWxkLWNvbnRhaW5lci9maWVsZC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsdUJBQXVCLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQVF0RSxNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBV0UsNENBQTRDO1FBQ25DLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBSTdCLFNBQUksR0FBbUIsRUFBRSxDQUFDO0tBNEMzQjtJQTFDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkUsc0dBQXNHO1FBQ3RHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDdkMsb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FDdEYsQ0FBQyxTQUFTLEVBQUUsQ0FDZCxDQUFDO1NBQ0g7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7WUFDekMsT0FBTyxDQUFDLElBQUksQ0FBQyx1T0FBdU8sQ0FBQyxDQUFBO1lBQ3JQLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FDckUsb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FDdEYsQ0FBQyxTQUFTLEVBQUUsQ0FDZCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCx1QkFBdUIsQ0FBQyxLQUFnQixFQUFFLFNBQThCLElBQUk7UUFDMUUsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsb0dBQW9HO1FBQ3BHLHlEQUF5RDtRQUN6RCxPQUFPLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLFlBQVksUUFBUTtZQUM1RSxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSTtZQUMxRSx5REFBeUQ7WUFDekQsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQzdFO1lBQ0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDOztvSEFyRFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsd0lDZnBDLG9VQWVBOzJGREFhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSzs7QUE4RFIsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQXBFcEIsdUJBQXVCLGFBeURoQyxZQUFZO1FBQ1osYUFBYSxhQTFESix1QkFBdUI7a0hBb0V2QixvQkFBb0IsWUFadEI7WUFDUCxZQUFZO1lBQ1osYUFBYTtTQUNkOzJGQVNVLG9CQUFvQjtrQkFiaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7cUJBQ3hCO29CQUNELFlBQVksRUFBRTt3QkFDWix1QkFBdUI7cUJBQ3hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25EZXN0cm95LCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBDcmlzcHJDb250cm9sQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRhcCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb21wdXRlVmFsdWVGcm9tRmllbGRzIH0gZnJvbSAnLi4vZm9ybS5oZWxwZXJzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIZWFkaW5nTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwvaGVhZGluZy9oZWFkaW5nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1maWVsZC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSBmaWVsZFxuICBASW5wdXQoKSBjb25maWc6IENyaXNwckNvbnRyb2xDb25maWc7XG4gIC8vIHRoZSBwYXJlbnQgZm9ybUdyb3VwXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XG4gIC8vIGJvb2xlYW4gd2hldGhlciBmaWVsZC1jb250YWluZXIgaXMgaW5saW5lXG4gIEBJbnB1dCgpIGlubGluZUZpZWxkID0gZmFsc2U7XG4gIC8vIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGZpZWxkIHNob3VsZCBiZSBzaG93blxuICBkaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRpc2FibGVkJCA9IHRoaXMuY29ubmVjdERpc2FibGVkQ2FsbGJhY2sodGhpcy5ncm91cCwgdGhpcy5jb25maWcpO1xuICAgIC8vIHdlIHRyaWVkIG1vdmluZyB0aGlzIGludG8gYWZ0ZXJWaWV3Q2hlY2tlZCBhbmQgYWZ0ZXJDb250ZW50Q2hlY2tlZCBsaWZlY3ljbGUgaG9va3Mgd2l0aG91dCBhbnkgbHVja1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb21wdXRlVmFsdWUpIHtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgICB0aGlzLmNvbmZpZy5jb21wdXRlVmFsdWUodGhpcy5ncm91cCkucGlwZShcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgIHRhcChjb21wdXRlZFZhbHVlID0+IHRoaXMuZ3JvdXAuZ2V0KHRoaXMuY29uZmlnLmNvbnRyb2xOYW1lKS5zZXRWYWx1ZShjb21wdXRlZFZhbHVlKSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5jb21wdXRlRmllbGRDb25maWcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgY29tcHV0ZUZpZWxkQ29uZmlnIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgY29tcHV0ZVZhbHVlLiBFeGFtcGxlIGhlcmU6IGh0dHBzOi8vc3RhY2tibGl0ei5jb20vZ2l0aHViL25heWZpbi90ZnQtZG9jdW1lbnRhdGlvbj9maWxlPXNyYyUyRmFwcCUyRmNyaXNwci1mb3Jtcy1kZW1vJTJGZmVhdHVyZXMlMkZjb21wdXRlZC1maWVsZCUyRmNvbXB1dGVkLWZpZWxkLmNvbXBvbmVudC50c2ApXG4gICAgICB0aGlzLnN1YnMucHVzaChcbiAgICAgICAgY29tcHV0ZVZhbHVlRnJvbUZpZWxkcyh0aGlzLmdyb3VwLCB0aGlzLmNvbmZpZy5jb21wdXRlRmllbGRDb25maWcpLnBpcGUoXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICB0YXAoY29tcHV0ZWRWYWx1ZSA9PiB0aGlzLmdyb3VwLmdldCh0aGlzLmNvbmZpZy5jb250cm9sTmFtZSkuc2V0VmFsdWUoY29tcHV0ZWRWYWx1ZSkpXG4gICAgICAgICkuc3Vic2NyaWJlKCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUpO1xuICB9XG4gIC8qKlxuICAgKiBDb25uZWN0cyB1c2VyIGRlZmluZWQgZGlzYWJsZWRDYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgdGhlIHZpZXcsIHNvIHRoYXQgdGhlIGNvbnRyb2wgaXMgZW5hYmxlZC9kaXNhYmxlZFxuICAgKiBhcHByb3ByaWF0ZWx5LiBJdCBhbHNvIGtlZXBzIHRoZSBmb3JtIHdpbGwgaGlkZSBkaXNhYmxlZCBmaWVsZHMgaW4gdGhlIFVJIHVubGVzcyBgaGlkZURpc2FibGVkYCBpcyBzZXQgdG9cbiAgICogZmFsc2UgaW4gdGhlIGNvbnRyb2xzIGNvbmZpZ1xuICAgKiBAcGFyYW0gZ3JvdXAgdXNlZCB0byBnZXQgdmFsdWVDaGFuZ2VzIGZyb20gY29udHJvbFxuICAgKiBAcGFyYW0gY29uZmlnIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHVzZWQgdG9cbiAgICovXG4gIGNvbm5lY3REaXNhYmxlZENhbGxiYWNrKGdyb3VwOiBGb3JtR3JvdXAsIGNvbmZpZzogQ3Jpc3ByQ29udHJvbENvbmZpZyA9IG51bGwpIHtcbiAgICBjb25zdCBjb250cm9sID0gZ3JvdXAuZ2V0KGNvbmZpZy5jb250cm9sTmFtZSk7XG4gICAgLy8gSWYgdGhlIGRpc2FibGVkJCBmdW5jdGlvbiBleGlzdHMgb24gdGhlIGZpZWxkIGNvbmZpZyB0aGVuIGNhbGwgaXQgd2l0aCB0aGUgZGlzYWJsZWRDYWxsYmFja0NvbmZpZ1xuICAgIC8vIGFzIGEgcGFyYW1ldGVyIG90aGVyd2lzZSByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiB0cnVlLlxuICAgIHJldHVybiBjb25maWc/LmRpc2FibGVkQ2FsbGJhY2sgJiYgY29uZmlnLmRpc2FibGVkQ2FsbGJhY2sgaW5zdGFuY2VvZiBGdW5jdGlvblxuICAgICAgPyBjb25maWcuZGlzYWJsZWRDYWxsYmFjayhncm91cCwgY29uZmlnLmRpc2FibGVkQ2FsbGJhY2tDb25maWcgfHwgbnVsbCkucGlwZShcbiAgICAgICAgLy8gVGhpcyBlbmFibGVzL2Rpc2FibGVzIHdoZW4gY2FsbGJhY2sgY29uZGl0aW9ucyBhcmUgbWV0XG4gICAgICAgIHRhcCgoc2hvdWxkRGlzYWJsZSkgPT4gc2hvdWxkRGlzYWJsZSA/IGNvbnRyb2wuZGlzYWJsZSgpIDogY29udHJvbC5lbmFibGUoKSlcbiAgICAgIClcbiAgICAgIDogb2YoZmFsc2UpO1xuICB9XG59XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEhlYWRpbmdNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGaWVsZENvbnRhaW5lckNvbXBvbmVudFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGaWVsZENvbnRhaW5lckNvbXBvbmVudFxuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgRmllbGRDb250YWluZXJNb2R1bGUge1xufVxuIiwiPGRpdlxuICAqbmdJZj1cIihkaXNhYmxlZCQgfCBhc3luYykgPyAhY29uZmlnLmhpZGVEaXNhYmxlZCA6IHRydWVcIlxuICBbbmdDbGFzc109XCJjb25maWcuY2xhc3Nlc1wiXG4gIFtjbGFzcy5pbmxpbmUtZmllbGRdPVwiaW5saW5lRmllbGRcIlxuICBjbGFzcz1cImZpZWxkLWNvbnRhaW5lclwiPlxuXG4gIDxjcmlzcHItaGVhZGluZ1xuICAgICpuZ0lmPVwiY29uZmlnLmhlYWRpbmdcIlxuICAgIFtjb25maWddPVwiY29uZmlnLmhlYWRpbmdcIj5cbiAgPC9jcmlzcHItaGVhZGluZz5cblxuICA8bmctY29udGVudD5cbiAgPC9uZy1jb250ZW50PlxuXG48L2Rpdj5cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './field-container.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2ZpZWxkLWNvbnRhaW5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWVsZC1jb250YWluZXIuY29tcG9uZW50JztcbiJdfQ==
@@ -1,90 +0,0 @@
1
- import { Directive, Input, ViewContainerRef, Renderer2, NgModule, ChangeDetectorRef } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
3
- import { FIELD_COMPONENTS, isControlComponent, isControlOrButtonComponent } from './field-component-map.const';
4
- import { CommonModule } from '@angular/common';
5
- import * as i0 from "@angular/core";
6
- export class CrisprFieldDirective {
7
- constructor(container, renderer, cdr) {
8
- this.container = container;
9
- this.renderer = renderer;
10
- this.cdr = cdr;
11
- }
12
- set value(value) {
13
- this._value = value;
14
- // This is needed to keep the group list from resetting control values to the initial input value
15
- this.updateComponentValue(value);
16
- }
17
- ;
18
- get value() {
19
- return this._value;
20
- }
21
- async ngOnInit() {
22
- /**
23
- * create component and set values from config on its instance
24
- */
25
- const component = this.config.component || await FIELD_COMPONENTS[this.config.controlType];
26
- const componentRef = this.container.createComponent(component);
27
- this.component = componentRef.instance;
28
- this.component.config = this.config;
29
- if (isControlOrButtonComponent(this.component)) {
30
- this.component.group = this.group;
31
- }
32
- this.updateComponentValue(this.value);
33
- // adds any config classes to the dynamically generated component
34
- // doing this here keeps us from having to extend a base component into each field component individually
35
- if (!this.config.classes)
36
- return;
37
- this.config.classes.forEach((klass) => {
38
- // check for passing multiple classes in one array element
39
- if (klass.includes(' ')) {
40
- throw Error(`Improperly formatted class. '${klass}' cannot contain spaces.`);
41
- }
42
- else {
43
- this.renderer.addClass(componentRef.location.nativeElement, klass);
44
- }
45
- });
46
- }
47
- updateComponentValue(value) {
48
- if (isControlComponent(this.component)) {
49
- this.component.value = value;
50
- // SubGroups won't populate without this detectChanges
51
- this.cdr.detectChanges();
52
- }
53
- }
54
- }
55
- CrisprFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
56
- CrisprFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFieldDirective, selector: "[crisprField]", inputs: { config: "config", group: "group", value: "value" }, ngImport: i0 });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldDirective, decorators: [{
58
- type: Directive,
59
- args: [{
60
- selector: '[crisprField]'
61
- }]
62
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { config: [{
63
- type: Input
64
- }], group: [{
65
- type: Input
66
- }], value: [{
67
- type: Input
68
- }] } });
69
- export class CrisprFieldModule {
70
- }
71
- CrisprFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
72
- CrisprFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldModule, declarations: [CrisprFieldDirective], imports: [CommonModule], exports: [CrisprFieldDirective] });
73
- CrisprFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldModule, imports: [[
74
- CommonModule,
75
- ]] });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldModule, decorators: [{
77
- type: NgModule,
78
- args: [{
79
- imports: [
80
- CommonModule,
81
- ],
82
- exports: [
83
- CrisprFieldDirective
84
- ],
85
- declarations: [
86
- CrisprFieldDirective
87
- ]
88
- }]
89
- }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9maWVsZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUF3QixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFDVSxTQUEyQixFQUMzQixRQUFtQixFQUNuQixHQUFzQjtRQUZ0QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQzdCLENBQUM7SUFkSixJQUFhLEtBQUssQ0FBQyxLQUEyQjtRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixpR0FBaUc7UUFDakcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFTRCxLQUFLLENBQUMsUUFBUTtRQUNaOztXQUVHO1FBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUF1QixTQUFTLENBQUMsQ0FBQztRQUVyRixJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxpRUFBaUU7UUFDakUseUdBQXlHO1FBQ3pHLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLDBEQUEwRDtZQUMxRCxJQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sS0FBSyxDQUFDLGdDQUFnQyxLQUFLLDBCQUEwQixDQUFDLENBQUM7YUFDOUU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDcEU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUEyQjtRQUM5QyxJQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDN0Isc0RBQXNEO1lBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOztpSEF4RFUsb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7K0pBR1UsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLOztBQTZEUixNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBckVqQixvQkFBb0IsYUE0RDdCLFlBQVksYUE1REgsb0JBQW9COytHQXFFcEIsaUJBQWlCLFlBVm5CO1lBQ1AsWUFBWTtTQUNiOzJGQVFVLGlCQUFpQjtrQkFYN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3FCQUNyQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYsIFJlbmRlcmVyMiwgTmdNb2R1bGUsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFueUZpZWxkQ29uZmlnLCBDb250cm9sVmFsdWUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBDcmlzcHJGaWVsZENvbXBvbmVudCwgRklFTERfQ09NUE9ORU5UUywgaXNDb250cm9sQ29tcG9uZW50LCBpc0NvbnRyb2xPckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZmllbGQtY29tcG9uZW50LW1hcC5jb25zdCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY3Jpc3ByRmllbGRdJ1xufSlcbmV4cG9ydCBjbGFzcyBDcmlzcHJGaWVsZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgY29uZmlnOiBBbnlGaWVsZENvbmZpZztcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIHZhbHVlIHNldHRlciB1cGRhdGVzIHRoZSBjb250cm9sJ3MgdmFsdWUgYXMgd2VsbFxuICAgKi9cbiAgX3ZhbHVlOiBDb250cm9sVmFsdWUgfCBhbnlbXVxuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IENvbnRyb2xWYWx1ZSB8IGFueVtdKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBrZWVwIHRoZSBncm91cCBsaXN0IGZyb20gcmVzZXR0aW5nIGNvbnRyb2wgdmFsdWVzIHRvIHRoZSBpbml0aWFsIGlucHV0IHZhbHVlXG4gICAgdGhpcy51cGRhdGVDb21wb25lbnRWYWx1ZSh2YWx1ZSk7XG4gIH07XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgY29tcG9uZW50OiBDcmlzcHJGaWVsZENvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAvKipcbiAgICAgKiBjcmVhdGUgY29tcG9uZW50IGFuZCBzZXQgdmFsdWVzIGZyb20gY29uZmlnIG9uIGl0cyBpbnN0YW5jZVxuICAgICAqL1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29uZmlnLmNvbXBvbmVudCB8fCBhd2FpdCBGSUVMRF9DT01QT05FTlRTW3RoaXMuY29uZmlnLmNvbnRyb2xUeXBlXTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQ8Q3Jpc3ByRmllbGRDb21wb25lbnQ+KGNvbXBvbmVudCk7XG5cbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB0aGlzLmNvbXBvbmVudC5jb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoaXNDb250cm9sT3JCdXR0b25Db21wb25lbnQodGhpcy5jb21wb25lbnQpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5ncm91cCA9IHRoaXMuZ3JvdXA7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgLy8gYWRkcyBhbnkgY29uZmlnIGNsYXNzZXMgdG8gdGhlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBjb21wb25lbnRcbiAgICAvLyBkb2luZyB0aGlzIGhlcmUga2VlcHMgdXMgZnJvbSBoYXZpbmcgdG8gZXh0ZW5kIGEgYmFzZSBjb21wb25lbnQgaW50byBlYWNoIGZpZWxkIGNvbXBvbmVudCBpbmRpdmlkdWFsbHlcbiAgICBpZighdGhpcy5jb25maWcuY2xhc3NlcykgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlnLmNsYXNzZXMuZm9yRWFjaCgoa2xhc3MpID0+IHtcbiAgICAgIC8vIGNoZWNrIGZvciBwYXNzaW5nIG11bHRpcGxlIGNsYXNzZXMgaW4gb25lIGFycmF5IGVsZW1lbnRcbiAgICAgIGlmKGtsYXNzLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYEltcHJvcGVybHkgZm9ybWF0dGVkIGNsYXNzLiAnJHtrbGFzc30nIGNhbm5vdCBjb250YWluIHNwYWNlcy5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsIGtsYXNzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUNvbXBvbmVudFZhbHVlKHZhbHVlOiBDb250cm9sVmFsdWUgfCBhbnlbXSkge1xuICAgIGlmKGlzQ29udHJvbENvbXBvbmVudCh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAvLyBTdWJHcm91cHMgd29uJ3QgcG9wdWxhdGUgd2l0aG91dCB0aGlzIGRldGVjdENoYW5nZXNcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cbn1cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDcmlzcHJGaWVsZERpcmVjdGl2ZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDcmlzcHJGaWVsZERpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENyaXNwckZpZWxkTW9kdWxlIHtcbn1cbiJdfQ==
@@ -1,53 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
3
- import { buildFormGroupFromConfig } from '../form.helpers';
4
- import { Observable } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/forms";
7
- import * as i2 from "@tft/form-validation-handler";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "../field.directive";
10
- import * as i5 from "../pipes/initial-control-value.pipe";
11
- export class CrisprFormComponent {
12
- constructor() {
13
- this.form = new FormGroup({});
14
- this.value = null;
15
- this.submitted = new EventEmitter();
16
- // proxy value and status change events through to consuming component
17
- this.valueChanges = this.form.valueChanges;
18
- this.statusChanges = this.form.statusChanges;
19
- }
20
- ngOnInit() {
21
- // build out the form, note that we pass in the form as the third argument and the function modifies it
22
- buildFormGroupFromConfig(this.config, this.value, this.form);
23
- }
24
- handleSubmit() {
25
- this.form.markAllAsTouched();
26
- this.submitted.emit(this.form);
27
- }
28
- triggerSubmit() {
29
- this.submitTrigger.nativeElement.click();
30
- }
31
- }
32
- CrisprFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- CrisprFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFormComponent, selector: "crispr-form", inputs: { config: "config", form: "form", value: "value" }, outputs: { submitted: "submitted", valueChanges: "valueChanges", statusChanges: "statusChanges" }, viewQueries: [{ propertyName: "submitTrigger", first: true, predicate: ["submitTrigger"], descendants: true }], ngImport: i0, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.ControlErrorsFormDirective, selector: "form", inputs: ["errorDictionary"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }], pipes: { "initialControlValue": i5.InitialControlValuePipe }, preserveWhitespaces: true });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: 'crispr-form', template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"] }]
37
- }], propDecorators: { config: [{
38
- type: Input
39
- }], form: [{
40
- type: Input
41
- }], value: [{
42
- type: Input
43
- }], submitted: [{
44
- type: Output
45
- }], valueChanges: [{
46
- type: Output
47
- }], statusChanges: [{
48
- type: Output
49
- }], submitTrigger: [{
50
- type: ViewChild,
51
- args: ['submitTrigger']
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUEyQixTQUFTLEVBQUUsVUFBVSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPaEQsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQVNXLFNBQUksR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQXNCLElBQUksQ0FBQztRQUUvQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNwRCxzRUFBc0U7UUFDNUQsaUJBQVksR0FBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkQsa0JBQWEsR0FBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7S0FpQnZFO0lBYkMsUUFBUTtRQUNOLHVHQUF1RztRQUN2Ryx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7O2dIQXpCVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixrVUNYaEMsMnlCQXNCQTsyRkRYYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsYUFBYTs4QkFPZCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb250cm9sR3JvdXBWYWx1ZSwgRm9ybUNvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBidWlsZEZvcm1Hcm91cEZyb21Db25maWcgfSBmcm9tICcuLi9mb3JtLmhlbHBlcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItZm9ybScsXG4gIHN0eWxlVXJsczogWydmb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENyaXNwckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBpZiBubyBmb3JtIGhhcyBiZWVuIHBhc3NlZCBpbiBieSBjb25zdW1pbmcgY29tcG9uZW50LCB3ZSBjcmVhdGUgYW4gZW1wdHkgZ3JvdXAgdG8gYnVpbGQgb3V0XG4gIEBJbnB1dCgpIGNvbmZpZzogRm9ybUNvbmZpZztcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIEBJbnB1dCgpIHZhbHVlOiBDb250cm9sR3JvdXBWYWx1ZSA9IG51bGw7XG5cbiAgQE91dHB1dCgpIHN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xuICAvLyBwcm94eSB2YWx1ZSBhbmQgc3RhdHVzIGNoYW5nZSBldmVudHMgdGhyb3VnaCB0byBjb25zdW1pbmcgY29tcG9uZW50XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXM7XG4gIEBPdXRwdXQoKSBzdGF0dXNDaGFuZ2VzOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmZvcm0uc3RhdHVzQ2hhbmdlcztcblxuICBAVmlld0NoaWxkKCdzdWJtaXRUcmlnZ2VyJykgc3VibWl0VHJpZ2dlcjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gYnVpbGQgb3V0IHRoZSBmb3JtLCBub3RlIHRoYXQgd2UgcGFzcyBpbiB0aGUgZm9ybSBhcyB0aGUgdGhpcmQgYXJndW1lbnQgYW5kIHRoZSBmdW5jdGlvbiBtb2RpZmllcyBpdFxuICAgIGJ1aWxkRm9ybUdyb3VwRnJvbUNvbmZpZyh0aGlzLmNvbmZpZywgdGhpcy52YWx1ZSwgdGhpcy5mb3JtKTtcbiAgfVxuXG4gIGhhbmRsZVN1Ym1pdCgpIHtcbiAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIHRoaXMuc3VibWl0dGVkLmVtaXQodGhpcy5mb3JtKTtcbiAgfVxuXG4gIHRyaWdnZXJTdWJtaXQoKSB7XG4gICAgdGhpcy5zdWJtaXRUcmlnZ2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxufVxuIiwiPGZvcm1cbiAgY2xhc3M9XCJjcmlzcHItZm9ybVwiXG4gIFtuZ0NsYXNzXT1cImNvbmZpZy5jbGFzc2VzXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCJcbiAgW2F1dG9jb21wbGV0ZV09XCJjb25maWcuYXV0b2NvbXBsZXRlIHx8ICdvZmYnXCJcbiAgW2Vycm9yRGljdGlvbmFyeV09XCJjb25maWcuZXJyb3JEaWN0aW9uYXJ5XCJcbiAgI25nRm9ybUVsZW1lbnQ9XCJuZ0Zvcm1cIj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGNvbmZpZy5maWVsZHM7XCJcbiAgICBjcmlzcHJGaWVsZFxuICAgIFt2YWx1ZV09XCJ2YWx1ZSB8IGluaXRpYWxDb250cm9sVmFsdWUgOiBmaWVsZFwiXG4gICAgW2NvbmZpZ109XCJmaWVsZFwiXG4gICAgW2dyb3VwXT1cImZvcm1cIj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gSGlkZGVuIGJ1dHRvbiwgcHJvZ3JhbW1hdGljYWxseSBjbGlja2VkIHdoZW4gY3Jpc3ByIGZvcm0gdHJpZ2dlclN1Ym1pdCBmdW5jdGlvbiBjYWxsZWQuXG4gICAgVXNlcyBhIGhpZGRlbiBidXR0b24gd2l0aCB0eXBlPVwic3VibWl0XCIgYmVjYXVzZSBpdCB3aWxsIHRyaWdnZXIgYm90aCBuYXRpdmUgZm9ybSBzdWJtaXQgZXZlbnRcbiAgICAod2hpY2ggdGhlIGVycm9yIGhhbmRsZXIgaGFzIHRvIGxpc3RlbiBmb3IpIGFuZCBuZ1N1Ym1pdCBldmVudCAgLS0+XG4gIDxidXR0b24gI3N1Ym1pdFRyaWdnZXIgY2xhc3M9XCJzdWJtaXQtdHJpZ2dlclwiIHR5cGU9XCJzdWJtaXRcIj5cbiAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
@@ -1,77 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
2
- import { createControlForType } from '../form.helpers';
3
- import { CrisprFieldComponent, crisprControlMixin } from '../abstracts';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../field-container/field-container.component";
6
- import * as i2 from "@angular/material/button";
7
- import * as i3 from "@angular/material/icon";
8
- import * as i4 from "@angular/forms";
9
- import * as i5 from "@tft/form-validation-handler";
10
- import * as i6 from "@angular/common";
11
- import * as i7 from "../field.directive";
12
- import * as i8 from "../pipes/initial-control-value.pipe";
13
- const defaultConfig = {
14
- addButtonLabel: 'ADD ITEM',
15
- minListLength: 1,
16
- };
17
- const FormGroupListMixin = crisprControlMixin(CrisprFieldComponent);
18
- export class FormGroupListComponent extends FormGroupListMixin {
19
- constructor(cdr) {
20
- super();
21
- this.cdr = cdr;
22
- this.defaultConfig = defaultConfig;
23
- /**
24
- * By setting this to true when adding/removing items from array,
25
- * we can block original values from overwriting form values
26
- * */
27
- this.blockValue = false;
28
- }
29
- ngOnInit() {
30
- super.ngOnInit();
31
- // TODO: this is required to ngFor of controls in template, must be a better way
32
- }
33
- setControlValue(values) {
34
- if (this.control) {
35
- if (values?.length > 0) {
36
- // clear any existing values so that new values don't concatenate onto the old
37
- const currentValues = this.control.value;
38
- if (currentValues.length) {
39
- this.control.clear();
40
- }
41
- values.forEach(value => this.addGroup(value));
42
- }
43
- else if (this.config.displayInitialItem) {
44
- this.addGroup();
45
- }
46
- // needed to ensure new array items render
47
- setTimeout(() => {
48
- this.cdr.detectChanges();
49
- });
50
- }
51
- }
52
- clickDelete(index) {
53
- this.blockValue = true;
54
- this.deleteGroup(index);
55
- }
56
- clickAdd() {
57
- this.blockValue = true;
58
- this.addGroup();
59
- }
60
- addGroup(value = null) {
61
- this.control.push(createControlForType(this.config.itemConfig, value));
62
- // needed to ensure new array items render
63
- setTimeout(() => {
64
- this.cdr.detectChanges();
65
- });
66
- }
67
- deleteGroup(index) {
68
- this.control.removeAt(index);
69
- }
70
- }
71
- FormGroupListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FormGroupListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
72
- FormGroupListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: FormGroupListComponent, selector: "crispr-form-group-list", usesInheritance: true, ngImport: i0, template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n <!-- Don't add trackBy function, it confuses the state of the array -->\n <div *ngFor=\"let con of control?.controls; let i = index;\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\"> {{ config.itemLabelBuilder ? config.itemLabelBuilder(i) : 'Item ' + (i + 1) }} </span>\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"clickDelete(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroup]=\"con\">\n <!-- TODO: if chiplists didn't need to have labels mixed in with their values we could use [value]=\"control.value\" below -->\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [value]=\"blockValue ? null : value && value[i] | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"con\">\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"clickAdd()\">\n {{config.addItemLabel || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n", styles: [".item-header{display:flex;justify-content:space-between}.group-footer{display:flex;justify-content:flex-end}.group-footer button.add{margin-bottom:16px}\n"], components: [{ type: i1.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }], pipes: { "initialControlValue": i8.InitialControlValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FormGroupListComponent, decorators: [{
74
- type: Component,
75
- args: [{ selector: 'crispr-form-group-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n <!-- Don't add trackBy function, it confuses the state of the array -->\n <div *ngFor=\"let con of control?.controls; let i = index;\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\"> {{ config.itemLabelBuilder ? config.itemLabelBuilder(i) : 'Item ' + (i + 1) }} </span>\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"clickDelete(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroup]=\"con\">\n <!-- TODO: if chiplists didn't need to have labels mixed in with their values we could use [value]=\"control.value\" below -->\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [value]=\"blockValue ? null : value && value[i] | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"con\">\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"clickAdd()\">\n {{config.addItemLabel || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n", styles: [".item-header{display:flex;justify-content:space-between}.group-footer{display:flex;justify-content:flex-end}.group-footer button.add{margin-bottom:16px}\n"] }]
76
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvZm9ybS1ncm91cC1saXN0L2Zvcm0tZ3JvdXAtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Zvcm0tZ3JvdXAtbGlzdC9mb3JtLWdyb3VwLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk5RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7QUFFeEUsTUFBTSxhQUFhLEdBQWlDO0lBQ2xELGNBQWMsRUFBRSxVQUFVO0lBQzFCLGFBQWEsRUFBRSxDQUFDO0NBQ2pCLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixDQUFzQixvQkFBb0IsQ0FBQyxDQUFDO0FBT3pGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxrQkFBa0I7SUFXNUQsWUFBb0IsR0FBc0I7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVQxQyxrQkFBYSxHQUFHLGFBQWEsQ0FBQTtRQUc3Qjs7O2FBR0s7UUFDTCxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBSW5CLENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLGdGQUFnRjtJQUNsRixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWE7UUFDM0IsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBRyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDckIsOEVBQThFO2dCQUM5RSxNQUFNLGFBQWEsR0FBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDNUMsSUFBRyxhQUFhLENBQUMsTUFBTSxFQUFFO29CQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN0QjtnQkFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBRS9DO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtnQkFDekMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO2FBQ2hCO1lBQ0QsMENBQTBDO1lBQzFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLDBDQUEwQztRQUMxQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOzttSEE1RFUsc0JBQXNCO3VHQUF0QixzQkFBc0IscUZDbkJuQyxzZ0RBNENBOzJGRHpCYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB0eXBlIHsgRm9ybUdyb3VwTGlzdENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBjcmVhdGVDb250cm9sRm9yVHlwZSB9IGZyb20gJy4uL2Zvcm0uaGVscGVycyc7XG5pbXBvcnQgeyBDcmlzcHJGaWVsZENvbXBvbmVudCwgY3Jpc3ByQ29udHJvbE1peGluIH0gZnJvbSAnLi4vYWJzdHJhY3RzJztcblxuY29uc3QgZGVmYXVsdENvbmZpZzogUGFydGlhbDxGb3JtR3JvdXBMaXN0Q29uZmlnPiA9IHtcbiAgYWRkQnV0dG9uTGFiZWw6ICdBREQgSVRFTScsXG4gIG1pbkxpc3RMZW5ndGg6IDEsXG59O1xuXG5jb25zdCBGb3JtR3JvdXBMaXN0TWl4aW4gPSBjcmlzcHJDb250cm9sTWl4aW48Rm9ybUdyb3VwTGlzdENvbmZpZz4oQ3Jpc3ByRmllbGRDb21wb25lbnQpO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Jpc3ByLWZvcm0tZ3JvdXAtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdyb3VwLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWdyb3VwLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUdyb3VwTGlzdENvbXBvbmVudCBleHRlbmRzIEZvcm1Hcm91cExpc3RNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGVmYXVsdENvbmZpZyA9IGRlZmF1bHRDb25maWdcbiAgZ3JvdXA6IEZvcm1Hcm91cDtcbiAgY29udHJvbDogRm9ybUFycmF5O1xuICAvKipcbiAgICogQnkgc2V0dGluZyB0aGlzIHRvIHRydWUgd2hlbiBhZGRpbmcvcmVtb3ZpbmcgaXRlbXMgZnJvbSBhcnJheSxcbiAgICogd2UgY2FuIGJsb2NrIG9yaWdpbmFsIHZhbHVlcyBmcm9tIG92ZXJ3cml0aW5nIGZvcm0gdmFsdWVzXG4gICAqICovXG4gIGJsb2NrVmFsdWUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIHJlcXVpcmVkIHRvIG5nRm9yIG9mIGNvbnRyb2xzIGluIHRlbXBsYXRlLCBtdXN0IGJlIGEgYmV0dGVyIHdheVxuICB9XG5cbiAgc2V0Q29udHJvbFZhbHVlKHZhbHVlczogYW55W10pIHtcbiAgICBpZih0aGlzLmNvbnRyb2wpIHtcbiAgICAgIGlmKHZhbHVlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBjbGVhciBhbnkgZXhpc3RpbmcgdmFsdWVzIHNvIHRoYXQgbmV3IHZhbHVlcyBkb24ndCBjb25jYXRlbmF0ZSBvbnRvIHRoZSBvbGRcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlczpbXSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICAgICAgaWYoY3VycmVudFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLmFkZEdyb3VwKHZhbHVlKSk7XG5cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuZGlzcGxheUluaXRpYWxJdGVtKSB7XG4gICAgICAgIHRoaXMuYWRkR3JvdXAoKVxuICAgICAgfVxuICAgICAgLy8gbmVlZGVkIHRvIGVuc3VyZSBuZXcgYXJyYXkgaXRlbXMgcmVuZGVyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjbGlja0RlbGV0ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5ibG9ja1ZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLmRlbGV0ZUdyb3VwKGluZGV4KTtcbiAgfVxuXG4gIGNsaWNrQWRkKCkge1xuICAgIHRoaXMuYmxvY2tWYWx1ZSA9IHRydWU7XG4gICAgdGhpcy5hZGRHcm91cCgpO1xuICB9XG5cbiAgYWRkR3JvdXAodmFsdWUgPSBudWxsKSB7XG4gICAgdGhpcy5jb250cm9sLnB1c2goY3JlYXRlQ29udHJvbEZvclR5cGUodGhpcy5jb25maWcuaXRlbUNvbmZpZywgdmFsdWUpKTtcbiAgICAvLyBuZWVkZWQgdG8gZW5zdXJlIG5ldyBhcnJheSBpdGVtcyByZW5kZXJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KVxuICB9XG5cbiAgZGVsZXRlR3JvdXAoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY29udHJvbC5yZW1vdmVBdChpbmRleCk7XG4gIH1cbn1cbiIsIlxuPGNyaXNwci1maWVsZC1jb250YWluZXJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxuICBbZ3JvdXBdPVwiZ3JvdXBcIlxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG5cbiAgPGRpdiBbZm9ybUFycmF5TmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIj5cbiAgICA8IS0tIERvbid0IGFkZCB0cmFja0J5IGZ1bmN0aW9uLCBpdCBjb25mdXNlcyB0aGUgc3RhdGUgb2YgdGhlIGFycmF5IC0tPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbiBvZiBjb250cm9sPy5jb250cm9sczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgIDwhLS0gVE9ETzogdXNlIGNvbnRlbnQgcHJvamVjdGlvbiB0byBhbGxvdyBjdXN0b20gaXRlbSBsYWJlbCBjb21wb25lbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1oZWFkZXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtaDJcIj4ge3sgY29uZmlnLml0ZW1MYWJlbEJ1aWxkZXIgPyBjb25maWcuaXRlbUxhYmVsQnVpbGRlcihpKSA6ICdJdGVtICcgKyAoaSArIDEpIH19IDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICpuZ0lmPVwiaSArIDEgPiBjb25maWcubWluTGlzdExlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xpY2tEZWxldGUoaSlcIj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBbZm9ybUdyb3VwXT1cImNvblwiPlxuICAgICAgICA8IS0tIFRPRE86IGlmIGNoaXBsaXN0cyBkaWRuJ3QgbmVlZCB0byBoYXZlIGxhYmVscyBtaXhlZCBpbiB3aXRoIHRoZWlyIHZhbHVlcyB3ZSBjb3VsZCB1c2UgW3ZhbHVlXT1cImNvbnRyb2wudmFsdWVcIiBiZWxvdyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBjb25maWcuaXRlbUNvbmZpZy5maWVsZHM7XCJcbiAgICAgICAgICBjcmlzcHJGaWVsZFxuICAgICAgICAgIFt2YWx1ZV09XCJibG9ja1ZhbHVlID8gbnVsbCA6IHZhbHVlICYmIHZhbHVlW2ldIHwgaW5pdGlhbENvbnRyb2xWYWx1ZSA6IGZpZWxkXCJcbiAgICAgICAgICBbY29uZmlnXT1cImZpZWxkXCJcbiAgICAgICAgICBbZ3JvdXBdPVwiY29uXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ3JvdXAtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImFkZFwiXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgW2NvbG9yXT1cImNvbmZpZy5hZGRCdXR0b25Db2xvclwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tBZGQoKVwiPlxuICAgICAge3tjb25maWcuYWRkSXRlbUxhYmVsIHx8IGNvbmZpZy5hZGRCdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG48L2NyaXNwci1maWVsZC1jb250YWluZXI+XG4iXX0=