@yuuvis/client-framework 2.0.0-beta.0 → 2.0.0-beta.3

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 (389) hide show
  1. package/actions/lib/actions/delete-action/delete/delete.component.d.ts +3 -3
  2. package/actions/lib/actions/delete-action/delete-action.d.ts +1 -1
  3. package/actions/lib/actions.service.d.ts +7 -3
  4. package/actions/lib/components/contextmenu/contextmenu.component.d.ts +3 -1
  5. package/autocomplete/README.md +3 -0
  6. package/autocomplete/index.d.ts +3 -0
  7. package/autocomplete/lib/autocomplete.component.d.ts +72 -0
  8. package/autocomplete/lib/autocomplete.interface.d.ts +4 -0
  9. package/autocomplete/lib/autocomplete.module.d.ts +7 -0
  10. package/common/index.d.ts +4 -4
  11. package/common/lib/common.module.d.ts +19 -0
  12. package/common/lib/common.utils.d.ts +2 -0
  13. package/common/lib/components/confirm/confirm.component.d.ts +7 -0
  14. package/common/lib/components/confirm/confirm.interface.d.ts +7 -0
  15. package/common/lib/components/confirm/confirm.service.d.ts +9 -0
  16. package/common/lib/components/dialog/dialog.component.d.ts +6 -0
  17. package/common/lib/components/dialog/dialog.options.d.ts +7 -0
  18. package/common/lib/components/index.d.ts +5 -0
  19. package/common/lib/directives/autofocus-child.directive.d.ts +13 -0
  20. package/common/lib/directives/autofocus-delayed.directive.d.ts +18 -0
  21. package/common/lib/directives/drag-scroll.directive.d.ts +20 -0
  22. package/common/lib/directives/index.d.ts +8 -4
  23. package/common/lib/directives/noop-value-accessor.directive.d.ts +2 -2
  24. package/common/lib/mat-form-field.abstract.d.ts +41 -0
  25. package/common/lib/services/index.d.ts +1 -1
  26. package/common/lib/services/layout-settings/layout-settings.service.d.ts +18 -0
  27. package/datepicker/README.md +3 -0
  28. package/datepicker/index.d.ts +5 -0
  29. package/datepicker/lib/calendar/calendar.component.d.ts +72 -0
  30. package/datepicker/lib/date-input/date-input-element/date-input-element.component.d.ts +43 -0
  31. package/datepicker/lib/date-input/date-input-hour-element/date-input-hour-element.component.d.ts +11 -0
  32. package/datepicker/lib/date-input/date-input.component.d.ts +61 -0
  33. package/datepicker/lib/datepicker-calendar/datepicker-calendar-trigger.component.d.ts +7 -0
  34. package/datepicker/lib/datepicker-calendar/datepicker-calendar.component.d.ts +12 -0
  35. package/datepicker/lib/datepicker.component.d.ts +80 -0
  36. package/datepicker/lib/datepicker.interface.d.ts +34 -0
  37. package/datepicker/lib/datepicker.module.d.ts +9 -0
  38. package/datepicker/lib/datepicker.service.d.ts +46 -0
  39. package/datepicker/lib/datepicker.utils.d.ts +23 -0
  40. package/datepicker/lib/time-input/time-input.component.d.ts +36 -0
  41. package/datepicker/lib/time-input/time-input.interface.d.ts +6 -0
  42. package/fesm2022/yuuvis-client-framework-actions.mjs +147 -105
  43. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
  44. package/fesm2022/yuuvis-client-framework-app-bar.mjs +7 -8
  45. package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
  46. package/fesm2022/yuuvis-client-framework-autocomplete.mjs +210 -0
  47. package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -0
  48. package/fesm2022/yuuvis-client-framework-clipboard.mjs +9 -9
  49. package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -1
  50. package/fesm2022/yuuvis-client-framework-common.mjs +853 -780
  51. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
  52. package/fesm2022/yuuvis-client-framework-datepicker.mjs +1688 -0
  53. package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -0
  54. package/fesm2022/yuuvis-client-framework-forms.mjs +945 -1157
  55. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  56. package/fesm2022/yuuvis-client-framework-icons.mjs +85 -12
  57. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  58. package/fesm2022/yuuvis-client-framework-list.mjs +81 -45
  59. package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
  60. package/fesm2022/yuuvis-client-framework-master-details.mjs +112 -0
  61. package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -0
  62. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +60 -0
  63. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -0
  64. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +125 -100
  65. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
  66. package/fesm2022/yuuvis-client-framework-object-details.mjs +49 -59
  67. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
  68. package/fesm2022/yuuvis-client-framework-object-flavor.mjs +188 -77
  69. package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
  70. package/fesm2022/yuuvis-client-framework-object-form.mjs +99 -184
  71. package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
  72. package/fesm2022/yuuvis-client-framework-object-preview.mjs +11 -11
  73. package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
  74. package/fesm2022/yuuvis-client-framework-object-summary.mjs +46 -42
  75. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  76. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs +126 -0
  77. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs.map +1 -0
  78. package/fesm2022/yuuvis-client-framework-pagination.mjs +7 -9
  79. package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
  80. package/fesm2022/yuuvis-client-framework-panel.mjs +8 -7
  81. package/fesm2022/yuuvis-client-framework-panel.mjs.map +1 -1
  82. package/fesm2022/yuuvis-client-framework-popout.mjs +212 -0
  83. package/fesm2022/yuuvis-client-framework-popout.mjs.map +1 -0
  84. package/fesm2022/yuuvis-client-framework-renderer.mjs +99 -72
  85. package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
  86. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +29 -112
  87. package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
  88. package/fesm2022/yuuvis-client-framework-simple-search.mjs +40 -21
  89. package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
  90. package/fesm2022/yuuvis-client-framework-split-view.mjs +188 -0
  91. package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -0
  92. package/fesm2022/yuuvis-client-framework-tile-list.mjs +100 -93
  93. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  94. package/fesm2022/yuuvis-client-framework-tree.mjs +15 -15
  95. package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -1
  96. package/fesm2022/yuuvis-client-framework-upload-progress.mjs +16 -21
  97. package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -1
  98. package/fesm2022/yuuvis-client-framework.mjs +4 -4
  99. package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
  100. package/forms/index.d.ts +7 -1
  101. package/forms/lib/elements/catalog/catalog.component.d.ts +17 -56
  102. package/forms/lib/elements/data-grid/edit-table-data/edit-data.component.d.ts +5 -4
  103. package/forms/lib/elements/datetime/datetime.component.d.ts +19 -10
  104. package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +12 -27
  105. package/forms/lib/elements/index.d.ts +0 -1
  106. package/forms/lib/elements/number/number.component.d.ts +21 -30
  107. package/forms/lib/elements/number-range/number-range.component.d.ts +12 -7
  108. package/forms/lib/elements/organization/organization.component.d.ts +23 -51
  109. package/forms/lib/elements/range-select-date/range-select-date.component.d.ts +12 -7
  110. package/forms/lib/elements/range-select-filesize/range-select-filesize.component.d.ts +12 -7
  111. package/forms/lib/elements/string/string.component.d.ts +15 -20
  112. package/forms/lib/forms.module.d.ts +8 -11
  113. package/icons/index.d.ts +1 -0
  114. package/icons/lib/icon.component.d.ts +20 -0
  115. package/lib/assets/i18n/de.json +7 -23
  116. package/lib/assets/i18n/en.json +10 -26
  117. package/list/index.d.ts +1 -0
  118. package/list/lib/list-item.directive.d.ts +5 -4
  119. package/list/lib/list.component.d.ts +6 -3
  120. package/list/lib/list.module.d.ts +8 -0
  121. package/master-details/README.md +3 -0
  122. package/master-details/index.d.ts +2 -0
  123. package/master-details/lib/master-details.component.d.ts +58 -0
  124. package/master-details/lib/master-details.interface.d.ts +7 -0
  125. package/master-details/lib/master-details.module.d.ts +7 -0
  126. package/metadata-form/index.d.ts +4 -1
  127. package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +4 -17
  128. package/metadata-form/lib/metadata-form-field/metadata-form-field.interface.d.ts +11 -0
  129. package/metadata-form/lib/object-metadata-element-error.directive.d.ts +13 -0
  130. package/metadata-form/lib/object-metadata-element-label.directive.d.ts +10 -0
  131. package/metadata-form/lib/object-metadata-element-template.directive.d.ts +3 -3
  132. package/metadata-form-defaults/README.md +3 -0
  133. package/metadata-form-defaults/index.d.ts +2 -0
  134. package/metadata-form-defaults/lib/metadata-form-defaults.module.d.ts +7 -0
  135. package/object-details/lib/object-audit/object-audit.component.d.ts +3 -9
  136. package/object-details/lib/object-details.component.d.ts +0 -2
  137. package/object-details/lib/object-metadata/object-metadata.component.d.ts +4 -3
  138. package/object-details/lib/retention-badge/retention-badge.component.d.ts +0 -3
  139. package/object-flavor/index.d.ts +1 -0
  140. package/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.d.ts +1 -2
  141. package/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.d.ts +3 -2
  142. package/object-flavor/lib/default-apply-flavor/default-apply-flavor.component.d.ts +19 -0
  143. package/object-flavor/lib/flavor-chip/flavor-chip.component.d.ts +1 -1
  144. package/object-flavor/lib/object-flavor/object-flavor.component.d.ts +3 -6
  145. package/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.d.ts +0 -1
  146. package/object-form/index.d.ts +1 -1
  147. package/object-form/lib/object-form-element/object-form-element.component.d.ts +2 -2
  148. package/object-form/lib/object-form-group/object-form-group.component.d.ts +1 -3
  149. package/object-form/lib/object-form.component.d.ts +2 -2
  150. package/object-form/lib/object-form.interface.d.ts +0 -44
  151. package/object-form/lib/object-form.module.d.ts +7 -0
  152. package/object-form/lib/object-form.service.d.ts +1 -2
  153. package/object-form/lib/object-form.utils.d.ts +1 -1
  154. package/object-summary/lib/object-summary/object-summary.component.d.ts +13 -15
  155. package/overflow-menu/README.md +3 -0
  156. package/overflow-menu/index.d.ts +3 -0
  157. package/overflow-menu/lib/overflow-menu.component.d.ts +31 -0
  158. package/overflow-menu/lib/overflow-menu.interface.d.ts +9 -0
  159. package/overflow-menu/lib/overflow-menu.module.d.ts +7 -0
  160. package/package.json +43 -69
  161. package/popout/README.md +3 -0
  162. package/popout/index.d.ts +3 -0
  163. package/popout/lib/popout.component.d.ts +58 -0
  164. package/popout/lib/popout.interface.d.ts +17 -0
  165. package/popout/lib/popout.module.d.ts +7 -0
  166. package/renderer/lib/property-renderer/abstract.renderer.d.ts +4 -4
  167. package/renderer/lib/property-renderer/icon.renderer.component.d.ts +2 -0
  168. package/renderer/lib/renderer.directive.d.ts +4 -3
  169. package/sequence-list/index.d.ts +0 -1
  170. package/sequence-list/lib/sequence-list.component.d.ts +0 -4
  171. package/simple-search/index.d.ts +0 -1
  172. package/simple-search/lib/simple-search/simple-search.component.d.ts +6 -10
  173. package/split-view/README.md +3 -0
  174. package/split-view/index.d.ts +4 -0
  175. package/split-view/lib/split-area.directive.d.ts +16 -0
  176. package/split-view/lib/split-view.component.d.ts +76 -0
  177. package/split-view/lib/split-view.interface.d.ts +10 -0
  178. package/split-view/lib/split-view.module.d.ts +8 -0
  179. package/styles/client-framework.scss +21 -67
  180. package/tile-list/lib/tile/tile.component.d.ts +1 -2
  181. package/tile-list/lib/tile-config/property-select/property-select.component.d.ts +0 -1
  182. package/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.d.ts +1 -2
  183. package/tile-list/lib/tile-config/tile-config.component.d.ts +0 -3
  184. package/tile-list/lib/tile-list/tile-list.component.d.ts +5 -5
  185. package/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.d.ts +0 -5
  186. package/upload-progress/lib/upload-progress/upload-progress.component.d.ts +0 -4
  187. package/common/lib/components/focus-indicator/focus-indicator.component.d.ts +0 -7
  188. package/common/lib/components/token-input/token-input.component.d.ts +0 -55
  189. package/common/lib/components/token-input/token-input.interface.d.ts +0 -8
  190. package/common/lib/services/error-messages/error-messages.service.d.ts +0 -7
  191. package/esm2022/actions/index.mjs +0 -7
  192. package/esm2022/actions/lib/actions/copy-action/copy-action.mjs +0 -31
  193. package/esm2022/actions/lib/actions/cut-action/cut-action.mjs +0 -30
  194. package/esm2022/actions/lib/actions/delete-action/delete/delete.component.mjs +0 -67
  195. package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +0 -38
  196. package/esm2022/actions/lib/actions/download-action/download-action.mjs +0 -33
  197. package/esm2022/actions/lib/actions.icon.mjs +0 -8
  198. package/esm2022/actions/lib/actions.interface.mjs +0 -19
  199. package/esm2022/actions/lib/actions.module.mjs +0 -16
  200. package/esm2022/actions/lib/actions.service.mjs +0 -89
  201. package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +0 -27
  202. package/esm2022/actions/yuuvis-client-framework-actions.mjs +0 -5
  203. package/esm2022/app-bar/index.mjs +0 -2
  204. package/esm2022/app-bar/lib/app-bar.component.mjs +0 -89
  205. package/esm2022/app-bar/yuuvis-client-framework-app-bar.mjs +0 -5
  206. package/esm2022/clipboard/index.mjs +0 -2
  207. package/esm2022/clipboard/lib/clipboard.component.mjs +0 -48
  208. package/esm2022/clipboard/yuuvis-client-framework-clipboard.mjs +0 -5
  209. package/esm2022/common/index.mjs +0 -7
  210. package/esm2022/common/lib/components/focus-indicator/focus-indicator.component.mjs +0 -41
  211. package/esm2022/common/lib/components/token-input/token-input.component.mjs +0 -324
  212. package/esm2022/common/lib/components/token-input/token-input.interface.mjs +0 -2
  213. package/esm2022/common/lib/directives/busy-overlay.directive.mjs +0 -88
  214. package/esm2022/common/lib/directives/click-double.directive.mjs +0 -61
  215. package/esm2022/common/lib/directives/container-size.directive.mjs +0 -56
  216. package/esm2022/common/lib/directives/drag-select.directive.mjs +0 -114
  217. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.directive.mjs +0 -153
  218. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.interface.mjs +0 -2
  219. package/esm2022/common/lib/directives/focus-within.directive.mjs +0 -81
  220. package/esm2022/common/lib/directives/index.mjs +0 -9
  221. package/esm2022/common/lib/directives/light-dismiss.directive.mjs +0 -44
  222. package/esm2022/common/lib/directives/longpress.directive.mjs +0 -36
  223. package/esm2022/common/lib/directives/noop-value-accessor.directive.mjs +0 -42
  224. package/esm2022/common/lib/services/error-messages/error-messages.service.mjs +0 -68
  225. package/esm2022/common/lib/services/index.mjs +0 -2
  226. package/esm2022/common/yuuvis-client-framework-common.mjs +0 -5
  227. package/esm2022/forms/index.mjs +0 -24
  228. package/esm2022/forms/lib/elements/catalog/catalog.component.mjs +0 -118
  229. package/esm2022/forms/lib/elements/data-grid/data-grid/data-grid.component.mjs +0 -172
  230. package/esm2022/forms/lib/elements/data-grid/edit-table-data/edit-data.component.mjs +0 -95
  231. package/esm2022/forms/lib/elements/data-grid/model/data-grid.interface.mjs +0 -9
  232. package/esm2022/forms/lib/elements/datetime/datetime.component.mjs +0 -82
  233. package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +0 -166
  234. package/esm2022/forms/lib/elements/index.mjs +0 -11
  235. package/esm2022/forms/lib/elements/number/number.component.mjs +0 -195
  236. package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +0 -176
  237. package/esm2022/forms/lib/elements/organization/organization.component.mjs +0 -286
  238. package/esm2022/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.mjs +0 -38
  239. package/esm2022/forms/lib/elements/range-select-date/range-select-date.component.mjs +0 -181
  240. package/esm2022/forms/lib/elements/range-select-date/range-select-date.interface.mjs +0 -2
  241. package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.component.mjs +0 -98
  242. package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.interface.mjs +0 -2
  243. package/esm2022/forms/lib/elements/string/string.component.mjs +0 -261
  244. package/esm2022/forms/lib/form-input/form-input.component.mjs +0 -88
  245. package/esm2022/forms/lib/forms.module.mjs +0 -58
  246. package/esm2022/forms/yuuvis-client-framework-forms.mjs +0 -5
  247. package/esm2022/icons/index.mjs +0 -4
  248. package/esm2022/icons/lib/icon.service.mjs +0 -59
  249. package/esm2022/icons/lib/icons.mjs +0 -32
  250. package/esm2022/icons/lib/object-type-icon/object-type-icon.component.mjs +0 -29
  251. package/esm2022/icons/yuuvis-client-framework-icons.mjs +0 -5
  252. package/esm2022/index.mjs +0 -2
  253. package/esm2022/lib/yuuvis-client-framework.module.mjs +0 -15
  254. package/esm2022/list/index.mjs +0 -3
  255. package/esm2022/list/lib/list-item.directive.mjs +0 -72
  256. package/esm2022/list/lib/list.component.mjs +0 -135
  257. package/esm2022/list/yuuvis-client-framework-list.mjs +0 -5
  258. package/esm2022/metadata-form/index.mjs +0 -4
  259. package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +0 -32
  260. package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +0 -99
  261. package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +0 -83
  262. package/esm2022/metadata-form/lib/object-metadata-element-template.directive.mjs +0 -52
  263. package/esm2022/metadata-form/yuuvis-client-framework-metadata-form.mjs +0 -5
  264. package/esm2022/object-details/index.mjs +0 -8
  265. package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +0 -195
  266. package/esm2022/object-details/lib/object-details-shell/object-details-shell.component.mjs +0 -127
  267. package/esm2022/object-details/lib/object-details.component.mjs +0 -61
  268. package/esm2022/object-details/lib/object-metadata/form-section-group.pipe.mjs +0 -17
  269. package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +0 -202
  270. package/esm2022/object-details/lib/object-metadata/object-metadata.interface.mjs +0 -2
  271. package/esm2022/object-details/lib/retention-badge/retention-badge.component.mjs +0 -27
  272. package/esm2022/object-details/yuuvis-client-framework-object-details.mjs +0 -5
  273. package/esm2022/object-flavor/index.mjs +0 -6
  274. package/esm2022/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.mjs +0 -25
  275. package/esm2022/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.mjs +0 -21
  276. package/esm2022/object-flavor/lib/flavor-chip/flavor-chip.component.mjs +0 -35
  277. package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +0 -93
  278. package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +0 -43
  279. package/esm2022/object-flavor/yuuvis-client-framework-object-flavor.mjs +0 -5
  280. package/esm2022/object-form/index.mjs +0 -5
  281. package/esm2022/object-form/lib/form-scripting.api.interface.mjs +0 -2
  282. package/esm2022/object-form/lib/form-scripting.service.mjs +0 -160
  283. package/esm2022/object-form/lib/object-form-element/object-form-element.component.mjs +0 -87
  284. package/esm2022/object-form/lib/object-form-extension.interface.mjs +0 -36
  285. package/esm2022/object-form/lib/object-form-group/object-form-group.component.mjs +0 -85
  286. package/esm2022/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.mjs +0 -23
  287. package/esm2022/object-form/lib/object-form-script/object-form-script.service.mjs +0 -115
  288. package/esm2022/object-form/lib/object-form-script/object-form-scripting-scope.mjs +0 -251
  289. package/esm2022/object-form/lib/object-form-translate.service.mjs +0 -73
  290. package/esm2022/object-form/lib/object-form.component.mjs +0 -628
  291. package/esm2022/object-form/lib/object-form.interface.mjs +0 -9
  292. package/esm2022/object-form/lib/object-form.model.mjs +0 -20
  293. package/esm2022/object-form/lib/object-form.service.mjs +0 -130
  294. package/esm2022/object-form/lib/object-form.utils.mjs +0 -55
  295. package/esm2022/object-form/lib/object-form.validation.mjs +0 -48
  296. package/esm2022/object-form/yuuvis-client-framework-object-form.mjs +0 -5
  297. package/esm2022/object-preview/index.mjs +0 -3
  298. package/esm2022/object-preview/lib/components/index.mjs +0 -3
  299. package/esm2022/object-preview/lib/components/object-email-preview/object-email-preview.component.mjs +0 -45
  300. package/esm2022/object-preview/lib/components/object-preview/object-preview.component.mjs +0 -78
  301. package/esm2022/object-preview/lib/services/object-preview.service.mjs +0 -119
  302. package/esm2022/object-preview/yuuvis-client-framework-object-preview.mjs +0 -5
  303. package/esm2022/object-summary/index.mjs +0 -5
  304. package/esm2022/object-summary/lib/multi-object-summary/multi-object-summary.component.mjs +0 -33
  305. package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +0 -275
  306. package/esm2022/object-summary/lib/object-summary-data/object-summary-data.component.mjs +0 -80
  307. package/esm2022/object-summary/lib/object-summary.module.mjs +0 -15
  308. package/esm2022/object-summary/yuuvis-client-framework-object-summary.mjs +0 -5
  309. package/esm2022/pagination/index.mjs +0 -3
  310. package/esm2022/pagination/lib/pagination.component.mjs +0 -46
  311. package/esm2022/pagination/lib/pagination.interface.mjs +0 -2
  312. package/esm2022/pagination/yuuvis-client-framework-pagination.mjs +0 -5
  313. package/esm2022/panel/index.mjs +0 -2
  314. package/esm2022/panel/lib/panel.component.mjs +0 -20
  315. package/esm2022/panel/yuuvis-client-framework-panel.mjs +0 -5
  316. package/esm2022/renderer/index.mjs +0 -11
  317. package/esm2022/renderer/lib/property-renderer/abstract.renderer.mjs +0 -29
  318. package/esm2022/renderer/lib/property-renderer/datetime.renderer.mjs +0 -13
  319. package/esm2022/renderer/lib/property-renderer/decimal.renderer.component.mjs +0 -12
  320. package/esm2022/renderer/lib/property-renderer/filesize.renderer.component.mjs +0 -28
  321. package/esm2022/renderer/lib/property-renderer/icon.renderer.component.mjs +0 -23
  322. package/esm2022/renderer/lib/property-renderer/integer.renderer.component.mjs +0 -12
  323. package/esm2022/renderer/lib/property-renderer/organization.renderer.mjs +0 -19
  324. package/esm2022/renderer/lib/property-renderer/string.renderer.component.mjs +0 -12
  325. package/esm2022/renderer/lib/property-renderer/unknown.renderer.mjs +0 -12
  326. package/esm2022/renderer/lib/renderer.directive.mjs +0 -51
  327. package/esm2022/renderer/lib/services/renderer/renderer.interface.mjs +0 -2
  328. package/esm2022/renderer/lib/services/renderer/renderer.service.mjs +0 -84
  329. package/esm2022/renderer/yuuvis-client-framework-renderer.mjs +0 -5
  330. package/esm2022/sequence-list/index.mjs +0 -4
  331. package/esm2022/sequence-list/lib/due-date-picker/due-date-picker.component.mjs +0 -99
  332. package/esm2022/sequence-list/lib/sequence-list.component.mjs +0 -141
  333. package/esm2022/sequence-list/lib/sequence-list.interface.mjs +0 -2
  334. package/esm2022/sequence-list/yuuvis-client-framework-sequence-list.mjs +0 -5
  335. package/esm2022/simple-search/index.mjs +0 -3
  336. package/esm2022/simple-search/lib/simple-search/simple-search.component.mjs +0 -111
  337. package/esm2022/simple-search/lib/simple-search/simple-search.interface.mjs +0 -2
  338. package/esm2022/simple-search/yuuvis-client-framework-simple-search.mjs +0 -5
  339. package/esm2022/tile-list/index.mjs +0 -11
  340. package/esm2022/tile-list/lib/tile/tile.component.mjs +0 -53
  341. package/esm2022/tile-list/lib/tile-config/action-select/action-select.component.mjs +0 -25
  342. package/esm2022/tile-list/lib/tile-config/icon-select/icon-select.component.mjs +0 -33
  343. package/esm2022/tile-list/lib/tile-config/property-select/property-select.component.mjs +0 -91
  344. package/esm2022/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.mjs +0 -66
  345. package/esm2022/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.mjs +0 -46
  346. package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +0 -156
  347. package/esm2022/tile-list/lib/tile-extension/directive/tile-extension.directive.mjs +0 -37
  348. package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +0 -42
  349. package/esm2022/tile-list/lib/tile-extension/tile-extension.service.mjs +0 -35
  350. package/esm2022/tile-list/lib/tile-list/tile-list.component.mjs +0 -510
  351. package/esm2022/tile-list/lib/tile-list/tile-list.interface.mjs +0 -2
  352. package/esm2022/tile-list/yuuvis-client-framework-tile-list.mjs +0 -5
  353. package/esm2022/token-search/index.mjs +0 -3
  354. package/esm2022/token-search/token-search.component.mjs +0 -78
  355. package/esm2022/token-search/token-search.interface.mjs +0 -2
  356. package/esm2022/token-search/yuuvis-client-framework-token-search.mjs +0 -5
  357. package/esm2022/tree/index.mjs +0 -3
  358. package/esm2022/tree/lib/tree-node/tree-node.component.mjs +0 -65
  359. package/esm2022/tree/lib/tree.component.mjs +0 -148
  360. package/esm2022/tree/lib/tree.interface.mjs +0 -2
  361. package/esm2022/tree/lib/tree.service.mjs +0 -95
  362. package/esm2022/tree/yuuvis-client-framework-tree.mjs +0 -5
  363. package/esm2022/upload-progress/index.mjs +0 -2
  364. package/esm2022/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.mjs +0 -49
  365. package/esm2022/upload-progress/lib/upload-progress/upload-progress.component.mjs +0 -37
  366. package/esm2022/upload-progress/yuuvis-client-framework-upload-progress.mjs +0 -5
  367. package/esm2022/user-avatar/index.mjs +0 -3
  368. package/esm2022/user-avatar/lib/user-avatar.component.mjs +0 -69
  369. package/esm2022/user-avatar/lib/user-avatar.module.mjs +0 -24
  370. package/esm2022/user-avatar/yuuvis-client-framework-user-avatar.mjs +0 -5
  371. package/esm2022/yuuvis-client-framework.mjs +0 -5
  372. package/fesm2022/yuuvis-client-framework-token-search.mjs +0 -85
  373. package/fesm2022/yuuvis-client-framework-token-search.mjs.map +0 -1
  374. package/fesm2022/yuuvis-client-framework-user-avatar.mjs +0 -96
  375. package/fesm2022/yuuvis-client-framework-user-avatar.mjs.map +0 -1
  376. package/forms/lib/form-input/form-input.component.d.ts +0 -48
  377. package/object-form/lib/object-form-translate.service.d.ts +0 -15
  378. package/object-form/lib/object-form.model.d.ts +0 -18
  379. package/sequence-list/lib/due-date-picker/due-date-picker.component.d.ts +0 -28
  380. package/simple-search/lib/simple-search/simple-search.interface.d.ts +0 -4
  381. package/token-search/README.md +0 -3
  382. package/token-search/index.d.ts +0 -2
  383. package/token-search/token-search.component.d.ts +0 -22
  384. package/token-search/token-search.interface.d.ts +0 -4
  385. package/user-avatar/README.md +0 -3
  386. package/user-avatar/index.d.ts +0 -2
  387. package/user-avatar/lib/user-avatar.component.d.ts +0 -44
  388. package/user-avatar/lib/user-avatar.module.d.ts +0 -8
  389. /package/{metadata-form → metadata-form-defaults}/lib/metadata-default-templates/metadata-default-templates.component.d.ts +0 -0
