@umbraco-cms/backoffice 14.0.0-40e04294 → 14.0.0-43239cee

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 (270) hide show
  1. package/dist-cms/apps/app/app.element.js +0 -3
  2. package/dist-cms/assets/lang/da-dk.js +3 -0
  3. package/dist-cms/assets/lang/da-dk.ts +3 -0
  4. package/dist-cms/assets/lang/en-us.js +21 -18
  5. package/dist-cms/assets/lang/en-us.ts +21 -18
  6. package/dist-cms/custom-elements.json +288 -19
  7. package/dist-cms/external/tinymce/index.js +36 -36
  8. package/dist-cms/mocks/browser-handlers.js +1 -1
  9. package/dist-cms/mocks/data/entity.data.d.ts +1 -1
  10. package/dist-cms/mocks/data/entity.data.js +1 -9
  11. package/dist-cms/mocks/data/media.data.d.ts +2 -1
  12. package/dist-cms/mocks/data/media.data.js +11 -0
  13. package/dist-cms/mocks/data/user-group.data.d.ts +17 -0
  14. package/dist-cms/mocks/data/user-group.data.js +61 -0
  15. package/dist-cms/mocks/data/user.data.d.ts +15 -0
  16. package/dist-cms/mocks/data/{users.data.js → user.data.js} +27 -41
  17. package/dist-cms/mocks/handlers/dictionary.handlers.js +2 -2
  18. package/dist-cms/mocks/handlers/media.handlers.js +8 -0
  19. package/dist-cms/mocks/handlers/partial-views.handlers.js +3 -3
  20. package/dist-cms/mocks/handlers/user-group/collection.handlers.d.ts +1 -0
  21. package/dist-cms/mocks/handlers/user-group/collection.handlers.js +10 -0
  22. package/dist-cms/mocks/handlers/user-group/detail.handlers.d.ts +1 -0
  23. package/dist-cms/mocks/handlers/user-group/detail.handlers.js +37 -0
  24. package/dist-cms/mocks/handlers/user-group/index.js +4 -0
  25. package/dist-cms/mocks/handlers/user-group/item.handlers.d.ts +1 -0
  26. package/dist-cms/mocks/handlers/user-group/item.handlers.js +13 -0
  27. package/dist-cms/mocks/handlers/user-group/slug.d.ts +1 -0
  28. package/dist-cms/mocks/handlers/user-group/slug.js +1 -0
  29. package/dist-cms/mocks/handlers/user.handlers.js +15 -1
  30. package/dist-cms/packages/core/components/input-list-base/input-list-base.js +1 -1
  31. package/dist-cms/packages/core/components/input-section/input-section.element.d.ts +2 -2
  32. package/dist-cms/packages/core/components/input-section/input-section.element.js +5 -5
  33. package/dist-cms/packages/core/extension-registry/conditions/types.d.ts +3 -2
  34. package/dist-cms/packages/core/extension-registry/models/index.d.ts +5 -1
  35. package/dist-cms/packages/core/extension-registry/models/index.js +2 -0
  36. package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.d.ts +8 -0
  37. package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.js +1 -0
  38. package/dist-cms/packages/core/extension-registry/models/user-permission.model.d.ts +11 -0
  39. package/dist-cms/packages/core/extension-registry/models/user-permission.model.js +1 -0
  40. package/dist-cms/packages/core/localization/index.d.ts +3 -0
  41. package/dist-cms/packages/core/localization/index.js +3 -0
  42. package/dist-cms/packages/core/localization/localize-date.element.d.ts +28 -0
  43. package/dist-cms/packages/core/localization/localize-date.element.js +42 -0
  44. package/dist-cms/packages/core/localization/localize-number.element.d.ts +28 -0
  45. package/dist-cms/packages/core/localization/localize-number.element.js +42 -0
  46. package/dist-cms/packages/core/localization/localize-relative-time.element.d.ts +34 -0
  47. package/dist-cms/packages/core/localization/localize-relative-time.element.js +54 -0
  48. package/dist-cms/packages/core/localization/localize.element.js +1 -1
  49. package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.d.ts +19 -0
  50. package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.js +97 -0
  51. package/dist-cms/packages/core/modal/common/manifests.js +6 -0
  52. package/dist-cms/packages/core/modal/common/tree-picker/tree-picker-modal.element.js +5 -3
  53. package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.d.ts +7 -0
  54. package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.js +4 -0
  55. package/dist-cms/packages/core/modal/token/index.d.ts +1 -0
  56. package/dist-cms/packages/core/modal/token/index.js +1 -0
  57. package/dist-cms/packages/core/picker-input/picker-input.context.js +1 -3
  58. package/dist-cms/packages/core/tree/tree.context.js +3 -2
  59. package/dist-cms/packages/documents/documents/components/index.d.ts +1 -0
  60. package/dist-cms/packages/documents/documents/components/index.js +1 -0
  61. package/dist-cms/packages/documents/documents/components/input-document/input-document.context.d.ts +6 -0
  62. package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +7 -0
  63. package/dist-cms/packages/documents/documents/components/input-document/input-document.element.d.ts +7 -12
  64. package/dist-cms/packages/documents/documents/components/input-document/input-document.element.js +51 -64
  65. package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.d.ts +23 -0
  66. package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.js +102 -0
  67. package/dist-cms/packages/documents/documents/entity-actions/create/manifests.js +9 -0
  68. package/dist-cms/packages/documents/documents/entity-actions/manifests.js +1 -1
  69. package/dist-cms/packages/documents/documents/entity-actions/permissions.action.d.ts +2 -1
  70. package/dist-cms/packages/documents/documents/entity-actions/permissions.action.js +22 -2
  71. package/dist-cms/packages/documents/documents/index.d.ts +2 -0
  72. package/dist-cms/packages/documents/documents/index.js +2 -0
  73. package/dist-cms/packages/documents/documents/manifests.d.ts +4 -0
  74. package/dist-cms/packages/documents/documents/manifests.js +2 -0
  75. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.d.ts +4 -0
  76. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.js +6 -0
  77. package/dist-cms/packages/documents/documents/recycle-bin/manifests.d.ts +4 -0
  78. package/dist-cms/packages/documents/documents/repository/document.repository.js +4 -4
  79. package/dist-cms/packages/documents/documents/repository/manifests.d.ts +3 -2
  80. package/dist-cms/packages/documents/documents/repository/manifests.js +9 -1
  81. package/dist-cms/packages/documents/documents/user-permissions/index.d.ts +1 -0
  82. package/dist-cms/packages/documents/documents/user-permissions/index.js +1 -0
  83. package/dist-cms/packages/documents/documents/user-permissions/manifests.d.ts +19 -0
  84. package/dist-cms/packages/documents/documents/user-permissions/manifests.js +196 -0
  85. package/dist-cms/packages/documents/documents/workspace/views/info/document-info-workspace-view.element.js +29 -28
  86. package/dist-cms/packages/documents/manifests.d.ts +4 -0
  87. package/dist-cms/packages/log-viewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.js +1 -1
  88. package/dist-cms/packages/media/manifests.d.ts +2 -1
  89. package/dist-cms/packages/media/manifests.js +1 -0
  90. package/dist-cms/packages/media/media/components/index.d.ts +1 -0
  91. package/dist-cms/packages/media/media/components/index.js +1 -0
  92. package/dist-cms/packages/media/media/components/input-media/input-media.context.d.ts +6 -0
  93. package/dist-cms/packages/media/media/components/input-media/input-media.context.js +7 -0
  94. package/dist-cms/packages/media/media/components/input-media/input-media.element.d.ts +7 -15
  95. package/dist-cms/packages/media/media/components/input-media/input-media.element.js +50 -72
  96. package/dist-cms/packages/media/media/index.d.ts +2 -0
  97. package/dist-cms/packages/media/media/index.js +1 -1
  98. package/dist-cms/packages/media/media/manifests.d.ts +1 -1
  99. package/dist-cms/packages/media/media/manifests.js +2 -0
  100. package/dist-cms/packages/media/media/repository/manifests.d.ts +3 -2
  101. package/dist-cms/packages/media/media/repository/manifests.js +9 -1
  102. package/dist-cms/packages/media/media/repository/media-item.store.d.ts +20 -0
  103. package/dist-cms/packages/media/media/repository/media-item.store.js +23 -0
  104. package/dist-cms/packages/media/media/repository/media.repository.d.ts +6 -0
  105. package/dist-cms/packages/media/media/repository/media.repository.js +22 -0
  106. package/dist-cms/packages/media/media/repository/sources/media-item.server.data.d.ts +24 -0
  107. package/dist-cms/packages/media/media/repository/sources/media-item.server.data.js +31 -0
  108. package/dist-cms/packages/media/media/user-permissions/index.d.ts +1 -0
  109. package/dist-cms/packages/media/media/user-permissions/index.js +1 -0
  110. package/dist-cms/packages/media/media/user-permissions/manifests.d.ts +4 -0
  111. package/dist-cms/packages/media/media/user-permissions/manifests.js +27 -0
  112. package/dist-cms/packages/users/current-user/conditions/index.d.ts +1 -0
  113. package/dist-cms/packages/users/current-user/conditions/index.js +1 -0
  114. package/dist-cms/packages/users/current-user/conditions/user-permission.condition.d.ts +18 -0
  115. package/dist-cms/packages/users/current-user/conditions/user-permission.condition.js +23 -0
  116. package/dist-cms/packages/users/current-user/index.d.ts +1 -0
  117. package/dist-cms/packages/users/current-user/index.js +1 -0
  118. package/dist-cms/packages/users/current-user/manifests.js +7 -1
  119. package/dist-cms/packages/users/current-user/modals/current-user/current-user-modal.element.js +7 -7
  120. package/dist-cms/packages/users/index.d.ts +4 -2
  121. package/dist-cms/packages/users/index.js +4 -2
  122. package/dist-cms/packages/users/manifests.d.ts +2 -0
  123. package/dist-cms/packages/users/manifests.js +3 -0
  124. package/dist-cms/packages/users/user-groups/collection/user-group-collection-header.element.js +2 -2
  125. package/dist-cms/packages/users/user-groups/collection/user-group-collection-view.element.js +6 -6
  126. package/dist-cms/packages/users/user-groups/components/index.d.ts +1 -0
  127. package/dist-cms/packages/users/user-groups/components/index.js +1 -0
  128. package/dist-cms/packages/users/user-groups/entity-actions/manifests.d.ts +2 -0
  129. package/dist-cms/packages/users/user-groups/entity-actions/manifests.js +19 -0
  130. package/dist-cms/packages/users/user-groups/index.d.ts +2 -0
  131. package/dist-cms/packages/users/user-groups/index.js +2 -0
  132. package/dist-cms/packages/users/user-groups/manifests.d.ts +1 -1
  133. package/dist-cms/packages/users/user-groups/manifests.js +2 -0
  134. package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.d.ts +16 -0
  135. package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.js +69 -0
  136. package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.d.ts +14 -0
  137. package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.js +31 -0
  138. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.d.ts +2 -0
  139. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.js +57 -56
  140. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.d.ts +12 -0
  141. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.js +20 -0
  142. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.element.js +1 -1
  143. package/dist-cms/packages/users/users/collection/user-collection-header.element.js +18 -11
  144. package/dist-cms/packages/users/users/collection/views/grid/user-collection-grid-view.element.js +6 -6
  145. package/dist-cms/packages/users/users/collection/views/table/column-layouts/status/user-table-status-column-layout.element.js +3 -3
  146. package/dist-cms/packages/users/users/components/index.d.ts +3 -0
  147. package/dist-cms/packages/users/users/components/index.js +3 -0
  148. package/dist-cms/packages/users/users/components/user-input/user-input.element.js +2 -2
  149. package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.d.ts +15 -0
  150. package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.js +66 -0
  151. package/dist-cms/packages/users/users/index.d.ts +2 -0
  152. package/dist-cms/packages/users/users/index.js +2 -0
  153. package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.d.ts +3 -1
  154. package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.js +20 -25
  155. package/dist-cms/packages/users/users/repository/index.d.ts +1 -0
  156. package/dist-cms/packages/users/users/repository/index.js +1 -0
  157. package/dist-cms/packages/users/users/repository/user.repository.js +1 -1
  158. package/dist-cms/packages/users/users/workspace/user-workspace-editor.element.js +73 -56
  159. package/dist-cms/packages/users/utils.d.ts +5 -2
  160. package/dist-cms/packages/users/utils.js +14 -14
  161. package/dist-cms/shared/auth/auth-flow.d.ts +0 -4
  162. package/dist-cms/shared/auth/auth-flow.js +6 -25
  163. package/dist-cms/shared/repository/repository-items.manager.js +5 -0
  164. package/dist-cms/shared/umb-events/index.d.ts +1 -0
  165. package/dist-cms/shared/umb-events/index.js +1 -0
  166. package/dist-cms/shared/umb-events/selected.event.d.ts +3 -0
  167. package/dist-cms/shared/umb-events/selected.event.js +6 -0
  168. package/dist-cms/tinymce/CHANGELOG.md +48 -0
  169. package/dist-cms/tinymce/composer.json +1 -1
  170. package/dist-cms/tinymce/models/dom/model.js +1 -1
  171. package/dist-cms/tinymce/models/dom/model.min.js +1 -1
  172. package/dist-cms/tinymce/package.json +1 -1
  173. package/dist-cms/tinymce/plugins/accordion/plugin.js +1 -1
  174. package/dist-cms/tinymce/plugins/accordion/plugin.min.js +1 -1
  175. package/dist-cms/tinymce/plugins/advlist/plugin.js +1 -1
  176. package/dist-cms/tinymce/plugins/advlist/plugin.min.js +1 -1
  177. package/dist-cms/tinymce/plugins/anchor/plugin.js +1 -1
  178. package/dist-cms/tinymce/plugins/anchor/plugin.min.js +1 -1
  179. package/dist-cms/tinymce/plugins/autolink/plugin.js +1 -1
  180. package/dist-cms/tinymce/plugins/autolink/plugin.min.js +1 -1
  181. package/dist-cms/tinymce/plugins/autoresize/plugin.js +1 -1
  182. package/dist-cms/tinymce/plugins/autoresize/plugin.min.js +1 -1
  183. package/dist-cms/tinymce/plugins/autosave/plugin.js +1 -1
  184. package/dist-cms/tinymce/plugins/autosave/plugin.min.js +1 -1
  185. package/dist-cms/tinymce/plugins/charmap/plugin.js +1 -1
  186. package/dist-cms/tinymce/plugins/charmap/plugin.min.js +1 -1
  187. package/dist-cms/tinymce/plugins/code/plugin.js +1 -1
  188. package/dist-cms/tinymce/plugins/code/plugin.min.js +1 -1
  189. package/dist-cms/tinymce/plugins/codesample/plugin.js +1 -1
  190. package/dist-cms/tinymce/plugins/codesample/plugin.min.js +1 -1
  191. package/dist-cms/tinymce/plugins/directionality/plugin.js +1 -1
  192. package/dist-cms/tinymce/plugins/directionality/plugin.min.js +1 -1
  193. package/dist-cms/tinymce/plugins/emoticons/plugin.js +1 -1
  194. package/dist-cms/tinymce/plugins/emoticons/plugin.min.js +1 -1
  195. package/dist-cms/tinymce/plugins/fullscreen/plugin.js +1 -1
  196. package/dist-cms/tinymce/plugins/fullscreen/plugin.min.js +1 -1
  197. package/dist-cms/tinymce/plugins/help/plugin.js +5 -5
  198. package/dist-cms/tinymce/plugins/help/plugin.min.js +2 -2
  199. package/dist-cms/tinymce/plugins/image/plugin.js +1 -1
  200. package/dist-cms/tinymce/plugins/image/plugin.min.js +1 -1
  201. package/dist-cms/tinymce/plugins/importcss/plugin.js +1 -1
  202. package/dist-cms/tinymce/plugins/importcss/plugin.min.js +1 -1
  203. package/dist-cms/tinymce/plugins/insertdatetime/plugin.js +1 -1
  204. package/dist-cms/tinymce/plugins/insertdatetime/plugin.min.js +1 -1
  205. package/dist-cms/tinymce/plugins/link/plugin.js +1 -1
  206. package/dist-cms/tinymce/plugins/link/plugin.min.js +1 -1
  207. package/dist-cms/tinymce/plugins/lists/plugin.js +63 -8
  208. package/dist-cms/tinymce/plugins/lists/plugin.min.js +2 -2
  209. package/dist-cms/tinymce/plugins/media/plugin.js +3 -23
  210. package/dist-cms/tinymce/plugins/media/plugin.min.js +2 -2
  211. package/dist-cms/tinymce/plugins/nonbreaking/plugin.js +1 -1
  212. package/dist-cms/tinymce/plugins/nonbreaking/plugin.min.js +1 -1
  213. package/dist-cms/tinymce/plugins/pagebreak/plugin.js +1 -1
  214. package/dist-cms/tinymce/plugins/pagebreak/plugin.min.js +1 -1
  215. package/dist-cms/tinymce/plugins/preview/plugin.js +1 -1
  216. package/dist-cms/tinymce/plugins/preview/plugin.min.js +1 -1
  217. package/dist-cms/tinymce/plugins/quickbars/plugin.js +13 -4
  218. package/dist-cms/tinymce/plugins/quickbars/plugin.min.js +2 -2
  219. package/dist-cms/tinymce/plugins/save/plugin.js +1 -1
  220. package/dist-cms/tinymce/plugins/save/plugin.min.js +1 -1
  221. package/dist-cms/tinymce/plugins/searchreplace/plugin.js +1 -1
  222. package/dist-cms/tinymce/plugins/searchreplace/plugin.min.js +1 -1
  223. package/dist-cms/tinymce/plugins/table/plugin.js +2 -2
  224. package/dist-cms/tinymce/plugins/table/plugin.min.js +2 -2
  225. package/dist-cms/tinymce/plugins/template/plugin.js +1 -1
  226. package/dist-cms/tinymce/plugins/template/plugin.min.js +1 -1
  227. package/dist-cms/tinymce/plugins/visualblocks/plugin.js +1 -1
  228. package/dist-cms/tinymce/plugins/visualblocks/plugin.min.js +1 -1
  229. package/dist-cms/tinymce/plugins/visualchars/plugin.js +1 -1
  230. package/dist-cms/tinymce/plugins/visualchars/plugin.min.js +1 -1
  231. package/dist-cms/tinymce/plugins/wordcount/plugin.js +1 -1
  232. package/dist-cms/tinymce/plugins/wordcount/plugin.min.js +1 -1
  233. package/dist-cms/tinymce/skins/ui/oxide/content.css +1 -1
  234. package/dist-cms/tinymce/skins/ui/oxide/content.inline.css +1 -1
  235. package/dist-cms/tinymce/skins/ui/oxide/content.inline.min.css +1 -1
  236. package/dist-cms/tinymce/skins/ui/oxide/content.min.css +1 -1
  237. package/dist-cms/tinymce/skins/ui/oxide/skin.css +51 -11
  238. package/dist-cms/tinymce/skins/ui/oxide/skin.min.css +1 -1
  239. package/dist-cms/tinymce/skins/ui/oxide-dark/content.css +1 -1
  240. package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.css +1 -1
  241. package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -1
  242. package/dist-cms/tinymce/skins/ui/oxide-dark/content.min.css +1 -1
  243. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.css +54 -14
  244. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
  245. package/dist-cms/tinymce/skins/ui/tinymce-5/content.css +1 -1
  246. package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.css +1 -1
  247. package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.min.css +1 -1
  248. package/dist-cms/tinymce/skins/ui/tinymce-5/content.min.css +1 -1
  249. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.css +51 -11
  250. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.min.css +1 -1
  251. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.css +1 -1
  252. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.css +1 -1
  253. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css +1 -1
  254. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.min.css +1 -1
  255. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.css +51 -11
  256. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  257. package/dist-cms/tinymce/themes/silver/theme.js +158 -55
  258. package/dist-cms/tinymce/themes/silver/theme.min.js +2 -2
  259. package/dist-cms/tinymce/tinymce.d.ts +4 -6
  260. package/dist-cms/tinymce/tinymce.js +911 -691
  261. package/dist-cms/tinymce/tinymce.min.js +2 -2
  262. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  263. package/dist-cms/umbraco-package-schema.json +154 -0
  264. package/dist-cms/vscode-html-custom-data.json +167 -18
  265. package/package.json +2 -2
  266. package/dist-cms/mocks/data/user-groups.data.d.ts +0 -9
  267. package/dist-cms/mocks/data/user-groups.data.js +0 -21
  268. package/dist-cms/mocks/data/users.data.d.ts +0 -16
  269. package/dist-cms/mocks/handlers/user-group.handlers.js +0 -17
  270. /package/dist-cms/mocks/handlers/{user-group.handlers.d.ts → user-group/index.d.ts} +0 -0
