@umbraco-cms/backoffice 16.0.0 → 16.1.0-rc

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 (568) hide show
  1. package/dist-cms/apps/app/app-auth.controller.js +1 -0
  2. package/dist-cms/apps/backoffice/backoffice.element.d.ts +2 -0
  3. package/dist-cms/apps/backoffice/backoffice.element.js +12 -10
  4. package/dist-cms/assets/lang/da.js +21 -0
  5. package/dist-cms/assets/lang/da.ts +22 -0
  6. package/dist-cms/assets/lang/de.js +24 -0
  7. package/dist-cms/assets/lang/de.ts +26 -0
  8. package/dist-cms/assets/lang/en.js +11 -0
  9. package/dist-cms/assets/lang/en.ts +12 -0
  10. package/dist-cms/assets/lang/pt-br.js +2 -256
  11. package/dist-cms/assets/lang/pt-br.ts +2 -258
  12. package/dist-cms/assets/lang/pt.js +2605 -1
  13. package/dist-cms/assets/lang/pt.ts +2822 -1
  14. package/dist-cms/custom-elements.json +201 -98
  15. package/dist-cms/external/rxjs/index.d.ts +1 -1
  16. package/dist-cms/external/rxjs/index.js +3 -3
  17. package/dist-cms/external/tiptap/extensions/tiptap-html-global-attributes.extension.d.ts +5 -0
  18. package/dist-cms/external/tiptap/extensions/tiptap-span.extension.d.ts +2 -0
  19. package/dist-cms/external/tiptap/index.js +19 -19
  20. package/dist-cms/external/uui/index.js +332 -318
  21. package/dist-cms/libs/extension-api/controller/server-extension-registrator.controller.js +1 -1
  22. package/dist-cms/libs/extension-api/types/manifest-base.interface.d.ts +1 -1
  23. package/dist-cms/packages/block/block/context/block-entry.context.d.ts +3 -0
  24. package/dist-cms/packages/block/block/context/block-entry.context.js +9 -0
  25. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.d.ts +1 -0
  26. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.js +14 -6
  27. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.d.ts +1 -0
  28. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +16 -5
  29. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.d.ts +1 -0
  30. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.js +12 -1
  31. package/dist-cms/packages/block/modals/manifest-viewer/manifest-viewer-modal.element.js +6 -0
  32. package/dist-cms/packages/content/content/workspace/views/edit/content-editor.element.js +12 -10
  33. package/dist-cms/packages/content/content-type/modals/composition-picker/composition-picker-modal.element.js +6 -5
  34. package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-server-data-source-base.d.ts +1 -1
  35. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +1 -1
  36. package/dist-cms/packages/core/auth/auth-flow.d.ts +2 -2
  37. package/dist-cms/packages/core/auth/auth-flow.js +7 -9
  38. package/dist-cms/packages/core/auth/auth.context.d.ts +9 -7
  39. package/dist-cms/packages/core/auth/auth.context.js +14 -7
  40. package/dist-cms/packages/core/backend-api/sdk.gen.d.ts +406 -406
  41. package/dist-cms/packages/core/backend-api/sdk.gen.js +57 -57
  42. package/dist-cms/packages/core/backend-api/types.gen.d.ts +6 -2
  43. package/dist-cms/packages/core/collection/action/create/collection-create-action.element.d.ts +1 -2
  44. package/dist-cms/packages/core/collection/action/create/collection-create-action.element.js +17 -13
  45. package/dist-cms/packages/core/collection/components/pagination/collection-pagination.element.js +4 -0
  46. package/dist-cms/packages/core/components/dropdown/dropdown.element.d.ts +2 -3
  47. package/dist-cms/packages/core/components/dropdown/dropdown.element.js +30 -18
  48. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.d.ts +1 -1
  49. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.js +33 -23
  50. package/dist-cms/packages/core/components/input-toggle/input-toggle.element.d.ts +0 -1
  51. package/dist-cms/packages/core/components/input-toggle/input-toggle.element.js +1 -8
  52. package/dist-cms/packages/core/components/table/table.element.js +14 -12
  53. package/dist-cms/packages/core/entity/constants.d.ts +2 -0
  54. package/dist-cms/packages/core/entity/constants.js +2 -0
  55. package/dist-cms/packages/core/entity/entity-type/constants.d.ts +1 -0
  56. package/dist-cms/packages/core/entity/entity-type/constants.js +1 -0
  57. package/dist-cms/packages/core/entity/entity-type/entity-type.condition.d.ts +9 -0
  58. package/dist-cms/packages/core/entity/entity-type/entity-type.condition.js +23 -0
  59. package/dist-cms/packages/core/entity/entity-type/manifests.js +9 -0
  60. package/dist-cms/packages/core/entity/entity-type/types.d.ts +11 -0
  61. package/dist-cms/packages/core/entity/entity-type/types.js +1 -0
  62. package/dist-cms/packages/core/entity/entity-unique/constants.d.ts +1 -0
  63. package/dist-cms/packages/core/entity/entity-unique/constants.js +1 -0
  64. package/dist-cms/packages/core/entity/entity-unique/entity-unique.condition.d.ts +9 -0
  65. package/dist-cms/packages/core/entity/entity-unique/entity-unique.condition.js +23 -0
  66. package/dist-cms/packages/core/entity/entity-unique/manifests.d.ts +1 -0
  67. package/dist-cms/packages/core/entity/entity-unique/manifests.js +9 -0
  68. package/dist-cms/packages/core/entity/entity-unique/types.d.ts +12 -0
  69. package/dist-cms/packages/core/entity/entity-unique/types.js +1 -0
  70. package/dist-cms/packages/core/entity/manifests.d.ts +1 -0
  71. package/dist-cms/packages/core/entity/manifests.js +3 -0
  72. package/dist-cms/packages/core/entity/types.d.ts +3 -1
  73. package/dist-cms/packages/core/entity-action/global-components/entity-actions-dropdown/entity-actions-dropdown.element.d.ts +15 -0
  74. package/dist-cms/packages/core/entity-action/global-components/entity-actions-dropdown/entity-actions-dropdown.element.js +87 -0
  75. package/dist-cms/packages/core/entity-action/global-components/index.d.ts +1 -0
  76. package/dist-cms/packages/core/entity-action/global-components/index.js +1 -0
  77. package/dist-cms/packages/core/entity-item/item-data-api-get-request-controller/item-data-api-get-request.controller.d.ts +1 -1
  78. package/dist-cms/packages/core/event/closed.event.d.ts +4 -0
  79. package/dist-cms/packages/core/event/closed.event.js +7 -0
  80. package/dist-cms/packages/core/event/index.d.ts +2 -0
  81. package/dist-cms/packages/core/event/index.js +2 -0
  82. package/dist-cms/packages/core/event/opened.event.d.ts +4 -0
  83. package/dist-cms/packages/core/event/opened.event.js +7 -0
  84. package/dist-cms/packages/core/extension-registry/components/extension-slot/extension-slot.element.d.ts +3 -3
  85. package/dist-cms/packages/core/extension-registry/components/extension-slot/extension-slot.element.js +9 -9
  86. package/dist-cms/packages/core/http-client/index.d.ts +1 -0
  87. package/dist-cms/packages/core/icon-registry/icon-dictionary.json +1 -2
  88. package/dist-cms/packages/core/icon-registry/icons/icon-next.d.ts +1 -1
  89. package/dist-cms/packages/core/icon-registry/icons/icon-next.js +1 -1
  90. package/dist-cms/packages/core/icon-registry/icons.d.ts +2 -2
  91. package/dist-cms/packages/core/icon-registry/icons.js +3098 -2394
  92. package/dist-cms/packages/core/manifests.js +2 -0
  93. package/dist-cms/packages/core/menu/section-sidebar-menu/section-sidebar-menu.element.js +5 -1
  94. package/dist-cms/packages/core/object-type/object-type.repository.d.ts +1 -1
  95. package/dist-cms/packages/core/openapi-ts.config.js +3 -1
  96. package/dist-cms/packages/core/package.json +2 -2
  97. package/dist-cms/packages/core/property/components/unsupported-property/utils.js +1 -1
  98. package/dist-cms/packages/core/recycle-bin/recycle-bin-repository-base.d.ts +2 -4
  99. package/dist-cms/packages/core/recycle-bin/recycle-bin-repository-base.js +2 -13
  100. package/dist-cms/packages/core/repository/detail/detail-data-source.interface.d.ts +2 -1
  101. package/dist-cms/packages/core/repository/detail/detail-repository-base.d.ts +6 -5
  102. package/dist-cms/packages/core/repository/detail/detail-repository-base.js +2 -2
  103. package/dist-cms/packages/core/repository/detail/read/read-detail-repository.interface.d.ts +1 -1
  104. package/dist-cms/packages/core/repository/item/item-repository-base.d.ts +3 -3
  105. package/dist-cms/packages/core/repository/item/item-repository-base.js +5 -8
  106. package/dist-cms/packages/core/repository/item/item-repository.interface.d.ts +2 -6
  107. package/dist-cms/packages/core/repository/item/item-server-data-source-base.d.ts +1 -1
  108. package/dist-cms/packages/core/repository/repository-items.manager.js +2 -0
  109. package/dist-cms/packages/core/repository/types.d.ts +7 -2
  110. package/dist-cms/packages/core/resources/api-interceptor.controller.d.ts +7 -0
  111. package/dist-cms/packages/core/resources/api-interceptor.controller.js +180 -54
  112. package/dist-cms/packages/core/resources/resource.controller.d.ts +2 -2
  113. package/dist-cms/packages/core/resources/resource.controller.js +11 -6
  114. package/dist-cms/packages/core/resources/try-execute/try-execute.controller.js +27 -13
  115. package/dist-cms/packages/core/resources/types.d.ts +2 -2
  116. package/dist-cms/packages/core/router/route/forbidden/route-forbidden.element.d.ts +17 -0
  117. package/dist-cms/packages/core/router/route/forbidden/route-forbidden.element.js +59 -0
  118. package/dist-cms/packages/core/router/route/index.d.ts +1 -0
  119. package/dist-cms/packages/core/router/route/index.js +1 -0
  120. package/dist-cms/packages/core/section/conditions/constants.d.ts +2 -1
  121. package/dist-cms/packages/core/section/conditions/constants.js +2 -1
  122. package/dist-cms/packages/core/section/conditions/manifests.js +3 -17
  123. package/dist-cms/packages/core/section/conditions/section-alias/constants.d.ts +1 -0
  124. package/dist-cms/packages/core/section/conditions/section-alias/constants.js +1 -0
  125. package/dist-cms/packages/core/section/conditions/section-alias/manifests.d.ts +1 -0
  126. package/dist-cms/packages/core/section/conditions/section-alias/manifests.js +10 -0
  127. package/dist-cms/packages/core/section/conditions/{section-alias.condition.d.ts → section-alias/section-alias.condition.d.ts} +2 -2
  128. package/dist-cms/packages/core/section/conditions/{section-alias.condition.js → section-alias/section-alias.condition.js} +2 -2
  129. package/dist-cms/packages/core/section/conditions/section-alias/types.d.ts +20 -0
  130. package/dist-cms/packages/core/section/conditions/section-alias/types.js +1 -0
  131. package/dist-cms/packages/core/section/conditions/section-user-permission/constants.d.ts +1 -0
  132. package/dist-cms/packages/core/section/conditions/section-user-permission/constants.js +1 -0
  133. package/dist-cms/packages/core/section/conditions/section-user-permission/manifests.d.ts +1 -0
  134. package/dist-cms/packages/core/section/conditions/section-user-permission/manifests.js +10 -0
  135. package/dist-cms/packages/core/section/conditions/{section-user-permission.condition.d.ts → section-user-permission/section-user-permission.condition.d.ts} +1 -1
  136. package/dist-cms/packages/core/section/conditions/section-user-permission/types.d.ts +16 -0
  137. package/dist-cms/packages/core/section/conditions/section-user-permission/types.js +1 -0
  138. package/dist-cms/packages/core/section/conditions/types.d.ts +2 -30
  139. package/dist-cms/packages/core/server-file-system/rename/rename-server-file-repository-base.d.ts +1 -1
  140. package/dist-cms/packages/core/temporary-file/config/config.repository.d.ts +2 -0
  141. package/dist-cms/packages/core/temporary-file/config/config.repository.js +2 -0
  142. package/dist-cms/packages/core/tree/components/index.d.ts +1 -0
  143. package/dist-cms/packages/core/tree/components/index.js +1 -0
  144. package/dist-cms/packages/core/tree/components/tree-load-more-button.element.d.ts +10 -0
  145. package/dist-cms/packages/core/tree/components/tree-load-more-button.element.js +36 -0
  146. package/dist-cms/packages/core/tree/data/tree-repository-base.d.ts +8 -12
  147. package/dist-cms/packages/core/tree/data/tree-repository-base.js +10 -16
  148. package/dist-cms/packages/core/tree/data/tree-repository.interface.d.ts +5 -21
  149. package/dist-cms/packages/core/tree/data/tree-server-data-source-base.d.ts +3 -3
  150. package/dist-cms/packages/core/tree/default/default-tree.element.js +1 -1
  151. package/dist-cms/packages/core/tree/folder/index.d.ts +2 -1
  152. package/dist-cms/packages/core/tree/folder/index.js +2 -1
  153. package/dist-cms/packages/core/tree/folder/workspace/folder-workspace-editor.element.d.ts +10 -0
  154. package/dist-cms/packages/core/tree/folder/workspace/folder-workspace-editor.element.js +31 -0
  155. package/dist-cms/packages/core/tree/folder/workspace/index.d.ts +2 -0
  156. package/dist-cms/packages/core/tree/folder/workspace/index.js +2 -0
  157. package/dist-cms/packages/core/tree/index.d.ts +1 -0
  158. package/dist-cms/packages/core/tree/index.js +1 -0
  159. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.d.ts +2 -1
  160. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.js +7 -4
  161. package/dist-cms/packages/core/workspace/components/workspace-action/default/workspace-action-default-kind.element.d.ts +1 -0
  162. package/dist-cms/packages/core/workspace/components/workspace-action/default/workspace-action-default-kind.element.js +24 -6
  163. package/dist-cms/packages/core/workspace/components/workspace-action-menu/workspace-action-menu.element.js +6 -1
  164. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-menu-breadcrumb/workspace-menu-breadcrumb.element.d.ts +1 -1
  165. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-menu-breadcrumb/workspace-menu-breadcrumb.element.js +5 -4
  166. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.d.ts +1 -1
  167. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.js +20 -11
  168. package/dist-cms/packages/core/workspace/components/workspace-editor/workspace-editor.element.js +6 -4
  169. package/dist-cms/packages/core/workspace/components/workspace-entity-action-menu/workspace-entity-action-menu.element.d.ts +0 -3
  170. package/dist-cms/packages/core/workspace/components/workspace-entity-action-menu/workspace-entity-action-menu.element.js +14 -48
  171. package/dist-cms/packages/core/workspace/components/workspace-header-name-editable/workspace-header-name-editable.element.d.ts +1 -0
  172. package/dist-cms/packages/core/workspace/components/workspace-header-name-editable/workspace-header-name-editable.element.js +11 -1
  173. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.js +4 -0
  174. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.js +7 -0
  175. package/dist-cms/packages/core/workspace/controllers/workspace-split-view-manager.controller.d.ts +1 -0
  176. package/dist-cms/packages/core/workspace/controllers/workspace-split-view-manager.controller.js +1 -0
  177. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.d.ts +1 -0
  178. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.js +16 -4
  179. package/dist-cms/packages/core/workspace/entity-detail/entity-named-detail-workspace-base.d.ts +5 -1
  180. package/dist-cms/packages/core/workspace/entity-detail/entity-named-detail-workspace-base.js +5 -2
  181. package/dist-cms/packages/core/workspace/entity-detail/global-components/entity-detail-forbidden.element.d.ts +11 -0
  182. package/dist-cms/packages/core/workspace/entity-detail/global-components/entity-detail-forbidden.element.js +55 -0
  183. package/dist-cms/packages/core/workspace/entity-detail/global-components/entity-detail-workspace-editor.element.d.ts +1 -0
  184. package/dist-cms/packages/core/workspace/entity-detail/global-components/entity-detail-workspace-editor.element.js +20 -3
  185. package/dist-cms/packages/core/workspace/entity-detail/global-components/index.d.ts +1 -2
  186. package/dist-cms/packages/core/workspace/entity-detail/global-components/index.js +1 -2
  187. package/dist-cms/packages/core/workspace/entity-detail/types.d.ts +2 -1
  188. package/dist-cms/packages/core/workspace/namable/index.d.ts +1 -0
  189. package/dist-cms/packages/core/workspace/namable/index.js +1 -0
  190. package/dist-cms/packages/core/workspace/namable/namable-workspace-context.interface.d.ts +2 -0
  191. package/dist-cms/packages/core/workspace/namable/name-write-guard.manager.d.ts +6 -0
  192. package/dist-cms/packages/core/workspace/namable/name-write-guard.manager.js +15 -0
  193. package/dist-cms/packages/data-type/collection/repository/data-type-collection.repository.d.ts +1 -1
  194. package/dist-cms/packages/data-type/collection/repository/data-type-collection.server.data-source.d.ts +1 -1
  195. package/dist-cms/packages/data-type/entity-actions/duplicate/repository/data-type-duplicate.repository.d.ts +1 -1
  196. package/dist-cms/packages/data-type/entity-actions/move-to/repository/data-type-move.repository.d.ts +1 -1
  197. package/dist-cms/packages/data-type/repository/detail/data-type-detail.server.data-source.d.ts +3 -3
  198. package/dist-cms/packages/data-type/repository/item/data-type-item.server.data-source.d.ts +1 -1
  199. package/dist-cms/packages/data-type/search/data-type-search.repository.d.ts +1 -1
  200. package/dist-cms/packages/data-type/search/data-type-search.server.data-source.d.ts +1 -1
  201. package/dist-cms/packages/data-type/search/data-type.search-provider.d.ts +1 -1
  202. package/dist-cms/packages/data-type/tree/folder/repository/data-type-folder.server.data-source.d.ts +3 -3
  203. package/dist-cms/packages/data-type/tree/folder/workspace/data-type-folder-editor.element.d.ts +1 -3
  204. package/dist-cms/packages/data-type/tree/folder/workspace/data-type-folder-editor.element.js +2 -7
  205. package/dist-cms/packages/data-type/tree/tree-item-children/collection/repository/data-type-tree-item-children-collection.repository.d.ts +3 -3
  206. package/dist-cms/packages/dictionary/collection/repository/dictionary-collection.server.data-source.d.ts +1 -1
  207. package/dist-cms/packages/dictionary/dashboard/manifests.js +2 -1
  208. package/dist-cms/packages/dictionary/entity-action/move-to/repository/dictionary-move.repository.d.ts +1 -1
  209. package/dist-cms/packages/dictionary/repository/detail/dictionary-detail.server.data-source.d.ts +3 -3
  210. package/dist-cms/packages/dictionary/repository/import/dictionary-import.repository.d.ts +2 -2
  211. package/dist-cms/packages/dictionary/repository/item/dictionary-item.server.data-source.d.ts +1 -1
  212. package/dist-cms/packages/dictionary/search/dictionary-search.repository.d.ts +1 -1
  213. package/dist-cms/packages/dictionary/search/dictionary-search.server.data-source.d.ts +1 -1
  214. package/dist-cms/packages/dictionary/search/dictionary.search-provider.d.ts +1 -1
  215. package/dist-cms/packages/documents/document-blueprints/entity-actions/move-to/repository/document-blueprint-move.repository.d.ts +1 -1
  216. package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.repository.d.ts +1 -1
  217. package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.data-source.d.ts +2 -2
  218. package/dist-cms/packages/documents/document-blueprints/tree/folder/repository/document-blueprint-folder.server.data-source.d.ts +3 -3
  219. package/dist-cms/packages/documents/document-blueprints/tree/folder/workspace/document-blueprint-folder-editor.element.d.ts +1 -3
  220. package/dist-cms/packages/documents/document-blueprints/tree/folder/workspace/document-blueprint-folder-editor.element.js +2 -7
  221. package/dist-cms/packages/documents/document-blueprints/workspace/document-blueprint-workspace-editor.element.js +27 -13
  222. package/dist-cms/packages/documents/document-redirect-management/dashboard-redirect-management.element.js +7 -1
  223. package/dist-cms/packages/documents/document-redirect-management/manifests.js +2 -1
  224. package/dist-cms/packages/documents/document-types/entity-actions/duplicate/repository/document-type-duplicate.repository.d.ts +1 -1
  225. package/dist-cms/packages/documents/document-types/entity-actions/import/repository/document-type-import.repository.d.ts +1 -1
  226. package/dist-cms/packages/documents/document-types/entity-actions/move-to/repository/document-type-move.repository.d.ts +1 -1
  227. package/dist-cms/packages/documents/document-types/repository/composition/document-type-composition.repository.d.ts +2 -2
  228. package/dist-cms/packages/documents/document-types/repository/composition/document-type-composition.server.data-source.d.ts +2 -2
  229. package/dist-cms/packages/documents/document-types/repository/detail/document-type-detail.server.data-source.d.ts +3 -3
  230. package/dist-cms/packages/documents/document-types/repository/detail/index.d.ts +1 -0
  231. package/dist-cms/packages/documents/document-types/repository/detail/index.js +1 -0
  232. package/dist-cms/packages/documents/document-types/repository/item/document-type-item.server.data-source.d.ts +1 -1
  233. package/dist-cms/packages/documents/document-types/search/document-type-search.repository.d.ts +1 -1
  234. package/dist-cms/packages/documents/document-types/search/document-type-search.server.data-source.d.ts +1 -1
  235. package/dist-cms/packages/documents/document-types/search/document-type.search-provider.d.ts +1 -1
  236. package/dist-cms/packages/documents/document-types/tree/folder/repository/document-type-folder.server.data-source.d.ts +3 -3
  237. package/dist-cms/packages/documents/document-types/tree/folder/workspace/document-type-folder-editor.element.d.ts +1 -3
  238. package/dist-cms/packages/documents/document-types/tree/folder/workspace/document-type-folder-editor.element.js +2 -7
  239. package/dist-cms/packages/documents/document-types/tree/tree-item-children/collection/repository/document-type-tree-item-children-collection.repository.d.ts +3 -3
  240. package/dist-cms/packages/documents/documents/audit-log/info-app/document-history-workspace-info-app.element.js +4 -0
  241. package/dist-cms/packages/documents/documents/audit-log/repository/document-audit-log.repository.d.ts +1 -1
  242. package/dist-cms/packages/documents/documents/audit-log/repository/document-audit-log.server.data-source.d.ts +1 -1
  243. package/dist-cms/packages/documents/documents/collection/repository/document-collection.repository.d.ts +1 -1
  244. package/dist-cms/packages/documents/documents/collection/repository/document-collection.server.data-source.d.ts +1 -1
  245. package/dist-cms/packages/documents/documents/collection/views/table/column-layouts/document-table-column-name.element.js +5 -1
  246. package/dist-cms/packages/documents/documents/entity-actions/create-blueprint/modal/create-blueprint-modal.element.js +13 -12
  247. package/dist-cms/packages/documents/documents/entity-actions/create-blueprint/repository/document-create-blueprint.repository.d.ts +1 -1
  248. package/dist-cms/packages/documents/documents/entity-actions/duplicate/repository/document-duplicate.repository.d.ts +1 -1
  249. package/dist-cms/packages/documents/documents/entity-actions/move-to/repository/document-move.repository.d.ts +1 -1
  250. package/dist-cms/packages/documents/documents/entity-actions/notifications/repository/document-notifications.repository.d.ts +2 -2
  251. package/dist-cms/packages/documents/documents/item/repository/document-item.server.data-source.d.ts +1 -1
  252. package/dist-cms/packages/documents/documents/publishing/repository/document-publishing.repository.d.ts +1 -1
  253. package/dist-cms/packages/documents/documents/publishing/repository/document-publishing.server.data-source.d.ts +1 -1
  254. package/dist-cms/packages/documents/documents/recycle-bin/repository/document-recycle-bin.server.data-source.d.ts +1 -1
  255. package/dist-cms/packages/documents/documents/repository/detail/document-detail.server.data-source.d.ts +7 -17
  256. package/dist-cms/packages/documents/documents/repository/detail/document-detail.server.data-source.js +23 -38
  257. package/dist-cms/packages/documents/documents/search/document-search.server.data-source.d.ts +1 -1
  258. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.element.js +2 -3
  259. package/dist-cms/packages/documents/documents/url/document-urls-data-resolver.js +5 -7
  260. package/dist-cms/packages/documents/documents/url/repository/document-url.server.data-source.d.ts +1 -1
  261. package/dist-cms/packages/documents/documents/workspace/actions/save.action.js +16 -7
  262. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.js +13 -4
  263. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.d.ts +2 -1
  264. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.js +14 -6
  265. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.d.ts +2 -1
  266. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +28 -35
  267. package/dist-cms/packages/documents/section/manifests.js +2 -2
  268. package/dist-cms/packages/embedded-media/repository/oembed.repository.d.ts +1 -1
  269. package/dist-cms/packages/health-check/manifests.js +2 -1
  270. package/dist-cms/packages/language/app-language-select/manifests.js +2 -1
  271. package/dist-cms/packages/language/collection/repository/language-collection.server.data-source.d.ts +1 -1
  272. package/dist-cms/packages/language/repository/detail/language-detail.server.data-source.d.ts +3 -3
  273. package/dist-cms/packages/language/repository/item/language-item.server.data-source.d.ts +1 -1
  274. package/dist-cms/packages/language/workspace/language/language-workspace-editor.element.d.ts +0 -1
  275. package/dist-cms/packages/language/workspace/language/language-workspace-editor.element.js +1 -3
  276. package/dist-cms/packages/log-viewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.js +4 -0
  277. package/dist-cms/packages/log-viewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.js +4 -0
  278. package/dist-cms/packages/log-viewer/workspace/views/search/components/log-viewer-messages-list.element.js +7 -1
  279. package/dist-cms/packages/media/imaging/components/imaging-thumbnail.element.js +1 -6
  280. package/dist-cms/packages/media/imaging/imaging.server.data.d.ts +1 -1
  281. package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.js +4 -0
  282. package/dist-cms/packages/media/media/audit-log/repository/media-audit-log.repository.d.ts +1 -1
  283. package/dist-cms/packages/media/media/audit-log/repository/media-audit-log.server.data-source.d.ts +1 -1
  284. package/dist-cms/packages/media/media/collection/media-collection.context.d.ts +1 -1
  285. package/dist-cms/packages/media/media/collection/media-collection.context.js +1 -1
  286. package/dist-cms/packages/media/media/collection/repository/media-collection.repository.d.ts +1 -1
  287. package/dist-cms/packages/media/media/collection/repository/media-collection.server.data-source.d.ts +1 -1
  288. package/dist-cms/packages/media/media/components/input-image-cropper/image-cropper-field.element.d.ts +1 -1
  289. package/dist-cms/packages/media/media/components/input-image-cropper/image-cropper-field.element.js +66 -42
  290. package/dist-cms/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.js +2 -11
  291. package/dist-cms/packages/media/media/components/input-image-cropper/input-image-cropper.element.js +15 -8
  292. package/dist-cms/packages/media/media/components/input-upload-field/file-upload-preview.element.d.ts +18 -0
  293. package/dist-cms/packages/media/media/components/input-upload-field/file-upload-preview.element.js +123 -0
  294. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-audio.element.d.ts +2 -2
  295. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-audio.element.js +3 -4
  296. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-file.element.d.ts +2 -7
  297. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-file.element.js +3 -20
  298. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-image.element.d.ts +2 -2
  299. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-image.element.js +3 -13
  300. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-svg.element.d.ts +2 -2
  301. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-svg.element.js +3 -14
  302. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-video.element.d.ts +2 -2
  303. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-video.element.js +4 -7
  304. package/dist-cms/packages/media/media/components/input-upload-field/preview/manifest.js +2 -2
  305. package/dist-cms/packages/media/media/dashboard/manifests.js +2 -1
  306. package/dist-cms/packages/media/media/dropzone/dropzone-media.element.js +1 -0
  307. package/dist-cms/packages/media/media/entity-actions/move-to/repository/media-move.repository.d.ts +1 -1
  308. package/dist-cms/packages/media/media/index.d.ts +4 -1
  309. package/dist-cms/packages/media/media/index.js +4 -1
  310. package/dist-cms/packages/media/media/modals/image-cropper-editor/components/image-cropper-editor-field.element.d.ts +1 -2
  311. package/dist-cms/packages/media/media/modals/image-cropper-editor/components/image-cropper-editor-field.element.js +21 -79
  312. package/dist-cms/packages/media/media/modals/image-cropper-editor/image-cropper-editor-modal.element.d.ts +3 -2
  313. package/dist-cms/packages/media/media/modals/image-cropper-editor/image-cropper-editor-modal.element.js +89 -37
  314. package/dist-cms/packages/media/media/modals/media-picker/media-picker-modal.element.js +4 -5
  315. package/dist-cms/packages/media/media/property-editors/image-cropper/Umbraco.ImageCropper.js +1 -1
  316. package/dist-cms/packages/media/media/property-editors/image-crops/property-editor-ui-image-crops.element.d.ts +1 -3
  317. package/dist-cms/packages/media/media/property-editors/image-crops/property-editor-ui-image-crops.element.js +102 -93
  318. package/dist-cms/packages/media/media/property-editors/upload-field/property-editor-ui-upload-field.element.js +7 -4
  319. package/dist-cms/packages/media/media/recycle-bin/repository/media-recycle-bin.server.data-source.d.ts +1 -1
  320. package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.d.ts +8 -14
  321. package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.js +24 -21
  322. package/dist-cms/packages/media/media/repository/item/media-item.repository.d.ts +1 -1
  323. package/dist-cms/packages/media/media/repository/item/media-item.server.data-source.d.ts +2 -2
  324. package/dist-cms/packages/media/media/search/global-search/media-global-search.d.ts +1 -1
  325. package/dist-cms/packages/media/media/search/media-search.repository.d.ts +1 -1
  326. package/dist-cms/packages/media/media/search/media-search.server.data-source.d.ts +1 -1
  327. package/dist-cms/packages/media/media/search/media.search-provider.d.ts +1 -1
  328. package/dist-cms/packages/media/media/tree/tree-item/media-tree-item.element.js +2 -3
  329. package/dist-cms/packages/media/media/url/info-app/media-links-workspace-info-app.element.js +2 -2
  330. package/dist-cms/packages/media/media/url/repository/media-url.server.data-source.d.ts +1 -1
  331. package/dist-cms/packages/media/media/workspace/media-workspace-editor.element.js +24 -12
  332. package/dist-cms/packages/media/media/workspace/media-workspace-split-view.element.d.ts +2 -1
  333. package/dist-cms/packages/media/media/workspace/media-workspace-split-view.element.js +17 -4
  334. package/dist-cms/packages/media/media/workspace/media-workspace.context.d.ts +2 -1
  335. package/dist-cms/packages/media/media/workspace/media-workspace.context.js +4 -4
  336. package/dist-cms/packages/media/media-section/manifests.js +2 -2
  337. package/dist-cms/packages/media/media-types/entity-actions/duplicate/repository/media-type-duplicate.repository.d.ts +1 -1
  338. package/dist-cms/packages/media/media-types/entity-actions/export/repository/media-type-export.repository.d.ts +1 -1
  339. package/dist-cms/packages/media/media-types/entity-actions/import/repository/media-type-import.repository.d.ts +1 -1
  340. package/dist-cms/packages/media/media-types/entity-actions/move-to/repository/media-type-move.repository.d.ts +1 -1
  341. package/dist-cms/packages/media/media-types/repository/composition/media-type-composition.repository.d.ts +2 -2
  342. package/dist-cms/packages/media/media-types/repository/composition/media-type-composition.server.data-source.d.ts +2 -2
  343. package/dist-cms/packages/media/media-types/repository/detail/index.d.ts +1 -0
  344. package/dist-cms/packages/media/media-types/repository/detail/index.js +1 -0
  345. package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.repository.js +2 -2
  346. package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.server.data-source.d.ts +12 -12
  347. package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.server.data-source.js +9 -9
  348. package/dist-cms/packages/media/media-types/repository/item/media-type-item.server.data-source.d.ts +1 -1
  349. package/dist-cms/packages/media/media-types/search/media-type-search.repository.d.ts +1 -1
  350. package/dist-cms/packages/media/media-types/search/media-type-search.server.data-source.d.ts +1 -1
  351. package/dist-cms/packages/media/media-types/search/media-type.search-provider.d.ts +1 -1
  352. package/dist-cms/packages/media/media-types/tree/folder/repository/media-type-folder.server.data-source.d.ts +3 -3
  353. package/dist-cms/packages/media/media-types/tree/folder/workspace/media-type-folder-editor.element.d.ts +1 -3
  354. package/dist-cms/packages/media/media-types/tree/folder/workspace/media-type-folder-editor.element.js +2 -7
  355. package/dist-cms/packages/media/media-types/tree/tree-item-children/collection/repository/media-type-tree-item-children-collection.repository.d.ts +3 -3
  356. package/dist-cms/packages/members/member/collection/repository/member-collection.repository.d.ts +1 -1
  357. package/dist-cms/packages/members/member/collection/repository/member-collection.server.data-source.d.ts +1 -1
  358. package/dist-cms/packages/members/member/item/repository/member-item.server.data-source.d.ts +1 -1
  359. package/dist-cms/packages/members/member/repository/detail/member-detail.server.data-source.d.ts +7 -13
  360. package/dist-cms/packages/members/member/repository/detail/member-detail.server.data-source.js +20 -19
  361. package/dist-cms/packages/members/member/search/member-search.repository.d.ts +1 -1
  362. package/dist-cms/packages/members/member/search/member-search.server.data-source.d.ts +1 -1
  363. package/dist-cms/packages/members/member/search/member.search-provider.d.ts +1 -1
  364. package/dist-cms/packages/members/member/workspace/member/member-workspace-editor.element.d.ts +2 -2
  365. package/dist-cms/packages/members/member/workspace/member/member-workspace-editor.element.js +18 -11
  366. package/dist-cms/packages/members/member/workspace/member/member-workspace-split-view.element.d.ts +2 -1
  367. package/dist-cms/packages/members/member/workspace/member/member-workspace-split-view.element.js +15 -3
  368. package/dist-cms/packages/members/member/workspace/member/member-workspace.context.d.ts +1 -0
  369. package/dist-cms/packages/members/member/workspace/member/member-workspace.context.js +1 -0
  370. package/dist-cms/packages/members/member-group/collection/repository/member-group-collection.server.data-source.d.ts +1 -1
  371. package/dist-cms/packages/members/member-group/repository/detail/member-group-detail.server.data-source.d.ts +3 -3
  372. package/dist-cms/packages/members/member-group/repository/item/member-group-item.server.data-source.d.ts +1 -1
  373. package/dist-cms/packages/members/member-public-access/repository/public-access.repository.d.ts +4 -4
  374. package/dist-cms/packages/members/member-type/constants.d.ts +1 -0
  375. package/dist-cms/packages/members/member-type/constants.js +1 -0
  376. package/dist-cms/packages/members/member-type/entity-actions/duplicate/repository/member-type-duplicate.repository.d.ts +1 -1
  377. package/dist-cms/packages/members/member-type/entity-actions/manifests.js +1 -1
  378. package/dist-cms/packages/members/member-type/entity.d.ts +1 -1
  379. package/dist-cms/packages/members/member-type/entity.js +1 -1
  380. package/dist-cms/packages/members/member-type/index.d.ts +1 -0
  381. package/dist-cms/packages/members/member-type/index.js +1 -0
  382. package/dist-cms/packages/members/member-type/manifests.js +2 -0
  383. package/dist-cms/packages/members/member-type/member-type-root/constants.d.ts +1 -0
  384. package/dist-cms/packages/members/member-type/member-type-root/constants.js +1 -0
  385. package/dist-cms/packages/members/member-type/member-type-root/index.d.ts +1 -0
  386. package/dist-cms/packages/members/member-type/member-type-root/index.js +1 -0
  387. package/dist-cms/packages/members/member-type/member-type-root/manifests.d.ts +1 -0
  388. package/dist-cms/packages/members/member-type/member-type-root/manifests.js +13 -0
  389. package/dist-cms/packages/members/member-type/repository/composition/member-type-composition.repository.d.ts +2 -2
  390. package/dist-cms/packages/members/member-type/repository/composition/member-type-composition.server.data-source.d.ts +2 -2
  391. package/dist-cms/packages/members/member-type/repository/detail/index.d.ts +1 -0
  392. package/dist-cms/packages/members/member-type/repository/detail/index.js +1 -0
  393. package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.repository.js +2 -2
  394. package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.server.data-source.d.ts +18 -19
  395. package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.server.data-source.js +15 -16
  396. package/dist-cms/packages/members/member-type/repository/index.d.ts +1 -1
  397. package/dist-cms/packages/members/member-type/repository/index.js +1 -1
  398. package/dist-cms/packages/members/member-type/repository/item/member-type-item.server.data-source.d.ts +1 -1
  399. package/dist-cms/packages/members/member-type/search/member-type-search.repository.d.ts +1 -1
  400. package/dist-cms/packages/members/member-type/search/member-type-search.server.data-source.d.ts +1 -1
  401. package/dist-cms/packages/members/member-type/search/member-type.search-provider.d.ts +1 -1
  402. package/dist-cms/packages/members/member-type/tree/constants.d.ts +1 -0
  403. package/dist-cms/packages/members/member-type/tree/constants.js +1 -0
  404. package/dist-cms/packages/members/member-type/tree/manifests.js +18 -9
  405. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/action/manifests.d.ts +1 -0
  406. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/action/manifests.js +16 -0
  407. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/constants.d.ts +2 -0
  408. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/constants.js +2 -0
  409. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/index.d.ts +2 -0
  410. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/index.js +2 -0
  411. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/manifests.d.ts +1 -0
  412. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/manifests.js +19 -0
  413. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/constants.d.ts +1 -0
  414. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/constants.js +1 -0
  415. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/index.d.ts +1 -0
  416. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/index.js +1 -0
  417. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/manifests.d.ts +1 -0
  418. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/manifests.js +9 -0
  419. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/member-type-tree-item-children-collection.repository.d.ts +15 -0
  420. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/repository/member-type-tree-item-children-collection.repository.js +26 -0
  421. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/types.d.ts +5 -0
  422. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/types.js +1 -0
  423. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/views/manifests.d.ts +1 -0
  424. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/views/manifests.js +22 -0
  425. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/views/member-type-tree-item-table-collection-view.element.d.ts +16 -0
  426. package/dist-cms/packages/members/member-type/tree/tree-item-children/collection/views/member-type-tree-item-table-collection-view.element.js +112 -0
  427. package/dist-cms/packages/members/member-type/tree/tree-item-children/constants.d.ts +1 -0
  428. package/dist-cms/packages/members/member-type/tree/tree-item-children/constants.js +1 -0
  429. package/dist-cms/packages/members/member-type/tree/tree-item-children/manifests.d.ts +1 -0
  430. package/dist-cms/packages/members/member-type/tree/tree-item-children/manifests.js +3 -0
  431. package/dist-cms/packages/members/member-type/tree/tree-item-children/reload-entity-action/manifests.d.ts +1 -0
  432. package/dist-cms/packages/members/member-type/tree/{reload-tree-item-children → tree-item-children/reload-entity-action}/manifests.js +1 -1
  433. package/dist-cms/packages/members/member-type/workspace/index.d.ts +2 -0
  434. package/dist-cms/packages/members/member-type/workspace/index.js +2 -0
  435. package/dist-cms/packages/members/section/sidebar-app/manifests.js +2 -1
  436. package/dist-cms/packages/models-builder/manifests.js +2 -1
  437. package/dist-cms/packages/packages/package-section/manifests.js +4 -4
  438. package/dist-cms/packages/packages/package-section/views/created/packages-created-overview.element.js +7 -1
  439. package/dist-cms/packages/performance-profiling/manifests.js +2 -1
  440. package/dist-cms/packages/property-editors/label/manifests.js +10 -0
  441. package/dist-cms/packages/property-editors/label/property-editor-ui-label.element.d.ts +3 -4
  442. package/dist-cms/packages/property-editors/label/property-editor-ui-label.element.js +9 -9
  443. package/dist-cms/packages/property-editors/number-range/property-editor-ui-number-range.element.js +2 -3
  444. package/dist-cms/packages/property-editors/overlay-size/property-editor-ui-overlay-size.element.js +7 -1
  445. package/dist-cms/packages/publish-cache/manifests.js +2 -1
  446. package/dist-cms/packages/relations/relation-types/collection/repository/relation-type-collection.server.data-source.d.ts +1 -1
  447. package/dist-cms/packages/relations/relation-types/repository/detail/relation-type-detail.repository.d.ts +1 -1
  448. package/dist-cms/packages/relations/relation-types/repository/detail/relation-type-detail.server.data-source.d.ts +1 -1
  449. package/dist-cms/packages/relations/relation-types/workspace/relation-type/views/relation-type-detail-workspace-view.element.js +4 -0
  450. package/dist-cms/packages/relations/relations/collection/repository/relation-collection.server.data-source.d.ts +1 -1
  451. package/dist-cms/packages/relations/relations/reference/workspace-info-app/entity-references-workspace-view-info.element.js +7 -1
  452. package/dist-cms/packages/search/manifests.js +2 -1
  453. package/dist-cms/packages/segment/collection/repository/segment-collection.server.data-source.d.ts +1 -1
  454. package/dist-cms/packages/settings/advanced/manifests.js +2 -1
  455. package/dist-cms/packages/settings/structure/manifests.js +2 -1
  456. package/dist-cms/packages/settings/welcome/manifests.js +2 -1
  457. package/dist-cms/packages/static-file/repository/item/static-file-item.server.data-source.d.ts +1 -1
  458. package/dist-cms/packages/tags/repository/tag.repository.d.ts +2 -2
  459. package/dist-cms/packages/telemetry/manifests.js +2 -1
  460. package/dist-cms/packages/templating/menu/manifests.js +2 -1
  461. package/dist-cms/packages/templating/partial-views/entity-actions/rename/rename-partial-view.server.data-source.d.ts +1 -1
  462. package/dist-cms/packages/templating/partial-views/repository/item/partial-view-item.server.data-source.d.ts +1 -1
  463. package/dist-cms/packages/templating/partial-views/repository/partial-view-detail.server.data-source.d.ts +3 -3
  464. package/dist-cms/packages/templating/partial-views/tree/folder/repository/partial-view-folder.server.data-source.d.ts +2 -2
  465. package/dist-cms/packages/templating/partial-views/tree/folder/workspace/partial-view-folder-workspace-editor.element.d.ts +1 -5
  466. package/dist-cms/packages/templating/partial-views/tree/folder/workspace/partial-view-folder-workspace-editor.element.js +8 -22
  467. package/dist-cms/packages/templating/scripts/entity-actions/rename/rename-script.server.data-source.d.ts +1 -1
  468. package/dist-cms/packages/templating/scripts/repository/item/script-item.server.data-source.d.ts +1 -1
  469. package/dist-cms/packages/templating/scripts/repository/script-detail.server.data-source.d.ts +3 -3
  470. package/dist-cms/packages/templating/scripts/tree/folder/repository/script-folder.server.data-source.d.ts +2 -2
  471. package/dist-cms/packages/templating/scripts/tree/folder/workspace/script-folder-workspace-editor.element.d.ts +1 -5
  472. package/dist-cms/packages/templating/scripts/tree/folder/workspace/script-folder-workspace-editor.element.js +8 -22
  473. package/dist-cms/packages/templating/stylesheets/entity-actions/rename/rename-stylesheet.server.data-source.d.ts +1 -1
  474. package/dist-cms/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.d.ts +1 -1
  475. package/dist-cms/packages/templating/stylesheets/repository/stylesheet-detail.server.data-source.d.ts +3 -3
  476. package/dist-cms/packages/templating/stylesheets/tree/folder/repository/stylesheet-folder.server.data-source.d.ts +2 -2
  477. package/dist-cms/packages/templating/stylesheets/tree/folder/workspace/stylesheet-folder-workspace-editor.element.d.ts +1 -5
  478. package/dist-cms/packages/templating/stylesheets/tree/folder/workspace/stylesheet-folder-workspace-editor.element.js +8 -22
  479. package/dist-cms/packages/templating/templates/repository/detail/template-detail.server.data-source.d.ts +3 -3
  480. package/dist-cms/packages/templating/templates/repository/item/template-item.server.data-source.d.ts +1 -1
  481. package/dist-cms/packages/templating/templates/search/template-search.repository.d.ts +1 -1
  482. package/dist-cms/packages/templating/templates/search/template-search.server.data-source.d.ts +1 -1
  483. package/dist-cms/packages/templating/templates/search/template.search-provider.d.ts +1 -1
  484. package/dist-cms/packages/templating/templates/workspace/template-workspace.context.d.ts +1 -1
  485. package/dist-cms/packages/tiptap/components/cascading-menu-popover/cascading-menu-popover.element.d.ts +1 -0
  486. package/dist-cms/packages/tiptap/components/cascading-menu-popover/cascading-menu-popover.element.js +23 -9
  487. package/dist-cms/packages/tiptap/components/toolbar/style-menu.tiptap-toolbar-api.d.ts +1 -0
  488. package/dist-cms/packages/tiptap/components/toolbar/style-menu.tiptap-toolbar-api.js +29 -11
  489. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button.element.js +2 -2
  490. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-menu.element.js +12 -4
  491. package/dist-cms/packages/tiptap/extensions/manifests.js +9 -9
  492. package/dist-cms/packages/tiptap/extensions/table/components/table-toolbar-menu.element.js +1 -1
  493. package/dist-cms/packages/tiptap/extensions/table/table.tiptap-toolbar-api.d.ts +1 -0
  494. package/dist-cms/packages/tiptap/extensions/table/table.tiptap-toolbar-api.js +5 -0
  495. package/dist-cms/packages/tiptap/extensions/toolbar/clear-formatting.tiptap-toolbar-api.js +1 -1
  496. package/dist-cms/packages/tiptap/extensions/toolbar/font-family.tiptap-toolbar-api.d.ts +1 -0
  497. package/dist-cms/packages/tiptap/extensions/toolbar/font-family.tiptap-toolbar-api.js +5 -1
  498. package/dist-cms/packages/tiptap/extensions/toolbar/font-size.tiptap-toolbar-api.d.ts +1 -0
  499. package/dist-cms/packages/tiptap/extensions/toolbar/font-size.tiptap-toolbar-api.js +5 -1
  500. package/dist-cms/packages/tiptap/extensions/toolbar/text-color-background.tiptap-toolbar-api.js +1 -1
  501. package/dist-cms/packages/tiptap/extensions/toolbar/text-color-foreground.tiptap-toolbar-api.js +1 -1
  502. package/dist-cms/packages/tiptap/extensions/types.d.ts +1 -1
  503. package/dist-cms/packages/tiptap/property-editors/tiptap/components/property-editor-ui-tiptap-statusbar-configuration.element.js +18 -10
  504. package/dist-cms/packages/tiptap/property-editors/tiptap/components/property-editor-ui-tiptap-toolbar-configuration.element.js +21 -12
  505. package/dist-cms/packages/tiptap/property-editors/tiptap/constants.d.ts +1 -0
  506. package/dist-cms/packages/tiptap/property-editors/tiptap/constants.js +1 -0
  507. package/dist-cms/packages/tiptap/property-editors/tiptap/contexts/tiptap-statusbar-configuration.context-token.d.ts +3 -0
  508. package/dist-cms/packages/tiptap/property-editors/tiptap/contexts/tiptap-statusbar-configuration.context-token.js +2 -0
  509. package/dist-cms/packages/tiptap/property-editors/tiptap/contexts/tiptap-statusbar-configuration.context.js +2 -1
  510. package/dist-cms/packages/translation/menu/manifests.js +2 -1
  511. package/dist-cms/packages/ufm/filters/bytes.filter.d.ts +5 -0
  512. package/dist-cms/packages/ufm/filters/bytes.filter.js +10 -0
  513. package/dist-cms/packages/ufm/filters/manifests.js +7 -0
  514. package/dist-cms/packages/umbraco-news/manifests.js +2 -1
  515. package/dist-cms/packages/user/current-user/current-user.context.d.ts +1 -1
  516. package/dist-cms/packages/user/current-user/current-user.context.js +1 -1
  517. package/dist-cms/packages/user/current-user/repository/current-user.repository.d.ts +6 -6
  518. package/dist-cms/packages/user/current-user/repository/current-user.server.data-source.d.ts +4 -4
  519. package/dist-cms/packages/user/section/sidebar-app/manifests.js +2 -1
  520. package/dist-cms/packages/user/user/client-credential/repository/data-source/user-client-credential.server.data-source.d.ts +2 -2
  521. package/dist-cms/packages/user/user/collection/repository/user-collection.repository.d.ts +1 -1
  522. package/dist-cms/packages/user/user/collection/repository/user-collection.server.data-source.d.ts +1 -1
  523. package/dist-cms/packages/user/user/invite/repository/invite-user-server.data-source.d.ts +1 -1
  524. package/dist-cms/packages/user/user/invite/repository/invite-user.repository.d.ts +2 -2
  525. package/dist-cms/packages/user/user/repository/avatar/user-avatar.repository.d.ts +2 -2
  526. package/dist-cms/packages/user/user/repository/change-password/change-user-password.repository.d.ts +1 -1
  527. package/dist-cms/packages/user/user/repository/detail/user-detail.server.data-source.d.ts +4 -4
  528. package/dist-cms/packages/user/user/repository/disable/disable-user.repository.d.ts +1 -1
  529. package/dist-cms/packages/user/user/repository/enable/enable-user.repository.d.ts +1 -1
  530. package/dist-cms/packages/user/user/repository/item/user-item.server.data-source.d.ts +1 -1
  531. package/dist-cms/packages/user/user/repository/unlock/unlock-user.repository.d.ts +1 -1
  532. package/dist-cms/packages/user/user/repository/user.repository.d.ts +3 -3
  533. package/dist-cms/packages/user/user/workspace/user/user-workspace-editor.element.js +7 -12
  534. package/dist-cms/packages/user/user/workspace/user/user-workspace.context.d.ts +3 -3
  535. package/dist-cms/packages/user/user/workspace/user/user-workspace.context.js +5 -0
  536. package/dist-cms/packages/user/user-group/collection/repository/user-group-collection.repository.d.ts +1 -1
  537. package/dist-cms/packages/user/user-group/collection/repository/user-group-collection.server.data-source.d.ts +1 -1
  538. package/dist-cms/packages/user/user-group/repository/detail/user-group-detail.server.data-source.d.ts +3 -3
  539. package/dist-cms/packages/user/user-group/repository/item/user-group-item.server.data-source.d.ts +1 -1
  540. package/dist-cms/packages/webhook/webhook/collection/repository/webhook-collection.server.data-source.d.ts +1 -1
  541. package/dist-cms/packages/webhook/webhook/repository/detail/webhook-detail.server.data-source.d.ts +3 -3
  542. package/dist-cms/packages/webhook/webhook/repository/item/webhook-item.server.data-source.d.ts +1 -1
  543. package/dist-cms/packages/webhook/webhook-delivery/collection/repository/webhook-delivery-collection.server.data-source.d.ts +1 -1
  544. package/dist-cms/packages/webhook/webhook-event/repository/webhook-event.repository.d.ts +1 -1
  545. package/dist-cms/packages/webhook/webhook-event/repository/webhook-event.server.data-source.d.ts +1 -1
  546. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  547. package/dist-cms/umbraco-package-schema.json +584 -194
  548. package/dist-cms/umbraco-package.json +1 -1
  549. package/dist-cms/vscode-html-custom-data.json +100 -35
  550. package/examples/collection/README.md +20 -0
  551. package/examples/collection/collection/card-view/collection-view.element.ts +82 -0
  552. package/examples/collection/collection/card-view/manifests.ts +23 -0
  553. package/examples/collection/collection/constants.ts +1 -0
  554. package/examples/collection/collection/manifests.ts +20 -0
  555. package/examples/collection/collection/repository/collection.repository.ts +64 -0
  556. package/examples/collection/collection/repository/constants.ts +1 -0
  557. package/examples/collection/collection/repository/manifests.ts +10 -0
  558. package/examples/collection/collection/repository/types.ts +9 -0
  559. package/examples/collection/collection/table-view/collection-view.element.ts +89 -0
  560. package/examples/collection/collection/table-view/manifests.ts +23 -0
  561. package/examples/collection/dashboard-with-collection/dashboard-with-collection.element.ts +23 -0
  562. package/examples/collection/dashboard-with-collection/manifests.ts +14 -0
  563. package/examples/collection/index.ts +9 -0
  564. package/examples/collection/workspace-view-with-collection/manifests.ts +25 -0
  565. package/examples/validation-context/index.ts +2 -1
  566. package/package.json +4 -4
  567. /package/dist-cms/packages/{members/member-type/tree/reload-tree-item-children → core/entity/entity-type}/manifests.d.ts +0 -0
  568. /package/dist-cms/packages/core/section/conditions/{section-user-permission.condition.js → section-user-permission/section-user-permission.condition.js} +0 -0
