@umbraco-cms/backoffice 16.0.0-rc → 16.0.0-rc3

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 (494) hide show
  1. package/dist-cms/apps/preview/apps/manifests.js +7 -0
  2. package/dist-cms/apps/preview/apps/preview-segment.element.d.ts +16 -0
  3. package/dist-cms/apps/preview/apps/preview-segment.element.js +96 -0
  4. package/dist-cms/apps/preview/preview.context.d.ts +9 -6
  5. package/dist-cms/apps/preview/preview.context.js +61 -24
  6. package/dist-cms/assets/lang/{da-dk.js → da.js} +3 -2
  7. package/dist-cms/assets/lang/{da-dk.ts → da.ts} +3 -2
  8. package/dist-cms/assets/lang/en-us.js +19 -2354
  9. package/dist-cms/assets/lang/en-us.ts +22 -2548
  10. package/dist-cms/assets/lang/en.js +244 -198
  11. package/dist-cms/assets/lang/en.ts +250 -216
  12. package/dist-cms/assets/lang/pt-br.d.ts +2 -2
  13. package/dist-cms/assets/lang/pt-br.ts +2 -2
  14. package/dist-cms/assets/lang/pt.d.ts +13 -0
  15. package/dist-cms/assets/lang/pt.js +1 -0
  16. package/dist-cms/assets/lang/pt.ts +12 -0
  17. package/dist-cms/custom-elements.json +116 -16
  18. package/dist-cms/libs/observable-api/states/array-state.d.ts +6 -6
  19. package/dist-cms/libs/observable-api/states/array-state.js +3 -3
  20. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-properties.element.d.ts +1 -1
  21. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-properties.element.js +7 -7
  22. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-property.element.js +1 -1
  23. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.js +6 -0
  24. package/dist-cms/packages/block/block-grid/property-editors/block-grid-area-type-permission/block-grid-area-type-permission.element.d.ts +2 -3
  25. package/dist-cms/packages/block/block-grid/property-editors/block-grid-area-type-permission/block-grid-area-type-permission.element.js +8 -3
  26. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +6 -0
  27. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.js +7 -0
  28. package/dist-cms/packages/block/block-type/components/input-block-type/input-block-type.element.js +7 -2
  29. package/dist-cms/packages/clipboard/clipboard-entry/picker/clipboard-entry-picker.element.js +1 -1
  30. package/dist-cms/packages/clipboard/property/value-translator/copy/clipboard-copy-translator-value-resolver.js +6 -1
  31. package/dist-cms/packages/content/content/controller/merge-content-variant-data.controller.js +1 -0
  32. package/dist-cms/packages/content/content/property-dataset-context/element-property-dataset.context.js +4 -1
  33. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.d.ts +8 -2
  34. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.js +20 -13
  35. package/dist-cms/packages/content/content/workspace/views/edit/content-editor-properties.element.d.ts +1 -1
  36. package/dist-cms/packages/content/content/workspace/views/edit/content-editor-properties.element.js +7 -7
  37. package/dist-cms/packages/content/content/workspace/views/edit/content-editor-property.element.js +1 -1
  38. package/dist-cms/packages/content/content-type/global-components/content-type-workspace-editor-header.element.js +4 -1
  39. package/dist-cms/packages/content/content-type/modals/composition-picker/composition-picker-modal.element.d.ts +1 -0
  40. package/dist-cms/packages/content/content-type/modals/composition-picker/composition-picker-modal.element.js +18 -2
  41. package/dist-cms/packages/content/content-type/modals/composition-picker/composition-picker-modal.token.d.ts +1 -0
  42. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +21 -3
  43. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.js +62 -43
  44. package/dist-cms/packages/content/content-type/workspace/content-type-workspace-context-base.js +1 -1
  45. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-properties.element.js +36 -3
  46. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.js +25 -1
  47. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor.element.js +17 -6
  48. package/dist-cms/packages/core/auth/auth.context.js +1 -1
  49. package/dist-cms/packages/core/auth/modals/umb-app-auth-modal.element.js +5 -5
  50. package/dist-cms/packages/core/backend-api/types.gen.d.ts +2 -0
  51. package/dist-cms/packages/core/collection/default/collection-default.context.d.ts +2 -0
  52. package/dist-cms/packages/core/collection/default/collection-default.context.js +22 -1
  53. package/dist-cms/packages/core/collection/default/collection-default.element.d.ts +1 -0
  54. package/dist-cms/packages/core/collection/default/collection-default.element.js +9 -1
  55. package/dist-cms/packages/core/collection/extensions/collection.extension.d.ts +1 -0
  56. package/dist-cms/packages/core/collection/types.d.ts +1 -0
  57. package/dist-cms/packages/core/components/body-layout/body-layout.element.js +7 -8
  58. package/dist-cms/packages/core/components/dropdown/dropdown.element.d.ts +4 -2
  59. package/dist-cms/packages/core/components/dropdown/dropdown.element.js +19 -13
  60. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.d.ts +1 -1
  61. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.js +16 -12
  62. package/dist-cms/packages/core/culture/manifests.d.ts +1 -1
  63. package/dist-cms/packages/core/entity/constants.d.ts +1 -0
  64. package/dist-cms/packages/core/entity/constants.js +1 -0
  65. package/dist-cms/packages/core/entity/contexts/parent/constants.d.ts +1 -0
  66. package/dist-cms/packages/core/entity/contexts/parent/constants.js +1 -0
  67. package/dist-cms/packages/core/entity/contexts/parent/index.d.ts +1 -0
  68. package/dist-cms/packages/core/entity/contexts/parent/index.js +1 -0
  69. package/dist-cms/packages/core/entity/contexts/parent/parent.entity-context-token.d.ts +3 -0
  70. package/dist-cms/packages/core/entity/contexts/parent/parent.entity-context-token.js +2 -0
  71. package/dist-cms/packages/core/entity/contexts/parent/parent.entity-context.d.ts +26 -0
  72. package/dist-cms/packages/core/entity/contexts/parent/parent.entity-context.js +33 -0
  73. package/dist-cms/packages/core/entity/index.d.ts +1 -0
  74. package/dist-cms/packages/core/entity/index.js +1 -0
  75. package/dist-cms/packages/core/entity-action/common/create/create.action.js +1 -0
  76. package/dist-cms/packages/core/entity-action/default/entity-action.element.d.ts +2 -1
  77. package/dist-cms/packages/core/entity-action/default/entity-action.element.js +5 -4
  78. package/dist-cms/packages/core/entity-action/global-components/entity-actions-table-column-view/entity-actions-table-column-view.element.d.ts +2 -2
  79. package/dist-cms/packages/core/entity-action/global-components/entity-actions-table-column-view/entity-actions-table-column-view.element.js +4 -1
  80. package/dist-cms/packages/core/entity-item/entity-item-ref/entity-item-ref.element.d.ts +9 -0
  81. package/dist-cms/packages/core/entity-item/entity-item-ref/entity-item-ref.element.js +80 -2
  82. package/dist-cms/packages/core/entity-item/index.d.ts +1 -0
  83. package/dist-cms/packages/core/entity-item/index.js +1 -0
  84. package/dist-cms/packages/core/entity-item/item-data-api-get-request-controller/index.d.ts +1 -0
  85. package/dist-cms/packages/core/entity-item/item-data-api-get-request-controller/index.js +1 -0
  86. package/dist-cms/packages/core/entity-item/item-data-api-get-request-controller/item-data-api-get-request.controller.d.ts +12 -0
  87. package/dist-cms/packages/core/entity-item/item-data-api-get-request-controller/item-data-api-get-request.controller.js +46 -0
  88. package/dist-cms/packages/core/entity-item/item-data-api-get-request-controller/types.d.ts +7 -0
  89. package/dist-cms/packages/core/entity-item/item-data-api-get-request-controller/types.js +1 -0
  90. package/dist-cms/packages/core/entity-item/types.d.ts +1 -0
  91. package/dist-cms/packages/core/localization/components/ui-culture-input/ui-culture-input.element.d.ts +5 -6
  92. package/dist-cms/packages/core/localization/components/ui-culture-input/ui-culture-input.element.js +57 -39
  93. package/dist-cms/packages/core/localization/manifests.js +99 -119
  94. package/dist-cms/packages/core/menu/components/menu-item-layout/menu-item-layout.element.js +8 -3
  95. package/dist-cms/packages/core/menu/index.d.ts +2 -0
  96. package/dist-cms/packages/core/menu/index.js +2 -0
  97. package/dist-cms/packages/core/menu/menu-structure-workspace-context.context-token.d.ts +3 -0
  98. package/dist-cms/packages/core/menu/menu-structure-workspace-context.context-token.js +2 -0
  99. package/dist-cms/packages/core/menu/menu-tree-structure-workspace-context-base.d.ts +3 -0
  100. package/dist-cms/packages/core/menu/menu-tree-structure-workspace-context-base.js +53 -10
  101. package/dist-cms/packages/core/menu/menu-variant-structure-workspace-context.context-token.d.ts +3 -0
  102. package/dist-cms/packages/core/menu/menu-variant-structure-workspace-context.context-token.js +2 -0
  103. package/dist-cms/packages/core/menu/menu-variant-structure-workspace-context.interface.d.ts +6 -0
  104. package/dist-cms/packages/core/menu/menu-variant-structure-workspace-context.interface.js +1 -0
  105. package/dist-cms/packages/core/menu/menu-variant-tree-structure-workspace-context-base.d.ts +4 -0
  106. package/dist-cms/packages/core/menu/menu-variant-tree-structure-workspace-context-base.js +55 -21
  107. package/dist-cms/packages/core/menu/section-sidebar-menu-with-entity-actions/section-sidebar-menu-with-entity-actions.element.d.ts +5 -0
  108. package/dist-cms/packages/core/menu/section-sidebar-menu-with-entity-actions/section-sidebar-menu-with-entity-actions.element.js +22 -3
  109. package/dist-cms/packages/core/picker/search/picker-search-result.element.d.ts +3 -0
  110. package/dist-cms/packages/core/picker/search/picker-search-result.element.js +13 -6
  111. package/dist-cms/packages/core/picker/search/result-item/default/default-picker-search-result-item.element.js +2 -1
  112. package/dist-cms/packages/core/picker/search/result-item/picker-search-result-item-element-base.d.ts +1 -0
  113. package/dist-cms/packages/core/picker/search/result-item/picker-search-result-item-element-base.js +5 -1
  114. package/dist-cms/packages/core/property/manifests.d.ts +1 -1
  115. package/dist-cms/packages/core/property/property-dataset/property-dataset-base-context.js +7 -2
  116. package/dist-cms/packages/core/property/property-guard-manager/variant-property-guard.manager.d.ts +15 -2
  117. package/dist-cms/packages/core/property/property-guard-manager/variant-property-guard.manager.js +22 -15
  118. package/dist-cms/packages/core/property/property-value-cloner/property-value-clone.controller.js +2 -0
  119. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-builder.controller.js +6 -1
  120. package/dist-cms/packages/core/property-action/components/property-action-menu/property-action-menu.element.js +6 -1
  121. package/dist-cms/packages/core/repository/item/item-server-data-source-base.d.ts +5 -6
  122. package/dist-cms/packages/core/repository/item/item-server-data-source-base.js +14 -9
  123. package/dist-cms/packages/core/repository/repository-details.manager.d.ts +1 -1
  124. package/dist-cms/packages/core/repository/repository-details.manager.js +6 -3
  125. package/dist-cms/packages/core/resources/api-interceptor.controller.d.ts +6 -0
  126. package/dist-cms/packages/core/resources/api-interceptor.controller.js +16 -0
  127. package/dist-cms/packages/core/resources/data-api/types.d.ts +7 -0
  128. package/dist-cms/packages/core/resources/data-api/types.js +1 -0
  129. package/dist-cms/packages/core/resources/index.d.ts +4 -7
  130. package/dist-cms/packages/core/resources/index.js +4 -7
  131. package/dist-cms/packages/core/resources/try-execute/batch-try-execute.function.d.ts +9 -0
  132. package/dist-cms/packages/core/resources/try-execute/batch-try-execute.function.js +11 -0
  133. package/dist-cms/packages/core/resources/try-execute/index.d.ts +5 -0
  134. package/dist-cms/packages/core/resources/try-execute/index.js +5 -0
  135. package/dist-cms/packages/core/resources/{try-execute.controller.d.ts → try-execute/try-execute.controller.d.ts} +2 -2
  136. package/dist-cms/packages/core/resources/{try-execute.controller.js → try-execute/try-execute.controller.js} +3 -3
  137. package/dist-cms/packages/core/resources/{tryExecute.function.d.ts → try-execute/tryExecute.function.d.ts} +1 -1
  138. package/dist-cms/packages/core/resources/{tryExecuteAndNotify.function.d.ts → try-execute/tryExecuteAndNotify.function.d.ts} +1 -1
  139. package/dist-cms/packages/core/resources/{tryXhrRequest.function.d.ts → try-execute/tryXhrRequest.function.d.ts} +1 -1
  140. package/dist-cms/packages/core/resources/{tryXhrRequest.function.js → try-execute/tryXhrRequest.function.js} +3 -3
  141. package/dist-cms/packages/core/resources/types.d.ts +1 -0
  142. package/dist-cms/packages/core/section/section-default.element.js +3 -0
  143. package/dist-cms/packages/core/sorter/sorter.controller.d.ts +23 -6
  144. package/dist-cms/packages/core/sorter/sorter.controller.js +224 -81
  145. package/dist-cms/packages/core/temporary-file/config/config.repository.d.ts +1 -0
  146. package/dist-cms/packages/core/temporary-file/config/config.repository.js +7 -3
  147. package/dist-cms/packages/core/temporary-file/config/config.server.data-source.js +1 -1
  148. package/dist-cms/packages/core/temporary-file/manifests.d.ts +1 -1
  149. package/dist-cms/packages/core/temporary-file/temporary-file-manager.class.js +15 -4
  150. package/dist-cms/packages/core/themes/manifests.d.ts +1 -1
  151. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.d.ts +1 -1
  152. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.js +17 -3
  153. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.d.ts +1 -0
  154. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.js +7 -4
  155. package/dist-cms/packages/core/tree/tree-picker-modal/tree-picker-modal.element.js +1 -1
  156. package/dist-cms/packages/core/utils/array/batch-array.d.ts +7 -0
  157. package/dist-cms/packages/core/utils/array/batch-array.js +13 -0
  158. package/dist-cms/packages/core/utils/array/index.d.ts +1 -0
  159. package/dist-cms/packages/core/utils/array/index.js +1 -0
  160. package/dist-cms/packages/core/utils/index.d.ts +1 -0
  161. package/dist-cms/packages/core/utils/index.js +1 -0
  162. package/dist-cms/packages/core/utils/media/image-size.function.d.ts +5 -3
  163. package/dist-cms/packages/core/utils/media/image-size.function.js +9 -11
  164. package/dist-cms/packages/core/validation/controllers/bind-server-validation-to-form-control.controller.js +1 -1
  165. package/dist-cms/packages/core/validation/controllers/form-control-validator.controller.js +4 -4
  166. package/dist-cms/packages/core/validation/controllers/validation-path-translation/validation-property-path-translation.controller.js +1 -0
  167. package/dist-cms/packages/core/validation/controllers/validation.controller.js +4 -4
  168. package/dist-cms/packages/core/variant/constants.d.ts +1 -0
  169. package/dist-cms/packages/core/variant/constants.js +1 -0
  170. package/dist-cms/packages/core/variant/context/constants.d.ts +1 -0
  171. package/dist-cms/packages/core/variant/context/constants.js +1 -0
  172. package/dist-cms/packages/core/variant/context/index.d.ts +1 -0
  173. package/dist-cms/packages/core/variant/context/index.js +1 -0
  174. package/dist-cms/packages/core/variant/context/variant.context.d.ts +91 -0
  175. package/dist-cms/packages/core/variant/context/variant.context.js +141 -0
  176. package/dist-cms/packages/core/variant/context/variant.context.token.d.ts +3 -0
  177. package/dist-cms/packages/core/variant/context/variant.context.token.js +2 -0
  178. package/dist-cms/packages/core/variant/index.d.ts +2 -0
  179. package/dist-cms/packages/core/variant/index.js +2 -0
  180. package/dist-cms/packages/core/workspace/components/workspace-action/common/index.d.ts +1 -0
  181. package/dist-cms/packages/core/workspace/components/workspace-action/common/index.js +1 -0
  182. package/dist-cms/packages/core/workspace/components/workspace-action/common/save/index.d.ts +2 -0
  183. package/dist-cms/packages/core/workspace/components/workspace-action/common/save/index.js +1 -0
  184. package/dist-cms/packages/core/workspace/components/workspace-action/common/save/save.action.d.ts +13 -0
  185. package/dist-cms/packages/core/workspace/components/workspace-action/common/save/save.action.js +31 -0
  186. package/dist-cms/packages/core/workspace/components/workspace-action/common/save/types.d.ts +6 -0
  187. package/dist-cms/packages/core/workspace/components/workspace-action/common/save/types.js +1 -0
  188. package/dist-cms/packages/core/workspace/components/workspace-action/common/submit/submit.action.d.ts +0 -1
  189. package/dist-cms/packages/core/workspace/components/workspace-action/common/submit/submit.action.js +0 -4
  190. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-menu-breadcrumb/workspace-menu-breadcrumb.element.d.ts +1 -1
  191. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-menu-breadcrumb/workspace-menu-breadcrumb.element.js +3 -6
  192. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.d.ts +1 -1
  193. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.js +3 -5
  194. package/dist-cms/packages/core/workspace/components/workspace-editor/workspace-editor.element.js +1 -2
  195. package/dist-cms/packages/core/workspace/components/workspace-entity-action-menu/workspace-entity-action-menu.element.js +3 -3
  196. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.js +1 -0
  197. package/dist-cms/packages/core/workspace/contexts/tokens/index.d.ts +5 -1
  198. package/dist-cms/packages/core/workspace/contexts/tokens/index.js +2 -0
  199. package/dist-cms/packages/core/workspace/contexts/tokens/saveable-workspace-context.interface.d.ts +4 -0
  200. package/dist-cms/packages/core/workspace/contexts/tokens/saveable-workspace-context.interface.js +1 -0
  201. package/dist-cms/packages/core/workspace/contexts/tokens/saveable-workspace.context-token.d.ts +4 -0
  202. package/dist-cms/packages/core/workspace/contexts/tokens/saveable-workspace.context-token.js +2 -0
  203. package/dist-cms/packages/core/workspace/contexts/tokens/submittable-tree-entity-workspace-context.interface.d.ts +36 -0
  204. package/dist-cms/packages/core/workspace/contexts/tokens/submittable-tree-entity-workspace-context.interface.js +1 -0
  205. package/dist-cms/packages/core/workspace/contexts/tokens/submittable-tree-entity-workspace.context-token.d.ts +4 -0
  206. package/dist-cms/packages/core/workspace/contexts/tokens/submittable-tree-entity-workspace.context-token.js +2 -0
  207. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.d.ts +33 -1
  208. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.js +46 -9
  209. package/dist-cms/packages/core/workspace/info-app/global-components/workspace-info-app-layout.element.js +0 -4
  210. package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.d.ts +1 -0
  211. package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.js +8 -3
  212. package/dist-cms/packages/core/workspace/workspace-property-dataset/invariant-workspace-property-dataset-context.js +4 -1
  213. package/dist-cms/packages/data-type/constants.d.ts +1 -0
  214. package/dist-cms/packages/data-type/constants.js +1 -0
  215. package/dist-cms/packages/data-type/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.js +1 -1
  216. package/dist-cms/packages/data-type/repository/item/data-type-item.server.data-source.d.ts +4 -0
  217. package/dist-cms/packages/data-type/repository/item/data-type-item.server.data-source.js +12 -3
  218. package/dist-cms/packages/data-type/search/constants.d.ts +2 -0
  219. package/dist-cms/packages/data-type/search/constants.js +2 -0
  220. package/dist-cms/packages/data-type/search/global-search/constants.d.ts +1 -0
  221. package/dist-cms/packages/data-type/search/global-search/constants.js +1 -0
  222. package/dist-cms/packages/data-type/search/global-search/manifests.d.ts +1 -0
  223. package/dist-cms/packages/data-type/search/global-search/manifests.js +22 -0
  224. package/dist-cms/packages/data-type/search/manifests.js +2 -0
  225. package/dist-cms/packages/data-type/tree/tree-item-children/collection/views/data-type-tree-item-table-collection-view.element.js +1 -0
  226. package/dist-cms/packages/dictionary/repository/item/dictionary-item.server.data-source.d.ts +4 -0
  227. package/dist-cms/packages/dictionary/repository/item/dictionary-item.server.data-source.js +12 -3
  228. package/dist-cms/packages/dictionary/search/constants.d.ts +1 -0
  229. package/dist-cms/packages/dictionary/search/constants.js +1 -0
  230. package/dist-cms/packages/dictionary/search/global-search/constants.d.ts +1 -0
  231. package/dist-cms/packages/dictionary/search/global-search/constants.js +1 -0
  232. package/dist-cms/packages/dictionary/search/global-search/manifests.d.ts +1 -0
  233. package/dist-cms/packages/dictionary/search/global-search/manifests.js +22 -0
  234. package/dist-cms/packages/dictionary/search/manifests.js +2 -0
  235. package/dist-cms/packages/documents/document-blueprints/entity-actions/create/manifests.js +1 -1
  236. package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.data-source.d.ts +4 -1
  237. package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.data-source.js +13 -6
  238. package/dist-cms/packages/documents/document-types/components/input-document-type/input-document-type.element.js +4 -1
  239. package/dist-cms/packages/documents/document-types/picker/document-type-picker-search-result-item.element.js +2 -1
  240. package/dist-cms/packages/documents/document-types/repository/item/document-type-item.server.data-source.d.ts +4 -0
  241. package/dist-cms/packages/documents/document-types/repository/item/document-type-item.server.data-source.js +13 -3
  242. package/dist-cms/packages/documents/document-types/search/constants.d.ts +1 -0
  243. package/dist-cms/packages/documents/document-types/search/constants.js +1 -0
  244. package/dist-cms/packages/documents/document-types/search/global-search/constants.d.ts +1 -0
  245. package/dist-cms/packages/documents/document-types/search/global-search/constants.js +1 -0
  246. package/dist-cms/packages/documents/document-types/search/global-search/manifests.d.ts +1 -0
  247. package/dist-cms/packages/documents/document-types/search/global-search/manifests.js +22 -0
  248. package/dist-cms/packages/documents/document-types/search/manifests.js +2 -0
  249. package/dist-cms/packages/documents/document-types/tree/tree-item-children/collection/views/document-type-tree-item-table-collection-view.element.js +1 -0
  250. package/dist-cms/packages/documents/documents/collection/document-collection.context.d.ts +2 -0
  251. package/dist-cms/packages/documents/documents/collection/document-collection.context.js +23 -0
  252. package/dist-cms/packages/documents/documents/collection/views/table/column-layouts/document-entity-actions-table-column-view.element.js +1 -0
  253. package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +4 -0
  254. package/dist-cms/packages/documents/documents/entity-actions/duplicate/repository/document-duplicate.server.data-source.js +1 -1
  255. package/dist-cms/packages/documents/documents/entity-actions/move-to/repository/document-move.server.data-source.js +1 -1
  256. package/dist-cms/packages/documents/documents/item/document-item-data-resolver.d.ts +2 -2
  257. package/dist-cms/packages/documents/documents/item/document-item-data-resolver.js +55 -68
  258. package/dist-cms/packages/documents/documents/item/document-item-ref.element.d.ts +4 -0
  259. package/dist-cms/packages/documents/documents/item/document-item-ref.element.js +33 -2
  260. package/dist-cms/packages/documents/documents/item/repository/document-item.server.data-source.d.ts +4 -0
  261. package/dist-cms/packages/documents/documents/item/repository/document-item.server.data-source.js +12 -3
  262. package/dist-cms/packages/documents/documents/modals/save-modal/document-save-modal.element.js +1 -5
  263. package/dist-cms/packages/documents/documents/picker/document-picker-search-result-item.element.d.ts +1 -0
  264. package/dist-cms/packages/documents/documents/picker/document-picker-search-result-item.element.js +16 -9
  265. package/dist-cms/packages/documents/documents/property-dataset-context/document-property-dataset.context.d.ts +4 -1
  266. package/dist-cms/packages/documents/documents/property-dataset-context/document-property-dataset.context.js +3 -0
  267. package/dist-cms/packages/documents/documents/publishing/publish/modal/document-publish-modal.element.js +9 -13
  268. package/dist-cms/packages/documents/documents/publishing/publish/modal/document-publish-modal.token.d.ts +1 -0
  269. package/dist-cms/packages/documents/documents/publishing/schedule-publish/modal/document-schedule-modal.element.js +0 -10
  270. package/dist-cms/packages/documents/documents/publishing/unpublish/entity-action/unpublish.action.js +5 -19
  271. package/dist-cms/packages/documents/documents/publishing/unpublish/modal/document-unpublish-modal.element.js +3 -12
  272. package/dist-cms/packages/documents/documents/publishing/workspace-context/document-publishing.workspace-context.js +3 -7
  273. package/dist-cms/packages/documents/documents/search/constants.d.ts +1 -0
  274. package/dist-cms/packages/documents/documents/search/constants.js +1 -0
  275. package/dist-cms/packages/documents/documents/search/document-search.server.data-source.js +3 -2
  276. package/dist-cms/packages/documents/documents/search/global-search/constants.d.ts +1 -0
  277. package/dist-cms/packages/documents/documents/search/global-search/constants.js +1 -0
  278. package/dist-cms/packages/documents/documents/search/global-search/document-global-search.d.ts +6 -0
  279. package/dist-cms/packages/documents/documents/search/global-search/document-global-search.js +15 -0
  280. package/dist-cms/packages/documents/documents/search/global-search/manifests.d.ts +1 -0
  281. package/dist-cms/packages/documents/documents/search/global-search/manifests.js +23 -0
  282. package/dist-cms/packages/documents/documents/search/manifests.js +2 -0
  283. package/dist-cms/packages/documents/documents/search/types.d.ts +1 -0
  284. package/dist-cms/packages/documents/documents/url/document-urls-data-resolver.d.ts +37 -0
  285. package/dist-cms/packages/documents/documents/url/document-urls-data-resolver.js +78 -0
  286. package/dist-cms/packages/documents/documents/url/index.d.ts +1 -0
  287. package/dist-cms/packages/documents/documents/url/index.js +1 -0
  288. package/dist-cms/packages/documents/documents/url/info-app/document-links-workspace-info-app.element.d.ts +0 -1
  289. package/dist-cms/packages/documents/documents/url/info-app/document-links-workspace-info-app.element.js +29 -24
  290. package/dist-cms/packages/documents/documents/url/repository/document-url.server.data-source.d.ts +4 -0
  291. package/dist-cms/packages/documents/documents/url/repository/document-url.server.data-source.js +13 -3
  292. package/dist-cms/packages/documents/documents/url/repository/types.d.ts +1 -1
  293. package/dist-cms/packages/documents/documents/workspace/actions/save.action.d.ts +3 -3
  294. package/dist-cms/packages/documents/documents/workspace/actions/save.action.js +2 -2
  295. package/dist-cms/packages/documents/documents/workspace/document-workspace.context-token.d.ts +2 -2
  296. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.d.ts +1 -5
  297. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +45 -59
  298. package/dist-cms/packages/extension-insights/collection/views/table/extension-table-collection-view.element.js +1 -0
  299. package/dist-cms/packages/language/app-language-select/app-language-select.element.js +7 -2
  300. package/dist-cms/packages/language/collection/views/table/language-table-collection-view.element.js +1 -0
  301. package/dist-cms/packages/language/global-contexts/app-language.context.js +14 -12
  302. package/dist-cms/packages/language/menu/language-menu-structure.context.d.ts +1 -1
  303. package/dist-cms/packages/language/menu/language-menu-structure.context.js +4 -2
  304. package/dist-cms/packages/language/repository/item/language-item.server.data-source.d.ts +4 -0
  305. package/dist-cms/packages/language/repository/item/language-item.server.data-source.js +12 -3
  306. package/dist-cms/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.js +3 -0
  307. package/dist-cms/packages/media/media/collection/media-collection.element.js +1 -0
  308. package/dist-cms/packages/media/media/collection/views/table/media-table-collection-view.element.js +1 -0
  309. package/dist-cms/packages/media/media/components/input-media/input-media.context.js +4 -0
  310. package/dist-cms/packages/media/media/constants.d.ts +1 -1
  311. package/dist-cms/packages/media/media/constants.js +1 -1
  312. package/dist-cms/packages/media/media/modals/media-picker/media-picker-modal.element.js +8 -0
  313. package/dist-cms/packages/media/media/repository/item/media-item.server.data-source.d.ts +4 -1
  314. package/dist-cms/packages/media/media/repository/item/media-item.server.data-source.js +13 -6
  315. package/dist-cms/packages/media/media/search/constants.d.ts +1 -0
  316. package/dist-cms/packages/media/media/search/constants.js +1 -0
  317. package/dist-cms/packages/media/media/search/global-search/constants.d.ts +1 -0
  318. package/dist-cms/packages/media/media/search/global-search/constants.js +1 -0
  319. package/dist-cms/packages/media/media/search/global-search/manifests.d.ts +1 -0
  320. package/dist-cms/packages/media/media/search/global-search/manifests.js +23 -0
  321. package/dist-cms/packages/media/media/search/global-search/media-global-search.d.ts +15 -0
  322. package/dist-cms/packages/media/media/search/global-search/media-global-search.js +15 -0
  323. package/dist-cms/packages/media/media/search/manifests.js +2 -0
  324. package/dist-cms/packages/media/media/search/media-search.server.data-source.js +3 -2
  325. package/dist-cms/packages/media/media/search/types.d.ts +1 -0
  326. package/dist-cms/packages/media/media/url/repository/media-url.server.data-source.d.ts +4 -0
  327. package/dist-cms/packages/media/media/url/repository/media-url.server.data-source.js +12 -3
  328. package/dist-cms/packages/media/media-types/constants.d.ts +1 -0
  329. package/dist-cms/packages/media/media-types/constants.js +1 -0
  330. package/dist-cms/packages/media/media-types/repository/item/media-type-item.server.data-source.d.ts +4 -0
  331. package/dist-cms/packages/media/media-types/repository/item/media-type-item.server.data-source.js +12 -3
  332. package/dist-cms/packages/media/media-types/search/constants.d.ts +2 -0
  333. package/dist-cms/packages/media/media-types/search/constants.js +2 -0
  334. package/dist-cms/packages/media/media-types/search/global-search/constants.d.ts +1 -0
  335. package/dist-cms/packages/media/media-types/search/global-search/constants.js +1 -0
  336. package/dist-cms/packages/media/media-types/search/global-search/manifests.d.ts +1 -0
  337. package/dist-cms/packages/media/media-types/search/global-search/manifests.js +22 -0
  338. package/dist-cms/packages/media/media-types/search/manifests.js +4 -1
  339. package/dist-cms/packages/media/media-types/tree/tree-item-children/collection/views/media-type-tree-item-table-collection-view.element.js +1 -0
  340. package/dist-cms/packages/members/member/collection/views/table/member-table-collection-view.element.js +1 -0
  341. package/dist-cms/packages/members/member/item/repository/member-item.server.data-source.d.ts +4 -0
  342. package/dist-cms/packages/members/member/item/repository/member-item.server.data-source.js +12 -3
  343. package/dist-cms/packages/members/member/picker/member-picker-search-result-item.element.js +2 -1
  344. package/dist-cms/packages/members/member/search/constants.d.ts +1 -0
  345. package/dist-cms/packages/members/member/search/constants.js +1 -0
  346. package/dist-cms/packages/members/member/search/global-search/constants.d.ts +1 -0
  347. package/dist-cms/packages/members/member/search/global-search/constants.js +1 -0
  348. package/dist-cms/packages/members/member/search/global-search/manifests.d.ts +1 -0
  349. package/dist-cms/packages/members/member/search/global-search/manifests.js +22 -0
  350. package/dist-cms/packages/members/member/search/manifests.js +2 -0
  351. package/dist-cms/packages/members/member-group/collection/views/table/member-group-table-collection-view.element.js +1 -0
  352. package/dist-cms/packages/members/member-group/repository/item/member-group-item.server.data-source.d.ts +4 -0
  353. package/dist-cms/packages/members/member-group/repository/item/member-group-item.server.data-source.js +12 -3
  354. package/dist-cms/packages/members/member-type/constants.d.ts +1 -0
  355. package/dist-cms/packages/members/member-type/constants.js +1 -0
  356. package/dist-cms/packages/members/member-type/repository/item/member-type-item.server.data-source.d.ts +4 -0
  357. package/dist-cms/packages/members/member-type/repository/item/member-type-item.server.data-source.js +12 -3
  358. package/dist-cms/packages/members/member-type/search/constants.d.ts +2 -0
  359. package/dist-cms/packages/members/member-type/search/constants.js +2 -0
  360. package/dist-cms/packages/members/member-type/search/global-search/constants.d.ts +1 -0
  361. package/dist-cms/packages/members/member-type/search/global-search/constants.js +1 -0
  362. package/dist-cms/packages/members/member-type/search/global-search/manifests.d.ts +1 -0
  363. package/dist-cms/packages/members/member-type/search/global-search/manifests.js +22 -0
  364. package/dist-cms/packages/members/member-type/search/manifests.js +4 -1
  365. package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.d.ts +4 -0
  366. package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.js +48 -1
  367. package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.d.ts +3 -2
  368. package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.js +129 -39
  369. package/dist-cms/packages/packages/package-section/views/installed/installed-packages-section-view-item.element.js +1 -1
  370. package/dist-cms/packages/relations/relations/reference/workspace-info-app/entity-references-workspace-view-info.element.js +6 -1
  371. package/dist-cms/packages/search/global-search/global-search-base.d.ts +11 -0
  372. package/dist-cms/packages/search/global-search/global-search-base.js +49 -0
  373. package/dist-cms/packages/search/global-search/global-search.extension.d.ts +15 -0
  374. package/dist-cms/packages/search/global-search/global-search.extension.js +1 -0
  375. package/dist-cms/packages/search/global-search/index.d.ts +1 -0
  376. package/dist-cms/packages/search/global-search/index.js +1 -0
  377. package/dist-cms/packages/search/global-search/types.d.ts +4 -0
  378. package/dist-cms/packages/search/global-search/types.js +1 -0
  379. package/dist-cms/packages/search/index.d.ts +1 -0
  380. package/dist-cms/packages/search/index.js +1 -0
  381. package/dist-cms/packages/search/search-modal/search-modal.element.d.ts +4 -4
  382. package/dist-cms/packages/search/search-modal/search-modal.element.js +40 -29
  383. package/dist-cms/packages/search/types.d.ts +1 -0
  384. package/dist-cms/packages/static-file/repository/item/static-file-item.server.data-source.d.ts +4 -0
  385. package/dist-cms/packages/static-file/repository/item/static-file-item.server.data-source.js +14 -7
  386. package/dist-cms/packages/sysinfo/components/sysinfo.element.js +49 -9
  387. package/dist-cms/packages/sysinfo/repository/sysinfo.repository.d.ts +3 -0
  388. package/dist-cms/packages/sysinfo/repository/sysinfo.repository.js +8 -0
  389. package/dist-cms/packages/templating/templates/constants.d.ts +1 -0
  390. package/dist-cms/packages/templating/templates/constants.js +1 -0
  391. package/dist-cms/packages/templating/templates/repository/item/template-item.server.data-source.d.ts +4 -0
  392. package/dist-cms/packages/templating/templates/repository/item/template-item.server.data-source.js +12 -3
  393. package/dist-cms/packages/templating/templates/search/constants.d.ts +2 -0
  394. package/dist-cms/packages/templating/templates/search/constants.js +2 -0
  395. package/dist-cms/packages/templating/templates/search/global-search/constants.d.ts +1 -0
  396. package/dist-cms/packages/templating/templates/search/global-search/constants.js +1 -0
  397. package/dist-cms/packages/templating/templates/search/global-search/manifests.d.ts +1 -0
  398. package/dist-cms/packages/templating/templates/search/global-search/manifests.js +22 -0
  399. package/dist-cms/packages/templating/templates/search/manifests.js +4 -1
  400. package/dist-cms/packages/tiptap/extensions/core/media-upload.tiptap-api.d.ts +6 -1
  401. package/dist-cms/packages/tiptap/extensions/core/media-upload.tiptap-api.js +16 -6
  402. package/dist-cms/packages/tiptap/extensions/toolbar/media-picker.tiptap-toolbar-api.d.ts +6 -1
  403. package/dist-cms/packages/tiptap/extensions/toolbar/media-picker.tiptap-toolbar-api.js +27 -6
  404. package/dist-cms/packages/user/current-user/action/current-user-app-button.element.d.ts +1 -1
  405. package/dist-cms/packages/user/current-user/action/current-user-app-button.element.js +4 -8
  406. package/dist-cms/packages/user/current-user/current-user-action.extension.d.ts +0 -11
  407. package/dist-cms/packages/user/current-user/external-login/manifests.js +0 -1
  408. package/dist-cms/packages/user/current-user/mfa-login/manifests.js +0 -1
  409. package/dist-cms/packages/user/user/collection/views/table/user-table-collection-view.element.js +1 -0
  410. package/dist-cms/packages/user/user/repository/item/user-item.server.data-source.d.ts +4 -0
  411. package/dist-cms/packages/user/user/repository/item/user-item.server.data-source.js +12 -3
  412. package/dist-cms/packages/user/user/workspace/user/components/user-workspace-profile-settings/user-workspace-profile-settings.element.js +25 -22
  413. package/dist-cms/packages/user/user-group/collection/views/user-group-table-collection-view.element.js +1 -0
  414. package/dist-cms/packages/user/user-group/repository/item/user-group-item.server.data-source.d.ts +4 -0
  415. package/dist-cms/packages/user/user-group/repository/item/user-group-item.server.data-source.js +12 -3
  416. package/dist-cms/packages/webhook/webhook/collection/views/table/webhook-table-collection-view.element.js +1 -0
  417. package/dist-cms/packages/webhook/webhook/repository/item/webhook-item.server.data-source.d.ts +4 -0
  418. package/dist-cms/packages/webhook/webhook/repository/item/webhook-item.server.data-source.js +12 -3
  419. package/dist-cms/packages/webhook/webhook/workspace/webhook-workspace-editor.element.js +2 -0
  420. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  421. package/dist-cms/umbraco-package-schema.json +298 -0
  422. package/dist-cms/umbraco-package.json +1 -1
  423. package/dist-cms/vscode-html-custom-data.json +71 -20
  424. package/examples/block-custom-view/block-custom-view.ts +8 -0
  425. package/package.json +1 -1
  426. package/dist-cms/assets/lang/de-ch.d.ts +0 -3
  427. package/dist-cms/assets/lang/de-ch.js +0 -15
  428. package/dist-cms/assets/lang/de-ch.ts +0 -17
  429. package/dist-cms/assets/lang/fr-ch.d.ts +0 -3
  430. package/dist-cms/assets/lang/fr-ch.js +0 -15
  431. package/dist-cms/assets/lang/fr-ch.ts +0 -17
  432. package/dist-cms/assets/lang/it-ch.d.ts +0 -3
  433. package/dist-cms/assets/lang/it-ch.js +0 -15
  434. package/dist-cms/assets/lang/it-ch.ts +0 -17
  435. /package/dist-cms/assets/lang/{cs-cz.d.ts → cs.d.ts} +0 -0
  436. /package/dist-cms/assets/lang/{cs-cz.js → cs.js} +0 -0
  437. /package/dist-cms/assets/lang/{cs-cz.ts → cs.ts} +0 -0
  438. /package/dist-cms/assets/lang/{cy-gb.d.ts → cy.d.ts} +0 -0
  439. /package/dist-cms/assets/lang/{cy-gb.js → cy.js} +0 -0
  440. /package/dist-cms/assets/lang/{cy-gb.ts → cy.ts} +0 -0
  441. /package/dist-cms/assets/lang/{da-dk.d.ts → da.d.ts} +0 -0
  442. /package/dist-cms/assets/lang/{de-de.d.ts → de.d.ts} +0 -0
  443. /package/dist-cms/assets/lang/{de-de.js → de.js} +0 -0
  444. /package/dist-cms/assets/lang/{de-de.ts → de.ts} +0 -0
  445. /package/dist-cms/assets/lang/{es-es.d.ts → es.d.ts} +0 -0
  446. /package/dist-cms/assets/lang/{es-es.js → es.js} +0 -0
  447. /package/dist-cms/assets/lang/{es-es.ts → es.ts} +0 -0
  448. /package/dist-cms/assets/lang/{fr-fr.d.ts → fr.d.ts} +0 -0
  449. /package/dist-cms/assets/lang/{fr-fr.js → fr.js} +0 -0
  450. /package/dist-cms/assets/lang/{fr-fr.ts → fr.ts} +0 -0
  451. /package/dist-cms/assets/lang/{he-il.d.ts → he.d.ts} +0 -0
  452. /package/dist-cms/assets/lang/{he-il.js → he.js} +0 -0
  453. /package/dist-cms/assets/lang/{he-il.ts → he.ts} +0 -0
  454. /package/dist-cms/assets/lang/{hr-hr.d.ts → hr.d.ts} +0 -0
  455. /package/dist-cms/assets/lang/{hr-hr.js → hr.js} +0 -0
  456. /package/dist-cms/assets/lang/{hr-hr.ts → hr.ts} +0 -0
  457. /package/dist-cms/assets/lang/{it-it.d.ts → it.d.ts} +0 -0
  458. /package/dist-cms/assets/lang/{it-it.js → it.js} +0 -0
  459. /package/dist-cms/assets/lang/{it-it.ts → it.ts} +0 -0
  460. /package/dist-cms/assets/lang/{ja-jp.d.ts → ja.d.ts} +0 -0
  461. /package/dist-cms/assets/lang/{ja-jp.js → ja.js} +0 -0
  462. /package/dist-cms/assets/lang/{ja-jp.ts → ja.ts} +0 -0
  463. /package/dist-cms/assets/lang/{ko-kr.d.ts → ko.d.ts} +0 -0
  464. /package/dist-cms/assets/lang/{ko-kr.js → ko.js} +0 -0
  465. /package/dist-cms/assets/lang/{ko-kr.ts → ko.ts} +0 -0
  466. /package/dist-cms/assets/lang/{nb-no.d.ts → nb.d.ts} +0 -0
  467. /package/dist-cms/assets/lang/{nb-no.js → nb.js} +0 -0
  468. /package/dist-cms/assets/lang/{nb-no.ts → nb.ts} +0 -0
  469. /package/dist-cms/assets/lang/{nl-nl.d.ts → nl.d.ts} +0 -0
  470. /package/dist-cms/assets/lang/{nl-nl.js → nl.js} +0 -0
  471. /package/dist-cms/assets/lang/{nl-nl.ts → nl.ts} +0 -0
  472. /package/dist-cms/assets/lang/{pl-pl.d.ts → pl.d.ts} +0 -0
  473. /package/dist-cms/assets/lang/{pl-pl.js → pl.js} +0 -0
  474. /package/dist-cms/assets/lang/{pl-pl.ts → pl.ts} +0 -0
  475. /package/dist-cms/assets/lang/{ro-ro.d.ts → ro.d.ts} +0 -0
  476. /package/dist-cms/assets/lang/{ro-ro.js → ro.js} +0 -0
  477. /package/dist-cms/assets/lang/{ro-ro.ts → ro.ts} +0 -0
  478. /package/dist-cms/assets/lang/{ru-ru.d.ts → ru.d.ts} +0 -0
  479. /package/dist-cms/assets/lang/{ru-ru.js → ru.js} +0 -0
  480. /package/dist-cms/assets/lang/{ru-ru.ts → ru.ts} +0 -0
  481. /package/dist-cms/assets/lang/{sv-se.d.ts → sv.d.ts} +0 -0
  482. /package/dist-cms/assets/lang/{sv-se.js → sv.js} +0 -0
  483. /package/dist-cms/assets/lang/{sv-se.ts → sv.ts} +0 -0
  484. /package/dist-cms/assets/lang/{tr-tr.d.ts → tr.d.ts} +0 -0
  485. /package/dist-cms/assets/lang/{tr-tr.js → tr.js} +0 -0
  486. /package/dist-cms/assets/lang/{tr-tr.ts → tr.ts} +0 -0
  487. /package/dist-cms/assets/lang/{uk-ua.d.ts → uk.d.ts} +0 -0
  488. /package/dist-cms/assets/lang/{uk-ua.js → uk.js} +0 -0
  489. /package/dist-cms/assets/lang/{uk-ua.ts → uk.ts} +0 -0
  490. /package/dist-cms/assets/lang/{zh-cn.d.ts → zh.d.ts} +0 -0
  491. /package/dist-cms/assets/lang/{zh-cn.js → zh.js} +0 -0
  492. /package/dist-cms/assets/lang/{zh-cn.ts → zh.ts} +0 -0
  493. /package/dist-cms/packages/core/resources/{tryExecute.function.js → try-execute/tryExecute.function.js} +0 -0
  494. /package/dist-cms/packages/core/resources/{tryExecuteAndNotify.function.js → try-execute/tryExecuteAndNotify.function.js} +0 -0
