@umbraco-cms/backoffice 16.3.4 → 16.4.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 (400) hide show
  1. package/README.md +8 -0
  2. package/dist-cms/apps/backoffice/components/backoffice-header-sections.element.js +3 -2
  3. package/dist-cms/apps/preview/apps/preview-exit.element.js +1 -1
  4. package/dist-cms/apps/preview/apps/preview-open-website.element.js +1 -1
  5. package/dist-cms/apps/preview/preview.context.d.ts +1 -1
  6. package/dist-cms/apps/preview/preview.context.js +24 -4
  7. package/dist-cms/apps/preview/preview.element.js +1 -1
  8. package/dist-cms/assets/lang/da.js +17 -13
  9. package/dist-cms/assets/lang/de.js +3 -0
  10. package/dist-cms/assets/lang/en.js +17 -2
  11. package/dist-cms/assets/lang/es.js +3 -0
  12. package/dist-cms/assets/lang/fr.js +1 -0
  13. package/dist-cms/assets/lang/nb.js +1 -1
  14. package/dist-cms/assets/lang/nl.js +1 -0
  15. package/dist-cms/assets/lang/pt.js +7 -0
  16. package/dist-cms/custom-elements.json +250 -18
  17. package/dist-cms/external/dompurify/package.json +1 -1
  18. package/dist-cms/external/lit/package.json +1 -1
  19. package/dist-cms/external/marked/package.json +1 -1
  20. package/dist-cms/external/monaco-editor/package.json +1 -1
  21. package/dist-cms/external/monaco-editor/vite.config.js +1 -1
  22. package/dist-cms/external/openid/src/redirect_based_handler.d.ts +6 -0
  23. package/dist-cms/external/openid/src/redirect_based_handler.js +35 -7
  24. package/dist-cms/external/uui/package.json +2 -2
  25. package/dist-cms/libs/localization-api/localization.controller.d.ts +9 -0
  26. package/dist-cms/libs/localization-api/localization.controller.js +9 -0
  27. package/dist-cms/packages/block/block/workspace/block-workspace-editor.element.js +1 -4
  28. package/dist-cms/packages/block/block/workspace/block-workspace.context.js +37 -12
  29. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.js +16 -21
  30. package/dist-cms/packages/block/block-grid/components/block-grid-area-config-entry/block-grid-area-config-entry.element.js +7 -3
  31. package/dist-cms/packages/block/block-grid/components/block-grid-area-config-entry/workspace/views/settings.element.js +2 -2
  32. package/dist-cms/packages/block/block-grid/components/block-grid-block/block-grid-block.element.d.ts +1 -0
  33. package/dist-cms/packages/block/block-grid/components/block-grid-block/block-grid-block.element.js +4 -1
  34. package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.d.ts +1 -0
  35. package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.js +4 -1
  36. package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.js +3 -3
  37. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.js +3 -1
  38. package/dist-cms/packages/block/block-grid/property-editors/block-grid-area-type-permission/block-grid-area-type-permission.element.js +11 -2
  39. package/dist-cms/packages/block/block-grid/property-editors/block-grid-areas-config/property-editor-ui-block-grid-areas-config.element.js +6 -0
  40. package/dist-cms/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.js +21 -13
  41. package/dist-cms/packages/block/block-grid/workspace/views/block-grid-type-workspace-view-areas.element.js +1 -1
  42. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.d.ts +2 -2
  43. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +8 -7
  44. package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.d.ts +1 -0
  45. package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.js +4 -5
  46. package/dist-cms/packages/block/block-list/components/ref-list-block/ref-list-block.element.d.ts +1 -0
  47. package/dist-cms/packages/block/block-list/components/ref-list-block/ref-list-block.element.js +4 -1
  48. package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.js +5 -4
  49. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.d.ts +1 -1
  50. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.js +6 -5
  51. package/dist-cms/packages/block/block-rte/components/ref-rte-block/ref-rte-block.element.d.ts +1 -0
  52. package/dist-cms/packages/block/block-rte/components/ref-rte-block/ref-rte-block.element.js +4 -1
  53. package/dist-cms/packages/block/block-type/components/input-block-type/input-block-type.element.js +3 -4
  54. package/dist-cms/packages/clipboard/clipboard-entry/picker/clipboard-entry-picker.element.js +1 -1
  55. package/dist-cms/packages/content/content/manager/content-data-manager.js +1 -0
  56. package/dist-cms/packages/content/content/manager/element-data-manager.js +6 -5
  57. package/dist-cms/packages/content/content/types.d.ts +8 -2
  58. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.d.ts +4 -0
  59. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.js +34 -10
  60. package/dist-cms/packages/content/content/workspace/views/edit/content-editor.element.d.ts +2 -1
  61. package/dist-cms/packages/content/content/workspace/views/edit/content-editor.element.js +10 -2
  62. package/dist-cms/packages/content/content-type/structure/content-type-container-structure-helper.class.js +1 -1
  63. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +9 -5
  64. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.js +25 -5
  65. package/dist-cms/packages/content/content-type/workspace/content-type-workspace-context-base.js +1 -0
  66. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-group.element.js +3 -4
  67. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-property.element.js +17 -5
  68. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.js +39 -20
  69. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor.element.js +1 -1
  70. package/dist-cms/packages/content/property-type/workspace/views/settings/property-workspace-view-settings.element.js +1 -1
  71. package/dist-cms/packages/core/auth/auth-flow.js +3 -0
  72. package/dist-cms/packages/core/backend-api/client/client.gen.js +39 -11
  73. package/dist-cms/packages/core/backend-api/client/index.d.ts +1 -0
  74. package/dist-cms/packages/core/backend-api/client/index.js +1 -0
  75. package/dist-cms/packages/core/backend-api/client/types.gen.d.ts +1 -1
  76. package/dist-cms/packages/core/backend-api/client/utils.gen.d.ts +6 -11
  77. package/dist-cms/packages/core/backend-api/client/utils.gen.js +27 -23
  78. package/dist-cms/packages/core/backend-api/client.gen.d.ts +3 -3
  79. package/dist-cms/packages/core/backend-api/core/queryKeySerializer.gen.d.ts +18 -0
  80. package/dist-cms/packages/core/backend-api/core/queryKeySerializer.gen.js +99 -0
  81. package/dist-cms/packages/core/backend-api/core/serverSentEvents.gen.d.ts +13 -1
  82. package/dist-cms/packages/core/backend-api/core/serverSentEvents.gen.js +16 -2
  83. package/dist-cms/packages/core/backend-api/core/utils.gen.d.ts +6 -1
  84. package/dist-cms/packages/core/backend-api/core/utils.gen.js +18 -0
  85. package/dist-cms/packages/core/backend-api/sdk.gen.d.ts +12 -6
  86. package/dist-cms/packages/core/backend-api/sdk.gen.js +500 -416
  87. package/dist-cms/packages/core/backend-api/types.gen.d.ts +294 -6
  88. package/dist-cms/packages/core/backend-api/types.gen.js +1 -0
  89. package/dist-cms/packages/core/collection/action/create/manifests.js +1 -1
  90. package/dist-cms/packages/core/components/backoffice-notification-container/backoffice-notification-container.element.d.ts +4 -0
  91. package/dist-cms/packages/core/components/backoffice-notification-container/backoffice-notification-container.element.js +39 -2
  92. package/dist-cms/packages/core/components/body-layout/body-layout.element.js +1 -1
  93. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.d.ts +1 -1
  94. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.js +18 -12
  95. package/dist-cms/packages/core/components/index.d.ts +1 -0
  96. package/dist-cms/packages/core/components/index.js +1 -0
  97. package/dist-cms/packages/core/components/input-number-range/input-number-range.element.js +1 -1
  98. package/dist-cms/packages/core/components/input-slider/input-slider.element.d.ts +8 -3
  99. package/dist-cms/packages/core/components/input-slider/input-slider.element.js +95 -9
  100. package/dist-cms/packages/core/components/multiple-color-picker-input/multiple-color-picker-item-input.element.js +28 -5
  101. package/dist-cms/packages/core/components/split-panel/split-panel.element.d.ts +3 -2
  102. package/dist-cms/packages/core/components/split-panel/split-panel.element.js +7 -2
  103. package/dist-cms/packages/core/components/view-loader/view-loader.element.d.ts +5 -0
  104. package/dist-cms/packages/core/components/view-loader/view-loader.element.js +36 -0
  105. package/dist-cms/packages/core/culture/manifests.d.ts +1 -1
  106. package/dist-cms/packages/core/entity-action/common/create/create.action.js +1 -1
  107. package/dist-cms/packages/core/entity-action/common/create/create.action.kind.js +1 -1
  108. package/dist-cms/packages/core/entity-action/global-components/entity-actions-table-column-view/entity-actions-table-column-view.element.js +1 -1
  109. package/dist-cms/packages/core/entity-flag/index.d.ts +1 -0
  110. package/dist-cms/packages/core/entity-flag/index.js +1 -0
  111. package/dist-cms/packages/core/entity-flag/types.d.ts +10 -0
  112. package/dist-cms/packages/core/entity-flag/types.js +1 -0
  113. package/dist-cms/packages/core/entity-sign/components/entity-sign-bundle.element.d.ts +21 -0
  114. package/dist-cms/packages/core/entity-sign/components/entity-sign-bundle.element.js +257 -0
  115. package/dist-cms/packages/core/entity-sign/components/index.d.ts +1 -0
  116. package/dist-cms/packages/core/entity-sign/components/index.js +1 -0
  117. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-api.interface.d.ts +18 -0
  118. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-api.interface.js +1 -0
  119. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-element.interface.d.ts +5 -0
  120. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-element.interface.js +1 -0
  121. package/dist-cms/packages/core/entity-sign/extensions/entity-sign.extension.d.ts +20 -0
  122. package/dist-cms/packages/core/entity-sign/extensions/entity-sign.extension.js +1 -0
  123. package/dist-cms/packages/core/entity-sign/extensions/types.d.ts +3 -0
  124. package/dist-cms/packages/core/entity-sign/extensions/types.js +1 -0
  125. package/dist-cms/packages/core/entity-sign/index.d.ts +2 -0
  126. package/dist-cms/packages/core/entity-sign/index.js +1 -0
  127. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.api.d.ts +10 -0
  128. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.api.js +11 -0
  129. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.element.d.ts +10 -0
  130. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.element.js +41 -0
  131. package/dist-cms/packages/core/entity-sign/kinds/icon/index.d.ts +1 -0
  132. package/dist-cms/packages/core/entity-sign/kinds/icon/index.js +1 -0
  133. package/dist-cms/packages/core/entity-sign/kinds/icon/manifests.d.ts +2 -0
  134. package/dist-cms/packages/core/entity-sign/kinds/icon/manifests.js +14 -0
  135. package/dist-cms/packages/core/entity-sign/kinds/icon/types.d.ts +15 -0
  136. package/dist-cms/packages/core/entity-sign/kinds/icon/types.js +1 -0
  137. package/dist-cms/packages/core/entity-sign/kinds/manifests.d.ts +2 -0
  138. package/dist-cms/packages/core/entity-sign/kinds/manifests.js +2 -0
  139. package/dist-cms/packages/core/entity-sign/kinds/types.d.ts +1 -0
  140. package/dist-cms/packages/core/entity-sign/kinds/types.js +1 -0
  141. package/dist-cms/packages/core/entity-sign/manifests.d.ts +2 -0
  142. package/dist-cms/packages/core/entity-sign/manifests.js +2 -0
  143. package/dist-cms/packages/core/entity-sign/types.d.ts +1 -0
  144. package/dist-cms/packages/core/entity-sign/types.js +1 -0
  145. package/dist-cms/packages/core/entry-point.d.ts +1 -0
  146. package/dist-cms/packages/core/entry-point.js +1 -0
  147. package/dist-cms/packages/core/icon-registry/icon-dictionary.json +8 -0
  148. package/dist-cms/packages/core/icon-registry/icon-picker-modal/icon-picker-modal.element.d.ts +1 -3
  149. package/dist-cms/packages/core/icon-registry/icon-picker-modal/icon-picker-modal.element.js +44 -26
  150. package/dist-cms/packages/core/icon-registry/icon-picker-modal/icon-picker-modal.token.d.ts +5 -2
  151. package/dist-cms/packages/core/icon-registry/icons/icon-bar-chart.d.ts +1 -1
  152. package/dist-cms/packages/core/icon-registry/icons/icon-bar-chart.js +1 -1
  153. package/dist-cms/packages/core/icon-registry/icons/icon-bars.d.ts +1 -1
  154. package/dist-cms/packages/core/icon-registry/icons/icon-bars.js +1 -1
  155. package/dist-cms/packages/core/icon-registry/icons/icon-blockquote.d.ts +1 -1
  156. package/dist-cms/packages/core/icon-registry/icons/icon-blockquote.js +1 -1
  157. package/dist-cms/packages/core/icon-registry/icons/icon-bug.d.ts +1 -1
  158. package/dist-cms/packages/core/icon-registry/icons/icon-bug.js +1 -1
  159. package/dist-cms/packages/core/icon-registry/icons/icon-bulleted-list.d.ts +1 -1
  160. package/dist-cms/packages/core/icon-registry/icons/icon-bulleted-list.js +1 -1
  161. package/dist-cms/packages/core/icon-registry/icons/icon-equalizer.d.ts +1 -1
  162. package/dist-cms/packages/core/icon-registry/icons/icon-equalizer.js +1 -1
  163. package/dist-cms/packages/core/icon-registry/icons/icon-heading-5.d.ts +1 -1
  164. package/dist-cms/packages/core/icon-registry/icons/icon-heading-5.js +1 -1
  165. package/dist-cms/packages/core/icon-registry/icons/icon-heading-6.d.ts +1 -1
  166. package/dist-cms/packages/core/icon-registry/icons/icon-heading-6.js +1 -1
  167. package/dist-cms/packages/core/icon-registry/icons/icon-heading.d.ts +1 -1
  168. package/dist-cms/packages/core/icon-registry/icons/icon-heading.js +1 -1
  169. package/dist-cms/packages/core/icon-registry/icons/icon-home.d.ts +1 -1
  170. package/dist-cms/packages/core/icon-registry/icons/icon-home.js +1 -1
  171. package/dist-cms/packages/core/icon-registry/icons/icon-indent.d.ts +1 -1
  172. package/dist-cms/packages/core/icon-registry/icons/icon-indent.js +1 -1
  173. package/dist-cms/packages/core/icon-registry/icons/icon-list.d.ts +1 -1
  174. package/dist-cms/packages/core/icon-registry/icons/icon-list.js +1 -1
  175. package/dist-cms/packages/core/icon-registry/icons/icon-ordered-list.d.ts +1 -1
  176. package/dist-cms/packages/core/icon-registry/icons/icon-ordered-list.js +1 -1
  177. package/dist-cms/packages/core/icon-registry/icons/icon-outdent.d.ts +1 -1
  178. package/dist-cms/packages/core/icon-registry/icons/icon-outdent.js +1 -1
  179. package/dist-cms/packages/core/icon-registry/icons/icon-playlist.d.ts +1 -1
  180. package/dist-cms/packages/core/icon-registry/icons/icon-playlist.js +1 -1
  181. package/dist-cms/packages/core/icon-registry/icons/icon-stretch-horizontal.d.ts +2 -0
  182. package/dist-cms/packages/core/icon-registry/icons/icon-stretch-horizontal.js +1 -0
  183. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-center.d.ts +1 -1
  184. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-center.js +1 -1
  185. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-justify.d.ts +1 -1
  186. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-justify.js +1 -1
  187. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-left.d.ts +1 -1
  188. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-left.js +1 -1
  189. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-right.d.ts +1 -1
  190. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-right.js +1 -1
  191. package/dist-cms/packages/core/icon-registry/icons/icon-trending-up-down.d.ts +2 -0
  192. package/dist-cms/packages/core/icon-registry/icons/icon-trending-up-down.js +1 -0
  193. package/dist-cms/packages/core/icon-registry/icons/icon-twitter-x.d.ts +1 -1
  194. package/dist-cms/packages/core/icon-registry/icons/icon-twitter-x.js +1 -1
  195. package/dist-cms/packages/core/icon-registry/icons.d.ts +10 -0
  196. package/dist-cms/packages/core/icon-registry/icons.js +6 -0
  197. package/dist-cms/packages/core/manifests.js +2 -0
  198. package/dist-cms/packages/core/menu/components/menu-item-layout/menu-item-layout.element.js +20 -19
  199. package/dist-cms/packages/core/menu/section-sidebar-menu-with-entity-actions/section-sidebar-menu-with-entity-actions.element.js +3 -2
  200. package/dist-cms/packages/core/openapi-ts.config.d.ts +31 -1
  201. package/dist-cms/packages/core/package.json +4 -4
  202. package/dist-cms/packages/core/property/components/property/property.element.d.ts +1 -1
  203. package/dist-cms/packages/core/property/components/property/property.element.js +6 -1
  204. package/dist-cms/packages/core/property/components/property-layout/property-layout.element.js +2 -1
  205. package/dist-cms/packages/core/property/manifests.d.ts +1 -1
  206. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-builder.controller.d.ts +3 -1
  207. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-builder.controller.js +25 -16
  208. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-variant-builder.controller.js +12 -10
  209. package/dist-cms/packages/core/property/property-value-preset/types.d.ts +1 -0
  210. package/dist-cms/packages/core/property-editor/constants.d.ts +2 -0
  211. package/dist-cms/packages/core/property-editor/constants.js +2 -0
  212. package/dist-cms/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.js +1 -1
  213. package/dist-cms/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.js +8 -5
  214. package/dist-cms/packages/core/resources/extractUmbColorVariable.function.js +1 -0
  215. package/dist-cms/packages/core/router/modal-registration/modal-route-registration.controller.js +8 -4
  216. package/dist-cms/packages/core/section/extensions/section.extension.d.ts +1 -0
  217. package/dist-cms/packages/core/sorter/sorter.controller.d.ts +0 -1
  218. package/dist-cms/packages/core/sorter/sorter.controller.js +0 -1
  219. package/dist-cms/packages/core/temporary-file/manifests.d.ts +1 -1
  220. package/dist-cms/packages/core/themes/manifests.d.ts +1 -1
  221. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.d.ts +10 -0
  222. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.js +75 -15
  223. package/dist-cms/packages/core/tree/types.d.ts +2 -1
  224. package/dist-cms/packages/core/validation/controllers/validation.controller.js +4 -2
  225. package/dist-cms/packages/core/variant/types.d.ts +2 -0
  226. package/dist-cms/packages/core/vite.config.js +2 -0
  227. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-menu-breadcrumb/workspace-menu-breadcrumb.element.js +5 -1
  228. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.js +5 -2
  229. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.js +22 -4
  230. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.d.ts +2 -1
  231. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.js +5 -0
  232. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.d.ts +6 -0
  233. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.js +12 -2
  234. package/dist-cms/packages/core/workspace/kinds/default/default-workspace.context.d.ts +1 -1
  235. package/dist-cms/packages/core/workspace/workspace.element.d.ts +2 -2
  236. package/dist-cms/packages/core/workspace/workspace.element.js +2 -2
  237. package/dist-cms/packages/data-type/index.d.ts +1 -0
  238. package/dist-cms/packages/data-type/index.js +1 -0
  239. package/dist-cms/packages/data-type/workspace/data-type-workspace.context.js +4 -1
  240. package/dist-cms/packages/data-type/workspace/index.d.ts +1 -0
  241. package/dist-cms/packages/data-type/workspace/index.js +1 -0
  242. package/dist-cms/packages/data-type/workspace/views/details/data-type-details-workspace-property-editor-picker.element.d.ts +22 -0
  243. package/dist-cms/packages/data-type/workspace/views/details/data-type-details-workspace-property-editor-picker.element.js +128 -0
  244. package/dist-cms/packages/data-type/workspace/views/details/data-type-details-workspace-view.element.js +23 -72
  245. package/dist-cms/packages/data-type/workspace/views/index.d.ts +1 -0
  246. package/dist-cms/packages/data-type/workspace/views/index.js +1 -0
  247. package/dist-cms/packages/dictionary/entity-action/manifests.js +1 -1
  248. package/dist-cms/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.js +5 -8
  249. package/dist-cms/packages/documents/document-blueprints/entity-actions/create/manifests.js +1 -1
  250. package/dist-cms/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.js +3 -0
  251. package/dist-cms/packages/documents/document-blueprints/types.d.ts +2 -2
  252. package/dist-cms/packages/documents/document-types/entity-actions/create/manifests.js +1 -1
  253. package/dist-cms/packages/documents/documents/collection/repository/document-collection.server.data-source.js +2 -0
  254. package/dist-cms/packages/documents/documents/collection/types.d.ts +3 -2
  255. package/dist-cms/packages/documents/documents/constants.d.ts +1 -0
  256. package/dist-cms/packages/documents/documents/entity-actions/create/create.action.d.ts +1 -1
  257. package/dist-cms/packages/documents/documents/entity-actions/create/create.action.js +1 -1
  258. package/dist-cms/packages/documents/documents/entity-actions/create/manifests.js +1 -1
  259. package/dist-cms/packages/documents/documents/entity-sign/constants.d.ts +2 -0
  260. package/dist-cms/packages/documents/documents/entity-sign/constants.js +1 -0
  261. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/constants.d.ts +1 -0
  262. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/constants.js +1 -0
  263. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/manifests.d.ts +1 -0
  264. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/manifests.js +12 -0
  265. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/constants.d.ts +1 -0
  266. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/constants.js +1 -0
  267. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/manifests.d.ts +1 -0
  268. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/manifests.js +18 -0
  269. package/dist-cms/packages/documents/documents/entity-sign/is-protected/constants.d.ts +1 -0
  270. package/dist-cms/packages/documents/documents/entity-sign/is-protected/constants.js +1 -0
  271. package/dist-cms/packages/documents/documents/entity-sign/is-protected/manifest.d.ts +1 -0
  272. package/dist-cms/packages/documents/documents/entity-sign/is-protected/manifest.js +15 -0
  273. package/dist-cms/packages/documents/documents/entity-sign/manifests.d.ts +1 -0
  274. package/dist-cms/packages/documents/documents/entity-sign/manifests.js +8 -0
  275. package/dist-cms/packages/documents/documents/item/document-item-data-resolver.d.ts +9 -6
  276. package/dist-cms/packages/documents/documents/item/document-item-data-resolver.js +43 -21
  277. package/dist-cms/packages/documents/documents/item/repository/document-item.server.cache-invalidation.manager.js +1 -0
  278. package/dist-cms/packages/documents/documents/item/repository/document-item.server.data-source.js +2 -0
  279. package/dist-cms/packages/documents/documents/item/repository/types.d.ts +3 -1
  280. package/dist-cms/packages/documents/documents/manifests.js +2 -0
  281. package/dist-cms/packages/documents/documents/publishing/publish/entity-bulk-action/publish.bulk-action.js +1 -0
  282. package/dist-cms/packages/documents/documents/publishing/repository/document-publishing.server.data-source.js +2 -0
  283. package/dist-cms/packages/documents/documents/publishing/unpublish/entity-bulk-action/unpublish.bulk-action.js +1 -0
  284. package/dist-cms/packages/documents/documents/recycle-bin/tree/data/document-recycle-bin-tree.server.data-source.js +3 -0
  285. package/dist-cms/packages/documents/documents/reference/repository/document-reference-response.management-api.mapping.js +1 -0
  286. package/dist-cms/packages/documents/documents/repository/detail/document-detail.server.data-source.js +3 -0
  287. package/dist-cms/packages/documents/documents/search/document-search.server.data-source.js +2 -0
  288. package/dist-cms/packages/documents/documents/tree/document-tree.server.data-source.js +2 -0
  289. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.context.d.ts +1 -0
  290. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.context.js +1 -0
  291. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.element.d.ts +7 -3
  292. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.element.js +20 -90
  293. package/dist-cms/packages/documents/documents/tree/types.d.ts +3 -1
  294. package/dist-cms/packages/documents/documents/user-permissions/document/manifests.js +1 -1
  295. package/dist-cms/packages/documents/documents/utils.js +1 -0
  296. package/dist-cms/packages/documents/documents/workspace/constants.js +1 -0
  297. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.d.ts +2 -1
  298. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.js +10 -3
  299. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view-variant-selector.element.d.ts +1 -3
  300. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view-variant-selector.element.js +2 -2
  301. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.d.ts +1 -0
  302. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.js +13 -6
  303. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +9 -1
  304. package/dist-cms/packages/extension-types/index.d.ts +2 -0
  305. package/dist-cms/packages/language/entity-actions/manifests.js +1 -1
  306. package/dist-cms/packages/log-viewer/workspace/logviewer-workspace.context.d.ts +1 -0
  307. package/dist-cms/packages/log-viewer/workspace/logviewer-workspace.context.js +8 -1
  308. package/dist-cms/packages/management-api/detail/cache-invalidation.manager.d.ts +1 -0
  309. package/dist-cms/packages/management-api/detail/cache-invalidation.manager.js +3 -1
  310. package/dist-cms/packages/management-api/detail/detail-data.request-manager.js +1 -1
  311. package/dist-cms/packages/management-api/item/cache-invalidation.manager.d.ts +1 -0
  312. package/dist-cms/packages/management-api/item/cache-invalidation.manager.js +3 -1
  313. package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.js +1 -0
  314. package/dist-cms/packages/media/media/collection/media-collection.context.js +1 -0
  315. package/dist-cms/packages/media/media/collection/repository/media-collection.server.data-source.js +1 -0
  316. package/dist-cms/packages/media/media/collection/types.d.ts +2 -1
  317. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-svg.element.js +1 -0
  318. package/dist-cms/packages/media/media/dropzone/media-dropzone.manager.js +1 -1
  319. package/dist-cms/packages/media/media/entity-actions/create/create.action.d.ts +1 -1
  320. package/dist-cms/packages/media/media/entity-actions/create/create.action.js +1 -1
  321. package/dist-cms/packages/media/media/entity-actions/create/manifests.js +1 -1
  322. package/dist-cms/packages/media/media/modals/media-picker/components/media-picker-folder-path.element.js +1 -0
  323. package/dist-cms/packages/media/media/paths.js +1 -1
  324. package/dist-cms/packages/media/media/property-editors/upload-field/Umbraco.UploadField.js +1 -1
  325. package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.js +5 -0
  326. package/dist-cms/packages/media/media/repository/item/media-item.server.cache-invalidation.manager.js +1 -0
  327. package/dist-cms/packages/media/media/tree/media-tree.server.data-source.js +3 -0
  328. package/dist-cms/packages/media/media/workspace/constants.js +1 -0
  329. package/dist-cms/packages/members/member/collection/repository/member-collection.server.data-source.js +1 -0
  330. package/dist-cms/packages/members/member/entity-actions/create/manifests.js +1 -1
  331. package/dist-cms/packages/members/member/repository/detail/member-detail.server.data-source.js +5 -0
  332. package/dist-cms/packages/members/member/workspace/member/constants.js +1 -0
  333. package/dist-cms/packages/members/member-group/entity-actions/manifests.js +1 -1
  334. package/dist-cms/packages/property-editors/collection/manifests.js +1 -0
  335. package/dist-cms/packages/property-editors/icon-picker/manifests.js +10 -0
  336. package/dist-cms/packages/property-editors/icon-picker/property-editor-ui-icon-picker.element.d.ts +7 -3
  337. package/dist-cms/packages/property-editors/icon-picker/property-editor-ui-icon-picker.element.js +45 -14
  338. package/dist-cms/packages/property-editors/missing/manifests.js +15 -2
  339. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-base.element.d.ts +18 -0
  340. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-base.element.js +130 -0
  341. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-ui.element.d.ts +13 -0
  342. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-ui.element.js +24 -0
  343. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing.element.d.ts +2 -13
  344. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing.element.js +6 -112
  345. package/dist-cms/packages/property-editors/slider/property-editor-ui-slider.element.d.ts +2 -2
  346. package/dist-cms/packages/property-editors/slider/property-editor-ui-slider.element.js +29 -11
  347. package/dist-cms/packages/property-editors/slider/slider-property-value-preset.d.ts +1 -4
  348. package/dist-cms/packages/property-editors/slider/types.d.ts +3 -2
  349. package/dist-cms/packages/templating/partial-views/entity-actions/create/manifests.js +1 -1
  350. package/dist-cms/packages/templating/scripts/entity-actions/create/manifests.js +1 -1
  351. package/dist-cms/packages/templating/templates/entity-actions/manifests.js +1 -1
  352. package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.js +2 -2
  353. package/dist-cms/packages/templating/templates/workspace/template-workspace.context.d.ts +1 -1
  354. package/dist-cms/packages/templating/templates/workspace/template-workspace.context.js +14 -6
  355. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar.element.js +3 -3
  356. package/dist-cms/packages/tiptap/extensions/horizontal-rule/manifests.js +1 -0
  357. package/dist-cms/packages/tiptap/extensions/style-select/manifests.js +1 -0
  358. package/dist-cms/packages/tiptap/property-editors/extensions-configuration/property-editor-ui-tiptap-extensions-configuration.element.js +2 -2
  359. package/dist-cms/packages/tiptap/property-editors/statusbar-configuration/property-editor-ui-tiptap-statusbar-configuration.element.js +37 -25
  360. package/dist-cms/packages/tiptap/property-editors/statusbar-configuration/tiptap-statusbar-configuration.context.d.ts +2 -2
  361. package/dist-cms/packages/tiptap/property-editors/statusbar-configuration/tiptap-statusbar-configuration.context.js +2 -1
  362. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/property-editor-ui-tiptap-toolbar-configuration.element.js +1 -3
  363. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/tiptap-toolbar-configuration.context.d.ts +2 -2
  364. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/tiptap-toolbar-configuration.context.js +1 -1
  365. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/tiptap-toolbar-group-configuration.element.js +22 -19
  366. package/dist-cms/packages/tiptap/property-editors/types.d.ts +4 -4
  367. package/dist-cms/packages/ufm/contexts/ufm.context.d.ts +1 -1
  368. package/dist-cms/packages/ufm/filters/manifests.js +24 -0
  369. package/dist-cms/packages/ufm/filters/strip-html.filter.d.ts +1 -0
  370. package/dist-cms/packages/ufm/filters/strip-html.filter.js +1 -0
  371. package/dist-cms/packages/ufm/filters/truncate.filter.d.ts +1 -0
  372. package/dist-cms/packages/ufm/filters/truncate.filter.js +8 -1
  373. package/dist-cms/packages/umbraco-news/umbraco-news-dashboard.element.js +1 -2
  374. package/dist-cms/packages/user/user-permission/constants.d.ts +1 -0
  375. package/dist-cms/packages/user/user-permission/constants.js +1 -0
  376. package/dist-cms/packages/user/user-permission/fallback-permission-condition/constants.d.ts +1 -0
  377. package/dist-cms/packages/user/user-permission/fallback-permission-condition/constants.js +1 -0
  378. package/dist-cms/packages/user/user-permission/fallback-permission-condition/fallback-user-permission.condition.d.ts +9 -0
  379. package/dist-cms/packages/user/user-permission/fallback-permission-condition/fallback-user-permission.condition.js +34 -0
  380. package/dist-cms/packages/user/user-permission/fallback-permission-condition/manifests.d.ts +1 -0
  381. package/dist-cms/packages/user/user-permission/fallback-permission-condition/manifests.js +9 -0
  382. package/dist-cms/packages/user/user-permission/fallback-permission-condition/types.d.ts +20 -0
  383. package/dist-cms/packages/user/user-permission/fallback-permission-condition/types.js +1 -0
  384. package/dist-cms/packages/user/user-permission/index.d.ts +1 -0
  385. package/dist-cms/packages/user/user-permission/index.js +1 -0
  386. package/dist-cms/packages/user/user-permission/manifests.js +2 -1
  387. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  388. package/dist-cms/umbraco-package-schema.json +3 -0
  389. package/dist-cms/umbraco-package.json +1 -1
  390. package/dist-cms/vscode-html-custom-data.json +133 -30
  391. package/examples/user-permission/constants.ts +4 -0
  392. package/examples/user-permission/entity-action/action-1.ts +9 -0
  393. package/examples/user-permission/entity-action/action-2.ts +9 -0
  394. package/examples/user-permission/entity-action/manifests.ts +47 -0
  395. package/examples/user-permission/entity-user-permission/manifests.ts +30 -0
  396. package/examples/user-permission/index.ts +9 -0
  397. package/examples/user-permission/localization/en.ts +6 -0
  398. package/examples/user-permission/localization/manifests.ts +12 -0
  399. package/examples/validation-context/validation-context-dashboard.ts +9 -8
  400. package/package.json +13 -11