@@ -4,6 +4,7 @@ import { manifests as cultureManifests } from './culture/manifests.js';
4
4
  import { manifests as debugManifests } from './debug/manifests.js';
5
5
  import { manifests as entityActionManifests } from './entity-action/manifests.js';
6
6
  import { manifests as entityBulkActionManifests } from './entity-bulk-action/manifests.js';
7
+ import { manifests as entityManifests } from './entity/manifests.js';
7
8
  import { manifests as extensionManifests } from './extension-registry/manifests.js';
8
9
  import { manifests as iconRegistryManifests } from './icon-registry/manifests.js';
9
10
  import { manifests as localizationManifests } from './localization/manifests.js';
@@ -27,6 +28,7 @@ export const manifests = [
27
28
  ...debugManifests,
28
29
  ...entityActionManifests,
29
30
  ...entityBulkActionManifests,
31
+ ...entityManifests,
30
32
  ...extensionManifests,
31
33
  ...iconRegistryManifests,
32
34
  ...localizationManifests,
@@ -41,8 +41,12 @@ let UmbSectionSidebarMenuElement = class UmbSectionSidebarMenuElement extends Um
41
41
  UmbTextStyles,
42
42
  css `
43
43
  h3 {
44
- margin: var(--uui-size-5) 0;
44
+ display: flex;
45
+ align-items: center;
46
+ height: var(--umb-header-layout-height);
47
+ margin: 0;
45
48
  padding: var(--uui-size-4) var(--uui-size-8);
49
+ box-sizing: border-box;
46
50
  font-size: 14px;
47
51
  }
48
52
  `,
@@ -6,6 +6,6 @@ export declare class UmbObjectTypeRepository extends UmbControllerBase implement
6
6
  constructor(host: UmbControllerHost);
7
7
  read(): Promise<{
8
8
  data: import("@umbraco-cms/backoffice/external/backend-api").PagedObjectTypeResponseModel;
9
- error: Error | import("@umbraco-cms/backoffice/resources").UmbError | import("@umbraco-cms/backoffice/resources").UmbApiError | import("@umbraco-cms/backoffice/resources").UmbCancelError | undefined;
9
+ error: import("@umbraco-cms/backoffice/resources").UmbApiError | import("@umbraco-cms/backoffice/resources").UmbCancelError | undefined;
10
10
  }>;
11
11
  }