@@ -106,8 +106,8 @@ export let UmbDocumentInfoWorkspaceViewElement = class UmbDocumentInfoWorkspaceV
106
106
  }
107
107
  render() {
108
108
  return html `<div class="container">
109
- <uui-box headline="Links" style="--uui-box-default-padding: 0;"> ${this.#renderLinksSection()} </uui-box>
110
- <uui-box headline="History">
109
+ <uui-box headline=${this.localize.term('general_links')} style="--uui-box-default-padding: 0;"> ${this.#renderLinksSection()} </uui-box>
110
+ <uui-box headline=${this.localize.term('general_history')}>
111
111
  <umb-history-list>
112
112
  ${repeat(this._historyList, (item) => item.timestamp, (item) => this.#renderHistory(item))}
113
113
  </umb-history-list>
@@ -127,41 +127,42 @@ export let UmbDocumentInfoWorkspaceViewElement = class UmbDocumentInfoWorkspaceV
127
127
  </a>
128
128
  <div class="link-item">
129
129
  <span class="link-language">en-EN</span>
130
- <span class="link-content italic"> This document is published but is not in the cache</span>
130
+ <span class="link-content italic"><umb-localize key="content_parentNotPublishedAnomaly"></umb-localize></span>
131
131
  </div>
132
132
  </div>`;
133
133
  }