@@ -1,24 +1,29 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgModule, inject, Component, Injector, runInInjectionContext, Injectable } from '@angular/core';
2
+ import { NgModule, inject, signal, Component, Injector, runInInjectionContext, Injectable } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@ngx-translate/core';
6
6
  import { TranslateModule } from '@ngx-translate/core';
7
- import { DmsService, TranslateService, TranslateModule as TranslateModule$1, RetentionService, SystemType, ClipboardService, Utils } from '@yuuvis/client-core';
7
+ import { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog';
8
+ import * as i1$1 from '@angular/material/icon';
9
+ import { MatIconModule, MatIconRegistry } from '@angular/material/icon';
10
+ import { ClipboardService, TranslateService, DmsService, TranslateModule as TranslateModule$1, RetentionService, SystemType, Utils } from '@yuuvis/client-core';
8
11
  import { of, map, forkJoin } from 'rxjs';
9
- import { YvcOverlayRef, YvcOverlayService } from '@yuuvis/components/overlay';
10
- import * as i2$1 from '@angular/cdk/a11y';
12
+ import { DialogComponent } from '@yuuvis/client-framework/common';
13
+ import * as i3 from '@angular/material/button';
14
+ import { MatButtonModule } from '@angular/material/button';
15
+ import { MatProgressBar } from '@angular/material/progress-bar';
16
+ import * as i3$1 from '@angular/cdk/a11y';
11
17
  import { A11yModule } from '@angular/cdk/a11y';
12
- import { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';
13
- import * as i1$1 from '@yuuvis/components/icon';
14
- import { YvcIconModule } from '@yuuvis/components/icon';
18
+ import * as i2$1 from '@yuuvis/client-framework/list';
19
+ import { YuvListModule } from '@yuuvis/client-framework/list';
15
20
 
16
21
  class ActionsModule {
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ActionsModule, imports: [CommonModule, TranslateModule] }); }
19
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsModule, imports: [CommonModule, TranslateModule] }); }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.1", ngImport: i0, type: ActionsModule, imports: [CommonModule, TranslateModule] }); }
24
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ActionsModule, imports: [CommonModule, TranslateModule] }); }
20
25
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsModule, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ActionsModule, decorators: [{
22
27
  type: NgModule,
23
28
  args: [{
24
29
  imports: [CommonModule, TranslateModule]
@@ -26,11 +31,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
26
31
  }] });