@@ -18,7 +18,9 @@ export default defineConfig({
18
18
  },
19
19
  {
20
20
  name: '@hey-api/sdk',
21
- asClass: true
21
+ asClass: true,
22
+ classNameBuilder: (name) => `${name}Service`,
23
+ responseStyle: 'fields',
22
24
  }
23
25
  ]
24
26
  });
@@ -10,9 +10,9 @@
10
10
  "@types/diff": "^7.0.2",
11
11
  "diff": "^7.0.0",
12
12
  "uuid": "^11.1.0",
13
- "@hey-api/client-fetch": "^0.10.0"
13
+ "@hey-api/client-fetch": "^0.12.0"
14
14
  },
15
15
  "devDependencies": {
16
- "@hey-api/openapi-ts": "^0.66.6"
16
+ "@hey-api/openapi-ts": "^0.71.0"
17
17
  }
18
18
  }
@@ -1,3 +1,3 @@
1
1
  export const UMB_UNSUPPORTED_EDITOR_SCHEMA_ALIASES = {
2
- block: ['Umbraco.ImageCropper', 'Umbraco.UploadField'],
2
+ block: ['Umbraco.ImageCropper'],
3
3
  };
@@ -25,9 +25,7 @@ export declare abstract class UmbRecycleBinRepositoryBase extends UmbRepositoryB
25
25
  * @returns {*}