@@ -6,7 +6,7 @@ import type { UmbContentValidationRepository } from '../repository/content-valid
6
6
  import type { UmbContentWorkspaceContext } from './content-workspace-context.interface.js';
7
7
  import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
8
8
  import type { UmbDetailRepository, UmbDetailRepositoryConstructor } from '@umbraco-cms/backoffice/repository';
9
- import { UmbEntityDetailWorkspaceContextBase, UmbWorkspaceSplitViewManager, type UmbEntityDetailWorkspaceContextArgs, type UmbEntityDetailWorkspaceContextCreateArgs } from '@umbraco-cms/backoffice/workspace';
9
+ import { UmbEntityDetailWorkspaceContextBase, UmbWorkspaceSplitViewManager, type UmbEntityDetailWorkspaceContextArgs, type UmbEntityDetailWorkspaceContextCreateArgs, type UmbSaveableWorkspaceContext } from '@umbraco-cms/backoffice/workspace';
10
10
  import { UmbContentTypeStructureManager, type UmbContentTypeModel, type UmbPropertyTypeModel } from '@umbraco-cms/backoffice/content-type';
11
11
  import { UmbVariantId, type UmbEntityVariantModel, type UmbEntityVariantOptionModel } from '@umbraco-cms/backoffice/variant';