134
134
  #renderGeneralSection() {
135
135
  return html `
136
136
  <div class="general-item">
137
- <strong>Status</strong>
138
- <span><uui-tag color="positive" look="primary" label="Published">Published</uui-tag></span>
137
+ <strong>${this.localize.term('content_publishStatus')}</strong>
138
+ <span><uui-tag color="positive" look="primary" label=${this.localize.term('content_published')}><umb-localize key="content_published"></umb-localize></uui-tag></span>
139
139
  </div>
140
140
  <div class="general-item">
141
- <strong>Created Date</strong>
142
- <span>...</span>
141
+ <strong><umb-localize key="content_createDate"></umb-localize></strong>
142
+ <span><umb-localize-date date="${new Date}"></umb-localize-date></span>
143
143
  </div>
144
144
  <div class="general-item">
145
- <strong>Document Type</strong>
145
+ <strong><umb-localize key="content_documentType"></umb-localize></strong>
146
146
  <uui-button
147
147
  href=${this._editDocumentTypePath + 'edit/' + this._documentTypeId}
148
- label="Edit Document Type"></uui-button>
148
+ label=${this.localize.term('general_edit')}></uui-button>
149
149
  </div>
150
150
  <div class="general-item">
151
- <strong>Template</strong>
152
- <span>template picker?</span>
151
+ <strong><umb-localize key="template_template"></umb-localize></strong>
152
+ <span>IMPLEMENT template picker?</span>
153
153
  </div>
154
154
  <div class="general-item">
155
- <strong>Id</strong>
155
+ <strong><umb-localize key="template_id"></umb-localize></strong>
156
156
  <span>...</span>
157
157
  </div>
158
158
  `;