26
26
  * @memberof UmbRecycleBinRepositoryBase
27
27
  */
28
- requestTrash(args: UmbRecycleBinTrashRequestArgs): Promise<{
29
- error: Error | import("../resources/umb-error.js").UmbError | import("../resources/umb-error.js").UmbApiError | import("../resources/umb-error.js").UmbCancelError | undefined;
30
- }>;
28
+ requestTrash(args: UmbRecycleBinTrashRequestArgs): Promise<import("@umbraco-cms/backoffice/repository").UmbDataSourceResponse<unknown>>;
31
29
  /**
32
30
  * Requests to restore an item.
33
31
  * @param {UmbRecycleBinRestoreRequestArgs} args
@@ -35,7 +33,7 @@ export declare abstract class UmbRecycleBinRepositoryBase extends UmbRepositoryB
35
33
  * @memberof UmbRecycleBinRepositoryBase
36
34
  */
37
35
  requestRestore(args: UmbRecycleBinRestoreRequestArgs): Promise<{
38
- error: Error | import("../resources/umb-error.js").UmbError | import("../resources/umb-error.js").UmbApiError | import("../resources/umb-error.js").UmbCancelError | undefined;
36
+ error: Error | import("../resources/umb-error.js").UmbApiError | import("../resources/umb-error.js").UmbCancelError | import("../resources/umb-error.js").UmbError | undefined;
39
37
  }>;