12
12
  import { UmbReadOnlyVariantGuardManager } from '@umbraco-cms/backoffice/utils';
@@ -44,7 +44,7 @@ export interface UmbContentDetailWorkspaceContextArgs<DetailModelType extends Um
44
44
  */
45
45
  export declare abstract class UmbContentDetailWorkspaceContextBase<DetailModelType extends UmbContentDetailModel<VariantModelType>, DetailRepositoryType extends UmbDetailRepository<DetailModelType> = UmbDetailRepository<DetailModelType>, ContentTypeDetailModelType extends UmbContentTypeModel = UmbContentTypeModel, VariantModelType extends UmbEntityVariantModel = DetailModelType extends {
46
46
  variants: UmbEntityVariantModel[];
47
- } ? DetailModelType['variants'][0] : never, VariantOptionModelType extends UmbEntityVariantOptionModel = UmbEntityVariantOptionModel<VariantModelType>, CreateArgsType extends UmbEntityDetailWorkspaceContextCreateArgs<DetailModelType> = UmbEntityDetailWorkspaceContextCreateArgs<DetailModelType>> extends UmbEntityDetailWorkspaceContextBase<DetailModelType, DetailRepositoryType, CreateArgsType> implements UmbContentWorkspaceContext<DetailModelType, ContentTypeDetailModelType, VariantModelType> {
47
+ } ? DetailModelType['variants'][0] : never, VariantOptionModelType extends UmbEntityVariantOptionModel = UmbEntityVariantOptionModel<VariantModelType>, CreateArgsType extends UmbEntityDetailWorkspaceContextCreateArgs<DetailModelType> = UmbEntityDetailWorkspaceContextCreateArgs<DetailModelType>> extends UmbEntityDetailWorkspaceContextBase<DetailModelType, DetailRepositoryType, CreateArgsType> implements UmbContentWorkspaceContext<DetailModelType, ContentTypeDetailModelType, VariantModelType>, UmbSaveableWorkspaceContext {
48
48
  #private;
49
49
  readonly IS_CONTENT_WORKSPACE_CONTEXT: true;
50
50
  readonly readOnlyGuard: UmbReadOnlyVariantGuardManager;
@@ -205,6 +205,11 @@ export declare abstract class UmbContentDetailWorkspaceContextBase<DetailModelTy
205
205
  */
206
206
  requestSubmit(): Promise<void>;
207
207
  submit(): Promise<void>;
208
+ /**
209
+ * Request a save of the workspace, in the case of Document Workspaces the validation does not need to be valid for this to be saved.
210
+ * @returns {Promise<void>} a promise which resolves once it has been completed.
211
+ */
212
+ requestSave(): Promise<void>;
208
213
  /**
209
214
  * Get the data to save
210
215
  * @param {Array<UmbVariantId>} variantIds - The variant ids to save
@@ -213,6 +218,7 @@ export declare abstract class UmbContentDetailWorkspaceContextBase<DetailModelTy
213
218
  */
214
219
  constructSaveData(variantIds: Array<UmbVariantId>): Promise<DetailModelType>;
215
220
  protected _handleSubmit(): Promise<void>;
221
+ protected _handleSave(): Promise<void>;
216
222
  /**
217
223
  * Perform the create or update of the content
218
224
  * @deprecated Use the public performCreateOrUpdate instead. Will be removed in v. 17.
@@ -512,6 +512,10 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
512
512
  */
513
513
  async runMandatoryValidationForSaveData(saveData, variantIds = []) {
514
514
  // Check that the data is valid before we save it.
515
+ // If we vary by culture then we do not want to validate the invariant variant.
516
+ if (this.getVariesByCulture()) {
517
+ variantIds = variantIds.filter((variant) => !variant.isCultureInvariant());
518
+ }
515
519
  const missingVariants = variantIds.filter((variant) => {
516
520
  return !saveData.variants.some((y) => variant.compare(y));
517
521
  });
@@ -544,7 +548,7 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
544
548
  this.#validationRepository ??= new this.#validationRepositoryClass(this);
545
549
  // We ask the server first to get a concatenated set of validation messages. So we see both front-end and back-end validation messages [NL]
546
550
  if (this.getIsNew()) {
547
- const parent = this.getParent();
551
+ const parent = this._internal_getCreateUnderParent();
548
552
  if (!parent)
549
553
  throw new Error('Parent is not set');
550
554
  await this.#serverValidation.askServerForValidation(saveData, this.#validationRepository.validateCreate(saveData, parent.unique));
@@ -564,6 +568,13 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
564
568
  submit() {
565
569
  return this._handleSubmit();
566
570
  }
571
+ /**
572
+ * Request a save of the workspace, in the case of Document Workspaces the validation does not need to be valid for this to be saved.
573
+ * @returns {Promise<void>} a promise which resolves once it has been completed.
574
+ */
575
+ requestSave() {
576
+ return this._handleSave();
577
+ }
567
578
  /**
568
579
  * Get the data to save
569
580
  * @param {Array<UmbVariantId>} variantIds - The variant ids to save
@@ -574,6 +585,10 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
574
585
  return this._data.constructData(variantIds);
575
586
  }
576
587
  async _handleSubmit() {
588
+ await this._handleSave();
589
+ this._closeModal();
590
+ }
591
+ async _handleSave() {
577
592
  const data = this.getData();
578
593
  if (!data) {
579
594
  throw new Error('Data is missing');
@@ -611,16 +626,10 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
611
626
  await this.runMandatoryValidationForSaveData(saveData, variantIds);
612
627
  if (this.#validateOnSubmit) {
613
628
  await this.askServerToValidate(saveData, variantIds);
614
- return this.validateAndSubmit(async () => {
629
+ const valid = await this._validateAndLog().then(() => true, () => false);
630
+ if (valid || this.#ignoreValidationResultOnSubmit) {
615
631
  return this.performCreateOrUpdate(variantIds, saveData);
616
- }, async (reason) => {
617
- if (this.#ignoreValidationResultOnSubmit) {
618
- return this.performCreateOrUpdate(variantIds, saveData);
619
- }
620
- else {
621
- return this.invalidSubmit(reason);
622
- }
623
- });
632
+ }
624
633
  }
625
634
  else {
626
635
  await this.performCreateOrUpdate(variantIds, saveData);
@@ -654,7 +663,7 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
654
663
  async #create(variantIds, saveData) {
655
664
  if (!this._detailRepository)
656
665
  throw new Error('Detail repository is not set');
657
- const parent = this.getParent();
666
+ const parent = this._internal_getCreateUnderParent();
658
667
  if (!parent)
659
668
  throw new Error('Parent is not set');
660
669
  const { data, error } = await this._detailRepository.create(saveData, parent.unique);
@@ -680,7 +689,6 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
680
689
  });
681
690
  eventContext.dispatchEvent(event);
682
691
  this.setIsNew(false);
683
- this._closeModal();
684
692
  }
685
693
  async #update(variantIds, saveData) {
686
694
  if (!this._detailRepository)
@@ -712,7 +720,6 @@ export class UmbContentDetailWorkspaceContextBase extends UmbEntityDetailWorkspa
712
720
  eventUnique: this._workspaceEventUnique,
713
721
  });
714
722
  eventContext.dispatchEvent(updatedEvent);
715
- this._closeModal();
716
723
  }
717
724
  resetState() {
718
725
  super.resetState();
@@ -6,7 +6,7 @@ export declare class UmbContentWorkspaceViewEditPropertiesElement extends UmbLit
6
6
  #private;
7
7
  get containerId(): string | null | undefined;
8
8
  set containerId(value: string | null | undefined);
9
- _variantId?: UmbVariantId;
9
+ _datasetVariantId?: UmbVariantId;
10
10
  _visibleProperties?: Array<UmbPropertyTypeModel>;
11
11
  constructor();
12
12
  render(): unknown;
@@ -26,7 +26,7 @@ let UmbContentWorkspaceViewEditPropertiesElement = class UmbContentWorkspaceView
26
26
  constructor() {
27
27
  super();
28
28
  this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (datasetContext) => {
29
- this._variantId = datasetContext?.getVariantId();
29
+ this._datasetVariantId = datasetContext?.getVariantId();
30
30
  this.#processPropertyStructure();
31
31
  });
32
32
  this.consumeContext(UMB_CONTENT_WORKSPACE_CONTEXT, (workspaceContext) => {
@@ -41,13 +41,13 @@ let UmbContentWorkspaceViewEditPropertiesElement = class UmbContentWorkspaceView
41
41
  });
42
42
  }
43
43
  #processPropertyStructure() {
44
- if (!this.#workspaceContext || !this.#properties || !this.#propertyStructureHelper) {
44
+ if (!this.#workspaceContext || !this.#properties || !this.#propertyStructureHelper || !this._datasetVariantId) {
45
45
  return;
46
46
  }
47
47
  const propertyViewGuard = this.#workspaceContext.propertyViewGuard;
48
48
  this.#properties.forEach((property) => {
49
- const propertyVariantId = new UmbVariantId(this._variantId?.culture, this._variantId?.segment);
50
- this.observe(propertyViewGuard.isPermittedForVariantAndProperty(propertyVariantId, property), (permitted) => {
49
+ const propertyVariantId = new UmbVariantId(property.variesByCulture ? this._datasetVariantId?.culture : null, property.variesBySegment ? this._datasetVariantId?.segment : null);
50
+ this.observe(propertyViewGuard.isPermittedForVariantAndProperty(propertyVariantId, property, this._datasetVariantId), (permitted) => {
51
51
  if (permitted) {
52
52
  this.#visiblePropertiesUniques.push(property.unique);
53
53
  this.#calculateVisibleProperties();
@@ -66,10 +66,10 @@ let UmbContentWorkspaceViewEditPropertiesElement = class UmbContentWorkspaceView
66
66
  this._visibleProperties = this.#properties.filter((property) => this.#visiblePropertiesUniques.includes(property.unique));
67
67
  }
68
68
  render() {
69
- return this._variantId && this._visibleProperties
69
+ return this._datasetVariantId && this._visibleProperties
70
70
  ? repeat(this._visibleProperties, (property) => property.alias, (property) => html `<umb-content-workspace-view-edit-property
71
71
  class="property"
72
- .variantId=${this._variantId}
72
+ .variantId=${this._datasetVariantId}
73
73
  .property=${property}></umb-content-workspace-view-edit-property>`)
74
74
  : nothing;
75
75
  }
@@ -90,7 +90,7 @@ __decorate([
90
90
  ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "containerId", null);
91
91
  __decorate([
92
92
  state()
93
- ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "_variantId", void 0);
93
+ ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "_datasetVariantId", void 0);
94
94
  __decorate([
95
95
  state()
96
96
  ], UmbContentWorkspaceViewEditPropertiesElement.prototype, "_visibleProperties", void 0);
@@ -26,7 +26,7 @@ let UmbContentWorkspaceViewEditPropertyElement = class UmbContentWorkspaceViewEd
26
26
  culture: propertyVariantId.culture,
27
27
  segment: propertyVariantId.segment,
28
28
  })}].value`;
29
- this.observe(this._context.propertyWriteGuard.isPermittedForVariantAndProperty(propertyVariantId, this.property), (write) => {
29
+ this.observe(this._context.propertyWriteGuard.isPermittedForVariantAndProperty(propertyVariantId, this.property, this.variantId), (write) => {
30
30
  this._writeable = write;
31
31
  }, 'observeView');
32
32
  }
@@ -102,15 +102,16 @@ let UmbContentTypeWorkspaceEditorHeaderElement = class UmbContentTypeWorkspaceEd
102
102
  display: flex;
103
103
  flex: 1 1 auto;
104
104
  flex-direction: column;
105
- gap: var(--uui-size-space-1);
106
105
  }
107
106
 
108
107
  #name {
109
108
  width: 100%;
109
+ z-index: 1;
110
110
  }
111
111
 
112
112
  #description {
113
113
  width: 100%;
114
+ margin-top: 1px;
114
115
  --uui-input-height: var(--uui-size-8);
115
116
  --uui-input-border-color: transparent;
116
117
  }
@@ -123,6 +124,8 @@ let UmbContentTypeWorkspaceEditorHeaderElement = class UmbContentTypeWorkspaceEd
123
124
  font-size: var(--uui-size-8);
124
125
  height: 60px;
125
126
  width: 60px;
127
+ --uui-button-border-color: transparent;
128
+ --uui-button-border-color-hover: var(--uui-color-border);
126
129
  }
127
130
  `,
128
131
  ]; }
@@ -6,6 +6,7 @@ export declare class UmbCompositionPickerModalElement extends UmbModalBaseElemen
6
6
  private _compatibleCompositions?;
7
7
  private _selection;
8
8
  private _usedForInheritance;
9
+ private _usedForComposition;
9
10
  connectedCallback(): void;
10
11
  protected _submitModal(): Promise<void>;
11
12
  render(): import("lit-html").TemplateResult<1>;
@@ -15,6 +15,7 @@ let UmbCompositionPickerModalElement = class UmbCompositionPickerModalElement ex
15
15
  this._references = [];
16
16
  this._selection = [];
17
17
  this._usedForInheritance = [];
18
+ this._usedForComposition = [];
18
19
  }
19
20
  // TODO: Loosen this from begin specific to Document Types, so we can have a general interface for composition repositories. [NL]
20
21
  #compositionRepository;
@@ -33,6 +34,7 @@ let UmbCompositionPickerModalElement = class UmbCompositionPickerModalElement ex
33
34
  }
34
35
  this._selection = this.data?.selection ?? [];
35
36
  this._usedForInheritance = this.data?.usedForInheritance ?? [];
37
+ this._usedForComposition = this.data?.usedForComposition ?? [];
36
38
  this.modalContext?.setValue({ selection: this._selection });
37
39
  const isNew = this.data.isNew;
38
40
  this.#unique = !isNew ? this.data.unique : null;
@@ -98,7 +100,9 @@ let UmbCompositionPickerModalElement = class UmbCompositionPickerModalElement ex
98
100
  render() {
99
101
  return html `
100
102
  <umb-body-layout headline="${this.localize.term('contentTypeEditor_compositions')}">
101
- ${this._references.length ? this.#renderHasReference() : this.#renderAvailableCompositions()}
103
+ <uui-box>
104
+ ${this._references.length ? this.#renderHasReference() : this.#renderAvailableCompositions()}
105
+ </uui-box>
102
106
  <div slot="actions">
103
107
  <uui-button label=${this.localize.term('general_close')} @click=${this._rejectModal}></uui-button>
104
108
  ${!this._references.length
@@ -166,11 +170,16 @@ let UmbCompositionPickerModalElement = class UmbCompositionPickerModalElement ex
166
170
  #renderCompositionsItems(compositionsList) {
167
171
  return repeat(compositionsList, (compositions) => compositions.unique, (compositions) => {
168
172
  const usedForInheritance = this._usedForInheritance.includes(compositions.unique);
173
+ const usedForComposition = this._usedForComposition.includes(compositions.unique);
174
+ /* The server will return isCompatible as false if the Doc Type is currently being used in a composition.
175
+ Therefore, we need to account for this in the "isDisabled" check to ensure it remains enabled.
176
+ Otherwise, it would become disabled and couldn't be deselected by the user. */
177
+ const isDisabled = usedForInheritance || (compositions.isCompatible === false && !usedForComposition);
169
178
  return html `
170
179
  <uui-menu-item
171
180
  label=${this.localize.string(compositions.name)}
172
181
  ?selectable=${!usedForInheritance}
173
- ?disabled=${usedForInheritance}
182
+ ?disabled=${isDisabled}
174
183
  @selected=${() => this.#onSelectionAdd(compositions.unique)}
175
184
  @deselected=${() => this.#onSelectionRemove(compositions.unique)}
176
185
  ?selected=${this._selection.find((unique) => unique === compositions.unique)}>
@@ -202,6 +211,10 @@ let UmbCompositionPickerModalElement = class UmbCompositionPickerModalElement ex
202
211
  align-items: center;
203
212
  gap: var(--uui-size-3);
204
213
  }
214
+
215
+ .compositions-list {
216
+ margin-block: var(--uui-size-3);
217
+ }
205
218
  `,
206
219
  ]; }
207
220
  };
