@tft/crispr-forms 12.2.20 → 13.0.1

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 (342) hide show
  1. package/README.md +9 -69
  2. package/esm2020/index.mjs +2 -0
  3. package/esm2020/lib/abstracts/autocomplete-field.abstract.mjs +30 -0
  4. package/esm2020/lib/abstracts/crispr-control.mixin.mjs +27 -0
  5. package/esm2020/lib/abstracts/crispr-field.abstract.mjs +17 -0
  6. package/esm2020/lib/abstracts/index.mjs +4 -0
  7. package/esm2020/lib/crispr-forms.module.mjs +66 -0
  8. package/esm2020/lib/field-component-map.const.mjs +25 -0
  9. package/esm2020/lib/field-container/field-container.component.mjs +85 -0
  10. package/esm2020/lib/field-container/index.mjs +2 -0
  11. package/esm2020/lib/field.directive.mjs +77 -0
  12. package/esm2020/lib/form/form.component.mjs +54 -0
  13. package/esm2020/lib/form-group-list/form-group-list.component.mjs +51 -0
  14. package/esm2020/lib/form-group-list/form-group-list.module.mjs +54 -0
  15. package/esm2020/lib/form-group-list/index.mjs +3 -0
  16. package/esm2020/lib/form.helpers.mjs +185 -0
  17. package/esm2020/lib/form.operators.mjs +24 -0
  18. package/esm2020/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +111 -0
  19. package/esm2020/lib/material/autocomplete-field/autocomplete-field.component.mjs +70 -0
  20. package/esm2020/lib/material/button/button.component.mjs +35 -0
  21. package/esm2020/lib/material/checkbox-field/checkbox-field.component.mjs +31 -0
  22. package/esm2020/lib/material/datepicker-field/datepicker-field.component.mjs +45 -0
  23. package/esm2020/lib/material/divider/divider.component.mjs +22 -0
  24. package/esm2020/lib/material/file-upload/file-dropzone.directive.mjs +39 -0
  25. package/esm2020/lib/material/file-upload/file-upload.component.mjs +145 -0
  26. package/esm2020/lib/material/file-upload/index.mjs +3 -0
  27. package/esm2020/lib/material/heading/heading.component.mjs +54 -0
  28. package/esm2020/lib/material/image-upload-field/image-compression.helpers.mjs +4 -0
  29. package/esm2020/lib/material/image-upload-field/image-upload-field.component.mjs +213 -0
  30. package/esm2020/lib/material/image-upload-field/index.mjs +2 -0
  31. package/esm2020/lib/material/index.mjs +18 -0
  32. package/esm2020/lib/material/info/info.component.mjs +46 -0
  33. package/esm2020/lib/material/input-field/input-field.component.mjs +27 -0
  34. package/esm2020/lib/material/material.module.mjs +200 -0
  35. package/esm2020/lib/material/option/index.mjs +2 -0
  36. package/esm2020/lib/material/option/option.component.mjs +14 -0
  37. package/esm2020/lib/material/radio-field/radio-field.component.mjs +29 -0
  38. package/esm2020/lib/material/select-field/select-field.component.mjs +58 -0
  39. package/esm2020/lib/material/selected-file/selected-file.component.mjs +47 -0
  40. package/esm2020/lib/material/slider-field/slider-field.component.mjs +30 -0
  41. package/esm2020/lib/material/textarea-field/textarea-field.component.mjs +28 -0
  42. package/esm2020/lib/material/unit-conversion-field/unit-conversion-field.component.mjs +69 -0
  43. package/esm2020/lib/models/autocomplete-chiplist-field.config.mjs +2 -0
  44. package/esm2020/lib/models/autocomplete-field.config.mjs +2 -0
  45. package/esm2020/lib/models/button.config.mjs +2 -0
  46. package/esm2020/lib/models/checkbox-field.config.mjs +2 -0
  47. package/esm2020/lib/models/crispr-field.config.mjs +23 -0
  48. package/esm2020/lib/models/datepicker-field.config.mjs +2 -0
  49. package/esm2020/lib/models/divider.config.mjs +2 -0
  50. package/esm2020/lib/models/file-upload-field.config.mjs +2 -0
  51. package/esm2020/lib/models/form-group-list.config.mjs +2 -0
  52. package/esm2020/lib/models/heading.config.mjs +3 -0
  53. package/esm2020/lib/models/image-upload-field.config.mjs +2 -0
  54. package/esm2020/lib/models/index.mjs +18 -0
  55. package/esm2020/lib/models/input-field.config.mjs +2 -0
  56. package/esm2020/lib/models/radio-field.config.mjs +2 -0
  57. package/esm2020/lib/models/select-field.config.mjs +2 -0
  58. package/esm2020/lib/models/slider-field.config.mjs +2 -0
  59. package/esm2020/lib/models/textarea-field.config.mjs +2 -0
  60. package/esm2020/lib/models/unit-conversion-field.config.mjs +2 -0
  61. package/esm2020/lib/pipes/crispr-pipes.module.mjs +26 -0
  62. package/esm2020/lib/pipes/initial-control-value.pipe.mjs +20 -0
  63. package/esm2020/lib/public_api.mjs +10 -0
  64. package/esm2020/lib/sub-group/index.mjs +3 -0
  65. package/esm2020/lib/sub-group/sub-group.component.mjs +20 -0
  66. package/esm2020/lib/sub-group/sub-group.module.mjs +45 -0
  67. package/esm2020/tft-crispr-forms.mjs +5 -0
  68. package/fesm2015/tft-crispr-forms.mjs +1883 -0
  69. package/fesm2015/tft-crispr-forms.mjs.map +1 -0
  70. package/fesm2020/tft-crispr-forms.mjs +1875 -0
  71. package/fesm2020/tft-crispr-forms.mjs.map +1 -0
  72. package/lib/abstracts/autocomplete-field.abstract.d.ts +4 -1
  73. package/lib/abstracts/crispr-control.mixin.d.ts +1 -1
  74. package/lib/abstracts/crispr-field.abstract.d.ts +4 -1
  75. package/lib/crispr-forms.module.d.ts +14 -0
  76. package/lib/field-component-map.const.d.ts +21 -20
  77. package/lib/field-container/field-container.component.d.ts +11 -1
  78. package/lib/field-container/index.d.ts +1 -0
  79. package/lib/field.directive.d.ts +14 -5
  80. package/lib/form/form.component.d.ts +6 -1
  81. package/lib/form-group-list/form-group-list.component.d.ts +4 -1
  82. package/lib/form-group-list/form-group-list.module.d.ts +15 -0
  83. package/lib/form-group-list/index.d.ts +2 -0
  84. package/lib/form.helpers.d.ts +1 -1
  85. package/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.d.ts +3 -0
  86. package/lib/material/autocomplete-field/autocomplete-field.component.d.ts +4 -1
  87. package/lib/material/button/button.component.d.ts +3 -0
  88. package/lib/material/checkbox-field/checkbox-field.component.d.ts +3 -0
  89. package/lib/material/datepicker-field/datepicker-field.component.d.ts +3 -0
  90. package/lib/material/divider/divider.component.d.ts +3 -0
  91. package/lib/material/file-upload/file-dropzone.directive.d.ts +3 -0
  92. package/lib/material/file-upload/file-upload.component.d.ts +20 -2
  93. package/lib/material/file-upload/index.d.ts +2 -0
  94. package/lib/material/heading/heading.component.d.ts +12 -1
  95. package/lib/material/image-upload-field/image-compression.helpers.d.ts +1 -0
  96. package/lib/material/image-upload-field/image-upload-field.component.d.ts +63 -0
  97. package/lib/material/image-upload-field/index.d.ts +1 -0
  98. package/lib/material/index.d.ts +4 -1
  99. package/lib/material/info/info.component.d.ts +12 -1
  100. package/lib/material/input-field/input-field.component.d.ts +3 -0
  101. package/lib/material/material.module.d.ts +42 -0
  102. package/lib/material/option/index.d.ts +1 -0
  103. package/lib/material/option/option.component.d.ts +3 -0
  104. package/lib/material/radio-field/radio-field.component.d.ts +3 -0
  105. package/lib/material/select-field/select-field.component.d.ts +3 -0
  106. package/lib/material/selected-file/selected-file.component.d.ts +10 -0
  107. package/lib/material/slider-field/slider-field.component.d.ts +3 -0
  108. package/lib/material/textarea-field/textarea-field.component.d.ts +3 -0
  109. package/lib/material/unit-conversion-field/unit-conversion-field.component.d.ts +3 -0
  110. package/lib/models/autocomplete-field.config.d.ts +2 -1
  111. package/lib/models/button.config.d.ts +3 -2
  112. package/lib/models/crispr-field.config.d.ts +8 -7
  113. package/lib/models/file-upload-field.config.d.ts +3 -2
  114. package/lib/models/image-upload-field.config.d.ts +47 -0
  115. package/lib/models/index.d.ts +2 -0
  116. package/lib/models/input-field.config.d.ts +1 -1
  117. package/lib/models/radio-field.config.d.ts +1 -1
  118. package/lib/models/unit-conversion-field.config.d.ts +0 -1
  119. package/lib/pipes/crispr-pipes.module.d.ts +8 -0
  120. package/lib/pipes/initial-control-value.pipe.d.ts +3 -0
  121. package/lib/public_api.d.ts +1 -0
  122. package/lib/sub-group/index.d.ts +2 -0
  123. package/lib/sub-group/sub-group.component.d.ts +3 -0
  124. package/lib/sub-group/sub-group.module.d.ts +12 -0
  125. package/package.json +30 -15
  126. package/tft-crispr-forms-13.0.1.tgz +0 -0
  127. package/tft-crispr-forms.d.ts +1 -25
  128. package/bundles/tft-crispr-forms.umd.js +0 -1719
  129. package/bundles/tft-crispr-forms.umd.js.map +0 -1
  130. package/esm2015/index.js +0 -2
  131. package/esm2015/index.js.map +0 -1
  132. package/esm2015/index.metadata.json +0 -1
  133. package/esm2015/lib/abstracts/autocomplete-field.abstract.js +0 -27
  134. package/esm2015/lib/abstracts/autocomplete-field.abstract.js.map +0 -1
  135. package/esm2015/lib/abstracts/autocomplete-field.abstract.metadata.json +0 -1
  136. package/esm2015/lib/abstracts/crispr-control.mixin.js +0 -27
  137. package/esm2015/lib/abstracts/crispr-control.mixin.js.map +0 -1
  138. package/esm2015/lib/abstracts/crispr-control.mixin.metadata.json +0 -1
  139. package/esm2015/lib/abstracts/crispr-field.abstract.js +0 -14
  140. package/esm2015/lib/abstracts/crispr-field.abstract.js.map +0 -1
  141. package/esm2015/lib/abstracts/crispr-field.abstract.metadata.json +0 -1
  142. package/esm2015/lib/abstracts/index.js +0 -4
  143. package/esm2015/lib/abstracts/index.js.map +0 -1
  144. package/esm2015/lib/abstracts/index.metadata.json +0 -1
  145. package/esm2015/lib/crispr-forms.module.js +0 -41
  146. package/esm2015/lib/crispr-forms.module.js.map +0 -1
  147. package/esm2015/lib/crispr-forms.module.metadata.json +0 -1
  148. package/esm2015/lib/crispr-forms.module.ngfactory.js.map +0 -1
  149. package/esm2015/lib/field-component-map.const.js +0 -28
  150. package/esm2015/lib/field-component-map.const.js.map +0 -1
  151. package/esm2015/lib/field-component-map.const.metadata.json +0 -1
  152. package/esm2015/lib/field-container/field-container.component.js +0 -57
  153. package/esm2015/lib/field-container/field-container.component.js.map +0 -1
  154. package/esm2015/lib/field-container/field-container.component.metadata.json +0 -1
  155. package/esm2015/lib/field-container/field-container.component.ngfactory.js.map +0 -1
  156. package/esm2015/lib/field-container/field-container.component.scss.shim.ngstyle.js.map +0 -1
  157. package/esm2015/lib/field.directive.js +0 -55
  158. package/esm2015/lib/field.directive.js.map +0 -1
  159. package/esm2015/lib/field.directive.metadata.json +0 -1
  160. package/esm2015/lib/field.directive.ngfactory.js.map +0 -1
  161. package/esm2015/lib/form/form.component.js +0 -40
  162. package/esm2015/lib/form/form.component.js.map +0 -1
  163. package/esm2015/lib/form/form.component.metadata.json +0 -1
  164. package/esm2015/lib/form/form.component.ngfactory.js.map +0 -1
  165. package/esm2015/lib/form/form.component.scss.shim.ngstyle.js.map +0 -1
  166. package/esm2015/lib/form-group-list/form-group-list.component.js +0 -44
  167. package/esm2015/lib/form-group-list/form-group-list.component.js.map +0 -1
  168. package/esm2015/lib/form-group-list/form-group-list.component.metadata.json +0 -1
  169. package/esm2015/lib/form-group-list/form-group-list.component.ngfactory.js.map +0 -1
  170. package/esm2015/lib/form-group-list/form-group-list.component.scss.shim.ngstyle.js.map +0 -1
  171. package/esm2015/lib/form.helpers.js +0 -186
  172. package/esm2015/lib/form.helpers.js.map +0 -1
  173. package/esm2015/lib/form.helpers.metadata.json +0 -1
  174. package/esm2015/lib/form.operators.js +0 -24
  175. package/esm2015/lib/form.operators.js.map +0 -1
  176. package/esm2015/lib/form.operators.metadata.json +0 -1
  177. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js +0 -101
  178. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js.map +0 -1
  179. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.metadata.json +0 -1
  180. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.ngfactory.js.map +0 -1
  181. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.scss.shim.ngstyle.js.map +0 -1
  182. package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.js +0 -57
  183. package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.js.map +0 -1
  184. package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.metadata.json +0 -1
  185. package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.ngfactory.js.map +0 -1
  186. package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.scss.shim.ngstyle.js.map +0 -1
  187. package/esm2015/lib/material/button/button.component.js +0 -30
  188. package/esm2015/lib/material/button/button.component.js.map +0 -1
  189. package/esm2015/lib/material/button/button.component.metadata.json +0 -1
  190. package/esm2015/lib/material/button/button.component.ngfactory.js.map +0 -1
  191. package/esm2015/lib/material/button/button.component.scss.shim.ngstyle.js.map +0 -1
  192. package/esm2015/lib/material/checkbox-field/checkbox-field.component.js +0 -25
  193. package/esm2015/lib/material/checkbox-field/checkbox-field.component.js.map +0 -1
  194. package/esm2015/lib/material/checkbox-field/checkbox-field.component.metadata.json +0 -1
  195. package/esm2015/lib/material/checkbox-field/checkbox-field.component.ngfactory.js.map +0 -1
  196. package/esm2015/lib/material/checkbox-field/checkbox-field.component.scss.shim.ngstyle.js.map +0 -1
  197. package/esm2015/lib/material/datepicker-field/datepicker-field.component.js +0 -45
  198. package/esm2015/lib/material/datepicker-field/datepicker-field.component.js.map +0 -1
  199. package/esm2015/lib/material/datepicker-field/datepicker-field.component.metadata.json +0 -1
  200. package/esm2015/lib/material/datepicker-field/datepicker-field.component.ngfactory.js.map +0 -1
  201. package/esm2015/lib/material/datepicker-field/datepicker-field.component.scss.shim.ngstyle.js.map +0 -1
  202. package/esm2015/lib/material/divider/divider.component.js +0 -20
  203. package/esm2015/lib/material/divider/divider.component.js.map +0 -1
  204. package/esm2015/lib/material/divider/divider.component.metadata.json +0 -1
  205. package/esm2015/lib/material/divider/divider.component.ngfactory.js.map +0 -1
  206. package/esm2015/lib/material/divider/divider.component.scss.shim.ngstyle.js.map +0 -1
  207. package/esm2015/lib/material/file-upload/file-dropzone.directive.js +0 -31
  208. package/esm2015/lib/material/file-upload/file-dropzone.directive.js.map +0 -1
  209. package/esm2015/lib/material/file-upload/file-dropzone.directive.metadata.json +0 -1
  210. package/esm2015/lib/material/file-upload/file-dropzone.directive.ngfactory.js.map +0 -1
  211. package/esm2015/lib/material/file-upload/file-upload.component.js +0 -80
  212. package/esm2015/lib/material/file-upload/file-upload.component.js.map +0 -1
  213. package/esm2015/lib/material/file-upload/file-upload.component.metadata.json +0 -1
  214. package/esm2015/lib/material/file-upload/file-upload.component.ngfactory.js.map +0 -1
  215. package/esm2015/lib/material/file-upload/file-upload.component.scss.shim.ngstyle.js.map +0 -1
  216. package/esm2015/lib/material/heading/heading.component.js +0 -23
  217. package/esm2015/lib/material/heading/heading.component.js.map +0 -1
  218. package/esm2015/lib/material/heading/heading.component.metadata.json +0 -1
  219. package/esm2015/lib/material/heading/heading.component.ngfactory.js.map +0 -1
  220. package/esm2015/lib/material/heading/heading.component.scss.shim.ngstyle.js.map +0 -1
  221. package/esm2015/lib/material/index.js +0 -15
  222. package/esm2015/lib/material/index.js.map +0 -1
  223. package/esm2015/lib/material/index.metadata.json +0 -1
  224. package/esm2015/lib/material/info/info.component.js +0 -15
  225. package/esm2015/lib/material/info/info.component.js.map +0 -1
  226. package/esm2015/lib/material/info/info.component.metadata.json +0 -1
  227. package/esm2015/lib/material/info/info.component.ngfactory.js.map +0 -1
  228. package/esm2015/lib/material/info/info.component.scss.shim.ngstyle.js.map +0 -1
  229. package/esm2015/lib/material/input-field/input-field.component.js +0 -22
  230. package/esm2015/lib/material/input-field/input-field.component.js.map +0 -1
  231. package/esm2015/lib/material/input-field/input-field.component.metadata.json +0 -1
  232. package/esm2015/lib/material/input-field/input-field.component.ngfactory.js.map +0 -1
  233. package/esm2015/lib/material/input-field/input-field.component.scss.shim.ngstyle.js.map +0 -1
  234. package/esm2015/lib/material/material.module.js +0 -107
  235. package/esm2015/lib/material/material.module.js.map +0 -1
  236. package/esm2015/lib/material/material.module.metadata.json +0 -1
  237. package/esm2015/lib/material/material.module.ngfactory.js.map +0 -1
  238. package/esm2015/lib/material/option/option.component.js +0 -15
  239. package/esm2015/lib/material/option/option.component.js.map +0 -1
  240. package/esm2015/lib/material/option/option.component.metadata.json +0 -1
  241. package/esm2015/lib/material/option/option.component.ngfactory.js.map +0 -1
  242. package/esm2015/lib/material/option/option.component.scss.shim.ngstyle.js.map +0 -1
  243. package/esm2015/lib/material/radio-field/radio-field.component.js +0 -25
  244. package/esm2015/lib/material/radio-field/radio-field.component.js.map +0 -1
  245. package/esm2015/lib/material/radio-field/radio-field.component.metadata.json +0 -1
  246. package/esm2015/lib/material/radio-field/radio-field.component.ngfactory.js.map +0 -1
  247. package/esm2015/lib/material/radio-field/radio-field.component.scss.shim.ngstyle.js.map +0 -1
  248. package/esm2015/lib/material/select-field/select-field.component.js +0 -50
  249. package/esm2015/lib/material/select-field/select-field.component.js.map +0 -1
  250. package/esm2015/lib/material/select-field/select-field.component.metadata.json +0 -1
  251. package/esm2015/lib/material/select-field/select-field.component.ngfactory.js.map +0 -1
  252. package/esm2015/lib/material/select-field/select-field.component.scss.shim.ngstyle.js.map +0 -1
  253. package/esm2015/lib/material/selected-file/selected-file.component.js +0 -17
  254. package/esm2015/lib/material/selected-file/selected-file.component.js.map +0 -1
  255. package/esm2015/lib/material/selected-file/selected-file.component.metadata.json +0 -1
  256. package/esm2015/lib/material/selected-file/selected-file.component.ngfactory.js.map +0 -1
  257. package/esm2015/lib/material/selected-file/selected-file.component.scss.shim.ngstyle.js.map +0 -1
  258. package/esm2015/lib/material/slider-field/slider-field.component.js +0 -26
  259. package/esm2015/lib/material/slider-field/slider-field.component.js.map +0 -1
  260. package/esm2015/lib/material/slider-field/slider-field.component.metadata.json +0 -1
  261. package/esm2015/lib/material/slider-field/slider-field.component.ngfactory.js.map +0 -1
  262. package/esm2015/lib/material/slider-field/slider-field.component.scss.shim.ngstyle.js.map +0 -1
  263. package/esm2015/lib/material/textarea-field/textarea-field.component.js +0 -22
  264. package/esm2015/lib/material/textarea-field/textarea-field.component.js.map +0 -1
  265. package/esm2015/lib/material/textarea-field/textarea-field.component.metadata.json +0 -1
  266. package/esm2015/lib/material/textarea-field/textarea-field.component.ngfactory.js.map +0 -1
  267. package/esm2015/lib/material/textarea-field/textarea-field.component.scss.shim.ngstyle.js.map +0 -1
  268. package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.js +0 -63
  269. package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.js.map +0 -1
  270. package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.metadata.json +0 -1
  271. package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.ngfactory.js.map +0 -1
  272. package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.scss.shim.ngstyle.js.map +0 -1
  273. package/esm2015/lib/models/autocomplete-chiplist-field.config.js +0 -2
  274. package/esm2015/lib/models/autocomplete-chiplist-field.config.js.map +0 -1
  275. package/esm2015/lib/models/autocomplete-chiplist-field.config.metadata.json +0 -1
  276. package/esm2015/lib/models/autocomplete-field.config.js +0 -2
  277. package/esm2015/lib/models/autocomplete-field.config.js.map +0 -1
  278. package/esm2015/lib/models/autocomplete-field.config.metadata.json +0 -1
  279. package/esm2015/lib/models/button.config.js +0 -2
  280. package/esm2015/lib/models/button.config.js.map +0 -1
  281. package/esm2015/lib/models/button.config.metadata.json +0 -1
  282. package/esm2015/lib/models/checkbox-field.config.js +0 -2
  283. package/esm2015/lib/models/checkbox-field.config.js.map +0 -1
  284. package/esm2015/lib/models/checkbox-field.config.metadata.json +0 -1
  285. package/esm2015/lib/models/crispr-field.config.js +0 -22
  286. package/esm2015/lib/models/crispr-field.config.js.map +0 -1
  287. package/esm2015/lib/models/crispr-field.config.metadata.json +0 -1
  288. package/esm2015/lib/models/datepicker-field.config.js +0 -2
  289. package/esm2015/lib/models/datepicker-field.config.js.map +0 -1
  290. package/esm2015/lib/models/datepicker-field.config.metadata.json +0 -1
  291. package/esm2015/lib/models/divider.config.js +0 -2
  292. package/esm2015/lib/models/divider.config.js.map +0 -1
  293. package/esm2015/lib/models/divider.config.metadata.json +0 -1
  294. package/esm2015/lib/models/file-upload-field.config.js +0 -2
  295. package/esm2015/lib/models/file-upload-field.config.js.map +0 -1
  296. package/esm2015/lib/models/file-upload-field.config.metadata.json +0 -1
  297. package/esm2015/lib/models/form-group-list.config.js +0 -2
  298. package/esm2015/lib/models/form-group-list.config.js.map +0 -1
  299. package/esm2015/lib/models/form-group-list.config.metadata.json +0 -1
  300. package/esm2015/lib/models/heading.config.js +0 -3
  301. package/esm2015/lib/models/heading.config.js.map +0 -1
  302. package/esm2015/lib/models/heading.config.metadata.json +0 -1
  303. package/esm2015/lib/models/index.js +0 -16
  304. package/esm2015/lib/models/index.js.map +0 -1
  305. package/esm2015/lib/models/index.metadata.json +0 -1
  306. package/esm2015/lib/models/input-field.config.js +0 -2
  307. package/esm2015/lib/models/input-field.config.js.map +0 -1
  308. package/esm2015/lib/models/input-field.config.metadata.json +0 -1
  309. package/esm2015/lib/models/radio-field.config.js +0 -2
  310. package/esm2015/lib/models/radio-field.config.js.map +0 -1
  311. package/esm2015/lib/models/radio-field.config.metadata.json +0 -1
  312. package/esm2015/lib/models/select-field.config.js +0 -2
  313. package/esm2015/lib/models/select-field.config.js.map +0 -1
  314. package/esm2015/lib/models/select-field.config.metadata.json +0 -1
  315. package/esm2015/lib/models/slider-field.config.js +0 -2
  316. package/esm2015/lib/models/slider-field.config.js.map +0 -1
  317. package/esm2015/lib/models/slider-field.config.metadata.json +0 -1
  318. package/esm2015/lib/models/textarea-field.config.js +0 -2
  319. package/esm2015/lib/models/textarea-field.config.js.map +0 -1
  320. package/esm2015/lib/models/textarea-field.config.metadata.json +0 -1
  321. package/esm2015/lib/models/unit-conversion-field.config.js +0 -2
  322. package/esm2015/lib/models/unit-conversion-field.config.js.map +0 -1
  323. package/esm2015/lib/models/unit-conversion-field.config.metadata.json +0 -1
  324. package/esm2015/lib/pipes/initial-control-value.pipe.js +0 -16
  325. package/esm2015/lib/pipes/initial-control-value.pipe.js.map +0 -1
  326. package/esm2015/lib/pipes/initial-control-value.pipe.metadata.json +0 -1
  327. package/esm2015/lib/pipes/initial-control-value.pipe.ngfactory.js.map +0 -1
  328. package/esm2015/lib/public_api.js +0 -9
  329. package/esm2015/lib/public_api.js.map +0 -1
  330. package/esm2015/lib/public_api.metadata.json +0 -1
  331. package/esm2015/lib/sub-group/sub-group.component.js +0 -17
  332. package/esm2015/lib/sub-group/sub-group.component.js.map +0 -1
  333. package/esm2015/lib/sub-group/sub-group.component.metadata.json +0 -1
  334. package/esm2015/lib/sub-group/sub-group.component.ngfactory.js.map +0 -1
  335. package/esm2015/lib/sub-group/sub-group.component.scss.shim.ngstyle.js.map +0 -1
  336. package/esm2015/tft-crispr-forms.js +0 -30
  337. package/esm2015/tft-crispr-forms.js.map +0 -1
  338. package/esm2015/tft-crispr-forms.metadata.json +0 -1
  339. package/fesm2015/tft-crispr-forms.js +0 -1263
  340. package/fesm2015/tft-crispr-forms.js.map +0 -1
  341. package/tft-crispr-forms-12.2.20.tgz +0 -0
  342. package/tft-crispr-forms.metadata.json +0 -1