27
32
 
28
33
  const ACTION_ICON = {
29
- download: '<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#e8eaed"><path d="M480-336 288-528l51-51 105 105v-342h72v342l105-105 51 51-192 192ZM263.72-192Q234-192 213-213.15T192-264v-72h72v72h432v-72h72v72q0 29.7-21.16 50.85Q725.68-192 695.96-192H263.72Z"/></svg>',
30
- delete: '<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#e8eaed"><path d="M312-144q-29.7 0-50.85-21.15Q240-186.3 240-216v-480h-48v-72h192v-48h192v48h192v72h-48v479.57Q720-186 698.85-165T648-144H312Zm336-552H312v480h336v-480ZM384-288h72v-336h-72v336Zm120 0h72v-336h-72v336ZM312-696v480-480Z"/></svg>',
31
- copy: '<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#e8eaed"><path d="M360-240q-29.7 0-50.85-21.15Q288-282.3 288-312v-480q0-29.7 21.15-50.85Q330.3-864 360-864h384q29.7 0 50.85 21.15Q816-821.7 816-792v480q0 29.7-21.15 50.85Q773.7-240 744-240H360Zm0-72h384v-480H360v480ZM216-96q-29.7 0-50.85-21.15Q144-138.3 144-168v-552h72v552h456v72H216Zm144-216v-480 480Z"/></svg>',
32
- cut: '<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#e8eaed"><path d="M744-144 480-407l-87 88q8 16 11.5 32.85 3.5 16.86 3.5 33.71 0 65.44-45 110.94T252-96q-64.35 0-110.18-45.5Q96-187 96-252t45.5-110.5Q187-408 252.44-408q16.85 0 33.71 4Q303-400 319-392l88-87-88-88q-16 8-32.85 11.5-16.86 3.5-33.71 3.5-65.44 0-110.94-45.5T96-708q0-65 45.5-110.5T252-864q65 0 110.5 45.5T408-707.56q0 16.85-3.5 33.71Q401-657 393-641l471 469v28H744ZM595-520l-74-74 223-222h120v28L595-520ZM252.25-624q34.75 0 59.25-24.75t24.5-59.5q0-34.75-24.75-59.25t-59.5-24.5q-34.75 0-59.25 24.75t-24.5 59.5q0 34.75 24.75 59.25t59.5 24.5ZM480-456q9.6 0 16.8-7.2 7.2-7.2 7.2-16.8 0-9.6-7.2-16.8-7.2-7.2-16.8-7.2-9.6 0-16.8 7.2-7.2 7.2-7.2 16.8 0 9.6 7.2 16.8 7.2 7.2 16.8 7.2ZM252.25-168q34.75 0 59.25-24.75t24.5-59.5q0-34.75-24.75-59.25t-59.5-24.5q-34.75 0-59.25 24.75t-24.5 59.5q0 34.75 24.75 59.25t59.5 24.5Z"/></svg>',
33
- manageFlavor: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="m489-460 91-55 91 55-24-104 80-69-105-9-42-98-42 98-105 9 80 69-24 104Zm19 260h224q-7 26-24 42t-44 20L228-85q-33 5-59.5-15.5T138-154L85-591q-4-33 16-59t53-30l46-6v80l-36 5 54 437 290-36Zm-148-80q-33 0-56.5-23.5T280-360v-440q0-33 23.5-56.5T360-880h440q33 0 56.5 23.5T880-800v440q0 33-23.5 56.5T800-280H360Zm0-80h440v-440H360v440Zm220-220ZM218-164Z"/></svg>'
34
+ download: 'download',
35
+ delete: 'delete',
36
+ copy: 'content_copy',
37
+ cut: 'content_cut',
38
+ manageFlavor: 'cards_star'
34
39
  };
35
40
 