@@ -217,6 +230,9 @@ __decorate([
217
230
  __decorate([
218
231
  state()
219
232
  ], UmbCompositionPickerModalElement.prototype, "_usedForInheritance", void 0);
233
+ __decorate([
234
+ state()
235
+ ], UmbCompositionPickerModalElement.prototype, "_usedForComposition", void 0);
220
236
  UmbCompositionPickerModalElement = __decorate([
221
237
  customElement('umb-composition-picker-modal')
222
238
  ], UmbCompositionPickerModalElement);
@@ -3,6 +3,7 @@ export interface UmbCompositionPickerModalData {
3
3
  compositionRepositoryAlias: string;
4
4
  selection: Array<string>;
5
5
  usedForInheritance: Array<string>;
6
+ usedForComposition: Array<string>;
6
7
  unique: string | null;
7
8
  isElement: boolean;
8
9
  currentPropertyAliases: Array<string>;
@@ -83,31 +83,49 @@ export declare class UmbContentTypeStructureManager<T extends UmbContentTypeMode
83
83
  cloneContainerTo(containerId: string, toContentTypeUnique?: string): Promise<UmbPropertyTypeContainerModel | undefined>;
84
84
  ensureContainerNames(contentTypeUnique: string | null, type: UmbPropertyContainerTypes, parentId?: string | null): void;
85
85
  createContainer(contentTypeUnique: string | null, parentId?: string | null, type?: UmbPropertyContainerTypes, sortOrder?: number): Promise<UmbPropertyTypeContainerModel>;
86
+ insertContainer(contentTypeUnique: string | null, container: UmbPropertyTypeContainerModel): Promise<{
87
+ id: string;
88
+ parent: {
89
+ id: string;
90
+ } | null;
91
+ name: string;
92
+ type: UmbPropertyContainerTypes;
93
+ sortOrder: number;
94
+ }>;
86
95
  makeEmptyContainerName(containerId: string, containerType: UmbPropertyContainerTypes, parentId?: string | null): string;
87
96
  makeContainerNameUniqueForOwnerContentType(containerId: string, newName: string, containerType: UmbPropertyContainerTypes, parentId?: string | null): string | null;
88
97
  updateContainer(contentTypeUnique: string | null, containerId: string, partialUpdate: Partial<UmbPropertyTypeContainerModel>): Promise<void>;
89
- removeContainer(contentTypeUnique: string | null, containerId?: string | null): Promise<void>;
98
+ removeContainer(contentTypeUnique: string | null, containerId?: string | null, args?: {
99
+ preventRemovingProperties?: boolean;
100
+ }): Promise<void>;
90
101
  insertProperty(contentTypeUnique: string | null, property: UmbPropertyTypeModel): Promise<void>;
91
102
  removeProperty(contentTypeUnique: string | null, propertyUnique: string): Promise<void>;
92
103
  updateProperty(contentTypeUnique: string | null, propertyUnique: string, partialUpdate: Partial<UmbPropertyTypeModel>): Promise<void>;
93
104
  propertyStructureById(propertyUnique: string): Promise<import("rxjs").Observable<UmbPropertyTypeModel | undefined>>;
94
105
  propertyStructureByAlias(propertyAlias: string): Promise<import("rxjs").Observable<UmbPropertyTypeModel | undefined>>;
95
106
  getPropertyStructureById(propertyUnique: string): Promise<UmbPropertyTypeModel | undefined>;
107
+ getOwnerPropertyById(propertyUnique: string | null): Promise<UmbPropertyTypeModel | undefined>;
96
108
  getPropertyStructureByAlias(propertyAlias: string): Promise<UmbPropertyTypeModel | undefined>;
97
109
  hasPropertyStructuresOf(containerId: string | null): import("rxjs").Observable<boolean>;
98
110
  rootPropertyStructures(): import("rxjs").Observable<UmbPropertyTypeModel[]>;
99
111
  propertyStructuresOf(containerId: string | null): import("rxjs").Observable<UmbPropertyTypeModel[]>;
100
112
  rootContainers(containerType: UmbPropertyContainerTypes): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
101
- getRootContainers(containerType: UmbPropertyContainerTypes): UmbPropertyTypeContainerModel[];
113
+ getRootContainers(containerType: UmbPropertyContainerTypes): Promise<UmbPropertyTypeContainerModel[]>;
102
114
  hasRootContainers(containerType: UmbPropertyContainerTypes): Promise<import("rxjs").Observable<boolean>>;
103
115
  ownerContainersOf(containerType: UmbPropertyContainerTypes, parentId: string | null): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
104
- getOwnerContainers(containerType: UmbPropertyContainerTypes, parentId: string | null): UmbPropertyTypeContainerModel[] | undefined;
116
+ getOwnerContainerById(id: string | null): UmbPropertyTypeContainerModel | undefined;
117
+ getOwnerContainers(containerType: UmbPropertyContainerTypes, parentId: string | null): Array<UmbPropertyTypeContainerModel> | undefined;
105
118
  isOwnerContainer(containerId: string): UmbPropertyTypeContainerModel[] | undefined;
106
119
  containersOfParentId(parentId: string, containerType: UmbPropertyContainerTypes): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
107
120
  containersByNameAndType(name: string, containerType: UmbPropertyContainerTypes): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
108
121
  containersByNameAndTypeAndParent(name: string, containerType: UmbPropertyContainerTypes, parentName: string | null, parentType?: UmbPropertyContainerTypes): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
109
122
  getContentTypeOfContainer(containerId: string): T | undefined;
110
123
  contentTypeOfProperty(propertyId: UmbPropertyTypeUnique): import("rxjs").Observable<T | undefined>;
124
+ /**
125
+ * Get all property aliases for the content type including inherited and composed content types.
126
+ * @returns {Promise<Array<string>>} - A promise that will be resolved with the list of all content type property aliases.
127
+ */
128
+ getContentTypePropertyAliases(): Promise<string[]>;
111
129
  destroy(): void;
112
130
  }
113
131
  export {};
@@ -5,6 +5,7 @@ import { incrementString } from '@umbraco-cms/backoffice/utils';
5
5
  import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
6
6
  import { UmbExtensionApiInitializer } from '@umbraco-cms/backoffice/extension-api';
7
7
  import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
8
+ import { firstValueFrom } from '@umbraco-cms/backoffice/external/rxjs';
8
9
  const UmbFilterDuplicateStrings = (value, index, array) => array.indexOf(value) === index;
9
10
  /**
10
11
  * Manages a structure of a Content Type and its properties and containers.
@@ -39,9 +40,8 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
39
40
  async getContentTypeProperties() {
40
41
  return await this.observe(this.contentTypeProperties).asPromise();
41
42
  }
42
- #containers;
43
43
  containerById(id) {
44
- return this.#containers.asObservablePart((x) => x.find((y) => y.id === id));
44
+ return createObservablePart(this.#contentTypeContainers, (x) => x.find((y) => y.id === id));
45
45
  }
46
46
  constructor(host, typeRepository) {
47
47
  super(host);
@@ -87,7 +87,6 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
87
87
  this.contentTypeAliases = this.#contentTypes.asObservablePart((x) => x.map((y) => y.alias));
88
88
  this.variesByCulture = createObservablePart(this.ownerContentType, (x) => x?.variesByCulture);
89
89
  this.variesBySegment = createObservablePart(this.ownerContentType, (x) => x?.variesBySegment);
90
- this.#containers = new UmbArrayState([], (x) => x.id);
91
90
  if (typeof typeRepository === 'string') {
92
91
  this.#observeRepository(typeRepository);
93
92
  }
@@ -102,17 +101,22 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
102
101
  this.#repoManager = new UmbRepositoryDetailsManager(this, typeRepository);
103
102
  this.observe(this.#repoManager.entries, (entries) => {
104
103
  // Prevent updating once that are have edited here.
105
- entries = entries.filter((x) => !(this.#editedTypes.getHasOne(x.unique) && this.#contentTypes.getHasOne(x.unique)));
106
- this.#contentTypes.append(entries);
104
+ const entriesToBeUpdated = entries.filter((x) => !(this.#editedTypes.getHasOne(x.unique) && this.#contentTypes.getHasOne(x.unique)));
105
+ // Remove entries based on no-longer existing uniques:
106
+ const entriesToBeRemoved = this.#contentTypes
107
+ .getValue()
108
+ .filter((entry) => !entries.some((x) => x.unique === entry.unique))
109
+ .map((x) => x.unique);
110
+ this.#contentTypes.mute();
111
+ this.#contentTypes.remove(entriesToBeRemoved);
112
+ this.#contentTypes.append(entriesToBeUpdated);
113
+ this.#contentTypes.unmute();
107
114
  }, null);
108
115
  });
109
116
  // Observe all Content Types compositions: [NL]
110
117
  this.observe(this.contentTypeCompositions, (contentTypeCompositions) => {
111
118
  this.#loadContentTypeCompositions(contentTypeCompositions);
112
119
  }, null);
113
- this.observe(this.#contentTypeContainers, (contentTypeContainers) => {
114
- this.#containers.setValue(contentTypeContainers);
115
- }, null);
116
120
  }
117
121
  /**
118
122
  * loadType will load the ContentType and all inherited and composed ContentTypes.
@@ -197,6 +201,8 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
197
201
  return data;
198
202
  }
199
203
  async #loadContentTypeCompositions(contentTypeCompositions) {
204
+ // Important to wait a JS-cycle, cause this is called by an observation of a state and this results in setting the value for the state(potentially in the same JS-cycle) then we need to make sure we don't trigger a new update before the old subscription chain is completed. [NL]
205
+ await Promise.resolve();
200
206
  const ownerUnique = this.getOwnerContentTypeUnique();
201
207
  if (!ownerUnique)
202
208
  return;
@@ -273,7 +279,7 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
273
279
  toContentTypeUnique = toContentTypeUnique ?? this.#ownerContentTypeUnique;
274
280
  this.#editedTypes.appendOne(toContentTypeUnique);
275
281
  // Find container.
276
- const container = this.#containers.getValue().find((x) => x.id === containerId);
282
+ const container = (await firstValueFrom(this.#contentTypeContainers)).find((x) => x.id === containerId);
277
283
  if (!container)
278
284
  throw new Error('Container to clone was not found');
279
285
  const clonedContainer = {
@@ -329,34 +335,29 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
329
335
  type: type,
330
336
  sortOrder: sortOrder ?? 0,
331
337
  };
332
- // Ensure
333
- this.ensureContainerNames(contentTypeUnique, type, parentId);
334
- const contentTypes = this.#contentTypes.getValue();
335
- const containers = [...(contentTypes.find((x) => x.unique === contentTypeUnique)?.containers ?? [])];
336
- containers.push(container);
337
- this.#contentTypes.updateOne(contentTypeUnique, { containers });
338
- return container;
338
+ return this.insertContainer(contentTypeUnique, container);
339
339
  }
340
- /*async insertContainer(contentTypeUnique: string | null, container: UmbPropertyTypeContainerModel) {
340
+ async insertContainer(contentTypeUnique, container) {
341
341
  await this.#init;
342
- contentTypeUnique = contentTypeUnique ?? this.#ownerContentTypeUnique!;
343
-
342
+ contentTypeUnique = contentTypeUnique ?? this.#ownerContentTypeUnique;
343
+ const newContainer = { ...container };
344
+ const type = newContainer.type;
345
+ const parentId = newContainer.parent?.id ?? null;
344
346
  // If we have a parent, we need to ensure it exists, and then update the parent property with the new container id.
345
- if (container.parent) {
346
- const parentContainer = await this.ensureContainerOf(container.parent.id, contentTypeUnique);
347
+ if (newContainer.parent) {
348
+ const parentContainer = await this.ensureContainerOf(newContainer.parent.id, contentTypeUnique);
347
349
  if (!parentContainer) {
348
350
  throw new Error('Container for inserting property could not be found or created');
349
351
  }
350
- container.parent.id = parentContainer.id;
352
+ newContainer.parent.id = parentContainer.id;
351
353
  }
352
-
353
- const frozenContainers =
354
- this.#contentTypes.getValue().find((x) => x.unique === contentTypeUnique)?.containers ?? [];
355
-
356
- const containers = appendToFrozenArray(frozenContainers, container, (x) => x.id === container.id);
357
-
358
- this.#contentTypes.updateOne(contentTypeUnique, { containers } as Partial<T>);
359
- }*/
354
+ // Ensure
355
+ this.ensureContainerNames(contentTypeUnique, type, parentId);
356
+ const frozenContainers = this.#contentTypes.getValue().find((x) => x.unique === contentTypeUnique)?.containers ?? [];
357
+ const containers = appendToFrozenArray(frozenContainers, newContainer, (x) => x.id === newContainer.id);
358
+ this.#contentTypes.updateOne(contentTypeUnique, { containers });
359
+ return newContainer;
360
+ }
360
361
  makeEmptyContainerName(containerId, containerType, parentId = null) {
361
362
  return (this.makeContainerNameUniqueForOwnerContentType(containerId, 'Unnamed', containerType, parentId) ?? 'Unnamed');
362
363
  }
@@ -397,7 +398,7 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
397
398
  // TODO: fix TS partial complaint
398
399
  this.#contentTypes.updateOne(contentTypeUnique, { containers });
399
400
  }