@@ -137,7 +137,7 @@ let UmbPropertyEditorUiTiptapStatusbarConfigurationElement = class UmbPropertyEd
137
137
  <uui-button
138
138
  compact
139
139
  class=${forbidden ? 'forbidden' : ''}
140
- data-mark="tiptap-toolbar-item:${item.alias}"
140
+ data-mark="tiptap-statusbar-item:${item.alias}"
141
141
  draggable="true"
142
142
  label=${label}
143
143
  look=${forbidden ? 'placeholder' : 'outline'}
@@ -178,29 +178,41 @@ let UmbPropertyEditorUiTiptapStatusbarConfigurationElement = class UmbPropertyEd
178
178
  }
179
179
  #renderItem(alias, areaIndex = 0, itemIndex = 0) {
180
180
  const item = this.#context?.getExtensionByAlias(alias);
181
- if (!item)
182
- return nothing;
183
181
  const forbidden = !this.#context?.isExtensionEnabled(item.alias);
184
- const label = this.localize.string(item.label);
185
- return html `
186
- <uui-button
187
- compact
188
- class=${forbidden ? 'forbidden' : ''}
189
- data-mark="tiptap-toolbar-item:${item.alias}"
190
- draggable="true"
191
- label=${label}
192
- look=${forbidden ? 'placeholder' : 'outline'}
193
- title=${label}
194
- ?disabled=${forbidden}
195
- @click=${() => this.#context.removeStatusbarItem([areaIndex, itemIndex])}
196
- @dragend=${this.#onDragEnd}
197
- @dragstart=${(e) => this.#onDragStart(e, alias, [areaIndex, itemIndex])}>
198
- <div class="inner">
199
- ${when(item.icon, (icon) => html `<umb-icon .name=${icon}></umb-icon>`)}
200
- <span>${label}</span>
201
- </div>
202
- </uui-button>
203
- `;
182
+ const label = this.localize.string(item.label) || item.alias;
183
+ switch (item.kind) {
184
+ case 'unknown':
185
+ return html `
186
+ <uui-button
187
+ compact
188
+ class="missing"
189
+ data-mark="tiptap-statusbar-item:${item.alias}"
190
+ color="danger"
191
+ look="placeholder"
192
+ label="Missing extension"
193
+ title="Missing extension: ${item.alias}"
194
+ @click=${() => this.#context.removeStatusbarItem([areaIndex, itemIndex])}></uui-button>
195
+ `;
196
+ default:
197
+ return html `
198
+ <uui-button
199
+ compact
200
+ class=${forbidden ? 'forbidden' : ''}
201
+ data-mark="tiptap-statusbar-item:${item.alias}"
202
+ draggable="true"
203
+ label=${label}
204
+ look=${forbidden ? 'placeholder' : 'outline'}
205
+ title=${label}
206
+ @click=${() => this.#context.removeStatusbarItem([areaIndex, itemIndex])}
207
+ @dragend=${this.#onDragEnd}
208
+ @dragstart=${(e) => this.#onDragStart(e, alias, [areaIndex, itemIndex])}>
209
+ <div class="inner">
210
+ ${when(item.icon, (icon) => html `<umb-icon .name=${icon}></umb-icon>`)}
211
+ <span>${label}</span>
212
+ </div>
213
+ </uui-button>
214
+ `;
215
+ }
204
216
  }