40
38
  /**
41
39
  * Requests to empty the recycle bin.
@@ -10,7 +10,6 @@ import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository';
10
10
  export class UmbRecycleBinRepositoryBase extends UmbRepositoryBase {
11
11
  #recycleBinSource;
12
12
  #notificationContext;
13
- #requestTrashSuccessNotification;
14
13
  #requestRestoreSuccessNotification;
15
14
  /**
16
15
  * Creates an instance of UmbRecycleBinRepositoryBase.
@@ -32,13 +31,7 @@ export class UmbRecycleBinRepositoryBase extends UmbRepositoryBase {
32
31
  * @memberof UmbRecycleBinRepositoryBase
33
32
  */
34
33
  async requestTrash(args) {
35
- const { error } = await this.#recycleBinSource.trash(args);
36
- if (!error) {
37
- this.#requestTrashSuccessNotification?.close();
38
- const notification = { data: { message: `Trashed` } };
39
- this.#requestTrashSuccessNotification = this.#notificationContext?.peek('positive', notification);
40
- }
41
- return { error };
34
+ return this.#recycleBinSource.trash(args);
42
35
  }
43
36
  /**
44
37
  * Requests to restore an item.
@@ -49,6 +42,7 @@ export class UmbRecycleBinRepositoryBase extends UmbRepositoryBase {
49
42
  async requestRestore(args) {
50
43
  const { error } = await this.#recycleBinSource.restore(args);
51
44
  if (!error) {
45
+ // TODO: keep this notification until we refresh the tree/structure correctly after the action
52
46
  this.#requestRestoreSuccessNotification?.close();
53
47
  const notification = { data: { message: `Restored` } };
54
48
  this.#requestRestoreSuccessNotification = this.#notificationContext?.peek('positive', notification);
@@ -61,11 +55,6 @@ export class UmbRecycleBinRepositoryBase extends UmbRepositoryBase {
61
55
  * @memberof UmbRecycleBinRepositoryBase
62
56
  */