400
- async removeContainer(contentTypeUnique, containerId = null) {
401
+ async removeContainer(contentTypeUnique, containerId = null, args) {
401
402
  await this.#init;
402
403
  contentTypeUnique = contentTypeUnique ?? this.#ownerContentTypeUnique;
403
404
  this.#editedTypes.appendOne(contentTypeUnique);
@@ -410,9 +411,11 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
410
411
  .filter((x) => x.id === containerId || x.parent?.id === containerId)
411
412
  .map((x) => x.id);
412
413
  const containers = frozenContainers.filter((x) => x.id !== containerId && x.parent?.id !== containerId);
413
- const frozenProperties = contentType.properties;
414
- const properties = frozenProperties.filter((x) => x.container ? !removedContainerIds.some((ids) => ids === x.container?.id) : true);
415
- this.#contentTypes.updateOne(contentTypeUnique, { containers, properties });
414
+ const updates = { containers };
415
+ if (args?.preventRemovingProperties !== true) {
416
+ updates.properties = contentType.properties.filter((x) => x.container ? !removedContainerIds.some((ids) => ids === x.container?.id) : true);
417
+ }
418
+ this.#contentTypes.updateOne(contentTypeUnique, updates);
416
419
  }
417
420
  async insertProperty(contentTypeUnique, property) {
418
421
  await this.#init;
@@ -487,6 +490,10 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
487
490
  }
488
491
  return undefined;
489
492
  }