36
41
  class AbstractContextAction {
@@ -52,25 +57,78 @@ const BASE_ACTION = {
52
57
  delete: 'yuv.base.delete'
53
58
  };
54
59
 
60
+ class CopyAction extends AbstractContextAction {
61
+ constructor() {
62
+ super(...arguments);
63
+ this.clipboardService = inject(ClipboardService);
64
+ this.translate = inject(TranslateService);
65
+ this.id = BASE_ACTION.copy;
66
+ this.label = this.translate.instant('yuv.action-menu.action.copy.dms.object.label');
67
+ this.description = this.translate.instant('yuv.action-menu.action.copy.dms.object.description');
68
+ this.priority = 8;
69
+ this.icon = ACTION_ICON.copy;
70
+ this.group = 'common';
71
+ this.range = SelectionRange.MULTI_SELECT;
72
+ this.supports = {
73
+ pattern: '*'
74
+ };
75
+ }
76
+ isExecutable(items) {
77
+ const notAllowed = items.some((item) => !item.permissions?.writeIndexData);
78
+ return of(items.length > 0 && !notAllowed);
79
+ }
80
+ run(items) {
81
+ this.clipboardService.addObjects(items, 'copy', this.context?.appId);
82
+ return of(true);
83
+ }
84
+ }
85
+
86
+ class CutAction extends AbstractContextAction {
87
+ constructor() {
88
+ super(...arguments);
89
+ this.clipboardService = inject(ClipboardService);
90
+ this.translate = inject(TranslateService);
91
+ this.id = BASE_ACTION.cut;
92
+ this.label = this.translate.instant('yuv.action-menu.action.cut.dms.object.label');
93
+ this.description = this.translate.instant('yuv.action-menu.action.cut.dms.object.description');
94
+ this.priority = 8;
95
+ this.icon = ACTION_ICON.cut;
96
+ this.group = 'common';
97
+ this.range = SelectionRange.MULTI_SELECT;
98
+ this.supports = {
99
+ pattern: '*'
100
+ };
101
+ }
102
+ isExecutable(items) {
103
+ return of(items.length > 0 && items.every((item) => item.permissions?.writeContent && item.permissions?.writeIndexData && item.permissions?.deleteObject));
104
+ }
105
+ run(items) {
106
+ this.clipboardService.addObjects(items, 'cut', this.context?.appId);
107
+ return of(true);
108
+ }
109
+ }
110
+
55
111
  /**
56
112
  * @ignore
57
113
  */
58
114
  class DeleteComponent {
59
115
  constructor() {
60
116
  this.#dmsService = inject(DmsService);
61
- this.#oref = inject(YvcOverlayRef);
62
117
  this.translate = inject(TranslateService);
63
- this.errors = [];
64
- this.deleting = false;
65
- this.deleteItems = this.#oref.data.items;
66
- this.context = this.#oref.data.context;
118
+ this.#dialogData = inject(MAT_DIALOG_DATA);
119
+ this.#dialogRef = inject((MatDialogRef));
120
+ this.errors = signal([]);
121
+ this.deleting = signal(false);
122
+ this.deleteItems = this.#dialogData.items;
123
+ this.context = this.#dialogData.context;
67
124
  }
68
125
  #dmsService;
69
- #oref;
126
+ #dialogData;
127
+ #dialogRef;
70
128
  run() {
71
- this.errors = [];
129
+ this.errors.set([]);
72
130
  if (this.deleteItems.length) {
73
- this.deleting = true;
131
+ this.deleting.set(true);
74
132
  this.#dmsService
75
133
  .deleteDmsObjects(this.deleteItems.map((o) => ({
76
134
  id: o.id,
@@ -78,16 +136,19 @@ class DeleteComponent {
78
136
  })))
79
137
  .subscribe({
80
138
  next: (res) => {
81
- this.errors = res
139
+ this.errors.set(res
82
140
  .filter((r) => !!r._error)
83
141
  .map((r) => ({
84
142
  status: r._error.status,
85
143
  subject: this.context?.subjectProperty ? r.properties[this.context.subjectProperty].value : r.id,
86
144
  message: this.#getErrorMessage(r._error)
87
- }));
88
- !this.errors.length && this.#oref.close();
145
+ })));
146
+ !this.errors.length && this.#dialogRef.close();
89
147
  },
90
- complete: () => (this.deleting = false)
148
+ error: (err) => {
149
+ this.deleting.set(false);
150
+ },
151
+ complete: () => this.deleting.set(false)
91
152
  });
92
153
  }
93
154
  }
@@ -102,21 +163,21 @@ class DeleteComponent {
102
163
  }
103
164
  }
104
165
  cancel() {
105
- this.#oref.close();
166
+ this.#dialogRef.close();
106
167
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DeleteComponent, isStandalone: true, selector: "yuv-delete", ngImport: i0, template: "<div class=\"yuv-delete\" [ngClass]=\"{ deleting }\">\n <div class=\"yuv-loader-linear\"></div>\n\n @if (errors?.length) {\n <ul class=\"errors\">\n @for (e of errors; track $index) {\n <li class=\"error\">\n <span class=\"subject\">{{ e.subject }}</span>\n <span class=\"message\">{{ e.message }}</span>\n </li>\n }\n </ul>\n } @else {\n <p>{{ 'yuv.action-menu.action.delete.dms.object.confirm.message' | translate }}</p>\n }\n\n <div class=\"form-buttons\">\n <button [disabled]=\"deleting || errors?.length\" class=\"primary\" (click)=\"run()\">{{ 'yuv.action-menu.action.delete.dms.object.confirm.ok' | translate }}</button>\n <button [disabled]=\"deleting\" class=\"secondary\" (click)=\"cancel()\">{{ 'yuv.action-menu.action.delete.dms.object.confirm.cancel' | translate }}</button>\n </div>\n</div>\n", styles: [".yuv-delete{display:flex;flex-flow:column;justify-content:center;padding:var(--app-pane-padding);position:relative}.yuv-delete .yuv-loader-linear{position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0}.yuv-delete:not(.deleting) .yuv-loader-linear{opacity:0}.yuv-delete p{margin:0}.yuv-delete ul.errors{list-style:none;margin:0;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2);border-radius:.5rem;display:flex;flex-flow:column;gap:.5rem}.yuv-delete ul.errors .error{display:grid;grid-template-rows:auto auto;grid-template-columns:auto 1fr;grid-template-areas:\"icon subject\" \"icon message\";row-gap:.2em;column-gap:1em;align-items:center}.yuv-delete ul.errors .error .subject{grid-area:subject;font-weight:700}.yuv-delete ul.errors .error .message{grid-area:message;font-weight:400;font-style:italic;display:block}.yuv-delete ul.errors .error:before{align-self:start;font-weight:700;grid-area:icon;content:\"!\";outline:2px solid currentColor;border-radius:2px;width:1em;display:grid;place-items:center}.yuv-delete .form-buttons{display:flex;flex-flow:row-reverse;justify-content:flex-end;justify-content:end;gap:calc(var(--app-pane-padding) / 4);align-items:center;margin-block-start:calc(var(--app-pane-padding) * 1.5)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule$1 }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: DeleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: DeleteComponent, isStandalone: true, selector: "yuv-delete", ngImport: i0, template: "<yuv-dialog [headertitel]=\"'yuv.action-menu.action.delete.dms.object.label' | translate\">\n <main class=\"yuv-delete\" [ngClass]=\"{ deleting: deleting() }\">\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n\n @if (errors().length) {\n <ul class=\"errors\">\n @for (e of errors(); track $index) {\n <li class=\"error\">\n <span class=\"subject\">{{ e.subject }}</span>\n <span class=\"message\">{{ e.message }}</span>\n </li>\n }\n </ul>\n } @else {\n <p>{{ 'yuv.action-menu.action.delete.dms.object.confirm.message' | translate }}</p>\n }\n </main>\n <footer class=\"form-buttons\">\n <button mat-stroked-button [disabled]=\"deleting\" class=\"secondary\" (click)=\"cancel()\">\n {{ 'yuv.action-menu.action.delete.dms.object.confirm.cancel' | translate }}\n </button>\n\n <button mat-flat-button [disabled]=\"deleting() || !!errors().length\" class=\"primary\" (click)=\"run()\">\n {{ 'yuv.action-menu.action.delete.dms.object.confirm.ok' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [".yuv-delete{display:flex;flex-flow:column;justify-content:center;padding:var(--ymt-spacing-m);position:relative}.yuv-delete .progress-bar{position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0}.yuv-delete:not(.deleting) .progress-bar{opacity:0}.yuv-delete p{margin:0}.yuv-delete ul.errors{list-style:none;margin:0;background-color:var(--ymt-danger-container);color:var(--ymt-on-danger-container);padding:var(--ymt-spacing-xs);border-radius:.5rem;display:flex;flex-flow:column;gap:.5rem}.yuv-delete ul.errors .error{display:grid;grid-template-rows:auto auto;grid-template-columns:auto 1fr;grid-template-areas:\"icon subject\" \"icon message\";row-gap:.2em;column-gap:1em;align-items:center}.yuv-delete ul.errors .error .subject{grid-area:subject;font-weight:700}.yuv-delete ul.errors .error .message{grid-area:message;font-weight:400;font-style:italic;display:block}.yuv-delete ul.errors .error:before{align-self:start;font-weight:700;grid-area:icon;content:\"!\";outline:2px solid currentColor;border-radius:2px;width:1em;display:grid;place-items:center}.yuv-delete .form-buttons{display:flex;flex-flow:row-reverse;justify-content:flex-end;justify-content:end;gap:var(--ymt-spacing-2xs);align-items:center;margin-block-start:var(--ymt-spacing-xl)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule$1 }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
109
170
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteComponent, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: DeleteComponent, decorators: [{
111
172
  type: Component,
112
- args: [{ selector: 'yuv-delete', standalone: true, imports: [CommonModule, TranslateModule$1], template: "<div class=\"yuv-delete\" [ngClass]=\"{ deleting }\">\n <div class=\"yuv-loader-linear\"></div>\n\n @if (errors?.length) {\n <ul class=\"errors\">\n @for (e of errors; track $index) {\n <li class=\"error\">\n <span class=\"subject\">{{ e.subject }}</span>\n <span class=\"message\">{{ e.message }}</span>\n </li>\n }\n </ul>\n } @else {\n <p>{{ 'yuv.action-menu.action.delete.dms.object.confirm.message' | translate }}</p>\n }\n\n <div class=\"form-buttons\">\n <button [disabled]=\"deleting || errors?.length\" class=\"primary\" (click)=\"run()\">{{ 'yuv.action-menu.action.delete.dms.object.confirm.ok' | translate }}</button>\n <button [disabled]=\"deleting\" class=\"secondary\" (click)=\"cancel()\">{{ 'yuv.action-menu.action.delete.dms.object.confirm.cancel' | translate }}</button>\n </div>\n</div>\n", styles: [".yuv-delete{display:flex;flex-flow:column;justify-content:center;padding:var(--app-pane-padding);position:relative}.yuv-delete .yuv-loader-linear{position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0}.yuv-delete:not(.deleting) .yuv-loader-linear{opacity:0}.yuv-delete p{margin:0}.yuv-delete ul.errors{list-style:none;margin:0;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2);border-radius:.5rem;display:flex;flex-flow:column;gap:.5rem}.yuv-delete ul.errors .error{display:grid;grid-template-rows:auto auto;grid-template-columns:auto 1fr;grid-template-areas:\"icon subject\" \"icon message\";row-gap:.2em;column-gap:1em;align-items:center}.yuv-delete ul.errors .error .subject{grid-area:subject;font-weight:700}.yuv-delete ul.errors .error .message{grid-area:message;font-weight:400;font-style:italic;display:block}.yuv-delete ul.errors .error:before{align-self:start;font-weight:700;grid-area:icon;content:\"!\";outline:2px solid currentColor;border-radius:2px;width:1em;display:grid;place-items:center}.yuv-delete .form-buttons{display:flex;flex-flow:row-reverse;justify-content:flex-end;justify-content:end;gap:calc(var(--app-pane-padding) / 4);align-items:center;margin-block-start:calc(var(--app-pane-padding) * 1.5)}\n"] }]
173
+ args: [{ selector: 'yuv-delete', standalone: true, imports: [CommonModule, TranslateModule$1, MatButtonModule, DialogComponent, MatProgressBar], template: "<yuv-dialog [headertitel]=\"'yuv.action-menu.action.delete.dms.object.label' | translate\">\n <main class=\"yuv-delete\" [ngClass]=\"{ deleting: deleting() }\">\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n\n @if (errors().length) {\n <ul class=\"errors\">\n @for (e of errors(); track $index) {\n <li class=\"error\">\n <span class=\"subject\">{{ e.subject }}</span>\n <span class=\"message\">{{ e.message }}</span>\n </li>\n }\n </ul>\n } @else {\n <p>{{ 'yuv.action-menu.action.delete.dms.object.confirm.message' | translate }}</p>\n }\n </main>\n <footer class=\"form-buttons\">\n <button mat-stroked-button [disabled]=\"deleting\" class=\"secondary\" (click)=\"cancel()\">\n {{ 'yuv.action-menu.action.delete.dms.object.confirm.cancel' | translate }}\n </button>\n\n <button mat-flat-button [disabled]=\"deleting() || !!errors().length\" class=\"primary\" (click)=\"run()\">\n {{ 'yuv.action-menu.action.delete.dms.object.confirm.ok' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [".yuv-delete{display:flex;flex-flow:column;justify-content:center;padding:var(--ymt-spacing-m);position:relative}.yuv-delete .progress-bar{position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0}.yuv-delete:not(.deleting) .progress-bar{opacity:0}.yuv-delete p{margin:0}.yuv-delete ul.errors{list-style:none;margin:0;background-color:var(--ymt-danger-container);color:var(--ymt-on-danger-container);padding:var(--ymt-spacing-xs);border-radius:.5rem;display:flex;flex-flow:column;gap:.5rem}.yuv-delete ul.errors .error{display:grid;grid-template-rows:auto auto;grid-template-columns:auto 1fr;grid-template-areas:\"icon subject\" \"icon message\";row-gap:.2em;column-gap:1em;align-items:center}.yuv-delete ul.errors .error .subject{grid-area:subject;font-weight:700}.yuv-delete ul.errors .error .message{grid-area:message;font-weight:400;font-style:italic;display:block}.yuv-delete ul.errors .error:before{align-self:start;font-weight:700;grid-area:icon;content:\"!\";outline:2px solid currentColor;border-radius:2px;width:1em;display:grid;place-items:center}.yuv-delete .form-buttons{display:flex;flex-flow:row-reverse;justify-content:flex-end;justify-content:end;gap:var(--ymt-spacing-2xs);align-items:center;margin-block-start:var(--ymt-spacing-xl)}\n"] }]
113
174
  }] });
114
175
 
115
176
  class DeleteAction extends AbstractContextAction {
116
177
  constructor() {
117
178
  super(...arguments);
118
179
  this.translate = inject(TranslateService);
119
- this.overlay = inject(YvcOverlayService);
180
+ this.#dialog = inject(MatDialog);
120
181
  this.retention = inject(RetentionService);
121
182
  this.id = BASE_ACTION.delete;
122
183
  this.label = this.translate.instant('yuv.action-menu.action.delete.dms.object.label');
@@ -129,17 +190,19 @@ class DeleteAction extends AbstractContextAction {
129
190
  pattern: '*'
130
191
  };
131
192
  }
193
+ #dialog;
132
194
  isExecutable(items) {
133
195
  const e = items[0];
134
196
  return of(e && !!e.permissions && e.permissions.deleteObject && !this.retention.getRetentionState(e).underRetention);
135
197
  }
136
198
  run(items) {
137
- return this.overlay
138
- .open(DeleteComponent, {
139
- items,
140
- context: this.context
141
- })
142
- .afterClosed$.pipe(map(() => true));
199
+ this.#dialog.open(DeleteComponent, {
200
+ data: {
201
+ items,
202
+ context: this.context
203
+ }
204
+ });
205
+ return of(true);
143
206
  }
