@ajf/material 13.0.0 → 13.1.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 (338) hide show
  1. package/README.md +2 -5
  2. package/ajf-material.d.ts +5 -0
  3. package/barcode/ajf-material-barcode.d.ts +5 -0
  4. package/barcode/barcode-module.d.ts +0 -0
  5. package/barcode/barcode.d.ts +0 -0
  6. package/barcode/package.json +8 -7
  7. package/barcode/{public-api.d.ts → public_api.d.ts} +0 -0
  8. package/calendar/ajf-material-calendar.d.ts +5 -0
  9. package/calendar/calendar-module.d.ts +0 -0
  10. package/calendar/calendar.d.ts +1 -1
  11. package/calendar/package.json +8 -7
  12. package/calendar/{public-api.d.ts → public_api.d.ts} +0 -0
  13. package/checkbox-group/ajf-material-checkbox-group.d.ts +5 -0
  14. package/checkbox-group/checkbox-group-item.d.ts +0 -0
  15. package/checkbox-group/checkbox-group-module.d.ts +0 -0
  16. package/checkbox-group/package.json +8 -7
  17. package/checkbox-group/{public-api.d.ts → public_api.d.ts} +0 -0
  18. package/esm2020/ajf-material.mjs +5 -0
  19. package/esm2020/barcode/ajf-material-barcode.mjs +5 -0
  20. package/esm2020/barcode/barcode-module.mjs +5 -5
  21. package/esm2020/barcode/barcode.mjs +6 -6
  22. package/esm2020/barcode/public_api.mjs +24 -0
  23. package/esm2020/calendar/ajf-material-calendar.mjs +5 -0
  24. package/esm2020/calendar/calendar-module.mjs +5 -5
  25. package/esm2020/calendar/calendar.mjs +7 -7
  26. package/esm2020/{page-slider/public-api.mjs → calendar/public_api.mjs} +3 -3
  27. package/esm2020/checkbox-group/ajf-material-checkbox-group.mjs +5 -0
  28. package/esm2020/checkbox-group/checkbox-group-item.mjs +6 -6
  29. package/esm2020/checkbox-group/checkbox-group-module.mjs +5 -5
  30. package/esm2020/{time/index.mjs → checkbox-group/public_api.mjs} +3 -2
  31. package/esm2020/form-builder/ajf-material-form-builder.mjs +5 -0
  32. package/esm2020/form-builder/branch-line.mjs +6 -5
  33. package/esm2020/form-builder/choices-origin-data-source.mjs +1 -1
  34. package/esm2020/form-builder/choices-origin-editor-dialog.mjs +5 -6
  35. package/esm2020/form-builder/choices-origin-editor.mjs +19 -8
  36. package/esm2020/form-builder/condition-editor-dialog.mjs +5 -6
  37. package/esm2020/form-builder/condition-editor.mjs +10 -6
  38. package/esm2020/form-builder/form-builder-module.mjs +5 -5
  39. package/esm2020/form-builder/form-builder-service.mjs +12 -5
  40. package/esm2020/form-builder/form-builder-utils.mjs +1 -1
  41. package/esm2020/form-builder/form-builder.mjs +12 -7
  42. package/esm2020/form-builder/node-entry.mjs +9 -7
  43. package/esm2020/form-builder/node-properties.mjs +16 -10
  44. package/esm2020/form-builder/node-type-entry.mjs +5 -5
  45. package/esm2020/form-builder/operations.mjs +1 -1
  46. package/esm2020/{monaco-editor/public-api.mjs → form-builder/public_api.mjs} +5 -3
  47. package/esm2020/form-builder/string-identifier-dialog.mjs +6 -7
  48. package/esm2020/form-builder/validation-condition-editor-dialog.mjs +6 -6
  49. package/esm2020/form-builder/warning-condition-editor-dialog.mjs +6 -6
  50. package/esm2020/forms/ajf-material-forms.mjs +5 -0
  51. package/esm2020/forms/barcode-field.mjs +7 -8
  52. package/esm2020/forms/boolean-field.mjs +7 -8
  53. package/esm2020/forms/date-field.mjs +7 -8
  54. package/esm2020/forms/date-input-field.mjs +10 -8
  55. package/esm2020/forms/empty-field.mjs +11 -11
  56. package/esm2020/forms/field-service.mjs +4 -4
  57. package/esm2020/forms/field-warning-dialog.mjs +7 -4
  58. package/esm2020/forms/field.mjs +6 -7
  59. package/esm2020/forms/form.mjs +18 -17
  60. package/esm2020/forms/forms-module.mjs +9 -5
  61. package/esm2020/forms/input-field.mjs +7 -8
  62. package/esm2020/forms/multiple-choice-field.mjs +7 -8
  63. package/esm2020/{barcode/public-api.mjs → forms/public_api.mjs} +16 -3
  64. package/esm2020/forms/range-field.mjs +7 -8
  65. package/esm2020/forms/single-choice-field.mjs +7 -8
  66. package/esm2020/forms/table-field.mjs +7 -8
  67. package/esm2020/forms/text-field.mjs +7 -8
  68. package/esm2020/forms/time-field.mjs +7 -8
  69. package/esm2020/forms/video-url-field.mjs +6 -9
  70. package/esm2020/forms/warning-alert-service.mjs +4 -5
  71. package/esm2020/image/ajf-material-image.mjs +5 -0
  72. package/esm2020/image/image-module.mjs +5 -5
  73. package/esm2020/image/image.mjs +5 -6
  74. package/esm2020/{calendar/public-api.mjs → image/public_api.mjs} +3 -3
  75. package/esm2020/monaco-editor/ajf-material-monaco-editor.mjs +5 -0
  76. package/esm2020/monaco-editor/auto-complete-item-model.mjs +7 -2
  77. package/esm2020/monaco-editor/autocomplete-singleton-model.mjs +1 -1
  78. package/esm2020/monaco-editor/editor-language-model.mjs +1 -1
  79. package/esm2020/monaco-editor/editor-options-model.mjs +11 -1
  80. package/esm2020/monaco-editor/editor-scrollbar-options.mjs +1 -1
  81. package/esm2020/monaco-editor/editor-theme.mjs +1 -1
  82. package/esm2020/monaco-editor/monaco-editor-module.mjs +5 -5
  83. package/esm2020/monaco-editor/monaco-editor.mjs +7 -7
  84. package/esm2020/{reports/layout-widget.mjs → monaco-editor/public_api.mjs} +3 -1
  85. package/esm2020/node-icon/ajf-material-node-icon.mjs +5 -0
  86. package/esm2020/node-icon/node-icon-module.mjs +5 -5
  87. package/esm2020/node-icon/node-icon.mjs +5 -5
  88. package/esm2020/{form-builder/public-api.mjs → node-icon/public_api.mjs} +3 -5
  89. package/esm2020/page-slider/ajf-material-page-slider.mjs +5 -0
  90. package/esm2020/page-slider/page-slider-module.mjs +5 -5
  91. package/esm2020/page-slider/page-slider.mjs +6 -7
  92. package/esm2020/page-slider/public_api.mjs +24 -0
  93. package/esm2020/{form-builder/index.mjs → public-api.mjs} +3 -2
  94. package/esm2020/reports/ajf-material-reports.mjs +5 -0
  95. package/esm2020/reports/chart-widget.mjs +7 -6
  96. package/esm2020/reports/filter-widget.mjs +20 -53
  97. package/esm2020/reports/formula-widget.mjs +7 -6
  98. package/esm2020/reports/image-container-widget.mjs +6 -6
  99. package/esm2020/reports/image-widget.mjs +7 -6
  100. package/esm2020/reports/map-widget.mjs +7 -6
  101. package/esm2020/reports/page-break-widget.mjs +6 -6
  102. package/esm2020/reports/public_api.mjs +34 -0
  103. package/esm2020/reports/report.mjs +6 -6
  104. package/esm2020/reports/reports-module.mjs +5 -5
  105. package/esm2020/reports/table-widget.mjs +7 -6
  106. package/esm2020/reports/text-widget.mjs +8 -7
  107. package/esm2020/reports/widget.mjs +17 -18
  108. package/esm2020/time/ajf-material-time.mjs +5 -0
  109. package/esm2020/{image/public-api.mjs → time/public_api.mjs} +3 -3
  110. package/esm2020/time/time-module.mjs +5 -5
  111. package/esm2020/time/time.mjs +4 -4
  112. package/fesm2015/{barcode.mjs → ajf-material-barcode.mjs} +9 -31
  113. package/fesm2015/ajf-material-barcode.mjs.map +1 -0
  114. package/fesm2015/ajf-material-calendar.mjs +116 -0
  115. package/fesm2015/ajf-material-calendar.mjs.map +1 -0
  116. package/fesm2015/{checkbox-group.mjs → ajf-material-checkbox-group.mjs} +9 -31
  117. package/fesm2015/ajf-material-checkbox-group.mjs.map +1 -0
  118. package/fesm2015/{form-builder.mjs → ajf-material-form-builder.mjs} +101 -77
  119. package/fesm2015/ajf-material-form-builder.mjs.map +1 -0
  120. package/fesm2015/ajf-material-forms.mjs +1000 -0
  121. package/fesm2015/ajf-material-forms.mjs.map +1 -0
  122. package/{fesm2020/image.mjs → fesm2015/ajf-material-image.mjs} +8 -30
  123. package/fesm2015/ajf-material-image.mjs.map +1 -0
  124. package/fesm2015/{monaco-editor.mjs → ajf-material-monaco-editor.mjs} +26 -31
  125. package/fesm2015/ajf-material-monaco-editor.mjs.map +1 -0
  126. package/{fesm2020/node-icon.mjs → fesm2015/ajf-material-node-icon.mjs} +9 -31
  127. package/fesm2015/ajf-material-node-icon.mjs.map +1 -0
  128. package/fesm2015/{page-slider.mjs → ajf-material-page-slider.mjs} +9 -31
  129. package/fesm2015/ajf-material-page-slider.mjs.map +1 -0
  130. package/{fesm2020/reports.mjs → fesm2015/ajf-material-reports.mjs} +81 -134
  131. package/fesm2015/ajf-material-reports.mjs.map +1 -0
  132. package/fesm2015/{time.mjs → ajf-material-time.mjs} +8 -30
  133. package/fesm2015/ajf-material-time.mjs.map +1 -0
  134. package/{calendar/index.d.ts → fesm2015/ajf-material.mjs} +7 -1
  135. package/fesm2015/ajf-material.mjs.map +1 -0
  136. package/fesm2020/{barcode.mjs → ajf-material-barcode.mjs} +9 -31
  137. package/fesm2020/ajf-material-barcode.mjs.map +1 -0
  138. package/fesm2020/ajf-material-calendar.mjs +116 -0
  139. package/fesm2020/ajf-material-calendar.mjs.map +1 -0
  140. package/fesm2020/{checkbox-group.mjs → ajf-material-checkbox-group.mjs} +9 -31
  141. package/fesm2020/ajf-material-checkbox-group.mjs.map +1 -0
  142. package/fesm2020/{form-builder.mjs → ajf-material-form-builder.mjs} +101 -77
  143. package/fesm2020/ajf-material-form-builder.mjs.map +1 -0
  144. package/fesm2020/ajf-material-forms.mjs +974 -0
  145. package/fesm2020/ajf-material-forms.mjs.map +1 -0
  146. package/{fesm2015/image.mjs → fesm2020/ajf-material-image.mjs} +8 -30
  147. package/fesm2020/ajf-material-image.mjs.map +1 -0
  148. package/fesm2020/{monaco-editor.mjs → ajf-material-monaco-editor.mjs} +26 -61
  149. package/fesm2020/ajf-material-monaco-editor.mjs.map +1 -0
  150. package/{fesm2015/node-icon.mjs → fesm2020/ajf-material-node-icon.mjs} +9 -31
  151. package/fesm2020/ajf-material-node-icon.mjs.map +1 -0
  152. package/fesm2020/{page-slider.mjs → ajf-material-page-slider.mjs} +10 -32
  153. package/fesm2020/ajf-material-page-slider.mjs.map +1 -0
  154. package/{fesm2015/reports.mjs → fesm2020/ajf-material-reports.mjs} +80 -133
  155. package/fesm2020/ajf-material-reports.mjs.map +1 -0
  156. package/fesm2020/{time.mjs → ajf-material-time.mjs} +8 -30
  157. package/fesm2020/ajf-material-time.mjs.map +1 -0
  158. package/{barcode/index.d.ts → fesm2020/ajf-material.mjs} +7 -1
  159. package/fesm2020/ajf-material.mjs.map +1 -0
  160. package/form-builder/ajf-material-form-builder.d.ts +5 -0
  161. package/form-builder/branch-line.d.ts +0 -0
  162. package/form-builder/choices-origin-data-source.d.ts +0 -0
  163. package/form-builder/choices-origin-editor-dialog.d.ts +0 -0
  164. package/form-builder/choices-origin-editor.d.ts +2 -2
  165. package/form-builder/condition-editor-dialog.d.ts +0 -0
  166. package/form-builder/condition-editor.d.ts +0 -0
  167. package/form-builder/form-builder-module.d.ts +0 -0
  168. package/form-builder/form-builder-service.d.ts +1 -1
  169. package/form-builder/form-builder-utils.d.ts +0 -0
  170. package/form-builder/form-builder.d.ts +2 -2
  171. package/form-builder/node-entry.d.ts +2 -2
  172. package/form-builder/node-properties.d.ts +3 -3
  173. package/form-builder/node-type-entry.d.ts +2 -2
  174. package/form-builder/operations.d.ts +0 -0
  175. package/form-builder/package.json +8 -7
  176. package/form-builder/{public-api.d.ts → public_api.d.ts} +0 -0
  177. package/form-builder/string-identifier-dialog.d.ts +0 -0
  178. package/form-builder/validation-condition-editor-dialog.d.ts +0 -0
  179. package/form-builder/warning-condition-editor-dialog.d.ts +0 -0
  180. package/forms/ajf-material-forms.d.ts +5 -0
  181. package/forms/barcode-field.d.ts +0 -0
  182. package/forms/boolean-field.d.ts +0 -0
  183. package/forms/date-field.d.ts +0 -0
  184. package/forms/date-input-field.d.ts +0 -0
  185. package/forms/empty-field.d.ts +0 -0
  186. package/forms/field-service.d.ts +0 -0
  187. package/forms/field-warning-dialog.d.ts +0 -0
  188. package/forms/field.d.ts +0 -0
  189. package/forms/form.d.ts +0 -0
  190. package/forms/forms-module.d.ts +15 -14
  191. package/forms/input-field.d.ts +0 -0
  192. package/forms/multiple-choice-field.d.ts +0 -0
  193. package/forms/package.json +8 -7
  194. package/forms/{public-api.d.ts → public_api.d.ts} +0 -0
  195. package/forms/range-field.d.ts +0 -0
  196. package/forms/single-choice-field.d.ts +0 -0
  197. package/forms/table-field.d.ts +0 -0
  198. package/forms/text-field.d.ts +0 -0
  199. package/forms/time-field.d.ts +0 -0
  200. package/forms/video-url-field.d.ts +0 -0
  201. package/forms/warning-alert-service.d.ts +0 -0
  202. package/image/ajf-material-image.d.ts +5 -0
  203. package/image/image-module.d.ts +0 -0
  204. package/image/image.d.ts +0 -0
  205. package/image/package.json +8 -7
  206. package/image/{public-api.d.ts → public_api.d.ts} +0 -0
  207. package/monaco-editor/ajf-material-monaco-editor.d.ts +5 -0
  208. package/monaco-editor/auto-complete-item-model.d.ts +0 -0
  209. package/monaco-editor/autocomplete-singleton-model.d.ts +0 -0
  210. package/monaco-editor/editor-language-model.d.ts +0 -0
  211. package/monaco-editor/editor-options-model.d.ts +0 -0
  212. package/monaco-editor/editor-scrollbar-options.d.ts +0 -0
  213. package/monaco-editor/editor-theme.d.ts +0 -0
  214. package/monaco-editor/monaco-editor-module.d.ts +0 -0
  215. package/monaco-editor/monaco-editor.d.ts +0 -0
  216. package/monaco-editor/package.json +8 -7
  217. package/monaco-editor/{public-api.d.ts → public_api.d.ts} +0 -0
  218. package/node-icon/ajf-material-node-icon.d.ts +5 -0
  219. package/node-icon/node-icon-module.d.ts +0 -0
  220. package/node-icon/node-icon.d.ts +0 -0
  221. package/node-icon/package.json +8 -7
  222. package/node-icon/{public-api.d.ts → public_api.d.ts} +0 -0
  223. package/package.json +90 -92
  224. package/page-slider/ajf-material-page-slider.d.ts +5 -0
  225. package/page-slider/package.json +8 -7
  226. package/page-slider/page-slider-module.d.ts +0 -0
  227. package/page-slider/page-slider.d.ts +0 -0
  228. package/page-slider/{public-api.d.ts → public_api.d.ts} +0 -0
  229. package/{checkbox-group/index.d.ts → public-api.d.ts} +2 -1
  230. package/reports/ajf-material-reports.d.ts +5 -0
  231. package/reports/chart-widget.d.ts +0 -0
  232. package/reports/filter-widget.d.ts +6 -29
  233. package/reports/formula-widget.d.ts +0 -0
  234. package/reports/image-container-widget.d.ts +0 -0
  235. package/reports/image-widget.d.ts +0 -0
  236. package/reports/map-widget.d.ts +0 -0
  237. package/reports/package.json +8 -7
  238. package/reports/page-break-widget.d.ts +0 -0
  239. package/reports/{public-api.d.ts → public_api.d.ts} +0 -0
  240. package/reports/report.d.ts +0 -0
  241. package/reports/reports-module.d.ts +0 -0
  242. package/reports/table-widget.d.ts +0 -0
  243. package/reports/text-widget.d.ts +0 -0
  244. package/reports/widget.d.ts +0 -0
  245. package/time/ajf-material-time.d.ts +5 -0
  246. package/time/package.json +8 -7
  247. package/time/{public-api.d.ts → public_api.d.ts} +0 -0
  248. package/time/time-module.d.ts +0 -0
  249. package/time/time.d.ts +0 -0
  250. package/LICENSE +0 -661
  251. package/barcode/_barcode.scss +0 -0
  252. package/barcode/barcode_public_index.d.ts +0 -4
  253. package/calendar/_calendar.scss +0 -0
  254. package/calendar/calendar_public_index.d.ts +0 -4
  255. package/checkbox-group/_checkbox-group.scss +0 -0
  256. package/checkbox-group/checkbox-group_public_index.d.ts +0 -4
  257. package/esm2020/barcode/barcode_public_index.mjs +0 -5
  258. package/esm2020/barcode/index.mjs +0 -23
  259. package/esm2020/calendar/calendar_public_index.mjs +0 -5
  260. package/esm2020/calendar/index.mjs +0 -23
  261. package/esm2020/checkbox-group/checkbox-group_public_index.mjs +0 -5
  262. package/esm2020/checkbox-group/index.mjs +0 -23
  263. package/esm2020/checkbox-group/public-api.mjs +0 -24
  264. package/esm2020/form-builder/form-builder_public_index.mjs +0 -5
  265. package/esm2020/forms/forms_public_index.mjs +0 -5
  266. package/esm2020/forms/index.mjs +0 -23
  267. package/esm2020/forms/public-api.mjs +0 -37
  268. package/esm2020/image/image_public_index.mjs +0 -5
  269. package/esm2020/image/index.mjs +0 -23
  270. package/esm2020/index.mjs +0 -28
  271. package/esm2020/monaco-editor/index.mjs +0 -23
  272. package/esm2020/monaco-editor/monaco-editor_public_index.mjs +0 -5
  273. package/esm2020/node-icon/index.mjs +0 -23
  274. package/esm2020/node-icon/node-icon_public_index.mjs +0 -5
  275. package/esm2020/node-icon/public-api.mjs +0 -24
  276. package/esm2020/page-slider/index.mjs +0 -23
  277. package/esm2020/page-slider/page-slider_public_index.mjs +0 -5
  278. package/esm2020/reports/index.mjs +0 -23
  279. package/esm2020/reports/public-api.mjs +0 -34
  280. package/esm2020/reports/reports_public_index.mjs +0 -5
  281. package/esm2020/time/public-api.mjs +0 -24
  282. package/esm2020/time/time_public_index.mjs +0 -5
  283. package/fesm2015/barcode.mjs.map +0 -1
  284. package/fesm2015/calendar.mjs +0 -138
  285. package/fesm2015/calendar.mjs.map +0 -1
  286. package/fesm2015/checkbox-group.mjs.map +0 -1
  287. package/fesm2015/form-builder.mjs.map +0 -1
  288. package/fesm2015/forms.mjs +0 -1011
  289. package/fesm2015/forms.mjs.map +0 -1
  290. package/fesm2015/image.mjs.map +0 -1
  291. package/fesm2015/material.mjs +0 -30
  292. package/fesm2015/material.mjs.map +0 -1
  293. package/fesm2015/monaco-editor.mjs.map +0 -1
  294. package/fesm2015/node-icon.mjs.map +0 -1
  295. package/fesm2015/page-slider.mjs.map +0 -1
  296. package/fesm2015/reports.mjs.map +0 -1
  297. package/fesm2015/time.mjs.map +0 -1
  298. package/fesm2020/barcode.mjs.map +0 -1
  299. package/fesm2020/calendar.mjs +0 -138
  300. package/fesm2020/calendar.mjs.map +0 -1
  301. package/fesm2020/checkbox-group.mjs.map +0 -1
  302. package/fesm2020/form-builder.mjs.map +0 -1
  303. package/fesm2020/forms.mjs +0 -985
  304. package/fesm2020/forms.mjs.map +0 -1
  305. package/fesm2020/image.mjs.map +0 -1
  306. package/fesm2020/material.mjs +0 -30
  307. package/fesm2020/material.mjs.map +0 -1
  308. package/fesm2020/monaco-editor.mjs.map +0 -1
  309. package/fesm2020/node-icon.mjs.map +0 -1
  310. package/fesm2020/page-slider.mjs.map +0 -1
  311. package/fesm2020/reports.mjs.map +0 -1
  312. package/fesm2020/time.mjs.map +0 -1
  313. package/form-builder/_form-builder.scss +0 -0
  314. package/form-builder/form-builder_public_index.d.ts +0 -4
  315. package/form-builder/index.d.ts +0 -22
  316. package/forms/_forms.scss +0 -0
  317. package/forms/forms_public_index.d.ts +0 -4
  318. package/forms/index.d.ts +0 -22
  319. package/image/_image.scss +0 -0
  320. package/image/image_public_index.d.ts +0 -4
  321. package/image/index.d.ts +0 -22
  322. package/index.d.ts +0 -22
  323. package/monaco-editor/_monaco-editor.scss +0 -0
  324. package/monaco-editor/index.d.ts +0 -22
  325. package/monaco-editor/monaco-editor_public_index.d.ts +0 -4
  326. package/node-icon/_node-icon.scss +0 -0
  327. package/node-icon/index.d.ts +0 -22
  328. package/node-icon/node-icon_public_index.d.ts +0 -4
  329. package/page-slider/_page-slider.scss +0 -0
  330. package/page-slider/index.d.ts +0 -22
  331. package/page-slider/page-slider_public_index.d.ts +0 -4
  332. package/reports/_reports.scss +0 -0
  333. package/reports/index.d.ts +0 -22
  334. package/reports/layout-widget.d.ts +0 -21
  335. package/reports/reports_public_index.d.ts +0 -4
  336. package/time/_time.scss +0 -0
  337. package/time/index.d.ts +0 -22
  338. package/time/time_public_index.d.ts +0 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajf-material-form-builder.mjs","sources":["../../../projects/material/form-builder/src/branch-line.ts","../../../projects/material/form-builder/src/branch-line.html","../../../projects/material/form-builder/src/choices-origin-data-source.ts","../../../projects/material/form-builder/src/choices-origin-editor.ts","../../../projects/material/form-builder/src/choices-origin-editor.html","../../../projects/material/form-builder/src/form-builder-service.ts","../../../projects/material/form-builder/src/choices-origin-editor-dialog.ts","../../../projects/material/form-builder/src/choices-origin-editor-dialog.html","../../../projects/material/form-builder/src/condition-editor.ts","../../../projects/material/form-builder/src/fb-condition-editor.html","../../../projects/material/form-builder/src/condition-editor-dialog.ts","../../../projects/material/form-builder/src/condition-editor-dialog.html","../../../projects/material/form-builder/src/form-builder-utils.ts","../../../projects/material/form-builder/src/string-identifier-dialog.ts","../../../projects/material/form-builder/src/string-identifier-dialog.html","../../../projects/material/form-builder/src/node-type-entry.ts","../../../projects/material/form-builder/src/node-type-entry.html","../../../projects/material/form-builder/src/validation-condition-editor-dialog.ts","../../../projects/material/form-builder/src/validation-condition-editor-dialog.html","../../../projects/material/form-builder/src/warning-condition-editor-dialog.ts","../../../projects/material/form-builder/src/warning-condition-editor-dialog.html","../../../projects/material/form-builder/src/node-properties.ts","../../../projects/material/form-builder/src/node-properties.html","../../../projects/material/form-builder/src/node-entry.ts","../../../projects/material/form-builder/src/node-entry.html","../../../projects/material/form-builder/src/form-builder.ts","../../../projects/material/form-builder/src/form-builder.html","../../../projects/material/form-builder/src/form-builder-module.ts","../../../projects/material/form-builder/src/public_api.ts","../../../projects/material/form-builder/src/ajf-material-form-builder.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ajf-fb-branch-line',\n templateUrl: 'branch-line.html',\n styleUrls: ['branch-line.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbBranchLine {\n private _offset = 0;\n @Input()\n set offset(offset: number) {\n this._offset = offset;\n this._updateOffset();\n }\n\n private _color: string = '';\n @Input()\n set color(color: string) {\n this._color = color;\n this._updateColor();\n }\n\n private _height = 0;\n @Input()\n set height(height: number) {\n this._height = height;\n this._updateHeight();\n }\n\n constructor(private _el: ElementRef, private _renderer: Renderer2) {}\n\n private _updateHeight(): void {\n const height = `${Math.max(0, this._height - 25)}px`;\n this._renderer.setStyle(this._el.nativeElement, 'height', height);\n }\n\n private _updateOffset(): void {\n const margin = `${this._offset * 4}px`;\n this._renderer.setStyle(this._el.nativeElement, 'margin-top', margin);\n this._renderer.setStyle(this._el.nativeElement, 'margin-left', margin);\n }\n\n private _updateColor(): void {\n this._renderer.setStyle(this._el.nativeElement, 'border-color', this._color);\n }\n}\n","","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {DataSource} from '@angular/cdk/collections';\n\nimport {BehaviorSubject, Observable} from 'rxjs';\n\nexport type ChoicesOriginChoiceEntry = {\n label: string;\n value: string;\n};\n\nexport class ChoicesOriginDataSource extends DataSource<ChoicesOriginChoiceEntry> {\n private _choices: BehaviorSubject<ChoicesOriginChoiceEntry[]> = new BehaviorSubject<\n ChoicesOriginChoiceEntry[]\n >([]);\n private _choicesObs: Observable<ChoicesOriginChoiceEntry[]>;\n\n constructor() {\n super();\n this._choicesObs = this._choices as Observable<ChoicesOriginChoiceEntry[]>;\n }\n\n connect(): Observable<ChoicesOriginChoiceEntry[]> {\n return this._choicesObs;\n }\n\n disconnect() {}\n\n updateChoices(choices: ChoicesOriginChoiceEntry[]) {\n this._choices.next(choices);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfChoicesOrigin, isChoicesFixedOrigin} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\n\nimport {ChoicesOriginChoiceEntry, ChoicesOriginDataSource} from './choices-origin-data-source';\n\n@Component({\n selector: 'ajf-fb-choices-origin-editor',\n templateUrl: 'choices-origin-editor.html',\n styleUrls: ['choices-origin-editor.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbChoicesOriginEditor {\n private _displayedColumns: string[] = ['label', 'value', 'delete'];\n get displayedColumns(): string[] {\n return this._displayedColumns;\n }\n\n private _choicesOrigin: AjfChoicesOrigin<any> | undefined;\n get choicesOrigin(): AjfChoicesOrigin<any> | undefined {\n return this._choicesOrigin;\n }\n @Input()\n set choicesOrigin(choicesOrigin: AjfChoicesOrigin<any> | undefined) {\n this._choicesOrigin = choicesOrigin;\n if (choicesOrigin != null) {\n this.name = choicesOrigin.name;\n this.label = choicesOrigin.label;\n this.canEditChoices = isChoicesFixedOrigin(choicesOrigin);\n this._choicesArr = choicesOrigin.choices;\n } else {\n this.name = '';\n this.label = '';\n this.canEditChoices = false;\n this._choicesArr = [];\n }\n this._choices.updateChoices(this._choicesArr);\n }\n\n editing: {[key: string]: boolean} = {};\n name: string = '';\n label: string = '';\n canEditChoices: boolean = false;\n\n private _choices: ChoicesOriginDataSource = new ChoicesOriginDataSource();\n get choices(): ChoicesOriginDataSource {\n return this._choices;\n }\n\n private _choicesArr: ChoicesOriginChoiceEntry[] = [];\n get choicesArr(): ChoicesOriginChoiceEntry[] {\n return this._choicesArr;\n }\n\n updateValue(evt: any, cell: string, _value: any, rowIdx: number): void {\n this.editing[rowIdx + '-' + cell] = false;\n (this._choicesArr[rowIdx] as any)[cell] = evt.target.value;\n this._choices.updateChoices(this._choicesArr);\n }\n\n deleteRow(rowIdx: number): void {\n this._choicesArr.splice(rowIdx, 1);\n this._choices.updateChoices(this._choicesArr);\n }\n\n addRow(): void {\n this._choicesArr.push({label: '', value: ''});\n this._choices.updateChoices(this._choicesArr);\n }\n}\n","<div>\n <mat-form-field>\n <input matInput [(ngModel)]=\"name\" [placeholder]=\"'Name' | transloco\" />\n </mat-form-field>\n <mat-form-field>\n <input matInput [(ngModel)]=\"label\" [placeholder]=\"'Label' | transloco\" />\n </mat-form-field>\n <ng-template [ngIf]=\"canEditChoices\">\n <button (click)=\"addRow()\" mat-button>\n <mat-icon>add</mat-icon>\n <span>{{'Add value'|transloco}}</span>\n </button>\n <mat-table [dataSource]=\"choices\">\n <ng-container matColumnDef=\"label\">\n <mat-header-cell *matHeaderCellDef\n >{{'Label'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <input matInput [(ngModel)]=\"row.label\" type=\"text\" />\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef\n >{{'Value'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <input matInput [(ngModel)]=\"row.value\" type=\"text\" />\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef\n >{{'Delete'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-icon (click)=\"deleteRow(idx)\">{{'delete'|transloco}}</mat-icon>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n </mat-table>\n </ng-template>\n</div>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfAttachmentsOrigin,\n AjfChoicesOrigin,\n AjfField,\n AjfFieldType,\n AjfFieldWithChoices,\n AjfForm,\n AjfFormStringIdentifier,\n AjfNode,\n AjfNodeGroup,\n AjfNodesOperation,\n AjfNodeType,\n AjfRangeField,\n AjfRepeatingContainerNode,\n AjfRepeatingSlide,\n AjfSlide,\n createChoicesFixedOrigin,\n createContainerNode,\n createField,\n createForm,\n createValidation,\n createValidationGroup,\n createWarning,\n createWarningGroup,\n isChoicesFixedOrigin,\n isContainerNode,\n isField,\n isFieldWithChoices,\n isRangeField,\n isRepeatingContainerNode,\n isSlidesNode,\n maxDigitsValidation,\n maxValidation,\n minDigitsValidation,\n minValidation,\n notEmptyValidation,\n notEmptyWarning,\n} from '@ajf/core/forms';\nimport {AjfCondition, alwaysCondition, createCondition, createFormula} from '@ajf/core/models';\nimport {deepCopy} from '@ajf/core/utils';\nimport {moveItemInArray} from '@angular/cdk/drag-drop';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, of as obsOf, Subject, Subscription} from 'rxjs';\nimport {filter, map, publishReplay, refCount, scan, withLatestFrom} from 'rxjs/operators';\n\nimport {\n AjfAttachmentsOriginsOperation,\n AjfChoicesOriginsOperation,\n AjfFormStringIdentifierOperation,\n} from './operations';\n\nexport interface AjfFormBuilderNodeTypeEntry {\n label: string;\n icon: {fontSet: string; fontIcon: string};\n nodeType: {\n node: AjfNodeType;\n field?: AjfFieldType;\n };\n isSlide?: boolean;\n}\n\nexport interface AjfFormBuilderNodeEntry {\n node: AjfNode;\n container: AjfContainerNode | null;\n children: AjfFormBuilderNodeEntry[];\n content: AjfFormBuilderNodeEntry[];\n}\n\nexport interface AjfFormBuilderEmptySlot {\n parent: AjfNode;\n parentNode: number;\n}\n\n/**\n * Represents a node's position change in the formbuilder.\n */\nexport interface AjfFormBuilderMoveEvent {\n /**\n * The node being moved.\n */\n nodeEntry: AjfFormBuilderNode;\n\n /**\n * The index of the node previous position.\n */\n fromIndex: number;\n\n /**\n * The index of the node new position.\n */\n toIndex: number;\n}\n\nexport type AjfFormBuilderNode = AjfFormBuilderNodeEntry | AjfFormBuilderEmptySlot;\nexport type AjfContainerNode = AjfSlide | AjfRepeatingSlide | AjfNodeGroup;\n\nfunction getNodeContainer(c: {nodes: AjfNode[]}, node: AjfNode): {nodes: AjfNode[]} | null {\n if (c.nodes.indexOf(node) > -1) {\n return c;\n }\n const cns = c.nodes.filter(n => isContainerNode(n));\n const len = cns.length;\n for (let i = 0; i < len; i++) {\n const cn = getNodeContainer(<AjfContainerNode>cns[i], node);\n if (cn != null) {\n return cn;\n }\n }\n return null;\n}\n\nfunction buildFormBuilderNodesSubtree(\n nodes: AjfNode[],\n parent: AjfNode,\n ignoreConditionalBranches = false,\n): AjfFormBuilderNode[] {\n const entries: AjfFormBuilderNode[] = nodes\n .filter(n => n.parent === parent.id)\n .sort((n1, n2) => n1.parentNode - n2.parentNode)\n .map(n => {\n const children = buildFormBuilderNodesSubtree(nodes, n);\n if (children.length === 0) {\n children.push({parent: n, parentNode: 0});\n }\n return <AjfFormBuilderNodeEntry>{\n node: n,\n children,\n content: buildFormBuilderNodesContent(nodes, n),\n };\n });\n if (!ignoreConditionalBranches) {\n const entriesNum = entries.length;\n const cbs = parent.conditionalBranches.length;\n for (let i = entriesNum; i < cbs; i++) {\n entries.push({parent: parent, parentNode: i});\n }\n }\n return entries;\n}\n\nfunction buildFormBuilderNodesContent(_nodes: AjfNode[], node: AjfNode): AjfFormBuilderNode[] {\n if (isContainerNode(node)) {\n return buildFormBuilderNodesSubtree((<AjfContainerNode>node).nodes, node, true);\n }\n return [];\n}\n\nexport function flattenNodes(nodes: AjfNode[]): AjfNode[] {\n let flatNodes: AjfNode[] = [];\n\n nodes.forEach((node: AjfNode) => {\n if (isContainerNode(node)) {\n flatNodes = flatNodes.concat(flattenNodes((<AjfContainerNode>node).nodes));\n }\n flatNodes.push(node);\n });\n\n return flatNodes;\n}\n\nfunction getDescendants(\n flatNodes: AjfNode[],\n parentNode: AjfNode,\n branch: number | null = null,\n): AjfNode[] {\n return branch != null\n ? flatNodes.filter(n => n.parent === parentNode.id && n.parentNode === branch)\n : flatNodes.filter(n => n.parent === parentNode.id);\n}\n\nfunction removeNodes(nodes: AjfNode[], ids: number[]): AjfNode[] {\n const len = nodes.length;\n for (let i = 0; i < len; i++) {\n const node = nodes[i];\n if (isContainerNode(node)) {\n const container = <AjfContainerNode>node;\n container.nodes = removeNodes(container.nodes, ids);\n }\n }\n return nodes.filter(n => ids.indexOf(n.id) === -1);\n}\n\nfunction deleteNodeSubtree(\n nodes: AjfNode[],\n parentNode: AjfNode,\n branch: number | null = null,\n): AjfNode[] {\n const flatNodes = flattenNodes(nodes);\n let delNodes: AjfNode[] = [];\n let descendants = getDescendants(flatNodes, parentNode, branch);\n const len = descendants.length;\n for (let i = 0; i < len; i++) {\n delNodes = delNodes.concat(getDescendants(flatNodes, descendants[i]));\n }\n delNodes = delNodes.concat(descendants);\n return removeNodes(\n nodes,\n delNodes.map(n => n.id),\n );\n}\n\nlet nodeUniqueId = 0;\n\n@Injectable()\nexport class AjfFormBuilderService {\n private _availableNodeTypes: AjfFormBuilderNodeTypeEntry[] = [\n {\n label: 'Slide',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-slide'},\n nodeType: {node: AjfNodeType.AjfSlide},\n isSlide: true,\n },\n {\n label: 'Repeating slide',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-repeatingslide'},\n nodeType: {node: AjfNodeType.AjfRepeatingSlide},\n isSlide: true,\n },\n {\n label: 'String',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-string'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.String},\n },\n {\n label: 'Text',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-text'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Text},\n },\n {\n label: 'Number',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-number'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Number},\n },\n {\n label: 'Boolean',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-boolean'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Boolean},\n },\n {\n label: 'Single choice',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-singlechoice'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.SingleChoice},\n },\n {\n label: 'Multiple choice',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-multiplechoice'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.MultipleChoice},\n },\n {\n label: 'Formula',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-formula'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Formula},\n },\n {\n label: 'Date',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-date'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Date},\n },\n {\n label: 'Date input',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-dateinput'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.DateInput},\n },\n {\n label: 'Time',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-time'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Time},\n },\n {\n label: 'Table',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-table'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Table},\n },\n {\n label: 'Range',\n icon: {fontSet: 'ajf-icon', fontIcon: 'field-range'},\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Range},\n },\n ];\n /**\n * Available node types\n *\n * @readonly\n * @memberOf AjfFormBuilderService\n */\n get availableNodeTypes(): AjfFormBuilderNodeTypeEntry[] {\n return this._availableNodeTypes;\n }\n\n private _form: BehaviorSubject<AjfForm | null> = new BehaviorSubject<AjfForm | null>(null);\n private _formObs: Observable<AjfForm | null> = this._form as Observable<AjfForm | null>;\n\n /**\n * Current edited form stream\n *\n * @readonly\n * @memberOf AjfFormBuilderService\n */\n get form(): Observable<AjfForm | null> {\n return this._formObs;\n }\n\n private _attachmentsOrigins: Observable<AjfAttachmentsOrigin<any>[]> = obsOf([]);\n get attachmentsOrigins(): Observable<AjfAttachmentsOrigin<any>[]> {\n return this._attachmentsOrigins;\n }\n\n private _choicesOrigins: Observable<AjfChoicesOrigin<any>[]> = obsOf([]);\n get choicesOrigins(): Observable<AjfChoicesOrigin<any>[]> {\n return this._choicesOrigins;\n }\n\n private _stringIdentifier: Observable<AjfFormStringIdentifier[]> = obsOf([]);\n get stringIdentifier(): Observable<AjfFormStringIdentifier[]> {\n return this._stringIdentifier;\n }\n\n private _nodesWithoutChoiceOrigins: Observable<AjfSlide[]> = obsOf([]);\n private _nodes: Observable<AjfNode[]> = obsOf([]);\n get nodes(): Observable<AjfNode[]> {\n return this._nodes;\n }\n\n private _flatNodes: Observable<AjfNode[]> | undefined;\n get flatNodes(): Observable<AjfNode[]> | undefined {\n return this._flatNodes;\n }\n\n private _flatFields: Observable<AjfField[]> = obsOf([]);\n get flatFields(): Observable<AjfField[]> {\n return this._flatFields;\n }\n\n private _nodeEntriesTree: Observable<AjfFormBuilderNodeEntry[]> = obsOf([]);\n get nodeEntriesTree(): Observable<AjfFormBuilderNodeEntry[]> {\n return this._nodeEntriesTree;\n }\n\n /**\n * A list of the ids of the dropLists connected to the source list.\n */\n private _connectedDropLists: BehaviorSubject<string[]> = new BehaviorSubject<string[]>([]);\n get connectedDropLists(): BehaviorSubject<string[]> {\n return this._connectedDropLists;\n }\n\n private _editedNodeEntry: BehaviorSubject<AjfFormBuilderNodeEntry | null> =\n new BehaviorSubject<AjfFormBuilderNodeEntry | null>(null);\n private _editedNodeEntryObs: Observable<AjfFormBuilderNodeEntry | null> = this\n ._editedNodeEntry as Observable<AjfFormBuilderNodeEntry | null>;\n get editedNodeEntry(): Observable<AjfFormBuilderNodeEntry | null> {\n return this._editedNodeEntryObs;\n }\n\n private _editedCondition: BehaviorSubject<AjfCondition | null> =\n new BehaviorSubject<AjfCondition | null>(null);\n private _editedConditionObs: Observable<AjfCondition | null> = this\n ._editedCondition as Observable<AjfCondition | null>;\n get editedCondition(): Observable<AjfCondition | null> {\n return this._editedConditionObs;\n }\n\n private _editedChoicesOrigin: BehaviorSubject<AjfChoicesOrigin<any> | null> =\n new BehaviorSubject<AjfChoicesOrigin<any> | null>(null);\n private _editedChoicesOriginObs: Observable<AjfChoicesOrigin<any> | null> = this\n ._editedChoicesOrigin as Observable<AjfChoicesOrigin<any> | null>;\n get editedChoicesOrigin(): Observable<AjfChoicesOrigin<any> | null> {\n return this._editedChoicesOriginObs;\n }\n\n private _beforeNodesUpdate: EventEmitter<void> = new EventEmitter<void>();\n private _beforeNodesUpdateObs: Observable<void> = this._beforeNodesUpdate as Observable<void>;\n get beforeNodesUpdate(): Observable<void> {\n return this._beforeNodesUpdateObs;\n }\n private _afterNodeUpdate: EventEmitter<void> = new EventEmitter<void>();\n private _afterNodeUpdateObs: Observable<void> = this._afterNodeUpdate as Observable<void>;\n get afterNodeUpdate(): Observable<void> {\n return this._afterNodeUpdateObs;\n }\n\n private _nodesUpdates: Subject<AjfNodesOperation> = new Subject<AjfNodesOperation>();\n private _attachmentsOriginsUpdates: Subject<AjfAttachmentsOriginsOperation> =\n new Subject<AjfAttachmentsOriginsOperation>();\n private _choicesOriginsUpdates: Subject<AjfChoicesOriginsOperation> =\n new Subject<AjfChoicesOriginsOperation>();\n private _stringIdentifierUpdates: Subject<AjfFormStringIdentifierOperation> =\n new Subject<AjfFormStringIdentifierOperation>();\n\n private _saveNodeEntryEvent: EventEmitter<any> = new EventEmitter<any>();\n private _deleteNodeEntryEvent: EventEmitter<AjfFormBuilderNodeEntry> =\n new EventEmitter<AjfFormBuilderNodeEntry>();\n /**\n * Event fired when the position of a node in a tree changes.\n */\n private _moveNodeEntryEvent: EventEmitter<AjfFormBuilderMoveEvent> =\n new EventEmitter<AjfFormBuilderMoveEvent>();\n\n /**\n * Subscribes to the moveNodeEntryEvent event emitter;\n */\n private _moveNodeSub: Subscription = Subscription.EMPTY;\n\n constructor() {\n this._initChoicesOriginsStreams();\n this._initAttachmentsOriginsStreams();\n this._initStringIdentifierStreams();\n this._initNodesStreams();\n this._initFormStreams();\n this._initSaveNode();\n this._initMoveNode();\n this._initDeleteNode();\n }\n\n /**\n * Sets the current edited form\n *\n * @param form\n *\n * @memberOf AjfFormBuilderService\n */\n setForm(form: AjfForm | null): void {\n if (form !== this._form.getValue()) {\n this._form.next(form);\n }\n }\n\n editNodeEntry(nodeEntry: AjfFormBuilderNodeEntry): void {\n this._editedNodeEntry.next(nodeEntry);\n }\n\n editCondition(condition: AjfCondition): void {\n this._editedCondition.next(condition);\n }\n\n saveCurrentCondition(condition: string): void {\n let c = this._editedCondition.getValue();\n if (c == null) {\n return;\n }\n c.condition = condition;\n this._editedCondition.next(null);\n }\n\n cancelConditionEdit(): void {\n this._editedChoicesOrigin.next(null);\n }\n\n assignListId(node: AjfNode, empty: boolean = false): string {\n if (node.nodeType === AjfNodeType.AjfSlide || node.nodeType === AjfNodeType.AjfRepeatingSlide) {\n const listId = empty ? `empty_fields_list_${node.id}` : `fields_list_${node.id}`;\n if (this._connectedDropLists.value.indexOf(listId) == -1) {\n this._connectDropList(listId);\n }\n return listId;\n }\n return '';\n }\n\n insertNode(\n nodeType: AjfFormBuilderNodeTypeEntry,\n parent: AjfNode,\n parentNode: number,\n inContent = false,\n insertInIndex = 0,\n ): void {\n let node: AjfNode | AjfField;\n const id = ++nodeUniqueId;\n const isFieldNode = nodeType.nodeType?.field != null;\n if (isFieldNode) {\n node = createField({\n id,\n nodeType: AjfNodeType.AjfField,\n fieldType: nodeType.nodeType.field!,\n parent: parent.id,\n parentNode,\n name: '',\n });\n } else {\n node = createContainerNode({\n id,\n nodeType: nodeType.nodeType.node,\n parent: 0,\n parentNode,\n name: '',\n nodes: [],\n });\n }\n this._beforeNodesUpdate.emit();\n this._nodesUpdates.next((nodes: AjfNode[]): AjfNode[] => {\n const cn =\n isContainerNode(parent) && inContent\n ? <AjfContainerNode>parent\n : (getNodeContainer({nodes}, parent) as AjfContainerNode);\n if (!isFieldNode) {\n let newNodes = nodes.slice(0);\n newNodes.splice(insertInIndex, 0, node);\n newNodes = this._updateNodesList(0, newNodes);\n return newNodes;\n } else {\n let newNodes = cn.nodes.slice(0);\n newNodes.splice(insertInIndex, 0, node);\n newNodes = this._updateNodesList(cn.id, newNodes);\n cn.nodes = newNodes;\n }\n return nodes;\n });\n }\n\n saveNodeEntry(properties: any): void {\n this._saveNodeEntryEvent.emit(properties);\n }\n\n cancelNodeEntryEdit(): void {\n this._editedNodeEntry.next(null);\n }\n\n deleteNodeEntry(nodeEntry: AjfFormBuilderNodeEntry): void {\n this._deleteNodeEntryEvent.next(nodeEntry);\n }\n\n /**\n * Triggers the moveNode event when a node is moved in the formbuilder.\n * @param nodeEntry The node to be moved.\n */\n moveNodeEntry(nodeEntry: AjfFormBuilderNodeEntry, from: number, to: number): void {\n const moveEvent: AjfFormBuilderMoveEvent = {nodeEntry: nodeEntry, fromIndex: from, toIndex: to};\n this._moveNodeEntryEvent.next(moveEvent);\n }\n\n getCurrentForm(): Observable<AjfForm> {\n return combineLatest([\n this.form,\n this._nodesWithoutChoiceOrigins,\n this.attachmentsOrigins,\n this.choicesOrigins,\n this.stringIdentifier,\n ]).pipe(\n filter(([form]) => form != null),\n map(([form, nodes, attachmentsOrigins, choicesOrigins, stringIdentifier]) => {\n return createForm({\n choicesOrigins: (choicesOrigins as AjfChoicesOrigin<any>[]).slice(0),\n attachmentsOrigins: (attachmentsOrigins as AjfAttachmentsOrigin<any>[]).slice(0),\n stringIdentifier: ((stringIdentifier || []) as AjfFormStringIdentifier[]).slice(0),\n nodes: (nodes as AjfSlide[]).slice(0),\n supplementaryInformations: (form as AjfForm).supplementaryInformations,\n });\n }),\n );\n }\n\n editChoicesOrigin(choicesOrigin: AjfChoicesOrigin<any>): void {\n this._editedChoicesOrigin.next(choicesOrigin);\n }\n\n createChoicesOrigin(): void {\n this._editedChoicesOrigin.next(createChoicesFixedOrigin<any>({name: ''}));\n }\n\n cancelChoicesOriginEdit(): void {\n this._editedChoicesOrigin.next(null);\n }\n\n saveChoicesOrigin(params: {label: string; name: string; choices: any[]}): void {\n const choicesOrigin = this._editedChoicesOrigin.getValue();\n if (choicesOrigin != null) {\n choicesOrigin.label = params.label;\n choicesOrigin.name = params.name;\n if (isChoicesFixedOrigin(choicesOrigin)) {\n choicesOrigin.choices = params.choices;\n }\n this._choicesOriginsUpdates.next(choicesOrigins => {\n const idx = choicesOrigins.indexOf(choicesOrigin);\n if (idx > -1) {\n choicesOrigins = [\n ...choicesOrigins.slice(0, idx),\n choicesOrigin,\n ...choicesOrigins.slice(idx + 1),\n ];\n } else {\n choicesOrigins = [...choicesOrigins, choicesOrigin];\n }\n return choicesOrigins;\n });\n }\n this._editedChoicesOrigin.next(null);\n }\n\n saveStringIdentifier(identifier: AjfFormStringIdentifier[]): void {\n this._stringIdentifierUpdates.next(() => [...identifier]);\n }\n\n private _buildFormBuilderNodesTree(nodes: AjfNode[]): (AjfFormBuilderNode | null)[] {\n this._updateNodesList(0, nodes);\n const rootNodes = nodes.filter(\n n => n.nodeType == AjfNodeType.AjfSlide || n.nodeType == AjfNodeType.AjfRepeatingSlide,\n );\n if (rootNodes.length === 0) {\n return [null];\n }\n const rootNode = rootNodes[0];\n if (isSlidesNode(rootNode)) {\n const tree: AjfFormBuilderNode[] = [];\n tree.push(<AjfFormBuilderNodeEntry>{\n node: rootNode,\n container: null,\n children: buildFormBuilderNodesSubtree(nodes, rootNode),\n content: buildFormBuilderNodesContent(nodes, rootNode),\n });\n return tree;\n }\n throw new Error('Invalid form definition');\n }\n\n /**\n * Adds the id of a dropList to be connected with the FormBuilder source list.\n * @param listId The id of the list to connect.\n */\n private _connectDropList(listId: string) {\n let connectedLists = this._connectedDropLists.value.slice(0);\n this._connectedDropLists.next([...connectedLists, listId]);\n }\n\n private _findMaxNodeId(nodes: AjfNode[], _curMaxId = 0): number {\n let maxId = 0;\n nodes.forEach(n => {\n maxId = Math.max(maxId, n.id);\n if (isContainerNode(n)) {\n maxId = Math.max(maxId, this._findMaxNodeId((<AjfContainerNode>n).nodes));\n }\n });\n return maxId;\n }\n\n private _initFormStreams(): void {\n this._form.subscribe((form: AjfForm | null) => {\n nodeUniqueId = 0;\n if (form != null && form.nodes != null && form.nodes.length > 0) {\n nodeUniqueId = this._findMaxNodeId(form.nodes);\n }\n this._nodesUpdates.next((_nodes: AjfNode[]): AjfNode[] => {\n return form != null && form.nodes != null ? form.nodes.slice(0) : [];\n });\n this._attachmentsOriginsUpdates.next(\n (_attachmentsOrigins: AjfAttachmentsOrigin<any>[]): AjfAttachmentsOrigin<any>[] => {\n return form != null && form.attachmentsOrigins != null\n ? form.attachmentsOrigins.slice(0)\n : [];\n },\n );\n this._choicesOriginsUpdates.next(\n (_choicesOrigins: AjfChoicesOrigin<any>[]): AjfChoicesOrigin<any>[] => {\n return form != null && form.choicesOrigins != null ? form.choicesOrigins.slice(0) : [];\n },\n );\n this._stringIdentifierUpdates.next(\n (_: AjfFormStringIdentifier[]): AjfFormStringIdentifier[] => {\n return form != null && form.stringIdentifier != null\n ? form.stringIdentifier.slice(0)\n : [];\n },\n );\n });\n }\n\n private _initChoicesOriginsStreams(): void {\n this._choicesOrigins = (<Observable<AjfChoicesOriginsOperation>>(\n this._choicesOriginsUpdates\n )).pipe(\n scan((choicesOrigins: AjfChoicesOrigin<any>[], op: AjfChoicesOriginsOperation) => {\n return op(choicesOrigins);\n }, []),\n publishReplay(1),\n refCount(),\n );\n }\n\n private _initAttachmentsOriginsStreams(): void {\n this._attachmentsOrigins = this._attachmentsOriginsUpdates.pipe(\n scan(\n (attachmentsOrigins: AjfAttachmentsOrigin<any>[], op: AjfAttachmentsOriginsOperation) => {\n return op(attachmentsOrigins);\n },\n [],\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n private _initStringIdentifierStreams(): void {\n this._stringIdentifier = this._stringIdentifierUpdates.pipe(\n scan((stringIdentifier: AjfFormStringIdentifier[], op: AjfFormStringIdentifierOperation) => {\n return op(stringIdentifier);\n }, []),\n publishReplay(1),\n refCount(),\n );\n }\n\n private _initNodesStreams(): void {\n this._nodes = (<Observable<AjfNodesOperation>>this._nodesUpdates).pipe(\n scan((nodes: AjfNode[], op: AjfNodesOperation) => {\n return op(nodes);\n }, []),\n publishReplay(1),\n refCount(),\n );\n\n this._nodesWithoutChoiceOrigins = (this._nodes as Observable<AjfSlide[]>).pipe(\n map(slides =>\n slides.map(slide => {\n slide.nodes = (slide.nodes as AjfField[]).map((node: AjfField) => {\n if (isFieldWithChoices(node)) {\n const fwc = deepCopy(node);\n if (fwc && fwc.choices) {\n delete fwc.choices;\n }\n if (fwc && fwc.choicesOrigin) {\n delete fwc.choicesOrigin;\n }\n return fwc;\n }\n return node;\n });\n return slide;\n }),\n ),\n );\n\n this._flatNodes = this._nodes.pipe(\n map((nodes: AjfNode[]) => flattenNodes(nodes)),\n publishReplay(1),\n refCount(),\n );\n\n this._flatFields = this._flatNodes.pipe(\n map((nodes: AjfNode[]) => <AjfField[]>nodes.filter(n => !isContainerNode(n))),\n publishReplay(1),\n refCount(),\n );\n\n this._nodeEntriesTree = this._nodes.pipe(\n map(nodes => <AjfFormBuilderNodeEntry[]>this._buildFormBuilderNodesTree(nodes)),\n publishReplay(1),\n refCount(),\n );\n }\n\n private _initSaveNode(): void {\n this._saveNodeEntryEvent\n .pipe(\n withLatestFrom(this.editedNodeEntry, this.choicesOrigins, this.attachmentsOrigins),\n filter(([_, nodeEntry]) => nodeEntry != null),\n map(([properties, ne]) => {\n this._beforeNodesUpdate.emit();\n const nodeEntry = ne as AjfFormBuilderNodeEntry;\n const origNode = nodeEntry.node;\n const node = deepCopy(origNode);\n node.id = nodeEntry.node.id;\n node.name = properties.name;\n node.label = properties.label;\n node.visibility =\n properties.visibility != null\n ? createCondition({condition: properties.visibility})\n : null;\n\n const oldConditionalBranches = node.conditionalBranches.length;\n node.conditionalBranches =\n properties.conditionalBranches != null\n ? properties.conditionalBranches.map((condition: string) =>\n createCondition({condition}),\n )\n : [alwaysCondition()];\n const newConditionalBranches = node.conditionalBranches.length;\n\n if (isRepeatingContainerNode(node)) {\n const repNode = <AjfRepeatingContainerNode>node;\n repNode.formulaReps =\n properties.formulaReps != null\n ? createFormula({formula: properties.formulaReps})\n : undefined;\n repNode.minReps = properties.minReps;\n repNode.maxReps = properties.maxReps;\n }\n\n if (isField(node)) {\n const field = node as AjfField;\n field.description = properties.description;\n field.defaultValue = properties.defaultValue;\n field.formula =\n properties.formula != null ? createFormula({formula: properties.formula}) : undefined;\n const forceValue = properties.value;\n const notEmpty = properties.notEmpty;\n const validationConditions = properties.validationConditions;\n let minValue: number | null = parseInt(properties.minValue, 10);\n let maxValue: number | null = parseInt(properties.maxValue, 10);\n let minDigits: number | null = parseInt(properties.minDigits, 10);\n let maxDigits: number | null = parseInt(properties.maxDigits, 10);\n if (isNaN(minValue)) {\n minValue = null;\n }\n if (isNaN(maxValue)) {\n maxValue = null;\n }\n if (isNaN(minDigits)) {\n minDigits = null;\n }\n if (isNaN(maxDigits)) {\n maxDigits = null;\n }\n if (\n forceValue != null ||\n notEmpty != null ||\n (validationConditions != null && validationConditions.length > 0) ||\n minValue != null ||\n maxValue != null ||\n minDigits != null ||\n maxDigits != null\n ) {\n const validation = field.validation || createValidationGroup({});\n validation.forceValue = forceValue;\n validation.notEmpty = notEmpty ? notEmptyValidation() : undefined;\n validation.minValue = minValue != null ? minValidation(minValue) : undefined;\n validation.maxValue = maxValue != null ? maxValidation(maxValue) : undefined;\n validation.minDigits = minDigits != null ? minDigitsValidation(minDigits) : undefined;\n validation.maxDigits = maxDigits != null ? maxDigitsValidation(maxDigits) : undefined;\n validation.conditions = (validationConditions || []).map(\n (c: {condition: string; errorMessage: string}) =>\n createValidation({\n condition: c.condition,\n errorMessage: c.errorMessage,\n }),\n );\n field.validation = validation;\n } else {\n field.validation = undefined;\n }\n const notEmptyWarn = properties.notEmptyWarning;\n const warningConditions = properties.warningConditions;\n if (\n notEmptyWarn != null ||\n (warningConditions != null && warningConditions.length > 0)\n ) {\n const warning = field.warning || createWarningGroup({});\n warning.notEmpty = notEmptyWarn ? notEmptyWarning() : undefined;\n warning.conditions = (warningConditions || []).map(\n (w: {condition: string; warningMessage: string}) =>\n createWarning({\n condition: w.condition,\n warningMessage: w.warningMessage,\n }),\n );\n field.warning = warning;\n } else {\n field.warning = undefined;\n }\n field.nextSlideCondition =\n properties.nextSlideCondition != null\n ? createCondition({condition: properties.nextSlideCondition})\n : undefined;\n field.size = properties.size;\n field.defaultValue = properties.defaultValue;\n\n if (isFieldWithChoices(field)) {\n const fwc = <AjfFieldWithChoices<any>>field;\n (fwc as any).choicesOriginRef = properties.choicesOriginRef;\n fwc.forceExpanded = properties.forceExpanded;\n fwc.forceNarrow = properties.forceNarrow;\n fwc.triggerConditions = (properties.triggerConditions || []).map((t: string) =>\n createCondition({condition: t}),\n );\n }\n\n if (isRangeField(field)) {\n const rf = field as AjfRangeField;\n rf.start = properties.start;\n rf.end = properties.end;\n rf.step = properties.step;\n }\n }\n\n this._editedNodeEntry.next(null);\n\n return (nodes: AjfNode[]): AjfNode[] => {\n let cn = getNodeContainer({nodes}, origNode);\n if (cn != null) {\n // TODO: @trik check this, was always true?\n // if (cn instanceof AjfNode) {\n const replaceNodes = cn.nodes === nodes;\n const idx = cn.nodes.indexOf(origNode);\n let newNodes = cn.nodes.slice(0, idx);\n newNodes.push(node);\n newNodes = newNodes.concat(cn.nodes.slice(idx + 1));\n cn.nodes = newNodes;\n if (replaceNodes) {\n nodes = newNodes;\n } else {\n nodes = nodes.slice(0);\n }\n // } else {\n // const idx = nodes.indexOf(origNode);\n // nodes = nodes.slice(0, idx).concat([node]).concat(nodes.slice(idx + 1));\n // }\n if (newConditionalBranches < oldConditionalBranches) {\n for (let i = newConditionalBranches; i < oldConditionalBranches; i++) {\n nodes = deleteNodeSubtree(nodes, node, i);\n }\n }\n }\n return nodes;\n };\n }),\n )\n .subscribe(this._nodesUpdates);\n }\n\n private _initDeleteNode(): void {\n (<Observable<AjfFormBuilderNodeEntry>>this._deleteNodeEntryEvent)\n .pipe(\n map((nodeEntry: AjfFormBuilderNodeEntry) => {\n this._beforeNodesUpdate.emit();\n return (nodes: AjfNode[]): AjfNode[] => {\n const node = nodeEntry.node;\n let cn = getNodeContainer({nodes}, node);\n if (cn != null) {\n const replaceNodes = cn.nodes === nodes;\n const idx = cn.nodes.indexOf(node);\n let newNodes = cn.nodes.slice(0, idx);\n newNodes = newNodes.concat(cn.nodes.slice(idx + 1));\n cn.nodes = newNodes;\n if (replaceNodes) {\n nodes = newNodes;\n } else {\n nodes = nodes.slice(0);\n }\n }\n return nodes;\n };\n }),\n )\n .subscribe(this._nodesUpdates);\n }\n\n /**\n * Initializes the subscription to the moveNodeEntryEvent.\n */\n private _initMoveNode(): void {\n this._moveNodeSub.unsubscribe();\n this._moveNodeSub = this._moveNodeEntryEvent\n .pipe(\n map((moveEvent: AjfFormBuilderMoveEvent) => {\n this._beforeNodesUpdate.emit();\n return (nodes: AjfNode[]): AjfNode[] => {\n const nodeEntry = moveEvent.nodeEntry as AjfFormBuilderNodeEntry;\n const node = nodeEntry.node;\n let cn = getNodeContainer({nodes}, node) as AjfContainerNode;\n let newNodes: AjfNode[] = nodes;\n if (cn != null) {\n const replaceNodes = cn.nodes === nodes;\n newNodes = cn.nodes;\n moveItemInArray(newNodes, moveEvent.fromIndex, moveEvent.toIndex);\n newNodes = this._updateNodesList(cn.id, newNodes);\n cn.nodes = newNodes;\n if (replaceNodes) {\n nodes = newNodes;\n } else {\n nodes = nodes.slice(0);\n }\n }\n return nodes;\n };\n }),\n )\n .subscribe(this._nodesUpdates);\n }\n\n /**\n * Updates the \"id\" and \"parent\" fields of a modified or rearranged list of nodes.\n * @param containerId The id of the parent container of the list.\n * @param nodesList The list of nodes to be updated.\n */\n private _updateNodesList(containerId: number, nodesList: AjfNode[]): AjfNode[] {\n if (!nodesList.length) {\n return [];\n }\n const contId = containerId != undefined ? containerId : 0;\n for (let idx = 0; idx < nodesList.length; idx++) {\n let currentNode = nodesList[idx];\n currentNode.id = contId * 1000 + idx + 1;\n currentNode.parent = idx == 0 ? contId : contId * 1000 + idx;\n if (\n currentNode.nodeType == AjfNodeType.AjfSlide ||\n currentNode.nodeType == AjfNodeType.AjfRepeatingSlide\n ) {\n const currentSlide = currentNode as AjfSlide;\n if (currentSlide.nodes) {\n this._updateNodesList(currentSlide.id, currentSlide.nodes);\n }\n }\n }\n return nodesList;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfChoicesOrigin} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {AjfFbChoicesOriginEditor} from './choices-origin-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-choices-origin-editor-dialog',\n templateUrl: 'choices-origin-editor-dialog.html',\n styleUrls: ['choices-origin-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbChoicesOriginEditorDialog {\n @ViewChild(AjfFbChoicesOriginEditor, {static: false}) editor!: AjfFbChoicesOriginEditor;\n\n private _choicesOrigin: Observable<AjfChoicesOrigin<any>>;\n get choicesOrigin(): Observable<AjfChoicesOrigin<any>> {\n return this._choicesOrigin;\n }\n\n constructor(private _service: AjfFormBuilderService) {\n this._choicesOrigin = this._service.editedChoicesOrigin.pipe(\n filter(c => c != null),\n map(c => c!),\n );\n }\n\n saveChoicesOrigin(): void {\n this._service.saveChoicesOrigin({\n label: this.editor.label,\n name: this.editor.name,\n choices: this.editor.choicesArr,\n });\n }\n\n cancelChoicesOriginEdit(): void {\n this._service.cancelChoicesOriginEdit();\n }\n}\n","<h3 matDialogTitle>{{'Edit choices origin'|transloco}}</h3>\n<mat-dialog-content>\n <ajf-fb-choices-origin-editor\n *ngIf=\"choicesOrigin|async as co\"\n [choicesOrigin]=\"co!\"\n ></ajf-fb-choices-origin-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveChoicesOrigin()\">{{'Save'|transloco}}</button>\n <button mat-button (click)=\"cancelChoicesOriginEdit()\">\n {{'Close'|transloco}}\n </button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField, AjfFieldType, AjfValidationService} from '@ajf/core/forms';\nimport {AjfExpressionUtils} from '@ajf/core/models';\nimport {AjfMonacoEditor} from '@ajf/material/monaco-editor';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\ndeclare var monaco: any;\n\n@Component({\n selector: 'ajf-condition-editor',\n templateUrl: 'fb-condition-editor.html',\n styleUrls: ['fb-condition-editor.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFbConditionEditor {\n @ViewChild(AjfMonacoEditor, {static: true}) monacoEditor!: AjfMonacoEditor;\n\n private _fields: AjfField[] = [];\n get fields(): AjfField[] {\n return this._fields;\n }\n @Input()\n set fields(fields: AjfField[]) {\n this._fields = fields;\n this._updateVariables();\n }\n @Input() condition: string = '';\n\n editedValue: string = '';\n\n constructor(_: AjfValidationService) {}\n\n insertVariable(variable: string): void {\n if (this.monacoEditor != null && this.monacoEditor.editor != null) {\n const editor = this.monacoEditor.editor;\n let value: string[] = editor.getValue().split('\\n');\n let position: {column: number; lineNumber: number} = editor.getPosition();\n const ln = position.lineNumber - 1;\n let line = value[ln];\n let col = position.column - 1;\n line = line.substring(0, col) + variable + line.substring(col);\n value[ln] = line;\n position.column += variable.length;\n this.monacoEditor.value = value.join('\\n');\n editor.setPosition(position);\n editor.focus();\n this.editedValue = editor.getValue();\n }\n }\n\n onEditorInit(): void {\n monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: false,\n noSyntaxValidation: false,\n });\n\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES2015,\n allowNonTsExtensions: true,\n allowJs: true,\n module: monaco.languages.typescript.ModuleKind.None,\n });\n\n try {\n monaco.languages.typescript.javascriptDefaults.addExtraLib(\n '',\n 'condition-editor-variables.d.ts',\n );\n } catch (e) {\n monaco.languages.typescript.javascriptDefaults._extraLibs['condition-editor-variables.d.ts'] =\n '';\n }\n\n try {\n monaco.languages.typescript.javascriptDefaults.addExtraLib(\n '',\n 'condition-editor-functions.d.ts',\n );\n } catch (e) {\n monaco.languages.typescript.javascriptDefaults._extraLibs['condition-editor-functions.d.ts'] =\n '';\n }\n\n this._updateVariables();\n this._updateFunctions();\n }\n\n private _updateVariables(): void {\n if (this._fields == null) {\n return;\n }\n try {\n monaco.languages.typescript.javascriptDefaults._extraLibs['condition-editor-variables.d.ts'] =\n this._fields\n .map((field: AjfField) => {\n return `declare const ${field.name}: ${this._fieldVarType(field.fieldType)};`;\n })\n .join('\\n');\n } catch (e) {}\n }\n\n private _updateFunctions(): void {\n try {\n monaco.languages.typescript.javascriptDefaults._extraLibs['condition-editor-functions.d.ts'] =\n AjfExpressionUtils.UTIL_FUNCTIONS;\n } catch (e) {}\n }\n\n private _fieldVarType(fieldType: AjfFieldType): string | null {\n switch (fieldType) {\n case AjfFieldType.Boolean:\n return 'boolean';\n case AjfFieldType.Date:\n case AjfFieldType.DateInput:\n case AjfFieldType.Time:\n return 'Date';\n case AjfFieldType.Empty:\n return 'void';\n case AjfFieldType.Formula:\n return 'number';\n case AjfFieldType.MultipleChoice:\n case AjfFieldType.SingleChoice:\n return 'any';\n case AjfFieldType.Number:\n return 'number';\n case AjfFieldType.Table:\n return 'Array';\n case AjfFieldType.String:\n case AjfFieldType.Text:\n return 'string';\n }\n return null;\n }\n}\n","<div class=\"ajf-editor\">\n <ajf-monaco-editor\n (init)=\"onEditorInit()\"\n (valueChange)=\"editedValue = $event\"\n [value]=\"condition\" language=\"javascript\"></ajf-monaco-editor>\n</div>\n<div class=\"ajf-editor-panel\">\n <ng-container *ngIf=\"fields as curFields\">\n <mat-nav-list dense *ngIf=\"curFields!.length > 0\">\n <a mat-list-item\n (click)=\"insertVariable(field.name)\"\n [matTooltip]=\"field.label\"\n *ngFor=\"let field of curFields!\">\n <ajf-node-icon [node]=\"field\"></ajf-node-icon>\n {{ field.name }}\n </a>\n </mat-nav-list>\n </ng-container>\n</div>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-condition-editor-dialog',\n templateUrl: 'condition-editor-dialog.html',\n styleUrls: ['condition-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbConditionEditorDialog {\n @ViewChild(AjfFbConditionEditor, {static: false}) editor!: AjfFbConditionEditor;\n\n private _fields: Observable<AjfField[]>;\n get fields(): Observable<AjfField[]> {\n return this._fields;\n }\n\n condition: string = '';\n\n constructor(\n service: AjfFormBuilderService,\n public dialogRef: MatDialogRef<AjfFbConditionEditorDialog>,\n ) {\n this._fields = service.flatFields.pipe(\n map((fields: AjfField[]) => fields.sort((f1, f2) => f1.name.localeCompare(f2.name))),\n );\n }\n\n saveCondition(): void {\n if (this.editor == null) {\n return;\n }\n const newValue = this.editor.editedValue;\n this.dialogRef.close(newValue);\n }\n}\n","<h3 matDialogTitle>{{'Edit condition'|transloco}}</h3>\n<mat-dialog-content>\n <ajf-condition-editor\n *ngIf=\"fields|async as curFields\"\n [fields]=\"curFields!\"\n [condition]=\"condition\"\n ></ajf-condition-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveCondition()\">{{'Save'|transloco}}</button>\n <button mat-button matDialogClose>{{'Close'|transloco}}</button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {CdkDrag, CdkDragDrop} from '@angular/cdk/drag-drop';\nimport {\n AjfFormBuilderEmptySlot,\n AjfFormBuilderNode,\n AjfFormBuilderNodeEntry,\n AjfFormBuilderNodeTypeEntry,\n AjfFormBuilderService,\n} from './form-builder-service';\n\n/**\n * Triggers when a field or slide node is moved or inserted by drag&dropping in the formbuilder.\n * @param event The drop event.\n * @param fbService The AjfFormBuilderService.\n * @param nodeEntry The current nodeEntry, if present.\n * @param content True if the current nodeEntry contains other nodeEntries.\n */\nexport function onDropProcess(\n event: CdkDragDrop<AjfFormBuilderNodeEntry> | CdkDragDrop<AjfFormBuilderNodeTypeEntry>,\n fbService: AjfFormBuilderService,\n nodeEntry: AjfFormBuilderNode | null,\n content = false,\n): void {\n const itemData = event.item.data;\n const containerId = event.container.id;\n if (!itemData.node) {\n if (nodeEntry == null && containerId === 'slides-list') {\n fbService.insertNode(itemData, null as any, 0, content, event.currentIndex);\n return;\n }\n const emptySlot = content\n ? {parent: (<AjfFormBuilderNodeEntry>nodeEntry).node, parentNode: 0}\n : <AjfFormBuilderEmptySlot>nodeEntry;\n fbService.insertNode(\n itemData as AjfFormBuilderNodeTypeEntry,\n emptySlot.parent,\n emptySlot.parentNode,\n content,\n event.currentIndex,\n );\n return;\n }\n const previousIndex = event.previousIndex;\n const currentIndex = event.currentIndex;\n fbService.moveNodeEntry(<AjfFormBuilderNodeEntry>event.item.data, previousIndex, currentIndex);\n}\n\n/**\n * Disables the drag&drop of Slide items.\n * @param item The dragged item.\n */\nexport function disableSlideDropPredicate(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return !item.data.isSlide;\n}\n\n/**\n * Disables the drag&drop of Field items.\n * @param item The dragged item.\n */\nexport function disableFieldDropPredicate(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n if (!item.data.isSlide) {\n return false;\n }\n return true;\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfFormStringIdentifier} from '@ajf/core/forms';\nimport {COMMA, ENTER} from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';\nimport {MatChipInputEvent} from '@angular/material/chips';\nimport {MatTableDataSource} from '@angular/material/table';\nimport {Observable, Subscription} from 'rxjs';\nimport {map, shareReplay} from 'rxjs/operators';\n\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-string-identifier-dialog',\n templateUrl: 'string-identifier-dialog.html',\n styleUrls: ['./string-identifier-dialog.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFbStringIdentifierDialogComponent implements OnDestroy {\n readonly dataSource: MatTableDataSource<AjfFormStringIdentifier> =\n new MatTableDataSource<AjfFormStringIdentifier>();\n readonly displayedColumns = ['label', 'value', 'show', 'delete'];\n readonly fields$: Observable<string[]>;\n readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n\n private _stringIdentifierSub: Subscription = Subscription.EMPTY;\n\n constructor(private _service: AjfFormBuilderService, private _cdr: ChangeDetectorRef) {\n this._stringIdentifierSub = _service.stringIdentifier.subscribe(identifier => {\n this.dataSource.data = [...identifier];\n });\n this.fields$ = _service.flatFields.pipe(\n map(fields =>\n fields\n .sort((f1, f2) => f1.name.localeCompare(f2.name))\n .map(f => f.name)\n .filter(f => f.length > 0),\n ),\n shareReplay(1),\n );\n }\n\n addRow(): void {\n this.dataSource.data = [...this.dataSource.data, {label: '', value: [], show: undefined}];\n }\n\n deleteRow(rowIdx: number): void {\n this.dataSource.data = [\n ...this.dataSource.data.slice(0, rowIdx),\n ...this.dataSource.data.slice(rowIdx + 1),\n ];\n }\n\n addValue(\n row: AjfFormStringIdentifier,\n evt: MatChipInputEvent,\n valueInput: HTMLInputElement,\n ): void {\n if (evt.value.length === 0) {\n return;\n }\n row.value = [...row.value, evt.value];\n valueInput.value = '';\n this._cdr.markForCheck();\n }\n\n removeValue(row: AjfFormStringIdentifier, value: string): void {\n const idx = row.value.indexOf(value);\n if (idx > -1) {\n row.value = [...row.value.slice(0, idx), ...row.value.slice(idx + 1)];\n this._cdr.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this._stringIdentifierSub.unsubscribe();\n }\n\n saveStringIdentifier(): void {\n this._service.saveStringIdentifier(this.dataSource.data);\n }\n\n selected(row: AjfFormStringIdentifier, evt: MatAutocompleteSelectedEvent): void {\n row.value = [...row.value, evt.option.value];\n this._cdr.markForCheck();\n }\n}\n","<h3 matDialogTitle>{{'Edit identifier'|transloco}}</h3>\n<mat-dialog-content>\n <button (click)=\"addRow()\" mat-button>\n <mat-icon>add</mat-icon>\n <span>{{'Add value'|transloco}}</span>\n </button>\n <mat-table [dataSource]=\"dataSource\">\n <ng-container matColumnDef=\"label\">\n <mat-header-cell *matHeaderCellDef>{{'Label'|transloco}}</mat-header-cell>\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-form-field>\n <input\n matInput\n [placeholder]=\"'Label'|transloco\"\n autofocus\n [(ngModel)]=\"row.label\"\n />\n </mat-form-field>\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef>{{'Value'|transloco}}</mat-header-cell>\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-form-field>\n <mat-chip-list #chipList>\n <mat-chip\n *ngFor=\"let field of row.value\"\n (removed)=\"removeValue(row, field)\"\n >\n {{ field }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n </mat-chip-list>\n <input\n #valueInput\n [ngModel]=\"row.value\"\n [matAutocomplete]=\"valueAc\"\n [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValue(row, $event, valueInput)\"\n [placeholder]=\"'Value'|transloco\"\n />\n <mat-autocomplete\n #valueAc=\"matAutocomplete\"\n (optionSelected)=\"selected(row, $event)\"\n >\n <mat-option *ngFor=\"let field of fields$ | async\" [value]=\"field\"\n >{{field}}</mat-option\n >\n </mat-autocomplete>\n </mat-form-field>\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"show\">\n <mat-header-cell *matHeaderCellDef>{{'Show'|transloco}}</mat-header-cell>\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-form-field>\n <mat-select matNativeControl [(ngModel)]=\"row.show\">\n <mat-option value=\"all\">{{'All'|transloco}}</mat-option>\n <mat-option value=\"first\">{{'First'|transloco}}</mat-option>\n <mat-option value=\"last\">{{'Last'|transloco}}</mat-option>\n </mat-select>\n </mat-form-field>\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef\n >{{'Delete'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-icon (click)=\"deleteRow(idx)\">delete</mat-icon>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button matDialogClose (click)=\"saveStringIdentifier()\">\n {{'Save'|transloco}}\n </button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfFormBuilderNodeTypeEntry} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-node-type-entry',\n templateUrl: 'node-type-entry.html',\n styleUrls: ['node-type-entry.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbNodeTypeEntry {\n private _nodeType: AjfFormBuilderNodeTypeEntry | undefined;\n get nodeType(): AjfFormBuilderNodeTypeEntry | undefined {\n return this._nodeType;\n }\n @Input()\n set nodeType(nodeType: AjfFormBuilderNodeTypeEntry | undefined) {\n this._nodeType = nodeType;\n this._cdr.markForCheck();\n }\n\n constructor(private _cdr: ChangeDetectorRef) {}\n}\n","<ng-container *ngIf=\"nodeType\">\n <mat-icon\n [fontSet]=\"nodeType.icon.fontSet\" [fontIcon]=\"nodeType.icon.fontIcon\"></mat-icon>\n {{ nodeType.label }}\n</ng-container>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-validation-condition-editor-dialog',\n templateUrl: 'validation-condition-editor-dialog.html',\n styleUrls: ['validation-condition-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbValidationConditionEditorDialog {\n @ViewChild(AjfFbConditionEditor, {static: false}) editor!: AjfFbConditionEditor;\n\n private _fields: Observable<AjfField[]>;\n get fields(): Observable<AjfField[]> {\n return this._fields;\n }\n\n condition: string = '';\n errorMessage: string = '';\n\n constructor(\n service: AjfFormBuilderService,\n public dialogRef: MatDialogRef<AjfFbValidationConditionEditorDialog>,\n ) {\n this._fields = service.flatFields.pipe(\n map((fields: AjfField[]) => fields.sort((f1, f2) => f1.name.localeCompare(f2.name))),\n );\n }\n\n saveCondition(): void {\n if (this.editor == null) {\n return;\n }\n const newValue = this.editor.editedValue;\n this.dialogRef.close({condition: newValue, errorMessage: this.errorMessage});\n }\n}\n","<h3 matDialogTitle>{{'Edit condition'|transloco}}</h3>\n<mat-dialog-content>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"errorMessage\"\n [placeholder]=\"'Error message'|transloco\"\n />\n </mat-form-field>\n <ajf-condition-editor\n *ngIf=\"fields|async as curFields\"\n [fields]=\"curFields!\"\n [condition]=\"condition\"\n ></ajf-condition-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveCondition()\">{{'Save'|transloco}}</button>\n <button mat-button matDialogClose>{{'Close'|transloco}}</button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-warning-condition-editor-dialog',\n templateUrl: 'warning-condition-editor-dialog.html',\n styleUrls: ['warning-condition-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbWarningConditionEditorDialog {\n @ViewChild(AjfFbConditionEditor, {static: false}) editor!: AjfFbConditionEditor;\n\n private _fields: Observable<AjfField[]>;\n get fields(): Observable<AjfField[]> {\n return this._fields;\n }\n\n condition: string = '';\n warningMessage: string = '';\n\n constructor(\n service: AjfFormBuilderService,\n public dialogRef: MatDialogRef<AjfFbWarningConditionEditorDialog>,\n ) {\n this._fields = service.flatFields.pipe(\n map((fields: AjfField[]) => fields.sort((f1, f2) => f1.name.localeCompare(f2.name))),\n );\n }\n\n saveCondition(): void {\n if (this.editor == null) {\n return;\n }\n const newValue = this.editor.editedValue;\n this.dialogRef.close({condition: newValue, warningMessage: this.warningMessage});\n }\n}\n","<h3 matDialogTitle>{{'Edit condition'|transloco}}</h3>\n<mat-dialog-content>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"warningMessage\"\n [placeholder]=\"'Warning message' | transloco\"\n />\n </mat-form-field>\n <ajf-condition-editor\n *ngIf=\"fields|async as curFields\"\n [fields]=\"curFields!\"\n [condition]=\"condition\"\n ></ajf-condition-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveCondition()\">{{'Save'|transloco}}</button>\n <button mat-button matDialogClose>{{'Close'|transloco}}</button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfChoicesOrigin,\n AjfField,\n AjfFieldWithChoices,\n AjfNode,\n AjfNumberField,\n AjfRangeField,\n AjfRepeatingContainerNode,\n isField,\n isFieldWithChoices,\n isNumberField,\n isRangeField,\n isRepeatingContainerNode,\n} from '@ajf/core/forms';\nimport {AjfCondition, alwaysCondition, neverCondition} from '@ajf/core/models';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, ValidatorFn, Validators} from '@angular/forms';\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\nimport {Observable, Subscription} from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n publishReplay,\n refCount,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {AjfFbConditionEditorDialog} from './condition-editor-dialog';\nimport {AjfFormBuilderNodeEntry, AjfFormBuilderService} from './form-builder-service';\nimport {AjfFbValidationConditionEditorDialog} from './validation-condition-editor-dialog';\nimport {AjfFbWarningConditionEditorDialog} from './warning-condition-editor-dialog';\n\nfunction checkRepsValidity(c: AbstractControl): {[key: string]: any} | null {\n const minReps = c.value.minReps;\n const maxReps = c.value.maxReps;\n if (minReps != null && maxReps != null && minReps > maxReps) {\n return {reps: 'Min repetions cannot be greater than max repetitions'};\n }\n return null;\n}\n\nfunction checkValueLimitsValidity(c: AbstractControl): {[key: string]: any} | null {\n const minValue = c.value.minValue;\n const maxValue = c.value.maxValue;\n if (minValue != null && maxValue != null && minValue > maxValue) {\n return {valueLimit: 'Min value cannot be greater than max value'};\n }\n return null;\n}\n\nfunction checkDigitsValidity(c: AbstractControl): {[key: string]: any} | null {\n const minDigits = c.value.minDigits;\n const maxDigits = c.value.maxDigits;\n if (minDigits != null && maxDigits != null && minDigits > maxDigits) {\n return {digits: 'Min digits cannot be greater than max digits'};\n }\n return null;\n}\n\nfunction checkRangeValidity(c: AbstractControl): {[key: string]: any} | null {\n const {start, end} = c.value;\n if (start != null && end != null && start > end) {\n return {range: 'End must be greater than start'};\n }\n return null;\n}\n\nexport interface ValidationCondition {\n condition: string;\n errorMessage: string;\n}\n\nexport interface WarningCondition {\n condition: string;\n warningMessage: string;\n}\n\n@Component({\n selector: 'ajf-fb-node-properties',\n templateUrl: 'node-properties.html',\n styleUrls: ['node-properties.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbNodeProperties implements OnDestroy {\n private _fieldSizes: {label: string; value: string}[] = [\n {label: 'Normal', value: 'normal'},\n {label: 'Small', value: 'small'},\n {label: 'Smaller', value: 'smaller'},\n {label: 'Tiny', value: 'tiny'},\n {label: 'Mini', value: 'mini'},\n ];\n get fieldSizes(): {label: string; value: string}[] {\n return this._fieldSizes;\n }\n\n private _nodeEntry: Observable<AjfFormBuilderNodeEntry | null>;\n get nodeEntry(): Observable<AjfFormBuilderNodeEntry | null> {\n return this._nodeEntry;\n }\n\n private _choicesOrigins: AjfChoicesOrigin<any>[] = [];\n get choicesOrigins(): AjfChoicesOrigin<any>[] {\n return this._choicesOrigins;\n }\n\n private _enabled: Observable<boolean>;\n get enabled(): Observable<boolean> {\n return this._enabled;\n }\n\n private _propertiesForm!: Observable<FormGroup>;\n get propertiesForm(): Observable<FormGroup> {\n return this._propertiesForm;\n }\n\n private _hasChoices: Observable<boolean> | undefined;\n get hasChoices(): Observable<boolean> | undefined {\n return this._hasChoices;\n }\n\n private _curVisibility: string | null = null;\n get curVisibility(): string | null {\n return this._curVisibility;\n }\n\n private _curFormulaReps: string | null = null;\n get curFormulaReps(): string | null {\n return this._curFormulaReps;\n }\n\n private _curChoicesFilter: string | null = null;\n get curChoicesFilter(): string | null {\n return this._curChoicesFilter;\n }\n\n private _curForceValue: string | null = null;\n get curForceValue(): string | null {\n return this._curForceValue;\n }\n\n private _curFormula: string | null = null;\n get curFormula(): string | null {\n return this._curFormula;\n }\n\n private _conditionalBranches: string[] = [];\n get conditionalBranches(): string[] {\n return this._conditionalBranches;\n }\n\n private _validationConditions: ValidationCondition[] = [];\n get validationConditions(): ValidationCondition[] {\n return this._validationConditions;\n }\n\n private _warningConditions: WarningCondition[] = [];\n get warningConditions(): WarningCondition[] {\n return this._warningConditions;\n }\n\n private _nextSlideCondition: string | undefined;\n get nextSlideCondition(): string | undefined {\n return this._nextSlideCondition;\n }\n\n private _triggerConditions: string[] = [];\n get triggerConditions(): string[] {\n return this._triggerConditions;\n }\n\n isRepeatingContainerNode: (nodeEntry: AjfFormBuilderNodeEntry | null) => boolean = nodeEntry => {\n return nodeEntry != null && isRepeatingContainerNode(nodeEntry.node);\n };\n\n private _visibilityOptSub: Subscription = Subscription.EMPTY;\n private _visibilitySub: Subscription = Subscription.EMPTY;\n private _conditionalBranchesSub = Subscription.EMPTY;\n private _formulaRepsSub = Subscription.EMPTY;\n private _choicesFilterSub = Subscription.EMPTY;\n private _formulaSub = Subscription.EMPTY;\n private _forceValueSub = Subscription.EMPTY;\n private _validationConditionsSub = Subscription.EMPTY;\n private _warningConditionsSub = Subscription.EMPTY;\n private _nextSlideConditionSub = Subscription.EMPTY;\n private _choicesOriginsSub = Subscription.EMPTY;\n private _triggerConditionsSub = Subscription.EMPTY;\n\n private _editConditionDialog: MatDialogRef<AjfFbConditionEditorDialog> | null = null;\n private _editConditionDialogSub: Subscription = Subscription.EMPTY;\n private _editValidationConditionDialog: MatDialogRef<AjfFbValidationConditionEditorDialog> | null =\n null;\n private _editValidationConditionDialogSub: Subscription = Subscription.EMPTY;\n private _editWarningConditionDialog: MatDialogRef<AjfFbWarningConditionEditorDialog> | null =\n null;\n private _editWarningConditionDialogSub: Subscription = Subscription.EMPTY;\n\n private _editVisibilityEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editVisibilitySub = Subscription.EMPTY;\n\n private _editConditionalBranchEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editConditionalBranchSub = Subscription.EMPTY;\n\n private _editFormulaRepsEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editFormulaRepsSub = Subscription.EMPTY;\n\n private _editChoicesFilterEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editChoicesFilterSub = Subscription.EMPTY;\n\n private _editFormulaEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editFormulaSub = Subscription.EMPTY;\n\n private _editForceValueEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editForceValueSub = Subscription.EMPTY;\n\n private _editValidationConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editValidationConditionSub = Subscription.EMPTY;\n\n private _addValidationConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _addValidationConditionSub = Subscription.EMPTY;\n\n private _removeValidationConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _removeValidationConditionSub = Subscription.EMPTY;\n\n private _editWarningConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editWarningConditionSub = Subscription.EMPTY;\n\n private _addWarningConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _addWarningConditionSub = Subscription.EMPTY;\n\n private _removeWarningConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _removeWarningConditionSub = Subscription.EMPTY;\n\n private _editNextSlideConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editNextSlideConditionSub = Subscription.EMPTY;\n\n private _editTriggerConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editTriggerConditionSub = Subscription.EMPTY;\n\n private _addTriggerConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _addTriggerConditionSub = Subscription.EMPTY;\n\n private _removeTriggerConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _removeTriggerConditionSub = Subscription.EMPTY;\n\n private _saveEvt: EventEmitter<void> = new EventEmitter<void>();\n private _saveSub = Subscription.EMPTY;\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _service: AjfFormBuilderService,\n private _dialog: MatDialog,\n private _fb: FormBuilder,\n ) {\n this._nodeEntry = _service.editedNodeEntry;\n this._choicesOriginsSub = _service.choicesOrigins.subscribe(\n c => (this._choicesOrigins = c || []),\n );\n\n this._enabled = this._nodeEntry.pipe(map(n => n != null));\n\n this._initForm();\n this._initVisibilityEdit();\n this._initConditionalBranchEdit();\n this._initFormulaRepsEdit();\n this._initChoicesFilterEdit();\n this._initFormulaEdit();\n this._initForceValueEdit();\n this._initValidationConditionEdit();\n this._initAddValidationCondition();\n this._initRemoveValidationCondition();\n this._initWarningConditionEdit();\n this._initAddWarningCondition();\n this._initRemoveWarningCondition();\n this._initNextSlideConditionEdit();\n this._initTriggerConditionEdit();\n this._initAddTriggerCondition();\n this._initRemoveTriggerCondition();\n this._initSave();\n }\n\n editVisibility(): void {\n this._editVisibilityEvt.emit();\n }\n\n editConditionalBranch(idx: number): void {\n if (idx < 0 || idx >= this._conditionalBranches.length) {\n return;\n }\n this._editConditionalBranchEvt.emit(idx);\n }\n\n editFormulaReps(): void {\n this._editFormulaRepsEvt.emit();\n }\n\n editChoicesFilter(): void {\n this._editChoicesFilterEvt.emit();\n }\n\n editFormula(): void {\n this._editFormulaEvt.emit();\n }\n\n editForceValue(): void {\n this._editForceValueEvt.emit();\n }\n\n editValidationCondition(idx: number): void {\n if (idx < 0 || idx >= this._validationConditions.length) {\n return;\n }\n this._editValidationConditionEvt.emit(idx);\n }\n\n addValidationCondition(): void {\n this._addValidationConditionEvt.emit();\n }\n\n removeValidationCondition(idx: number): void {\n if (idx < 0 || idx >= this._validationConditions.length) {\n return;\n }\n this._removeValidationConditionEvt.emit(idx);\n }\n\n editWarningCondition(idx: number): void {\n if (idx < 0 || idx >= this._warningConditions.length) {\n return;\n }\n this._editWarningConditionEvt.emit(idx);\n }\n\n addWarningCondition(): void {\n this._addWarningConditionEvt.emit();\n }\n\n removeWarningCondition(idx: number): void {\n if (idx < 0 || idx >= this._warningConditions.length) {\n return;\n }\n this._removeWarningConditionEvt.emit(idx);\n }\n\n editNextSlideCondition(): void {\n this._editNextSlideConditionEvt.emit();\n }\n\n editTriggerCondition(idx: number): void {\n if (idx < 0 || idx >= this._triggerConditions.length) {\n return;\n }\n this._editTriggerConditionEvt.emit(idx);\n }\n\n addTriggerCondition(): void {\n this._addTriggerConditionEvt.emit();\n }\n\n removeTriggerCondition(idx: number): void {\n if (idx < 0 || idx >= this._triggerConditions.length) {\n return;\n }\n this._removeTriggerConditionEvt.emit(idx);\n }\n\n isField(nodeEntry: AjfFormBuilderNodeEntry | null): boolean {\n return nodeEntry != null && isField(nodeEntry.node);\n }\n\n isNumericField(node: AjfNode): boolean {\n return isField(node) && isNumberField(node as AjfField);\n }\n\n isFieldWithChoices(node: AjfNode): boolean {\n return isField(node) && isFieldWithChoices(node as AjfField);\n }\n\n isRangeField(node: AjfNode): boolean {\n return isField(node) && isRangeField(node as AjfField);\n }\n\n save(): void {\n this._saveEvt.emit();\n }\n\n cancel(): void {\n this._service.cancelNodeEntryEdit();\n }\n\n ngOnDestroy(): void {\n this._choicesOriginsSub.unsubscribe();\n\n this._visibilityOptSub.unsubscribe();\n this._visibilitySub.unsubscribe();\n this._formulaRepsSub.unsubscribe();\n this._choicesFilterSub.unsubscribe();\n this._formulaSub.unsubscribe();\n this._forceValueSub.unsubscribe();\n this._validationConditionsSub.unsubscribe();\n this._warningConditionsSub.unsubscribe();\n this._triggerConditionsSub.unsubscribe();\n\n this._editConditionDialogSub.unsubscribe();\n this._editValidationConditionDialogSub.unsubscribe();\n this._editWarningConditionDialogSub.unsubscribe();\n\n this._editChoicesFilterSub.unsubscribe();\n this._editConditionalBranchSub.unsubscribe();\n this._editVisibilitySub.unsubscribe();\n this._editFormulaRepsSub.unsubscribe();\n this._editFormulaSub.unsubscribe();\n this._editForceValueSub.unsubscribe();\n this._editValidationConditionSub.unsubscribe();\n this._editWarningConditionSub.unsubscribe();\n this._nextSlideConditionSub.unsubscribe();\n\n this._addTriggerConditionSub.unsubscribe();\n this._addValidationConditionSub.unsubscribe();\n this._addWarningConditionSub.unsubscribe();\n this._editNextSlideConditionSub.unsubscribe();\n this._editTriggerConditionSub.unsubscribe();\n this._removeTriggerConditionSub.unsubscribe();\n this._removeValidationConditionSub.unsubscribe();\n this._removeWarningConditionSub.unsubscribe();\n\n this._saveSub.unsubscribe();\n }\n\n private _initSave(): void {\n this._saveSub = this._saveEvt\n .pipe(withLatestFrom(this.propertiesForm))\n .subscribe(([_, formGroup]) => {\n const fg = formGroup as FormGroup;\n const val = {...fg.value, conditionalBranches: this._conditionalBranches};\n this._service.saveNodeEntry(val);\n });\n }\n\n private _initForm(): void {\n this._propertiesForm = this._nodeEntry.pipe(\n filter(n => n != null),\n map(n => {\n if (this._visibilityOptSub != null) {\n this._visibilityOptSub.unsubscribe();\n }\n if (this._visibilitySub != null) {\n this._visibilitySub.unsubscribe();\n }\n if (this._conditionalBranchesSub != null) {\n this._conditionalBranchesSub.unsubscribe();\n }\n n = n!;\n\n const visibility = n.node.visibility != null ? n.node.visibility.condition : null;\n const visibilityOpt =\n n.node.visibility != null ? this._guessVisibilityOpt(n.node.visibility) : null;\n let controls: any = {\n name: [n.node.name, Validators.required],\n label: n.node.label,\n visibilityOpt: [visibilityOpt, Validators.required],\n visibility: [visibility, Validators.required],\n conditionalBranchesNum: n.node.conditionalBranches.length,\n };\n const validators: ValidatorFn[] = [];\n\n if (isRepeatingContainerNode(n.node)) {\n const rn = <AjfRepeatingContainerNode>n.node;\n\n const formulaReps = rn.formulaReps != null ? rn.formulaReps.formula : null;\n\n controls.formulaReps = [formulaReps, Validators.required];\n controls.minReps = rn.minReps;\n controls.maxReps = rn.maxReps;\n\n this._curFormulaReps = formulaReps;\n\n validators.push(checkRepsValidity);\n }\n\n if (this.isField(n)) {\n const field = <AjfField>n.node;\n\n let forceValue: string | null = null;\n let notEmpty: boolean = false;\n let validationConditions: ValidationCondition[] = [];\n if (field.validation != null) {\n if (field.validation.forceValue != null) {\n forceValue = field.validation.forceValue.condition;\n }\n notEmpty = field.validation.notEmpty != null;\n validationConditions = (field.validation.conditions || []).map(c => {\n return {condition: c.condition, errorMessage: c.errorMessage};\n });\n }\n\n let notEmptyW: boolean = false;\n let warningConditions: WarningCondition[] = [];\n if (field.warning != null) {\n notEmptyW = field.warning.notEmpty != null;\n warningConditions = (field.warning.conditions || []).map(w => {\n return {condition: w.condition, warningMessage: w.warningMessage};\n });\n }\n const formula = field.formula != null ? field.formula.formula : null;\n\n controls.description = field.description;\n controls.defaultValue = field.defaultValue;\n controls.hint = field.hint;\n controls.size = field.size;\n controls.formula = formula;\n controls.forceValue = forceValue;\n controls.notEmpty = notEmpty;\n controls.validationConditions = [validationConditions, []];\n controls.notEmptyWarning = notEmptyW;\n controls.warningConditions = [warningConditions, []];\n controls.nextSlideCondition = [field.nextSlideCondition];\n\n this._curForceValue = forceValue;\n this._curFormula = formula;\n this._validationConditions = validationConditions;\n this._warningConditions = warningConditions;\n }\n\n if (this.isNumericField(n.node)) {\n const numField = <AjfNumberField>n.node;\n\n let minValue: any;\n let maxValue: any;\n let minDigits: any;\n let maxDigits: any;\n if (numField.validation != null) {\n if (numField.validation.minValue != null) {\n minValue = (numField.validation.minValue.condition || '').replace('$value >= ', '');\n }\n if (numField.validation.maxValue != null) {\n maxValue = (numField.validation.maxValue.condition || '').replace('$value <= ', '');\n }\n if (numField.validation.minDigits != null) {\n minDigits = (numField.validation.minDigits.condition || '').replace(\n '$value.toString().length >= ',\n '',\n );\n }\n if (numField.validation.maxDigits != null) {\n maxDigits = (numField.validation.maxDigits.condition || '').replace(\n '$value.toString().length <= ',\n '',\n );\n }\n }\n\n controls.minValue = minValue;\n controls.maxValue = maxValue;\n controls.minDigits = minDigits;\n controls.maxDigits = maxDigits;\n\n validators.push(checkValueLimitsValidity);\n validators.push(checkDigitsValidity);\n }\n\n if (this.isRangeField(n.node)) {\n const rangeField = <AjfRangeField>n.node;\n const {start, end, step} = rangeField;\n\n controls.start = start;\n controls.end = end;\n controls.step = step;\n\n validators.push(checkRangeValidity);\n }\n\n if (this.isFieldWithChoices(n.node)) {\n const fieldWithChoices = <AjfFieldWithChoices<any>>n.node;\n\n let triggerConditions: string[] = (fieldWithChoices.triggerConditions || []).map(\n c => c.condition,\n );\n\n controls.choicesOriginRef = (fieldWithChoices as any).choicesOriginRef;\n controls.choicesFilter =\n fieldWithChoices.choicesFilter != null ? fieldWithChoices.choicesFilter.formula : null;\n controls.forceExpanded = fieldWithChoices.forceExpanded;\n controls.forceNarrow = fieldWithChoices.forceNarrow;\n controls.triggerConditions = triggerConditions;\n\n this._triggerConditions = triggerConditions;\n }\n\n const fg = this._fb.group(controls);\n fg.setValidators(validators);\n\n this._conditionalBranches = n.node.conditionalBranches.map(c => c.condition);\n this._curVisibility = n.node.visibility != null ? n.node.visibility.condition : null;\n\n this._handleConditionalBranchesChange(fg);\n this._handleVisibilityChange(fg);\n this._handleFormulaRepsChange(fg);\n this._handleChoicesFilterChange(fg);\n this._handleFormulaChange(fg);\n this._handleForceValueChange(fg);\n this._handleValidationCondtionsChange(fg);\n this._handleWarningCondtionsChange(fg);\n this._handleNextSlideConditionChange(fg);\n this._handleTriggerCondtionsChange(fg);\n\n return fg;\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n private _destroyConditionDialog(): void {\n if (this._editConditionDialogSub != null) {\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n }\n if (this._editConditionDialog != null) {\n this._editConditionDialog.close();\n this._editConditionDialog = null;\n }\n }\n\n private _destroyValidationConditionDialog(): void {\n if (this._editValidationConditionDialogSub != null) {\n this._editValidationConditionDialogSub.unsubscribe();\n this._editValidationConditionDialogSub = Subscription.EMPTY;\n }\n if (this._editValidationConditionDialog != null) {\n this._editValidationConditionDialog.close();\n this._editValidationConditionDialog = null;\n }\n }\n\n private _destroyWarningConditionDialog(): void {\n if (this._editWarningConditionDialogSub != null) {\n this._editWarningConditionDialogSub.unsubscribe();\n this._editWarningConditionDialogSub = Subscription.EMPTY;\n }\n if (this._editWarningConditionDialog != null) {\n this._editWarningConditionDialog.close();\n this._editWarningConditionDialog = null;\n }\n }\n\n private _initRemoveTriggerCondition(): void {\n this._removeTriggerConditionSub = this._removeTriggerConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['triggerConditions'];\n let vcs = (ctrl.value || []).slice(0);\n if (vcIdx < 0 || vcIdx >= vcs.length) {\n return;\n }\n vcs.splice(vcIdx, 1);\n ctrl.setValue(vcs);\n });\n }\n\n private _initAddTriggerCondition(): void {\n this._addTriggerConditionSub = this._addTriggerConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['triggerConditions'];\n let vcs = (ctrl.value || []).slice(0);\n vcs.push('');\n ctrl.setValue(vcs);\n });\n }\n\n private _initTriggerConditionEdit(): void {\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n this._editTriggerConditionSub = this._editTriggerConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, fg]) => {\n this._destroyConditionDialog();\n if (vcIdx < 0 || vcIdx >= this._triggerConditions.length || fg == null) {\n return;\n }\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n const cmp = this._editConditionDialog.componentInstance;\n cmp.condition = this._triggerConditions[vcIdx];\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n this._triggerConditions[vcIdx] = cond;\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initRemoveWarningCondition(): void {\n this._removeWarningConditionSub = this._removeWarningConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['warningConditions'];\n let vcs = (ctrl.value || []).slice(0);\n if (vcIdx < 0 || vcIdx >= vcs.length) {\n return;\n }\n vcs.splice(vcIdx, 1);\n ctrl.setValue(vcs);\n });\n }\n\n private _initAddWarningCondition(): void {\n this._addWarningConditionSub = this._addWarningConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['warningConditions'];\n let vcs = (ctrl.value || []).slice(0);\n vcs.push({condition: '', errorMessage: ''});\n ctrl.setValue(vcs);\n });\n }\n\n private _initWarningConditionEdit(): void {\n this._editWarningConditionSub = this._editWarningConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, fg]) => {\n this._destroyWarningConditionDialog();\n if (vcIdx < 0 || vcIdx >= this._warningConditions.length || fg == null) {\n return;\n }\n this._editWarningConditionDialog = this._dialog.open(AjfFbWarningConditionEditorDialog);\n const cmp = this._editWarningConditionDialog.componentInstance;\n const w = this._warningConditions[vcIdx];\n cmp.condition = w.condition;\n cmp.warningMessage = w.warningMessage;\n this._editWarningConditionDialogSub = this._editWarningConditionDialog\n .afterClosed()\n .subscribe((cond: WarningCondition) => {\n if (cond !== void 0) {\n this._warningConditions[vcIdx] = cond;\n }\n this._editWarningConditionDialogSub.unsubscribe();\n this._editWarningConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initRemoveValidationCondition(): void {\n this._removeValidationConditionSub = this._removeValidationConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['validationConditions'];\n let vcs = (ctrl.value || []).slice(0);\n if (vcIdx < 0 || vcIdx >= vcs.length) {\n return;\n }\n vcs.splice(vcIdx, 1);\n ctrl.setValue(vcs);\n });\n }\n\n private _initAddValidationCondition(): void {\n this._addValidationConditionSub = this._addValidationConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['validationConditions'];\n let vcs = (ctrl.value || []).slice(0);\n vcs.push({condition: '', errorMessage: ''});\n ctrl.setValue(vcs);\n });\n }\n\n private _initValidationConditionEdit(): void {\n this._editValidationConditionSub = this._editValidationConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, fg]) => {\n this._destroyValidationConditionDialog();\n if (vcIdx < 0 || vcIdx >= this._validationConditions.length || fg == null) {\n return;\n }\n this._editValidationConditionDialog = this._dialog.open(\n AjfFbValidationConditionEditorDialog,\n );\n const cmp = this._editValidationConditionDialog.componentInstance;\n const v = this._validationConditions[vcIdx];\n cmp.condition = v.condition;\n cmp.errorMessage = v.errorMessage;\n this._editValidationConditionDialogSub = this._editValidationConditionDialog\n .afterClosed()\n .subscribe((cond: ValidationCondition) => {\n if (cond !== void 0) {\n this._validationConditions[vcIdx] = cond;\n }\n this._editValidationConditionDialogSub.unsubscribe();\n this._editValidationConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initForceValueEdit(): void {\n this._editForceValueSub = this._editForceValueEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['forceValue'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initNextSlideConditionEdit(): void {\n this._editNextSlideConditionSub = this._editNextSlideConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['nextSlideCondition'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initFormulaEdit(): void {\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n this._editFormulaSub = this._editFormulaEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['formula'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initFormulaRepsEdit(): void {\n this._editFormulaRepsSub = this._editFormulaRepsEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['formulaReps'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initChoicesFilterEdit(): void {\n this._editChoicesFilterSub = this._editChoicesFilterEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['choicesFilter'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initConditionalBranchEdit(): void {\n this._editConditionalBranchSub = this._editConditionalBranchEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([cbIdx, fg]) => {\n this._destroyConditionDialog();\n if (cbIdx < 0 || cbIdx >= this._conditionalBranches.length || fg == null) {\n return;\n }\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = this._conditionalBranches[cbIdx];\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n this._conditionalBranches[cbIdx] = cond;\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initVisibilityEdit(): void {\n this._editVisibilitySub = this._editVisibilityEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as FormGroup;\n const ctrl = fg.controls['visibility'];\n const condition = ctrl.value;\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = condition;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _handleTriggerCondtionsChange(fg: FormGroup): void {\n this._triggerConditionsSub = fg.valueChanges\n .pipe(\n distinctUntilChanged(\n (v1, v2) => JSON.stringify(v1.triggerConditions) === JSON.stringify(v2.triggerConditions),\n ),\n )\n .subscribe((v: any) => {\n this._triggerConditions = v.triggerConditions;\n this._cdr.markForCheck();\n });\n }\n\n private _handleWarningCondtionsChange(fg: FormGroup): void {\n this._warningConditionsSub = fg.valueChanges\n .pipe(\n distinctUntilChanged(\n (v1, v2) => JSON.stringify(v1.warningConditions) === JSON.stringify(v2.warningConditions),\n ),\n )\n .subscribe((v: any) => {\n this._warningConditions = v.warningConditions;\n this._cdr.markForCheck();\n });\n }\n\n private _handleValidationCondtionsChange(fg: FormGroup): void {\n this._validationConditionsSub = fg.valueChanges\n .pipe(\n distinctUntilChanged(\n (v1, v2) =>\n JSON.stringify(v1.validationConditions) === JSON.stringify(v2.validationConditions),\n ),\n )\n .subscribe((v: any) => {\n this._validationConditions = v.validationConditions;\n this._cdr.markForCheck();\n });\n }\n\n private _handleForceValueChange(fg: FormGroup): void {\n this._forceValueSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.forceValue === v2.forceValue))\n .subscribe((v: any) => {\n this._curForceValue = v.forceValue;\n this._cdr.markForCheck();\n });\n }\n\n private _handleNextSlideConditionChange(fg: FormGroup): void {\n this._formulaSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.nextSlideCondition === v2.nextSlideCondition))\n .subscribe((v: any) => {\n this._nextSlideCondition = v.nextSlideCondition;\n this._cdr.markForCheck();\n });\n this._formulaSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.nextSlideCondition === v2.nextSlideCondition))\n .subscribe((v: any) => {\n this._nextSlideCondition = v.nextSlideCondition;\n this._cdr.markForCheck();\n });\n }\n\n private _handleFormulaChange(fg: FormGroup): void {\n this._formulaSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.formula === v2.formula))\n .subscribe((v: any) => {\n this._curFormula = v.formula;\n this._cdr.markForCheck();\n });\n }\n\n private _handleFormulaRepsChange(fg: FormGroup): void {\n this._formulaRepsSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.formulaReps === v2.formulaReps))\n .subscribe((v: any) => {\n this._curFormulaReps = v.formulaReps;\n this._cdr.markForCheck();\n });\n }\n\n private _handleChoicesFilterChange(fg: FormGroup): void {\n this._choicesFilterSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.choicesFilter === v2.choicesFilter))\n .subscribe((v: any) => {\n this._curChoicesFilter = v.choicesFilter;\n this._cdr.markForCheck();\n });\n }\n\n private _handleConditionalBranchesChange(fg: FormGroup): void {\n this._conditionalBranchesSub = fg.valueChanges\n .pipe(\n distinctUntilChanged((v1, v2) => v1.conditionalBranchesNum === v2.conditionalBranchesNum),\n )\n .subscribe((v: any) => {\n const cbNum: number = v.conditionalBranchesNum;\n const curCbNum = this._conditionalBranches.length;\n if (curCbNum < cbNum) {\n let newCbs: string[] = [];\n for (let i = curCbNum; i < cbNum; i++) {\n newCbs.push(alwaysCondition().condition);\n }\n this._conditionalBranches = this._conditionalBranches.concat(newCbs);\n } else if (curCbNum > cbNum) {\n this._conditionalBranches.splice(0, curCbNum - cbNum);\n }\n this._cdr.markForCheck();\n });\n }\n\n private _handleVisibilityChange(fg: FormGroup): void {\n this._visibilitySub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.visibilityOpt === v2.visibilityOpt))\n .subscribe(v => {\n const visibilityOpt = v.visibilityOpt;\n let newCondition: string | null;\n switch (visibilityOpt) {\n case 'always':\n newCondition = alwaysCondition().condition;\n break;\n case 'never':\n newCondition = neverCondition().condition;\n break;\n default:\n newCondition = null;\n }\n this._curVisibility = newCondition;\n fg.controls['visibility'].setValue(newCondition);\n });\n this._visibilitySub = fg.valueChanges\n .pipe(\n filter(v => v.visibilityOpt === 'condition'),\n distinctUntilChanged((v1, v2) => v1.visibility === v2.visibility),\n )\n .subscribe(v => {\n this._curVisibility = v.visibility;\n this._cdr.markForCheck();\n });\n }\n\n private _guessVisibilityOpt(condition: AjfCondition): string {\n if (condition.condition.localeCompare(alwaysCondition().condition) === 0) {\n return 'always';\n }\n if (condition.condition.localeCompare(neverCondition().condition) === 0) {\n return 'never';\n }\n return 'condition';\n }\n}\n","<div\n [style.display]=\"(enabled|async) ? 'none' : 'block'\"\n class=\"ajf-disabled-overlay\"\n></div>\n<div class=\"ajf-header\">\n <h3>{{'Properties'|transloco}}</h3>\n <mat-icon (click)=\"save()\">save</mat-icon>\n <mat-icon (click)=\"cancel()\">cancel</mat-icon>\n</div>\n<ng-container *ngIf=\"nodeEntry|async as ne\">\n <ng-container *ngIf=\"propertiesForm|async as pf\">\n <form [formGroup]=\"pf!\" novalidate>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"name\"\n [placeholder]=\"'Name' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"label\"\n [placeholder]=\"'Label' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <mat-label>{{'Visibility'|transloco}}</mat-label>\n <mat-select\n formControlName=\"visibilityOpt\"\n [placeholder]=\"'Visible' | transloco\"\n >\n <mat-option value=\"always\">{{'Always'|transloco}}</mat-option>\n <mat-option value=\"never\">{{'Never'|transloco}}</mat-option>\n <mat-option value=\"condition\"\n >{{'Condition...'|transloco}}</mat-option\n >\n </mat-select>\n </mat-form-field>\n <button\n (click)=\"editVisibility()\"\n [disabled]=\"pf!.value.visibilityOpt !== 'condition'\"\n mat-raised-button\n [matTooltip]=\"curVisibility || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ curVisibility }}</span>\n </div>\n </button>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Branches'|transloco}}</label></div>\n <div>\n <mat-slider\n formControlName=\"conditionalBranchesNum\"\n thumbLabel\n tickInterval=\"auto\"\n min=\"1\"\n max=\"5\"\n step=\"1\"\n ></mat-slider>\n </div>\n <div *ngFor=\"let branch of conditionalBranches; let idx = index\">\n <button\n (click)=\"editConditionalBranch(idx)\"\n mat-raised-button\n [matTooltip]=\"branch\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ branch }}</span>\n </div>\n </button>\n </div>\n </div>\n <ng-template [ngIf]=\"isRepeatingContainerNode(ne)\">\n <div class=\"ajf-prop\">\n <div><label>{{'Repetitions'|transloco}}</label></div>\n <div>\n <button\n (click)=\"editFormulaReps()\"\n mat-raised-button\n [matTooltip]=\"curFormulaReps || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ curFormulaReps }}</span>\n </div>\n </button>\n </div>\n <div><label>{{'Min repetitions'|transloco}}</label></div>\n <div>\n <mat-slider\n formControlName=\"minReps\"\n thumbLabel\n tickInterval=\"auto\"\n min=\"1\"\n max=\"5\"\n step=\"1\"\n ></mat-slider>\n </div>\n <div><label>{{'Max repetitions'|transloco}}</label></div>\n <div>\n <mat-slider\n formControlName=\"maxReps\"\n thumbLabel\n tickInterval=\"auto\"\n min=\"1\"\n max=\"5\"\n step=\"1\"\n ></mat-slider>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isField(ne)\">\n <div class=\"ajf-prop\">\n <mat-form-field>\n <mat-label>{{'Field size'|transloco}}</mat-label>\n <mat-select\n formControlName=\"size\"\n [placeholder]=\"'Size' | transloco\"\n >\n <mat-option\n *ngFor=\"let fieldSize of fieldSizes\"\n [value]=\"fieldSize.value\"\n >\n {{ fieldSize.label|transloco }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"hint\"\n [placeholder]=\"'Hint' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <textarea\n matInput\n formControlName=\"description\"\n [placeholder]=\"'Description' | transloco\"\n ></textarea>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"defaultValue\"\n [placeholder]=\"'Default value' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Formula'|transloco}}</label></div>\n <div>\n <button\n (click)=\"editFormula()\"\n mat-raised-button\n [matTooltip]=\"curFormula || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ curFormula }}</span>\n </div>\n </button>\n </div>\n </div>\n <!-- <div class=\"ajf-prop\">\n <div><label>{{'Force value'|translco}}</label></div>\n <div>\n <button (click)=\"editForceValue()\" mat-raised-button [matTooltip]=\"curForceValue\">\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ curForceValue }}</span>\n </div>\n </button>\n </div>\n </div> -->\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"notEmpty\"\n >{{'Not empty'|transloco}}</mat-checkbox\n >\n </div>\n <ng-template [ngIf]=\"isNumericField(ne!.node)\">\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"minValue\"\n [placeholder]=\"'Min value' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"maxValue\"\n [placeholder]=\"'Max value' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"minDigits\"\n [placeholder]=\"'Min digits' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"maxDigits\"\n [placeholder]=\"'Max digits' | transloco\"\n />\n </mat-form-field>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isRangeField(ne!.node)\">\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n type=\"number\"\n formControlName=\"start\"\n [placeholder]=\"'Start' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n type=\"number\"\n formControlName=\"end\"\n [placeholder]=\"'End' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n type=\"number\"\n formControlName=\"step\"\n [placeholder]=\"'Step' | transloco\"\n />\n </mat-form-field>\n </div>\n </ng-template>\n <div class=\"ajf-prop\">\n <div class=\"ajf-header\">\n <label>{{ 'Validation' | transloco }}</label>\n <mat-icon class=\"ajf-pointer\" (click)=\"addValidationCondition()\"\n >add_circle_outline</mat-icon\n >\n </div>\n <div\n *ngIf=\"validationConditions.length === 0\"\n class=\"ajf-validation-row ajf-emph\"\n >\n {{'No conditions'|transloco}}\n </div>\n <div\n class=\"ajf-validation-row\"\n *ngFor=\"let validationCondition of validationConditions; let idx = index\"\n >\n <button\n (click)=\"editValidationCondition(idx)\"\n mat-raised-button\n [matTooltip]=\"validationCondition.condition\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ validationCondition.condition }}</span>\n </div>\n </button>\n <mat-icon\n class=\"ajf-pointer\"\n (click)=\"removeValidationCondition(idx)\"\n >remove_circle_outline</mat-icon\n >\n </div>\n </div>\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"notEmptyWarning\"\n >{{'Not empty warning'|transloco}}</mat-checkbox\n >\n </div>\n <div class=\"ajf-prop\">\n <div class=\"ajf-header\">\n <label>{{'Warnings'|transloco}}</label>\n <mat-icon class=\"ajf-pointer\" (click)=\"addWarningCondition()\"\n >add_circle_outline</mat-icon\n >\n </div>\n <div\n *ngIf=\"warningConditions.length === 0\"\n class=\"ajf-validation-row ajf-emph\"\n >\n {{'No warnings'|transloco}}\n </div>\n <div\n class=\"ajf-validation-row\"\n *ngFor=\"let warningCondition of warningConditions; let idx = index\"\n >\n <button\n (click)=\"editWarningCondition(idx)\"\n mat-raised-button\n [matTooltip]=\"warningCondition.condition\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ warningCondition.condition }}</span>\n </div>\n </button>\n <mat-icon class=\"ajf-pointer\" (click)=\"removeWarningCondition(idx)\"\n >remove_circle_outline</mat-icon\n >\n </div>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Go to next slide condition'|transloco}}</label></div>\n <div>\n <button\n (click)=\"editNextSlideCondition()\"\n mat-raised-button\n [matTooltip]=\"nextSlideCondition || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ nextSlideCondition }}</span>\n </div>\n </button>\n </div>\n </div>\n <ng-template [ngIf]=\"isFieldWithChoices(ne!.node)\">\n <div class=\"ajf-prop\">\n <mat-form-field>\n <mat-label>{{'Choices origins'|transloco}}</mat-label>\n <mat-select\n formControlName=\"choicesOriginRef\"\n [placeholder]=\"'Choices' | transloco\"\n >\n <mat-option\n *ngFor=\"let choicesOrigin of choicesOrigins\"\n [value]=\"choicesOrigin.name\"\n >\n {{ (choicesOrigin.label || choicesOrigin.name)|transloco }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Choices filter'|transloco}}</label></div>\n <div>\n <button\n (click)=\"editChoicesFilter()\"\n mat-raised-button\n [matTooltip]=\"curChoicesFilter || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ curChoicesFilter }}</span>\n </div>\n </button>\n </div>\n </div>\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"forceExpanded\"\n >{{'Force expanded selection'|transloco}}</mat-checkbox\n >\n </div>\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"forceNarrow\"\n >{{'Force narrow selection'|transloco}}</mat-checkbox\n >\n </div>\n <div class=\"ajf-prop\">\n <div class=\"ajf-header\">\n <label>{{'Trigger selection'|transloco}}</label>\n <mat-icon class=\"ajf-pointer\" (click)=\"addTriggerCondition()\"\n >add_circle_outline</mat-icon\n >\n </div>\n <div\n *ngIf=\"triggerConditions.length === 0\"\n class=\"ajf-validation-row ajf-emph\"\n >\n {{'No trigger condition'|transloco}}\n </div>\n <div\n class=\"ajf-validation-row\"\n *ngFor=\"let triggerCondition of triggerConditions; let idx = index\"\n >\n <button\n (click)=\"editTriggerCondition(idx)\"\n mat-raised-button\n [matTooltip]=\"triggerCondition\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ triggerCondition }}</span>\n </div>\n </button>\n <mat-icon class=\"pointer\" (click)=\"removeTriggerCondition(idx)\"\n >remove_circle_outline</mat-icon\n >\n </div>\n </div>\n </ng-template>\n </ng-template>\n </form>\n </ng-container>\n</ng-container>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfNode, isContainerNode, isSlidesNode} from '@ajf/core/forms';\nimport {CdkDrag, CdkDragDrop, CdkDropList} from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {AjfFbBranchLine} from './branch-line';\nimport {\n AjfFormBuilderNode,\n AjfFormBuilderNodeEntry,\n AjfFormBuilderNodeTypeEntry,\n AjfFormBuilderService,\n} from './form-builder-service';\nimport {\n disableFieldDropPredicate,\n disableSlideDropPredicate,\n onDropProcess,\n} from './form-builder-utils';\n\nconst branchColors: string[] = [\n '#F44336', // RED\n '#4CAF50', // GREEN\n '#3F51B5', // INDIGO\n '#FFC107', // AMBER\n '#795548', // BROWN\n];\n\n@Component({\n selector: 'ajf-fb-node-entry',\n templateUrl: 'node-entry.html',\n styleUrls: ['node-entry.scss'],\n // eslint-disable-next-line\n host: {'(window.resize)': 'onResize()'},\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbNodeEntry implements AfterViewInit, OnDestroy {\n @ViewChildren(AjfFbBranchLine) branchLines!: QueryList<AjfFbBranchLine>;\n @ViewChildren(AjfFbNodeEntry, {read: ElementRef}) childEntries!: QueryList<ElementRef>;\n\n private _hasContent = false;\n get hasContent(): boolean {\n return this._hasContent;\n }\n\n private _isFirst = false;\n get isFirst(): boolean {\n return this._isFirst;\n }\n @Input()\n set isFirst(isFirst: boolean) {\n this._isFirst = isFirst;\n }\n\n private _isNodeEntry = false;\n get isNodeEntry(): boolean {\n return this._isNodeEntry;\n }\n\n private _isExpanded = false;\n get isExpanded(): boolean {\n return this._isExpanded;\n }\n @Input()\n set isExpanded(exp: boolean) {\n this._isExpanded = exp;\n setTimeout(() => this._updateBranchHeights(), 400);\n }\n\n private _nodeEntry: AjfFormBuilderNode | undefined;\n get nodeEntry(): AjfFormBuilderNode | undefined {\n return this._nodeEntry;\n }\n @Input()\n set nodeEntry(nodeEntry: AjfFormBuilderNode | undefined) {\n this._nodeEntry = nodeEntry;\n if (nodeEntry != null && (<AjfFormBuilderNodeEntry>nodeEntry).node !== void 0) {\n const ne = <AjfFormBuilderNodeEntry>nodeEntry;\n this._isNodeEntry = true;\n const node = ne.node;\n this._hasContent = node != null && isContainerNode(node);\n } else {\n this._isNodeEntry = false;\n this._hasContent = false;\n }\n }\n\n private _level = 0;\n get level(): number {\n return this._level;\n }\n @Input()\n set level(value: number) {\n this._level = value;\n }\n private _isDraggable: boolean = true;\n get isDraggable(): boolean {\n return this._isDraggable;\n }\n @Input()\n set isDraggable(draggable: boolean) {\n this._isDraggable = draggable;\n }\n\n get realNodeEntry(): AjfFormBuilderNodeEntry {\n return this._nodeEntry as AjfFormBuilderNodeEntry;\n }\n\n private _branchColors: string[] = branchColors.slice(0);\n get branchColors(): string[] {\n return this._branchColors;\n }\n\n private _dropZones: string[] = ['fbdz-node'];\n get dropZones(): string[] {\n return this._dropZones;\n }\n\n private _slideDropZones: string[] = ['fbdz-slide'];\n get slideDropZones(): string[] {\n return this._slideDropZones;\n }\n\n private _originOffset = 0;\n get originOffset(): number {\n return this._originOffset;\n }\n @Input()\n set originOffset(originOffset: number) {\n this._originOffset = originOffset;\n this._originLeftMargin = `${this._originOffset * 4}px`;\n }\n private _originLeftMargin = '0';\n get originLeftMargin(): string {\n return this._originLeftMargin;\n }\n\n private _firstBranchColor = branchColors[0];\n get firstBranchColor(): string {\n return this._firstBranchColor;\n }\n @Input()\n set firstBranchColor(firstBranchColor: string) {\n const idx = branchColors.indexOf(firstBranchColor);\n if (idx > 0) {\n this._firstBranchColor = firstBranchColor;\n this._branchColors = branchColors.slice(idx).concat(branchColors.slice(0, idx));\n } else {\n this._firstBranchColor = branchColors[0];\n this._branchColors = branchColors.slice(0);\n }\n }\n\n private _currentEditedNode: Observable<AjfFormBuilderNodeEntry | null>;\n get currentEditedNode(): Observable<AjfFormBuilderNodeEntry | null> {\n return this._currentEditedNode;\n }\n\n private _branchLinesSubscription: Subscription = Subscription.EMPTY;\n private _childEntriesSubscription: Subscription = Subscription.EMPTY;\n\n constructor(private _service: AjfFormBuilderService) {\n this._currentEditedNode = this._service.editedNodeEntry;\n }\n\n onResize(): void {}\n\n edit(evt: Event): void {\n evt.stopPropagation();\n if (this.nodeEntry == null || !this.isNodeEntry) {\n return;\n }\n this._service.editNodeEntry(<AjfFormBuilderNodeEntry>this.nodeEntry);\n }\n\n delete(evt: Event): void {\n evt.stopPropagation();\n if (this.nodeEntry == null || !this.isNodeEntry) {\n return;\n }\n this._service.deleteNodeEntry(<AjfFormBuilderNodeEntry>this.nodeEntry);\n }\n\n isLastNode(): boolean {\n if (!this.realNodeEntry || !this.realNodeEntry.children) {\n return false;\n }\n return !this.realNodeEntry.children[0].children;\n }\n\n isSlide(node: AjfNode): boolean {\n return isSlidesNode(node);\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this._updateBranchHeights());\n this._childEntriesSubscription = this.childEntries.changes.subscribe(() => {\n this._updateBranchHeights();\n });\n }\n\n ngOnDestroy(): void {\n this._branchLinesSubscription.unsubscribe();\n this._childEntriesSubscription.unsubscribe();\n }\n\n /**\n * Triggers when a field or slide node is moved or inserted by drag&dropping in the formbuilder.\n * @param event The drop event.\n * @param content True if the current nodeEntry contains other nodeEntries.\n */\n onDrop(\n event: CdkDragDrop<AjfFormBuilderNodeEntry> | CdkDragDrop<AjfFormBuilderNodeTypeEntry>,\n content = false,\n ): void {\n if (this._nodeEntry == null) {\n return;\n }\n onDropProcess(event, this._service, this._nodeEntry, content);\n }\n\n /**\n * Assigns a progressive id to the dropList, to connect it to the FormBuilder source list.\n * @param empty True if the list is marked as empty.\n */\n assignId(empty: boolean = false): string {\n return this._service.assignListId(this.realNodeEntry.node, empty);\n }\n\n disableSlideDrop(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return disableSlideDropPredicate(item);\n }\n\n disableFieldDrop(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return disableFieldDropPredicate(item);\n }\n\n emptyAreaDropPredicate(): (item: CdkDrag, _drop: CdkDropList) => boolean {\n return (item: CdkDrag, _drop: CdkDropList): boolean => {\n if (this._level > 0) {\n return !item.data.isSlide;\n }\n return item.data.isSlide || false;\n };\n }\n\n private _updateBranchHeights(): void {\n if (\n this.nodeEntry == null ||\n !this.isNodeEntry ||\n this.branchLines == null ||\n this.childEntries == null\n ) {\n return;\n }\n const nodeEntry = <AjfFormBuilderNodeEntry>this.nodeEntry;\n const branchLines: AjfFbBranchLine[] = this.branchLines.toArray();\n const sliceIdx = nodeEntry.content != null ? nodeEntry.content.length : 0;\n const childEntries: ElementRef[] = this.childEntries.toArray().slice(sliceIdx);\n\n if (branchLines.length != childEntries.length) {\n return;\n }\n\n branchLines.forEach((bl: AjfFbBranchLine, idx: number) => {\n const ce: ElementRef = childEntries[idx];\n bl.height = ce.nativeElement.offsetTop;\n });\n }\n}\n","<ng-container *ngIf=\"nodeEntry; else rootEmpty\">\n <ng-template [ngIf]=\"isNodeEntry && !isLastNode()\">\n <ajf-fb-branch-line\n *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\"\n [offset]=\"idx\"\n [color]=\"branchColors[idx]\"\n ></ajf-fb-branch-line>\n </ng-template>\n\n <div\n class=\"mat-card-container\"\n [class.ajf-highlight]=\"(currentEditedNode|async) === nodeEntry\"\n >\n <div\n *ngIf=\"!isFirst\"\n class=\"ajf-origin-line\"\n [style.margin-left]=\"originLeftMargin\"\n [style.border-color]=\"firstBranchColor\"\n ></div>\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container *ngIf=\"!isDraggable; else draggable\">\n <mat-card>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-card>\n </ng-container>\n\n <ng-template #draggable>\n <mat-card cdkDrag [cdkDragData]=\"realNodeEntry\" class=\"ajf-draggable-box\">\n <ng-container\n *ngIf=\"isSlide(realNodeEntry.node); else fieldPanel\"\n >\n <ng-container *ngTemplateOutlet=\"slidePanel\"></ng-container>\n </ng-container>\n </mat-card>\n </ng-template>\n\n <ng-template #slidePanel>\n <mat-expansion-panel\n [expanded]=\"isExpanded\"\n (opened)=\"isExpanded = true\"\n (closed)=\"isExpanded = false\"\n class=\"mat-elevation-z\"\n >\n <mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n </mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-expansion-panel>\n </ng-template>\n\n <ng-template #fieldPanel>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </ng-template>\n\n <ng-template #cardTitle>\n <div class=\"ajf-title-row\">\n <ajf-node-icon [node]=\"realNodeEntry.node\"></ajf-node-icon>\n <span\n class=\"ajf-title\"\n [innerHTML]=\"(realNodeEntry.node.label || realNodeEntry.node.name) | transloco\"\n ></span>\n <span\n *ngIf=\"realNodeEntry.node.visibility && realNodeEntry.node.visibility?.condition !== 'true'\"\n class=\"ajf-visibility-condition\"\n [innerHTML]=\"'Condition: (' + realNodeEntry.node.visibility?.condition + ')'\"\n >\n </span>\n <span class=\"ajf-actions\">\n <button\n [disabled]=\"(currentEditedNode|async) === nodeEntry\"\n (click)=\"edit($event)\"\n mat-icon-button\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n [disabled]=\"(currentEditedNode|async) === null\"\n (click)=\"delete($event)\"\n mat-icon-button\n >\n <mat-icon>delete</mat-icon>\n </button>\n </span>\n </div>\n </ng-template>\n\n <ng-template #cardContent>\n <div *ngIf=\"hasContent\">\n <ajf-fb-node-entry\n cdkDropList\n class=\"ajf-fields-list\"\n *ngFor=\"let contentEntry of realNodeEntry.content; let isFirstChild = first; let idx = index\"\n [id]=\"assignId()\"\n [level]=\"level + 1\"\n [isFirst]=\"isFirstChild\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"contentEntry\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n [isExpanded]=\"isExpanded\"\n ></ajf-fb-node-entry>\n <mat-card\n class=\"ajf-empty\"\n *ngIf=\"realNodeEntry.content.length === 0\"\n cdkDropList\n [id]=\"assignId(true)\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n ><mat-card-title>Drop your fields here</mat-card-title></mat-card\n >\n </div>\n </ng-template>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container\n *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\"\n >\n <ajf-fb-node-entry\n *ngIf=\"!isLastNode()\"\n [level]=\"level\"\n [originOffset]=\"idx\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"childNodeEntry\"\n [isExpanded]=\"isExpanded\"\n ></ajf-fb-node-entry>\n </ng-container>\n </ng-template>\n</ng-container>\n\n<ng-template #rootEmpty>\n <div class=\"mat-card-container\">\n <mat-card\n class=\"ajf-empty\"\n cdkDropList\n [cdkDropListEnterPredicate]=\"emptyAreaDropPredicate()\"\n (cdkDropListDropped)=\"onDrop($event)\"\n ><mat-card-title>Drop your slides here</mat-card-title>\n </mat-card>\n </div>\n</ng-template>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfChoicesOrigin, AjfForm} from '@ajf/core/forms';\nimport {AjfCondition} from '@ajf/core/models';\nimport {CdkDrag, CdkDragDrop} from '@angular/cdk/drag-drop';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\nimport {MatSlideToggleChange} from '@angular/material/slide-toggle';\nimport {Observable, Subscription} from 'rxjs';\nimport {sample} from 'rxjs/operators';\n\nimport {AjfFbChoicesOriginEditorDialog} from './choices-origin-editor-dialog';\nimport {AjfFbConditionEditorDialog} from './condition-editor-dialog';\nimport {\n AjfFormBuilderNodeEntry,\n AjfFormBuilderNodeTypeEntry,\n AjfFormBuilderService,\n} from './form-builder-service';\nimport {disableFieldDropPredicate, onDropProcess} from './form-builder-utils';\nimport {AjfFbStringIdentifierDialogComponent} from './string-identifier-dialog';\n\n@Component({\n selector: 'ajf-form-builder',\n templateUrl: 'form-builder.html',\n styleUrls: ['form-builder.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFormBuilder implements AfterViewChecked, AfterContentInit, OnDestroy {\n @ViewChild('designer', {static: true}) designerCont!: ElementRef;\n\n private _form: AjfForm | undefined;\n get form(): AjfForm | undefined {\n return this._form;\n }\n @Input()\n set form(form: AjfForm | undefined) {\n if (this._form !== form) {\n this._form = form;\n if (this._init) {\n this._setCurrentForm();\n }\n }\n }\n\n private _nodeTypes: AjfFormBuilderNodeTypeEntry[];\n get nodeTypes(): AjfFormBuilderNodeTypeEntry[] {\n return this._nodeTypes;\n }\n\n private _nodeEntriesTree: Observable<AjfFormBuilderNodeEntry[]>;\n get nodeEntriesTree(): Observable<AjfFormBuilderNodeEntry[]> {\n return this._nodeEntriesTree;\n }\n\n private _choicesOrigins: Observable<AjfChoicesOrigin<any>[]>;\n get choicesOrigins(): Observable<AjfChoicesOrigin<any>[]> {\n return this._choicesOrigins;\n }\n\n private _globalExpanded = false;\n get isGlobalExpanded(): boolean {\n return this._globalExpanded;\n }\n\n /**\n * The list of the ids of all the dropLists connected to the formbuilder source list.\n */\n private _connectedDropLists: Observable<string[]> = this._service.connectedDropLists;\n get connectedDropLists(): Observable<string[]> {\n return this._connectedDropLists;\n }\n\n private _vc: EventEmitter<void> = new EventEmitter<void>();\n\n private _init = false;\n private _editConditionSub: Subscription = Subscription.EMPTY;\n private _editConditionDialog: MatDialogRef<AjfFbConditionEditorDialog> | null = null;\n private _beforeNodesUpdateSub: Subscription = Subscription.EMPTY;\n private _editChoicesOriginSub: Subscription = Subscription.EMPTY;\n private _editChoicesOriginDialog: MatDialogRef<AjfFbChoicesOriginEditorDialog> | null = null;\n private _stringIdentifierDialog: MatDialogRef<AjfFbStringIdentifierDialogComponent> | null = null;\n private _stringIdentifierSub: Subscription = Subscription.EMPTY;\n\n private _lastScrollTop: number = 0;\n\n constructor(private _service: AjfFormBuilderService, private _dialog: MatDialog) {\n this._nodeTypes = _service.availableNodeTypes;\n this._nodeEntriesTree = _service.nodeEntriesTree;\n this._choicesOrigins = _service.choicesOrigins;\n this._editConditionSub = this._service.editedCondition.subscribe(\n (condition: AjfCondition | null) => {\n if (this._editConditionDialog != null) {\n this._editConditionDialog.close();\n this._editConditionDialog = null;\n }\n if (condition != null) {\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog, {\n disableClose: true,\n });\n }\n },\n );\n this._editChoicesOriginSub = this._service.editedChoicesOrigin.subscribe(\n (choicesOrigin: AjfChoicesOrigin<any> | null) => {\n if (this._editChoicesOriginDialog != null) {\n this._editChoicesOriginDialog.close();\n this._editChoicesOriginDialog = null;\n }\n if (choicesOrigin != null) {\n this._editChoicesOriginDialog = this._dialog.open(AjfFbChoicesOriginEditorDialog, {\n disableClose: true,\n });\n }\n },\n );\n\n this._beforeNodesUpdateSub = this._service.beforeNodesUpdate.subscribe(() => {\n if (this.designerCont == null) {\n return;\n }\n this._lastScrollTop = this.designerCont.nativeElement.scrollTop;\n });\n\n this.nodeEntriesTree.pipe(sample(<Observable<void>>this._vc)).subscribe(() => {\n if (this.designerCont == null) {\n return;\n }\n this.designerCont.nativeElement.scrollTop = this._lastScrollTop;\n });\n\n this._stringIdentifierSub = this._service.stringIdentifier.subscribe(() => {});\n }\n\n ngAfterViewChecked(): void {\n this._vc.emit();\n }\n\n ngAfterContentInit(): void {\n this._setCurrentForm();\n this._init = true;\n }\n\n ngOnDestroy(): void {\n this._editConditionSub.unsubscribe();\n this._beforeNodesUpdateSub.unsubscribe();\n this._editChoicesOriginSub.unsubscribe();\n this._stringIdentifierSub.unsubscribe();\n this._service.setForm(null);\n }\n\n createChoicesOrigin(): void {\n this._service.createChoicesOrigin();\n }\n\n disableDrop(): boolean {\n return false;\n }\n\n disableFieldDrop(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return disableFieldDropPredicate(item);\n }\n\n /**\n * Triggers when a field or slide node is moved or inserted by drag&dropping in the formbuilder.\n * @param event The drop event.\n * @param content True if the current nodeEntry contains other nodeEntries.\n */\n onDrop(\n event: CdkDragDrop<AjfFormBuilderNodeEntry> | CdkDragDrop<AjfFormBuilderNodeTypeEntry>,\n content = false,\n ): void {\n onDropProcess(event, this._service, null, content);\n }\n\n editChoicesOrigin(choicesOrigin: AjfChoicesOrigin<any>): void {\n this._service.editChoicesOrigin(choicesOrigin);\n }\n\n editStringIdentifier(): void {\n if (this._stringIdentifierDialog != null) {\n this._stringIdentifierDialog.close();\n this._stringIdentifierDialog = null;\n }\n this._stringIdentifierDialog = this._dialog.open(AjfFbStringIdentifierDialogComponent, {\n disableClose: true,\n width: '60%',\n height: '60%',\n });\n }\n\n expandAll() {\n this._globalExpanded = true;\n }\n\n collapseAll() {\n this._globalExpanded = false;\n }\n\n expandToggle(evt: MatSlideToggleChange) {\n if (evt.checked) {\n this.expandAll();\n } else {\n this.collapseAll();\n }\n }\n\n private _setCurrentForm(): void {\n if (this._form == null) {\n return;\n }\n this._service.setForm(this._form);\n }\n}\n","<mat-toolbar>\n <button mat-icon-button (click)=\"leftSidenav.toggle()\">\n <mat-icon>add_box</mat-icon>\n </button>\n <button mat-button [matMenuTriggerFor]=\"choicesMenu\">\n {{'Choices'|transloco}}\n </button>\n <button mat-button (click)=\"editStringIdentifier()\">\n {{'Identifier'|transloco}}\n </button>\n <button\n mat-icon-button\n aria-label=\"Collapsed\"\n matTooltip=\"Keep slides collapsed\"\n >\n <mat-icon>unfold_less</mat-icon>\n </button>\n <mat-slide-toggle\n color=\"primary\"\n (change)=\"expandToggle($event)\"\n ></mat-slide-toggle>\n <button\n mat-icon-button\n aria-label=\"Expanded\"\n matTooltip=\"Keep slides expanded\"\n >\n <mat-icon>unfold_more</mat-icon>\n </button>\n <mat-menu #choicesMenu>\n <button (click)=\"createChoicesOrigin()\" mat-menu-item>\n {{'New..'|transloco}}\n </button>\n <ng-container *ngIf=\"choicesOrigins|async as cos\">\n <button\n *ngFor=\"let choicesOrigin of cos\"\n (click)=\"editChoicesOrigin(choicesOrigin)\"\n mat-menu-item\n >\n {{ (choicesOrigin.label || choicesOrigin.name)| transloco }}\n </button>\n </ng-container>\n </mat-menu>\n <span class=\"ajf-spacer\"></span>\n <button mat-icon-button (click)=\"rightSidenav.toggle()\">\n <mat-icon>settings</mat-icon>\n </button>\n</mat-toolbar>\n<mat-drawer-container cdkDropListGroup>\n <mat-drawer #leftSidenav position=\"start\" mode=\"over\">\n <div\n #sourceDropList\n cdkDropList\n [cdkDropListConnectedTo]=\"(connectedDropLists|async)!\"\n [cdkDropListEnterPredicate]=\"disableDrop\"\n [cdkDropListData]=\"nodeTypes\"\n >\n <ajf-fb-node-type-entry\n *ngFor=\"let nodeType of nodeTypes\"\n cdkDrag\n [cdkDragData]=\"nodeType\"\n (cdkDragStarted)=\"leftSidenav.close()\"\n [nodeType]=\"nodeType\"\n ></ajf-fb-node-type-entry>\n </div>\n </mat-drawer>\n <mat-drawer #rightSidenav position=\"end\" mode=\"side\" [opened]=\"true\">\n <ajf-fb-node-properties></ajf-fb-node-properties>\n </mat-drawer>\n <div #designer class=\"ajf-designer\">\n <ajf-fb-node-entry\n id=\"slides-list\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n [cdkDropListEnterPredicate]=\"disableFieldDrop\"\n *ngFor=\"let nodeEntry of (nodeEntriesTree|async); let isFirst = first\"\n [isExpanded]=\"isGlobalExpanded\"\n [isFirst]=\"isFirst\"\n [nodeEntry]=\"nodeEntry\"\n ></ajf-fb-node-entry>\n </div>\n</mat-drawer-container>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfTranslocoModule} from '@ajf/core/transloco';\nimport {AjfMonacoEditorModule} from '@ajf/material/monaco-editor';\nimport {AjfNodeIconModule} from '@ajf/material/node-icon';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatToolbarModule} from '@angular/material/toolbar';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\nimport {AjfFbBranchLine} from './branch-line';\nimport {AjfFbChoicesOriginEditor} from './choices-origin-editor';\nimport {AjfFbChoicesOriginEditorDialog} from './choices-origin-editor-dialog';\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFbConditionEditorDialog} from './condition-editor-dialog';\nimport {AjfFormBuilder} from './form-builder';\nimport {AjfFormBuilderService} from './form-builder-service';\nimport {AjfFbNodeEntry} from './node-entry';\nimport {AjfFbNodeProperties} from './node-properties';\nimport {AjfFbNodeTypeEntry} from './node-type-entry';\nimport {AjfFbStringIdentifierDialogComponent} from './string-identifier-dialog';\nimport {AjfFbValidationConditionEditorDialog} from './validation-condition-editor-dialog';\nimport {AjfFbWarningConditionEditorDialog} from './warning-condition-editor-dialog';\n\n@NgModule({\n imports: [\n AjfMonacoEditorModule,\n AjfNodeIconModule,\n CommonModule,\n DragDropModule,\n FormsModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatTableModule,\n MatToolbarModule,\n MatTooltipModule,\n ReactiveFormsModule,\n AjfTranslocoModule,\n MatExpansionModule,\n MatSlideToggleModule,\n ],\n declarations: [\n AjfFbBranchLine,\n AjfFbChoicesOriginEditor,\n AjfFbChoicesOriginEditorDialog,\n AjfFbConditionEditor,\n AjfFbConditionEditorDialog,\n AjfFbNodeEntry,\n AjfFbNodeProperties,\n AjfFbNodeTypeEntry,\n AjfFbStringIdentifierDialogComponent,\n AjfFbValidationConditionEditorDialog,\n AjfFbWarningConditionEditorDialog,\n AjfFormBuilder,\n ],\n exports: [AjfFormBuilder],\n providers: [AjfFormBuilderService],\n})\nexport class AjfFormBuilderModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './form-builder-module';\nexport * from './form-builder-service';\nexport * from './form-builder-utils';\nexport * from './form-builder';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i5","i6","i7","i8","obsOf","i1.AjfFormBuilderService","i2.AjfFbChoicesOriginEditor","i3","i4","i2","i3.AjfFbConditionEditor","i10","i11","i12","i13","i14","i4.AjfFbConditionEditor","i9","i2.AjfFbBranchLine","i9.AjfFbNodeTypeEntry","i10.AjfFbNodeProperties","i11.AjfFbNodeEntry","i15"],"mappings":"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"}