63
57
  async requestEmpty() {
64
- const { error } = await this.#recycleBinSource.empty();
65
- if (!error) {
66
- const notification = { data: { message: `Recycle Bin Emptied` } };
67
- this.#notificationContext?.peek('positive', notification);
68
- }
69
58
  return this.#recycleBinSource.empty();
70
59
  }
71
60
  /**
@@ -1,11 +1,12 @@
1
1
  import type { UmbDataSourceResponse } from '../data-source-response.interface.js';
2
2
  import type { UmbReadDetailDataSource } from './read/index.js';
3
+ import type { UmbDeepPartialObject } from '@umbraco-cms/backoffice/utils';
3
4
  import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
4
5
  export interface UmbDetailDataSourceConstructor<DetailType = any, UmbDetailDataSourceType extends UmbDetailDataSource<DetailType> = UmbDetailDataSource<DetailType>> {
5
6
  new (host: UmbControllerHost): UmbDetailDataSourceType;
6
7
  }
7
8
  export interface UmbDetailDataSource<DetailType> extends UmbReadDetailDataSource<DetailType> {
8
- createScaffold(preset?: Partial<DetailType>): Promise<UmbDataSourceResponse<DetailType>>;
9
+ createScaffold(preset?: UmbDeepPartialObject<DetailType>): Promise<UmbDataSourceResponse<DetailType>>;
9
10
  create(data: DetailType, parentUnique: string | null): Promise<UmbDataSourceResponse<DetailType>>;
10
11
  update(data: DetailType): Promise<UmbDataSourceResponse<DetailType>>;
11
12
  delete(unique: string): Promise<UmbDataSourceResponse<unknown>>;
@@ -6,24 +6,25 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
6
6
  import type { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
7
7
  import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
8
8
  import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
9
+ import type { UmbDeepPartialObject } from '@umbraco-cms/backoffice/utils';
9
10
  export declare abstract class UmbDetailRepositoryBase<DetailModelType extends UmbEntityModel, UmbDetailDataSourceType extends UmbDetailDataSource<DetailModelType> = UmbDetailDataSource<DetailModelType>> extends UmbRepositoryBase implements UmbDetailRepository<DetailModelType>, UmbApi {
10
11
  #private;
11
12
  protected detailDataSource: UmbDetailDataSourceType;
12
13
  constructor(host: UmbControllerHost, detailSource: UmbDetailDataSourceConstructor<DetailModelType>, detailStoreContextAlias: string | UmbContextToken<any, any>);
13
14
  /**
14
15
  * Creates a scaffold
15
- * @param {Partial<DetailModelType>} [preset]
16
+ * @param {UmbDeepPartialObject<DetailModelType>} [preset]
16
17
  * @returns {*}
17
18
  * @memberof UmbDetailRepositoryBase
18
19
  */
19
- createScaffold(preset?: Partial<DetailModelType>): Promise<UmbRepositoryResponse<DetailModelType>>;
20
+ createScaffold(preset?: UmbDeepPartialObject<DetailModelType>): Promise<UmbRepositoryResponse<DetailModelType>>;
20
21
  /**
21
22
  * Requests the detail for the given unique
22
23
  * @param {string} unique
23
24
  * @returns {*}
24
25
  * @memberof UmbDetailRepositoryBase
25
26
  */
26
- requestByUnique(unique: string): Promise<UmbRepositoryResponseWithAsObservable<DetailModelType>>;
27
+ requestByUnique(unique: string): Promise<UmbRepositoryResponseWithAsObservable<DetailModelType | undefined>>;
27
28
  /**
28
29
  * Returns a promise with an observable of the detail for the given unique
29
30
  * @param {DetailModelType} model
@@ -40,7 +41,7 @@ export declare abstract class UmbDetailRepositoryBase<DetailModelType extends Um
40
41
  */