205
217
  static { this.styles = [
206
218
  css `
@@ -267,8 +279,8 @@ let UmbPropertyEditorUiTiptapStatusbarConfigurationElement = class UmbPropertyEd
267
279
  --color-standalone: var(--uui-color-danger-standalone);
268
280
  --color-emphasis: var(--uui-color-danger-emphasis);
269
281
  --color-contrast: var(--uui-color-danger);
270
- --uui-button-contrast-disabled: var(--uui-color-danger);
271
- --uui-button-border-color-disabled: var(--uui-color-danger);
282
+ --uui-button-contrast: var(--uui-color-danger);
283
+ --uui-button-border-color: var(--uui-color-danger);
272
284
  }
273
285
 
274
286
  div {
@@ -4,13 +4,13 @@ import { UmbContextBase } from '../../../../libs/class-api/index.js';
4
4
  import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
5
5
  export declare class UmbTiptapStatusbarConfigurationContext extends UmbContextBase {
6
6
  #private;
7
- readonly extensions: import("rxjs").Observable<UmbTiptapStatusbarExtension[]>;
7
+ readonly extensions: import("rxjs").Observable<import("../types.js").UmbTiptapExtensionBase[]>;
8
8
  readonly reload: import("rxjs").Observable<boolean>;
9
9
  readonly statusbar: import("rxjs").Observable<UmbTiptapStatusbarViewModel[]>;
10
10
  constructor(host: UmbControllerHost);
11
11
  cloneStatusbarValue(value?: UmbTiptapStatusbarValue | null): UmbTiptapStatusbarValue;
12
12
  filterExtensions(query: string): Array<UmbTiptapStatusbarExtension>;
13
- getExtensionByAlias(alias: string): UmbTiptapStatusbarExtension | undefined;
13
+ getExtensionByAlias(alias: string): UmbTiptapStatusbarExtension;
14
14
  isExtensionEnabled(alias: string): boolean;
15
15
  isExtensionInUse(alias: string): boolean;
16
16
  isValidStatusbarValue(value: unknown): value is UmbTiptapStatusbarValue;
@@ -25,6 +25,7 @@ export class UmbTiptapStatusbarConfigurationContext extends UmbContextBase {
25
25
  const _extensions = extensions
26
26
  .sort((a, b) => a.alias.localeCompare(b.alias))
27
27
  .map((ext) => ({
28
+ kind: 'default',
28
29
  alias: ext.alias,
29
30
  label: ext.meta.label,
30
31
  icon: ext.meta.icon,
@@ -59,7 +60,7 @@ export class UmbTiptapStatusbarConfigurationContext extends UmbContextBase {
59
60
  .filter((ext) => ext.alias?.toLowerCase().includes(query) || ext.label?.toLowerCase().includes(query));
60
61
  }
61
62
  getExtensionByAlias(alias) {
62
- return this.#lookup?.get(alias);
63
+ return this.#lookup?.get(alias) ?? { label: '', alias, icon: '', kind: 'unknown' };
63
64
  }
64
65
  isExtensionEnabled(alias) {
65
66
  return this.#extensionsEnabled.has(alias);
@@ -211,9 +211,7 @@ let UmbPropertyEditorUiTiptapToolbarConfigurationElement = class UmbPropertyEdit
211
211
  if (!group)
212
212
  return nothing;
213
213
  const showActionBar = this._toolbar[rowIndex].data.length > 1 && group.data.length === 0;
214
- const items = group.data
215
- .map((alias) => this.#context?.getExtensionByAlias(alias))
216
- .filter((item) => !!item);
214
+ const items = group.data.map((alias) => this.#context?.getExtensionByAlias(alias));
217
215
  return html `
218
216
  <div
219
217
  class="group"
@@ -4,13 +4,13 @@ import { UmbContextBase } from '../../../../libs/class-api/index.js';
4
4
  import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
5
5
  export declare class UmbTiptapToolbarConfigurationContext extends UmbContextBase {
6
6
  #private;
7
- readonly extensions: import("rxjs").Observable<UmbTiptapToolbarExtension[]>;
7
+ readonly extensions: import("rxjs").Observable<import("../types.js").UmbTiptapExtensionBase[]>;
8
8
  readonly reload: import("rxjs").Observable<boolean>;
9
9
  readonly toolbar: import("rxjs").Observable<UmbTiptapToolbarRowViewModel[]>;
10
10
  constructor(host: UmbControllerHost);
11
11
  cloneToolbarValue(value?: UmbTiptapToolbarValue | null): UmbTiptapToolbarValue;
12
12
  filterExtensions(query: string): Array<UmbTiptapToolbarExtension>;
13
- getExtensionByAlias(alias: string): UmbTiptapToolbarExtension | undefined;
13
+ getExtensionByAlias(alias: string): UmbTiptapToolbarExtension;
14
14
  isExtensionEnabled(alias: string): boolean;
15
15
  isExtensionInUse(alias: string): boolean;
16
16
  isValidToolbarValue(value: unknown): value is UmbTiptapToolbarValue;
@@ -60,7 +60,7 @@ export class UmbTiptapToolbarConfigurationContext extends UmbContextBase {
60
60
  .filter((ext) => ext.alias?.toLowerCase().includes(query) || ext.label?.toLowerCase().includes(query));
61
61
  }
62
62
  getExtensionByAlias(alias) {
63
- return this.#lookup?.get(alias);
63
+ return this.#lookup?.get(alias) ?? { label: '', alias, icon: '', kind: 'unknown' };
64
64
  }
65
65
  isExtensionEnabled(alias) {
66
66
  return this.#extensionsEnabled.has(alias);
@@ -13,9 +13,9 @@ let UmbTiptapToolbarGroupConfigurationElement = class UmbTiptapToolbarGroupConfi
13
13
  constructor() {
14
14
  super(...arguments);
15
15
  this.#sorter = new UmbSorterController(this, {
16
- getUniqueOfElement: (element) => element.getAttribute('tiptap-toolbar-alias'),
17
- getUniqueOfModel: (modelEntry) => modelEntry.alias,
18
- itemSelector: 'uui-button',
16
+ getUniqueOfElement: (element) => element.dataset.mark,
17
+ getUniqueOfModel: (modelEntry) => `tiptap-toolbar-item:${modelEntry.alias}`,
18
+ itemSelector: '.draggable',
19
19
  identifier: 'umb-tiptap-toolbar-sorter',
20
20
  containerSelector: '.items',
21
21
  resolvePlacement: UmbSorterResolvePlacementAsGrid,
@@ -57,7 +57,7 @@ let UmbTiptapToolbarGroupConfigurationElement = class UmbTiptapToolbarGroupConfi
57
57
  `;
58
58
  }
59
59
  #renderItem(item, index = 0) {
60
- const label = this.localize.string(item.label);
60
+ const label = this.localize.string(item.label) || item.alias;
61
61
  const forbidden = !this.#context?.isExtensionEnabled(item.alias);
62
62
  switch (item.kind) {
63
63
  case 'styleMenu':
@@ -65,13 +65,11 @@ let UmbTiptapToolbarGroupConfigurationElement = class UmbTiptapToolbarGroupConfi
65
65
  return html `
66
66
  <uui-button
67
67
  compact
68
- class=${forbidden ? 'forbidden' : ''}
68
+ class="draggable ${forbidden ? 'forbidden' : ''}"
69
69
  data-mark="tiptap-toolbar-item:${item.alias}"
70
70
  look=${forbidden ? 'placeholder' : 'outline'}
71
71
  label=${label}
72
72
  title=${label}
73
- ?disabled=${forbidden}
74
- tiptap-toolbar-alias=${item.alias}
75
73
  @click=${() => this.#onRequestRemove(item, index)}>
76
74
  <div class="inner">
77
75
  <span>${label}</span>
@@ -79,18 +77,28 @@ let UmbTiptapToolbarGroupConfigurationElement = class UmbTiptapToolbarGroupConfi
79
77
  <uui-symbol-expand slot="extra" open></uui-symbol-expand>
80
78
  </uui-button>
81
79
  `;
80
+ case 'unknown':
81
+ return html `
82
+ <uui-button
83
+ compact
84
+ data-mark="tiptap-toolbar-item:${item.alias}"
85
+ color="danger"
86
+ look="placeholder"
87
+ label="Missing extension"
88
+ title="Missing extension: ${item.alias}"
89
+ @click=${() => this.#onRequestRemove(item, index)}></uui-button>
90
+ `;
82
91
  case 'button':
92
+ case 'colorPickerButton':
83
93
  default:
84
94
  return html `
85
95
  <uui-button
86
96
  compact
87
- class=${forbidden ? 'forbidden' : ''}
97
+ class="draggable ${forbidden ? 'forbidden' : ''}"
88
98
  data-mark="tiptap-toolbar-item:${item.alias}"
89
99
  look=${forbidden ? 'placeholder' : 'outline'}
90
100
  label=${label}
91
101
  title=${label}
92
- ?disabled=${forbidden}
93
- tiptap-toolbar-alias=${item.alias}
94
102
  @click=${() => this.#onRequestRemove(item, index)}>
95
103
  <div class="inner">
96
104
  ${when(item.icon, () => html `<umb-icon .name=${item.icon}></umb-icon>`, () => html `<span>${label}</span>`)}
@@ -110,23 +118,18 @@ let UmbTiptapToolbarGroupConfigurationElement = class UmbTiptapToolbarGroupConfi
110
118
  uui-button {
111
119
  --uui-button-font-weight: normal;
112
120
 
113
- &[draggable='true'],
114
- &[draggable='true'] > .inner {
121
+ &.draggable,
122
+ &.draggable > .inner {
115
123
  cursor: move;
116
124
  }
117
125
 
118
- &[disabled],
119
- &[disabled] > .inner {
120
- cursor: not-allowed;
121
- }
122
-
123
126
  &.forbidden {
124
127
  --color: var(--uui-color-danger);
125
128
  --color-standalone: var(--uui-color-danger-standalone);
126
129
  --color-emphasis: var(--uui-color-danger-emphasis);
127
130
  --color-contrast: var(--uui-color-danger);
128
- --uui-button-contrast-disabled: var(--uui-color-danger);
129
- --uui-button-border-color-disabled: var(--uui-color-danger);
131
+ --uui-button-contrast: var(--uui-color-danger);
132
+ --uui-button-border-color: var(--uui-color-danger);
130
133
  }
131
134
 
132
135
  div {
@@ -2,16 +2,16 @@ export type UmbTiptapSortableViewModel<T> = {
2
2
  unique: string;
3
3
  data: T;
4
4
  };
5
- export type UmbTiptapStatusbarExtension = {
5
+ export type UmbTiptapExtensionBase = {
6
+ kind?: string;
6
7
  alias: string;
7
8
  label: string;
8
9
  icon: string;
9
10
  dependencies?: Array<string>;
10
11
  };
12
+ export type UmbTiptapStatusbarExtension = UmbTiptapExtensionBase;
11
13
  export type UmbTiptapStatusbarViewModel = UmbTiptapSortableViewModel<Array<string>>;
12
- export type UmbTiptapToolbarExtension = UmbTiptapStatusbarExtension & {
13
- kind?: string;
14
- };
14
+ export type UmbTiptapToolbarExtension = UmbTiptapExtensionBase;
15
15
  export type UmbTiptapToolbarRowViewModel = UmbTiptapSortableViewModel<Array<UmbTiptapToolbarGroupViewModel>>;
16
16
  export type UmbTiptapToolbarGroupViewModel = UmbTiptapSortableViewModel<Array<string>>;
17
17
  /** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
@@ -2,7 +2,7 @@ import { Marked } from '../../../external/marked/index.js';
2
2
  import { UmbContextBase } from '../../../libs/class-api/index.js';
3
3
  import { UmbContextToken } from '../../../libs/context-api/index.js';
4
4
  import type { UmbControllerHost } from '../../../libs/controller-api/index.js';
5
- export declare const UmbMarked: Marked;
5
+ export declare const UmbMarked: Marked<string, string>;
6
6
  export type UmbUfmFilterFunction = ((...args: Array<unknown>) => string | undefined | null) | undefined;
7
7
  export type UmbUfmFilterType = {
8
8
  alias: string;
@@ -27,6 +27,14 @@ export const manifests = [
27
27
  api: () => import('./strip-html.filter.js'),
28
28
  meta: { alias: 'strip-html' },
29
29
  },
30
+ // TODO: Remove in V18 - replaced by camelCase alias below for UFMJS compatibility
31
+ {
32
+ type: 'ufmFilter',
33
+ alias: 'Umb.Filter.StripHtmlCamelCase',
34
+ name: 'Strip HTML UFM Filter (camelCase)',
35
+ api: () => import('./strip-html.filter.js'),
36
+ meta: { alias: 'stripHtml' },
37
+ },
30
38
  {
31
39
  type: 'ufmFilter',
32
40
  alias: 'Umb.Filter.TitleCase',
@@ -34,6 +42,14 @@ export const manifests = [
34
42
  api: () => import('./title-case.filter.js'),
35
43
  meta: { alias: 'title-case' },
36
44
  },
45
+ // TODO: Remove in V18 - replaced by camelCase alias below for UFMJS compatibility
46
+ {
47
+ type: 'ufmFilter',
48
+ alias: 'Umb.Filter.TitleCaseCamelCase',
49
+ name: 'Title Case UFM Filter (camelCase)',
50
+ api: () => import('./title-case.filter.js'),
51
+ meta: { alias: 'titleCase' },
52
+ },
37
53
  {
38
54
  type: 'ufmFilter',
39
55
  alias: 'Umb.Filter.Truncate',
@@ -55,4 +71,12 @@ export const manifests = [
55
71
  api: () => import('./word-limit.filter.js'),
56
72
  meta: { alias: 'word-limit' },
57
73
  },
74
+ // TODO: Remove in V18 - replaced by camelCase alias below for UFMJS compatibility
75
+ {
76
+ type: 'ufmFilter',
77
+ alias: 'Umb.Filter.WordLimitCamelCase',
78
+ name: 'Word Limit UFM Filter (camelCase)',
79
+ api: () => import('./word-limit.filter.js'),
80
+ meta: { alias: 'wordLimit' },
81
+ },
58
82
  ];
@@ -5,3 +5,4 @@ declare class UmbUfmStripHtmlFilterApi extends UmbUfmFilterBase {
5
5
  } | undefined | null): string;
6
6
  }
7
7
  export { UmbUfmStripHtmlFilterApi as api };
8
+ export { UmbUfmStripHtmlFilterApi };
@@ -10,3 +10,4 @@ class UmbUfmStripHtmlFilterApi extends UmbUfmFilterBase {
10
10
  }
11
11
  }
12
12
  export { UmbUfmStripHtmlFilterApi as api };
13
+ export { UmbUfmStripHtmlFilterApi };
@@ -3,3 +3,4 @@ declare class UmbUfmTruncateFilterApi extends UmbUfmFilterBase {
3
3
  filter(str: string, length: number, tail?: string): string;
4
4
  }
5
5
  export { UmbUfmTruncateFilterApi as api };
6
+ export { UmbUfmTruncateFilterApi };
@@ -1,8 +1,14 @@
1
1
  import { UmbUfmFilterBase } from './base.filter.js';
2
2
  class UmbUfmTruncateFilterApi extends UmbUfmFilterBase {
3
3
  filter(str, length, tail) {
4
- if (typeof str !== 'string' || !str.length)
4
+ if (typeof str !== 'string')
5
5
  return str;
6
+ // Remove leading/trailing whitespace before calculating length
7
+ str = str.trim();
8
+ // Only add ellipsis if the string was actually truncated
9
+ if (!str.length || str.length <= length) {
10
+ return str;
11
+ }
6
12
  if (tail === 'false')
7
13
  tail = '';
8
14
  if (tail === 'true')
@@ -12,3 +18,4 @@ class UmbUfmTruncateFilterApi extends UmbUfmFilterBase {
12
18
  }
13
19
  }
14
20
  export { UmbUfmTruncateFilterApi as api };
21
+ export { UmbUfmTruncateFilterApi };
@@ -74,8 +74,7 @@ let UmbUmbracoNewsDashboardElement = class UmbUmbracoNewsDashboardElement extend
74
74
  #info-links {
75
75
  display: grid;
76
76
  grid-template-columns: repeat(auto-fill, minmax(20%, 1fr));
77
- grid-gap: var(--uui-size-space-4);
78
- max-width: 1000px;
77
+ grid-gap: var(--uui-size-space-5);
79
78
  }
80
79
 
81
80
  .info-link {
@@ -0,0 +1 @@
1
+ export * from './fallback-permission-condition/constants.js';
@@ -0,0 +1 @@
1
+ export * from './fallback-permission-condition/constants.js';
@@ -0,0 +1 @@
1
+ export declare const UMB_FALLBACK_USER_PERMISSION_CONDITION_ALIAS = "Umb.Condition.UserPermission.Fallback";
@@ -0,0 +1 @@
1
+ export const UMB_FALLBACK_USER_PERMISSION_CONDITION_ALIAS = 'Umb.Condition.UserPermission.Fallback';
@@ -0,0 +1,9 @@
1
+ import type { UmbFallbackUserPermissionConditionConfig } from './types.js';
2
+ import type { UmbConditionControllerArguments, UmbExtensionCondition } from '../../../../libs/extension-api/index.js';
3
+ import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
4
+ import { UmbConditionBase } from '../../../core/extension-registry/index.js';
5
+ export declare class UmbFallbackUserPermissionCondition extends UmbConditionBase<UmbFallbackUserPermissionConditionConfig> implements UmbExtensionCondition {
6
+ #private;
7
+ constructor(host: UmbControllerHost, args: UmbConditionControllerArguments<UmbFallbackUserPermissionConditionConfig>);
8
+ }
9
+ export { UmbFallbackUserPermissionCondition as api };
@@ -0,0 +1,34 @@
1
+ import { UMB_CURRENT_USER_CONTEXT } from '../../current-user/index.js';
2
+ import { UmbConditionBase } from '../../../core/extension-registry/index.js';
3
+ export class UmbFallbackUserPermissionCondition extends UmbConditionBase {
4
+ constructor(host, args) {
5
+ super(host, args);
6
+ this.consumeContext(UMB_CURRENT_USER_CONTEXT, (context) => {
7
+ this.observe(context?.currentUser, (currentUser) => {
8
+ const fallbackPermissions = currentUser?.fallbackPermissions || [];
9
+ this.#check(fallbackPermissions);
10
+ }, 'umbUserFallbackPermissionConditionObserver');
11
+ });
12
+ }
13
+ #check(verbs) {
14
+ /* we default to true se we don't require both allOf and oneOf to be defined
15
+ but they can be combined for more complex scenarios */
16
+ let allOfPermitted = true;
17
+ let oneOfPermitted = true;
18
+ // check if all of the verbs are present
19
+ if (this.config.allOf?.length) {
20
+ allOfPermitted = this.config.allOf.every((verb) => verbs.includes(verb));
21
+ }
22
+ // check if at least one of the verbs is present
23
+ if (this.config.oneOf?.length) {
24
+ oneOfPermitted = this.config.oneOf.some((verb) => verbs.includes(verb));
25
+ }
26
+ // if neither allOf or oneOf is defined we default to false
27
+ if (!allOfPermitted && !oneOfPermitted) {
28
+ allOfPermitted = false;
29
+ oneOfPermitted = false;
30
+ }
31
+ this.permitted = allOfPermitted && oneOfPermitted;
32
+ }
33
+ }
34
+ export { UmbFallbackUserPermissionCondition as api };
@@ -0,0 +1 @@
1
+ export declare const manifests: Array<UmbExtensionManifest>;
@@ -0,0 +1,9 @@
1
+ import { UMB_FALLBACK_USER_PERMISSION_CONDITION_ALIAS } from './constants.js';
2
+ export const manifests = [
3
+ {
4
+ type: 'condition',
5
+ name: 'User Fallback Permission Condition',
6
+ alias: UMB_FALLBACK_USER_PERMISSION_CONDITION_ALIAS,
7
+ api: () => import('./fallback-user-permission.condition.js'),
8
+ },
9
+ ];
@@ -0,0 +1,20 @@
1
+ import type { UmbConditionConfigBase } from '../../../../libs/extension-api/index.js';
2
+ export type UmbFallbackUserPermissionConditionConfig = UmbConditionConfigBase<'Umb.Condition.UserPermission.Fallback'> & {
3
+ /**
4
+ * The user must have all of the permissions in this array for the condition to be met.
5
+ * @example
6
+ * ["Umb.PermissionOne", "Umb.PermissionTwo"]
7
+ */
8
+ allOf?: Array<string>;
9
+ /**
10
+ * The user must have at least one of the permissions in this array for the condition to be met.
11
+ * @example
12
+ * ["Umb.PermissionOne", "Umb.PermissionTwo"]
13
+ */
14
+ oneOf?: Array<string>;
15
+ };
16
+ declare global {
17
+ interface UmbExtensionConditionConfigMap {
18
+ UmbFallbackUserPermissionConditionConfig: UmbFallbackUserPermissionConditionConfig;
19
+ }
20
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './components/index.js';
2
+ export * from './constants.js';
2
3
  export * from './modals/index.js';
3
4
  export type * from './types.js';
@@ -1,2 +1,3 @@
1
1
  export * from './components/index.js';
2
+ export * from './constants.js';
2
3
  export * from './modals/index.js';
@@ -1,2 +1,3 @@
1
1
  import { manifests as userPermissionModalManifests } from './modals/manifests.js';
2
- export const manifests = [...userPermissionModalManifests];
2
+ import { manifests as fallbackConditionPermission } from './fallback-permission-condition/manifests.js';
3
+ export const manifests = [...userPermissionModalManifests, ...fallbackConditionPermission];