144
207
  }
145
208
 
@@ -171,83 +234,37 @@ class DownloadAction extends AbstractContextAction {
171
234
  }
172
235
  }
173
236
 
174
- class CopyAction extends AbstractContextAction {
175
- constructor() {
176
- super(...arguments);
177
- this.clipboardService = inject(ClipboardService);
178
- this.translate = inject(TranslateService);
179
- this.id = BASE_ACTION.copy;
180
- this.label = this.translate.instant('yuv.action-menu.action.copy.dms.object.label');
181
- this.description = this.translate.instant('yuv.action-menu.action.copy.dms.object.description');
182
- this.priority = 8;
183
- this.icon = ACTION_ICON.copy;
184
- this.group = 'common';
185
- this.range = SelectionRange.MULTI_SELECT;
186
- this.supports = {
187
- pattern: '*'
188
- };
189
- }
190
- isExecutable(items) {
191
- const notAllowed = items.some((item) => !item.permissions?.writeIndexData);
192
- return of(items.length > 0 && !notAllowed);
193
- }
194
- run(items) {
195
- this.clipboardService.addObjects(items, 'copy', this.context?.appId);
196
- return of(true);
197
- }
198
- }
199
-
200
237
  class ContextmenuComponent {
201
238
  constructor() {
202
- this.oRef = inject(YvcOverlayRef);
203
- this.actions = this.oRef.data.actions;
204
- this.callback = this.oRef.data.callback;
239
+ this.oRef = inject(MatDialogRef);
240
+ this.data = inject(MAT_DIALOG_DATA);
241
+ this.actions = this.data.actions;
242
+ this.callback = this.data.callback;
205
243
  }
206
244
  onItemSelect(index) {
207
245
  this.oRef?.close();
208
246
  this.callback(this.actions()[index[0]]);
209
247
  }
210
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextmenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
211
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ContextmenuComponent, isStandalone: true, selector: "yuv-contextmenu", ngImport: i0, template: "<yuv-list (itemSelect)=\"onItemSelect($event)\" cdkTrapFocus>\n @for (a of actions(); track a.id) {\n <div yuvListItem><yvc-icon [svg]=\"a.icon\"></yvc-icon> {{ a.label }}</div>\n }\n</yuv-list>\n", styles: [":host{--contextmenu-item-padding: calc(var(--app-pane-padding) / 2);--contextmenu-item-icon-size: 20px}:host [yuvListItem]{cursor:pointer;border-width:0 0 1px 0;display:flex;align-items:center;padding:var(--contextmenu-item-padding);gap:calc(var(--contextmenu-item-padding) * 1.5)}:host [yuvListItem] yvc-icon{--icon-size: var(--contextmenu-item-icon-size);flex:0 0 auto;color:var(--text-color-caption)}:host [yuvListItem]:hover,:host [yuvListItem][aria-current=true]{background-color:var(--item-focus-background-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "selfHandleSelection", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1$1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] }); }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ContextmenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: ContextmenuComponent, isStandalone: true, selector: "yuv-contextmenu", ngImport: i0, template: "<yuv-list (itemSelect)=\"onItemSelect($event)\" cdkTrapFocus>\n @for (a of actions(); track a.id) {\n <div yuvListItem>\n <mat-icon>{{ a.icon }}</mat-icon> {{ a.label }}\n </div>\n }\n</yuv-list>\n", styles: [":host{--contextmenu-item-padding: var(--ymt-spacing-xs);--contextmenu-item-icon-size: 20px}:host [yuvListItem]{cursor:pointer;border-width:0 0 1px 0;display:flex;align-items:center;padding:var(--contextmenu-item-padding);gap:calc(var(--contextmenu-item-padding) * 1.5)}:host [yuvListItem]:hover,:host [yuvListItem][aria-current=true]{background-color:var(--ymt-focus-background)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: YuvListModule }, { kind: "component", type: i2$1.ListComponent, selector: "yuv-list", inputs: ["multiselect", "selfHandleSelection", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: i2$1.ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] }); }
212
250
  }
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextmenuComponent, decorators: [{
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ContextmenuComponent, decorators: [{
214
252
  type: Component,
215
- args: [{ selector: 'yuv-contextmenu', standalone: true, imports: [CommonModule, ListComponent, ListItemDirective, YvcIconModule, A11yModule], template: "<yuv-list (itemSelect)=\"onItemSelect($event)\" cdkTrapFocus>\n @for (a of actions(); track a.id) {\n <div yuvListItem><yvc-icon [svg]=\"a.icon\"></yvc-icon> {{ a.label }}</div>\n }\n</yuv-list>\n", styles: [":host{--contextmenu-item-padding: calc(var(--app-pane-padding) / 2);--contextmenu-item-icon-size: 20px}:host [yuvListItem]{cursor:pointer;border-width:0 0 1px 0;display:flex;align-items:center;padding:var(--contextmenu-item-padding);gap:calc(var(--contextmenu-item-padding) * 1.5)}:host [yuvListItem] yvc-icon{--icon-size: var(--contextmenu-item-icon-size);flex:0 0 auto;color:var(--text-color-caption)}:host [yuvListItem]:hover,:host [yuvListItem][aria-current=true]{background-color:var(--item-focus-background-color)}\n"] }]
253
+ args: [{ selector: 'yuv-contextmenu', standalone: true, imports: [CommonModule, MatIconModule, YuvListModule, A11yModule], template: "<yuv-list (itemSelect)=\"onItemSelect($event)\" cdkTrapFocus>\n @for (a of actions(); track a.id) {\n <div yuvListItem>\n <mat-icon>{{ a.icon }}</mat-icon> {{ a.label }}\n </div>\n }\n</yuv-list>\n", styles: [":host{--contextmenu-item-padding: var(--ymt-spacing-xs);--contextmenu-item-icon-size: 20px}:host [yuvListItem]{cursor:pointer;border-width:0 0 1px 0;display:flex;align-items:center;padding:var(--contextmenu-item-padding);gap:calc(var(--contextmenu-item-padding) * 1.5)}:host [yuvListItem]:hover,:host [yuvListItem][aria-current=true]{background-color:var(--ymt-focus-background)}\n"] }]
216
254
  }] });
217
255
 
218
- class CutAction extends AbstractContextAction {
219
- constructor() {
220
- super(...arguments);
221
- this.clipboardService = inject(ClipboardService);
222
- this.translate = inject(TranslateService);
223
- this.id = BASE_ACTION.cut;
224
- this.label = this.translate.instant('yuv.action-menu.action.cut.dms.object.label');
225
- this.description = this.translate.instant('yuv.action-menu.action.cut.dms.object.description');
226
- this.priority = 8;
227
- this.icon = ACTION_ICON.cut;
228
- this.group = 'common';
229
- this.range = SelectionRange.MULTI_SELECT;
230
- this.supports = {
231
- pattern: '*'
232
- };
233
- }
234
- isExecutable(items) {
235
- return of(items.length > 0 && items.every((item) => item.permissions?.writeContent && item.permissions?.writeIndexData && item.permissions?.deleteObject));
236
- }
237
- run(items) {
238
- this.clipboardService.addObjects(items, 'cut', this.context?.appId);
239
- return of(true);
240
- }
241
- }
242
-
243
256
  class ActionsService {
244
257
  constructor() {
245
258
  this.injector = inject(Injector);
246
- this.overlay = inject(YvcOverlayService);
259
+ this.dialog = inject(MatDialog);
260
+ this.iconRegistry = inject(MatIconRegistry);
247
261
  this._registeredActions = {};
248
262
  }
249
263
  registerActions(a) {
250
- Array.isArray(a) && a.forEach((a) => (this._registeredActions[a.id] = a.action));
264
+ Array.isArray(a) &&
265
+ a.forEach((a) => {
266
+ this._registeredActions[a.id] = a.action;
267
+ });
251
268
  }
252
269
  concealActions(actionIDs) {
253
270
  Array.isArray(actionIDs) && actionIDs.forEach((id) => delete this._registeredActions[id]);
@@ -297,8 +314,33 @@ class ActionsService {
297
314
  getActionsById(ids, context) {
298
315
  return this.getAvailableActions(context).filter((a) => ids.includes(a.id));
299
316
  }
300
- openContextMenu(actions, callback, element) {
301
- this.overlay.open(ContextmenuComponent, { actions, callback }, {}, element);
317
+ openContextMenu(actions, callback, overlayOrigin) {
318
+ if (actions().length)
319
+ this.dialog.open(ContextmenuComponent, {
320
+ data: { actions, callback },
321
+ panelClass: 'context-menu-dialog'
322
+ // position: { top: `${overlayOrigin.y}`, left: `${overlayOrigin.x}` }
323
+ });
324
+ setTimeout(() => {
325
+ const dialog = document.querySelector('.context-menu-dialog');
326
+ if (dialog) {
327
+ const dialogWidth = dialog.offsetWidth;
328
+ const dialogHeight = dialog.offsetHeight;
329
+ const screenW = window.innerWidth;
330
+ const screenH = window.innerHeight;
331
+ let left = overlayOrigin.x;
332
+ let top = overlayOrigin.y;
333
+ if (left + dialogWidth > screenW) {
334
+ left = screenW - dialogWidth - 10;
335
+ }
336
+ if (top + dialogHeight > screenH) {
337
+ top = screenH - dialogHeight - 10;
338
+ }
339
+ dialog.style.position = 'fixed';
340
+ dialog.style.left = `${left}px`;
341
+ dialog.style.top = `${top}px`;
342
+ }
343
+ });
302
344
  }
303
345
  _actionsSupportsType(action, objectTypeId) {
304
346
  const matchesTypes = action.supports.types ? action.supports.types.includes(objectTypeId) : false;
@@ -309,10 +351,10 @@ class ActionsService {
309
351
  _getDefaulActions(context) {
310
352
  return [new DeleteAction(context), new DownloadAction(context), new CopyAction(context), new CutAction(context)];
311
353
  }
312
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
313
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsService, providedIn: 'root' }); }
354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
355
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ActionsService, providedIn: 'root' }); }
314
356
  }
315
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsService, decorators: [{
357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ActionsService, decorators: [{
316
358
  type: Injectable,
317
359
  args: [{
318
360
  providedIn: 'root'
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-actions.mjs","sources":["../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.module.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.icon.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.interface.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete/delete.component.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete/delete.component.html","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/download-action/download-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/copy-action/copy-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/components/contextmenu/contextmenu.component.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/components/contextmenu/contextmenu.component.html","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/cut-action/cut-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.service.ts","../../../../../libs/yuuvis/client-framework/actions/src/yuuvis-client-framework-actions.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [CommonModule, TranslateModule]\n})\nexport class ActionsModule {}\n","export const ACTION_ICON = {\n download: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M480-336 288-528l51-51 105 105v-342h72v342l105-105 51 51-192 192ZM263.72-192Q234-192 213-213.15T192-264v-72h72v72h432v-72h72v72q0 29.7-21.16 50.85Q725.68-192 695.96-192H263.72Z\"/></svg>',\n delete: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M312-144q-29.7 0-50.85-21.15Q240-186.3 240-216v-480h-48v-72h192v-48h192v48h192v72h-48v479.57Q720-186 698.85-165T648-144H312Zm336-552H312v480h336v-480ZM384-288h72v-336h-72v336Zm120 0h72v-336h-72v336ZM312-696v480-480Z\"/></svg>',\n copy: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M360-240q-29.7 0-50.85-21.15Q288-282.3 288-312v-480q0-29.7 21.15-50.85Q330.3-864 360-864h384q29.7 0 50.85 21.15Q816-821.7 816-792v480q0 29.7-21.15 50.85Q773.7-240 744-240H360Zm0-72h384v-480H360v480ZM216-96q-29.7 0-50.85-21.15Q144-138.3 144-168v-552h72v552h456v72H216Zm144-216v-480 480Z\"/></svg>',\n cut: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M744-144 480-407l-87 88q8 16 11.5 32.85 3.5 16.86 3.5 33.71 0 65.44-45 110.94T252-96q-64.35 0-110.18-45.5Q96-187 96-252t45.5-110.5Q187-408 252.44-408q16.85 0 33.71 4Q303-400 319-392l88-87-88-88q-16 8-32.85 11.5-16.86 3.5-33.71 3.5-65.44 0-110.94-45.5T96-708q0-65 45.5-110.5T252-864q65 0 110.5 45.5T408-707.56q0 16.85-3.5 33.71Q401-657 393-641l471 469v28H744ZM595-520l-74-74 223-222h120v28L595-520ZM252.25-624q34.75 0 59.25-24.75t24.5-59.5q0-34.75-24.75-59.25t-59.5-24.5q-34.75 0-59.25 24.75t-24.5 59.5q0 34.75 24.75 59.25t59.5 24.5ZM480-456q9.6 0 16.8-7.2 7.2-7.2 7.2-16.8 0-9.6-7.2-16.8-7.2-7.2-16.8-7.2-9.6 0-16.8 7.2-7.2 7.2-7.2 16.8 0 9.6 7.2 16.8 7.2 7.2 16.8 7.2ZM252.25-168q34.75 0 59.25-24.75t24.5-59.5q0-34.75-24.75-59.25t-59.5-24.5q-34.75 0-59.25 24.75t-24.5 59.5q0 34.75 24.75 59.25t59.5 24.5Z\"/></svg>',\n manageFlavor: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m489-460 91-55 91 55-24-104 80-69-105-9-42-98-42 98-105 9 80 69-24 104Zm19 260h224q-7 26-24 42t-44 20L228-85q-33 5-59.5-15.5T138-154L85-591q-4-33 16-59t53-30l46-6v80l-36 5 54 437 290-36Zm-148-80q-33 0-56.5-23.5T280-360v-440q0-33 23.5-56.5T360-880h440q33 0 56.5 23.5T880-800v440q0 33-23.5 56.5T800-280H360Zm0-80h440v-440H360v440Zm220-220ZM218-164Z\"/></svg>'\n}","import { DmsObject } from '@yuuvis/client-core';\nimport { Observable } from 'rxjs';\n\nexport type ActionClass = { new (...args: any[]): any };\n\nexport class AbstractContextAction {\n context?: ActionContext;\n constructor(context?: ActionContext) {\n this.context = context;\n }\n}\n\nexport interface BaseAction {\n /**\n * Equals the selector of the actions selector (will be set by the action service)\n */\n id: string;\n /**\n * label to be displayed inside the action menu\n */\n label: string;\n /**\n * description to be displayed inside the action menu\n */\n description: string;\n /**\n * @ignore\n */\n icon: string;\n /**\n * actions priority defining the position of the action within the whole list of actions\n */\n priority: number;\n /**\n * group of actions the action should be part of ('common' or 'further')\n */\n group: string;\n /**\n * number of selected items supported by the action\n * (SelectionRange.SINGLE_SELECT, SelectionRange.MULTI_SELECT, SelectionRange.MULTI_SELECT_ONLY )\n */\n range: SelectionRange;\n\n /**\n * Types that are supported by the action\n */\n supports: ActionSupport;\n\n /**\n * Determining whether or not the action is executable for the given selection\n * @param item Current selection\n * @returns true if the action is executable for the current selection, false otherwise\n */\n isExecutable: (items: DmsObject[]) => Observable<boolean>;\n}\n\nexport interface ActionSupport {\n // object types\n types?: string[];\n // object types\n sots?: string[];\n // pattern to match the type name against\n pattern?: string;\n}\n\nexport interface ActionContext {\n /**\n * As actions deal with DmsObjects the subject property is the property that\n * should be used to display the name of the object. This may be used for\n * showing the name of the object in a confirmation/error dialog or similar.\n */\n subjectProperty?: string;\n /**\n * The appId is the id of the application that the action is executed in.\n */\n appId?: string;\n}\n\nexport interface Action extends BaseAction {\n run: (items: DmsObject[]) => Observable<boolean>;\n}\n\nexport interface ActionOptions {\n context?: ActionContext;\n exclude?: string[] | RegExp;\n}\n\nexport enum SelectionRange {\n SINGLE_SELECT,\n MULTI_SELECT,\n MULTI_SELECT_ONLY,\n ANY\n}\n\nexport const BASE_ACTION = {\n copy: 'yuv.base.copy',\n cut: 'yuv.base.cut',\n download: 'yuv.base.download',\n delete: 'yuv.base.delete'\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { DmsObject, DmsService, ObjectDeleteError, ObjectDeleteResult, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { ActionContext } from '../../../actions.interface';\n\n/**\n * @ignore\n */\n\n@Component({\n selector: 'yuv-delete',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './delete.component.html',\n styleUrls: ['./delete.component.scss']\n})\nexport class DeleteComponent {\n readonly #dmsService = inject(DmsService);\n readonly #oref = inject(YvcOverlayRef);\n private readonly translate = inject(TranslateService);\n\n errors?: {\n status: number;\n subject: string;\n message: string;\n }[] = [];\n deleting = false;\n deleteItems: DmsObject[] = this.#oref.data.items;\n context: ActionContext = this.#oref.data.context;\n\n run() {\n this.errors = [];\n if (this.deleteItems.length) {\n this.deleting = true;\n this.#dmsService\n .deleteDmsObjects(\n this.deleteItems.map((o) => ({\n id: o.id,\n subject: o.data[this.context.subjectProperty || o.id] as string\n }))\n )\n .subscribe({\n next: (res: ObjectDeleteResult[]) => {\n this.errors = res\n .filter((r) => !!r._error)\n .map((r: any) => ({\n status: r._error.status,\n subject: this.context?.subjectProperty ? r.properties[this.context.subjectProperty].value : r.id,\n message: this.#getErrorMessage(r._error)\n }));\n !this.errors.length && this.#oref.close();\n },\n complete: () => (this.deleting = false)\n });\n }\n }\n\n #getErrorMessage(error: ObjectDeleteError): string {\n switch (error.status) {\n case 403:\n return this.translate.instant('yuv.action-menu.action.delete.error.403');\n case 404:\n return this.translate.instant('yuv.action-menu.action.delete.error.404');\n default:\n return this.translate.instant('yuv.action-menu.action.delete.error.default');\n }\n }\n\n cancel() {\n this.#oref.close();\n }\n}\n","<div class=\"yuv-delete\" [ngClass]=\"{ deleting }\">\n <div class=\"yuv-loader-linear\"></div>\n\n @if (errors?.length) {\n <ul class=\"errors\">\n @for (e of errors; track $index) {\n <li class=\"error\">\n <span class=\"subject\">{{ e.subject }}</span>\n <span class=\"message\">{{ e.message }}</span>\n </li>\n }\n </ul>\n } @else {\n <p>{{ 'yuv.action-menu.action.delete.dms.object.confirm.message' | translate }}</p>\n }\n\n <div class=\"form-buttons\">\n <button [disabled]=\"deleting || errors?.length\" class=\"primary\" (click)=\"run()\">{{ 'yuv.action-menu.action.delete.dms.object.confirm.ok' | translate }}</button>\n <button [disabled]=\"deleting\" class=\"secondary\" (click)=\"cancel()\">{{ 'yuv.action-menu.action.delete.dms.object.confirm.cancel' | translate }}</button>\n </div>\n</div>\n","import { inject } from '@angular/core';\nimport { DmsObject, RetentionField, RetentionService, TranslateService } from '@yuuvis/client-core';\nimport { YvcOverlayService } from '@yuuvis/components/overlay';\nimport { map, Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\nimport { DeleteComponent } from './delete/delete.component';\n\nexport class DeleteAction extends AbstractContextAction implements Action {\n private translate = inject(TranslateService);\n private overlay = inject(YvcOverlayService);\n private retention = inject(RetentionService);\n\n id = BASE_ACTION.delete;\n label = this.translate.instant('yuv.action-menu.action.delete.dms.object.label');\n description = this.translate.instant('yuv.action-menu.action.delete.dms.object.description');\n priority = 8;\n icon = ACTION_ICON.delete;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n const e = items[0];\n return of(e && !!e.permissions && e.permissions.deleteObject && !this.retention.getRetentionState(e).underRetention);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n return this.overlay\n .open(DeleteComponent, {\n items,\n context: this.context\n })\n .afterClosed$.pipe(map(() => true));\n }\n}\n","import { inject } from '@angular/core';\nimport { DmsObject, DmsService, SystemType, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\n\nexport class DownloadAction extends AbstractContextAction implements Action {\n private translate = inject(TranslateService);\n private dmsService = inject(DmsService);\n\n id = BASE_ACTION.download;\n label = this.translate.instant('yuv.action-menu.action.download.dms.object.content.label');\n description = this.translate.instant('yuv.action-menu.action.download.dms.object.content.description');\n priority = 2;\n icon = ACTION_ICON.download;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n types: [SystemType.DOCUMENT]\n };\n\n isExecutable(selection: DmsObject[]) {\n const noContentMatch = (Array.isArray(selection) ? selection : [selection]).find((e) => !e.content);\n if (selection.length < 1) return of(false);\n return of(!noContentMatch);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.dmsService.downloadContent(Array.isArray(selection) ? selection : [selection]);\n return of(true);\n }\n}\n","import { inject } from '@angular/core';\nimport { ClipboardService, DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\n\nexport class CopyAction extends AbstractContextAction implements Action {\n private clipboardService = inject(ClipboardService);\n private translate = inject(TranslateService);\n\n id = BASE_ACTION.copy;\n label = this.translate.instant('yuv.action-menu.action.copy.dms.object.label');\n description = this.translate.instant('yuv.action-menu.action.copy.dms.object.description');\n priority = 8;\n icon = ACTION_ICON.copy;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n const notAllowed = items.some((item) => !item.permissions?.writeIndexData);\n return of(items.length > 0 && !notAllowed);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.clipboardService.addObjects(items, 'copy', this.context?.appId);\n return of(true);\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, Signal } from '@angular/core';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { Action } from '../../actions.interface';\n\n@Component({\n selector: 'yuv-contextmenu',\n standalone: true,\n imports: [CommonModule, ListComponent, ListItemDirective, YvcIconModule, A11yModule],\n templateUrl: './contextmenu.component.html',\n styleUrl: './contextmenu.component.scss'\n})\nexport class ContextmenuComponent {\n private oRef = inject(YvcOverlayRef);\n actions: Signal<Action[]> = this.oRef.data.actions;\n callback: (action: Action) => void = this.oRef.data.callback;\n\n onItemSelect(index: number[]) {\n this.oRef?.close();\n this.callback(this.actions()[index[0]]);\n }\n}\n","<yuv-list (itemSelect)=\"onItemSelect($event)\" cdkTrapFocus>\n @for (a of actions(); track a.id) {\n <div yuvListItem><yvc-icon [svg]=\"a.icon\"></yvc-icon> {{ a.label }}</div>\n }\n</yuv-list>\n","import { inject } from '@angular/core';\nimport { ClipboardService, DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\n\nexport class CutAction extends AbstractContextAction implements Action {\n private clipboardService = inject(ClipboardService);\n private translate = inject(TranslateService);\n\n id = BASE_ACTION.cut;\n label = this.translate.instant('yuv.action-menu.action.cut.dms.object.label');\n description = this.translate.instant('yuv.action-menu.action.cut.dms.object.description');\n priority = 8;\n icon = ACTION_ICON.cut;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n return of(items.length > 0 && items.every((item) => item.permissions?.writeContent && item.permissions?.writeIndexData && item.permissions?.deleteObject));\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.clipboardService.addObjects(items, 'cut', this.context?.appId);\n return of(true);\n }\n}\n","import { Injectable, Injector, Signal, inject, runInInjectionContext } from '@angular/core';\nimport { DmsObject, Utils } from '@yuuvis/client-core';\nimport { Observable, forkJoin, map, of } from 'rxjs';\nimport { Action, ActionClass, ActionContext, ActionOptions } from './actions.interface';\nimport { DeleteAction } from './actions/delete-action/delete-action';\nimport { DownloadAction } from './actions/download-action/download-action';\nimport { CopyAction } from './actions/copy-action/copy-action';\nimport { YvcOverlayService } from '@yuuvis/components/overlay';\nimport { ContextmenuComponent } from './components/contextmenu/contextmenu.component';\nimport { FlexibleConnectedPositionStrategyOrigin } from '@angular/cdk/overlay';\nimport { CutAction } from './actions/cut-action/cut-action';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActionsService {\n private readonly injector = inject(Injector);\n private overlay = inject(YvcOverlayService);\n\n private _registeredActions: Record<string, ActionClass> = {};\n\n registerActions(a: { id: string; action: ActionClass }[]) {\n Array.isArray(a) && a.forEach((a) => (this._registeredActions[a.id] = a.action));\n }\n\n concealActions(actionIDs: string[]) {\n Array.isArray(actionIDs) && actionIDs.forEach((id) => delete this._registeredActions[id]);\n }\n\n /**\n * Returns all actions that are executable for the given selection.\n * @param selection Array of DmsObjects to check for executable actions\n * @param options options to filter the actions\n * @returns Observable of actions that are executable for the given selection\n */\n getActions(selection: DmsObject[], options?: ActionOptions): Observable<Action[]> {\n // TODO: check if selection is empty or if nessasery at all\n // if (!selection || selection.length === 0) return of([]);\n const s: Observable<{ action: Action; executable: boolean }>[] = this.getAvailableActions(options?.context)\n .filter((ac) =>\n options?.exclude\n ? Array.isArray(options.exclude)\n ? !options.exclude.includes(ac.id)\n : options.exclude instanceof RegExp\n ? !options.exclude.test(ac.id)\n : true\n : true\n )\n .map((action: Action) =>\n action.isExecutable(selection).pipe(\n map((executable: boolean) => ({\n action,\n executable\n }))\n )\n );\n\n return forkJoin(s).pipe(map((res: { action: Action; executable: boolean }[]) => res.filter((r) => r.executable).map((r) => r.action)));\n }\n\n /**\n * Get all available actions. This includes the default actions and all registered actions but\n * without checking if they are executable.\n * @param context Context passed to the actions\n * @returns Array of available actions\n */\n getAvailableActions(context?: ActionContext): Action[] {\n let a: Action[] = [];\n\n runInInjectionContext(this.injector, () => {\n a = [...this._getDefaulActions(context), ...Object.values(this._registeredActions).map((ac: ActionClass) => new ac(context))];\n });\n return a;\n }\n\n getActionsForType(objectTypeId: string, context?: ActionContext): Action[] {\n return this.getAvailableActions(context).filter((a: Action) => this._actionsSupportsType(a, objectTypeId));\n }\n\n getActionById(id: string, context?: ActionContext): Action | undefined {\n return this.getAvailableActions(context).find((a) => a.id === id);\n }\n\n getActionsById(ids: string[], context?: ActionContext): Action[] {\n return this.getAvailableActions(context).filter((a) => ids.includes(a.id));\n }\n\n openContextMenu(actions: Signal<Action[]>, callback: (action: Action) => void, element: FlexibleConnectedPositionStrategyOrigin) {\n this.overlay.open(ContextmenuComponent, { actions, callback }, {}, element);\n }\n\n private _actionsSupportsType(action: Action, objectTypeId: string): boolean {\n const matchesTypes = action.supports.types ? action.supports.types.includes(objectTypeId) : false;\n const matchesSOTs = action.supports.sots ? action.supports.sots.includes(objectTypeId) : false;\n const matchesPattern = action.supports.pattern ? Utils.patternToRegExp(action.supports.pattern).test(objectTypeId) : false;\n return matchesTypes || matchesSOTs || matchesPattern;\n }\n\n private _getDefaulActions(context?: ActionContext): Action[] {\n return [new DeleteAction(context), new DownloadAction(context), new CopyAction(context), new CutAction(context)];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TranslateModule","i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-actions.mjs","sources":["../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.module.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.icon.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.interface.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/copy-action/copy-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/cut-action/cut-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete/delete.component.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete/delete.component.html","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/download-action/download-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/components/contextmenu/contextmenu.component.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/components/contextmenu/contextmenu.component.html","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.service.ts","../../../../../libs/yuuvis/client-framework/actions/src/yuuvis-client-framework-actions.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [CommonModule, TranslateModule]\n})\nexport class ActionsModule {}\n","export const ACTION_ICON = {\n download: 'download',\n delete: 'delete',\n copy: 'content_copy',\n cut: 'content_cut',\n manageFlavor: 'cards_star'\n}","import { DmsObject } from '@yuuvis/client-core';\nimport { Observable } from 'rxjs';\n\nexport type ActionClass = { \n new (...args: any[]): any \n};\n\nexport class AbstractContextAction {\n context?: ActionContext;\n constructor(context?: ActionContext) {\n this.context = context;\n }\n}\n\nexport interface BaseAction {\n /**\n * Equals the selector of the actions selector (will be set by the action service)\n */\n id: string;\n /**\n * label to be displayed inside the action menu\n */\n label: string;\n /**\n * description to be displayed inside the action menu\n */\n description: string;\n /**\n * @ignore\n */\n icon: string;\n /**\n * actions priority defining the position of the action within the whole list of actions\n */\n priority: number;\n /**\n * group of actions the action should be part of ('common' or 'further')\n */\n group: string;\n /**\n * number of selected items supported by the action\n * (SelectionRange.SINGLE_SELECT, SelectionRange.MULTI_SELECT, SelectionRange.MULTI_SELECT_ONLY )\n */\n range: SelectionRange;\n\n /**\n * Types that are supported by the action\n */\n supports: ActionSupport;\n\n /**\n * Determining whether or not the action is executable for the given selection\n * @param item Current selection\n * @returns true if the action is executable for the current selection, false otherwise\n */\n isExecutable: (items: DmsObject[]) => Observable<boolean>;\n}\n\nexport interface ActionSupport {\n // object types\n types?: string[];\n // object types\n sots?: string[];\n // pattern to match the type name against\n pattern?: string;\n}\n\nexport interface ActionContext {\n /**\n * As actions deal with DmsObjects the subject property is the property that\n * should be used to display the name of the object. This may be used for\n * showing the name of the object in a confirmation/error dialog or similar.\n */\n subjectProperty?: string;\n /**\n * The appId is the id of the application that the action is executed in.\n */\n appId?: string;\n}\n\nexport interface Action extends BaseAction {\n run: (items: DmsObject[]) => Observable<boolean>;\n}\n\nexport interface ActionOptions {\n context?: ActionContext;\n exclude?: string[] | RegExp;\n}\n\nexport enum SelectionRange {\n SINGLE_SELECT,\n MULTI_SELECT,\n MULTI_SELECT_ONLY,\n ANY\n}\n\nexport const BASE_ACTION = {\n copy: 'yuv.base.copy',\n cut: 'yuv.base.cut',\n download: 'yuv.base.download',\n delete: 'yuv.base.delete'\n};\n","import { inject } from '@angular/core';\nimport { ClipboardService, DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\n\nexport class CopyAction extends AbstractContextAction implements Action {\n private clipboardService = inject(ClipboardService);\n private translate = inject(TranslateService);\n\n id = BASE_ACTION.copy;\n label = this.translate.instant('yuv.action-menu.action.copy.dms.object.label');\n description = this.translate.instant('yuv.action-menu.action.copy.dms.object.description');\n priority = 8;\n icon = ACTION_ICON.copy;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n const notAllowed = items.some((item) => !item.permissions?.writeIndexData);\n return of(items.length > 0 && !notAllowed);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.clipboardService.addObjects(items, 'copy', this.context?.appId);\n return of(true);\n }\n}\n","import { inject } from '@angular/core';\nimport { ClipboardService, DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\n\nexport class CutAction extends AbstractContextAction implements Action {\n private clipboardService = inject(ClipboardService);\n private translate = inject(TranslateService);\n\n id = BASE_ACTION.cut;\n label = this.translate.instant('yuv.action-menu.action.cut.dms.object.label');\n description = this.translate.instant('yuv.action-menu.action.cut.dms.object.description');\n priority = 8;\n icon = ACTION_ICON.cut;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n return of(items.length > 0 && items.every((item) => item.permissions?.writeContent && item.permissions?.writeIndexData && item.permissions?.deleteObject));\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.clipboardService.addObjects(items, 'cut', this.context?.appId);\n return of(true);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DmsObject, DmsService, ObjectDeleteError, ObjectDeleteResult, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ActionContext } from '../../../actions.interface';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n/**\n * @ignore\n */\n\n@Component({\n selector: 'yuv-delete',\n standalone: true,\n imports: [CommonModule, TranslateModule, MatButtonModule, DialogComponent, MatProgressBar],\n templateUrl: './delete.component.html',\n styleUrls: ['./delete.component.scss']\n})\nexport class DeleteComponent {\n readonly #dmsService = inject(DmsService);\n private readonly translate = inject(TranslateService);\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<DeleteComponent>);\n\n errors = signal<\n {\n status: number;\n subject: string;\n message: string;\n }[]\n >([]);\n\n deleting = signal(false);\n deleteItems: DmsObject[] = this.#dialogData.items;\n context: ActionContext = this.#dialogData.context;\n\n run() {\n this.errors.set([]);\n if (this.deleteItems.length) {\n this.deleting.set(true);\n this.#dmsService\n .deleteDmsObjects(\n this.deleteItems.map((o) => ({\n id: o.id,\n subject: o.data[this.context.subjectProperty || o.id] as string\n }))\n )\n .subscribe({\n next: (res: ObjectDeleteResult[]) => {\n this.errors.set(\n res\n .filter((r) => !!r._error)\n .map((r: any) => ({\n status: r._error.status,\n subject: this.context?.subjectProperty ? r.properties[this.context.subjectProperty].value : r.id,\n message: this.#getErrorMessage(r._error)\n }))\n );\n !this.errors.length && this.#dialogRef.close();\n },\n error: (err: ObjectDeleteError) => {\n this.deleting.set(false);\n },\n complete: () => this.deleting.set(false)\n });\n }\n }\n\n #getErrorMessage(error: ObjectDeleteError): string {\n switch (error.status) {\n case 403:\n return this.translate.instant('yuv.action-menu.action.delete.error.403');\n case 404:\n return this.translate.instant('yuv.action-menu.action.delete.error.404');\n default:\n return this.translate.instant('yuv.action-menu.action.delete.error.default');\n }\n }\n\n cancel() {\n this.#dialogRef.close();\n }\n}\n","<yuv-dialog [headertitel]=\"'yuv.action-menu.action.delete.dms.object.label' | translate\">\n <main class=\"yuv-delete\" [ngClass]=\"{ deleting: deleting() }\">\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n\n @if (errors().length) {\n <ul class=\"errors\">\n @for (e of errors(); track $index) {\n <li class=\"error\">\n <span class=\"subject\">{{ e.subject }}</span>\n <span class=\"message\">{{ e.message }}</span>\n </li>\n }\n </ul>\n } @else {\n <p>{{ 'yuv.action-menu.action.delete.dms.object.confirm.message' | translate }}</p>\n }\n </main>\n <footer class=\"form-buttons\">\n <button mat-stroked-button [disabled]=\"deleting\" class=\"secondary\" (click)=\"cancel()\">\n {{ 'yuv.action-menu.action.delete.dms.object.confirm.cancel' | translate }}\n </button>\n\n <button mat-flat-button [disabled]=\"deleting() || !!errors().length\" class=\"primary\" (click)=\"run()\">\n {{ 'yuv.action-menu.action.delete.dms.object.confirm.ok' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DmsObject, RetentionService, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\nimport { DeleteComponent } from './delete/delete.component';\n\nexport class DeleteAction extends AbstractContextAction implements Action {\n private translate = inject(TranslateService);\n #dialog = inject(MatDialog);\n private retention = inject(RetentionService);\n\n id = BASE_ACTION.delete;\n label = this.translate.instant('yuv.action-menu.action.delete.dms.object.label');\n description = this.translate.instant('yuv.action-menu.action.delete.dms.object.description');\n priority = 8;\n icon = ACTION_ICON.delete;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n const e = items[0];\n return of(e && !!e.permissions && e.permissions.deleteObject && !this.retention.getRetentionState(e).underRetention);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.#dialog.open(DeleteComponent, {\n data: {\n items,\n context: this.context\n }\n });\n return of(true);\n }\n}\n","import { inject } from '@angular/core';\nimport { DmsObject, DmsService, SystemType, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { ACTION_ICON } from '../../actions.icon';\nimport { AbstractContextAction, Action, ActionSupport, BASE_ACTION, SelectionRange } from '../../actions.interface';\n\nexport class DownloadAction extends AbstractContextAction implements Action {\n private translate = inject(TranslateService);\n private dmsService = inject(DmsService);\n\n id = BASE_ACTION.download;\n label = this.translate.instant('yuv.action-menu.action.download.dms.object.content.label');\n description = this.translate.instant('yuv.action-menu.action.download.dms.object.content.description');\n priority = 2;\n icon = ACTION_ICON.download;\n group = 'common';\n range = SelectionRange.MULTI_SELECT;\n supports: ActionSupport = {\n types: [SystemType.DOCUMENT]\n };\n\n isExecutable(selection: DmsObject[]) {\n const noContentMatch = (Array.isArray(selection) ? selection : [selection]).find((e) => !e.content);\n if (selection.length < 1) return of(false);\n return of(!noContentMatch);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.dmsService.downloadContent(Array.isArray(selection) ? selection : [selection]);\n return of(true);\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, Signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\nimport { Action } from '../../actions.interface';\n\n@Component({\n selector: 'yuv-contextmenu',\n standalone: true,\n imports: [CommonModule, MatIconModule, YuvListModule, A11yModule],\n templateUrl: './contextmenu.component.html',\n styleUrl: './contextmenu.component.scss'\n})\nexport class ContextmenuComponent {\n oRef = inject(MatDialogRef);\n data = inject(MAT_DIALOG_DATA);\n\n actions: Signal<Action[]> = this.data.actions;\n callback: (action: Action) => void = this.data.callback;\n\n onItemSelect(index: number[]) {\n this.oRef?.close();\n this.callback(this.actions()[index[0]]);\n }\n}\n","<yuv-list (itemSelect)=\"onItemSelect($event)\" cdkTrapFocus>\n @for (a of actions(); track a.id) {\n <div yuvListItem>\n <mat-icon>{{ a.icon }}</mat-icon> {{ a.label }}\n </div>\n }\n</yuv-list>\n","import { Injectable, Injector, Signal, inject, runInInjectionContext } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DmsObject, Utils } from '@yuuvis/client-core';\nimport { Observable, forkJoin, map } from 'rxjs';\nimport { Action, ActionClass, ActionContext, ActionOptions } from './actions.interface';\nimport { CopyAction } from './actions/copy-action/copy-action';\nimport { CutAction } from './actions/cut-action/cut-action';\nimport { DeleteAction } from './actions/delete-action/delete-action';\nimport { DownloadAction } from './actions/download-action/download-action';\nimport { ContextmenuComponent } from './components/contextmenu/contextmenu.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActionsService {\n private readonly injector = inject(Injector);\n private dialog = inject(MatDialog);\n readonly iconRegistry = inject(MatIconRegistry);\n\n private _registeredActions: Record<string, ActionClass> = {};\n\n registerActions(a: { id: string; action: ActionClass }[]) {\n Array.isArray(a) &&\n a.forEach((a) => {\n this._registeredActions[a.id] = a.action;\n });\n }\n\n concealActions(actionIDs: string[]) {\n Array.isArray(actionIDs) && actionIDs.forEach((id) => delete this._registeredActions[id]);\n }\n\n /**\n * Returns all actions that are executable for the given selection.\n * @param selection Array of DmsObjects to check for executable actions\n * @param options options to filter the actions\n * @returns Observable of actions that are executable for the given selection\n */\n getActions(selection: DmsObject[], options?: ActionOptions): Observable<Action[]> {\n // TODO: check if selection is empty or if nessasery at all\n // if (!selection || selection.length === 0) return of([]);\n const s: Observable<{ action: Action; executable: boolean }>[] = this.getAvailableActions(options?.context)\n .filter((ac) =>\n options?.exclude\n ? Array.isArray(options.exclude)\n ? !options.exclude.includes(ac.id)\n : options.exclude instanceof RegExp\n ? !options.exclude.test(ac.id)\n : true\n : true\n )\n .map((action: Action) =>\n action.isExecutable(selection).pipe(\n map((executable: boolean) => ({\n action,\n executable\n }))\n )\n );\n\n return forkJoin(s).pipe(map((res: { action: Action; executable: boolean }[]) => res.filter((r) => r.executable).map((r) => r.action)));\n }\n\n /**\n * Get all available actions. This includes the default actions and all registered actions but\n * without checking if they are executable.\n * @param context Context passed to the actions\n * @returns Array of available actions\n */\n getAvailableActions(context?: ActionContext): Action[] {\n let a: Action[] = [];\n\n runInInjectionContext(this.injector, () => {\n a = [...this._getDefaulActions(context), ...Object.values(this._registeredActions).map((ac: ActionClass) => new ac(context))];\n });\n return a;\n }\n\n getActionsForType(objectTypeId: string, context?: ActionContext): Action[] {\n return this.getAvailableActions(context).filter((a: Action) => this._actionsSupportsType(a, objectTypeId));\n }\n\n getActionById(id: string, context?: ActionContext): Action | undefined {\n return this.getAvailableActions(context).find((a) => a.id === id);\n }\n\n getActionsById(ids: string[], context?: ActionContext): Action[] {\n return this.getAvailableActions(context).filter((a) => ids.includes(a.id));\n }\n\n openContextMenu(actions: Signal<Action[]>, callback: (action: Action) => void, overlayOrigin: { x: number; y: number }) {\n if (actions().length)\n this.dialog.open(ContextmenuComponent, {\n data: { actions, callback },\n panelClass: 'context-menu-dialog'\n // position: { top: `${overlayOrigin.y}`, left: `${overlayOrigin.x}` }\n });\n\n setTimeout(() => {\n const dialog = document.querySelector('.context-menu-dialog') as HTMLElement;\n if (dialog) {\n const dialogWidth = dialog.offsetWidth;\n const dialogHeight = dialog.offsetHeight;\n const screenW = window.innerWidth;\n const screenH = window.innerHeight;\n\n let left = overlayOrigin.x;\n let top = overlayOrigin.y;\n if (left + dialogWidth > screenW) {\n left = screenW - dialogWidth - 10;\n }\n if (top + dialogHeight > screenH) {\n top = screenH - dialogHeight - 10;\n }\n\n dialog.style.position = 'fixed';\n dialog.style.left = `${left}px`;\n dialog.style.top = `${top}px`;\n }\n });\n }\n\n private _actionsSupportsType(action: Action, objectTypeId: string): boolean {\n const matchesTypes = action.supports.types ? action.supports.types.includes(objectTypeId) : false;\n const matchesSOTs = action.supports.sots ? action.supports.sots.includes(objectTypeId) : false;\n const matchesPattern = action.supports.pattern ? Utils.patternToRegExp(action.supports.pattern).test(objectTypeId) : false;\n return matchesTypes || matchesSOTs || matchesPattern;\n }\n\n private _getDefaulActions(context?: ActionContext): Action[] {\n return [new DeleteAction(context), new DownloadAction(context), new CopyAction(context), new CutAction(context)];\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TranslateModule","i1","i2","i3"],"mappings":"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"}