41
42
  save(model: DetailModelType): Promise<{
42
43
  data: DetailModelType | undefined;
43
- error: Error | import("../../resources/umb-error.js").UmbError | import("../../resources/umb-error.js").UmbApiError | import("../../resources/umb-error.js").UmbCancelError | undefined;
44
+ error: Error | import("../../resources/umb-error.js").UmbApiError | import("../../resources/umb-error.js").UmbCancelError | import("../../resources/umb-error.js").UmbError | undefined;
44
45
  }>;
45
46
  /**
46
47
  * Deletes the detail for the given unique
@@ -49,7 +50,7 @@ export declare abstract class UmbDetailRepositoryBase<DetailModelType extends Um
49
50
  * @memberof UmbDetailRepositoryBase
50
51
  */
51
52
  delete(unique: string): Promise<{
52
- error: Error | import("../../resources/umb-error.js").UmbError | import("../../resources/umb-error.js").UmbApiError | import("../../resources/umb-error.js").UmbCancelError | undefined;
53
+ error: Error | import("../../resources/umb-error.js").UmbApiError | import("../../resources/umb-error.js").UmbCancelError | import("../../resources/umb-error.js").UmbError | undefined;
53
54
  }>;
54
55
  /**
55
56
  * Returns a promise with an observable of the detail for the given unique
@@ -19,7 +19,7 @@ export class UmbDetailRepositoryBase extends UmbRepositoryBase {
19
19
  }
20
20
  /**
21
21
  * Creates a scaffold
22
- * @param {Partial<DetailModelType>} [preset]
22
+ * @param {UmbDeepPartialObject<DetailModelType>} [preset]
23
23
  * @returns {*}
24
24
  * @memberof UmbDetailRepositoryBase
25
25
  */
@@ -43,7 +43,7 @@ export class UmbDetailRepositoryBase extends UmbRepositoryBase {
43
43
  return {
44
44
  data,
45
45
  error,
46
- asObservable: () => this.#detailStore.byUnique(unique),
46
+ asObservable: () => this.#detailStore?.byUnique(unique),
47
47
  };
48
48
  }
49
49
  /**
@@ -2,6 +2,6 @@ import type { UmbRepositoryResponseWithAsObservable } from '../../types.js';
2
2
  import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
3
3
  import type { Observable } from '@umbraco-cms/backoffice/external/rxjs';
4
4
  export interface UmbReadDetailRepository<DetailModelType> extends UmbApi {
5
- requestByUnique(unique: string): Promise<UmbRepositoryResponseWithAsObservable<DetailModelType>>;
5
+ requestByUnique(unique: string): Promise<UmbRepositoryResponseWithAsObservable<DetailModelType | undefined>>;
6
6
  byUnique(unique: string): Promise<Observable<DetailModelType | undefined>>;
7
7
  }
@@ -18,13 +18,13 @@ export declare class UmbItemRepositoryBase<ItemType extends {
18
18
  * @memberof UmbItemRepositoryBase
19
19
  */
20
20
  requestItems(uniques: Array<string>): Promise<{
21
+ asObservable: () => undefined;
21
22
  data?: undefined;
22
23
  error?: undefined;
23
- asObservable?: undefined;
24
24
  } | {
25
25
  data: ItemType[] | undefined;
26
- error: any;
27
- asObservable: () => import("rxjs").Observable<ItemType[]>;
26
+ error: Error | import("../../resources/umb-error.js").UmbApiError | import("../../resources/umb-error.js").UmbCancelError | import("../../resources/umb-error.js").UmbError | undefined;
27
+ asObservable: () => import("rxjs").Observable<ItemType[]> | undefined;
28
28
  }>;
29
29
  /**
30
30
  * Returns a promise with an observable of the items for the given uniques
@@ -25,18 +25,15 @@ export class UmbItemRepositoryBase extends UmbRepositoryBase {
25
25
  await this._init;
26
26
  }
27
27
  catch {
28
- return {};
28
+ return {
29
+ asObservable: () => undefined,
30
+ };
29
31
  }
30
32
  const { data, error } = await this.#itemSource.getItems(uniques);
31
- if (!this._itemStore) {
32
- // If store is gone, then we are most likely in a disassembled state.
33
- return {};
34
- }
35
33
  if (data) {
36
- this._itemStore.appendItems(data);
34
+ this._itemStore?.appendItems(data);
37
35
  }
38
- // TODO: Fix the type of error, it should be UmbApiError, but currently it is any.
39
- return { data, error: error, asObservable: () => this._itemStore.items(uniques) };
36
+ return { data, error, asObservable: () => this._itemStore?.items(uniques) };
40
37
  }
41
38
  /**
42
39
  * Returns a promise with an observable of the items for the given uniques
@@ -1,11 +1,7 @@
1
+ import type { UmbRepositoryResponseWithAsObservable } from '../types.js';
1
2
  import type { Observable } from '@umbraco-cms/backoffice/external/rxjs';
2
3
  import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
3
- import type { UmbProblemDetails } from '@umbraco-cms/backoffice/resources';
4
4
  export interface UmbItemRepository<ItemType> extends UmbApi {
5
- requestItems: (uniques: string[]) => Promise<{
6
- data?: Array<ItemType> | undefined;
7
- error?: UmbProblemDetails | undefined;
8
- asObservable?: () => Observable<Array<ItemType>>;
9
- }>;
5
+ requestItems: (uniques: string[]) => Promise<UmbRepositoryResponseWithAsObservable<ItemType[] | undefined>>;
10
6
  items: (uniques: string[]) => Promise<Observable<Array<ItemType>> | undefined>;
11
7
  }
@@ -32,7 +32,7 @@ export declare abstract class UmbItemServerDataSourceBase<ServerItemType, Client
32
32
  */
33
33
  getItems(uniques: Array<string>): Promise<{
34
34
  data: ClientItemType[] | undefined;
35
- error: Error | import("@umbraco-cms/backoffice/resources").UmbError | import("@umbraco-cms/backoffice/resources").UmbApiError | import("@umbraco-cms/backoffice/resources").UmbCancelError | undefined;
35
+ error: ((Error | import("@umbraco-cms/backoffice/resources").UmbApiError | import("@umbraco-cms/backoffice/resources").UmbCancelError | import("@umbraco-cms/backoffice/resources").UmbError) & (import("@umbraco-cms/backoffice/resources").UmbApiError | import("@umbraco-cms/backoffice/resources").UmbCancelError)) | undefined;
36
36
  }>;
37
37
  protected _getMappedItems(items: Array<ServerItemType> | undefined): Array<ClientItemType> | undefined;
38
38
  }
@@ -184,6 +184,8 @@ export class UmbRepositoryItemsManager extends UmbControllerBase {
184
184
  }
185
185
  }
186
186
  #sortByUniques(data) {
187
+ if (!data)
188
+ return [];
187
189
  const uniques = this.getUniques();
