@yuuvis/client-framework 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +62 -0
  2. package/actions/README.md +3 -0
  3. package/actions/index.d.ts +6 -0
  4. package/actions/lib/actions/copy-action/copy-action.d.ts +17 -0
  5. package/actions/lib/actions/cut-action/cut-action.d.ts +17 -0
  6. package/actions/lib/actions/delete-action/delete/delete.component.d.ts +22 -0
  7. package/actions/lib/actions/delete-action/delete-action.d.ts +17 -0
  8. package/actions/lib/actions/download-action/download-action.d.ts +17 -0
  9. package/actions/lib/actions.icon.d.ts +7 -0
  10. package/actions/lib/actions.interface.d.ts +86 -0
  11. package/actions/lib/actions.module.d.ts +8 -0
  12. package/actions/lib/actions.service.d.ts +38 -0
  13. package/actions/lib/components/contextmenu/contextmenu.component.d.ts +11 -0
  14. package/app-bar/README.md +3 -0
  15. package/app-bar/index.d.ts +1 -0
  16. package/app-bar/lib/app-bar.component.d.ts +47 -0
  17. package/clipboard/README.md +3 -0
  18. package/clipboard/index.d.ts +1 -0
  19. package/clipboard/lib/clipboard.component.d.ts +16 -0
  20. package/common/README.md +3 -0
  21. package/common/index.d.ts +5 -0
  22. package/common/lib/components/focus-indicator/focus-indicator.component.d.ts +7 -0
  23. package/common/lib/components/token-input/token-input.component.d.ts +55 -0
  24. package/common/lib/components/token-input/token-input.interface.d.ts +8 -0
  25. package/common/lib/directives/busy-overlay.directive.d.ts +25 -0
  26. package/common/lib/directives/click-double.directive.d.ts +17 -0
  27. package/common/lib/directives/container-size.directive.d.ts +30 -0
  28. package/common/lib/directives/drag-select.directive.d.ts +21 -0
  29. package/common/lib/directives/file-drop-zone/file-drop-zone.directive.d.ts +18 -0
  30. package/common/lib/directives/file-drop-zone/file-drop-zone.interface.d.ts +5 -0
  31. package/common/lib/directives/focus-within.directive.d.ts +36 -0
  32. package/common/lib/directives/index.d.ts +8 -0
  33. package/common/lib/directives/light-dismiss.directive.d.ts +19 -0
  34. package/common/lib/directives/longpress.directive.d.ts +13 -0
  35. package/common/lib/directives/noop-value-accessor.directive.d.ts +10 -0
  36. package/esm2022/actions/index.mjs +7 -0
  37. package/esm2022/actions/lib/actions/copy-action/copy-action.mjs +31 -0
  38. package/esm2022/actions/lib/actions/cut-action/cut-action.mjs +30 -0
  39. package/esm2022/actions/lib/actions/delete-action/delete/delete.component.mjs +67 -0
  40. package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +44 -0
  41. package/esm2022/actions/lib/actions/download-action/download-action.mjs +33 -0
  42. package/esm2022/actions/lib/actions.icon.mjs +8 -0
  43. package/esm2022/actions/lib/actions.interface.mjs +19 -0
  44. package/esm2022/actions/lib/actions.module.mjs +16 -0
  45. package/esm2022/actions/lib/actions.service.mjs +89 -0
  46. package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +27 -0
  47. package/esm2022/actions/yuuvis-client-framework-actions.mjs +5 -0
  48. package/esm2022/app-bar/index.mjs +2 -0
  49. package/esm2022/app-bar/lib/app-bar.component.mjs +89 -0
  50. package/esm2022/app-bar/yuuvis-client-framework-app-bar.mjs +5 -0
  51. package/esm2022/clipboard/index.mjs +2 -0
  52. package/esm2022/clipboard/lib/clipboard.component.mjs +48 -0
  53. package/esm2022/clipboard/yuuvis-client-framework-clipboard.mjs +5 -0
  54. package/esm2022/common/index.mjs +6 -0
  55. package/esm2022/common/lib/components/focus-indicator/focus-indicator.component.mjs +41 -0
  56. package/esm2022/common/lib/components/token-input/token-input.component.mjs +324 -0
  57. package/esm2022/common/lib/components/token-input/token-input.interface.mjs +2 -0
  58. package/esm2022/common/lib/directives/busy-overlay.directive.mjs +88 -0
  59. package/esm2022/common/lib/directives/click-double.directive.mjs +61 -0
  60. package/esm2022/common/lib/directives/container-size.directive.mjs +56 -0
  61. package/esm2022/common/lib/directives/drag-select.directive.mjs +114 -0
  62. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.directive.mjs +153 -0
  63. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.interface.mjs +2 -0
  64. package/esm2022/common/lib/directives/focus-within.directive.mjs +81 -0
  65. package/esm2022/common/lib/directives/index.mjs +9 -0
  66. package/esm2022/common/lib/directives/light-dismiss.directive.mjs +44 -0
  67. package/esm2022/common/lib/directives/longpress.directive.mjs +36 -0
  68. package/esm2022/common/lib/directives/noop-value-accessor.directive.mjs +42 -0
  69. package/esm2022/common/yuuvis-client-framework-common.mjs +5 -0
  70. package/esm2022/forms/index.mjs +19 -0
  71. package/esm2022/forms/lib/elements/catalog/catalog.component.mjs +118 -0
  72. package/esm2022/forms/lib/elements/datetime/datetime.component.mjs +82 -0
  73. package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +166 -0
  74. package/esm2022/forms/lib/elements/number/number.component.mjs +195 -0
  75. package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +176 -0
  76. package/esm2022/forms/lib/elements/organization/organization.component.mjs +268 -0
  77. package/esm2022/forms/lib/elements/string/string.component.mjs +254 -0
  78. package/esm2022/forms/lib/form-input/form-input.component.mjs +88 -0
  79. package/esm2022/forms/lib/forms.module.mjs +58 -0
  80. package/esm2022/forms/yuuvis-client-framework-forms.mjs +5 -0
  81. package/esm2022/icons/index.mjs +4 -0
  82. package/esm2022/icons/lib/icon.service.mjs +59 -0
  83. package/esm2022/icons/lib/icons.mjs +31 -0
  84. package/esm2022/icons/lib/object-type-icon/object-type-icon.component.mjs +29 -0
  85. package/esm2022/icons/yuuvis-client-framework-icons.mjs +5 -0
  86. package/esm2022/index.mjs +2 -0
  87. package/esm2022/lib/yuuvis-client-framework.module.mjs +15 -0
  88. package/esm2022/list/index.mjs +3 -0
  89. package/esm2022/list/lib/list-item.directive.mjs +72 -0
  90. package/esm2022/list/lib/list.component.mjs +133 -0
  91. package/esm2022/list/yuuvis-client-framework-list.mjs +5 -0
  92. package/esm2022/metadata-form/index.mjs +4 -0
  93. package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +31 -0
  94. package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +99 -0
  95. package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +126 -0
  96. package/esm2022/metadata-form/lib/object-metadata-element-template.directive.mjs +52 -0
  97. package/esm2022/metadata-form/yuuvis-client-framework-metadata-form.mjs +5 -0
  98. package/esm2022/object-details/index.mjs +7 -0
  99. package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +195 -0
  100. package/esm2022/object-details/lib/object-details-shell/object-details-shell.component.mjs +127 -0
  101. package/esm2022/object-details/lib/object-details.component.mjs +61 -0
  102. package/esm2022/object-details/lib/object-metadata/form-section-group.pipe.mjs +17 -0
  103. package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +201 -0
  104. package/esm2022/object-details/lib/object-metadata/object-metadata.interface.mjs +2 -0
  105. package/esm2022/object-details/yuuvis-client-framework-object-details.mjs +5 -0
  106. package/esm2022/object-flavor/index.mjs +6 -0
  107. package/esm2022/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.mjs +25 -0
  108. package/esm2022/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.mjs +21 -0
  109. package/esm2022/object-flavor/lib/flavor-chip/flavor-chip.component.mjs +35 -0
  110. package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +93 -0
  111. package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +43 -0
  112. package/esm2022/object-flavor/yuuvis-client-framework-object-flavor.mjs +5 -0
  113. package/esm2022/object-form/index.mjs +5 -0
  114. package/esm2022/object-form/lib/form-scripting.api.interface.mjs +2 -0
  115. package/esm2022/object-form/lib/form-scripting.service.mjs +160 -0
  116. package/esm2022/object-form/lib/object-form-element/object-form-element.component.mjs +87 -0
  117. package/esm2022/object-form/lib/object-form-extension.interface.mjs +36 -0
  118. package/esm2022/object-form/lib/object-form-group/object-form-group.component.mjs +85 -0
  119. package/esm2022/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.mjs +23 -0
  120. package/esm2022/object-form/lib/object-form-script/object-form-script.service.mjs +115 -0
  121. package/esm2022/object-form/lib/object-form-script/object-form-scripting-scope.mjs +251 -0
  122. package/esm2022/object-form/lib/object-form-translate.service.mjs +73 -0
  123. package/esm2022/object-form/lib/object-form.component.mjs +627 -0
  124. package/esm2022/object-form/lib/object-form.interface.mjs +9 -0
  125. package/esm2022/object-form/lib/object-form.model.mjs +20 -0
  126. package/esm2022/object-form/lib/object-form.service.mjs +127 -0
  127. package/esm2022/object-form/lib/object-form.utils.mjs +55 -0
  128. package/esm2022/object-form/lib/object-form.validation.mjs +48 -0
  129. package/esm2022/object-form/yuuvis-client-framework-object-form.mjs +5 -0
  130. package/esm2022/object-preview/index.mjs +3 -0
  131. package/esm2022/object-preview/lib/components/index.mjs +3 -0
  132. package/esm2022/object-preview/lib/components/object-email-preview/object-email-preview.component.mjs +45 -0
  133. package/esm2022/object-preview/lib/components/object-preview/object-preview.component.mjs +78 -0
  134. package/esm2022/object-preview/lib/services/object-preview.service.mjs +92 -0
  135. package/esm2022/object-preview/yuuvis-client-framework-object-preview.mjs +5 -0
  136. package/esm2022/object-summary/index.mjs +5 -0
  137. package/esm2022/object-summary/lib/multi-object-summary/multi-object-summary.component.mjs +33 -0
  138. package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +273 -0
  139. package/esm2022/object-summary/lib/object-summary-data/object-summary-data.component.mjs +80 -0
  140. package/esm2022/object-summary/lib/object-summary.module.mjs +15 -0
  141. package/esm2022/object-summary/yuuvis-client-framework-object-summary.mjs +5 -0
  142. package/esm2022/pagination/index.mjs +3 -0
  143. package/esm2022/pagination/lib/pagination.component.mjs +48 -0
  144. package/esm2022/pagination/lib/pagination.interface.mjs +2 -0
  145. package/esm2022/pagination/yuuvis-client-framework-pagination.mjs +5 -0
  146. package/esm2022/panel/index.mjs +2 -0
  147. package/esm2022/panel/lib/panel.component.mjs +20 -0
  148. package/esm2022/panel/yuuvis-client-framework-panel.mjs +5 -0
  149. package/esm2022/renderer/index.mjs +11 -0
  150. package/esm2022/renderer/lib/property-renderer/abstract.renderer.mjs +29 -0
  151. package/esm2022/renderer/lib/property-renderer/datetime.renderer.mjs +13 -0
  152. package/esm2022/renderer/lib/property-renderer/decimal.renderer.component.mjs +12 -0
  153. package/esm2022/renderer/lib/property-renderer/filesize.renderer.component.mjs +28 -0
  154. package/esm2022/renderer/lib/property-renderer/icon.renderer.component.mjs +23 -0
  155. package/esm2022/renderer/lib/property-renderer/integer.renderer.component.mjs +12 -0
  156. package/esm2022/renderer/lib/property-renderer/organization.renderer.mjs +19 -0
  157. package/esm2022/renderer/lib/property-renderer/string.renderer.component.mjs +12 -0
  158. package/esm2022/renderer/lib/property-renderer/unknown.renderer.mjs +12 -0
  159. package/esm2022/renderer/lib/renderer.directive.mjs +51 -0
  160. package/esm2022/renderer/lib/services/renderer/renderer.interface.mjs +2 -0
  161. package/esm2022/renderer/lib/services/renderer/renderer.service.mjs +84 -0
  162. package/esm2022/renderer/yuuvis-client-framework-renderer.mjs +5 -0
  163. package/esm2022/sequence-list/index.mjs +6 -0
  164. package/esm2022/sequence-list/lib/due-date-picker/due-date-picker.component.mjs +99 -0
  165. package/esm2022/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.mjs +183 -0
  166. package/esm2022/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.mjs +114 -0
  167. package/esm2022/sequence-list/lib/sequence-list.component.mjs +146 -0
  168. package/esm2022/sequence-list/lib/sequence-list.interface.mjs +2 -0
  169. package/esm2022/sequence-list/yuuvis-client-framework-sequence-list.mjs +5 -0
  170. package/esm2022/simple-search/index.mjs +3 -0
  171. package/esm2022/simple-search/lib/simple-search/simple-search.component.mjs +111 -0
  172. package/esm2022/simple-search/lib/simple-search/simple-search.interface.mjs +2 -0
  173. package/esm2022/simple-search/yuuvis-client-framework-simple-search.mjs +5 -0
  174. package/esm2022/tile-list/index.mjs +11 -0
  175. package/esm2022/tile-list/lib/tile/tile.component.mjs +53 -0
  176. package/esm2022/tile-list/lib/tile-config/action-select/action-select.component.mjs +22 -0
  177. package/esm2022/tile-list/lib/tile-config/icon-select/icon-select.component.mjs +33 -0
  178. package/esm2022/tile-list/lib/tile-config/property-select/property-select.component.mjs +91 -0
  179. package/esm2022/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.mjs +66 -0
  180. package/esm2022/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.mjs +46 -0
  181. package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +156 -0
  182. package/esm2022/tile-list/lib/tile-extension/directive/tile-extension.directive.mjs +37 -0
  183. package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +42 -0
  184. package/esm2022/tile-list/lib/tile-extension/tile-extension.service.mjs +35 -0
  185. package/esm2022/tile-list/lib/tile-list/tile-list.component.mjs +510 -0
  186. package/esm2022/tile-list/lib/tile-list/tile-list.interface.mjs +2 -0
  187. package/esm2022/tile-list/yuuvis-client-framework-tile-list.mjs +5 -0
  188. package/esm2022/token-search/index.mjs +3 -0
  189. package/esm2022/token-search/token-search.component.mjs +78 -0
  190. package/esm2022/token-search/token-search.interface.mjs +2 -0
  191. package/esm2022/token-search/yuuvis-client-framework-token-search.mjs +5 -0
  192. package/esm2022/tree/index.mjs +3 -0
  193. package/esm2022/tree/lib/tree-node/tree-node.component.mjs +65 -0
  194. package/esm2022/tree/lib/tree.component.mjs +148 -0
  195. package/esm2022/tree/lib/tree.interface.mjs +2 -0
  196. package/esm2022/tree/lib/tree.service.mjs +95 -0
  197. package/esm2022/tree/yuuvis-client-framework-tree.mjs +5 -0
  198. package/esm2022/upload-progress/index.mjs +2 -0
  199. package/esm2022/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.mjs +49 -0
  200. package/esm2022/upload-progress/lib/upload-progress/upload-progress.component.mjs +37 -0
  201. package/esm2022/upload-progress/yuuvis-client-framework-upload-progress.mjs +5 -0
  202. package/esm2022/user-avatar/index.mjs +3 -0
  203. package/esm2022/user-avatar/lib/user-avatar.component.mjs +69 -0
  204. package/esm2022/user-avatar/lib/user-avatar.module.mjs +24 -0
  205. package/esm2022/user-avatar/yuuvis-client-framework-user-avatar.mjs +5 -0
  206. package/esm2022/yuuvis-client-framework.mjs +5 -0
  207. package/fesm2022/yuuvis-client-framework-actions.mjs +333 -0
  208. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -0
  209. package/fesm2022/yuuvis-client-framework-app-bar.mjs +96 -0
  210. package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -0
  211. package/fesm2022/yuuvis-client-framework-clipboard.mjs +55 -0
  212. package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -0
  213. package/fesm2022/yuuvis-client-framework-common.mjs +1020 -0
  214. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -0
  215. package/fesm2022/yuuvis-client-framework-forms.mjs +1355 -0
  216. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -0
  217. package/fesm2022/yuuvis-client-framework-icons.mjs +123 -0
  218. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -0
  219. package/fesm2022/yuuvis-client-framework-list.mjs +209 -0
  220. package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -0
  221. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +302 -0
  222. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -0
  223. package/fesm2022/yuuvis-client-framework-object-details.mjs +583 -0
  224. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -0
  225. package/fesm2022/yuuvis-client-framework-object-flavor.mjs +200 -0
  226. package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -0
  227. package/fesm2022/yuuvis-client-framework-object-form.mjs +1664 -0
  228. package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -0
  229. package/fesm2022/yuuvis-client-framework-object-preview.mjs +213 -0
  230. package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -0
  231. package/fesm2022/yuuvis-client-framework-object-summary.mjs +397 -0
  232. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -0
  233. package/fesm2022/yuuvis-client-framework-pagination.mjs +55 -0
  234. package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -0
  235. package/fesm2022/yuuvis-client-framework-panel.mjs +27 -0
  236. package/fesm2022/yuuvis-client-framework-panel.mjs.map +1 -0
  237. package/fesm2022/yuuvis-client-framework-renderer.mjs +262 -0
  238. package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -0
  239. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +519 -0
  240. package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -0
  241. package/fesm2022/yuuvis-client-framework-simple-search.mjs +118 -0
  242. package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -0
  243. package/fesm2022/yuuvis-client-framework-tile-list.mjs +1036 -0
  244. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -0
  245. package/fesm2022/yuuvis-client-framework-token-search.mjs +85 -0
  246. package/fesm2022/yuuvis-client-framework-token-search.mjs.map +1 -0
  247. package/fesm2022/yuuvis-client-framework-tree.mjs +307 -0
  248. package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -0
  249. package/fesm2022/yuuvis-client-framework-upload-progress.mjs +84 -0
  250. package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -0
  251. package/fesm2022/yuuvis-client-framework-user-avatar.mjs +96 -0
  252. package/fesm2022/yuuvis-client-framework-user-avatar.mjs.map +1 -0
  253. package/fesm2022/yuuvis-client-framework.mjs +22 -0
  254. package/fesm2022/yuuvis-client-framework.mjs.map +1 -0
  255. package/forms/README.md +3 -0
  256. package/forms/index.d.ts +9 -0
  257. package/forms/lib/elements/catalog/catalog.component.d.ts +68 -0
  258. package/forms/lib/elements/datetime/datetime.component.d.ts +32 -0
  259. package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +51 -0
  260. package/forms/lib/elements/number/number.component.d.ts +77 -0
  261. package/forms/lib/elements/number-range/number-range.component.d.ts +66 -0
  262. package/forms/lib/elements/organization/organization.component.d.ts +93 -0
  263. package/forms/lib/elements/string/string.component.d.ts +104 -0
  264. package/forms/lib/form-input/form-input.component.d.ts +48 -0
  265. package/forms/lib/forms.module.d.ts +16 -0
  266. package/icons/README.md +5 -0
  267. package/icons/index.d.ts +3 -0
  268. package/icons/lib/icon.service.d.ts +38 -0
  269. package/icons/lib/icons.d.ts +1 -0
  270. package/icons/lib/object-type-icon/object-type-icon.component.d.ts +11 -0
  271. package/index.d.ts +1 -0
  272. package/lib/yuuvis-client-framework.module.d.ts +7 -0
  273. package/list/README.md +3 -0
  274. package/list/index.d.ts +2 -0
  275. package/list/lib/list-item.directive.d.ts +15 -0
  276. package/list/lib/list.component.d.ts +36 -0
  277. package/metadata-form/README.md +21 -0
  278. package/metadata-form/index.d.ts +3 -0
  279. package/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.d.ts +5 -0
  280. package/metadata-form/lib/metadata-form-element-registry.service.d.ts +47 -0
  281. package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +31 -0
  282. package/metadata-form/lib/object-metadata-element-template.directive.d.ts +27 -0
  283. package/object-details/README.md +28 -0
  284. package/object-details/index.d.ts +6 -0
  285. package/object-details/lib/object-audit/object-audit.component.d.ts +59 -0
  286. package/object-details/lib/object-details-shell/object-details-shell.component.d.ts +51 -0
  287. package/object-details/lib/object-details.component.d.ts +36 -0
  288. package/object-details/lib/object-metadata/form-section-group.pipe.d.ts +8 -0
  289. package/object-details/lib/object-metadata/object-metadata.component.d.ts +48 -0
  290. package/object-details/lib/object-metadata/object-metadata.interface.d.ts +26 -0
  291. package/object-flavor/README.md +3 -0
  292. package/object-flavor/index.d.ts +5 -0
  293. package/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.d.ts +12 -0
  294. package/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.d.ts +12 -0
  295. package/object-flavor/lib/flavor-chip/flavor-chip.component.d.ts +17 -0
  296. package/object-flavor/lib/object-flavor/object-flavor.component.d.ts +26 -0
  297. package/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.d.ts +10 -0
  298. package/object-form/README.md +3 -0
  299. package/object-form/index.d.ts +4 -0
  300. package/object-form/lib/form-scripting.api.interface.d.ts +131 -0
  301. package/object-form/lib/form-scripting.service.d.ts +30 -0
  302. package/object-form/lib/object-form-element/object-form-element.component.d.ts +22 -0
  303. package/object-form/lib/object-form-extension.interface.d.ts +22 -0
  304. package/object-form/lib/object-form-group/object-form-group.component.d.ts +22 -0
  305. package/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.d.ts +10 -0
  306. package/object-form/lib/object-form-script/object-form-script.service.d.ts +45 -0
  307. package/object-form/lib/object-form-script/object-form-scripting-scope.d.ts +50 -0
  308. package/object-form/lib/object-form-translate.service.d.ts +15 -0
  309. package/object-form/lib/object-form.component.d.ts +60 -0
  310. package/object-form/lib/object-form.interface.d.ts +113 -0
  311. package/object-form/lib/object-form.model.d.ts +18 -0
  312. package/object-form/lib/object-form.service.d.ts +39 -0
  313. package/object-form/lib/object-form.utils.d.ts +20 -0
  314. package/object-form/lib/object-form.validation.d.ts +21 -0
  315. package/object-preview/README.md +3 -0
  316. package/object-preview/index.d.ts +2 -0
  317. package/object-preview/lib/components/index.d.ts +2 -0
  318. package/object-preview/lib/components/object-email-preview/object-email-preview.component.d.ts +16 -0
  319. package/object-preview/lib/components/object-preview/object-preview.component.d.ts +13 -0
  320. package/object-preview/lib/services/object-preview.service.d.ts +37 -0
  321. package/object-summary/README.md +3 -0
  322. package/object-summary/index.d.ts +4 -0
  323. package/object-summary/lib/multi-object-summary/multi-object-summary.component.d.ts +7 -0
  324. package/object-summary/lib/object-summary/object-summary.component.d.ts +73 -0
  325. package/object-summary/lib/object-summary-data/object-summary-data.component.d.ts +11 -0
  326. package/object-summary/lib/object-summary.module.d.ts +7 -0
  327. package/package.json +173 -0
  328. package/pagination/README.md +3 -0
  329. package/pagination/index.d.ts +2 -0
  330. package/pagination/lib/pagination.component.d.ts +18 -0
  331. package/pagination/lib/pagination.interface.d.ts +5 -0
  332. package/panel/README.md +3 -0
  333. package/panel/index.d.ts +1 -0
  334. package/panel/lib/panel.component.d.ts +12 -0
  335. package/renderer/README.md +5 -0
  336. package/renderer/index.d.ts +10 -0
  337. package/renderer/lib/property-renderer/abstract.renderer.d.ts +14 -0
  338. package/renderer/lib/property-renderer/datetime.renderer.d.ts +6 -0
  339. package/renderer/lib/property-renderer/decimal.renderer.component.d.ts +6 -0
  340. package/renderer/lib/property-renderer/filesize.renderer.component.d.ts +7 -0
  341. package/renderer/lib/property-renderer/icon.renderer.component.d.ts +6 -0
  342. package/renderer/lib/property-renderer/integer.renderer.component.d.ts +6 -0
  343. package/renderer/lib/property-renderer/organization.renderer.d.ts +7 -0
  344. package/renderer/lib/property-renderer/string.renderer.component.d.ts +6 -0
  345. package/renderer/lib/property-renderer/unknown.renderer.d.ts +6 -0
  346. package/renderer/lib/renderer.directive.d.ts +17 -0
  347. package/renderer/lib/services/renderer/renderer.interface.d.ts +8 -0
  348. package/renderer/lib/services/renderer/renderer.service.d.ts +35 -0
  349. package/sequence-list/README.md +3 -0
  350. package/sequence-list/index.d.ts +5 -0
  351. package/sequence-list/lib/due-date-picker/due-date-picker.component.d.ts +28 -0
  352. package/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.d.ts +52 -0
  353. package/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.d.ts +36 -0
  354. package/sequence-list/lib/sequence-list.component.d.ts +43 -0
  355. package/sequence-list/lib/sequence-list.interface.d.ts +16 -0
  356. package/simple-search/README.md +3 -0
  357. package/simple-search/index.d.ts +2 -0
  358. package/simple-search/lib/simple-search/simple-search.component.d.ts +55 -0
  359. package/simple-search/lib/simple-search/simple-search.interface.d.ts +4 -0
  360. package/styles/client-framework.scss +27 -0
  361. package/tile-list/README.md +3 -0
  362. package/tile-list/index.d.ts +10 -0
  363. package/tile-list/lib/tile/tile.component.d.ts +22 -0
  364. package/tile-list/lib/tile-config/action-select/action-select.component.d.ts +13 -0
  365. package/tile-list/lib/tile-config/icon-select/icon-select.component.d.ts +11 -0
  366. package/tile-list/lib/tile-config/property-select/property-select.component.d.ts +25 -0
  367. package/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.d.ts +20 -0
  368. package/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.d.ts +17 -0
  369. package/tile-list/lib/tile-config/tile-config.component.d.ts +47 -0
  370. package/tile-list/lib/tile-extension/directive/tile-extension.directive.d.ts +11 -0
  371. package/tile-list/lib/tile-extension/extensions/email.extension.d.ts +10 -0
  372. package/tile-list/lib/tile-extension/tile-extension.service.d.ts +16 -0
  373. package/tile-list/lib/tile-list/tile-list.component.d.ts +116 -0
  374. package/tile-list/lib/tile-list/tile-list.interface.d.ts +18 -0
  375. package/token-search/README.md +3 -0
  376. package/token-search/index.d.ts +2 -0
  377. package/token-search/token-search.component.d.ts +22 -0
  378. package/token-search/token-search.interface.d.ts +4 -0
  379. package/tree/README.md +3 -0
  380. package/tree/index.d.ts +2 -0
  381. package/tree/lib/tree-node/tree-node.component.d.ts +21 -0
  382. package/tree/lib/tree.component.d.ts +53 -0
  383. package/tree/lib/tree.interface.d.ts +11 -0
  384. package/tree/lib/tree.service.d.ts +35 -0
  385. package/upload-progress/README.md +3 -0
  386. package/upload-progress/index.d.ts +1 -0
  387. package/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.d.ts +17 -0
  388. package/upload-progress/lib/upload-progress/upload-progress.component.d.ts +16 -0
  389. package/user-avatar/README.md +3 -0
  390. package/user-avatar/index.d.ts +2 -0
  391. package/user-avatar/lib/user-avatar.component.d.ts +44 -0
  392. package/user-avatar/lib/user-avatar.module.d.ts +8 -0