@@ -0,0 +1,70 @@
1
+ import { Component, ViewChild, ChangeDetectionStrategy, ElementRef } from '@angular/core';
2
+ import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
3
+ import { DEFAULT_EMPTY_OPTIONS_MESSAGE } from '../../models';
4
+ import { AbstractAutocompleteComponent } from '../../abstracts';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../field-container/field-container.component";
7
+ import * as i2 from "@angular/material/form-field";
8
+ import * as i3 from "../info/info.component";
9
+ import * as i4 from "@angular/material/autocomplete";
10
+ import * as i5 from "@angular/material/core";
11
+ import * as i6 from "../option/option.component";
12
+ import * as i7 from "@angular/common";
13
+ import * as i8 from "@angular/material/input";
14
+ import * as i9 from "@angular/forms";
15
+ import * as i10 from "@tft/form-validation-handler";
16
+ const defaultConfig = {
17
+ autoActiveFirstOption: true,
18
+ typeDebounceTime: 500,
19
+ emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE
20
+ };
21
+ export class AutocompleteFieldComponent extends AbstractAutocompleteComponent {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.defaultConfig = defaultConfig;
25
+ }
26
+ ngOnInit() {
27
+ super.ngOnInit();
28
+ }
29
+ setControlValue(value) {
30
+ if (this.control && value) {
31
+ // sets the initial value on the control if one is passed
32
+ this.control.setValue(value.value || '');
33
+ this.autocompleteInputControl.setValue(value.label || '');
34
+ }
35
+ }
36
+ /**
37
+ * The material autocomplete defaults to displaying the options value instead of its label.
38
+ * We only have the value from the selected option to work with, so we have to pass the options
39
+ * through a function called in the template and return the function that the material displayWith
40
+ * input is expecting.
41
+ * @param options the array of options to search for option with corresponding value
42
+ */
43
+ displayLabel(options) {
44
+ if (this.config.displayWith) {
45
+ return this.config.displayWith(options);
46
+ }
47
+ return (value) => {
48
+ const label = !!options && Array.isArray(options)
49
+ ? options.find((option) => JSON.stringify(option.value) === JSON.stringify(value))?.label : value;
50
+ return label;
51
+ };
52
+ }
53
+ handleSelect(event) {
54
+ this.control.setValue(event.option.value);
55
+ this.autoInputRef.nativeElement.blur();
56
+ }
57
+ }
58
+ AutocompleteFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: AutocompleteFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
59
+ AutocompleteFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: AutocompleteFieldComponent, selector: "crispr-autocomplete-field", viewQueries: [{ propertyName: "autoInput", first: true, predicate: ["autoInput"], descendants: true, read: MatAutocompleteTrigger }, { propertyName: "autoInputRef", first: true, predicate: ["autoInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matAutocomplete]=\"auto\"\n role=\"textbox\"\n type=\"textbox\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n #autoInput>\n\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info \">\n </crispr-info>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [autoActiveFirstOption]=\"config.autoActiveFirstOption\"\n (optionSelected)=\"handleSelect($event)\"\n [displayWith]=\"displayLabel(options$ | async)\">\n\n <ng-container *ngIf=\"options$ | async as options; else emptyOption\">\n <ng-container *ngIf=\"options.length > 0; else emptyOption\">\n <mat-option\n *ngFor=\"let option of options$ | async\"\n [value]=\"option.value\">\n <crispr-option [option]=\"option\"></crispr-option>\n </mat-option>\n </ng-container>\n\n </ng-container>\n <ng-template #emptyOption>\n <mat-option disabled=\"true\">\n {{config.emptyOptionsMessage}}\n </mat-option>\n </ng-template>\n\n </mat-autocomplete>\n </mat-form-field>\n</crispr-field-container>\n", styles: [""], components: [{ type: i1.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.InfoComponent, selector: "crispr-info", inputs: ["info"] }, { type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i6.OptionComponent, selector: "crispr-option", inputs: ["option"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.ControlErrorsDirective, selector: "[formControl], [formControlName]" }, { type: i2.MatSuffix, selector: "[matSuffix]" }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: AutocompleteFieldComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'crispr-autocomplete-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matAutocomplete]=\"auto\"\n role=\"textbox\"\n type=\"textbox\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n #autoInput>\n\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info \">\n </crispr-info>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [autoActiveFirstOption]=\"config.autoActiveFirstOption\"\n (optionSelected)=\"handleSelect($event)\"\n [displayWith]=\"displayLabel(options$ | async)\">\n\n <ng-container *ngIf=\"options$ | async as options; else emptyOption\">\n <ng-container *ngIf=\"options.length > 0; else emptyOption\">\n <mat-option\n *ngFor=\"let option of options$ | async\"\n [value]=\"option.value\">\n <crispr-option [option]=\"option\"></crispr-option>\n </mat-option>\n </ng-container>\n\n </ng-container>\n <ng-template #emptyOption>\n <mat-option disabled=\"true\">\n {{config.emptyOptionsMessage}}\n </mat-option>\n </ng-template>\n\n </mat-autocomplete>\n </mat-form-field>\n</crispr-field-container>\n", styles: [""] }]
63
+ }], propDecorators: { autoInput: [{
64
+ type: ViewChild,
65
+ args: ['autoInput', { read: MatAutocompleteTrigger }]
66
+ }], autoInputRef: [{
67
+ type: ViewChild,
68
+ args: ['autoInput']
69
+ }] } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlLWZpZWxkL2F1dG9jb21wbGV0ZS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2F1dG9jb21wbGV0ZS1maWVsZC9hdXRvY29tcGxldGUtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBZ0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV0RyxPQUFPLEVBQXlDLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFFaEUsTUFBTSxhQUFhLEdBQXFDO0lBQ3RELHFCQUFxQixFQUFFLElBQUk7SUFDM0IsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixtQkFBbUIsRUFBRSw2QkFBNkI7Q0FDbkQsQ0FBQztBQVFGLE1BQU0sT0FBTywwQkFDWCxTQUFRLDZCQUFzRDtJQVBoRTs7UUFVRSxrQkFBYSxHQUFHLGFBQWEsQ0FBQztLQXNDL0I7SUFsQ0MsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQW1CO1FBQ2pDLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUU7WUFDeEIseURBQXlEO1lBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFlBQVksQ0FBQyxPQUF1QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxLQUFLLEdBQVcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDekQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNqRyxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBbUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzt1SEF6Q1UsMEJBQTBCOzJHQUExQiwwQkFBMEIsb0pBS0wsc0JBQXNCLGdKQ3ZCeEQsMGxEQXVEQTsyRkRyQ2EsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTTs4QkFPVyxTQUFTO3NCQUFsRSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRTtnQkFDaEMsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuXG5pbXBvcnQgeyBTZWxlY3RPcHRpb24sIEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnLCBERUZBVUxUX0VNUFRZX09QVElPTlNfTUVTU0FHRSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBYnN0cmFjdEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0cyc7XG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IFBhcnRpYWw8QXV0b2NvbXBsZXRlRmllbGRDb25maWc+ID0ge1xuICBhdXRvQWN0aXZlRmlyc3RPcHRpb246IHRydWUsXG4gIHR5cGVEZWJvdW5jZVRpbWU6IDUwMCxcbiAgZW1wdHlPcHRpb25zTWVzc2FnZTogREVGQVVMVF9FTVBUWV9PUFRJT05TX01FU1NBR0Vcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1hdXRvY29tcGxldGUtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUZpZWxkQ29tcG9uZW50XG4gIGV4dGVuZHMgQWJzdHJhY3RBdXRvY29tcGxldGVDb21wb25lbnQ8QXV0b2NvbXBsZXRlRmllbGRDb25maWc+XG4gIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBkZWZhdWx0Q29uZmlnID0gZGVmYXVsdENvbmZpZztcbiAgQFZpZXdDaGlsZCgnYXV0b0lucHV0JywgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0pIGF1dG9JbnB1dDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcbiAgQFZpZXdDaGlsZCgnYXV0b0lucHV0JykgYXV0b0lucHV0UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBzZXRDb250cm9sVmFsdWUodmFsdWU6IFNlbGVjdE9wdGlvbikge1xuICAgIGlmKHRoaXMuY29udHJvbCAmJiB2YWx1ZSkge1xuICAgICAgLy8gc2V0cyB0aGUgaW5pdGlhbCB2YWx1ZSBvbiB0aGUgY29udHJvbCBpZiBvbmUgaXMgcGFzc2VkXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUudmFsdWUgfHwgJycpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dENvbnRyb2wuc2V0VmFsdWUodmFsdWUubGFiZWwgfHwgJycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF0ZXJpYWwgYXV0b2NvbXBsZXRlIGRlZmF1bHRzIHRvIGRpc3BsYXlpbmcgdGhlIG9wdGlvbnMgdmFsdWUgaW5zdGVhZCBvZiBpdHMgbGFiZWwuXG4gICAqIFdlIG9ubHkgaGF2ZSB0aGUgdmFsdWUgZnJvbSB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHdvcmsgd2l0aCwgc28gd2UgaGF2ZSB0byBwYXNzIHRoZSBvcHRpb25zXG4gICAqIHRocm91Z2ggYSBmdW5jdGlvbiBjYWxsZWQgaW4gdGhlIHRlbXBsYXRlIGFuZCByZXR1cm4gdGhlIGZ1bmN0aW9uIHRoYXQgdGhlIG1hdGVyaWFsIGRpc3BsYXlXaXRoXG4gICAqIGlucHV0IGlzIGV4cGVjdGluZy5cbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIGFycmF5IG9mIG9wdGlvbnMgdG8gc2VhcmNoIGZvciBvcHRpb24gd2l0aCBjb3JyZXNwb25kaW5nIHZhbHVlXG4gICAqL1xuICBkaXNwbGF5TGFiZWwob3B0aW9uczogU2VsZWN0T3B0aW9uW10pIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGlzcGxheVdpdGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5kaXNwbGF5V2l0aChvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBsYWJlbDogc3RyaW5nID0gISFvcHRpb25zICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucylcbiAgICAgID8gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IEpTT04uc3RyaW5naWZ5KG9wdGlvbi52YWx1ZSkgPT09IEpTT04uc3RyaW5naWZ5KHZhbHVlKSk/LmxhYmVsOiB2YWx1ZTtcbiAgICAgIHJldHVybiBsYWJlbFxuICAgIH07XG4gIH1cblxuICBoYW5kbGVTZWxlY3QoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoZXZlbnQub3B0aW9uLnZhbHVlKVxuICAgIHRoaXMuYXV0b0lucHV0UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICB9XG59XG5cbiIsIlxuPGNyaXNwci1maWVsZC1jb250YWluZXJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxuICBbZ3JvdXBdPVwiZ3JvdXBcIj5cblxuICA8bWF0LWZvcm0tZmllbGRcbiAgICBbY29sb3JdPVwiY29uZmlnLmNvbG9yXCJcbiAgICBbYXBwZWFyYW5jZV09XCJjb25maWcuYXBwZWFyYW5jZVwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJjb25maWcubGFiZWxcIj5cbiAgICAgIHt7Y29uZmlnLmxhYmVsfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBbZm9ybUNvbnRyb2xdPVwiYXV0b2NvbXBsZXRlSW5wdXRDb250cm9sXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXJcIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgIHR5cGU9XCJ0ZXh0Ym94XCJcbiAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAjYXV0b0lucHV0PlxuXG4gICAgPHNwYW4gKm5nSWY9XCJjb25maWcuZmllbGRTdWZmaXhcIiBtYXRTdWZmaXg+e3tjb25maWcuZmllbGRTdWZmaXh9fTwvc3Bhbj5cbiAgICA8Y3Jpc3ByLWluZm9cbiAgICAgICpuZ0lmPVwiY29uZmlnLmluZm9cIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBbaW5mb109XCJjb25maWcuaW5mbyBcIj5cbiAgICA8L2NyaXNwci1pbmZvPlxuXG4gICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgIFthdXRvQWN0aXZlRmlyc3RPcHRpb25dPVwiY29uZmlnLmF1dG9BY3RpdmVGaXJzdE9wdGlvblwiXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlU2VsZWN0KCRldmVudClcIlxuICAgICAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlMYWJlbChvcHRpb25zJCB8IGFzeW5jKVwiPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9ucyQgfCBhc3luYyBhcyBvcHRpb25zOyBlbHNlIGVtcHR5T3B0aW9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zLmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlPcHRpb25cIj5cbiAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgIDxjcmlzcHItb3B0aW9uIFtvcHRpb25dPVwib3B0aW9uXCI+PC9jcmlzcHItb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eU9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQ9XCJ0cnVlXCI+XG4gICAgICAgICAge3tjb25maWcuZW1wdHlPcHRpb25zTWVzc2FnZX19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2NyaXNwci1maWVsZC1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { map, startWith } from 'rxjs/operators';
3
+ import { CrisprFieldComponent } from '../../abstracts';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/button";
6
+ import * as i2 from "@angular/material/icon";
7
+ import * as i3 from "@angular/forms";
8
+ import * as i4 from "@tft/form-validation-handler";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "@angular/material/tooltip";
11
+ export class ButtonComponent extends CrisprFieldComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.defaultConfig = { buttonType: 'raised', type: 'submit' };
15
+ }
16
+ get matButtonClass() {
17
+ return this.config.buttonType ? `mat-${this.config.buttonType}-button` : '';
18
+ }
19
+ ngOnInit() {
20
+ super.ngOnInit();
21
+ this.formValid$ = this.group.statusChanges.pipe(map(status => status === 'VALID'), startWith(this.group.valid));
22
+ }
23
+ handleClick(group, event) {
24
+ if (this.config.callback) {
25
+ this.config.callback(group, event);
26
+ }
27
+ }
28
+ }
29
+ ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30
+ ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: ButtonComponent, selector: "crispr-button", usesInheritance: true, ngImport: i0, template: "<button\n [formGroup]=\"group\"\n mat-button\n [ngClass]=\"matButtonClass\"\n [color]=\"config.color\"\n [disabled]=\"config.disabledOnInvalidForm && !(formValid$ | async)\"\n [type]=\"config.type\"\n (click)=\"handleClick(group, $event)\"\n [matTooltip]=\"config.info?.content\"\n [matTooltipPosition]=\"config.info?.tooltipPosition || 'below'\">\n {{ config.label }}\n <mat-icon *ngIf=\"config.icon\">\n {{ config.icon}}\n </mat-icon>\n</button>\n\n", styles: [""], components: [{ type: i1.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: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: ButtonComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ selector: 'crispr-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n [formGroup]=\"group\"\n mat-button\n [ngClass]=\"matButtonClass\"\n [color]=\"config.color\"\n [disabled]=\"config.disabledOnInvalidForm && !(formValid$ | async)\"\n [type]=\"config.type\"\n (click)=\"handleClick(group, $event)\"\n [matTooltip]=\"config.info?.content\"\n [matTooltipPosition]=\"config.info?.tooltipPosition || 'below'\">\n {{ config.label }}\n <mat-icon *ngIf=\"config.icon\">\n {{ config.icon}}\n </mat-icon>\n</button>\n\n", styles: [""] }]
34
+ }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvbWF0ZXJpYWwvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQVF2RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxvQkFBa0M7SUFOdkU7O1FBU0Usa0JBQWEsR0FBMEIsRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQztLQW9CL0U7SUFqQkMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlFLENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFnQixFQUFFLEtBQWlCO1FBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7NEdBdEJVLGVBQWU7Z0dBQWYsZUFBZSw0RUNkNUIsb2RBZ0JBOzJGREZhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENyaXNwckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Jpc3ByLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIENyaXNwckZpZWxkQ29tcG9uZW50PEJ1dHRvbkNvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGdyb3VwOiBGb3JtR3JvdXA7XG4gIGRlZmF1bHRDb25maWc6IFBhcnRpYWw8QnV0dG9uQ29uZmlnPiA9IHtidXR0b25UeXBlOiAncmFpc2VkJywgdHlwZTogJ3N1Ym1pdCd9O1xuICBmb3JtVmFsaWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbiAgZ2V0IG1hdEJ1dHRvbkNsYXNzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYnV0dG9uVHlwZSA/IGBtYXQtJHt0aGlzLmNvbmZpZy5idXR0b25UeXBlfS1idXR0b25gIDogJyc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuZm9ybVZhbGlkJCA9IHRoaXMuZ3JvdXAuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgICAgbWFwKHN0YXR1cyA9PiBzdGF0dXMgPT09ICdWQUxJRCcpLFxuICAgICAgc3RhcnRXaXRoKHRoaXMuZ3JvdXAudmFsaWQpLFxuICAgICk7XG4gIH1cblxuICBoYW5kbGVDbGljayhncm91cDogRm9ybUdyb3VwLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jYWxsYmFjaykge1xuICAgICAgdGhpcy5jb25maWcuY2FsbGJhY2soZ3JvdXAsIGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgW2Zvcm1Hcm91cF09XCJncm91cFwiXG4gIG1hdC1idXR0b25cbiAgW25nQ2xhc3NdPVwibWF0QnV0dG9uQ2xhc3NcIlxuICBbY29sb3JdPVwiY29uZmlnLmNvbG9yXCJcbiAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNhYmxlZE9uSW52YWxpZEZvcm0gJiYgIShmb3JtVmFsaWQkIHwgYXN5bmMpXCJcbiAgW3R5cGVdPVwiY29uZmlnLnR5cGVcIlxuICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soZ3JvdXAsICRldmVudClcIlxuICBbbWF0VG9vbHRpcF09XCJjb25maWcuaW5mbz8uY29udGVudFwiXG4gIFttYXRUb29sdGlwUG9zaXRpb25dPVwiY29uZmlnLmluZm8/LnRvb2x0aXBQb3NpdGlvbiB8fCAnYmVsb3cnXCI+XG4gIHt7IGNvbmZpZy5sYWJlbCB9fVxuICA8bWF0LWljb24gKm5nSWY9XCJjb25maWcuaWNvblwiPlxuICAgIHt7IGNvbmZpZy5pY29ufX1cbiAgPC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuXG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../field-container/field-container.component";
5
+ import * as i2 from "@angular/material/checkbox";
6
+ import * as i3 from "../info/info.component";
7
+ import * as i4 from "@angular/forms";
8
+ import * as i5 from "@tft/form-validation-handler";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/material/form-field";
11
+ const defaultConfig = {
12
+ labelPosition: 'after',
13
+ inline: false
14
+ };
15
+ const CheckboxFieldMixin = crisprControlMixin(CrisprFieldComponent);
16
+ export class CheckboxFieldComponent extends CheckboxFieldMixin {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.defaultConfig = defaultConfig;
20
+ }
21
+ ngOnInit() {
22
+ super.ngOnInit();
23
+ }
24
+ }
25
+ CheckboxFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CheckboxFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
26
+ CheckboxFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: CheckboxFieldComponent, selector: "crispr-checkbox-field", usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [inlineField]=\"config.inline\">\n <div\n [formGroup]=\"group\">\n <mat-checkbox\n [color]=\"config.color\"\n [labelPosition]=\"config.labelPosition\"\n [formControlName]=\"config.controlName\">\n {{config.label}}\n <crispr-info\n matSuffix *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n </mat-checkbox>\n </div>\n</crispr-field-container>\n", styles: [""], components: [{ type: i1.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.InfoComponent, selector: "crispr-info", inputs: ["info"] }], 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.ControlErrorsDirective, selector: "[formControl], [formControlName]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CheckboxFieldComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'crispr-checkbox-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [inlineField]=\"config.inline\">\n <div\n [formGroup]=\"group\">\n <mat-checkbox\n [color]=\"config.color\"\n [labelPosition]=\"config.labelPosition\"\n [formControlName]=\"config.controlName\">\n {{config.label}}\n <crispr-info\n matSuffix *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n </mat-checkbox>\n </div>\n</crispr-field-container>\n", styles: [""] }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9tYXRlcmlhbC9jaGVja2JveC1maWVsZC9jaGVja2JveC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2NoZWNrYm94LWZpZWxkL2NoZWNrYm94LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUUzRSxNQUFNLGFBQWEsR0FBaUM7SUFDbEQsYUFBYSxFQUFFLE9BQU87SUFDdEIsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFBO0FBQ0QsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBc0Isb0JBQW9CLENBQUMsQ0FBQztBQVF6RixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQWtCO0lBTjlEOztRQVFFLGtCQUFhLEdBQUcsYUFBYSxDQUFDO0tBSS9CO0lBSEMsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzttSEFMVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixvRkNoQm5DLHllQWtCQTsyRkRGYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGVja2JveEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGNyaXNwckNvbnRyb2xNaXhpbiwgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuXG5jb25zdCBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsPENoZWNrYm94RmllbGRDb25maWc+ID0ge1xuICBsYWJlbFBvc2l0aW9uOiAnYWZ0ZXInLFxuICBpbmxpbmU6IGZhbHNlXG59XG5jb25zdCBDaGVja2JveEZpZWxkTWl4aW4gPSBjcmlzcHJDb250cm9sTWl4aW48Q2hlY2tib3hGaWVsZENvbmZpZz4oQ3Jpc3ByRmllbGRDb21wb25lbnQpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItY2hlY2tib3gtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQ2hlY2tib3hGaWVsZE1peGluIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBkZWZhdWx0Q29uZmlnID0gZGVmYXVsdENvbmZpZztcbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxufVxuIiwiPGNyaXNwci1maWVsZC1jb250YWluZXJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxuICBbZ3JvdXBdPVwiZ3JvdXBcIlxuICBbaW5saW5lRmllbGRdPVwiY29uZmlnLmlubGluZVwiPlxuICA8ZGl2XG4gICAgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgIFtjb2xvcl09XCJjb25maWcuY29sb3JcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiY29uZmlnLmxhYmVsUG9zaXRpb25cIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIj5cbiAgICAgIHt7Y29uZmlnLmxhYmVsfX1cbiAgICAgIDxjcmlzcHItaW5mb1xuICAgICAgICBtYXRTdWZmaXggKm5nSWY9XCJjb25maWcuaW5mb1wiXG4gICAgICAgIFtpbmZvXT1cImNvbmZpZy5pbmZvXCI+XG4gICAgICA8L2NyaXNwci1pbmZvPlxuICAgIDwvbWF0LWNoZWNrYm94PlxuICA8L2Rpdj5cbjwvY3Jpc3ByLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
3
+ import { of } from 'rxjs';
4
+ import { ComponentPortal } from '@angular/cdk/portal';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../field-container/field-container.component";
7
+ import * as i2 from "@angular/material/form-field";
8
+ import * as i3 from "@angular/material/datepicker";
9
+ import * as i4 from "@angular/forms";
10
+ import * as i5 from "@tft/form-validation-handler";
11
+ import * as i6 from "@angular/common";
12
+ import * as i7 from "@angular/material/input";
13
+ import * as i8 from "@angular/cdk/portal";
14
+ const defaultConfig = {
15
+ startView: 'month',
16
+ };
17
+ const DatepickerFieldMixin = crisprControlMixin(CrisprFieldComponent);
18
+ export class DatepickerFieldComponent extends DatepickerFieldMixin {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.defaultConfig = defaultConfig;
22
+ }
23
+ ngOnInit() {
24
+ super.ngOnInit();
25
+ this.startAt$ = this.config.startAt instanceof Date
26
+ ? of(this.config.startAt)
27
+ : this.config.startAt instanceof Function
28
+ ? this.config.startAt(this.group)
29
+ : of(null);
30
+ this.dateClass = this.config?.cellClassFunction || null;
31
+ this.dateClass$ = this.config.dateClass ? this.config?.dateClass(this.group) : of(() => '');
32
+ }
33
+ ngAfterContentInit() {
34
+ if (this.config.datepickerActions) {
35
+ this.calendarFooterPortal = new ComponentPortal(this.config.datepickerActions);
36
+ }
37
+ }
38
+ }
39
+ DatepickerFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DatepickerFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
40
+ DatepickerFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: DatepickerFieldComponent, selector: "crispr-datepicker-field", usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"config.datepickerFilter\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n [touchUi]=\"config.touchUi\"\n [startView]=\"config.startView\"\n [startAt]=\"startAt$ | async\"\n [dateClass]=\"dateClass || (dateClass$ | async)\"\n #picker>\n <mat-datepicker-actions *ngIf=\"calendarFooterPortal\">\n <ng-template [cdkPortalOutlet]=\"calendarFooterPortal\"></ng-template>\n </mat-datepicker-actions>\n </mat-datepicker>\n\n </mat-form-field>\n</crispr-field-container>\n\n", styles: [""], components: [{ type: i1.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i3.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }], 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: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.ControlErrorsDirective, selector: "[formControl], [formControlName]" }, { type: i2.MatSuffix, selector: "[matSuffix]" }, { type: i8.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DatepickerFieldComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ selector: 'crispr-datepicker-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"config.datepickerFilter\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n [touchUi]=\"config.touchUi\"\n [startView]=\"config.startView\"\n [startAt]=\"startAt$ | async\"\n [dateClass]=\"dateClass || (dateClass$ | async)\"\n #picker>\n <mat-datepicker-actions *ngIf=\"calendarFooterPortal\">\n <ng-template [cdkPortalOutlet]=\"calendarFooterPortal\"></ng-template>\n </mat-datepicker-actions>\n </mat-datepicker>\n\n </mat-form-field>\n</crispr-field-container>\n\n", styles: [""] }]
44
+ }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RhdGVwaWNrZXItZmllbGQvZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RhdGVwaWNrZXItZmllbGQvZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLHVCQUF1QixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQUU5RCxNQUFNLGFBQWEsR0FBbUM7SUFDcEQsU0FBUyxFQUFFLE9BQU87Q0FDbkIsQ0FBQTtBQUNELE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQXdCLG9CQUFvQixDQUFDLENBQUM7QUFRN0YsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG9CQUFvQjtJQU5sRTs7UUFRRSxrQkFBYSxHQUFHLGFBQWEsQ0FBQztLQWdDL0I7SUF2QkMsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxZQUFZLElBQUk7WUFDakQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLFlBQVksUUFBUTtnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFBO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEY7SUFDSCxDQUFDOztxSEExQlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isc0ZDbkJyQyw4aUNBZ0NBOzJGRGJhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVwaWNrZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBjcmlzcHJDb250cm9sTWl4aW4sIENyaXNwckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RzJztcbmltcG9ydCB7IE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuY29uc3QgZGVmYXVsdENvbmZpZzogUGFydGlhbDxEYXRlcGlja2VyRmllbGRDb25maWc+ID0ge1xuICBzdGFydFZpZXc6ICdtb250aCcsXG59XG5jb25zdCBEYXRlcGlja2VyRmllbGRNaXhpbiA9IGNyaXNwckNvbnRyb2xNaXhpbjxEYXRlcGlja2VyRmllbGRDb25maWc+KENyaXNwckZpZWxkQ29tcG9uZW50KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Jpc3ByLWRhdGVwaWNrZXItZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXItZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRGF0ZXBpY2tlckZpZWxkTWl4aW4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIGRlZmF1bHRDb25maWcgPSBkZWZhdWx0Q29uZmlnO1xuXG4gIGRhdGVDbGFzczogTWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbjxNb21lbnQ+O1xuICBkYXRlQ2xhc3MkOiBPYnNlcnZhYmxlPE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb248TW9tZW50Pj47XG4gIHN0YXJ0QXQkOiBPYnNlcnZhYmxlPERhdGU+O1xuXG4gIC8qKiBBIHBvcnRhbCBjb250YWluaW5nIHRoZSBmb290ZXIgY29tcG9uZW50IHR5cGUgZm9yIHRoaXMgY2FsZW5kYXIuICovXG4gIGNhbGVuZGFyRm9vdGVyUG9ydGFsOiBQb3J0YWw8YW55PjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3RhcnRBdCQgPSB0aGlzLmNvbmZpZy5zdGFydEF0IGluc3RhbmNlb2YgRGF0ZVxuICAgICAgPyBvZih0aGlzLmNvbmZpZy5zdGFydEF0KVxuICAgICAgOiB0aGlzLmNvbmZpZy5zdGFydEF0IGluc3RhbmNlb2YgRnVuY3Rpb25cbiAgICAgID8gdGhpcy5jb25maWcuc3RhcnRBdCh0aGlzLmdyb3VwKVxuICAgICAgOiBvZihudWxsKTtcbiAgICB0aGlzLmRhdGVDbGFzcyA9IHRoaXMuY29uZmlnPy5jZWxsQ2xhc3NGdW5jdGlvbiB8fCBudWxsXG4gICAgdGhpcy5kYXRlQ2xhc3MkID0gdGhpcy5jb25maWcuZGF0ZUNsYXNzID8gdGhpcy5jb25maWc/LmRhdGVDbGFzcyh0aGlzLmdyb3VwKSA6IG9mKCgpID0+ICcnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGF0ZXBpY2tlckFjdGlvbnMpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJGb290ZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMuY29uZmlnLmRhdGVwaWNrZXJBY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBoYW5kbGVTZWxlY3RlZENoYW5nZShldmVudCwgcGlja2VyOiBNYXREYXRlcGlja2VyPHVua25vd24+KSB7XG4gIC8vICAgY29uc29sZS5sb2coe2V2ZW50LCBwaWNrZXJ9KVxuICAvLyAgIGlmKHRoaXMuY29uZmlnLnNlbGVjdGVkQ2hhbmdlKSB7XG4gIC8vICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZENoYW5nZShldmVudCwgcGlja2VyKTtcbiAgLy8gICB9XG4gIC8vIH1cbn1cbiIsIjxjcmlzcHItZmllbGQtY29udGFpbmVyXG4gIFtjb25maWddPVwiY29uZmlnXCJcbiAgW2dyb3VwXT1cImdyb3VwXCI+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgIFtjb2xvcl09XCJjb25maWcuY29sb3JcIlxuICAgIFthcHBlYXJhbmNlXT1cImNvbmZpZy5hcHBlYXJhbmNlXCJcbiAgICBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImNvbmZpZy5sYWJlbFwiPlxuICAgICAge3tjb25maWcubGFiZWx9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW21pbl09XCJjb25maWcubWluXCJcbiAgICAgICAgW21heF09XCJjb25maWcubWF4XCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiY29uZmlnLmRhdGVwaWNrZXJGaWx0ZXJcIj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgW3RvdWNoVWldPVwiY29uZmlnLnRvdWNoVWlcIlxuICAgICAgICBbc3RhcnRWaWV3XT1cImNvbmZpZy5zdGFydFZpZXdcIlxuICAgICAgICBbc3RhcnRBdF09XCJzdGFydEF0JCB8IGFzeW5jXCJcbiAgICAgICAgW2RhdGVDbGFzc109XCJkYXRlQ2xhc3MgfHwgKGRhdGVDbGFzcyQgfCBhc3luYylcIlxuICAgICAgICAjcGlja2VyPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItYWN0aW9ucyAqbmdJZj1cImNhbGVuZGFyRm9vdGVyUG9ydGFsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiY2FsZW5kYXJGb290ZXJQb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICA8L21hdC1kYXRlcGlja2VyPlxuXG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2NyaXNwci1maWVsZC1jb250YWluZXI+XG5cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Component } from '@angular/core';
2
+ import { CrisprFieldComponent } from '../../abstracts';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/divider";
5
+ import * as i2 from "@angular/common";
6
+ export class DividerComponent extends CrisprFieldComponent {
7
+ constructor() {
8
+ super(...arguments);
9
+ // TODO: pull in type after configs are better organized
10
+ this.defaultConfig = {};
11
+ }
12
+ ngOnInit() {
13
+ super.ngOnInit();
14
+ }
15
+ }
16
+ DividerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DividerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
17
+ DividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: DividerComponent, selector: "crispr-divider", usesInheritance: true, ngImport: i0, template: "<mat-divider [ngClass]=\"config.classes\"></mat-divider>", styles: [":host{display:block;padding:1em 0}::ng-deep .mat-divider.mat-divider-horizontal{position:relative}\n"], components: [{ type: i1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], preserveWhitespaces: true });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DividerComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'crispr-divider', template: "<mat-divider [ngClass]=\"config.classes\"></mat-divider>", styles: [":host{display:block;padding:1em 0}::ng-deep .mat-divider.mat-divider-horizontal{position:relative}\n"] }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBT3ZELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxvQkFBbUM7SUFMekU7O1FBTUUsd0RBQXdEO1FBQ3hELGtCQUFhLEdBQUcsRUFBRSxDQUFDO0tBS3BCO0lBSkMsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs2R0FMVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiw2RUNUN0IsMERBQXNEOzJGRFN6QyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpdmlkZXJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItZGl2aWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXZpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGl2aWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERpdmlkZXJDb21wb25lbnQgZXh0ZW5kcyBDcmlzcHJGaWVsZENvbXBvbmVudDxEaXZpZGVyQ29uZmlnPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIFRPRE86IHB1bGwgaW4gdHlwZSBhZnRlciBjb25maWdzIGFyZSBiZXR0ZXIgb3JnYW5pemVkXG4gIGRlZmF1bHRDb25maWcgPSB7fTtcbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG59XG4iLCI8bWF0LWRpdmlkZXIgW25nQ2xhc3NdPVwiY29uZmlnLmNsYXNzZXNcIj48L21hdC1kaXZpZGVyPiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Directive, HostListener, Output, EventEmitter, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FileDropzoneDirective {
4
+ constructor() {
5
+ this.fileDrop = new EventEmitter();
6
+ this.crisprFileDropzone = true;
7
+ }
8
+ onDrop($event) {
9
+ if (this.crisprFileDropzone) {
10
+ $event.preventDefault();
11
+ this.fileDrop.emit($event.dataTransfer.files);
12
+ }
13
+ }
14
+ // Prevents DOM from trying to open file in browser
15
+ onDragOver($event) {
16
+ if (this.crisprFileDropzone) {
17
+ $event.preventDefault();
18
+ }
19
+ }
20
+ }
21
+ FileDropzoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileDropzoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
22
+ FileDropzoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: FileDropzoneDirective, selector: "[crisprFileDropzone]", inputs: { crisprFileDropzone: "crisprFileDropzone" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)" } }, ngImport: i0 });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileDropzoneDirective, decorators: [{
24
+ type: Directive,
25
+ args: [{
26
+ selector: '[crisprFileDropzone]'
27
+ }]
28
+ }], propDecorators: { fileDrop: [{
29
+ type: Output
30
+ }], crisprFileDropzone: [{
31
+ type: Input
32
+ }], onDrop: [{
33
+ type: HostListener,
34
+ args: ['drop', ['$event']]
35
+ }], onDragOver: [{
36
+ type: HostListener,
37
+ args: ['dragover', ['$event']]
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wem9uZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ZpbGUtdXBsb2FkL2ZpbGUtZHJvcHpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtyRixNQUFNLE9BQU8scUJBQXFCO0lBSGxDO1FBS1ksYUFBUSxHQUFJLElBQUksWUFBWSxFQUFZLENBQUM7UUFFMUMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO0tBaUJwQztJQWRDLE1BQU0sQ0FBQyxNQUFpQjtRQUN0QixJQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFFbkQsVUFBVSxDQUFDLE1BQWlCO1FBQzFCLElBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7O2tIQXBCVSxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzhCQUdXLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUdOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVWhDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tjcmlzcHJGaWxlRHJvcHpvbmVdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZURyb3B6b25lRGlyZWN0aXZlIHtcclxuXHJcbiAgQE91dHB1dCgpIGZpbGVEcm9wID0gIG5ldyBFdmVudEVtaXR0ZXI8RmlsZUxpc3Q+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGNyaXNwckZpbGVEcm9wem9uZSA9IHRydWU7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIG9uRHJvcCgkZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgaWYodGhpcy5jcmlzcHJGaWxlRHJvcHpvbmUpIHtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuZmlsZURyb3AuZW1pdCgkZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFByZXZlbnRzIERPTSBmcm9tIHRyeWluZyB0byBvcGVuIGZpbGUgaW4gYnJvd3NlclxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcclxuICBvbkRyYWdPdmVyKCRldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBpZih0aGlzLmNyaXNwckZpbGVEcm9wem9uZSkge1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,145 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ElementRef, ViewChild, ChangeDetectionStrategy, Optional, Self, NgModule } from '@angular/core';
3
+ import { NgControl, ReactiveFormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatInputModule } from '@angular/material/input';
8
+ import { FormValidationHandlerModule } from '@tft/form-validation-handler';
9
+ import { of } from 'rxjs';
10
+ import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
11
+ import { FieldContainerModule } from '../../field-container/field-container.component';
12
+ import { SelectedFileModule } from '../selected-file/selected-file.component';
13
+ import { FileDropzoneDirective } from './file-dropzone.directive';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@angular/forms";
16
+ import * as i2 from "../../field-container/field-container.component";
17
+ import * as i3 from "@angular/material/form-field";
18
+ import * as i4 from "@angular/material/icon";
19
+ import * as i5 from "@angular/material/button";
20
+ import * as i6 from "../selected-file/selected-file.component";
21
+ import * as i7 from "@tft/form-validation-handler";
22
+ import * as i8 from "@angular/material/input";
23
+ import * as i9 from "@angular/common";
24
+ const FileUploadFieldMixin = crisprControlMixin(CrisprFieldComponent);
25
+ export class FileUploadFieldComponent extends FileUploadFieldMixin {
26
+ // ngControl: NgControl = null;
27
+ constructor(ngControl) {
28
+ super();
29
+ this.ngControl = ngControl;
30
+ this.defaultConfig = {
31
+ allowMultipleFiles: false,
32
+ acceptedTypes: '*.*',
33
+ dropZoneText: 'DROP FILE HERE',
34
+ selectFilesButtonType: 'button',
35
+ selectButtonText: 'SELECT',
36
+ showClearFilesButton: true,
37
+ clearFilesButtonText: 'CLEAR',
38
+ uploadButtonText: 'UPLOAD',
39
+ uploadButtonType: 'button',
40
+ showUploadProgress: false,
41
+ disableOnUpload: true
42
+ };
43
+ this.isUploaded = false;
44
+ this.fileProgress = [];
45
+ if (this.ngControl != null) {
46
+ // Setting the value accessor directly (instead of using
47
+ // the providers) to avoid running into a circular import.
48
+ ngControl.valueAccessor = this;
49
+ }
50
+ }
51
+ ngOnInit() {
52
+ super.ngOnInit();
53
+ this.disabled$ = this.config.disabledCallback
54
+ ? this.config.disabledCallback(this.group, this.config)
55
+ : of(false);
56
+ }
57
+ filesChanged(files) {
58
+ if (files && files.length > 0) {
59
+ this.selectedFiles = files;
60
+ this.control.patchValue(files);
61
+ }
62
+ }
63
+ uploadFiles() {
64
+ if (this.selectedFiles && this.config.uploadFiles) {
65
+ this.isUploaded = true;
66
+ this.config.uploadFiles(this.group, this.selectedFiles, this);
67
+ }
68
+ }
69
+ resetFileInput() {
70
+ this.fileInputRef.nativeElement.value = '';
71
+ this.control.patchValue(null);
72
+ this.isUploaded = false;
73
+ }
74
+ writeValue(value) {
75
+ // clear file input
76
+ // this.host.nativeElement.value = '';
77
+ // this.file = null;
78
+ }
79
+ registerOnChange(fn) {
80
+ this.onChange = fn;
81
+ }
82
+ registerOnTouched(fn) {
83
+ }
84
+ }
85
+ FileUploadFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
86
+ FileUploadFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: FileUploadFieldComponent, selector: "crispr-file-upload-field", viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n appearance=\"outline\"\n [crisprFileDropzone]=\"!(disabled$ | async) && !(config.disableOnUpload && isUploaded)\"\n [formGroup]=\"group\"\n (fileDrop)=\"filesChanged($event)\">\n\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n style=\"display: none\"\n [accept]=\"config.acceptedTypes\"\n [multiple]=\"config.allowMultipleFiles\"\n (change)=\"filesChanged($event.target.files)\"/>\n <mat-label>{{config.label}}</mat-label>\n\n <div *ngIf=\"!(selectedFiles?.length > 0); else selectedFileList\" class=\"drop-info\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n or\n <button\n mat-raised-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async) || config.disableOnUpload && isUploaded\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n {{config.selectButtonText}}\n </button>\n </div>\n <ng-template #selectedFileList>\n <div class=\"selected-files-container\">\n <div class=\"selected-files-list\">\n <crispr-selected-file\n *ngFor=\"let file of selectedFiles; let i = index;\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"file.name\"\n [showProgress]=\"config.showUploadProgress\"\n [progress]=\"fileProgress && (fileProgress[i] | async)\">\n </crispr-selected-file>\n </div>\n\n </div>\n </ng-template>\n\n </mat-form-field>\n <div class=\"button-container\" *ngIf=\"selectedFiles?.length > 0\">\n\n <button\n mat-button\n (click)=\"resetFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async) || (config.disableOnUpload && isUploaded)\"\n aria-label=\"Remove Selected File(s)\">\n {{config.clearFilesButtonText}}\n <mat-icon>delete</mat-icon>\n </button>\n\n <button\n *ngIf=\"!!config.uploadFiles\"\n mat-raised-button\n type=\"button\"\n color=\"accent\"\n class=\"file-input-button\"\n [disabled]=\"(disabled$ | async) || (config.disableOnUpload && isUploaded)\"\n (click)=\"uploadFiles()\"\n [attr.aria-label]=\"config.uploadButtonText\">\n {{ config.uploadButtonText }}\n </button>\n\n </div>\n</crispr-field-container>\n", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0;display:flex;justify-content:center}:host .drop-info{display:flex;flex-direction:column;align-items:center}:host .drop-info .drop-icon{font-size:36px}:host .drop-info .mat-h2{margin:0}:host .button-container{display:flex;justify-content:flex-end;margin-top:-16px}:host .button-container button{margin-left:8px}:host .selected-files-container{width:100%}:host [matInput]{position:absolute;max-height:0;visibility:hidden}\n"], components: [{ type: i0.forwardRef(function () { return i2.FieldContainerComponent; }), selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i0.forwardRef(function () { return i3.MatFormField; }), selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i0.forwardRef(function () { return i4.MatIcon; }), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i0.forwardRef(function () { return i5.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: i0.forwardRef(function () { return i6.SelectedFileComponent; }), selector: "crispr-selected-file", inputs: ["fileName", "progress", "showProgress", "color"] }], directives: [{ type: i0.forwardRef(function () { return FileDropzoneDirective; }), selector: "[crisprFileDropzone]", inputs: ["crisprFileDropzone"], outputs: ["fileDrop"] }, { type: i0.forwardRef(function () { return i1.NgControlStatusGroup; }), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i0.forwardRef(function () { return i1.FormGroupDirective; }), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i0.forwardRef(function () { return i7.ControlErrorContainerDirective; }), selector: "[controlErrorContainer], [formGroup]" }, { type: i0.forwardRef(function () { return i8.MatInput; }), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i0.forwardRef(function () { return i1.DefaultValueAccessor; }), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i0.forwardRef(function () { return i1.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { type: i0.forwardRef(function () { return i1.FormControlName; }), selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i0.forwardRef(function () { return i7.ControlErrorsDirective; }), selector: "[formControl], [formControlName]" }, { type: i0.forwardRef(function () { return i3.MatLabel; }), selector: "mat-label" }, { type: i0.forwardRef(function () { return i9.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i9.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i0.forwardRef(function () { return i9.AsyncPipe; }) }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'crispr-file-upload-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n appearance=\"outline\"\n [crisprFileDropzone]=\"!(disabled$ | async) && !(config.disableOnUpload && isUploaded)\"\n [formGroup]=\"group\"\n (fileDrop)=\"filesChanged($event)\">\n\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n style=\"display: none\"\n [accept]=\"config.acceptedTypes\"\n [multiple]=\"config.allowMultipleFiles\"\n (change)=\"filesChanged($event.target.files)\"/>\n <mat-label>{{config.label}}</mat-label>\n\n <div *ngIf=\"!(selectedFiles?.length > 0); else selectedFileList\" class=\"drop-info\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n or\n <button\n mat-raised-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async) || config.disableOnUpload && isUploaded\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n {{config.selectButtonText}}\n </button>\n </div>\n <ng-template #selectedFileList>\n <div class=\"selected-files-container\">\n <div class=\"selected-files-list\">\n <crispr-selected-file\n *ngFor=\"let file of selectedFiles; let i = index;\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"file.name\"\n [showProgress]=\"config.showUploadProgress\"\n [progress]=\"fileProgress && (fileProgress[i] | async)\">\n </crispr-selected-file>\n </div>\n\n </div>\n </ng-template>\n\n </mat-form-field>\n <div class=\"button-container\" *ngIf=\"selectedFiles?.length > 0\">\n\n <button\n mat-button\n (click)=\"resetFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async) || (config.disableOnUpload && isUploaded)\"\n aria-label=\"Remove Selected File(s)\">\n {{config.clearFilesButtonText}}\n <mat-icon>delete</mat-icon>\n </button>\n\n <button\n *ngIf=\"!!config.uploadFiles\"\n mat-raised-button\n type=\"button\"\n color=\"accent\"\n class=\"file-input-button\"\n [disabled]=\"(disabled$ | async) || (config.disableOnUpload && isUploaded)\"\n (click)=\"uploadFiles()\"\n [attr.aria-label]=\"config.uploadButtonText\">\n {{ config.uploadButtonText }}\n </button>\n\n </div>\n</crispr-field-container>\n", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0;display:flex;justify-content:center}:host .drop-info{display:flex;flex-direction:column;align-items:center}:host .drop-info .drop-icon{font-size:36px}:host .drop-info .mat-h2{margin:0}:host .button-container{display:flex;justify-content:flex-end;margin-top:-16px}:host .button-container button{margin-left:8px}:host .selected-files-container{width:100%}:host [matInput]{position:absolute;max-height:0;visibility:hidden}\n"] }]
90
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
91
+ type: Optional
92
+ }, {
93
+ type: Self
94
+ }] }]; }, propDecorators: { fileInputRef: [{
95
+ type: ViewChild,
96
+ args: ['fileInput']
97
+ }] } });
98
+ export class FileUploadFieldModule {
99
+ }
100
+ FileUploadFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
101
+ FileUploadFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, declarations: [FileUploadFieldComponent, FileDropzoneDirective], imports: [CommonModule,
102
+ FieldContainerModule,
103
+ ReactiveFormsModule,
104
+ MatIconModule,
105
+ MatButtonModule,
106
+ MatFormFieldModule,
107
+ MatInputModule,
108
+ SelectedFileModule,
109
+ FormValidationHandlerModule], exports: [FileUploadFieldComponent, FileDropzoneDirective] });
110
+ FileUploadFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, imports: [[
111
+ CommonModule,
112
+ FieldContainerModule,
113
+ ReactiveFormsModule,
114
+ MatIconModule,
115
+ MatButtonModule,
116
+ MatFormFieldModule,
117
+ MatInputModule,
118
+ SelectedFileModule,
119
+ FormValidationHandlerModule,
120
+ ]] });
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, decorators: [{
122
+ type: NgModule,
123
+ args: [{
124
+ imports: [
125
+ CommonModule,
126
+ FieldContainerModule,
127
+ ReactiveFormsModule,
128
+ MatIconModule,
129
+ MatButtonModule,
130
+ MatFormFieldModule,
131
+ MatInputModule,
132
+ SelectedFileModule,
133
+ FormValidationHandlerModule,
134
+ ],
135
+ exports: [
136
+ FileUploadFieldComponent,
137
+ FileDropzoneDirective
138
+ ],
139
+ declarations: [
140
+ FileUploadFieldComponent,
141
+ FileDropzoneDirective
142
+ ]
143
+ }]
144
+ }] });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9tYXRlcmlhbC9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBRVQsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUV2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFFbEUsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBd0Isb0JBQW9CLENBQUMsQ0FBQztBQVE3RixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9CO0lBMkJoRSwrQkFBK0I7SUFDL0IsWUFDNkIsU0FBb0I7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFGbUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXpCakQsa0JBQWEsR0FBbUM7WUFDOUMsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixhQUFhLEVBQUUsS0FBSztZQUNwQixZQUFZLEVBQUUsZ0JBQWdCO1lBQzlCLHFCQUFxQixFQUFFLFFBQVE7WUFDL0IsZ0JBQWdCLEVBQUUsUUFBUTtZQUMxQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLG9CQUFvQixFQUFFLE9BQU87WUFDN0IsZ0JBQWdCLEVBQUUsUUFBUTtZQUMxQixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQTtRQU1ELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsaUJBQVksR0FBeUIsRUFBRSxDQUFDO1FBUXRDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsd0RBQXdEO1lBQ3hELDBEQUEwRDtZQUMxRCxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBR0QsWUFBWSxDQUFDLEtBQWU7UUFDMUIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUc7WUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBRSxLQUFXO1FBQ3JCLG1CQUFtQjtRQUNuQixzQ0FBc0M7UUFDdEMsb0JBQW9CO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxFQUFjO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxFQUFjO0lBQ2pDLENBQUM7O3FIQTlFVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixrTUNoQ3JDLHVsRkE0RUEseWtERHNESSxxQkFBcUI7MkZBbEdaLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU07OzBCQStCNUMsUUFBUTs7MEJBQUksSUFBSTs0Q0FYSyxZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7O0FBbUZ4QixNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBckdyQix3QkFBd0IsRUFrR2pDLHFCQUFxQixhQWhCckIsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsYUFBYTtRQUNiLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQiwyQkFBMkIsYUExRmxCLHdCQUF3QixFQThGakMscUJBQXFCO21IQU9aLHFCQUFxQixZQXBCdkI7WUFDUCxZQUFZO1lBQ1osb0JBQW9CO1lBQ3BCLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLDJCQUEyQjtTQUM1QjsyRkFVVSxxQkFBcUI7a0JBckJqQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsMkJBQTJCO3FCQUM1QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4QixxQkFBcUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRTt3QkFDWix3QkFBd0I7d0JBQ3hCLHFCQUFxQjtxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uSGFuZGxlck1vZHVsZSB9IGZyb20gJ0B0ZnQvZm9ybS12YWxpZGF0aW9uLWhhbmRsZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNyaXNwckNvbnRyb2xNaXhpbiwgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgRmllbGRDb250YWluZXJNb2R1bGUgfSBmcm9tICcuLi8uLi9maWVsZC1jb250YWluZXIvZmllbGQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEZpbGVVcGxvYWRGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWxlLXVwbG9hZC1maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgU2VsZWN0ZWRGaWxlTW9kdWxlIH0gZnJvbSAnLi4vc2VsZWN0ZWQtZmlsZS9zZWxlY3RlZC1maWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlRHJvcHpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2ZpbGUtZHJvcHpvbmUuZGlyZWN0aXZlJztcblxuY29uc3QgRmlsZVVwbG9hZEZpZWxkTWl4aW4gPSBjcmlzcHJDb250cm9sTWl4aW48RmlsZVVwbG9hZEZpZWxkQ29uZmlnPihDcmlzcHJGaWVsZENvbXBvbmVudCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1maWxlLXVwbG9hZC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkRmllbGRDb21wb25lbnQgZXh0ZW5kcyBGaWxlVXBsb2FkRmllbGRNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIG9uQ2hhbmdlOiAoKSA9PiB2b2lkO1xuXG4gIGRlZmF1bHRDb25maWc6IFBhcnRpYWw8RmlsZVVwbG9hZEZpZWxkQ29uZmlnPiA9IHtcbiAgICBhbGxvd011bHRpcGxlRmlsZXM6IGZhbHNlLFxuICAgIGFjY2VwdGVkVHlwZXM6ICcqLionLFxuICAgIGRyb3Bab25lVGV4dDogJ0RST1AgRklMRSBIRVJFJyxcbiAgICBzZWxlY3RGaWxlc0J1dHRvblR5cGU6ICdidXR0b24nLFxuICAgIHNlbGVjdEJ1dHRvblRleHQ6ICdTRUxFQ1QnLFxuICAgIHNob3dDbGVhckZpbGVzQnV0dG9uOiB0cnVlLFxuICAgIGNsZWFyRmlsZXNCdXR0b25UZXh0OiAnQ0xFQVInLFxuICAgIHVwbG9hZEJ1dHRvblRleHQ6ICdVUExPQUQnLFxuICAgIHVwbG9hZEJ1dHRvblR5cGU6ICdidXR0b24nLFxuICAgIHNob3dVcGxvYWRQcm9ncmVzczogZmFsc2UsXG4gICAgZGlzYWJsZU9uVXBsb2FkOiB0cnVlXG4gIH1cblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXRSZWY6IEVsZW1lbnRSZWZcblxuICBzZWxlY3RlZEZpbGVzOiBGaWxlTGlzdDtcblxuICBpc1VwbG9hZGVkID0gZmFsc2U7XG5cbiAgZmlsZVByb2dyZXNzOiBPYnNlcnZhYmxlPG51bWJlcj5bXSA9IFtdO1xuICBkaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLy8gbmdDb250cm9sOiBOZ0NvbnRyb2wgPSBudWxsO1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgYWNjZXNzb3IgZGlyZWN0bHkgKGluc3RlYWQgb2YgdXNpbmdcbiAgICAgIC8vIHRoZSBwcm92aWRlcnMpIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuZGlzYWJsZWQkID0gdGhpcy5jb25maWcuZGlzYWJsZWRDYWxsYmFja1xuICAgID8gdGhpcy5jb25maWcuZGlzYWJsZWRDYWxsYmFjayh0aGlzLmdyb3VwLCB0aGlzLmNvbmZpZylcbiAgICA6IG9mKGZhbHNlKTtcbiAgfVxuXG5cbiAgZmlsZXNDaGFuZ2VkKGZpbGVzOiBGaWxlTGlzdCk6IHZvaWQge1xuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwICkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVzID0gZmlsZXNcbiAgICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKGZpbGVzKTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWRGaWxlcygpIHtcbiAgICBpZih0aGlzLnNlbGVjdGVkRmlsZXMgJiYgdGhpcy5jb25maWcudXBsb2FkRmlsZXMpIHtcbiAgICAgIHRoaXMuaXNVcGxvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLmNvbmZpZy51cGxvYWRGaWxlcyh0aGlzLmdyb3VwLCB0aGlzLnNlbGVjdGVkRmlsZXMsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RmlsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgIHRoaXMuaXNVcGxvYWRlZCA9IGZhbHNlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSggdmFsdWU6IG51bGwgKSB7XG4gICAgLy8gY2xlYXIgZmlsZSBpbnB1dFxuICAgIC8vIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgLy8gdGhpcy5maWxlID0gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoIGZuOiAoKSA9PiB2b2lkICkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCBmbjogKCkgPT4gdm9pZCApIHtcbiAgfVxufVxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGaWVsZENvbnRhaW5lck1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBTZWxlY3RlZEZpbGVNb2R1bGUsXG4gICAgRm9ybVZhbGlkYXRpb25IYW5kbGVyTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRmlsZVVwbG9hZEZpZWxkQ29tcG9uZW50LFxuICAgIEZpbGVEcm9wem9uZURpcmVjdGl2ZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGaWxlVXBsb2FkRmllbGRDb21wb25lbnQsXG4gICAgRmlsZURyb3B6b25lRGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZEZpZWxkTW9kdWxlIHtcbn1cbiIsIjxjcmlzcHItZmllbGQtY29udGFpbmVyXG4gIFtjb25maWddPVwiY29uZmlnXCJcbiAgW2dyb3VwXT1cImdyb3VwXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYWx3YXlzXCJcbiAgICBbY29sb3JdPVwiY29uZmlnLmNvbG9yXCJcbiAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgW2NyaXNwckZpbGVEcm9wem9uZV09XCIhKGRpc2FibGVkJCB8IGFzeW5jKSAmJiAhKGNvbmZpZy5kaXNhYmxlT25VcGxvYWQgJiYgaXNVcGxvYWRlZClcIlxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICAgIChmaWxlRHJvcCk9XCJmaWxlc0NoYW5nZWQoJGV2ZW50KVwiPlxuXG4gICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIi8+XG4gICAgPGlucHV0XG4gICAgICAjZmlsZUlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgW2FjY2VwdF09XCJjb25maWcuYWNjZXB0ZWRUeXBlc1wiXG4gICAgICBbbXVsdGlwbGVdPVwiY29uZmlnLmFsbG93TXVsdGlwbGVGaWxlc1wiXG4gICAgICAoY2hhbmdlKT1cImZpbGVzQ2hhbmdlZCgkZXZlbnQudGFyZ2V0LmZpbGVzKVwiLz5cbiAgICA8bWF0LWxhYmVsPnt7Y29uZmlnLmxhYmVsfX08L21hdC1sYWJlbD5cblxuICAgIDxkaXYgKm5nSWY9XCIhKHNlbGVjdGVkRmlsZXM/Lmxlbmd0aCA+IDApOyBlbHNlIHNlbGVjdGVkRmlsZUxpc3RcIiAgY2xhc3M9XCJkcm9wLWluZm9cIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRyb3AtaWNvblwiIGlubGluZT1cInRydWVcIj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgPGgyIGNsYXNzPVwibWF0LWgyXCI+e3tjb25maWcuZHJvcFpvbmVUZXh0fX08L2gyPlxuICAgICAgb3JcbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZWQkIHwgYXN5bmMpIHx8IGNvbmZpZy5kaXNhYmxlT25VcGxvYWQgJiYgaXNVcGxvYWRlZFwiXG4gICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCI+XG4gICAgICAgIHt7Y29uZmlnLnNlbGVjdEJ1dHRvblRleHR9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNzZWxlY3RlZEZpbGVMaXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWZpbGVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtZmlsZXMtbGlzdFwiPlxuICAgICAgICAgIDxjcmlzcHItc2VsZWN0ZWQtZmlsZVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2Ygc2VsZWN0ZWRGaWxlczsgbGV0IGkgPSBpbmRleDtcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImNvbmZpZy5jb2xvciA9PT0gJ3ByaW1hcnknID8gJ2FjY2VudCcgOiAncHJpbWFyeSdcIlxuICAgICAgICAgICAgW2ZpbGVOYW1lXT1cImZpbGUubmFtZVwiXG4gICAgICAgICAgICBbc2hvd1Byb2dyZXNzXT1cImNvbmZpZy5zaG93VXBsb2FkUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgW3Byb2dyZXNzXT1cImZpbGVQcm9ncmVzcyAmJiAoZmlsZVByb2dyZXNzW2ldIHwgYXN5bmMpXCI+XG4gICAgICAgICAgPC9jcmlzcHItc2VsZWN0ZWQtZmlsZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIiAqbmdJZj1cInNlbGVjdGVkRmlsZXM/Lmxlbmd0aCA+IDBcIj5cblxuICAgIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIChjbGljayk9XCJyZXNldEZpbGVJbnB1dCgpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIihkaXNhYmxlZCQgfCBhc3luYykgfHwgKGNvbmZpZy5kaXNhYmxlT25VcGxvYWQgJiYgaXNVcGxvYWRlZClcIlxuICAgICAgYXJpYS1sYWJlbD1cIlJlbW92ZSBTZWxlY3RlZCBGaWxlKHMpXCI+XG4gICAgICB7e2NvbmZpZy5jbGVhckZpbGVzQnV0dG9uVGV4dH19XG4gICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiISFjb25maWcudXBsb2FkRmlsZXNcIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiKGRpc2FibGVkJCB8IGFzeW5jKSB8fCAoY29uZmlnLmRpc2FibGVPblVwbG9hZCAmJiBpc1VwbG9hZGVkKVwiXG4gICAgICAoY2xpY2spPVwidXBsb2FkRmlsZXMoKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZy51cGxvYWRCdXR0b25UZXh0XCI+XG4gICAgICB7eyBjb25maWcudXBsb2FkQnV0dG9uVGV4dCB9fVxuICAgIDwvYnV0dG9uPlxuXG4gIDwvZGl2PlxuPC9jcmlzcHItZmllbGQtY29udGFpbmVyPlxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './file-dropzone.directive';
2
+ export * from './file-upload.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ZpbGUtdXBsb2FkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS1kcm9wem9uZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,54 @@
1
+ import { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
+ import { CrisprFieldComponent } from '../../abstracts';
3
+ import { CommonModule } from '@angular/common';
4
+ import { MatFormFieldModule } from '@angular/material/form-field';
5
+ import { InfoModule } from '../info/info.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../info/info.component";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "@angular/material/form-field";
10
+ const defaultConfig = {
11
+ typographyClass: 'mat-h3'
12
+ };
13
+ export class HeadingComponent extends CrisprFieldComponent {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.defaultConfig = defaultConfig;
17
+ }
18
+ }
19
+ HeadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
+ HeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: HeadingComponent, selector: "crispr-heading", inputs: { config: "config" }, usesInheritance: true, ngImport: i0, template: " <label\n *ngIf=\"!!config?.label\"\n [ngClass]=\"config.typographyClass\">\n {{ config.label }}\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n </label>\n", styles: [":host{display:block}\n"], components: [{ type: i1.InfoComponent, selector: "crispr-info", inputs: ["info"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: 'crispr-heading', changeDetection: ChangeDetectionStrategy.OnPush, template: " <label\n *ngIf=\"!!config?.label\"\n [ngClass]=\"config.typographyClass\">\n {{ config.label }}\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n </label>\n", styles: [":host{display:block}\n"] }]
24
+ }], propDecorators: { config: [{
25
+ type: Input
26
+ }] } });
27
+ export class HeadingModule {
28
+ }
29
+ HeadingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
30
+ HeadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, declarations: [HeadingComponent], imports: [CommonModule,
31
+ MatFormFieldModule,
32
+ InfoModule], exports: [HeadingComponent] });
33
+ HeadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, imports: [[
34
+ CommonModule,
35
+ MatFormFieldModule,
36
+ InfoModule
37
+ ]] });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, decorators: [{
39
+ type: NgModule,
40
+ args: [{
41
+ imports: [
42
+ CommonModule,
43
+ MatFormFieldModule,
44
+ InfoModule
45
+ ],
46
+ exports: [
47
+ HeadingComponent
48
+ ],
49
+ declarations: [
50
+ HeadingComponent
51
+ ]
52
+ }]
53
+ }] });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFFcEQsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLGVBQWUsRUFBRSxRQUFRO0NBQzFCLENBQUE7QUFPRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW1DO0lBTnpFOztRQVFFLGtCQUFhLEdBQUcsYUFBYSxDQUFDO0tBQy9COzs2R0FIWSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiwyR0NoQjdCLDZPQVVBOzJGRE1hLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLOztBQWlCUixNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQWxCYixnQkFBZ0IsYUFNckIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixVQUFVLGFBUkwsZ0JBQWdCOzJHQWtCaEIsYUFBYSxZQWJiO1lBQ0wsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixVQUFVO1NBQ2I7MkZBU1EsYUFBYTtrQkFkekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLFVBQVU7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGdCQUFnQjtxQkFDbkI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLGdCQUFnQjtxQkFDbkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgSGVhZGluZ0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9oZWFkaW5nLmNvbmZpZyc7XG5pbXBvcnQgeyBDcmlzcHJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJbmZvTW9kdWxlIH0gZnJvbSAnLi4vaW5mby9pbmZvLmNvbXBvbmVudCc7XG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IFBhcnRpYWw8SGVhZGluZ0NvbmZpZz4gPSB7XG4gIHR5cG9ncmFwaHlDbGFzczogJ21hdC1oMydcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1oZWFkaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkaW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRpbmdDb21wb25lbnQgZXh0ZW5kcyBDcmlzcHJGaWVsZENvbXBvbmVudDxIZWFkaW5nQ29uZmlnPntcbiAgQElucHV0KCkgY29uZmlnOiBIZWFkaW5nQ29uZmlnO1xuICBkZWZhdWx0Q29uZmlnID0gZGVmYXVsdENvbmZpZztcbn1cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgSW5mb01vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBIZWFkaW5nQ29tcG9uZW50XG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgSGVhZGluZ0NvbXBvbmVudFxuICAgIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBIZWFkaW5nTW9kdWxlIHtcbn1cbiIsIiAgPGxhYmVsXG4gICAgKm5nSWY9XCIhIWNvbmZpZz8ubGFiZWxcIlxuICAgIFtuZ0NsYXNzXT1cImNvbmZpZy50eXBvZ3JhcGh5Q2xhc3NcIj5cbiAgICB7eyBjb25maWcubGFiZWwgfX1cbiAgICA8Y3Jpc3ByLWluZm9cbiAgICAgICpuZ0lmPVwiY29uZmlnLmluZm9cIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBbaW5mb109XCJjb25maWcuaW5mb1wiPlxuICAgIDwvY3Jpc3ByLWluZm8+XG4gIDwvbGFiZWw+XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export function convertBytesToMb(bytes) {
2
+ return bytes / 1048576;
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY29tcHJlc3Npb24uaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvbWF0ZXJpYWwvaW1hZ2UtdXBsb2FkLWZpZWxkL2ltYWdlLWNvbXByZXNzaW9uLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGdCQUFnQixDQUFFLEtBQWE7SUFDN0MsT0FBTyxLQUFLLEdBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydEJ5dGVzVG9NYiggYnl0ZXM6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBieXRlcy8xMDQ4NTc2O1xufVxuIl19