188
190
  return [...data].sort((a, b) => {
189
191
  const aIndex = uniques.indexOf(this.#getUnique(a) ?? '');
@@ -8,7 +8,12 @@ export interface UmbRepositoryResponse<T> extends UmbDataSourceResponse<T> {
8
8
  }
9
9
  export interface UmbRepositoryErrorResponse extends UmbDataSourceErrorResponse {
10
10
  }
11
- export interface UmbRepositoryResponseWithAsObservable<T> extends UmbRepositoryResponse<T> {
12
- asObservable: () => Observable<T | undefined>;
11
+ /**
12
+ * Interface for a repository that can return a paged model.
13
+ * @template T - The type of items in the paged model.
14
+ * @template T$ - The type of items returned by the asObservable method, defaults to T. You should only use this if you want to return a different type from the asObservable method.
15
+ */
16
+ export interface UmbRepositoryResponseWithAsObservable<T, T$ = T> extends UmbRepositoryResponse<T> {
17
+ asObservable: () => Observable<T$> | undefined;
13
18
  }
14
19
  export type * from './data-mapper/mapping/types.js';
@@ -38,4 +38,11 @@ export declare class UmbApiInterceptorController extends UmbControllerBase {
38
38
  * @internal
39
39
  */
40
40
  addUmbNotificationsInterceptor(client: typeof umbHttpClient): void;
41
+ /**
42
+ * Listen for authorization signal to retry GET-requests that received a 401 Unauthorized response.
43
+ * This will retry all pending requests that received a 401 Unauthorized response after re-authentication.
44
+ * It will also notify the user about non-GET requests that received a 401 Unauthorized response.
45
+ * @internal
46
+ */
47
+ handleUnauthorizedAuthRetry(): void;
41
48
  }
@@ -3,17 +3,33 @@ import { isUmbNotifications, UMB_NOTIFICATION_HEADER } from './isUmbNotification
3
3
  import { isProblemDetailsLike } from './apiTypeValidators.function.js';
4
4
  import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
5
5
  import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';
6
+ const MAX_RETRIES = 3;
6
7
  export class UmbApiInterceptorController extends UmbControllerBase {
8
+ /**
9
+ * Store pending requests that received a 401 response and are waiting for re-authentication.
10
+ * This is used to retry the requests after re-authentication.
11
+ */
12
+ #pending401Requests = [];
13
+ /**
14
+ * Store non-GET requests that received a 401 response.
15
+ * This is used to notify the user about actions that could not be completed due to session expiration.
16
+ * These requests will not be retried, as they are not idempotent.
17
+ * Instead, we will notify the user about these requests after re-authentication.
18
+ */
19
+ #nonGet401Requests = [];
7
20
  /**
8
21
  * Binds the default interceptors to the client.
9
22
  * This includes the auth response interceptor, the error interceptor and the umb-notifications interceptor.
10
23
  * @param {umbHttpClient} client The OpenAPI client to add the interceptor to. It can be any client supporting Response and Request interceptors.
11
24
  */
12
25
  bindDefaultInterceptors(client) {
26
+ // Add the default observables to the instance
27
+ this.handleUnauthorizedAuthRetry();
28
+ // Add the default interceptors to the client
13
29
  this.addAuthResponseInterceptor(client);
30
+ this.addForbiddenResponseInterceptor(client);
14
31
  this.addUmbGeneratedResourceInterceptor(client);
15
32
  this.addUmbNotificationsInterceptor(client);
16
- this.addForbiddenResponseInterceptor(client);
17
33
  this.addErrorInterceptor(client);
18
34
  }
19
35
  /**
@@ -22,16 +38,57 @@ export class UmbApiInterceptorController extends UmbControllerBase {
22
38
  * @internal
23
39
  */
24
40
  addAuthResponseInterceptor(client) {
25
- client.interceptors.response.use(async (response) => {
26
- if (response.status === 401) {
27
- // See if we can get the UmbAuthContext and let it know the user is timed out
28
- const authContext = await this.getContext(UMB_AUTH_CONTEXT, { preventTimeout: true });
29
- if (!authContext) {
30
- throw new Error('Could not get the auth context');
31
- }
41
+ client.interceptors.response.use(async (response, request, requestConfig) => {
42
+ if (response.status !== 401)
43
+ return response;
44
+ // Build a plain ProblemDetails object for the response body
45
+ const problemDetails = {
46
+ status: response.status,
47
+ title: response.statusText || 'Unauthorized request, waiting for re-authentication.',
48
+ detail: undefined,
49
+ errors: undefined,
50
+ type: 'Unauthorized',
51
+ stack: undefined,
52
+ };
53
+ const newResponse = this.#createResponse(problemDetails, response);
54
+ const authContext = await this.getContext(UMB_AUTH_CONTEXT, { preventTimeout: true });
55
+ if (!authContext)
56
+ throw new Error('Could not get the auth context');
57
+ // Only retry for GET requests
58
+ if (request.method !== 'GET') {
59
+ // Collect info for later notification
60
+ this.#nonGet401Requests.push({ request, requestConfig });
61
+ // Show login overlay (only once per burst, as before)
32
62
  authContext.timeOut();
63
+ return newResponse;
33
64
  }
34
- return response;
65
+ // Find if this request is already in the queue and increment retries
66
+ let retries = 1;
67
+ const existing = this.#pending401Requests.find((req) => req.request === request && req.requestConfig === requestConfig);
68
+ if (existing) {
69
+ retries = existing.retries + 1;
70
+ if (retries > MAX_RETRIES) {
71
+ return newResponse;
72
+ }
73
+ existing.retries = retries;
74
+ }
75
+ // Return a promise that will resolve when re-auth completes
76
+ return new Promise((resolve, reject) => {
77
+ this.#pending401Requests.push({
78
+ request,
79
+ requestConfig,
80
+ retry: async () => {
81
+ const { data, response: retryResponse } = await client.request(requestConfig);
82
+ return this.#createResponse(data, retryResponse);
83
+ },
84
+ resolve,
85
+ reject,
86
+ retries,
87
+ });
88
+ // Show login overlay
89
+ authContext.timeOut();
90
+ console.log('[Interceptor] 401 Unauthorized - queuing request for re-authentication and have tried', retries - 1, 'times before', requestConfig);
91
+ });
35
92
  });
36
93
  }
37
94
  /**
@@ -40,13 +97,20 @@ export class UmbApiInterceptorController extends UmbControllerBase {
40
97
  * @internal
41
98
  */
42
99
  addForbiddenResponseInterceptor(client) {
43
- client.interceptors.response.use(async (response) => {
44
- if (response.status === 403) {
45
- const headline = 'Permission Denied';
46
- const message = 'You do not have the necessary permissions to complete the requested action. If you believe this is in error, please reach out to your administrator.';
47
- this.#peekError(headline, message, null);
48
- }
49
- return response;
100
+ client.interceptors.response.use((response) => {
101
+ if (response.status !== 403)
102
+ return response;
103
+ // Build a plain ProblemDetails object for the response body
104
+ const problemDetails = {
105
+ status: response.status,
106
+ title: response.statusText ||
107
+ 'You do not have the necessary permissions to complete the requested action. If you believe this is in error, please reach out to your administrator.',
108
+ detail: undefined,
109
+ errors: undefined,
110
+ type: 'Unauthorized',
111
+ stack: undefined,
112
+ };
113
+ return this.#createResponse(problemDetails, response);
50
114
  });
51
115
  }
52
116
  /**
@@ -55,19 +119,15 @@ export class UmbApiInterceptorController extends UmbControllerBase {
55
119
  * @internal
56
120
  */
57
121
  addUmbGeneratedResourceInterceptor(client) {
58
- client.interceptors.response.use(async (response) => {
59
- if (!response.headers.has('Umb-Generated-Resource')) {
122
+ client.interceptors.response.use((response) => {
123
+ if (!response.headers.has('Umb-Generated-Resource'))
60
124
  return response;
61
- }
62
125
  const generatedResource = response.headers.get('Umb-Generated-Resource');
63
126
  if (generatedResource === null) {
64
127
  return response;
65
128
  }
66
- // Generate new response body with the generated resource, which is a guid
67
- const newResponse = new Response(generatedResource, {
68
- ...response,
69
- });
70
- return newResponse;
129
+ // Return a new response with the generated resource in the body (plain text)
130
+ return this.#createResponse(generatedResource, response);
71
131
  });
72
132
  }
73
133
  /**
@@ -77,40 +137,49 @@ export class UmbApiInterceptorController extends UmbControllerBase {
77
137
  */
78
138
  addErrorInterceptor(client) {
79
139
  client.interceptors.response.use(async (response) => {
140
+ // If the response is ok, we just return the response
80
141
  if (response.ok)
81
142
  return response;
82
- // Handle 500 errors - we need to show a notification
83
- if (response.status === 500) {
84
- try {
85
- // Clones the response to read the body
86
- const origResponse = response.clone();
87
- const error = await origResponse.json();
88
- // If there is no JSON in the error, we just return the response
89
- if (!error)
90
- return response;
91
- // Check if the error is a problem details object
92
- if (!isProblemDetailsLike(error)) {
93
- // If not, we just return the response
94
- return response;
95
- }
96
- let headline = error.title ?? 'Server Error';
97
- let message = 'A fatal server error occurred. If this continues, please reach out to your administrator.';
98
- // Special handling for ObjectCacheAppCache corruption errors, which we are investigating
99
- if (error.detail?.includes('ObjectCacheAppCache') ||
100
- error.detail?.includes('Umbraco.Cms.Infrastructure.Scoping.Scope.DisposeLastScope()')) {
101
- headline = 'Please restart the server';
102
- message =
103
- 'The Umbraco object cache is corrupt, but your action may still have been executed. Please restart the server to reset the cache. This is a work in progress.';
104
- }
105
- this.#peekError(headline, message, error.errors);
106
- }
107
- catch (e) {
108
- // Ignore JSON parse error
109
- console.error('[Interceptor] Caught a 500 Error, but failed parsing error body (expected JSON)', e);
143
+ // We will check if it is not a 401 or 403 error, as that is handled by other interceptors
144
+ if (response.status === 401 || response.status === 403)
145
+ return response;
146
+ // Special handling for 404 Not Found
147
+ if (response.status === 404) {
148
+ const notFoundProblemDetails = {
149
+ status: response.status,
150
+ title: response.statusText || 'The requested resource was not found.',
151
+ detail: undefined,
152
+ errors: undefined,
153
+ type: 'NotFound',
154
+ stack: undefined,
155
+ };
156
+ return this.#createResponse(notFoundProblemDetails, response);
157
+ }
158
+ // For all other errors, we will build a ProblemDetails object
159
+ let problemDetails = {
160
+ status: response.status,
161
+ title: response.statusText ||
162
+ 'A fatal server error occurred. If this continues, please reach out to your administrator.',
163
+ detail: undefined,
164
+ errors: undefined,
165
+ type: 'ServerError',
166
+ stack: undefined,
167
+ };
168
+ try {
169
+ // Clones the response to read the body
170
+ const origResponse = response.clone();
171
+ const errorBody = await origResponse.json();
172
+ // If there is JSON in the error, we will try to parse it as a ProblemDetails object
173
+ if (errorBody && isProblemDetailsLike(errorBody)) {
174
+ // Merge the parsed problem details into our default
175
+ problemDetails = errorBody;
110
176
  }
111
177
  }
112
- // Return original response
113
- return response;
178
+ catch (e) {
179
+ // Ignore JSON parse error
180
+ console.error('[Interceptor] Caught a server error, but failed parsing error body (expected JSON)', e);
181
+ }
182
+ return this.#createResponse(problemDetails, response);
114
183
  });
115
184
  }
116
185
  /**
@@ -141,6 +210,63 @@ export class UmbApiInterceptorController extends UmbControllerBase {
141
210
  return response;
142
211
  });
143
212
  }
213
+ /**
214
+ * Listen for authorization signal to retry GET-requests that received a 401 Unauthorized response.
215
+ * This will retry all pending requests that received a 401 Unauthorized response after re-authentication.
216
+ * It will also notify the user about non-GET requests that received a 401 Unauthorized response.
217
+ * @internal
218
+ */
219
+ handleUnauthorizedAuthRetry() {
220
+ this.consumeContext(UMB_AUTH_CONTEXT, (context) => {
221
+ this.observe(context?.authorizationSignal, () => {
222
+ console.log('[Interceptor] 401 Unauthorized - re-authentication completed');
223
+ // On auth, retry all pending requests
224
+ const requests = this.#pending401Requests.splice(0, this.#pending401Requests.length);
225
+ requests.forEach((req) => {
226
+ console.log('[Interceptor] 401 Unauthorized - retrying request after re-authentication', req.requestConfig);
227
+ req.retry().then(req.resolve).catch(req.reject);
228
+ });
229
+ // Notify about non-GET 401s after successful re-auth
230
+ if (this.#nonGet401Requests.length > 0) {
231
+ const errors = {};
232
+ this.#nonGet401Requests.forEach((req) => {
233
+ errors[`${req.request.method} ${req.request.url}`] = `Request failed with 401 Unauthorized.`;
234
+ });
235
+ this.#peekError('Some actions were not completed', 'Some actions could not be completed because your session expired. Please try again.', errors, 'warning');
236
+ this.#nonGet401Requests.length = 0; // Clear after notifying
237
+ }
238
+ }, '_authClearNonGet401Requests');
239
+ });
240
+ }
241
+ /**
242
+ * Helper to create a new Response with correct Content-Type.
243
+ * @param {unknown} body The body of the response, can be a string or an object.
244
+ * @param {Response} originalResponse The original response to copy status and headers from.
245
+ * @returns {Response} The new Response object with the correct Content-Type and body.
246
+ */
247
+ #createResponse(body, originalResponse) {
248
+ const isString = typeof body === 'string';
249
+ const contentType = isString ? 'text/plain' : 'application/json';
250
+ const responseBody = isString ? body : JSON.stringify(body);
251
+ // Construct new headers but preserve "X-" headers from the original response
252
+ const headersOverride = {};
253
+ originalResponse.headers.forEach((value, key) => {
254
+ if (key.toLowerCase().startsWith('x-')) {
255
+ headersOverride[key] = value;
256
+ }
257
+ });
258
+ return new Response(responseBody, {
259
+ status: originalResponse.status,
260
+ statusText: originalResponse.statusText,
261
+ headers: {
262
+ ...headersOverride,
263
+ 'Content-Type': contentType,
264
+ },
265
+ });
266
+ }
267
+ /**
268
+ * Helper to show a notification error.
269
+ */
144
270
  async #peekError(headline, message, details, color) {
145
271
  // Store the host for usage in the following async context
146
272
  const host = this._host;