@@ -0,0 +1,160 @@
1
+ import { inject, Injectable, NgZone, signal } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { ApiBase, AppCacheService, BackendService, DmsObject, DmsService, EventService, NotificationService, Operator, SearchService, SystemService, TranslateService, UserService, Utils, YuvEventType } from '@yuuvis/client-core';
4
+ import { firstValueFrom, map } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class FormScriptingApiService {
7
+ constructor() {
8
+ this.#ngZone = inject(NgZone);
9
+ this.#router = inject(Router);
10
+ this.#eventService = inject(EventService);
11
+ this.#userService = inject(UserService);
12
+ this.#dmsService = inject(DmsService);
13
+ this.#systemService = inject(SystemService);
14
+ this.#searchService = inject(SearchService);
15
+ this.#backend = inject(BackendService);
16
+ this.#translate = inject(TranslateService);
17
+ this.#notifications = inject(NotificationService);
18
+ this.#appCache = inject(AppCacheService);
19
+ this.#activeFormComponents = new Map();
20
+ this.elementExtensions = signal({});
21
+ }
22
+ #ngZone;
23
+ #router;
24
+ #eventService;
25
+ #userService;
26
+ #dmsService;
27
+ #systemService;
28
+ #searchService;
29
+ #backend;
30
+ #translate;
31
+ #notifications;
32
+ #appCache;
33
+ static { this.EVENT_MODEL_CHANGED = 'yuv.event.object-form.model.changed'; }
34
+ #activeFormComponents;
35
+ get api() {
36
+ return this.getApi();
37
+ }
38
+ registerActiveForm(component) {
39
+ const id = component.formOptions()?.formModel?.name || component?.id;
40
+ return id && this.#activeFormComponents.set(id, component);
41
+ }
42
+ unregisterActiveForm(component) {
43
+ const id = component.formOptions()?.formModel?.name || component?.id;
44
+ return id && this.#activeFormComponents.delete(id);
45
+ }
46
+ getApi() {
47
+ const formId = this.formId;
48
+ return {
49
+ elementExtensions: {
50
+ register: (extensions) => {
51
+ extensions.forEach((ext) => {
52
+ if (ext.id)
53
+ this.elementExtensions.set({ ...this.elementExtensions(), [ext.id]: ext });
54
+ });
55
+ }
56
+ },
57
+ events: {
58
+ yuuvisEventType: YuvEventType,
59
+ on: (type) => this.#ngZone.run(() => this.#eventService.on(type)),
60
+ trigger: (type, data) => this.#ngZone.run(() => this.#eventService.trigger(type, data))
61
+ },
62
+ session: {
63
+ getUser: () => this.getCurrentUser(),
64
+ user: {
65
+ get: () => this.getCurrentUser(),
66
+ hasRole: (role) => this.getCurrentUser().authorities?.includes(role) || false
67
+ }
68
+ },
69
+ http: {
70
+ get: (uri, base, options) => this.get(uri, base, options),
71
+ post: (uri, data, base, options) => this.post(uri, data, base, options),
72
+ del: (uri, base, options) => this.del(uri, base, options),
73
+ put: (uri, data, base, options) => this.put(uri, data, base, options)
74
+ },
75
+ form: {
76
+ activeForms: this.#activeFormComponents,
77
+ getValue: (formControlName) => Array.from(this.#activeFormComponents.values()).reduce((prev, cur) => ({ ...prev, ...(cur.formData || {}) }), {})[formControlName],
78
+ setValue: (formControlName, newValue) => this.api.form.modelChange(formControlName, { name: 'value', newValue }),
79
+ modelChange: (formControlName, change) => this.#ngZone.run(() => this.#eventService.trigger(FormScriptingApiService.EVENT_MODEL_CHANGED, {
80
+ formId,
81
+ formControlName,
82
+ change
83
+ }))
84
+ },
85
+ storage: {
86
+ getItem: (key) => firstValueFrom(this.#appCache.getItem(key)),
87
+ setItem: (key, value) => firstValueFrom(this.#appCache.setItem(key, value))
88
+ },
89
+ notifier: {
90
+ success: (text, title) => this.#notifications.success(title, text),
91
+ error: (text, title) => this.#notifications.error(title, text),
92
+ info: (text, title) => this.#notifications.info(title, text),
93
+ warning: (text, title) => this.#notifications.warning(title, text)
94
+ },
95
+ util: {
96
+ translate: (key, data) => this.#translate.instant(key, data)
97
+ }
98
+ };
99
+ }
100
+ get(uri, base, options) {
101
+ return firstValueFrom(this.#backend.get(uri, base || ApiBase.none, options || { observe: 'response' }).pipe(map((res) => {
102
+ return options ? res : { status: res.status, data: res.body };
103
+ })));
104
+ }
105
+ put(uri, data, base, options) {
106
+ return firstValueFrom(this.#backend.put(uri, data, base || ApiBase.none, options));
107
+ }
108
+ post(uri, data, base, options) {
109
+ return firstValueFrom(this.#backend.post(uri, data, base || ApiBase.none, options));
110
+ }
111
+ del(uri, base, options) {
112
+ return firstValueFrom(this.#backend.delete(uri, base || ApiBase.none, options));
113
+ }
114
+ getCurrentUser() {
115
+ return this.#userService.getCurrentUser();
116
+ }
117
+ getDmsObject(id, version) {
118
+ return firstValueFrom(this.#dmsService.getDmsObject(id, version))
119
+ .then((response) => {
120
+ return Promise.resolve(response);
121
+ })
122
+ .catch(this.#handleError);
123
+ }
124
+ /**
125
+ * fetches dms objects from the server that match the given params
126
+ *
127
+ * @param fields - the fields to match. example: {name: 'max', plz: '47111}
128
+ * @param type - the target object type
129
+ */
130
+ getResult(fields, type) {
131
+ const searchQuery = {
132
+ filters: Object.keys(fields).map((f) => ({
133
+ f,
134
+ o: Operator.EQUAL,
135
+ v1: fields[f]
136
+ }))
137
+ };
138
+ if (type)
139
+ searchQuery.types = [type];
140
+ return firstValueFrom(this.#searchService.search(searchQuery))
141
+ .then((res) => {
142
+ return Promise.resolve(res.items.map((resItem) => {
143
+ new DmsObject(resItem);
144
+ }));
145
+ })
146
+ .catch(this.#handleError);
147
+ }
148
+ encodeFileName(filename) {
149
+ return Utils.encodeFileName(filename);
150
+ }
151
+ #handleError(error) {
152
+ return Promise.reject(error.message || error);
153
+ }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormScriptingApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
155
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormScriptingApiService }); }
156
+ }
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormScriptingApiService, decorators: [{
158
+ type: Injectable
159
+ }] });
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY3JpcHRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9mb3JtLXNjcmlwdGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFDTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLGNBQWMsRUFDZCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFFWixtQkFBbUIsRUFDbkIsUUFBUSxFQUlSLGFBQWEsRUFDYixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxLQUFLLEVBQ0wsWUFBWSxFQUViLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSzNDLE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFFRSxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsa0JBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsaUJBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsbUJBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FB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QWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDM0QsSUFBSSxDQUFDLENBQUMsR0FBaUIsRUFBRSxFQUFFO1lBQzFCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUF5QixFQUFFLEVBQUU7Z0JBQzFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBZ0I7UUFDN0IsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOytHQS9KVSx1QkFBdUI7bUhBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcGlCYXNlLFxuICBBcHBDYWNoZVNlcnZpY2UsXG4gIEJhY2tlbmRTZXJ2aWNlLFxuICBEbXNPYmplY3QsXG4gIERtc1NlcnZpY2UsXG4gIEV2ZW50U2VydmljZSxcbiAgSHR0cE9wdGlvbnMsXG4gIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gIE9wZXJhdG9yLFxuICBTZWFyY2hRdWVyeSxcbiAgU2VhcmNoUmVzdWx0LFxuICBTZWFyY2hSZXN1bHRJdGVtLFxuICBTZWFyY2hTZXJ2aWNlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHMsXG4gIFl1dkV2ZW50VHlwZSxcbiAgWXV2VXNlclxufSBmcm9tICdAeXV1dmlzL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1TY3JpcHRpbmdBUEksIEZvcm1TY3JpcHRpbmdFbGVtZW50RXh0ZW5zaW9uIH0gZnJvbSAnLi9mb3JtLXNjcmlwdGluZy5hcGkuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9iamVjdEZvcm1Db21wb25lbnQgfSBmcm9tICcuL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtU2NyaXB0aW5nQXBpU2VydmljZSB7XG4gICNuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgI3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAjZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEV2ZW50U2VydmljZSk7XG4gICN1c2VyU2VydmljZSA9IGluamVjdChVc2VyU2VydmljZSk7XG4gICNkbXNTZXJ2aWNlID0gaW5qZWN0KERtc1NlcnZpY2UpO1xuICAjc3lzdGVtU2VydmljZSA9IGluamVjdChTeXN0ZW1TZXJ2aWNlKTtcbiAgI3NlYXJjaFNlcnZpY2UgPSBpbmplY3QoU2VhcmNoU2VydmljZSk7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcbiAgI3RyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgI25vdGlmaWNhdGlvbnMgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG4gICNhcHBDYWNoZSA9IGluamVjdChBcHBDYWNoZVNlcnZpY2UpO1xuXG4gIHN0YXRpYyBFVkVOVF9NT0RFTF9DSEFOR0VEID0gJ3l1di5ldmVudC5vYmplY3QtZm9ybS5tb2RlbC5jaGFuZ2VkJztcbiAgI2FjdGl2ZUZvcm1Db21wb25lbnRzID0gbmV3IE1hcDxzdHJpbmcsIE9iamVjdEZvcm1Db21wb25lbnQ+KCk7XG4gIGVsZW1lbnRFeHRlbnNpb25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIEZvcm1TY3JpcHRpbmdFbGVtZW50RXh0ZW5zaW9uPj4oe30pO1xuICBmb3JtSWQ/OiBzdHJpbmc7XG5cbiAgZ2V0IGFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyQWN0aXZlRm9ybShjb21wb25lbnQ6IE9iamVjdEZvcm1Db21wb25lbnQpIHtcbiAgICBjb25zdCBpZCA9IGNvbXBvbmVudC5mb3JtT3B0aW9ucygpPy5mb3JtTW9kZWw/Lm5hbWUgfHwgY29tcG9uZW50Py5pZDtcbiAgICByZXR1cm4gaWQgJiYgdGhpcy4jYWN0aXZlRm9ybUNvbXBvbmVudHMuc2V0KGlkLCBjb21wb25lbnQpO1xuICB9XG5cbiAgdW5yZWdpc3RlckFjdGl2ZUZvcm0oY29tcG9uZW50OiBPYmplY3RGb3JtQ29tcG9uZW50KSB7XG4gICAgY29uc3QgaWQgPSBjb21wb25lbnQuZm9ybU9wdGlvbnMoKT8uZm9ybU1vZGVsPy5uYW1lIHx8IGNvbXBvbmVudD8uaWQ7XG4gICAgcmV0dXJuIGlkICYmIHRoaXMuI2FjdGl2ZUZvcm1Db21wb25lbnRzLmRlbGV0ZShpZCk7XG4gIH1cblxuICBnZXRBcGkoKTogRm9ybVNjcmlwdGluZ0FQSSB7XG4gICAgY29uc3QgZm9ybUlkID0gdGhpcy5mb3JtSWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnRFeHRlbnNpb25zOiB7XG4gICAgICAgIHJlZ2lzdGVyOiAoZXh0ZW5zaW9uczogRm9ybVNjcmlwdGluZ0VsZW1lbnRFeHRlbnNpb25bXSkgPT4ge1xuICAgICAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoZXh0KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXh0LmlkKSB0aGlzLmVsZW1lbnRFeHRlbnNpb25zLnNldCh7IC4uLnRoaXMuZWxlbWVudEV4dGVuc2lvbnMoKSwgW2V4dC5pZF06IGV4dCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICB5dXV2aXNFdmVudFR5cGU6IFl1dkV2ZW50VHlwZSxcbiAgICAgICAgb246ICh0eXBlOiBzdHJpbmcpID0+IHRoaXMuI25nWm9uZS5ydW4oKCkgPT4gdGhpcy4jZXZlbnRTZXJ2aWNlLm9uKHR5cGUpKSxcbiAgICAgICAgdHJpZ2dlcjogKHR5cGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gdGhpcy4jbmdab25lLnJ1bigoKSA9PiB0aGlzLiNldmVudFNlcnZpY2UudHJpZ2dlcih0eXBlLCBkYXRhKSlcbiAgICAgIH0sXG4gICAgICBzZXNzaW9uOiB7XG4gICAgICAgIGdldFVzZXI6ICgpID0+IHRoaXMuZ2V0Q3VycmVudFVzZXIoKSxcbiAgICAgICAgdXNlcjoge1xuICAgICAgICAgIGdldDogKCkgPT4gdGhpcy5nZXRDdXJyZW50VXNlcigpLFxuICAgICAgICAgIGhhc1JvbGU6IChyb2xlOiBzdHJpbmcpID0+IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5hdXRob3JpdGllcz8uaW5jbHVkZXMocm9sZSkgfHwgZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGh0dHA6IHtcbiAgICAgICAgZ2V0OiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmdldCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwb3N0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnBvc3QodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgZGVsOiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmRlbCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwdXQ6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucHV0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBmb3JtOiB7XG4gICAgICAgIGFjdGl2ZUZvcm1zOiB0aGlzLiNhY3RpdmVGb3JtQ29tcG9uZW50cyxcbiAgICAgICAgZ2V0VmFsdWU6IChmb3JtQ29udHJvbE5hbWUpID0+XG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLiNhY3RpdmVGb3JtQ29tcG9uZW50cy52YWx1ZXMoKSkucmVkdWNlKFxuICAgICAgICAgICAgKHByZXY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBjdXI6IE9iamVjdEZvcm1Db21wb25lbnQpID0+ICh7IC4uLnByZXYsIC4uLihjdXIuZm9ybURhdGEgfHwge30pIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApW2Zvcm1Db250cm9sTmFtZV0sXG4gICAgICAgIHNldFZhbHVlOiAoZm9ybUNvbnRyb2xOYW1lLCBuZXdWYWx1ZSkgPT4gdGhpcy5hcGkuZm9ybS5tb2RlbENoYW5nZShmb3JtQ29udHJvbE5hbWUsIHsgbmFtZTogJ3ZhbHVlJywgbmV3VmFsdWUgfSksXG4gICAgICAgIG1vZGVsQ2hhbmdlOiAoZm9ybUNvbnRyb2xOYW1lLCBjaGFuZ2UpID0+XG4gICAgICAgICAgdGhpcy4jbmdab25lLnJ1bigoKSA9PlxuICAgICAgICAgICAgdGhpcy4jZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRm9ybVNjcmlwdGluZ0FwaVNlcnZpY2UuRVZFTlRfTU9ERUxfQ0hBTkdFRCwge1xuICAgICAgICAgICAgICBmb3JtSWQsXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZSxcbiAgICAgICAgICAgICAgY2hhbmdlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdG9yYWdlOiB7XG4gICAgICAgIGdldEl0ZW06IChrZXkpID0+IGZpcnN0VmFsdWVGcm9tKHRoaXMuI2FwcENhY2hlLmdldEl0ZW0oa2V5KSksXG4gICAgICAgIHNldEl0ZW06IChrZXksIHZhbHVlKSA9PiBmaXJzdFZhbHVlRnJvbSh0aGlzLiNhcHBDYWNoZS5zZXRJdGVtKGtleSwgdmFsdWUpKVxuICAgICAgfSxcbiAgICAgIG5vdGlmaWVyOiB7XG4gICAgICAgIHN1Y2Nlc3M6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy4jbm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgZXJyb3I6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy4jbm90aWZpY2F0aW9ucy5lcnJvcih0aXRsZSwgdGV4dCksXG4gICAgICAgIGluZm86ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy4jbm90aWZpY2F0aW9ucy5pbmZvKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgd2FybmluZzogKHRleHQsIHRpdGxlKSA9PiB0aGlzLiNub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXG4gICAgICB9LFxuICAgICAgdXRpbDoge1xuICAgICAgICB0cmFuc2xhdGU6IChrZXksIGRhdGEpID0+IHRoaXMuI3RyYW5zbGF0ZS5pbnN0YW50KGtleSwgZGF0YSlcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0KHVyaTogc3RyaW5nLCBiYXNlPzogc3RyaW5nLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLiNiYWNrZW5kLmdldCh1cmksIGJhc2UgfHwgQXBpQmFzZS5ub25lLCBvcHRpb25zIHx8IHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyB9KS5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPyByZXMgOiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogcmVzLmJvZHkgfTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHV0KHVyaTogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgYmFzZT86IHN0cmluZywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuI2JhY2tlbmQucHV0KHVyaSwgZGF0YSwgYmFzZSB8fCBBcGlCYXNlLm5vbmUsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIHBvc3QodXJpOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBiYXNlPzogc3RyaW5nLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy4jYmFja2VuZC5wb3N0KHVyaSwgZGF0YSwgYmFzZSB8fCBBcGlCYXNlLm5vbmUsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIGRlbCh1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuI2JhY2tlbmQuZGVsZXRlKHVyaSwgYmFzZSB8fCBBcGlCYXNlLm5vbmUsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRVc2VyKCk6IFl1dlVzZXIge1xuICAgIHJldHVybiB0aGlzLiN1c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xuICB9XG5cbiAgZ2V0RG1zT2JqZWN0KGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlcik6IFByb21pc2U8RG1zT2JqZWN0PiB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuI2Rtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0KGlkLCB2ZXJzaW9uKSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy4jaGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZldGNoZXMgZG1zIG9iamVjdHMgZnJvbSB0aGUgc2VydmVyIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gZmllbGRzIC0gdGhlIGZpZWxkcyB0byBtYXRjaC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAqL1xuICBnZXRSZXN1bHQoZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdHlwZT86IHN0cmluZyk6IFByb21pc2U8RG1zT2JqZWN0W10+IHtcbiAgICBjb25zdCBzZWFyY2hRdWVyeTogU2VhcmNoUXVlcnkgPSB7XG4gICAgICBmaWx0ZXJzOiBPYmplY3Qua2V5cyhmaWVsZHMpLm1hcCgoZikgPT4gKHtcbiAgICAgICAgZixcbiAgICAgICAgbzogT3BlcmF0b3IuRVFVQUwsXG4gICAgICAgIHYxOiBmaWVsZHNbZl1cbiAgICAgIH0pKVxuICAgIH07XG4gICAgaWYgKHR5cGUpIHNlYXJjaFF1ZXJ5LnR5cGVzID0gW3R5cGVdO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLiNzZWFyY2hTZXJ2aWNlLnNlYXJjaChzZWFyY2hRdWVyeSkpXG4gICAgICAudGhlbigocmVzOiBTZWFyY2hSZXN1bHQpID0+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICByZXMuaXRlbXMubWFwKChyZXNJdGVtOiBTZWFyY2hSZXN1bHRJdGVtKSA9PiB7XG4gICAgICAgICAgICBuZXcgRG1zT2JqZWN0KHJlc0l0ZW0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKHRoaXMuI2hhbmRsZUVycm9yKTtcbiAgfVxuXG4gIGVuY29kZUZpbGVOYW1lKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpO1xuICB9XG5cbiAgI2hhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,87 @@
1
+ import { CommonModule, NgComponentOutlet } from '@angular/common';
2
+ import { Component, computed, DestroyRef, effect, inject, input, signal, untracked, ViewEncapsulation } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { ReactiveFormsModule } from '@angular/forms';
5
+ import { Classification, Situation } from '@yuuvis/client-core';
6
+ import { MetadataFormFieldComponent } from '@yuuvis/client-framework/metadata-form';
7
+ import { ObjectFormTranslateService } from '../object-form-translate.service';
8
+ import { ObjectFormService } from '../object-form.service';
9
+ import { FormScriptingApiService } from '../form-scripting.service';
10
+ import { FormScriptingElementExtensionComponent } from '../object-form-script/form-scripting-element-extension/form-scripting-element-extension.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@angular/forms";
14
+ export class ObjectFormElementComponent {
15
+ constructor() {
16
+ this.#destroyRef = inject(DestroyRef);
17
+ this.#formTranslateService = inject(ObjectFormTranslateService);
18
+ this.#objectFormService = inject(ObjectFormService);
19
+ this.#scriptingApi = inject(FormScriptingApiService);
20
+ this.createForm = signal(false);
21
+ this.extensionComponents = [];
22
+ this.#scriptingExtensions = this.#scriptingApi.elementExtensions;
23
+ this.scriptingExtensions = computed(() => Object.values(this.#scriptingExtensions()).filter((ext) => ext.propertyName === this.formControlName));
24
+ this.scriptExtensionCmp = FormScriptingElementExtensionComponent;
25
+ this.situation = input();
26
+ this.element = input();
27
+ this.#elementEffect = effect(() => {
28
+ const element = this.element();
29
+ untracked(() => {
30
+ this.createForm.set(true);
31
+ element && this.#setElement(this.element());
32
+ });
33
+ });
34
+ }
35
+ #destroyRef;
36
+ #formTranslateService;
37
+ #objectFormService;
38
+ #scriptingApi;
39
+ #scriptingExtensions;
40
+ #elementEffect;
41
+ get extensionComponentInput() {
42
+ const xti = {
43
+ formControlName: this.formControlName || ''
44
+ };
45
+ return xti;
46
+ }
47
+ #setElement(el) {
48
+ if (el && el._eoFormControlWrapper) {
49
+ this.formControlName = el._eoFormControlWrapper.controlName;
50
+ this.formElementRef = el.controls[this.formControlName];
51
+ this.formElementRef._eoFormElement = this.#setGrouping(this.formElementRef?._eoFormElement);
52
+ this.formElementRef?.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => this.#setupErrors());
53
+ this.extensionComponents = this.#objectFormService.getElementExtensions(this.formControlName);
54
+ this.createForm.set(false);
55
+ }
56
+ }
57
+ /**
58
+ * formating rules...
59
+ * https://wiki.optimal-systems.de/display/PM/Status+yuuvis+Momentum+-+Flex+client
60
+ */
61
+ #setGrouping(formElement) {
62
+ return { ...formElement, grouping: !!formElement?.classifications?.includes(Classification.NUMBER_DIGIT) };
63
+ }
64
+ onDataMetaChange(data) {
65
+ this.formElementRef._eoFormElement.dataMeta = data;
66
+ }
67
+ #setupErrors() {
68
+ this.errors = undefined;
69
+ if ((this.situation() !== Situation.SEARCH && this.situation() !== Situation.CREATE && this.formElementRef.errors) ||
70
+ ((this.situation() === Situation.SEARCH || this.situation() === Situation.CREATE) &&
71
+ this.formElementRef.errors &&
72
+ (this.formElementRef.dirty || this.formElementRef.touched))) {
73
+ this.errors = Object.keys(this.formElementRef.errors).map((key) => {
74
+ return key === 'eoformScript'
75
+ ? this.formElementRef._eoFormElement.error.msg
76
+ : this.#formTranslateService.getErrorLabel(key, this.formElementRef.errors[key].params);
77
+ });
78
+ }
79
+ }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectFormElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectFormElementComponent, isStandalone: true, selector: "yuv-object-form-element", inputs: { situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "yuv-object-form-element" }, ngImport: i0, template: "@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{flex:1 1 auto}.yuv-object-form-element .form-element{box-sizing:border-box;display:flex;flex-flow:row nowrap}.yuv-object-form-element .form-element .ext{display:flex;flex-flow:row nowrap;gap:2px;align-items:center}.yuv-object-form-element .form-element yuv-metadata-form-field{width:100%}.yuv-object-form-element .form-element .form-field{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.yuv-object-form-element .form-element .form-field .description{border:0;font-size:var(--font-hint);color:var(--text-color-caption);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.yuv-object-form-element .form-element .form-field .err-msg{font-size:var(--font-hint);color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.yuv-object-form-element .form-element .form-field .table{flex-flow:column;align-items:flex-start;border:1px solid var(--panel-divider-color)}.yuv-object-form-element .form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.yuv-object-form-element .form-element .form-field .table.invalid{border:1px solid var(--color-error)}.yuv-object-form-element .form-element .form-field.inlineError .err-msg{display:none}.yuv-object-form-element .form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep .fe-wrapper>label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: MetadataFormFieldComponent, selector: "yuv-metadata-form-field", inputs: ["field", "situation"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
82
+ }
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectFormElementComponent, decorators: [{
84
+ type: Component,
85
+ args: [{ selector: 'yuv-object-form-element', standalone: true, imports: [CommonModule, MetadataFormFieldComponent, NgComponentOutlet, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, host: { class: 'yuv-object-form-element' }, template: "@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{flex:1 1 auto}.yuv-object-form-element .form-element{box-sizing:border-box;display:flex;flex-flow:row nowrap}.yuv-object-form-element .form-element .ext{display:flex;flex-flow:row nowrap;gap:2px;align-items:center}.yuv-object-form-element .form-element yuv-metadata-form-field{width:100%}.yuv-object-form-element .form-element .form-field{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.yuv-object-form-element .form-element .form-field .description{border:0;font-size:var(--font-hint);color:var(--text-color-caption);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.yuv-object-form-element .form-element .form-field .err-msg{font-size:var(--font-hint);color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.yuv-object-form-element .form-element .form-field .table{flex-flow:column;align-items:flex-start;border:1px solid var(--panel-divider-color)}.yuv-object-form-element .form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.yuv-object-form-element .form-element .form-field .table.invalid{border:1px solid var(--color-error)}.yuv-object-form-element .form-element .form-field.inlineError .err-msg{display:none}.yuv-object-form-element .form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep .fe-wrapper>label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
86
+ }] });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL29iamVjdC1mb3JtL3NyYy9saWIvb2JqZWN0LWZvcm0tZWxlbWVudC9vYmplY3QtZm9ybS1lbGVtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9vYmplY3QtZm9ybS1lbGVtZW50L29iamVjdC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sbUdB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LENBQUM7SUFDSCxDQUFDOytHQTNFVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixzWkN2QnZDLG94QkFzQkEsbWhERExZLFlBQVksdVNBQUUsMEJBQTBCLG1HQUFxQixtQkFBbUI7OzRGQU0vRSwwQkFBMEI7a0JBVHRDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSwwQkFBMEIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxpQkFHNUUsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdDb21wb25lbnRPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRGVzdHJveVJlZiwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwsIFR5cGUsIHVudHJhY2tlZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDbGFzc2lmaWNhdGlvbiwgU2l0dWF0aW9uIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9tZXRhZGF0YS1mb3JtJztcbmltcG9ydCB7IE9iamVjdEZvcm1UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0uaW50ZXJmYWNlJztcbmltcG9ydCB7IE9iamVjdEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb25Db21wb25lbnRJbnB1dCwgT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb24gfSBmcm9tICcuLi9vYmplY3QtZm9ybS1leHRlbnNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1TY3JpcHRpbmdBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vZm9ybS1zY3JpcHRpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtU2NyaXB0aW5nRWxlbWVudEV4dGVuc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL29iamVjdC1mb3JtLXNjcmlwdC9mb3JtLXNjcmlwdGluZy1lbGVtZW50LWV4dGVuc2lvbi9mb3JtLXNjcmlwdGluZy1lbGVtZW50LWV4dGVuc2lvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybVNjcmlwdGluZ0VsZW1lbnRFeHRlbnNpb24gfSBmcm9tICcuLi9mb3JtLXNjcmlwdGluZy5hcGkuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW9iamVjdC1mb3JtLWVsZW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNZXRhZGF0YUZvcm1GaWVsZENvbXBvbmVudCwgTmdDb21wb25lbnRPdXRsZXQsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ3l1di1vYmplY3QtZm9ybS1lbGVtZW50JyB9XG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1FbGVtZW50Q29tcG9uZW50IHtcbiAgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICNmb3JtVHJhbnNsYXRlU2VydmljZSA9IGluamVjdChPYmplY3RGb3JtVHJhbnNsYXRlU2VydmljZSk7XG4gICNvYmplY3RGb3JtU2VydmljZSA9IGluamVjdChPYmplY3RGb3JtU2VydmljZSk7XG4gICNzY3JpcHRpbmdBcGkgPSBpbmplY3QoRm9ybVNjcmlwdGluZ0FwaVNlcnZpY2UpO1xuXG4gIGNyZWF0ZUZvcm0gPSBzaWduYWwoZmFsc2UpO1xuXG4gIGZvcm1Db250cm9sTmFtZT86IHN0cmluZztcbiAgZm9ybUVsZW1lbnRSZWY6IGFueTtcbiAgZXJyb3JzPzogc3RyaW5nW107XG4gIGV4dGVuc2lvbkNvbXBvbmVudHM6IFR5cGU8T2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb24+W10gPSBbXTtcbiAgI3NjcmlwdGluZ0V4dGVuc2lvbnMgPSB0aGlzLiNzY3JpcHRpbmdBcGkuZWxlbWVudEV4dGVuc2lvbnM7XG4gIHNjcmlwdGluZ0V4dGVuc2lvbnMgPSBjb21wdXRlZCgoKSA9PlxuICAgIE9iamVjdC52YWx1ZXModGhpcy4jc2NyaXB0aW5nRXh0ZW5zaW9ucygpKS5maWx0ZXIoKGV4dDogRm9ybVNjcmlwdGluZ0VsZW1lbnRFeHRlbnNpb24pID0+IGV4dC5wcm9wZXJ0eU5hbWUgPT09IHRoaXMuZm9ybUNvbnRyb2xOYW1lKVxuICApO1xuXG4gIHNjcmlwdEV4dGVuc2lvbkNtcCA9IEZvcm1TY3JpcHRpbmdFbGVtZW50RXh0ZW5zaW9uQ29tcG9uZW50O1xuICBzaXR1YXRpb24gPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgZWxlbWVudCA9IGlucHV0PE9iamVjdEZvcm1Db250cm9sV3JhcHBlcj4oKTtcbiAgI2VsZW1lbnRFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQoKTtcblxuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm0uc2V0KHRydWUpO1xuICAgICAgZWxlbWVudCAmJiB0aGlzLiNzZXRFbGVtZW50KHRoaXMuZWxlbWVudCgpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZ2V0IGV4dGVuc2lvbkNvbXBvbmVudElucHV0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCB4dGk6IElPYmplY3RGb3JtRWxlbWVudEV4dGVuc2lvbkNvbXBvbmVudElucHV0ID0ge1xuICAgICAgZm9ybUNvbnRyb2xOYW1lOiB0aGlzLmZvcm1Db250cm9sTmFtZSB8fCAnJ1xuICAgIH07XG4gICAgcmV0dXJuIHh0aSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB9XG5cbiAgI3NldEVsZW1lbnQoZWw6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChlbCAmJiBlbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2xOYW1lID0gZWwuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZiA9IGVsLmNvbnRyb2xzW3RoaXMuZm9ybUNvbnRyb2xOYW1lXTtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQgPSB0aGlzLiNzZXRHcm91cGluZyh0aGlzLmZvcm1FbGVtZW50UmVmPy5fZW9Gb3JtRWxlbWVudCk7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50UmVmPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB0aGlzLiNzZXR1cEVycm9ycygpKTtcbiAgICAgIHRoaXMuZXh0ZW5zaW9uQ29tcG9uZW50cyA9IHRoaXMuI29iamVjdEZvcm1TZXJ2aWNlLmdldEVsZW1lbnRFeHRlbnNpb25zKHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgdGhpcy5jcmVhdGVGb3JtLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGZvcm1hdGluZyBydWxlcy4uLlxuICAgKiBodHRwczovL3dpa2kub3B0aW1hbC1zeXN0ZW1zLmRlL2Rpc3BsYXkvUE0vU3RhdHVzK3l1dXZpcytNb21lbnR1bSstK0ZsZXgrY2xpZW50XG4gICAqL1xuICAjc2V0R3JvdXBpbmcoZm9ybUVsZW1lbnQ6IGFueSkge1xuICAgIHJldHVybiB7IC4uLmZvcm1FbGVtZW50LCBncm91cGluZzogISFmb3JtRWxlbWVudD8uY2xhc3NpZmljYXRpb25zPy5pbmNsdWRlcyhDbGFzc2lmaWNhdGlvbi5OVU1CRVJfRElHSVQpIH07XG4gIH1cblxuICBvbkRhdGFNZXRhQ2hhbmdlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSBkYXRhO1xuICB9XG5cbiAgI3NldHVwRXJyb3JzKCkge1xuICAgIHRoaXMuZXJyb3JzID0gdW5kZWZpbmVkO1xuICAgIGlmIChcbiAgICAgICh0aGlzLnNpdHVhdGlvbigpICE9PSBTaXR1YXRpb24uU0VBUkNIICYmIHRoaXMuc2l0dWF0aW9uKCkgIT09IFNpdHVhdGlvbi5DUkVBVEUgJiYgdGhpcy5mb3JtRWxlbWVudFJlZi5lcnJvcnMpIHx8XG4gICAgICAoKHRoaXMuc2l0dWF0aW9uKCkgPT09IFNpdHVhdGlvbi5TRUFSQ0ggfHwgdGhpcy5zaXR1YXRpb24oKSA9PT0gU2l0dWF0aW9uLkNSRUFURSkgJiZcbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZi5lcnJvcnMgJiZcbiAgICAgICAgKHRoaXMuZm9ybUVsZW1lbnRSZWYuZGlydHkgfHwgdGhpcy5mb3JtRWxlbWVudFJlZi50b3VjaGVkKSlcbiAgICApIHtcbiAgICAgIHRoaXMuZXJyb3JzID0gT2JqZWN0LmtleXModGhpcy5mb3JtRWxlbWVudFJlZi5lcnJvcnMpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIHJldHVybiBrZXkgPT09ICdlb2Zvcm1TY3JpcHQnXG4gICAgICAgICAgPyB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmVycm9yLm1zZ1xuICAgICAgICAgIDogdGhpcy4jZm9ybVRyYW5zbGF0ZVNlcnZpY2UuZ2V0RXJyb3JMYWJlbChrZXksIHRoaXMuZm9ybUVsZW1lbnRSZWYuZXJyb3JzW2tleV0ucGFyYW1zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiQGxldCBlbCA9IGVsZW1lbnQoKTtcblxuQGlmICghY3JlYXRlRm9ybSgpKSB7XG4gIEBpZiAoZWwgJiYgZm9ybUVsZW1lbnRSZWYpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50IGlucHV0XCIgW2Zvcm1Hcm91cF09XCJlbFwiPlxuICAgICAgPHl1di1tZXRhZGF0YS1mb3JtLWZpZWxkXG4gICAgICAgIFtmaWVsZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudFwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWwuX2VvRm9ybUNvbnRyb2xXcmFwcGVyIS5jb250cm9sTmFtZVwiXG4gICAgICAgIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uKClcIlxuICAgICAgPjwveXV2LW1ldGFkYXRhLWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJleHRcIj5cbiAgICAgICAgQGZvciAoY21wIG9mIGV4dGVuc2lvbkNvbXBvbmVudHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiY21wOyBpbnB1dHM6IHsgaW5wdXQ6IGV4dGVuc2lvbkNvbXBvbmVudElucHV0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChzY21wIG9mIHNjcmlwdGluZ0V4dGVuc2lvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJzY3JpcHRFeHRlbnNpb25DbXA7IGlucHV0czogeyBleHQ6IHNjbXAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxufVxuIl19
@@ -0,0 +1,36 @@
1
+ import { Component, inject, input } from '@angular/core';
2
+ import { FormScriptingApiService } from './form-scripting.service';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Class to extend by form element extensions.
6
+ */
7
+ // eslint-disable-next-line @angular-eslint/component-class-suffix
8
+ export class ObjectFormElementExtension {
9
+ constructor() {
10
+ this.#formScriptingApiService = inject(FormScriptingApiService);
11
+ this.input = input.required();
12
+ }
13
+ #formScriptingApiService;
14
+ getApi() {
15
+ return this.#formScriptingApiService.getApi();
16
+ }
17
+ getCurrentValue() {
18
+ return this.getApi().form.getValue(this.input().formControlName);
19
+ }
20
+ setValue(value) {
21
+ // only set the value if the value is different. Otherwise the form
22
+ // will end up in an infinite loop
23
+ if (value !== this.getCurrentValue())
24
+ this.getApi().form.setValue(this.input().formControlName, value);
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectFormElementExtension, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: ObjectFormElementExtension, isStandalone: true, selector: "ng-component", inputs: { input: { classPropertyName: "input", publicName: "input", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: '', isInline: true }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectFormElementExtension, decorators: [{
30
+ type: Component,
31
+ args: [{
32
+ template: '',
33
+ standalone: true
34
+ }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZXh0ZW5zaW9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9vYmplY3QtZm9ybS1leHRlbnNpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFZbkU7O0dBRUc7QUFLSCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQiwwQkFBMEI7SUFMaEQ7UUFNRSw2QkFBd0IsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUzRCxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNkMsQ0FBQztLQWVyRTtJQWpCQyx3QkFBd0IsQ0FBbUM7SUFJakQsTUFBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYztRQUNyQixtRUFBbUU7UUFDbkUsa0NBQWtDO1FBQ2xDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pHLENBQUM7K0dBakJtQiwwQkFBMEI7bUdBQTFCLDBCQUEwQiwyTUFKcEMsRUFBRTs7NEZBSVEsMEJBQTBCO2tCQUwvQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybVNjcmlwdGluZ0FQSSB9IGZyb20gJy4vZm9ybS1zY3JpcHRpbmcuYXBpLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtU2NyaXB0aW5nQXBpU2VydmljZSB9IGZyb20gJy4vZm9ybS1zY3JpcHRpbmcuc2VydmljZSc7XG5cbi8vIEV4dGVuc2lvbiBvZiBhIHBhcnRpY3VsYXIgZm9ybSBlbGVtZW50XG5leHBvcnQgaW50ZXJmYWNlIElPYmplY3RGb3JtRWxlbWVudEV4dGVuc2lvbiB7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG4gIGNtcDogVHlwZTxPYmplY3RGb3JtRWxlbWVudEV4dGVuc2lvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU9iamVjdEZvcm1FbGVtZW50RXh0ZW5zaW9uQ29tcG9uZW50SW5wdXQge1xuICBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDbGFzcyB0byBleHRlbmQgYnkgZm9ybSBlbGVtZW50IGV4dGVuc2lvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPYmplY3RGb3JtRWxlbWVudEV4dGVuc2lvbiB7XG4gICNmb3JtU2NyaXB0aW5nQXBpU2VydmljZSA9IGluamVjdChGb3JtU2NyaXB0aW5nQXBpU2VydmljZSk7XG5cbiAgaW5wdXQgPSBpbnB1dC5yZXF1aXJlZDxJT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb25Db21wb25lbnRJbnB1dD4oKTtcblxuICBwcm90ZWN0ZWQgZ2V0QXBpKCk6IEZvcm1TY3JpcHRpbmdBUEkge1xuICAgIHJldHVybiB0aGlzLiNmb3JtU2NyaXB0aW5nQXBpU2VydmljZS5nZXRBcGkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDdXJyZW50VmFsdWUoKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXBpKCkuZm9ybS5nZXRWYWx1ZSh0aGlzLmlucHV0KCkuZm9ybUNvbnRyb2xOYW1lKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgLy8gb25seSBzZXQgdGhlIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBkaWZmZXJlbnQuIE90aGVyd2lzZSB0aGUgZm9ybVxuICAgIC8vIHdpbGwgZW5kIHVwIGluIGFuIGluZmluaXRlIGxvb3BcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuZ2V0Q3VycmVudFZhbHVlKCkpIHRoaXMuZ2V0QXBpKCkuZm9ybS5zZXRWYWx1ZSh0aGlzLmlucHV0KCkuZm9ybUNvbnRyb2xOYW1lLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,85 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, effect, input, Input, ViewEncapsulation } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { KeysPipe, Situation } from '@yuuvis/client-core';
5
+ import { YvcTabsModule } from '@yuuvis/components/tabs';
6
+ import { ObjectFormElementComponent } from '../object-form-element/object-form-element.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@yuuvis/components/tabs";
10
+ import * as i3 from "@angular/forms";
11
+ export class ObjectFormGroupComponent {
12
+ constructor() {
13
+ this.types = {
14
+ STACK: 'stack',
15
+ GROUP: 'group',
16
+ FIELDSET: 'fieldset'
17
+ };
18
+ this.isCore = false;
19
+ this.isData = false;
20
+ // @ViewChild('tabView') tabView: TabView;
21
+ // form situation, if not set default will be 'EDIT'
22
+ this.situation = Situation.EDIT;
23
+ this.group = input();
24
+ this.#groupEffect = effect(() => {
25
+ const g = this.group();
26
+ if (g) {
27
+ this.isCore = !!g._eoFormGroup && g._eoFormGroup.label === 'core';
28
+ this.isData = !!g._eoFormGroup && g._eoFormGroup.label === 'data';
29
+ this.groupType = this.#getGroupType();
30
+ }
31
+ });
32
+ this.noGroupLabels = input();
33
+ }
34
+ #groupEffect;
35
+ getHeaderStyleClass(ctrl) {
36
+ return `dirty-${ctrl.dirty} invalid-${ctrl.invalid}`;
37
+ }
38
+ getChildControl(ctrl) {
39
+ return ctrl;
40
+ }
41
+ getObjectFormGroup(control) {
42
+ return control._eoFormGroup;
43
+ }
44
+ getObjectFormControlWrapper(control) {
45
+ return control?._eoFormControlWrapper;
46
+ }
47
+ getElement(control) {
48
+ return control;
49
+ }
50
+ #getGroupType() {
51
+ // may as well be an ObjectFormControlWrapper so check first
52
+ // if we got a real group
53
+ const group = this.group();
54
+ if (group?._eoFormGroup) {
55
+ if (group._eoFormGroup.type === 'o2mGroupStack') {
56
+ // for data section only render as stack (tabs) if we have more than one child
57
+ if (this.isData && Object.keys(group.controls).length === 1) {
58
+ return this.types.GROUP;
59
+ }
60
+ return this.types.STACK;
61
+ }
62
+ if (group._eoFormGroup.type === 'o2mGroup') {
63
+ return group._eoFormGroup.label && !(this.isCore || this.isData) && !this.noGroupLabels && !this.#parentIsStack(group)
64
+ ? this.types.FIELDSET
65
+ : this.types.GROUP;
66
+ }
67
+ return this.types.GROUP;
68
+ }
69
+ else
70
+ return undefined;
71
+ }
72
+ #parentIsStack(group) {
73
+ const parentFormElement = group.parent && group.parent['_eoFormGroup'];
74
+ return parentFormElement && parentFormElement.type === 'o2mGroupStack';
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectFormGroupComponent, isStandalone: true, selector: "yuv-object-form-group", inputs: { situation: { classPropertyName: "situation", publicName: "situation", isSignal: false, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, noGroupLabels: { classPropertyName: "noGroupLabels", publicName: "noGroupLabels", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let grp = group();\n@if (grp) {\n <div\n class=\"form-element {{ grp._eoFormGroup ? grp._eoFormGroup.type : 'o2mControlWrap' }} align-{{\n grp._eoFormGroup && grp._eoFormGroup.layout ? grp._eoFormGroup.layout.align : ''\n }}\"\n [formGroup]=\"grp\"\n >\n @switch (groupType) {\n <!-- group stacks (tabs) -->\n @case ('stack') {\n <yvc-tabs>\n @for (key of grp.controls | keys; track key) {\n <ng-template\n [yvcTab]=\"{\n id: key,\n headerStyleClass: getHeaderStyleClass(grp.controls[key]),\n label: getObjectFormGroup(grp.controls[key])?.label || ''\n }\"\n >\n <div class=\"stack\" [ngClass]=\"{ stackBase: grp._eoFormGroup?.label === 'data' }\">\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n </div>\n </ng-template>\n }\n </yvc-tabs>\n }\n\n <!-- group with legend -->\n @case ('fieldset') {\n <div class=\"om-group fieldset\">\n <div class=\"legend\">\n <span>{{ grp._eoFormGroup?.label }}</span>\n </div>\n\n <div>\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n </div>\n </div>\n }\n <!-- group -->\n @case ('group') {\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n }\n }\n </div>\n}\n", styles: [".form-element{box-sizing:border-box}.form-element .fieldset{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);background:#00000006;border:1px solid rgba(0,0,0,.1)}.dark .form-element .fieldset{background:#ffffff06;border-color:#ffffff1a}.contrast .form-element .fieldset{background-color:transparent;border-color:var(--panel-divider-color)}.form-element .fieldset .legend{margin-bottom:calc(var(--app-pane-padding) / 2)}.form-element .fieldset .legend>span{display:inline-block;font-size:var(--font-hint);border-radius:2px;color:#fff;background-color:#00000038;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 4)}.dark .form-element .fieldset .legend>span{background-color:#ffffff38}.contrast .form-element .fieldset .legend>span{background-color:var(--panel-divider-color);color:var(--panel-background)}.form-element.o2mGroupStack{background:#00000005;border:1px solid rgba(0,0,0,.1)}.dark .form-element.o2mGroupStack{background:#ffffff05;border:1px solid rgba(255,255,255,.1)}.contrast .form-element.o2mGroupStack{background-color:transparent;border-color:var(--panel-divider-color)}.form-element.o2mGroupStack .p-tabview.p-component .p-tabview-panels{background:#fff;overflow:initial}.dark .form-element.o2mGroupStack .p-tabview.p-component .p-tabview-panels{background:#ffffff0a}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav li.p-highlight{border-color:#00000042}.dark .form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav li.p-highlight{border-color:#ffffff42}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav>li:not(.p-highlight):not(.p-disabled):hover{border-color:#00000029}.dark .form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav>li:not(.p-highlight):not(.p-disabled):hover{border-color:#ffffff29}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav-container>.p-tabview-nav-content>.p-tabview-nav li.dirty-true:not(.invalid-true) a .p-tabview-title{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav-container>.p-tabview-nav-content>.p-tabview-nav li.invalid-true a .p-tabview-title{background-color:var(--color-error);color:#fff}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav-container>.p-tabview-nav-content>.p-tabview-nav li.invalid-true a .p-tabview-title:after{content:\"!\";margin-left:calc(var(--app-pane-padding) / 2)}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 0 200px;max-width:100%}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element .stackBase{padding:var(--app-pane-padding);background:var(--panel-background-lightgrey)}.form-element .stackBase>yuv-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>yuv-form-group>.form-element>.fieldset>.legend{display:none}\n"], dependencies: [{ kind: "component", type: ObjectFormGroupComponent, selector: "yuv-object-form-group", inputs: ["situation", "group", "noGroupLabels"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: YvcTabsModule }, { kind: "component", type: i2.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i2.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "pipe", type: KeysPipe, name: "keys" }, { kind: "component", type: ObjectFormElementComponent, selector: "yuv-object-form-element", inputs: ["situation", "element"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectFormGroupComponent, decorators: [{
80
+ type: Component,
81
+ args: [{ selector: 'yuv-object-form-group', standalone: true, imports: [CommonModule, YvcTabsModule, KeysPipe, ObjectFormElementComponent, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, template: "@let grp = group();\n@if (grp) {\n <div\n class=\"form-element {{ grp._eoFormGroup ? grp._eoFormGroup.type : 'o2mControlWrap' }} align-{{\n grp._eoFormGroup && grp._eoFormGroup.layout ? grp._eoFormGroup.layout.align : ''\n }}\"\n [formGroup]=\"grp\"\n >\n @switch (groupType) {\n <!-- group stacks (tabs) -->\n @case ('stack') {\n <yvc-tabs>\n @for (key of grp.controls | keys; track key) {\n <ng-template\n [yvcTab]=\"{\n id: key,\n headerStyleClass: getHeaderStyleClass(grp.controls[key]),\n label: getObjectFormGroup(grp.controls[key])?.label || ''\n }\"\n >\n <div class=\"stack\" [ngClass]=\"{ stackBase: grp._eoFormGroup?.label === 'data' }\">\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n </div>\n </ng-template>\n }\n </yvc-tabs>\n }\n\n <!-- group with legend -->\n @case ('fieldset') {\n <div class=\"om-group fieldset\">\n <div class=\"legend\">\n <span>{{ grp._eoFormGroup?.label }}</span>\n </div>\n\n <div>\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n </div>\n </div>\n }\n <!-- group -->\n @case ('group') {\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n }\n }\n </div>\n}\n", styles: [".form-element{box-sizing:border-box}.form-element .fieldset{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);background:#00000006;border:1px solid rgba(0,0,0,.1)}.dark .form-element .fieldset{background:#ffffff06;border-color:#ffffff1a}.contrast .form-element .fieldset{background-color:transparent;border-color:var(--panel-divider-color)}.form-element .fieldset .legend{margin-bottom:calc(var(--app-pane-padding) / 2)}.form-element .fieldset .legend>span{display:inline-block;font-size:var(--font-hint);border-radius:2px;color:#fff;background-color:#00000038;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 4)}.dark .form-element .fieldset .legend>span{background-color:#ffffff38}.contrast .form-element .fieldset .legend>span{background-color:var(--panel-divider-color);color:var(--panel-background)}.form-element.o2mGroupStack{background:#00000005;border:1px solid rgba(0,0,0,.1)}.dark .form-element.o2mGroupStack{background:#ffffff05;border:1px solid rgba(255,255,255,.1)}.contrast .form-element.o2mGroupStack{background-color:transparent;border-color:var(--panel-divider-color)}.form-element.o2mGroupStack .p-tabview.p-component .p-tabview-panels{background:#fff;overflow:initial}.dark .form-element.o2mGroupStack .p-tabview.p-component .p-tabview-panels{background:#ffffff0a}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav li.p-highlight{border-color:#00000042}.dark .form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav li.p-highlight{border-color:#ffffff42}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav>li:not(.p-highlight):not(.p-disabled):hover{border-color:#00000029}.dark .form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav>li:not(.p-highlight):not(.p-disabled):hover{border-color:#ffffff29}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav-container>.p-tabview-nav-content>.p-tabview-nav li.dirty-true:not(.invalid-true) a .p-tabview-title{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav-container>.p-tabview-nav-content>.p-tabview-nav li.invalid-true a .p-tabview-title{background-color:var(--color-error);color:#fff}.form-element.o2mGroupStack .p-tabview.p-component>.p-tabview-nav-container>.p-tabview-nav-content>.p-tabview-nav li.invalid-true a .p-tabview-title:after{content:\"!\";margin-left:calc(var(--app-pane-padding) / 2)}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 0 200px;max-width:100%}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element .stackBase{padding:var(--app-pane-padding);background:var(--panel-background-lightgrey)}.form-element .stackBase>yuv-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>yuv-form-group>.form-element>.fieldset>.legend{display:none}\n"] }]
82
+ }], propDecorators: { situation: [{
83
+ type: Input
84
+ }] } });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9vYmplY3QtZm9ybS9zcmMvbGliL29iamVjdC1mb3JtLWdyb3VwL29iamVjdC1mb3JtLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vc3JjL2xpYi9vYmplY3QtZm9ybS1ncm91cC9vYmplY3QtZm9ybS1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7O0FBWWxHLE1BQU0sT0FBTyx3QkFBd0I7SUFSckM7UUFTVSxVQUFLLEdBQUc7WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxPQUFPO1lBQ2QsUUFBUSxFQUFFLFVBQVU7U0FDckIsQ0FBQztRQUdGLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsMENBQTBDO1FBRTFDLG9EQUFvRDtRQUMzQyxjQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUVw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LHcwR0Q5Q2Esd0JBQXdCLGtIQUx6QixZQUFZLDRIQUFFLGFBQWEsMldBQUUsUUFBUSw2Q0FBRSwwQkFBMEIscUdBQUUsbUJBQW1COzs0RkFLckYsd0JBQXdCO2tCQVJwQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQyxpQkFHbEYsaUJBQWlCLENBQUMsSUFBSTs4QkFnQjVCLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGlucHV0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEtleXNQaXBlLCBTaXR1YXRpb24gfSBmcm9tICdAeXV1dmlzL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFl2Y1RhYnNNb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBPYmplY3RGb3JtRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL29iamVjdC1mb3JtLWVsZW1lbnQvb2JqZWN0LWZvcm0tZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyLCBZdXZGb3JtR3JvdXAsIFl1dkZvcm1Hcm91cFdyYXBwZXIgfSBmcm9tICcuLi9vYmplY3QtZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JqZWN0Rm9ybUdyb3VwIH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dXYtb2JqZWN0LWZvcm0tZ3JvdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBZdmNUYWJzTW9kdWxlLCBLZXlzUGlwZSwgT2JqZWN0Rm9ybUVsZW1lbnRDb21wb25lbnQsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtZm9ybS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1Hcm91cENvbXBvbmVudCB7XG4gIHByaXZhdGUgdHlwZXMgPSB7XG4gICAgU1RBQ0s6ICdzdGFjaycsXG4gICAgR1JPVVA6ICdncm91cCcsXG4gICAgRklFTERTRVQ6ICdmaWVsZHNldCdcbiAgfTtcblxuICBncm91cFR5cGU/OiBzdHJpbmc7XG4gIGlzQ29yZSA9IGZhbHNlO1xuICBpc0RhdGEgPSBmYWxzZTtcblxuICAvLyBAVmlld0NoaWxkKCd0YWJWaWV3JykgdGFiVmlldzogVGFiVmlldztcblxuICAvLyBmb3JtIHNpdHVhdGlvbiwgaWYgbm90IHNldCBkZWZhdWx0IHdpbGwgYmUgJ0VESVQnXG4gIEBJbnB1dCgpIHNpdHVhdGlvbiA9IFNpdHVhdGlvbi5FRElUO1xuXG4gIGdyb3VwID0gaW5wdXQ8T2JqZWN0Rm9ybUdyb3VwPigpO1xuICAjZ3JvdXBFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGcgPSB0aGlzLmdyb3VwKCk7XG5cbiAgICBpZiAoZykge1xuICAgICAgdGhpcy5pc0NvcmUgPSAhIWcuX2VvRm9ybUdyb3VwICYmIGcuX2VvRm9ybUdyb3VwLmxhYmVsID09PSAnY29yZSc7XG4gICAgICB0aGlzLmlzRGF0YSA9ICEhZy5fZW9Gb3JtR3JvdXAgJiYgZy5fZW9Gb3JtR3JvdXAubGFiZWwgPT09ICdkYXRhJztcbiAgICAgIHRoaXMuZ3JvdXBUeXBlID0gdGhpcy4jZ2V0R3JvdXBUeXBlKCk7XG4gICAgfVxuICB9KTtcblxuICBub0dyb3VwTGFiZWxzID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBnZXRIZWFkZXJTdHlsZUNsYXNzKGN0cmw6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBkaXJ0eS0ke2N0cmwuZGlydHl9IGludmFsaWQtJHtjdHJsLmludmFsaWR9YDtcbiAgfVxuXG4gIGdldENoaWxkQ29udHJvbChjdHJsOiBBYnN0cmFjdENvbnRyb2wpOiBPYmplY3RGb3JtR3JvdXAge1xuICAgIHJldHVybiBjdHJsIGFzIE9iamVjdEZvcm1Hcm91cDtcbiAgfVxuXG4gIGdldE9iamVjdEZvcm1Hcm91cChjb250cm9sOiBhbnkpOiBZdXZGb3JtR3JvdXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoY29udHJvbCBhcyBPYmplY3RGb3JtR3JvdXApLl9lb0Zvcm1Hcm91cDtcbiAgfVxuXG4gIGdldE9iamVjdEZvcm1Db250cm9sV3JhcHBlcihjb250cm9sOiBhbnkpOiBZdXZGb3JtR3JvdXBXcmFwcGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKGNvbnRyb2wgYXMgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKT8uX2VvRm9ybUNvbnRyb2xXcmFwcGVyO1xuICB9XG5cbiAgZ2V0RWxlbWVudChjb250cm9sOiBhbnkpOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIge1xuICAgIHJldHVybiBjb250cm9sIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcjtcbiAgfVxuXG4gICNnZXRHcm91cFR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBtYXkgYXMgd2VsbCBiZSBhbiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgc28gY2hlY2sgZmlyc3RcbiAgICAvLyBpZiB3ZSBnb3QgYSByZWFsIGdyb3VwXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwKCkgYXMgT2JqZWN0Rm9ybUdyb3VwO1xuICAgIGlmIChncm91cD8uX2VvRm9ybUdyb3VwKSB7XG4gICAgICBpZiAoZ3JvdXAuX2VvRm9ybUdyb3VwLnR5cGUgPT09ICdvMm1Hcm91cFN0YWNrJykge1xuICAgICAgICAvLyBmb3IgZGF0YSBzZWN0aW9uIG9ubHkgcmVuZGVyIGFzIHN0YWNrICh0YWJzKSBpZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgY2hpbGRcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRhICYmIE9iamVjdC5rZXlzKGdyb3VwLmNvbnRyb2xzKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50eXBlcy5HUk9VUDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50eXBlcy5TVEFDSztcbiAgICAgIH1cbiAgICAgIGlmIChncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA9PT0gJ28ybUdyb3VwJykge1xuICAgICAgICByZXR1cm4gZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsICYmICEodGhpcy5pc0NvcmUgfHwgdGhpcy5pc0RhdGEpICYmICF0aGlzLm5vR3JvdXBMYWJlbHMgJiYgIXRoaXMuI3BhcmVudElzU3RhY2soZ3JvdXApXG4gICAgICAgICAgPyB0aGlzLnR5cGVzLkZJRUxEU0VUXG4gICAgICAgICAgOiB0aGlzLnR5cGVzLkdST1VQO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudHlwZXMuR1JPVVA7XG4gICAgfSBlbHNlIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAjcGFyZW50SXNTdGFjayhncm91cDogT2JqZWN0Rm9ybUdyb3VwKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyZW50Rm9ybUVsZW1lbnQgPSBncm91cC5wYXJlbnQgJiYgKGdyb3VwLnBhcmVudCBhcyBhbnkpWydfZW9Gb3JtR3JvdXAnXTtcbiAgICByZXR1cm4gcGFyZW50Rm9ybUVsZW1lbnQgJiYgcGFyZW50Rm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snO1xuICB9XG59XG4iLCJAbGV0IGdycCA9IGdyb3VwKCk7XG5AaWYgKGdycCkge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQge3sgZ3JwLl9lb0Zvcm1Hcm91cCA/IGdycC5fZW9Gb3JtR3JvdXAudHlwZSA6ICdvMm1Db250cm9sV3JhcCcgfX0gYWxpZ24te3tcbiAgICAgIGdycC5fZW9Gb3JtR3JvdXAgJiYgZ3JwLl9lb0Zvcm1Hcm91cC5sYXlvdXQgPyBncnAuX2VvRm9ybUdyb3VwLmxheW91dC5hbGlnbiA6ICcnXG4gICAgfX1cIlxuICAgIFtmb3JtR3JvdXBdPVwiZ3JwXCJcbiAgPlxuICAgIEBzd2l0Y2ggKGdyb3VwVHlwZSkge1xuICAgICAgPCEtLSBncm91cCBzdGFja3MgKHRhYnMpIC0tPlxuICAgICAgQGNhc2UgKCdzdGFjaycpIHtcbiAgICAgICAgPHl2Yy10YWJzPlxuICAgICAgICAgIEBmb3IgKGtleSBvZiBncnAuY29udHJvbHMgfCBrZXlzOyB0cmFjayBrZXkpIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbeXZjVGFiXT1cIntcbiAgICAgICAgICAgICAgICBpZDoga2V5LFxuICAgICAgICAgICAgICAgIGhlYWRlclN0eWxlQ2xhc3M6IGdldEhlYWRlclN0eWxlQ2xhc3MoZ3JwLmNvbnRyb2xzW2tleV0pLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBnZXRPYmplY3RGb3JtR3JvdXAoZ3JwLmNvbnRyb2xzW2tleV0pPy5sYWJlbCB8fCAnJ1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YWNrXCIgW25nQ2xhc3NdPVwieyBzdGFja0Jhc2U6IGdycC5fZW9Gb3JtR3JvdXA/LmxhYmVsID09PSAnZGF0YScgfVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGdycC5jb250cm9sc1trZXldKSkge1xuICAgICAgICAgICAgICAgICAgPHl1di1vYmplY3QtZm9ybS1lbGVtZW50IFtlbGVtZW50XT1cImdldEVsZW1lbnQoZ3JwLmNvbnRyb2xzW2tleV0pXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIj48L3l1di1vYmplY3QtZm9ybS1lbGVtZW50PlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHl1di1vYmplY3QtZm9ybS1ncm91cCBbZ3JvdXBdPVwiZ2V0Q2hpbGRDb250cm9sKGdycC5jb250cm9sc1trZXldKVwiIFtub0dyb3VwTGFiZWxzXT1cInRydWVcIiBbc2l0dWF0aW9uXT1cInNpdHVhdGlvblwiPjwveXV2LW9iamVjdC1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC95dmMtdGFicz5cbiAgICAgIH1cblxuICAgICAgPCEtLSBncm91cCB3aXRoIGxlZ2VuZCAtLT5cbiAgICAgIEBjYXNlICgnZmllbGRzZXQnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvbS1ncm91cCBmaWVsZHNldFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGdycC5fZW9Gb3JtR3JvdXA/LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIEBmb3IgKGtleSBvZiBncnAuY29udHJvbHMgfCBrZXlzOyB0cmFjayBrZXkpIHtcbiAgICAgICAgICAgICAgQGlmIChnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JwLmNvbnRyb2xzW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgPHl1di1vYmplY3QtZm9ybS1lbGVtZW50IFtlbGVtZW50XT1cImdldEVsZW1lbnQoZ3JwLmNvbnRyb2xzW2tleV0pXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIj48L3l1di1vYmplY3QtZm9ybS1lbGVtZW50PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8eXV2LW9iamVjdC1mb3JtLWdyb3VwIFtncm91cF09XCJnZXRDaGlsZENvbnRyb2woZ3JwLmNvbnRyb2xzW2tleV0pXCIgW25vR3JvdXBMYWJlbHNdPVwidHJ1ZVwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCI+PC95dXYtb2JqZWN0LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8IS0tIGdyb3VwIC0tPlxuICAgICAgQGNhc2UgKCdncm91cCcpIHtcbiAgICAgICAgQGZvciAoa2V5IG9mIGdycC5jb250cm9scyB8IGtleXM7IHRyYWNrIGtleSkge1xuICAgICAgICAgIEBpZiAoZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGdycC5jb250cm9sc1trZXldKSkge1xuICAgICAgICAgICAgPHl1di1vYmplY3QtZm9ybS1lbGVtZW50IFtlbGVtZW50XT1cImdldEVsZW1lbnQoZ3JwLmNvbnRyb2xzW2tleV0pXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIj48L3l1di1vYmplY3QtZm9ybS1lbGVtZW50PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHl1di1vYmplY3QtZm9ybS1ncm91cCBbZ3JvdXBdPVwiZ2V0Q2hpbGRDb250cm9sKGdycC5jb250cm9sc1trZXldKVwiIFtub0dyb3VwTGFiZWxzXT1cInRydWVcIiBbc2l0dWF0aW9uXT1cInNpdHVhdGlvblwiPjwveXV2LW9iamVjdC1mb3JtLWdyb3VwPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, input } from '@angular/core';
3
+ import { ObjectFormElementExtension } from '../../object-form-extension.interface';
4
+ import { YvcIconModule } from '@yuuvis/components/icon';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@yuuvis/components/icon";
7
+ export class FormScriptingElementExtensionComponent extends ObjectFormElementExtension {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.ext = input();
11
+ this.defaultIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M160-120q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h560q33 0 56.5 23.5T800-760v80h80v80h-80v80h80v80h-80v80h80v80h-80v80q0 33-23.5 56.5T720-120H160Zm0-80h560v-560H160v560Zm80-80h200v-160H240v160Zm240-280h160v-120H480v120Zm-240 80h200v-200H240v200Zm240 200h160v-240H480v240ZM160-760v560-560Z"/></svg>';
12
+ }
13
+ run() {
14
+ this.ext()?.callback();
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormScriptingElementExtensionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormScriptingElementExtensionComponent, isStandalone: true, selector: "yuv-form-scripting-element-extension", inputs: { ext: { classPropertyName: "ext", publicName: "ext", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@let x = ext();\n@if (x) {\n @if (x.icon) {\n <button class=\"secondary\" (click)=\"run()\" [title]=\"x.label\">\n <yvc-icon [svg]=\"x.icon\"></yvc-icon>\n </button>\n } @else if (x.label) {\n <button class=\"secondary\" (click)=\"run()\">{{ x.label }}</button>\n } @else {\n <button class=\"secondary\" (click)=\"run()\">\n <yvc-icon [svg]=\"defaultIcon\"></yvc-icon>\n </button>\n }\n}\n", styles: [":host button{--icon-size: 18px;color:var(--text-color-caption);padding:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormScriptingElementExtensionComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'yuv-form-scripting-element-extension', standalone: true, imports: [CommonModule, YvcIconModule], template: "@let x = ext();\n@if (x) {\n @if (x.icon) {\n <button class=\"secondary\" (click)=\"run()\" [title]=\"x.label\">\n <yvc-icon [svg]=\"x.icon\"></yvc-icon>\n </button>\n } @else if (x.label) {\n <button class=\"secondary\" (click)=\"run()\">{{ x.label }}</button>\n } @else {\n <button class=\"secondary\" (click)=\"run()\">\n <yvc-icon [svg]=\"defaultIcon\"></yvc-icon>\n </button>\n }\n}\n", styles: [":host button{--icon-size: 18px;color:var(--text-color-caption);padding:2px}\n"] }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY3JpcHRpbmctZWxlbWVudC1leHRlbnNpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9vYmplY3QtZm9ybS9zcmMvbGliL29iamVjdC1mb3JtLXNjcmlwdC9mb3JtLXNjcmlwdGluZy1lbGVtZW50LWV4dGVuc2lvbi9mb3JtLXNjcmlwdGluZy1lbGVtZW50LWV4dGVuc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL29iamVjdC1mb3JtL3NyYy9saWIvb2JqZWN0LWZvcm0tc2NyaXB0L2Zvcm0tc2NyaXB0aW5nLWVsZW1lbnQtZXh0ZW5zaW9uL2Zvcm0tc2NyaXB0aW5nLWVsZW1lbnQtZXh0ZW5zaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQVN4RCxNQUFNLE9BQU8sc0NBQXVDLFNBQVEsMEJBQTBCO0lBUHRGOztRQVFFLFFBQUcsR0FBRyxLQUFLLEVBQWlDLENBQUM7UUFDN0MsZ0JBQVcsR0FDVCx5YUFBeWEsQ0FBQztLQUs3YTtJQUhDLEdBQUc7UUFDRCxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0FQVSxzQ0FBc0M7bUdBQXRDLHNDQUFzQyxxUENibkQsb2FBY0Esc0lETFksWUFBWSw4QkFBRSxhQUFhOzs0RkFJMUIsc0NBQXNDO2tCQVBsRCxTQUFTOytCQUNFLHNDQUFzQyxjQUNwQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TY3JpcHRpbmdFbGVtZW50RXh0ZW5zaW9uIH0gZnJvbSAnLi4vLi4vZm9ybS1zY3JpcHRpbmcuYXBpLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPYmplY3RGb3JtRWxlbWVudEV4dGVuc2lvbiB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLWV4dGVuc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgWXZjSWNvbk1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LWZvcm0tc2NyaXB0aW5nLWVsZW1lbnQtZXh0ZW5zaW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgWXZjSWNvbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXNjcmlwdGluZy1lbGVtZW50LWV4dGVuc2lvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9mb3JtLXNjcmlwdGluZy1lbGVtZW50LWV4dGVuc2lvbi5jb21wb25lbnQuc2NzcycgXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TY3JpcHRpbmdFbGVtZW50RXh0ZW5zaW9uQ29tcG9uZW50IGV4dGVuZHMgT2JqZWN0Rm9ybUVsZW1lbnRFeHRlbnNpb24ge1xuICBleHQgPSBpbnB1dDxGb3JtU2NyaXB0aW5nRWxlbWVudEV4dGVuc2lvbj4oKTtcbiAgZGVmYXVsdEljb24gPVxuICAgICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIiNlOGVhZWRcIj48cGF0aCBkPVwiTTE2MC0xMjBxLTMzIDAtNTYuNS0yMy41VDgwLTIwMHYtNTYwcTAtMzMgMjMuNS01Ni41VDE2MC04NDBoNTYwcTMzIDAgNTYuNSAyMy41VDgwMC03NjB2ODBoODB2ODBoLTgwdjgwaDgwdjgwaC04MHY4MGg4MHY4MGgtODB2ODBxMCAzMy0yMy41IDU2LjVUNzIwLTEyMEgxNjBabTAtODBoNTYwdi01NjBIMTYwdjU2MFptODAtODBoMjAwdi0xNjBIMjQwdjE2MFptMjQwLTI4MGgxNjB2LTEyMEg0ODB2MTIwWm0tMjQwIDgwaDIwMHYtMjAwSDI0MHYyMDBabTI0MCAyMDBoMTYwdi0yNDBINDgwdjI0MFpNMTYwLTc2MHY1NjAtNTYwWlwiLz48L3N2Zz4nO1xuXG4gIHJ1bigpIHtcbiAgICB0aGlzLmV4dCgpPy5jYWxsYmFjaygpO1xuICB9XG59XG4iLCJAbGV0IHggPSBleHQoKTtcbkBpZiAoeCkge1xuICBAaWYgKHguaWNvbikge1xuICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwicnVuKClcIiBbdGl0bGVdPVwieC5sYWJlbFwiPlxuICAgICAgPHl2Yy1pY29uIFtzdmddPVwieC5pY29uXCI+PC95dmMtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfSBAZWxzZSBpZiAoeC5sYWJlbCkge1xuICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwicnVuKClcIj57eyB4LmxhYmVsIH19PC9idXR0b24+XG4gIH0gQGVsc2Uge1xuICAgIDxidXR0b24gY2xhc3M9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwicnVuKClcIj5cbiAgICAgIDx5dmMtaWNvbiBbc3ZnXT1cImRlZmF1bHRJY29uXCI+PC95dmMtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxufVxuIl19