@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,195 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, effect, input, signal } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
5
+ import { RouterLink } from '@angular/router';
6
+ import { AppCacheService, AuditService, BackendService, EventService, LocaleDatePipe, SystemService, TranslateModule, TranslateService, YuvEventType } from '@yuuvis/client-core';
7
+ import { BusyOverlayDirective } from '@yuuvis/client-framework/common';
8
+ import { YUV_ICONS } from '@yuuvis/client-framework/icons';
9
+ import { YvcIconModule } from '@yuuvis/components/icon';
10
+ import { finalize } from 'rxjs';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@yuuvis/client-core";
13
+ import * as i2 from "@angular/forms";
14
+ import * as i3 from "@angular/common";
15
+ import * as i4 from "@yuuvis/components/icon";
16
+ export class ObjectAuditComponent {
17
+ #dmsObjectEffect;
18
+ get objectID() {
19
+ return this._objectID;
20
+ }
21
+ constructor(auditService, backend, appCache, eventService, system, fb, translate
22
+ // private iconRegistry: IconRegistryService,
23
+ // @Inject(ROUTES) private routes: YuvRoutes
24
+ ) {
25
+ this.auditService = auditService;
26
+ this.backend = backend;
27
+ this.appCache = appCache;
28
+ this.eventService = eventService;
29
+ this.system = system;
30
+ this.fb = fb;
31
+ this.translate = translate;
32
+ this.FILTER_CACHE_KEY = 'yuv.audit.filters';
33
+ this.icons = {
34
+ filter: YUV_ICONS.filter,
35
+ arrowNext: YUV_ICONS.arrowNext
36
+ };
37
+ this.resolvedItems = signal([]);
38
+ this.searchPanelShow = false;
39
+ this.error = false;
40
+ this.busy = false;
41
+ this.searchActions = [];
42
+ this.auditLabels = {};
43
+ this.dmsObject = input(undefined);
44
+ this.#dmsObjectEffect = effect(() => {
45
+ const o = this.dmsObject();
46
+ if (!o) {
47
+ this._objectID = undefined;
48
+ this._objectTypeID = undefined;
49
+ this.auditsRes = undefined;
50
+ }
51
+ else if (!this._objectID || this._objectID !== o.id) {
52
+ this._objectID = o.id;
53
+ this._objectTypeID = o.objectTypeId;
54
+ this.query();
55
+ }
56
+ else {
57
+ this.query();
58
+ }
59
+ });
60
+ /**
61
+ * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).
62
+ * This will also disable the corresponding filters.
63
+ */
64
+ this.skipActions = input([]);
65
+ /**
66
+ * Whether or not to ignore admin and user separation of audit entries
67
+ */
68
+ this.allActions = input(false);
69
+ this.link = input(undefined, { alias: 'versionsLink' });
70
+ this.versionsLink = computed(() => {
71
+ const link = this.link();
72
+ return link ? `${link}` : undefined;
73
+ });
74
+ // this.versionStatePath = this.routes && this.routes.versions ? this.routes.versions.path : null;
75
+ // this.versionStateQueryParam = this.routes && this.routes.versions ? this.routes.versions.queryParams.version : null;
76
+ // this.iconRegistry.registerIcons([filter, arrowNext, arrowNext]);
77
+ this.auditLabels = {
78
+ a100: this.translate.instant('yuv.audit.label.create.metadata'),
79
+ a101: this.translate.instant('yuv.audit.label.create.metadata.withcontent'),
80
+ a110: this.translate.instant('yuv.audit.label.create.tag'),
81
+ a200: this.translate.instant('yuv.audit.label.delete'),
82
+ a201: this.translate.instant('yuv.audit.label.delete.content'), // #v
83
+ a202: this.translate.instant('yuv.audit.label.delete.marked'),
84
+ a210: this.translate.instant('yuv.audit.label.delete.tag'), // #v
85
+ a220: this.translate.instant('yuv.audit.label.delete.version'), // #v
86
+ a300: this.translate.instant('yuv.audit.label.update.metadata'),
87
+ a301: this.translate.instant('yuv.audit.label.update.content'),
88
+ a302: this.translate.instant('yuv.audit.label.update.metadata.withcontent'),
89
+ a303: this.translate.instant('yuv.audit.label.update.move.content'),
90
+ a310: this.translate.instant('yuv.audit.label.update.tag'),
91
+ a325: this.translate.instant('yuv.audit.label.update.restore'),
92
+ a340: this.translate.instant('yuv.audit.label.update.move'),
93
+ a400: this.translate.instant('yuv.audit.label.get.content'),
94
+ a401: this.translate.instant('yuv.audit.label.get.metadata'),
95
+ a402: this.translate.instant('yuv.audit.label.get.rendition.text'),
96
+ a403: this.translate.instant('yuv.audit.label.get.rendition.pdf'),
97
+ a404: this.translate.instant('yuv.audit.label.get.rendition.thumbnail'),
98
+ a10000: this.translate.instant('yuv.audit.label.get.custom')
99
+ };
100
+ this.eventService
101
+ .on(YuvEventType.DMS_OBJECT_UPDATED)
102
+ .pipe(takeUntilDestroyed())
103
+ .subscribe((e) => {
104
+ const dmsObject = e.data;
105
+ // reload audit entries when update belongs to the current dms object
106
+ if (dmsObject.id === this.objectID) {
107
+ this.query();
108
+ }
109
+ });
110
+ }
111
+ fetchAuditEntries() {
112
+ if (!this._objectID || !this._objectTypeID)
113
+ return;
114
+ this.error = false;
115
+ this.busy = true;
116
+ this.auditService
117
+ .getAuditEntries(this._objectID, { skipActions: this.skipActions() })
118
+ .pipe(finalize(() => (this.busy = false)))
119
+ .subscribe({
120
+ next: (res) => {
121
+ this.auditsRes = res;
122
+ this.resolvedItems.set(this.mapResult(res));
123
+ },
124
+ error: () => {
125
+ this.onError();
126
+ }
127
+ });
128
+ }
129
+ mapResult(res) {
130
+ return (res.items
131
+ // TODO: Remove this filter once the system:ren:text audit lifecycle planning is complete and the tag's purpose is fully defined.
132
+ // https://help.optimal-systems.com/yuuvis/Momentum/latest/index.html#_content_renditions_asynchronous_full_text_indexing.html
133
+ .filter((i) => !i.detail.includes('[system:ren:text, 1]'))
134
+ .map((i) => {
135
+ const r = { ...i, label: this.auditLabels['a' + i.action] };
136
+ // tag related audits
137
+ if ([110, 210, 310].includes(i.action)) {
138
+ const params = this.getAuditEntryParams(i);
139
+ if (params) {
140
+ r.more = `
141
+ ${this.system.getLocalizedLabel(params[0])}: ${this.system.getLocalizedLabel(`${params[0]}:${params[1]}`)}
142
+ `;
143
+ }
144
+ }
145
+ // restore audit
146
+ else if (i.action === 325) {
147
+ const params = this.getAuditEntryParams(i);
148
+ r.more = this.translate.instant('yuv.audit.label.update.restore.more', { version: params[0] || '[?]' });
149
+ }
150
+ // custom audits
151
+ else if (i.action === 10000) {
152
+ r.label = this.system.getLocalizedLabel(`audit:custom:${i.subaction}`) || `${i.subaction}`;
153
+ }
154
+ return r;
155
+ }));
156
+ }
157
+ getAuditEntryParams(auditItem) {
158
+ const m = auditItem.detail.match(/\[(.*?)\]/);
159
+ return m && m[1] ? m[1].split(',').map((i) => i.trim()) : [];
160
+ }
161
+ /**
162
+ * Execute a query from the search panel.
163
+ */
164
+ query() {
165
+ this.fetchAuditEntries();
166
+ }
167
+ goToPage(page) {
168
+ if (this.auditsRes) {
169
+ this.busy = true;
170
+ this.auditService
171
+ .getPage(this.auditsRes, page)
172
+ .pipe(finalize(() => (this.busy = false)))
173
+ .subscribe({
174
+ next: (res) => {
175
+ this.auditsRes = res;
176
+ this.resolvedItems.set(this.mapResult(res));
177
+ },
178
+ error: () => {
179
+ this.onError();
180
+ }
181
+ });
182
+ }
183
+ }
184
+ onError() {
185
+ this.auditsRes = undefined;
186
+ this.error = true;
187
+ }
188
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectAuditComponent, deps: [{ token: i1.AuditService }, { token: i1.BackendService }, { token: i1.AppCacheService }, { token: i1.EventService }, { token: i1.SystemService }, { token: i2.UntypedFormBuilder }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectAuditComponent, isStandalone: true, selector: "yuv-object-audit", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: false, transformFunction: null }, skipActions: { classPropertyName: "skipActions", publicName: "skipActions", isSignal: true, isRequired: false, transformFunction: null }, allActions: { classPropertyName: "allActions", publicName: "allActions", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "versionsLink", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"yuv-audit\" [ngClass]=\"{ singleEntry: auditsRes?.items?.length === 1, onPage: auditsRes && auditsRes.page > 1 }\" [yuvBusyOverlay]=\"busy\">\n @if (error) {\n <div class=\"error\">\n <div translate>yuv.audit.fetch.error</div>\n </div>\n }\n\n @if (auditsRes) {\n <!-- list of audits -->\n @let resItems = resolvedItems();\n @if (resItems.length) {\n <div class=\"timeline\">\n @for (item of resItems; track $index) {\n <div class=\"audit\">\n <div class=\"date\">{{ item.creationDate | localeDate }}</div>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\">{{ item.label }}</span>\n @if (item.detail === 'OBJECT_DOCUMENT_CHANGED') {\n @if (link()) {\n <a class=\"version\" [routerLink]=\"link()\" [queryParams]=\"{ version: item.version }\">{{ item.version }}</a>\n } @else {\n <span class=\"version\">{{ item.version }}</span>\n }\n }\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\">{{ item.createdBy.title }}</div>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsRes.hasMoreItems || auditsRes.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <div class=\"paging\">\n <button [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\" [disabled]=\"auditsRes.page === 1\" (click)=\"goToPage(auditsRes.page - 1)\">\n <yvc-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\" [disabled]=\"!auditsRes.hasMoreItems\" (click)=\"goToPage(auditsRes.page + 1)\">\n <yvc-icon class=\"next\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host .yuv-audit{position:relative;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"items\" \"footer\";background-color:var(--panel-background-grey);container-type:inline-size;container-name:cmp}:host .yuv-audit .error{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .yuv-audit .error>div{background-color:var(--color-error);color:#fff;margin:var(--app-pane-padding);padding:var(--app-pane-padding);border-radius:calc(var(--app-pane-padding) / 2)}:host .yuv-audit .search{position:absolute;left:0;top:0;bottom:0;max-width:90%;background-color:var(--panel-background);border-right:1px solid var(--panel-divider-color);animation:yuvFadeInLeft var(--app-default-transition-duration);padding:var(--app-pane-padding);display:flex;z-index:3;flex-flow:column}:host .yuv-audit .search h3{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}:host .yuv-audit .search button.group{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal);padding:0;cursor:pointer}:host .yuv-audit .search button.group:focus{color:var(--color-accent);outline:0;background-color:transparent;border-color:transparent}:host .yuv-audit .search .controls{flex:1;overflow-y:auto}:host .yuv-audit .search .controls .form-control{margin-top:var(--app-pane-padding)}:host .yuv-audit .search .buttons{display:flex;justify-content:flex-end}:host .yuv-audit .btn-search{position:absolute;top:var(--app-pane-padding);left:var(--app-pane-padding);background-color:var(--panel-background);padding:calc(var(--app-pane-padding) / 2);border:1px solid var(--panel-divider-color);z-index:1;box-shadow:0 0 10px 10px var(--panel-background-grey)}:host .yuv-audit .btn-search.badge{color:var(--color-accent)}:host .yuv-audit .btn-search yvc-icon{display:block}:host .yuv-audit .audits{grid-area:items}:host .yuv-audit .empty{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .yuv-audit .footer{grid-area:footer;background-color:var(--panel-background);border-top:1px solid var(--panel-divider-color);display:flex}:host .yuv-audit .footer .paging{flex:1;display:flex;align-items:center;justify-content:flex-end;color:var(--text-color-caption)}:host .yuv-audit .footer .paging .page{padding:0 calc(var(--app-pane-padding) / 2)}:host .yuv-audit .footer .paging .prev{transform:rotate(180deg)}:host .yuv-audit .footer button{padding:0}:host .timeline{--track-color: var(--panel-divider-color);--track-size: calc(var(--app-pane-padding) * 3);overflow-y:auto;padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}@container (max-width: 450px){:host .timeline .audit{grid-template-columns:var(--track-size) auto;grid-template-rows:var(--track-size) auto;grid-template-areas:\"line date\" \"node node\"}:host .timeline .audit .date{justify-self:start}:host .timeline .audit .date,:host .timeline .audit:after{translate:0 .5em}:host .timeline .audit .node{margin:0;width:100%}:host .timeline .audit:last-child:before{height:100%}}:host .timeline :where(.audit){display:grid;grid-template-columns:1fr var(--track-size) 1fr;grid-template-areas:\"date line node\"}:host .timeline :where(.audit) .date{grid-area:date;justify-self:end;align-self:center}:host .timeline :where(.audit) .node{grid-area:node;justify-self:start;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);border-radius:.25em;margin:calc(var(--app-pane-padding) / 2) 0;padding:var(--app-pane-padding);box-sizing:border-box;display:grid;gap:calc(var(--app-pane-padding) / 8)}:host .timeline :where(.audit) .node .label{display:flex;align-items:end}:host .timeline :where(.audit) .node .label .title{flex:1;word-break:break-all;font-weight:700;color:var(--text-color-body)}:host .timeline :where(.audit) .node .label .version{line-height:1em;border-radius:2px;background-color:rgba(var(--color-accent-rgb),.15);color:var(--color-accent);font-size:var(--font-hint);font-family:monospace;align-self:center;margin-left:var(--app-pane-padding);padding:4px 6px;display:block}:host .timeline :where(.audit) .node .meta{color:var(--text-color-caption)}:host .timeline :where(.audit):before{grid-area:line;content:\"\";width:calc(50% - 1px);height:100%;border-inline-end:1px solid var(--track-color)}:host .timeline :where(.audit):after{grid-area:line;content:\"\";width:11px;height:11px;border-radius:50%;border:2px solid var(--track-color);background-color:var(--panel-background-grey);box-sizing:border-box;align-self:center;justify-self:center}:host .timeline :where(.audit):first-child:before{height:50%;align-self:end}:host .timeline :where(.audit):last-child:before{height:50%;align-self:start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i4.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
190
+ }
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectAuditComponent, decorators: [{
192
+ type: Component,
193
+ args: [{ selector: 'yuv-object-audit', standalone: true, imports: [CommonModule, RouterLink, ReactiveFormsModule, BusyOverlayDirective, LocaleDatePipe, TranslateModule, YvcIconModule], template: "<div class=\"yuv-audit\" [ngClass]=\"{ singleEntry: auditsRes?.items?.length === 1, onPage: auditsRes && auditsRes.page > 1 }\" [yuvBusyOverlay]=\"busy\">\n @if (error) {\n <div class=\"error\">\n <div translate>yuv.audit.fetch.error</div>\n </div>\n }\n\n @if (auditsRes) {\n <!-- list of audits -->\n @let resItems = resolvedItems();\n @if (resItems.length) {\n <div class=\"timeline\">\n @for (item of resItems; track $index) {\n <div class=\"audit\">\n <div class=\"date\">{{ item.creationDate | localeDate }}</div>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\">{{ item.label }}</span>\n @if (item.detail === 'OBJECT_DOCUMENT_CHANGED') {\n @if (link()) {\n <a class=\"version\" [routerLink]=\"link()\" [queryParams]=\"{ version: item.version }\">{{ item.version }}</a>\n } @else {\n <span class=\"version\">{{ item.version }}</span>\n }\n }\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\">{{ item.createdBy.title }}</div>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsRes.hasMoreItems || auditsRes.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <div class=\"paging\">\n <button [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\" [disabled]=\"auditsRes.page === 1\" (click)=\"goToPage(auditsRes.page - 1)\">\n <yvc-icon class=\"prev\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\" [disabled]=\"!auditsRes.hasMoreItems\" (click)=\"goToPage(auditsRes.page + 1)\">\n <yvc-icon class=\"next\" [svg]=\"icons.arrowNext\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n", styles: [":host .yuv-audit{position:relative;height:100%;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"items\" \"footer\";background-color:var(--panel-background-grey);container-type:inline-size;container-name:cmp}:host .yuv-audit .error{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .yuv-audit .error>div{background-color:var(--color-error);color:#fff;margin:var(--app-pane-padding);padding:var(--app-pane-padding);border-radius:calc(var(--app-pane-padding) / 2)}:host .yuv-audit .search{position:absolute;left:0;top:0;bottom:0;max-width:90%;background-color:var(--panel-background);border-right:1px solid var(--panel-divider-color);animation:yuvFadeInLeft var(--app-default-transition-duration);padding:var(--app-pane-padding);display:flex;z-index:3;flex-flow:column}:host .yuv-audit .search h3{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}:host .yuv-audit .search button.group{color:var(--text-color-caption);margin:0 0 var(--app-pane-padding) 0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal);padding:0;cursor:pointer}:host .yuv-audit .search button.group:focus{color:var(--color-accent);outline:0;background-color:transparent;border-color:transparent}:host .yuv-audit .search .controls{flex:1;overflow-y:auto}:host .yuv-audit .search .controls .form-control{margin-top:var(--app-pane-padding)}:host .yuv-audit .search .buttons{display:flex;justify-content:flex-end}:host .yuv-audit .btn-search{position:absolute;top:var(--app-pane-padding);left:var(--app-pane-padding);background-color:var(--panel-background);padding:calc(var(--app-pane-padding) / 2);border:1px solid var(--panel-divider-color);z-index:1;box-shadow:0 0 10px 10px var(--panel-background-grey)}:host .yuv-audit .btn-search.badge{color:var(--color-accent)}:host .yuv-audit .btn-search yvc-icon{display:block}:host .yuv-audit .audits{grid-area:items}:host .yuv-audit .empty{grid-area:items;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .yuv-audit .footer{grid-area:footer;background-color:var(--panel-background);border-top:1px solid var(--panel-divider-color);display:flex}:host .yuv-audit .footer .paging{flex:1;display:flex;align-items:center;justify-content:flex-end;color:var(--text-color-caption)}:host .yuv-audit .footer .paging .page{padding:0 calc(var(--app-pane-padding) / 2)}:host .yuv-audit .footer .paging .prev{transform:rotate(180deg)}:host .yuv-audit .footer button{padding:0}:host .timeline{--track-color: var(--panel-divider-color);--track-size: calc(var(--app-pane-padding) * 3);overflow-y:auto;padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}@container (max-width: 450px){:host .timeline .audit{grid-template-columns:var(--track-size) auto;grid-template-rows:var(--track-size) auto;grid-template-areas:\"line date\" \"node node\"}:host .timeline .audit .date{justify-self:start}:host .timeline .audit .date,:host .timeline .audit:after{translate:0 .5em}:host .timeline .audit .node{margin:0;width:100%}:host .timeline .audit:last-child:before{height:100%}}:host .timeline :where(.audit){display:grid;grid-template-columns:1fr var(--track-size) 1fr;grid-template-areas:\"date line node\"}:host .timeline :where(.audit) .date{grid-area:date;justify-self:end;align-self:center}:host .timeline :where(.audit) .node{grid-area:node;justify-self:start;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);border-radius:.25em;margin:calc(var(--app-pane-padding) / 2) 0;padding:var(--app-pane-padding);box-sizing:border-box;display:grid;gap:calc(var(--app-pane-padding) / 8)}:host .timeline :where(.audit) .node .label{display:flex;align-items:end}:host .timeline :where(.audit) .node .label .title{flex:1;word-break:break-all;font-weight:700;color:var(--text-color-body)}:host .timeline :where(.audit) .node .label .version{line-height:1em;border-radius:2px;background-color:rgba(var(--color-accent-rgb),.15);color:var(--color-accent);font-size:var(--font-hint);font-family:monospace;align-self:center;margin-left:var(--app-pane-padding);padding:4px 6px;display:block}:host .timeline :where(.audit) .node .meta{color:var(--text-color-caption)}:host .timeline :where(.audit):before{grid-area:line;content:\"\";width:calc(50% - 1px);height:100%;border-inline-end:1px solid var(--track-color)}:host .timeline :where(.audit):after{grid-area:line;content:\"\";width:11px;height:11px;border-radius:50%;border:2px solid var(--track-color);background-color:var(--panel-background-grey);box-sizing:border-box;align-self:center;justify-self:center}:host .timeline :where(.audit):first-child:before{height:50%;align-self:end}:host .timeline :where(.audit):last-child:before{height:50%;align-self:start}\n"] }]
194
+ }], ctorParameters: () => [{ type: i1.AuditService }, { type: i1.BackendService }, { type: i1.AppCacheService }, { type: i1.EventService }, { type: i1.SystemService }, { type: i2.UntypedFormBuilder }, { type: i1.TranslateService }] });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWF1ZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvc3JjL2xpYi9vYmplY3QtYXVkaXQvb2JqZWN0LWF1ZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvc3JjL2xpYi9vYmplY3QtYXVkaXQvb2JqZWN0LWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLGVBQWUsRUFHZixZQUFZLEVBQ1osY0FBYyxFQUVkLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLGVBQWUsRUFDZixnQkFBZ0IsRUFFaEIsWUFBWSxFQUNiLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFD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QWMsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBDYWNoZVNlcnZpY2UsXG4gIEF1ZGl0RW50cnksXG4gIEF1ZGl0UXVlcnlSZXN1bHQsXG4gIEF1ZGl0U2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIERtc09iamVjdCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBMb2NhbGVEYXRlUGlwZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlTW9kdWxlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBZdXZFdmVudCxcbiAgWXV2RXZlbnRUeXBlXG59IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgQnVzeU92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvY29tbW9uJztcbmltcG9ydCB7IFlVVl9JQ09OUyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9pY29ucyc7XG5pbXBvcnQgeyBZdmNJY29uTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW9iamVjdC1hdWRpdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlckxpbmssIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEJ1c3lPdmVybGF5RGlyZWN0aXZlLCBMb2NhbGVEYXRlUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBZdmNJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1hdWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vYmplY3QtYXVkaXQuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdEF1ZGl0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBGSUxURVJfQ0FDSEVfS0VZID0gJ3l1di5hdWRpdC5maWx0ZXJzJztcblxuICBwcml2YXRlIF9vYmplY3RJRD86IHN0cmluZztcbiAgcHJpdmF0ZSBfb2JqZWN0VHlwZUlEPzogc3RyaW5nO1xuXG4gIGljb25zID0ge1xuICAgIGZpbHRlcjogWVVWX0lDT05TLmZpbHRlcixcbiAgICBhcnJvd05leHQ6IFlVVl9JQ09OUy5hcnJvd05leHRcbiAgfTtcblxuICBhdWRpdHNSZXM/OiBBdWRpdFF1ZXJ5UmVzdWx0O1xuICByZXNvbHZlZEl0ZW1zID0gc2lnbmFsPFJlc2xvdmVkQXVkaXRFbnRyeVtdPihbXSk7XG4gIHNlYXJjaFBhbmVsU2hvdyA9IGZhbHNlO1xuICBlcnJvciA9IGZhbHNlO1xuICBidXN5ID0gZmFsc2U7XG4gIHNlYXJjaEFjdGlvbnM6IHsgbGFiZWw6IHN0cmluZzsgYWN0aW9uczogc3RyaW5nW10gfVtdID0gW107XG4gIGF1ZGl0TGFiZWxzOiBhbnkgPSB7fTtcblxuICBkbXNPYmplY3QgPSBpbnB1dDxEbXNPYmplY3QgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgI2Rtc09iamVjdEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbyA9IHRoaXMuZG1zT2JqZWN0KCk7XG4gICAgaWYgKCFvKSB7XG4gICAgICB0aGlzLl9vYmplY3RJRCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX29iamVjdFR5cGVJRCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuYXVkaXRzUmVzID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX29iamVjdElEIHx8IHRoaXMuX29iamVjdElEICE9PSBvLmlkKSB7XG4gICAgICB0aGlzLl9vYmplY3RJRCA9IG8uaWQ7XG4gICAgICB0aGlzLl9vYmplY3RUeXBlSUQgPSBvLm9iamVjdFR5cGVJZDtcbiAgICAgIHRoaXMucXVlcnkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWVyeSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBhdWRpdHMgdGhhdCBzaG91bGQgbm90IGJlIHNob3duLiBVc2UgdGhlIGF1ZGl0IGNvZGVzIChsaWtlIDEwMCwgMzAxLCBldGMuKS5cbiAgICogVGhpcyB3aWxsIGFsc28gZGlzYWJsZSB0aGUgY29ycmVzcG9uZGluZyBmaWx0ZXJzLlxuICAgKi9cbiAgc2tpcEFjdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBpZ25vcmUgYWRtaW4gYW5kIHVzZXIgc2VwYXJhdGlvbiBvZiBhdWRpdCBlbnRyaWVzXG4gICAqL1xuICBhbGxBY3Rpb25zID0gaW5wdXQoZmFsc2UpO1xuXG4gIGdldCBvYmplY3RJRCgpIHtcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0SUQ7XG4gIH1cblxuICBsaW5rID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHsgYWxpYXM6ICd2ZXJzaW9uc0xpbmsnIH0pO1xuXG4gIHZlcnNpb25zTGluayA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsaW5rID0gdGhpcy5saW5rKCk7XG5cbiAgICByZXR1cm4gbGluayA/IGAke2xpbmt9YCA6IHVuZGVmaW5lZDtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdWRpdFNlcnZpY2U6IEF1ZGl0U2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwQ2FjaGU6IEFwcENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgIC8vIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnlTZXJ2aWNlLFxuICAgIC8vIEBJbmplY3QoUk9VVEVTKSBwcml2YXRlIHJvdXRlczogWXV2Um91dGVzXG4gICkge1xuICAgIC8vIHRoaXMudmVyc2lvblN0YXRlUGF0aCA9IHRoaXMucm91dGVzICYmIHRoaXMucm91dGVzLnZlcnNpb25zID8gdGhpcy5yb3V0ZXMudmVyc2lvbnMucGF0aCA6IG51bGw7XG4gICAgLy8gdGhpcy52ZXJzaW9uU3RhdGVRdWVyeVBhcmFtID0gdGhpcy5yb3V0ZXMgJiYgdGhpcy5yb3V0ZXMudmVyc2lvbnMgPyB0aGlzLnJvdXRlcy52ZXJzaW9ucy5xdWVyeVBhcmFtcy52ZXJzaW9uIDogbnVsbDtcbiAgICAvLyB0aGlzLmljb25SZWdpc3RyeS5yZWdpc3Rlckljb25zKFtmaWx0ZXIsIGFycm93TmV4dCwgYXJyb3dOZXh0XSk7XG4gICAgdGhpcy5hdWRpdExhYmVscyA9IHtcbiAgICAgIGExMDA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC5jcmVhdGUubWV0YWRhdGEnKSxcbiAgICAgIGExMDE6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC5jcmVhdGUubWV0YWRhdGEud2l0aGNvbnRlbnQnKSxcbiAgICAgIGExMTA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC5jcmVhdGUudGFnJyksXG5cbiAgICAgIGEyMDA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC5kZWxldGUnKSxcbiAgICAgIGEyMDE6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC5kZWxldGUuY29udGVudCcpLCAvLyAjdlxuICAgICAgYTIwMjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLmRlbGV0ZS5tYXJrZWQnKSxcbiAgICAgIGEyMTA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC5kZWxldGUudGFnJyksIC8vICN2XG4gICAgICBhMjIwOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXVkaXQubGFiZWwuZGVsZXRlLnZlcnNpb24nKSwgLy8gI3ZcblxuICAgICAgYTMwMDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLnVwZGF0ZS5tZXRhZGF0YScpLFxuICAgICAgYTMwMTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLnVwZGF0ZS5jb250ZW50JyksXG4gICAgICBhMzAyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXVkaXQubGFiZWwudXBkYXRlLm1ldGFkYXRhLndpdGhjb250ZW50JyksXG4gICAgICBhMzAzOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXVkaXQubGFiZWwudXBkYXRlLm1vdmUuY29udGVudCcpLFxuICAgICAgYTMxMDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLnVwZGF0ZS50YWcnKSxcbiAgICAgIGEzMjU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC51cGRhdGUucmVzdG9yZScpLFxuICAgICAgYTM0MDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLnVwZGF0ZS5tb3ZlJyksXG5cbiAgICAgIGE0MDA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hdWRpdC5sYWJlbC5nZXQuY29udGVudCcpLFxuICAgICAgYTQwMTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLmdldC5tZXRhZGF0YScpLFxuICAgICAgYTQwMjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLmdldC5yZW5kaXRpb24udGV4dCcpLFxuICAgICAgYTQwMzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgneXV2LmF1ZGl0LmxhYmVsLmdldC5yZW5kaXRpb24ucGRmJyksXG4gICAgICBhNDA0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXVkaXQubGFiZWwuZ2V0LnJlbmRpdGlvbi50aHVtYm5haWwnKSxcblxuICAgICAgYTEwMDAwOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXVkaXQubGFiZWwuZ2V0LmN1c3RvbScpXG4gICAgfTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoZTogWXV2RXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZG1zT2JqZWN0ID0gZS5kYXRhIGFzIERtc09iamVjdDtcbiAgICAgICAgLy8gcmVsb2FkIGF1ZGl0IGVudHJpZXMgd2hlbiB1cGRhdGUgYmVsb25ncyB0byB0aGUgY3VycmVudCBkbXMgb2JqZWN0XG4gICAgICAgIGlmIChkbXNPYmplY3QuaWQgPT09IHRoaXMub2JqZWN0SUQpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaEF1ZGl0RW50cmllcygpIHtcbiAgICBpZiAoIXRoaXMuX29iamVjdElEIHx8ICF0aGlzLl9vYmplY3RUeXBlSUQpIHJldHVybjtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5idXN5ID0gdHJ1ZTtcblxuICAgIHRoaXMuYXVkaXRTZXJ2aWNlXG4gICAgICAuZ2V0QXVkaXRFbnRyaWVzKHRoaXMuX29iamVjdElELCB7IHNraXBBY3Rpb25zOiB0aGlzLnNraXBBY3Rpb25zKCkgfSlcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmJ1c3kgPSBmYWxzZSkpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IEF1ZGl0UXVlcnlSZXN1bHQpID0+IHtcbiAgICAgICAgICB0aGlzLmF1ZGl0c1JlcyA9IHJlcztcbiAgICAgICAgICB0aGlzLnJlc29sdmVkSXRlbXMuc2V0KHRoaXMubWFwUmVzdWx0KHJlcykpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMub25FcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUmVzdWx0KHJlczogQXVkaXRRdWVyeVJlc3VsdCk6IFJlc2xvdmVkQXVkaXRFbnRyeVtdIHtcbiAgICByZXR1cm4gKFxuICAgICAgcmVzLml0ZW1zXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIGZpbHRlciBvbmNlIHRoZSBzeXN0ZW06cmVuOnRleHQgYXVkaXQgbGlmZWN5Y2xlIHBsYW5uaW5nIGlzIGNvbXBsZXRlIGFuZCB0aGUgdGFnJ3MgcHVycG9zZSBpcyBmdWxseSBkZWZpbmVkLlxuICAgICAgICAvLyBodHRwczovL2hlbHAub3B0aW1hbC1zeXN0ZW1zLmNvbS95dXV2aXMvTW9tZW50dW0vbGF0ZXN0L2luZGV4Lmh0bWwjX2NvbnRlbnRfcmVuZGl0aW9uc19hc3luY2hyb25vdXNfZnVsbF90ZXh0X2luZGV4aW5nLmh0bWxcbiAgICAgICAgLmZpbHRlcigoaSkgPT4gIWkuZGV0YWlsLmluY2x1ZGVzKCdbc3lzdGVtOnJlbjp0ZXh0LCAxXScpKVxuICAgICAgICAubWFwKChpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcjogUmVzbG92ZWRBdWRpdEVudHJ5ID0geyAuLi5pLCBsYWJlbDogdGhpcy5hdWRpdExhYmVsc1snYScgKyBpLmFjdGlvbl0gfTtcbiAgICAgICAgICAvLyB0YWcgcmVsYXRlZCBhdWRpdHNcbiAgICAgICAgICBpZiAoWzExMCwgMjEwLCAzMTBdLmluY2x1ZGVzKGkuYWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRBdWRpdEVudHJ5UGFyYW1zKGkpO1xuICAgICAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgICByLm1vcmUgPSBgXG4gICAgICAgICAgJHt0aGlzLnN5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChwYXJhbXNbMF0pfTogJHt0aGlzLnN5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChgJHtwYXJhbXNbMF19OiR7cGFyYW1zWzFdfWApfVxuICAgICAgICAgIGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHJlc3RvcmUgYXVkaXRcbiAgICAgICAgICBlbHNlIGlmIChpLmFjdGlvbiA9PT0gMzI1KSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldEF1ZGl0RW50cnlQYXJhbXMoaSk7XG4gICAgICAgICAgICByLm1vcmUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXVkaXQubGFiZWwudXBkYXRlLnJlc3RvcmUubW9yZScsIHsgdmVyc2lvbjogcGFyYW1zWzBdIHx8ICdbP10nIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBjdXN0b20gYXVkaXRzXG4gICAgICAgICAgZWxzZSBpZiAoaS5hY3Rpb24gPT09IDEwMDAwKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gdGhpcy5zeXN0ZW0uZ2V0TG9jYWxpemVkTGFiZWwoYGF1ZGl0OmN1c3RvbToke2kuc3ViYWN0aW9ufWApIHx8IGAke2kuc3ViYWN0aW9ufWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEF1ZGl0RW50cnlQYXJhbXMoYXVkaXRJdGVtOiBBdWRpdEVudHJ5KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG0gPSBhdWRpdEl0ZW0uZGV0YWlsLm1hdGNoKC9cXFsoLio/KVxcXS8pO1xuICAgIHJldHVybiBtICYmIG1bMV0gPyBtWzFdLnNwbGl0KCcsJykubWFwKChpKSA9PiBpLnRyaW0oKSkgOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgcXVlcnkgZnJvbSB0aGUgc2VhcmNoIHBhbmVsLlxuICAgKi9cbiAgcXVlcnkoKSB7XG4gICAgdGhpcy5mZXRjaEF1ZGl0RW50cmllcygpO1xuICB9XG5cbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuYXVkaXRzUmVzKSB7XG4gICAgICB0aGlzLmJ1c3kgPSB0cnVlO1xuICAgICAgdGhpcy5hdWRpdFNlcnZpY2VcbiAgICAgICAgLmdldFBhZ2UodGhpcy5hdWRpdHNSZXMsIHBhZ2UpXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmJ1c3kgPSBmYWxzZSkpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzOiBBdWRpdFF1ZXJ5UmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1ZGl0c1JlcyA9IHJlcztcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZWRJdGVtcy5zZXQodGhpcy5tYXBSZXN1bHQocmVzKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkVycm9yKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uRXJyb3IoKSB7XG4gICAgdGhpcy5hdWRpdHNSZXMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5lcnJvciA9IHRydWU7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFJlc2xvdmVkQXVkaXRFbnRyeSBleHRlbmRzIEF1ZGl0RW50cnkge1xuICBsYWJlbDogc3RyaW5nO1xufVxuIiwiPGRpdiBjbGFzcz1cInl1di1hdWRpdFwiIFtuZ0NsYXNzXT1cInsgc2luZ2xlRW50cnk6IGF1ZGl0c1Jlcz8uaXRlbXM/Lmxlbmd0aCA9PT0gMSwgb25QYWdlOiBhdWRpdHNSZXMgJiYgYXVkaXRzUmVzLnBhZ2UgPiAxIH1cIiBbeXV2QnVzeU92ZXJsYXldPVwiYnVzeVwiPlxuICBAaWYgKGVycm9yKSB7XG4gICAgPGRpdiBjbGFzcz1cImVycm9yXCI+XG4gICAgICA8ZGl2IHRyYW5zbGF0ZT55dXYuYXVkaXQuZmV0Y2guZXJyb3I8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIEBpZiAoYXVkaXRzUmVzKSB7XG4gICAgPCEtLSBsaXN0IG9mIGF1ZGl0cyAtLT5cbiAgICBAbGV0IHJlc0l0ZW1zID0gcmVzb2x2ZWRJdGVtcygpO1xuICAgIEBpZiAocmVzSXRlbXMubGVuZ3RoKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiByZXNJdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF1ZGl0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZVwiPnt7IGl0ZW0uY3JlYXRpb25EYXRlIHwgbG9jYWxlRGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmRldGFpbCA9PT0gJ09CSkVDVF9ET0NVTUVOVF9DSEFOR0VEJykge1xuICAgICAgICAgICAgICAgICAgQGlmIChsaW5rKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ2ZXJzaW9uXCIgW3JvdXRlckxpbmtdPVwibGluaygpXCIgW3F1ZXJ5UGFyYW1zXT1cInsgdmVyc2lvbjogaXRlbS52ZXJzaW9uIH1cIj57eyBpdGVtLnZlcnNpb24gfX08L2E+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJzaW9uXCI+e3sgaXRlbS52ZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlIG1ldGFcIj57eyBpdGVtLm1vcmUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3IgbWV0YVwiPnt7IGl0ZW0uY3JlYXRlZEJ5LnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIiB0cmFuc2xhdGU+eXV2LmF1ZGl0LnJlc3VsdC5lbXB0eTwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gY29udHJvbHMgLS0+XG4gICAgQGlmIChhdWRpdHNSZXMuaGFzTW9yZUl0ZW1zIHx8IGF1ZGl0c1Jlcy5wYWdlID4gMSkge1xuICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiIHl1dk9mZmxpbmVEaXNhYmxlZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luZ1wiPlxuICAgICAgICAgIDxidXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCIneXV2LmF1ZGl0LmxhYmVsLnBhZ2luZy5wcmV2JyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCJhdWRpdHNSZXMucGFnZSA9PT0gMVwiIChjbGljayk9XCJnb1RvUGFnZShhdWRpdHNSZXMucGFnZSAtIDEpXCI+XG4gICAgICAgICAgICA8eXZjLWljb24gY2xhc3M9XCJwcmV2XCIgW3N2Z109XCJpY29ucy5hcnJvd05leHRcIj48L3l2Yy1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgICAgICB7eyBhdWRpdHNSZXMucGFnZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCIneXV2LmF1ZGl0LmxhYmVsLnBhZ2luZy5uZXh0JyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhYXVkaXRzUmVzLmhhc01vcmVJdGVtc1wiIChjbGljayk9XCJnb1RvUGFnZShhdWRpdHNSZXMucGFnZSArIDEpXCI+XG4gICAgICAgICAgICA8eXZjLWljb24gY2xhc3M9XCJuZXh0XCIgW3N2Z109XCJpY29ucy5hcnJvd05leHRcIj48L3l2Yy1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,127 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { DmsService, EventService, ObjectConfigService, RetentionField, SystemService, TranslateService, UserService, YuvEventType } from '@yuuvis/client-core';
5
+ import { BusyOverlayDirective } from '@yuuvis/client-framework/common';
6
+ import { PanelComponent } from '@yuuvis/client-framework/panel';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ export class ObjectDetailsShellComponent {
10
+ /**
11
+ * DmsObject to show the details for.
12
+ */
13
+ set dmsObject(o) {
14
+ this._dmsObject = o;
15
+ // this.objectTypeId = o ? this.systemService.getLeadingObjectTypeID(o.objectTypeId, o.data[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] as string) : undefined;
16
+ if (this._dmsObject) {
17
+ this._getHeaderData();
18
+ this.retentionEndDate = this._dmsObject.data[RetentionField.RETENTION_END]
19
+ ? new Date(this._dmsObject.data[RetentionField.RETENTION_END])
20
+ : undefined;
21
+ const today = new Date();
22
+ this.retentionEnded = this.retentionEndDate && today > this.retentionEndDate;
23
+ }
24
+ }
25
+ get dmsObject() {
26
+ return this._dmsObject;
27
+ }
28
+ /**
29
+ * ID of a DmsObject. The object will be fetched from the backend upfront.
30
+ */
31
+ set objectId(id) {
32
+ if (id) {
33
+ this._getDmsObject(id);
34
+ }
35
+ else {
36
+ this.dmsObject = undefined;
37
+ }
38
+ }
39
+ constructor() {
40
+ this.translate = inject(TranslateService);
41
+ this.objectConfigService = inject(ObjectConfigService);
42
+ this.eventService = inject(EventService);
43
+ this.dmsService = inject(DmsService);
44
+ this.systemService = inject(SystemService);
45
+ this.userService = inject(UserService);
46
+ this._subs = [];
47
+ this.busy = false;
48
+ this.isAdvancedUser = this.userService.isAdvancedUser;
49
+ this.dmsObjectChange = new EventEmitter();
50
+ this.objectConfigService
51
+ .getObjectConfigs$()
52
+ // this.objectConfigService.getObjectConfigs$(this.bucket || '')
53
+ .pipe(takeUntilDestroyed())
54
+ .subscribe((res) => {
55
+ this.oc = res;
56
+ if (this._dmsObject)
57
+ this._getHeaderData();
58
+ });
59
+ this.eventService
60
+ .on(YuvEventType.DMS_OBJECT_UPDATED)
61
+ .pipe(takeUntilDestroyed())
62
+ .subscribe((e) => {
63
+ const o = e.data;
64
+ if (this._dmsObject && this._dmsObject.id === o.id)
65
+ this.dmsObject = o;
66
+ });
67
+ }
68
+ _getHeaderData() {
69
+ if (this._dmsObject) {
70
+ const oc = this.oc[this._dmsObject.objectTypeId];
71
+ // const ic = oc.icon ? (this._dmsObject.data[oc.icon.propertyName] as string) : this._dmsObject.objectTypeId;
72
+ const icon = {
73
+ title: this.systemService.getLocalizedLabel(this._dmsObject.objectTypeId)
74
+ };
75
+ if (oc.icon)
76
+ icon.svg = oc.icon.svg;
77
+ else
78
+ icon.src = this.systemService.getObjectTypeIconUri(this._dmsObject.objectTypeId);
79
+ this.headerData = {
80
+ icon,
81
+ title: oc.title ? this.dmsObject?.data[oc.title.propertyName] : undefined,
82
+ description: oc.description ? this.dmsObject?.data[oc.description.propertyName] : undefined
83
+ };
84
+ }
85
+ else
86
+ this.headerData = undefined;
87
+ }
88
+ _getDmsObject(id) {
89
+ this.busy = true;
90
+ this.dmsService.getDmsObject(id).subscribe({
91
+ next: (dmsObject) => (this.dmsObject = dmsObject),
92
+ error: () => {
93
+ this.dmsObject = undefined;
94
+ this.contextError = this.translate.instant('yuv.object-metadata.context.load.error');
95
+ },
96
+ complete: () => {
97
+ this.busy = false;
98
+ this.dmsObjectChange.emit(this.dmsObject);
99
+ }
100
+ });
101
+ }
102
+ ngOnInit() {
103
+ this._subs.push(this.eventService.on(YuvEventType.DMS_OBJECT_DELETED).subscribe((event) => {
104
+ if (event.data?.id === this._dmsObject?.id) {
105
+ this._dmsObject = undefined;
106
+ }
107
+ }));
108
+ }
109
+ ngOnDestroy() {
110
+ this._subs.forEach((s) => s.unsubscribe());
111
+ }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectDetailsShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ObjectDetailsShellComponent, isStandalone: true, selector: "yuv-object-details-shell", inputs: { layoutSettingsID: "layoutSettingsID", dmsObject: "dmsObject", objectId: "objectId" }, outputs: { dmsObjectChange: "dmsObjectChange" }, ngImport: i0, template: "<yuv-panel\n *ngIf=\"dmsObject; else tplEmpty\"\n [yuvBusyOverlay]=\"busy\"\n [icon]=\"headerData?.icon\"\n [title]=\"headerData?.title\"\n [description]=\"headerData?.description\"\n>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</yuv-panel>\n\n<ng-template #tplEmpty>\n <div class=\"empty\">\n <div class=\"error\" *ngIf=\"contextError; else tplEmptyNoError\">{{ contextError }}</div>\n </div>\n</ng-template>\n\n<ng-template #tplEmptyNoError> EMPTY </ng-template>\n\n\n", styles: [":host{display:block}:host yuv-panel{height:100%}:host .content{height:100%}:host .empty{height:100%;display:grid;align-items:center;justify-content:center}:host .empty .error{max-width:40ch;margin:var(--app-pane-padding);color:var(--text-color-caption);padding:calc(var(--app-pane-padding) * .75);border-radius:.5em;line-height:1.5em;border:1px solid var(--panel-divider-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PanelComponent, selector: "yuv-panel", inputs: ["icon", "title", "description"] }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay"] }] }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectDetailsShellComponent, decorators: [{
116
+ type: Component,
117
+ args: [{ selector: 'yuv-object-details-shell', standalone: true, imports: [CommonModule, PanelComponent, BusyOverlayDirective], template: "<yuv-panel\n *ngIf=\"dmsObject; else tplEmpty\"\n [yuvBusyOverlay]=\"busy\"\n [icon]=\"headerData?.icon\"\n [title]=\"headerData?.title\"\n [description]=\"headerData?.description\"\n>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</yuv-panel>\n\n<ng-template #tplEmpty>\n <div class=\"empty\">\n <div class=\"error\" *ngIf=\"contextError; else tplEmptyNoError\">{{ contextError }}</div>\n </div>\n</ng-template>\n\n<ng-template #tplEmptyNoError> EMPTY </ng-template>\n\n\n", styles: [":host{display:block}:host yuv-panel{height:100%}:host .content{height:100%}:host .empty{height:100%;display:grid;align-items:center;justify-content:center}:host .empty .error{max-width:40ch;margin:var(--app-pane-padding);color:var(--text-color-caption);padding:calc(var(--app-pane-padding) * .75);border-radius:.5em;line-height:1.5em;border:1px solid var(--panel-divider-color)}\n"] }]
118
+ }], ctorParameters: () => [], propDecorators: { layoutSettingsID: [{
119
+ type: Input
120
+ }], dmsObject: [{
121
+ type: Input
122
+ }], dmsObjectChange: [{
123
+ type: Output
124
+ }], objectId: [{
125
+ type: Input
126
+ }] } });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMtc2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9vYmplY3QtZGV0YWlscy9zcmMvbGliL29iamVjdC1kZXRhaWxzLXNoZWxsL29iamVjdC1kZXRhaWxzLXNoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvc3JjL2xpYi9vYmplY3QtZGV0YWlscy1zaGVsbC9vYmplY3QtZGV0YWlscy1zaGVsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxVQUFVLEVBQ1YsWUFBWSxFQUVaLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixXQUFXLEVBRVgsWUFBWSxFQUNiLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFVaEUsTUFBTSxPQUFPLDJCQUEyQjtJQWlDdEM7O09BRUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxDQUF3QjtRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixrS0FBa0s7UUFFbEssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7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QUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO2dCQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBdklVLDJCQUEyQjttR0FBM0IsMkJBQTJCLHFPQzNCeEMsNGZBcUJBLHFiREVZLFlBQVksbUlBQUUsY0FBYyxnR0FBRSxvQkFBb0I7OzRGQUlqRCwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsb0JBQW9CLENBQUM7d0RBb0NwRCxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0YsU0FBUztzQkFEWixLQUFLO2dCQW1CSSxlQUFlO3NCQUF4QixNQUFNO2dCQU1ILFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgRG1zT2JqZWN0LFxuICBEbXNTZXJ2aWNlLFxuICBFdmVudFNlcnZpY2UsXG4gIE9iamVjdENvbmZpZ1JlY29yZCxcbiAgT2JqZWN0Q29uZmlnU2VydmljZSxcbiAgUmV0ZW50aW9uRmllbGQsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBZdXZFdmVudCxcbiAgWXV2RXZlbnRUeXBlXG59IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgQnVzeU92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvY29tbW9uJztcbmltcG9ydCB7IFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL3BhbmVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dXYtb2JqZWN0LWRldGFpbHMtc2hlbGwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQYW5lbENvbXBvbmVudCwgQnVzeU92ZXJsYXlEaXJlY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWRldGFpbHMtc2hlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtZGV0YWlscy1zaGVsbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdERldGFpbHNTaGVsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgb2JqZWN0Q29uZmlnU2VydmljZSA9IGluamVjdChPYmplY3RDb25maWdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBldmVudFNlcnZpY2UgPSBpbmplY3QoRXZlbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkbXNTZXJ2aWNlID0gaW5qZWN0KERtc1NlcnZpY2UpO1xuICBwcml2YXRlIHN5c3RlbVNlcnZpY2UgPSBpbmplY3QoU3lzdGVtU2VydmljZSk7XG4gIHByaXZhdGUgdXNlclNlcnZpY2UgPSBpbmplY3QoVXNlclNlcnZpY2UpO1xuXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIF9kbXNPYmplY3Q/OiBEbXNPYmplY3Q7XG4gIGNvbnRleHRFcnJvcj86IHN0cmluZztcbiAgb2JqZWN0VHlwZUlkPzogc3RyaW5nO1xuICByZXRlbnRpb25FbmREYXRlPzogRGF0ZTtcbiAgcmV0ZW50aW9uRW5kZWQ/OiBib29sZWFuO1xuICBmaWxlRHJvcExhYmVsPzogc3RyaW5nO1xuICBidXN5ID0gZmFsc2U7XG4gIGlzQWR2YW5jZWRVc2VyID0gdGhpcy51c2VyU2VydmljZS5pc0FkdmFuY2VkVXNlcjtcblxuICBwcml2YXRlIG9jPzogT2JqZWN0Q29uZmlnUmVjb3JkO1xuICBoZWFkZXJEYXRhPzoge1xuICAgIGljb24/OiB7XG4gICAgICBzcmM/OiBzdHJpbmc7XG4gICAgICBzdmc/OiBzdHJpbmc7XG4gICAgICB0aXRsZT86IHN0cmluZztcbiAgICB9O1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJRCB0byBzdG9yZSB0aGUgY29tcG9uZW50cyBsYXlvdXQgc3RhdGUgKHNwbGl0dGVkIHRhYnMsIGd1dHRlciBwb3NpdGlvbilcbiAgICovXG4gIEBJbnB1dCgpIGxheW91dFNldHRpbmdzSUQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEbXNPYmplY3QgdG8gc2hvdyB0aGUgZGV0YWlscyBmb3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZG1zT2JqZWN0KG86IERtc09iamVjdCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2Rtc09iamVjdCA9IG87XG4gICAgLy8gdGhpcy5vYmplY3RUeXBlSWQgPSBvID8gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldExlYWRpbmdPYmplY3RUeXBlSUQoby5vYmplY3RUeXBlSWQsIG8uZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdIGFzIHN0cmluZykgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5fZG1zT2JqZWN0KSB7XG4gICAgICB0aGlzLl9nZXRIZWFkZXJEYXRhKCk7XG4gICAgICB0aGlzLnJldGVudGlvbkVuZERhdGUgPSB0aGlzLl9kbXNPYmplY3QuZGF0YVtSZXRlbnRpb25GaWVsZC5SRVRFTlRJT05fRU5EXVxuICAgICAgICA/IG5ldyBEYXRlKHRoaXMuX2Rtc09iamVjdC5kYXRhW1JldGVudGlvbkZpZWxkLlJFVEVOVElPTl9FTkRdIGFzIHN0cmluZylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICB0aGlzLnJldGVudGlvbkVuZGVkID0gdGhpcy5yZXRlbnRpb25FbmREYXRlICYmIHRvZGF5ID4gdGhpcy5yZXRlbnRpb25FbmREYXRlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkbXNPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rtc09iamVjdDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBkbXNPYmplY3RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERtc09iamVjdD4oKTtcblxuICAvKipcbiAgICogSUQgb2YgYSBEbXNPYmplY3QuIFRoZSBvYmplY3Qgd2lsbCBiZSBmZXRjaGVkIGZyb20gdGhlIGJhY2tlbmQgdXBmcm9udC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBvYmplY3RJZChpZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLl9nZXREbXNPYmplY3QoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRtc09iamVjdCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9iamVjdENvbmZpZ1NlcnZpY2VcbiAgICAgIC5nZXRPYmplY3RDb25maWdzJCgpXG4gICAgICAvLyB0aGlzLm9iamVjdENvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlncyQodGhpcy5idWNrZXQgfHwgJycpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogT2JqZWN0Q29uZmlnUmVjb3JkKSA9PiB7XG4gICAgICAgIHRoaXMub2MgPSByZXM7XG4gICAgICAgIGlmICh0aGlzLl9kbXNPYmplY3QpIHRoaXMuX2dldEhlYWRlckRhdGEoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChlOiBZdXZFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBvID0gZS5kYXRhIGFzIERtc09iamVjdDtcbiAgICAgICAgaWYgKHRoaXMuX2Rtc09iamVjdCAmJiB0aGlzLl9kbXNPYmplY3QuaWQgPT09IG8uaWQpIHRoaXMuZG1zT2JqZWN0ID0gbztcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SGVhZGVyRGF0YSgpIHtcbiAgICBpZiAodGhpcy5fZG1zT2JqZWN0KSB7XG4gICAgICBjb25zdCBvYyA9IHRoaXMub2MhW3RoaXMuX2Rtc09iamVjdC5vYmplY3RUeXBlSWRdO1xuICAgICAgLy8gY29uc3QgaWMgPSBvYy5pY29uID8gKHRoaXMuX2Rtc09iamVjdC5kYXRhW29jLmljb24ucHJvcGVydHlOYW1lXSBhcyBzdHJpbmcpIDogdGhpcy5fZG1zT2JqZWN0Lm9iamVjdFR5cGVJZDtcblxuICAgICAgY29uc3QgaWNvbjogeyB0aXRsZT86IHN0cmluZzsgc3ZnPzogc3RyaW5nOyBzcmM/OiBzdHJpbmcgfSA9IHtcbiAgICAgICAgdGl0bGU6IHRoaXMuc3lzdGVtU2VydmljZS5nZXRMb2NhbGl6ZWRMYWJlbCh0aGlzLl9kbXNPYmplY3Qub2JqZWN0VHlwZUlkKVxuICAgICAgfTtcblxuICAgICAgaWYgKG9jLmljb24pIGljb24uc3ZnID0gb2MuaWNvbi5zdmc7XG4gICAgICBlbHNlIGljb24uc3JjID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGVJY29uVXJpKHRoaXMuX2Rtc09iamVjdC5vYmplY3RUeXBlSWQpO1xuXG4gICAgICB0aGlzLmhlYWRlckRhdGEgPSB7XG4gICAgICAgIGljb24sXG4gICAgICAgIHRpdGxlOiBvYy50aXRsZSA/ICh0aGlzLmRtc09iamVjdD8uZGF0YVtvYy50aXRsZS5wcm9wZXJ0eU5hbWVdIGFzIHN0cmluZykgOiB1bmRlZmluZWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvYy5kZXNjcmlwdGlvbiA/ICh0aGlzLmRtc09iamVjdD8uZGF0YVtvYy5kZXNjcmlwdGlvbi5wcm9wZXJ0eU5hbWVdIGFzIHN0cmluZykgOiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgfSBlbHNlIHRoaXMuaGVhZGVyRGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERtc09iamVjdChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5idXN5ID0gdHJ1ZTtcbiAgICB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0KGlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRtc09iamVjdCkgPT4gKHRoaXMuZG1zT2JqZWN0ID0gZG1zT2JqZWN0KSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNvbnRleHRFcnJvciA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5vYmplY3QtbWV0YWRhdGEuY29udGV4dC5sb2FkLmVycm9yJyk7XG4gICAgICB9LFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0Q2hhbmdlLmVtaXQodGhpcy5kbXNPYmplY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgdGhpcy5ldmVudFNlcnZpY2Uub24oWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfREVMRVRFRCkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuZGF0YT8uaWQgPT09IHRoaXMuX2Rtc09iamVjdD8uaWQpIHtcbiAgICAgICAgICB0aGlzLl9kbXNPYmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxufVxuIiwiPHl1di1wYW5lbFxuICAqbmdJZj1cImRtc09iamVjdDsgZWxzZSB0cGxFbXB0eVwiXG4gIFt5dXZCdXN5T3ZlcmxheV09XCJidXN5XCJcbiAgW2ljb25dPVwiaGVhZGVyRGF0YT8uaWNvblwiXG4gIFt0aXRsZV09XCJoZWFkZXJEYXRhPy50aXRsZVwiXG4gIFtkZXNjcmlwdGlvbl09XCJoZWFkZXJEYXRhPy5kZXNjcmlwdGlvblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwveXV2LXBhbmVsPlxuXG48bmctdGVtcGxhdGUgI3RwbEVtcHR5PlxuICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cImNvbnRleHRFcnJvcjsgZWxzZSB0cGxFbXB0eU5vRXJyb3JcIj57eyBjb250ZXh0RXJyb3IgfX08L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RwbEVtcHR5Tm9FcnJvcj4gRU1QVFkgPC9uZy10ZW1wbGF0ZT5cblxuXG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { CommonModule, JsonPipe } from '@angular/common';
2
+ import { Component, Input, inject, signal } from '@angular/core';
3
+ import { ConfigService, DmsObject, UserService } from '@yuuvis/client-core';
4
+ import { YvcSplitTabsModule } from '@yuuvis/components/split-tabs';
5
+ import { YuvMediaViewerComponent } from '@yuuvis/media-viewer';
6
+ import { ObjectAuditComponent } from './object-audit/object-audit.component';
7
+ import { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';
8
+ import { ObjectMetadataComponent } from './object-metadata/object-metadata.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@yuuvis/components/split-tabs";
11
+ export class ObjectDetailsComponent {
12
+ #configService;
13
+ #userService;
14
+ /**
15
+ * If you want to set the order of the tabs within object details, you can use
16
+ * this input property. The tab order will be defined by the index of the
17
+ * input array containing the following values in the desired order:
18
+ *
19
+ * - `summary`: Object summary tab
20
+ * - `indexdata`: Indexdata edit form tab
21
+ * - `preview`: Content preview tab
22
+ * - `history: Object history tab (audits)
23
+ */
24
+ set panelOrder(po) {
25
+ const def = ['summary', 'indexdata', 'preview', 'history'];
26
+ po = po || def;
27
+ this._splitTabConfig = {
28
+ primary: {
29
+ tabs: po,
30
+ active: po[0]
31
+ }
32
+ };
33
+ }
34
+ constructor() {
35
+ this.#configService = inject(ConfigService);
36
+ this.#userService = inject(UserService);
37
+ this.isAdvancedUser = this.#userService.isAdvancedUser;
38
+ this._splitTabConfig = {};
39
+ this.currentUser = signal(this.#userService.getCurrentUser());
40
+ if (this.#configService.get('client.objectDetailsTabs'))
41
+ this.panelOrder = this.#configService.get('client.objectDetailsTabs');
42
+ }
43
+ onIndexdataSaved(updatedObject) {
44
+ this.dmsObject = updatedObject;
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectDetailsComponent, isStandalone: true, selector: "yuv-object-details", inputs: { panelOrder: "panelOrder", layoutSettingsID: "layoutSettingsID", dmsObject: "dmsObject", objectId: "objectId" }, ngImport: i0, template: "<yuv-object-details-shell [objectId]=\"objectId\" [(dmsObject)]=\"dmsObject\" [layoutSettingsID]=\"layoutSettingsID\">\n <yvc-split-tabs class=\"content\" [config]=\"_splitTabConfig\" [layoutSettingsID]=\"layoutSettingsID\">\n <!-- content -->\n <ng-template [yvcTab]=\"{ id: 'content', label: 'yuv.object-details.tabs.content.title' | translate }\">\n @if (dmsObject && dmsObject.content) {\n <yuv-media-viewer\n [id]=\"dmsObject.id\"\n [metadata]=\"{ data: dmsObject.data, editable: true, user: currentUser() }\"\n [type]=\"dmsObject.content.mimeType\"\n ></yuv-media-viewer>\n }\n\n <span>{{ currentUser() | json }}</span>\n </ng-template>\n <!-- indexdata -->\n <ng-template [yvcTab]=\"{ id: 'indexdata', label: 'yuv.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [dmsObject]=\"dmsObject\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{ id: 'history', label: 'yuv.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"dmsObject\"></yuv-object-audit>\n </ng-template>\n </yvc-split-tabs>\n</yuv-object-details-shell>\n", styles: [":host{display:block}:host yuv-object-details-shell,:host yvc-split-tabs,:host yuv-object-form-edit{height:100%}\n"], dependencies: [{ kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: YvcSplitTabsModule }, { kind: "component", type: i1.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: ObjectDetailsShellComponent, selector: "yuv-object-details-shell", inputs: ["layoutSettingsID", "dmsObject", "objectId"], outputs: ["dmsObjectChange"] }, { kind: "component", type: YuvMediaViewerComponent, selector: "yuv-media-viewer", inputs: ["id", "type", "metadata", "src"] }, { kind: "component", type: ObjectMetadataComponent, selector: "yuv-object-metadata", inputs: ["situation", "formDisabled", "dmsObject", "flavoredDmsObject"], outputs: ["indexDataSaved", "statusChanged"] }, { kind: "component", type: ObjectAuditComponent, selector: "yuv-object-audit", inputs: ["dmsObject", "skipActions", "allActions", "versionsLink"] }] }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectDetailsComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'yuv-object-details', standalone: true, imports: [JsonPipe, CommonModule, YvcSplitTabsModule, ObjectDetailsShellComponent, YuvMediaViewerComponent, ObjectMetadataComponent, ObjectAuditComponent], template: "<yuv-object-details-shell [objectId]=\"objectId\" [(dmsObject)]=\"dmsObject\" [layoutSettingsID]=\"layoutSettingsID\">\n <yvc-split-tabs class=\"content\" [config]=\"_splitTabConfig\" [layoutSettingsID]=\"layoutSettingsID\">\n <!-- content -->\n <ng-template [yvcTab]=\"{ id: 'content', label: 'yuv.object-details.tabs.content.title' | translate }\">\n @if (dmsObject && dmsObject.content) {\n <yuv-media-viewer\n [id]=\"dmsObject.id\"\n [metadata]=\"{ data: dmsObject.data, editable: true, user: currentUser() }\"\n [type]=\"dmsObject.content.mimeType\"\n ></yuv-media-viewer>\n }\n\n <span>{{ currentUser() | json }}</span>\n </ng-template>\n <!-- indexdata -->\n <ng-template [yvcTab]=\"{ id: 'indexdata', label: 'yuv.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [dmsObject]=\"dmsObject\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{ id: 'history', label: 'yuv.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"dmsObject\"></yuv-object-audit>\n </ng-template>\n </yvc-split-tabs>\n</yuv-object-details-shell>\n", styles: [":host{display:block}:host yuv-object-details-shell,:host yvc-split-tabs,:host yuv-object-form-edit{height:100%}\n"] }]
52
+ }], ctorParameters: () => [], propDecorators: { panelOrder: [{
53
+ type: Input
54
+ }], layoutSettingsID: [{
55
+ type: Input
56
+ }], dmsObject: [{
57
+ type: Input
58
+ }], objectId: [{
59
+ type: Input
60
+ }] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9vYmplY3QtZGV0YWlscy9zcmMvbGliL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvc3JjL2xpYi9vYmplY3QtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUEyQixrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7QUFTdEYsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixjQUFjLENBQXlCO0lBQ3ZDLFlBQVksQ0FBdUI7SUFPNUM7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBYSxVQUFVLENBQUMsRUFBd0I7UUFDOUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzRCxFQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2Q7U0FDRixDQUFDO0lBQ0osQ0FBQztJQWNEO1FBekNTLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFDbEQsb0JBQWUsR0FBNEIsRUFBRSxDQUFDO1FBRTlDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQW9DdkQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBd0I7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7SUFDakMsQ0FBQzsrR0FoRFUsc0JBQXNCO21HQUF0QixzQkFBc0Isd01DaEJuQyxxdkNBd0JBLHNLRFpZLFFBQVEsNENBQUUsWUFBWSw4QkFBRSxrQkFBa0Isd01BQUUsMkJBQTJCLDBKQUFFLHVCQUF1Qix3R0FBRSx1QkFBdUIsdUxBQUUsb0JBQW9COzs0RkFJOUksc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixDQUFDO3dEQXVCN0ksVUFBVTtzQkFBdEIsS0FBSztnQkFhRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBKc29uUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgRG1zT2JqZWN0LCBVc2VyU2VydmljZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgU3BsaXRUYWJzTGF5b3V0U2V0dGluZ3MsIFl2Y1NwbGl0VGFic01vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9zcGxpdC10YWJzJztcbmltcG9ydCB7IFl1dk1lZGlhVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnQHl1dXZpcy9tZWRpYS12aWV3ZXInO1xuaW1wb3J0IHsgT2JqZWN0QXVkaXRDb21wb25lbnQgfSBmcm9tICcuL29iamVjdC1hdWRpdC9vYmplY3QtYXVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IE9iamVjdERldGFpbHNTaGVsbENvbXBvbmVudCB9IGZyb20gJy4vb2JqZWN0LWRldGFpbHMtc2hlbGwvb2JqZWN0LWRldGFpbHMtc2hlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IE9iamVjdE1ldGFkYXRhQ29tcG9uZW50IH0gZnJvbSAnLi9vYmplY3QtbWV0YWRhdGEvb2JqZWN0LW1ldGFkYXRhLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3l1di1vYmplY3QtZGV0YWlscycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtKc29uUGlwZSwgQ29tbW9uTW9kdWxlLCBZdmNTcGxpdFRhYnNNb2R1bGUsIE9iamVjdERldGFpbHNTaGVsbENvbXBvbmVudCwgWXV2TWVkaWFWaWV3ZXJDb21wb25lbnQsIE9iamVjdE1ldGFkYXRhQ29tcG9uZW50LCBPYmplY3RBdWRpdENvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0RGV0YWlsc0NvbXBvbmVudCB7XG4gIHJlYWRvbmx5ICNjb25maWdTZXJ2aWNlID0gaW5qZWN0KENvbmZpZ1NlcnZpY2UpO1xuICByZWFkb25seSAjdXNlclNlcnZpY2UgPSBpbmplY3QoVXNlclNlcnZpY2UpO1xuXG4gIGlzQWR2YW5jZWRVc2VyID0gdGhpcy4jdXNlclNlcnZpY2UuaXNBZHZhbmNlZFVzZXI7XG4gIF9zcGxpdFRhYkNvbmZpZzogU3BsaXRUYWJzTGF5b3V0U2V0dGluZ3MgPSB7fTtcblxuICBjdXJyZW50VXNlciA9IHNpZ25hbCh0aGlzLiN1c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpKTtcblxuICAvKipcbiAgICogSWYgeW91IHdhbnQgdG8gc2V0IHRoZSBvcmRlciBvZiB0aGUgdGFicyB3aXRoaW4gb2JqZWN0IGRldGFpbHMsIHlvdSBjYW4gdXNlXG4gICAqIHRoaXMgaW5wdXQgcHJvcGVydHkuIFRoZSB0YWIgb3JkZXIgd2lsbCBiZSBkZWZpbmVkIGJ5IHRoZSBpbmRleCBvZiB0aGVcbiAgICogaW5wdXQgYXJyYXkgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIHZhbHVlcyBpbiB0aGUgZGVzaXJlZCBvcmRlcjpcbiAgICpcbiAgICogLSBgc3VtbWFyeWA6IE9iamVjdCBzdW1tYXJ5IHRhYlxuICAgKiAtIGBpbmRleGRhdGFgOiBJbmRleGRhdGEgZWRpdCBmb3JtIHRhYlxuICAgKiAtIGBwcmV2aWV3YDogQ29udGVudCBwcmV2aWV3IHRhYlxuICAgKiAtIGBoaXN0b3J5OiBPYmplY3QgaGlzdG9yeSB0YWIgKGF1ZGl0cylcbiAgICovXG4gIEBJbnB1dCgpIHNldCBwYW5lbE9yZGVyKHBvOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRlZiA9IFsnc3VtbWFyeScsICdpbmRleGRhdGEnLCAncHJldmlldycsICdoaXN0b3J5J107XG4gICAgcG8gPSBwbyB8fCBkZWY7XG4gICAgdGhpcy5fc3BsaXRUYWJDb25maWcgPSB7XG4gICAgICBwcmltYXJ5OiB7XG4gICAgICAgIHRhYnM6IHBvLFxuICAgICAgICBhY3RpdmU6IHBvWzBdXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogSUQgdG8gc3RvcmUgdGhlIGNvbXBvbmVudHMgbGF5b3V0IHN0YXRlIChzcGxpdHRlZCB0YWJzLCBndXR0ZXIgcG9zaXRpb24pXG4gICAqL1xuICBASW5wdXQoKSBsYXlvdXRTZXR0aW5nc0lEPzogc3RyaW5nO1xuICAvKipcbiAgICogRG1zT2JqZWN0IHRvIHNob3cgdGhlIGRldGFpbHMgZm9yLlxuICAgKi9cbiAgQElucHV0KCkgZG1zT2JqZWN0PzogRG1zT2JqZWN0O1xuICAvKipcbiAgICogSUQgb2YgYSBEbXNPYmplY3QuIFRoZSBvYmplY3Qgd2lsbCBiZSBmZXRjaGVkIGZyb20gdGhlIGJhY2tlbmQgdXBmcm9udC5cbiAgICovXG4gIEBJbnB1dCgpIG9iamVjdElkPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICh0aGlzLiNjb25maWdTZXJ2aWNlLmdldCgnY2xpZW50Lm9iamVjdERldGFpbHNUYWJzJykpIHRoaXMucGFuZWxPcmRlciA9IHRoaXMuI2NvbmZpZ1NlcnZpY2UuZ2V0KCdjbGllbnQub2JqZWN0RGV0YWlsc1RhYnMnKTtcbiAgfVxuXG4gIG9uSW5kZXhkYXRhU2F2ZWQodXBkYXRlZE9iamVjdDogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5kbXNPYmplY3QgPSB1cGRhdGVkT2JqZWN0O1xuICB9XG5cbiAgLy8gdmVyc2lvblNlbGVjdGVkKHZlcnNpb246IG51bWJlcikge1xuICAvLyAgIGNvbnN0IG5hdiA9IFsnLi4vLi4nLCAndmVyc2lvbiddO1xuICAvLyAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbLi4ubmF2LCB0aGlzLmRtc09iamVjdD8udmVyc2lvbl0sIHsgcXVlcnlQYXJhbXM6IHsgdmVyc2lvbiB9LCByZWxhdGl2ZVRvOiB0aGlzLiNyb3V0ZSB9KTtcbiAgLy8gfVxufVxuIiwiPHl1di1vYmplY3QtZGV0YWlscy1zaGVsbCBbb2JqZWN0SWRdPVwib2JqZWN0SWRcIiBbKGRtc09iamVjdCldPVwiZG1zT2JqZWN0XCIgW2xheW91dFNldHRpbmdzSURdPVwibGF5b3V0U2V0dGluZ3NJRFwiPlxuICA8eXZjLXNwbGl0LXRhYnMgY2xhc3M9XCJjb250ZW50XCIgW2NvbmZpZ109XCJfc3BsaXRUYWJDb25maWdcIiBbbGF5b3V0U2V0dGluZ3NJRF09XCJsYXlvdXRTZXR0aW5nc0lEXCI+XG4gICAgPCEtLSBjb250ZW50IC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cInsgaWQ6ICdjb250ZW50JywgbGFiZWw6ICd5dXYub2JqZWN0LWRldGFpbHMudGFicy5jb250ZW50LnRpdGxlJyB8IHRyYW5zbGF0ZSB9XCI+XG4gICAgICBAaWYgKGRtc09iamVjdCAmJiBkbXNPYmplY3QuY29udGVudCkge1xuICAgICAgICA8eXV2LW1lZGlhLXZpZXdlclxuICAgICAgICAgIFtpZF09XCJkbXNPYmplY3QuaWRcIlxuICAgICAgICAgIFttZXRhZGF0YV09XCJ7IGRhdGE6IGRtc09iamVjdC5kYXRhLCBlZGl0YWJsZTogdHJ1ZSwgdXNlcjogY3VycmVudFVzZXIoKSB9XCJcbiAgICAgICAgICBbdHlwZV09XCJkbXNPYmplY3QuY29udGVudC5taW1lVHlwZVwiXG4gICAgICAgID48L3l1di1tZWRpYS12aWV3ZXI+XG4gICAgICB9XG5cbiAgICAgIDxzcGFuPnt7IGN1cnJlbnRVc2VyKCkgfCBqc29uIH19PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPCEtLSBpbmRleGRhdGEgLS0+XG4gICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwieyBpZDogJ2luZGV4ZGF0YScsIGxhYmVsOiAneXV2Lm9iamVjdC1tZXRhZGF0YS50YWJzLmluZGV4ZGF0YS50aXRsZScgfCB0cmFuc2xhdGUgfVwiPlxuICAgICAgPHl1di1vYmplY3QtbWV0YWRhdGEgW2Rtc09iamVjdF09XCJkbXNPYmplY3RcIiAoaW5kZXhEYXRhU2F2ZWQpPVwib25JbmRleGRhdGFTYXZlZCgkZXZlbnQpXCI+IDwveXV2LW9iamVjdC1tZXRhZGF0YT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwhLS0gaGlzdG9yeSAtLT5cbiAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7IGlkOiAnaGlzdG9yeScsIGxhYmVsOiAneXV2Lm9iamVjdC1tZXRhZGF0YS50YWJzLmhpc3RvcnkudGl0bGUnIHwgdHJhbnNsYXRlIH1cIj5cbiAgICAgIDx5dXYtb2JqZWN0LWF1ZGl0IFtkbXNPYmplY3RdPVwiZG1zT2JqZWN0XCI+PC95dXYtb2JqZWN0LWF1ZGl0PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLXNwbGl0LXRhYnM+XG48L3l1di1vYmplY3QtZGV0YWlscy1zaGVsbD5cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FormSectionGroupPipe {
4
+ transform(form, id) {
5
+ return form.get(id);
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormSectionGroupPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FormSectionGroupPipe, isStandalone: true, name: "formSectionGroup" }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormSectionGroupPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'formSectionGroup',
14
+ standalone: true
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLWdyb3VwLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL3NyYy9saWIvb2JqZWN0LW1ldGFkYXRhL2Zvcm0tc2VjdGlvbi1ncm91cC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFNBQVMsQ0FBQyxJQUFlLEVBQUUsRUFBVTtRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFjLENBQUM7SUFDbkMsQ0FBQzsrR0FIVSxvQkFBb0I7NkdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2Zvcm1TZWN0aW9uR3JvdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlIFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VjdGlvbkdyb3VwUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oZm9ybTogRm9ybUdyb3VwLCBpZDogc3RyaW5nKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gZm9ybS5nZXQoaWQpIGFzIEZvcm1Hcm91cDtcbiAgfVxufVxuIl19