493
+ async getOwnerPropertyById(propertyUnique) {
494
+ await this.#init;
495
+ return this.getOwnerContentType()?.properties?.find((property) => property.unique === propertyUnique);
496
+ }
490
497
  async getPropertyStructureByAlias(propertyAlias) {
491
498
  await this.#init;
492
499
  for (const docType of this.#contentTypes.getValue()) {
@@ -521,21 +528,24 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
521
528
  });
522
529
  }
523
530
  rootContainers(containerType) {
524
- return this.#containers.asObservablePart((data) => {
531
+ return createObservablePart(this.#contentTypeContainers, (data) => {
525
532
  return data.filter((x) => x.parent === null && x.type === containerType);
526
533
  });
527
534
  }
528
- getRootContainers(containerType) {
529
- return this.#containers.getValue().filter((x) => x.parent === null && x.type === containerType);
535
+ async getRootContainers(containerType) {
536
+ return (await firstValueFrom(this.#contentTypeContainers)).filter((x) => x.parent === null && x.type === containerType);
530
537
  }
531
538
  async hasRootContainers(containerType) {
532
- return this.#containers.asObservablePart((data) => {
539
+ return createObservablePart(this.#contentTypeContainers, (data) => {
533
540
  return data.filter((x) => x.parent === null && x.type === containerType).length > 0;
534
541
  });
535
542
  }
536
543
  ownerContainersOf(containerType, parentId) {
537
544
  return this.ownerContentTypeObservablePart((x) => x?.containers?.filter((x) => (parentId ? x.parent?.id === parentId : x.parent === null) && x.type === containerType) ?? []);
538
545
  }
546
+ getOwnerContainerById(id) {
547
+ return this.getOwnerContentType()?.containers?.find((x) => x.id === id);
548
+ }
539
549
  getOwnerContainers(containerType, parentId) {
540
550
  return this.getOwnerContentType()?.containers?.filter((x) => (parentId ? x.parent?.id === parentId : x.parent === null) && x.type === containerType);
541
551
  }
@@ -543,18 +553,18 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
543
553
  return this.getOwnerContentType()?.containers?.filter((x) => x.id === containerId);
544
554
  }
545
555
  containersOfParentId(parentId, containerType) {
546
- return this.#containers.asObservablePart((data) => {
556
+ return createObservablePart(this.#contentTypeContainers, (data) => {
547
557
  return data.filter((x) => x.parent?.id === parentId && x.type === containerType);
548
558
  });
549
559
  }