159
159
  }
160
160
  #renderHistory(history) {
161
- return html ` <umb-history-item .name="${history.userName}" .detail="${history.timestamp}">
162
- <span class="log-type">${this.#renderTag(history.logType)} ${this.#renderTagDescription(history.logType)}</span>
163
- <uui-button label="Rollback" look="secondary" slot="actions">
164
- <uui-icon name="umb:undo"></uui-icon> Rollback
161
+ return html ` <umb-history-item .name="${history.userName}" .detail="${this.localize.date(history.timestamp)}">
162
+ <span class="log-type">${this.#renderTag(history.logType)} ${this.#renderTagDescription(history.logType, history)}</span>
163
+ <uui-button label=${this.localize.term('actions_rollback')} look="secondary" slot="actions">
164
+ <uui-icon name="umb:undo"></uui-icon>
165
+ <umb-localize key="actions_rollback"></umb-localize>
165
166
  </uui-button>
166
167
  </umb-history-item>`;
167
168
  }
@@ -178,33 +179,33 @@ export let UmbDocumentInfoWorkspaceViewElement = class UmbDocumentInfoWorkspaceV
178
179
  #renderTag(type) {
179
180
  switch (type) {
180
181
  case 'Publish':
181
- return html `<uui-tag look="primary" color="positive" label="Publish">Publish</uui-tag>`;
182
+ return html `<uui-tag look="primary" color="positive" label=${this.localize.term('content_publish')}><umb-localize key="content_publish"></umb-localize></uui-tag>`;
182
183
  case 'Unpublish':
183
- return html `<uui-tag look="primary" color="warning" label="Unpublish">Unpublish</uui-tag>`;
184
+ return html `<uui-tag look="primary" color="warning" label=${this.localize.term('content_unpublish')}><umb-localize key="content_unpublish"></umb-localize></uui-tag>`;
184
185
  case 'Save':
185
- return html `<uui-tag look="primary" label="Save">Save</uui-tag>`;
186
+ return html `<uui-tag look="primary" label=${this.localize.term('auditTrails_smallSave')}><umb-localize key="auditTrails_smallSave"></umb-localize></uui-tag>`;
186
187
  case 'ContentVersionEnableCleanup':
187
- return html `<uui-tag look="secondary" label="Content Version Enable Cleanup">Save</uui-tag>`;
188
+ return html `<uui-tag look="secondary" label=${this.localize.term('contentTypeEditor_historyCleanupEnableCleanup')}><umb-localize key="contentTypeEditor_historyCleanupEnableCleanup"></umb-localize></uui-tag>`;
188
189
  case 'ContentVersionPreventCleanup':
189
- return html `<uui-tag look="secondary" label="Content Version Prevent Cleanup">Save</uui-tag>`;
190
+ return html `<uui-tag look="secondary" label=${this.localize.term('contentTypeEditor_historyCleanupPreventCleanup')}><umb-localize key="contentTypeEditor_historyCleanupPreventCleanup"></umb-localize></uui-tag>`;
190
191
  default:
191
- return 'Could not detech log type';
192
+ return 'Could not detect log type';
192
193
  }
193
194
  }
194
195
  #renderTagDescription(type, params) {
195
196
  switch (type) {
196
197
  case 'Publish':
197
- return html `Content published`;
198
+ return this.localize.term('auditTrails_publish');
198
199
  case 'Unpublish':
199
- return html `Content unpublished`;
200
+ return this.localize.term('auditTrails_unpublish');
200
201
  case 'Save':
201
- return html `Content saved`;
202
+ return this.localize.term('auditTrails_save');
202
203
  case 'ContentVersionEnableCleanup':
203
- return html `Cleanup enabled for version: ${params}`;
204
+ return this.localize.term('auditTrails_contentversionenablecleanup', [params?.nodeId]);
204
205
  case 'ContentVersionPreventCleanup':
205
- return html `Cleanup disabled for version: ${params}`;
206
+ return this.localize.term('auditTrails_contentversionpreventcleanup', [params?.nodeId]);
206
207
  default:
207
- return 'Could not detech log type';
208
+ return 'Could not detect log type';
208
209
  }
209
210
  }
210
211
  static { this.styles = [
@@ -10,4 +10,8 @@ export declare const manifests: (import("../../libs/extension-api/types.js").Man
10
10
  api: typeof import("../core/index.js").UmbTrashEntityAction;
11
11
  entityTypes: string[];
12
12
  };
13
+ conditions: {
14
+ alias: string;
15
+ match: string;
16
+ }[];
13
17
  })[];
@@ -19,7 +19,7 @@ export let UmbLogViewerSavedSearchesOverviewElement = class UmbLogViewerSavedSea
19
19
  <uui-menu-item
20
20
  label="${searchListItem.name ?? ''}"
21
21
  title="${searchListItem.name ?? ''}"
22
- href=${`section/settings/workspace/logviewer/search/?lq=${encodeURIComponent(searchListItem.query ?? '')}`}>
22
+ href=${`section/settings/workspace/logviewer/view/search/?lq=${encodeURIComponent(searchListItem.query ?? '')}`}>
23
23
  <uui-icon slot="icon" name="umb:search"></uui-icon>${searchListItem.name}
24
24
  </uui-menu-item>
25
25
  </li>`;
@@ -1 +1,2 @@
1
- export declare const manifests: (import("../core/index.js").ManifestSectionSidebarApp | import("../core/index.js").ManifestCollectionView | import("../core/index.js").ManifestDashboardCollection | import("../core/index.js").ManifestEntityAction | import("../core/index.js").ManifestEntityBulkAction | import("../core/index.js").ManifestMenu | import("../core/index.js").ManifestMenuItem | import("../core/index.js").ManifestRepository | import("../core/index.js").ManifestSection | import("../core/index.js").ManifestStore | import("../core/index.js").ManifestTree | import("../core/index.js").ManifestTreeItem | import("../core/index.js").ManifestTreeStore | import("../core/index.js").ManifestWorkspace | import("../core/index.js").ManifestWorkspaceAction | import("../core/index.js").ManifestWorkspaceEditorView | import("../core/index.js").ManifestWorkspaceViewCollection)[];
1
+ import './media/components/index.js';
2
+ export declare const manifests: (import("../core/index.js").ManifestSectionSidebarApp | import("../core/index.js").ManifestCollectionView | import("../core/index.js").ManifestDashboardCollection | import("../core/index.js").ManifestEntityAction | import("../core/index.js").ManifestEntityBulkAction | import("../core/index.js").ManifestItemStore | import("../core/index.js").ManifestMenu | import("../core/index.js").ManifestMenuItem | import("../core/index.js").ManifestRepository | import("../core/index.js").ManifestSection | import("../core/index.js").ManifestStore | import("../core/index.js").ManifestTree | import("../core/index.js").ManifestTreeItem | import("../core/index.js").ManifestTreeStore | import("../core/index.js").ManifestWorkspace | import("../core/index.js").ManifestWorkspaceAction | import("../core/index.js").ManifestWorkspaceEditorView | import("../core/index.js").ManifestWorkspaceViewCollection | import("../core/index.js").ManifestUserPermission)[];
@@ -2,4 +2,5 @@ import { manifests as mediaSectionManifests } from './section.manifests.js';
2
2
  import { manifests as mediaMenuManifests } from './menu.manifests.js';
3
3
  import { manifests as mediaManifests } from './media/manifests.js';
4
4
  import { manifests as mediaTypesManifests } from './media-types/manifests.js';
5
+ import './media/components/index.js';
5
6
  export const manifests = [...mediaSectionManifests, ...mediaMenuManifests, ...mediaManifests, ...mediaTypesManifests];
@@ -1 +1,2 @@
1
1
  import './input-media/input-media.element.js';
2
+ export * from './input-media/input-media.element.js';
@@ -1 +1,2 @@
1
1
  import './input-media/input-media.element.js';
2
+ export * from './input-media/input-media.element.js';
@@ -0,0 +1,6 @@
1
+ import { UmbPickerInputContext } from '../../../../core/picker-input/index.js';
2
+ import { UmbControllerHostElement } from '../../../../../libs/controller-api/index.js';
3
+ import { MediaItemResponseModel } from '../../../../../external/backend-api/index.js';
4
+ export declare class UmbMediaPickerContext extends UmbPickerInputContext<MediaItemResponseModel> {
5
+ constructor(host: UmbControllerHostElement);
6
+ }
@@ -0,0 +1,7 @@
1
+ import { UmbPickerInputContext } from '../../../../core/picker-input/index.js';
2
+ import { UMB_MEDIA_TREE_PICKER_MODAL } from '../../../../core/modal/index.js';
3
+ export class UmbMediaPickerContext extends UmbPickerInputContext {
4
+ constructor(host) {
5
+ super(host, 'Umb.Repository.Media', UMB_MEDIA_TREE_PICKER_MODAL);
6
+ }
7
+ }
@@ -1,13 +1,15 @@
1
1
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
2
2
  declare const UmbInputMediaElement_base: (new (...args: any[]) => import("../../../../../external/uui/index.js").FormControlMixinInterface) & typeof UmbLitElement;
3
3
  export declare class UmbInputMediaElement extends UmbInputMediaElement_base {
4
+ #private;
4
5
  /**
5
6
  * This is a minimum amount of selected items in this input.
6
7
  * @type {number}
7
8
  * @attr
8
- * @default undefined
9
+ * @default 0
9
10
  */
10
- min?: number;
11
+ get min(): number;
12
+ set min(value: number);
11
13
  /**
12
14
  * Min validation message.
13
15
  * @type {boolean}
@@ -19,9 +21,10 @@ export declare class UmbInputMediaElement extends UmbInputMediaElement_base {
19
21
  * This is a maximum amount of selected items in this input.
20
22
  * @type {number}
21
23
  * @attr
22
- * @default undefined
24
+ * @default Infinity
23
25
  */
24
- max?: number;
26
+ get max(): number;
27
+ set max(value: number);
25
28
  /**
26
29
  * Max validation message.
27
30
  * @type {boolean}
@@ -29,24 +32,13 @@ export declare class UmbInputMediaElement extends UmbInputMediaElement_base {
29
32
  * @default
30
33
  */
31
34
  maxMessage: string;
32
- private _selectedIds;
33
35
  get selectedIds(): Array<string>;
34
36
  set selectedIds(ids: Array<string>);
35
37
  set value(idsString: string);
36
38
  private _items?;
37
- private _modalContext?;
38
- private _pickedItemsObserver?;
39
- private _repository;
40
39
  constructor();
41
- connectedCallback(): void;
42
40
  protected getFormElement(): undefined;
43
- private _observePickedMedias;
44
- private _openPicker;
45
- private _removeItem;
46
- private _setSelection;
47
41
  render(): import("lit-html").TemplateResult<1>;
48
- private _renderButton;
49
- private _renderItem;
50
42
  static styles: import("@lit/reactive-element/css-tag.js").CSSResult[];
51
43
  }
52
44
  export default UmbInputMediaElement;
@@ -4,25 +4,46 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { UmbMediaRepository } from '../../repository/media.repository.js';
8
- import { css, html, nothing, customElement, property, state, ifDefined } from '../../../../../external/lit/index.js';
7
+ import { UmbMediaPickerContext } from './input-media.context.js';
8
+ import { css, html, customElement, property, state, ifDefined } from '../../../../../external/lit/index.js';
9
9
  import { FormControlMixin } from '../../../../../external/uui/index.js';
10
- import { UMB_MODAL_MANAGER_CONTEXT_TOKEN, UMB_CONFIRM_MODAL, UMB_MEDIA_TREE_PICKER_MODAL, } from '../../../../core/modal/index.js';
11
10
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
12
11
  export let UmbInputMediaElement = class UmbInputMediaElement extends FormControlMixin(UmbLitElement) {
12
+ /**
13
+ * This is a minimum amount of selected items in this input.
14
+ * @type {number}
15
+ * @attr
16
+ * @default 0
17
+ */
18
+ get min() {
19
+ return this.#pickerContext.min;
20
+ }
21
+ set min(value) {
22
+ this.#pickerContext.min = value;
23
+ }
24
+ /**
25
+ * This is a maximum amount of selected items in this input.
26
+ * @type {number}
27
+ * @attr
28
+ * @default Infinity
29
+ */
30
+ get max() {
31
+ return this.#pickerContext.max;
32
+ }
33
+ set max(value) {
34
+ this.#pickerContext.max = value;
35
+ }
13
36
  get selectedIds() {
14
- return this._selectedIds;
37
+ return this.#pickerContext.getSelection();
15
38
  }
16
39
  set selectedIds(ids) {
17
- this._selectedIds = ids;
18
- super.value = ids.join(',');
19
- this._observePickedMedias();
40
+ this.#pickerContext.setSelection(ids);
20
41
  }
21
42
  set value(idsString) {
22
- if (idsString !== this._value) {
23
- this.selectedIds = idsString.split(/[ ,]+/);
24
- }
43
+ // Its with full purpose we don't call super.value, as thats being handled by the observation of the context selection.
44
+ this.selectedIds = idsString.split(/[ ,]+/);
25
45
  }
46
+ #pickerContext;
26
47
  constructor() {
27
48
  super();
28
49
  /**
@@ -39,89 +60,45 @@ export let UmbInputMediaElement = class UmbInputMediaElement extends FormControl
39
60
  * @default
40
61
  */
41
62
  this.maxMessage = 'This field exceeds the allowed amount of items';
42
- // TODO: do we need both selectedIds and value? If we just use value we follow the same pattern as native form controls.
43
- this._selectedIds = [];
44
- this._repository = new UmbMediaRepository(this);
45
- this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && this._selectedIds.length < this.min);
46
- this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && this._selectedIds.length > this.max);
47
- this.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
48
- this._modalContext = instance;
49
- });
50
- }
51
- connectedCallback() {
52
- super.connectedCallback();
53
- this._observePickedMedias();
63
+ this.#pickerContext = new UmbMediaPickerContext(this);
64
+ this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && this.#pickerContext.getSelection().length < this.min);
65
+ this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && this.#pickerContext.getSelection().length > this.max);
66
+ this.observe(this.#pickerContext.selection, (selection) => (super.value = selection.join(',')));
67
+ this.observe(this.#pickerContext.selectedItems, (selectedItems) => (this._items = selectedItems));
54
68
  }
55
69
  getFormElement() {
56
70
  return undefined;
57
71
  }
58
- async _observePickedMedias() {
59
- this._pickedItemsObserver?.destroy();
60
- // TODO: consider changing this to the list data endpoint when it is available
61
- const { asObservable } = await this._repository.requestItemsLegacy(this._selectedIds);
62
- if (!asObservable)
63
- return;
64
- this._pickedItemsObserver = this.observe(asObservable(), (items) => {
65
- this._items = items;
66
- });
67
- }
68
- _openPicker() {
69
- // We send a shallow copy(good enough as its just an array of ids) of our this._selectedIds, as we don't want the modal to manipulate our data:
70
- const modalContext = this._modalContext?.open(UMB_MEDIA_TREE_PICKER_MODAL, {
71
- multiple: this.max === 1 ? false : true,
72
- selection: [...this._selectedIds],
73
- });
74
- modalContext?.onSubmit().then(({ selection }) => {
75
- this._setSelection(selection);
76
- });
77
- }
78
- _removeItem(item) {
79
- const modalContext = this._modalContext?.open(UMB_CONFIRM_MODAL, {
80
- color: 'danger',
81
- headline: `Remove ${item.name}?`,
82
- content: 'Are you sure you want to remove this item',
83
- confirmLabel: 'Remove',
84
- });
85
- modalContext?.onSubmit().then(() => {
86
- const newSelection = this._selectedIds.filter((value) => value !== item.id);
87
- this._setSelection(newSelection);
88
- });
89
- }
90
- _setSelection(newSelection) {
91
- this.selectedIds = newSelection;
92
- this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
93
- }
94
72
  render() {
95
- return html ` ${this._items?.map((item) => this._renderItem(item))} ${this._renderButton()} `;
73
+ return html ` ${this._items?.map((item) => this.#renderItem(item))} ${this.#renderButton()} `;
96
74
  }
97
- _renderButton() {
75
+ #renderButton() {
98
76
  if (this._items && this.max && this._items.length >= this.max)
99
77
  return;
100
- return html `<uui-button id="add-button" look="placeholder" @click=${this._openPicker} label="open">
101
- <uui-icon name="umb:add"></uui-icon>
102
- Add
103
- </uui-button>`;
78
+ return html `
79
+ <uui-button id="add-button" look="placeholder" @click=${() => this.#pickerContext.openPicker()} label="open">
80
+ <uui-icon name="umb:add"></uui-icon>
81
+ Add
82
+ </uui-button>
83
+ `;
104
84
  }
105
- _renderItem(item) {
106
- // TODO: remove when we have a way to handle trashed items
107
- const tempItem = item;
85
+ #renderItem(item) {
108
86
  return html `
109
87
  <uui-card-media
110
88
  name=${ifDefined(item.name === null ? undefined : item.name)}
111
89
  detail=${ifDefined(item.id)}
112
90
  file-ext="jpg">
113
- ${tempItem.isTrashed ? html ` <uui-tag size="s" slot="tag" color="danger">Trashed</uui-tag> ` : nothing}
91
+ <!-- <uui-tag size="s" slot="tag" color="danger">Trashed</uui-tag> -->
114
92
  <uui-action-bar slot="actions">
115
93
  <uui-button label="Copy media">
116
94
  <uui-icon name="umb:documents"></uui-icon>
117
95
  </uui-button>
118
- <uui-button @click=${() => this._removeItem(item)} label="Remove media ${item.name}">
96
+ <uui-button @click=${() => this.#pickerContext.requestRemoveItem(item.id)} label="Remove media ${item.name}">
119
97
  <uui-icon name="umb:trash"></uui-icon>
120
98
  </uui-button>
121
99
  </uui-action-bar>
122
100
  </uui-card-media>
123
101
  `;
124
- //TODO: <uui-button-inline-create vertical></uui-button-inline-create>
125
102
  }
126
103
  static { this.styles = [
127
104
  css `
@@ -130,6 +107,7 @@ export let UmbInputMediaElement = class UmbInputMediaElement extends FormControl
130
107
  gap: var(--uui-size-space-3);
131
108
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
132
109
  }
110
+
133
111
  #add-button {
134
112
  text-align: center;
135
113
  height: 160px;
@@ -144,13 +122,13 @@ export let UmbInputMediaElement = class UmbInputMediaElement extends FormControl
144
122
  };
145
123
  __decorate([
146
124
  property({ type: Number })
147
- ], UmbInputMediaElement.prototype, "min", void 0);
125
+ ], UmbInputMediaElement.prototype, "min", null);
148
126
  __decorate([
149
127
  property({ type: String, attribute: 'min-message' })
150
128
  ], UmbInputMediaElement.prototype, "minMessage", void 0);
151
129
  __decorate([
152
130
  property({ type: Number })
153
- ], UmbInputMediaElement.prototype, "max", void 0);
131
+ ], UmbInputMediaElement.prototype, "max", null);
154
132
  __decorate([
155
133
  property({ type: String, attribute: 'min-message' })
156
134
  ], UmbInputMediaElement.prototype, "maxMessage", void 0);
@@ -1,4 +1,5 @@
1
1
  import { ContentTreeItemResponseModel } from '../../../external/backend-api/index.js';
2
+ export * from './components/index.js';
2
3
  export interface ContentProperty {
3
4
  alias: string;
4
5
  label: string;
@@ -15,4 +16,5 @@ export interface MediaDetails extends ContentTreeItemResponseModel {
15
16
  properties: Array<ContentProperty>;
16
17
  data: Array<ContentPropertyData>;
17
18
  variants: Array<any>;
19
+ icon?: string;
18
20
  }
@@ -1 +1 @@
1
- export {};
1
+ export * from './components/index.js';
@@ -1 +1 @@
1
- export declare const manifests: (import("../../core/index.js").ManifestCollectionView | import("../../core/index.js").ManifestEntityAction | import("../../core/index.js").ManifestEntityBulkAction | import("../../core/index.js").ManifestMenuItem | import("../../core/index.js").ManifestRepository | import("../../core/index.js").ManifestStore | import("../../core/index.js").ManifestTree | import("../../core/index.js").ManifestTreeItem | import("../../core/index.js").ManifestTreeStore | import("../../core/index.js").ManifestWorkspace | import("../../core/index.js").ManifestWorkspaceAction | import("../../core/index.js").ManifestWorkspaceEditorView | import("../../core/index.js").ManifestWorkspaceViewCollection)[];
1
+ export declare const manifests: (import("../../core/index.js").ManifestCollectionView | import("../../core/index.js").ManifestEntityAction | import("../../core/index.js").ManifestEntityBulkAction | import("../../core/index.js").ManifestItemStore | import("../../core/index.js").ManifestMenuItem | import("../../core/index.js").ManifestRepository | import("../../core/index.js").ManifestStore | import("../../core/index.js").ManifestTree | import("../../core/index.js").ManifestTreeItem | import("../../core/index.js").ManifestTreeStore | import("../../core/index.js").ManifestWorkspace | import("../../core/index.js").ManifestWorkspaceAction | import("../../core/index.js").ManifestWorkspaceEditorView | import("../../core/index.js").ManifestWorkspaceViewCollection | import("../../core/index.js").ManifestUserPermission)[];
@@ -5,6 +5,7 @@ import { manifests as treeManifests } from './tree/manifests.js';
5
5
  import { manifests as workspaceManifests } from './workspace/manifests.js';
6
6
  import { manifests as entityActionsManifests } from './entity-actions/manifests.js';
7
7
  import { manifests as entityBulkActionsManifests } from './entity-bulk-actions/manifests.js';
8
+ import { manifests as userPermissionManifests } from './user-permissions/manifests.js';
8
9
  export const manifests = [
9
10
  ...collectionViewManifests,
10
11
  ...repositoryManifests,
@@ -13,4 +14,5 @@ export const manifests = [
13
14
  ...workspaceManifests,
14
15
  ...entityActionsManifests,
15
16
  ...entityBulkActionsManifests,
17
+ ...userPermissionManifests,
16
18
  ];
@@ -1,5 +1,6 @@
1
- import type { ManifestStore, ManifestTreeStore, ManifestRepository } from '../../../core/extension-registry/index.js';
1
+ import type { ManifestStore, ManifestTreeStore, ManifestRepository, ManifestItemStore } from '../../../core/extension-registry/index.js';
2
2
  export declare const MEDIA_REPOSITORY_ALIAS = "Umb.Repository.Media";
3
3
  export declare const MEDIA_STORE_ALIAS = "Umb.Store.Media";
4
4
  export declare const MEDIA_TREE_STORE_ALIAS = "Umb.Store.MediaTree";
5
- export declare const manifests: (ManifestRepository | ManifestStore | ManifestTreeStore)[];
5
+ export declare const MEDIA_ITEM_STORE_ALIAS = "Umb.Store.MediaItem";
6
+ export declare const manifests: (ManifestItemStore | ManifestRepository | ManifestStore | ManifestTreeStore)[];
@@ -1,3 +1,4 @@
1
+ import { UmbMediaItemStore } from './media-item.store.js';
1
2
  import { UmbMediaRepository } from './media.repository.js';
2
3
  import { UmbMediaStore } from './media.store.js';
3
4
  import { UmbMediaTreeStore } from './media.tree.store.js';
@@ -10,6 +11,7 @@ const repository = {
10
11
  };
11
12
  export const MEDIA_STORE_ALIAS = 'Umb.Store.Media';
12
13
  export const MEDIA_TREE_STORE_ALIAS = 'Umb.Store.MediaTree';
14
+ export const MEDIA_ITEM_STORE_ALIAS = 'Umb.Store.MediaItem';
13
15
  const store = {
14
16
  type: 'store',
15
17
  alias: MEDIA_STORE_ALIAS,
@@ -22,4 +24,10 @@ const treeStore = {
22
24
  name: 'Media Tree Store',
23
25
  class: UmbMediaTreeStore,
24
26
  };
25
- export const manifests = [store, treeStore, repository];
27
+ const itemStore = {
28
+ type: 'itemStore',
29
+ alias: MEDIA_ITEM_STORE_ALIAS,
30
+ name: 'Media Item Store',
31
+ class: UmbMediaItemStore,
32
+ };
33
+ export const manifests = [store, treeStore, itemStore, repository];
@@ -0,0 +1,20 @@
1
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
2
+ import { UmbControllerHostElement } from '../../../../libs/controller-api/index.js';
3
+ import { UmbItemStore, UmbStoreBase } from '../../../core/store/index.js';
4
+ import { MediaItemResponseModel } from '../../../../external/backend-api/index.js';
5
+ /**
6
+ * @export
7
+ * @class UmbMediaItemStore
8
+ * @extends {UmbStoreBase}
9
+ * @description - Data Store for Media items
10
+ */
11
+ export declare class UmbMediaItemStore extends UmbStoreBase<MediaItemResponseModel> implements UmbItemStore<MediaItemResponseModel> {
12
+ /**
13
+ * Creates an instance of UmbMediaItemStore.
14
+ * @param {UmbControllerHostElement} host
15
+ * @memberof UmbMediaItemStore
16
+ */
17
+ constructor(host: UmbControllerHostElement);
18
+ items(ids: Array<string>): import("rxjs").Observable<MediaItemResponseModel[]>;
19
+ }
20
+ export declare const UMB_Media_ITEM_STORE_CONTEXT_TOKEN: UmbContextToken<UmbMediaItemStore, UmbMediaItemStore>;
@@ -0,0 +1,23 @@
1
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
2
+ import { UmbStoreBase } from '../../../core/store/index.js';
3
+ import { UmbArrayState } from '../../../../libs/observable-api/index.js';
4
+ /**
5
+ * @export
6
+ * @class UmbMediaItemStore
7
+ * @extends {UmbStoreBase}
8
+ * @description - Data Store for Media items
9
+ */
10
+ export class UmbMediaItemStore extends UmbStoreBase {
11
+ /**
12
+ * Creates an instance of UmbMediaItemStore.
13
+ * @param {UmbControllerHostElement} host
14
+ * @memberof UmbMediaItemStore
15
+ */
16
+ constructor(host) {
17
+ super(host, UMB_Media_ITEM_STORE_CONTEXT_TOKEN.toString(), new UmbArrayState([], (x) => x.id));
18
+ }
19
+ items(ids) {
20
+ return this._data.asObservablePart((items) => items.filter((item) => ids.includes(item.id ?? '')));
21
+ }
22
+ }
23
+ export const UMB_Media_ITEM_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMediaItemStore');
@@ -33,6 +33,12 @@ export declare class UmbMediaRepository implements UmbTreeRepository<EntityTreeI
33
33
  rootTreeItems(): Promise<import("rxjs").Observable<EntityTreeItemResponseModel[]>>;
34
34
  treeItemsOf(parentId: string | null): Promise<import("rxjs").Observable<EntityTreeItemResponseModel[]>>;
35
35
  itemsLegacy(ids: Array<string>): Promise<import("rxjs").Observable<EntityTreeItemResponseModel[]>>;
36
+ requestItems(ids: Array<string>): Promise<{
37
+ data: import("../../../../external/backend-api/index.js").MediaItemResponseModel[] | undefined;
38
+ error: import("../../../../external/backend-api/index.js").ApiError | import("../../../../external/backend-api/index.js").CancelError | undefined;
39
+ asObservable: () => import("rxjs").Observable<import("../../../../external/backend-api/index.js").MediaItemResponseModel[]>;
40
+ }>;
41
+ items(ids: Array<string>): Promise<import("rxjs").Observable<import("../../../../external/backend-api/index.js").MediaItemResponseModel[]>>;
36
42
  createScaffold(parentId: string | null): Promise<{
37
43
  data: {
38
44
  id: string;
@@ -2,6 +2,7 @@ import { UmbMediaTreeServerDataSource } from './sources/media.tree.server.data.j
2
2
  import { UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN } from './media.tree.store.js';
3
3
  import { UMB_MEDIA_STORE_CONTEXT_TOKEN } from './media.store.js';
4
4
  import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.data.js';
5
+ import { UmbMediaItemServerDataSource } from './sources/media-item.server.data.js';
5
6
  import { UmbContextConsumerController } from '../../../../libs/context-api/index.js';
6
7
  import { UMB_NOTIFICATION_CONTEXT_TOKEN } from '../../../core/notification/index.js';
7
8
  export class UmbMediaRepository {
@@ -11,12 +12,15 @@ export class UmbMediaRepository {
11
12
  #treeStore;
12
13
  #detailDataSource;
13
14
  #store;
15
+ #itemSource;
16
+ #itemStore;
14
17
  #notificationContext;
15
18
  constructor(host) {
16
19
  this.#host = host;
17
20
  // TODO: figure out how spin up get the correct data source
18
21
  this.#treeSource = new UmbMediaTreeServerDataSource(this.#host);
19
22
  this.#detailDataSource = new UmbMediaDetailServerDataSource(this.#host);
23
+ this.#itemSource = new UmbMediaItemServerDataSource(this.#host);
20
24
  this.#init = Promise.all([
21
25
  new UmbContextConsumerController(this.#host, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN, (instance) => {
22
26
  this.#treeStore = instance;
@@ -24,6 +28,9 @@ export class UmbMediaRepository {
24
28
  new UmbContextConsumerController(this.#host, UMB_MEDIA_STORE_CONTEXT_TOKEN, (instance) => {
25
29
  this.#store = instance;
26
30
  }).asPromise(),
31
+ new UmbContextConsumerController(this.#host, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN, (instance) => {
32
+ this.#itemStore = instance;
33
+ }).asPromise(),
27
34
  new UmbContextConsumerController(this.#host, UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => {
28
35
  this.#notificationContext = instance;
29
36
  }).asPromise(),
@@ -79,6 +86,21 @@ export class UmbMediaRepository {
79
86
  await this.#init;
80
87
  return this.#treeStore.items(ids);
81
88
  }
89
+ // ITEMS:
90
+ async requestItems(ids) {
91
+ if (!ids)
92
+ throw new Error('Keys are missing');
93
+ await this.#init;
94
+ const { data, error } = await this.#itemSource.getItems(ids);
95
+ if (data) {
96
+ this.#itemStore?.appendItems(data);
97
+ }
98
+ return { data, error, asObservable: () => this.#itemStore.items(ids) };
99
+ }
100
+ async items(ids) {
101
+ await this.#init;
102
+ return this.#itemStore.items(ids);
103
+ }
82
104
  // DETAILS:
83
105
  async createScaffold(parentId) {
84
106
  if (parentId === undefined)
@@ -0,0 +1,24 @@
1
+ import type { UmbItemDataSource } from '../../../../../shared/repository/index.js';
2
+ import { MediaItemResponseModel } from '../../../../../external/backend-api/index.js';
3
+ import { UmbControllerHostElement } from '../../../../../libs/controller-api/index.js';
4
+ /**
5
+ * A data source for Media items that fetches data from the server
6
+ * @export
7
+ * @class UmbMediaItemServerDataSource
8
+ * @implements {MediaItemDataSource}
9
+ */
10
+ export declare class UmbMediaItemServerDataSource implements UmbItemDataSource<MediaItemResponseModel> {
11
+ #private;
12
+ /**
13
+ * Creates an instance of UmbMediaItemServerDataSource.
14
+ * @param {UmbControllerHostElement} host
15
+ * @memberof UmbMediaItemServerDataSource
16
+ */
17
+ constructor(host: UmbControllerHostElement);
18
+ /**
19
+ * Fetches the items for the given ids from the server
20
+ * @param {Array<string>} ids
21
+ * @memberof UmbMediaItemServerDataSource
22
+ */
23
+ getItems(ids: Array<string>): Promise<import("../../../../../shared/repository/index.js").DataSourceResponse<MediaItemResponseModel[]>>;
24
+ }