550
560
  // In future this might need to take parentName(parentId lookup) into account as well? otherwise containers that share same name and type will always be merged, but their position might be different and they should not be merged. [NL]
551
561
  containersByNameAndType(name, containerType) {
552
- return this.#containers.asObservablePart((data) => {
562
+ return createObservablePart(this.#contentTypeContainers, (data) => {
553
563
  return data.filter((x) => x.name === name && x.type === containerType);
554
564
  });
555
565
  }
556
566
  containersByNameAndTypeAndParent(name, containerType, parentName, parentType) {
557
- return this.#containers.asObservablePart((data) => {
567
+ return createObservablePart(this.#contentTypeContainers, (data) => {
558
568
  return data.filter((x) =>
559
569
  // Match name and type:
560
570
  x.name === name &&
@@ -587,16 +597,25 @@ export class UmbContentTypeStructureManager extends UmbControllerBase {
587
597
  }
588
598
  });
589
599
  }
600
+ /**
601
+ * Get all property aliases for the content type including inherited and composed content types.
602
+ * @returns {Promise<Array<string>>} - A promise that will be resolved with the list of all content type property aliases.
603
+ */
604
+ async getContentTypePropertyAliases() {
605
+ return this.#contentTypes
606
+ .getValue()
607
+ .flatMap((x) => x.properties?.map((y) => y.alias) ?? [])
608
+ .filter(UmbFilterDuplicateStrings);
609
+ }
590
610
  #clear() {
591
611
  this.#contentTypeObservers.forEach((observer) => observer.destroy());
592
612
  this.#contentTypeObservers = [];
593
- this.#containers.setValue([]);
594
613
  this.#repoManager?.clear();
595
614
  this.#contentTypes.setValue([]);
615
+ this.#ownerContentTypeUnique = undefined;
596
616
  }
597
617
  destroy() {
598
618
  this.#contentTypes.destroy();
599
- this.#containers.destroy();
600
619
  super.destroy();
601
620
  }
602
621
  }
@@ -30,7 +30,7 @@ export class UmbContentTypeWorkspaceContextBase extends UmbEntityDetailWorkspace
30
30
  async createScaffold(args) {
31
31
  this.resetState();
32
32
  this.loading.addState({ unique: LOADING_STATE_UNIQUE, message: `Creating ${this.getEntityType()} scaffold` });
33
- this.setParent(args.parent);
33
+ this._internal_setCreateUnderParent(args.parent);
34
34
  const request = this.structure.createScaffold(args.preset);
35
35
  this._getDataPromise = request;
36
36
  let { data } = await request;