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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/dist-cms/apps/app/app.element.js +0 -3
  2. package/dist-cms/assets/lang/da-dk.js +3 -0
  3. package/dist-cms/assets/lang/da-dk.ts +3 -0
  4. package/dist-cms/assets/lang/en-us.js +21 -18
  5. package/dist-cms/assets/lang/en-us.ts +21 -18
  6. package/dist-cms/custom-elements.json +288 -19
  7. package/dist-cms/external/tinymce/index.js +36 -36
  8. package/dist-cms/mocks/browser-handlers.js +1 -1
  9. package/dist-cms/mocks/data/entity.data.d.ts +1 -1
  10. package/dist-cms/mocks/data/entity.data.js +1 -9
  11. package/dist-cms/mocks/data/media.data.d.ts +2 -1
  12. package/dist-cms/mocks/data/media.data.js +11 -0
  13. package/dist-cms/mocks/data/user-group.data.d.ts +17 -0
  14. package/dist-cms/mocks/data/user-group.data.js +61 -0
  15. package/dist-cms/mocks/data/user.data.d.ts +15 -0
  16. package/dist-cms/mocks/data/{users.data.js → user.data.js} +27 -41
  17. package/dist-cms/mocks/handlers/dictionary.handlers.js +2 -2
  18. package/dist-cms/mocks/handlers/media.handlers.js +8 -0
  19. package/dist-cms/mocks/handlers/partial-views.handlers.js +3 -3
  20. package/dist-cms/mocks/handlers/user-group/collection.handlers.d.ts +1 -0
  21. package/dist-cms/mocks/handlers/user-group/collection.handlers.js +10 -0
  22. package/dist-cms/mocks/handlers/user-group/detail.handlers.d.ts +1 -0
  23. package/dist-cms/mocks/handlers/user-group/detail.handlers.js +37 -0
  24. package/dist-cms/mocks/handlers/user-group/index.js +4 -0
  25. package/dist-cms/mocks/handlers/user-group/item.handlers.d.ts +1 -0
  26. package/dist-cms/mocks/handlers/user-group/item.handlers.js +13 -0
  27. package/dist-cms/mocks/handlers/user-group/slug.d.ts +1 -0
  28. package/dist-cms/mocks/handlers/user-group/slug.js +1 -0
  29. package/dist-cms/mocks/handlers/user.handlers.js +15 -1
  30. package/dist-cms/packages/core/components/input-list-base/input-list-base.js +1 -1
  31. package/dist-cms/packages/core/components/input-section/input-section.element.d.ts +2 -2
  32. package/dist-cms/packages/core/components/input-section/input-section.element.js +5 -5
  33. package/dist-cms/packages/core/extension-registry/conditions/types.d.ts +3 -2
  34. package/dist-cms/packages/core/extension-registry/models/index.d.ts +5 -1
  35. package/dist-cms/packages/core/extension-registry/models/index.js +2 -0
  36. package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.d.ts +8 -0
  37. package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.js +1 -0
  38. package/dist-cms/packages/core/extension-registry/models/user-permission.model.d.ts +11 -0
  39. package/dist-cms/packages/core/extension-registry/models/user-permission.model.js +1 -0
  40. package/dist-cms/packages/core/localization/index.d.ts +3 -0
  41. package/dist-cms/packages/core/localization/index.js +3 -0
  42. package/dist-cms/packages/core/localization/localize-date.element.d.ts +28 -0
  43. package/dist-cms/packages/core/localization/localize-date.element.js +42 -0
  44. package/dist-cms/packages/core/localization/localize-number.element.d.ts +28 -0
  45. package/dist-cms/packages/core/localization/localize-number.element.js +42 -0
  46. package/dist-cms/packages/core/localization/localize-relative-time.element.d.ts +34 -0
  47. package/dist-cms/packages/core/localization/localize-relative-time.element.js +54 -0
  48. package/dist-cms/packages/core/localization/localize.element.js +1 -1
  49. package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.d.ts +19 -0
  50. package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.js +97 -0
  51. package/dist-cms/packages/core/modal/common/manifests.js +6 -0
  52. package/dist-cms/packages/core/modal/common/tree-picker/tree-picker-modal.element.js +5 -3
  53. package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.d.ts +7 -0
  54. package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.js +4 -0
  55. package/dist-cms/packages/core/modal/token/index.d.ts +1 -0
  56. package/dist-cms/packages/core/modal/token/index.js +1 -0
  57. package/dist-cms/packages/core/picker-input/picker-input.context.js +1 -3
  58. package/dist-cms/packages/core/tree/tree.context.js +3 -2
  59. package/dist-cms/packages/documents/documents/components/index.d.ts +1 -0
  60. package/dist-cms/packages/documents/documents/components/index.js +1 -0
  61. package/dist-cms/packages/documents/documents/components/input-document/input-document.context.d.ts +6 -0
  62. package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +7 -0
  63. package/dist-cms/packages/documents/documents/components/input-document/input-document.element.d.ts +7 -12
  64. package/dist-cms/packages/documents/documents/components/input-document/input-document.element.js +51 -64
  65. package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.d.ts +23 -0
  66. package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.js +102 -0
  67. package/dist-cms/packages/documents/documents/entity-actions/create/manifests.js +9 -0
  68. package/dist-cms/packages/documents/documents/entity-actions/manifests.js +1 -1
  69. package/dist-cms/packages/documents/documents/entity-actions/permissions.action.d.ts +2 -1
  70. package/dist-cms/packages/documents/documents/entity-actions/permissions.action.js +22 -2
  71. package/dist-cms/packages/documents/documents/index.d.ts +2 -0
  72. package/dist-cms/packages/documents/documents/index.js +2 -0
  73. package/dist-cms/packages/documents/documents/manifests.d.ts +4 -0
  74. package/dist-cms/packages/documents/documents/manifests.js +2 -0
  75. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.d.ts +4 -0
  76. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.js +6 -0
  77. package/dist-cms/packages/documents/documents/recycle-bin/manifests.d.ts +4 -0
  78. package/dist-cms/packages/documents/documents/repository/document.repository.js +4 -4
  79. package/dist-cms/packages/documents/documents/repository/manifests.d.ts +3 -2
  80. package/dist-cms/packages/documents/documents/repository/manifests.js +9 -1
  81. package/dist-cms/packages/documents/documents/user-permissions/index.d.ts +1 -0
  82. package/dist-cms/packages/documents/documents/user-permissions/index.js +1 -0
  83. package/dist-cms/packages/documents/documents/user-permissions/manifests.d.ts +19 -0
  84. package/dist-cms/packages/documents/documents/user-permissions/manifests.js +196 -0
  85. package/dist-cms/packages/documents/documents/workspace/views/info/document-info-workspace-view.element.js +29 -28
  86. package/dist-cms/packages/documents/manifests.d.ts +4 -0
  87. package/dist-cms/packages/log-viewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.js +1 -1
  88. package/dist-cms/packages/media/manifests.d.ts +2 -1
  89. package/dist-cms/packages/media/manifests.js +1 -0
  90. package/dist-cms/packages/media/media/components/index.d.ts +1 -0
  91. package/dist-cms/packages/media/media/components/index.js +1 -0
  92. package/dist-cms/packages/media/media/components/input-media/input-media.context.d.ts +6 -0
  93. package/dist-cms/packages/media/media/components/input-media/input-media.context.js +7 -0
  94. package/dist-cms/packages/media/media/components/input-media/input-media.element.d.ts +7 -15
  95. package/dist-cms/packages/media/media/components/input-media/input-media.element.js +50 -72
  96. package/dist-cms/packages/media/media/index.d.ts +2 -0
  97. package/dist-cms/packages/media/media/index.js +1 -1
  98. package/dist-cms/packages/media/media/manifests.d.ts +1 -1
  99. package/dist-cms/packages/media/media/manifests.js +2 -0
  100. package/dist-cms/packages/media/media/repository/manifests.d.ts +3 -2
  101. package/dist-cms/packages/media/media/repository/manifests.js +9 -1
  102. package/dist-cms/packages/media/media/repository/media-item.store.d.ts +20 -0
  103. package/dist-cms/packages/media/media/repository/media-item.store.js +23 -0
  104. package/dist-cms/packages/media/media/repository/media.repository.d.ts +6 -0
  105. package/dist-cms/packages/media/media/repository/media.repository.js +22 -0
  106. package/dist-cms/packages/media/media/repository/sources/media-item.server.data.d.ts +24 -0
  107. package/dist-cms/packages/media/media/repository/sources/media-item.server.data.js +31 -0
  108. package/dist-cms/packages/media/media/user-permissions/index.d.ts +1 -0
  109. package/dist-cms/packages/media/media/user-permissions/index.js +1 -0
  110. package/dist-cms/packages/media/media/user-permissions/manifests.d.ts +4 -0
  111. package/dist-cms/packages/media/media/user-permissions/manifests.js +27 -0
  112. package/dist-cms/packages/users/current-user/conditions/index.d.ts +1 -0
  113. package/dist-cms/packages/users/current-user/conditions/index.js +1 -0
  114. package/dist-cms/packages/users/current-user/conditions/user-permission.condition.d.ts +18 -0
  115. package/dist-cms/packages/users/current-user/conditions/user-permission.condition.js +23 -0
  116. package/dist-cms/packages/users/current-user/index.d.ts +1 -0
  117. package/dist-cms/packages/users/current-user/index.js +1 -0
  118. package/dist-cms/packages/users/current-user/manifests.js +7 -1
  119. package/dist-cms/packages/users/current-user/modals/current-user/current-user-modal.element.js +7 -7
  120. package/dist-cms/packages/users/index.d.ts +4 -2
  121. package/dist-cms/packages/users/index.js +4 -2
  122. package/dist-cms/packages/users/manifests.d.ts +2 -0
  123. package/dist-cms/packages/users/manifests.js +3 -0
  124. package/dist-cms/packages/users/user-groups/collection/user-group-collection-header.element.js +2 -2
  125. package/dist-cms/packages/users/user-groups/collection/user-group-collection-view.element.js +6 -6
  126. package/dist-cms/packages/users/user-groups/components/index.d.ts +1 -0
  127. package/dist-cms/packages/users/user-groups/components/index.js +1 -0
  128. package/dist-cms/packages/users/user-groups/entity-actions/manifests.d.ts +2 -0
  129. package/dist-cms/packages/users/user-groups/entity-actions/manifests.js +19 -0
  130. package/dist-cms/packages/users/user-groups/index.d.ts +2 -0
  131. package/dist-cms/packages/users/user-groups/index.js +2 -0
  132. package/dist-cms/packages/users/user-groups/manifests.d.ts +1 -1
  133. package/dist-cms/packages/users/user-groups/manifests.js +2 -0
  134. package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.d.ts +16 -0
  135. package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.js +69 -0
  136. package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.d.ts +14 -0
  137. package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.js +31 -0
  138. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.d.ts +2 -0
  139. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.js +57 -56
  140. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.d.ts +12 -0
  141. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.js +20 -0
  142. package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.element.js +1 -1
  143. package/dist-cms/packages/users/users/collection/user-collection-header.element.js +18 -11
  144. package/dist-cms/packages/users/users/collection/views/grid/user-collection-grid-view.element.js +6 -6
  145. package/dist-cms/packages/users/users/collection/views/table/column-layouts/status/user-table-status-column-layout.element.js +3 -3
  146. package/dist-cms/packages/users/users/components/index.d.ts +3 -0
  147. package/dist-cms/packages/users/users/components/index.js +3 -0
  148. package/dist-cms/packages/users/users/components/user-input/user-input.element.js +2 -2
  149. package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.d.ts +15 -0
  150. package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.js +66 -0
  151. package/dist-cms/packages/users/users/index.d.ts +2 -0
  152. package/dist-cms/packages/users/users/index.js +2 -0
  153. package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.d.ts +3 -1
  154. package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.js +20 -25
  155. package/dist-cms/packages/users/users/repository/index.d.ts +1 -0
  156. package/dist-cms/packages/users/users/repository/index.js +1 -0
  157. package/dist-cms/packages/users/users/repository/user.repository.js +1 -1
  158. package/dist-cms/packages/users/users/workspace/user-workspace-editor.element.js +73 -56
  159. package/dist-cms/packages/users/utils.d.ts +5 -2
  160. package/dist-cms/packages/users/utils.js +14 -14
  161. package/dist-cms/shared/auth/auth-flow.d.ts +0 -4
  162. package/dist-cms/shared/auth/auth-flow.js +6 -25
  163. package/dist-cms/shared/repository/repository-items.manager.js +5 -0
  164. package/dist-cms/shared/umb-events/index.d.ts +1 -0
  165. package/dist-cms/shared/umb-events/index.js +1 -0
  166. package/dist-cms/shared/umb-events/selected.event.d.ts +3 -0
  167. package/dist-cms/shared/umb-events/selected.event.js +6 -0
  168. package/dist-cms/tinymce/CHANGELOG.md +48 -0
  169. package/dist-cms/tinymce/composer.json +1 -1
  170. package/dist-cms/tinymce/models/dom/model.js +1 -1
  171. package/dist-cms/tinymce/models/dom/model.min.js +1 -1
  172. package/dist-cms/tinymce/package.json +1 -1
  173. package/dist-cms/tinymce/plugins/accordion/plugin.js +1 -1
  174. package/dist-cms/tinymce/plugins/accordion/plugin.min.js +1 -1
  175. package/dist-cms/tinymce/plugins/advlist/plugin.js +1 -1
  176. package/dist-cms/tinymce/plugins/advlist/plugin.min.js +1 -1
  177. package/dist-cms/tinymce/plugins/anchor/plugin.js +1 -1
  178. package/dist-cms/tinymce/plugins/anchor/plugin.min.js +1 -1
  179. package/dist-cms/tinymce/plugins/autolink/plugin.js +1 -1
  180. package/dist-cms/tinymce/plugins/autolink/plugin.min.js +1 -1
  181. package/dist-cms/tinymce/plugins/autoresize/plugin.js +1 -1
  182. package/dist-cms/tinymce/plugins/autoresize/plugin.min.js +1 -1
  183. package/dist-cms/tinymce/plugins/autosave/plugin.js +1 -1
  184. package/dist-cms/tinymce/plugins/autosave/plugin.min.js +1 -1
  185. package/dist-cms/tinymce/plugins/charmap/plugin.js +1 -1
  186. package/dist-cms/tinymce/plugins/charmap/plugin.min.js +1 -1
  187. package/dist-cms/tinymce/plugins/code/plugin.js +1 -1
  188. package/dist-cms/tinymce/plugins/code/plugin.min.js +1 -1
  189. package/dist-cms/tinymce/plugins/codesample/plugin.js +1 -1
  190. package/dist-cms/tinymce/plugins/codesample/plugin.min.js +1 -1
  191. package/dist-cms/tinymce/plugins/directionality/plugin.js +1 -1
  192. package/dist-cms/tinymce/plugins/directionality/plugin.min.js +1 -1
  193. package/dist-cms/tinymce/plugins/emoticons/plugin.js +1 -1
  194. package/dist-cms/tinymce/plugins/emoticons/plugin.min.js +1 -1
  195. package/dist-cms/tinymce/plugins/fullscreen/plugin.js +1 -1
  196. package/dist-cms/tinymce/plugins/fullscreen/plugin.min.js +1 -1
  197. package/dist-cms/tinymce/plugins/help/plugin.js +5 -5
  198. package/dist-cms/tinymce/plugins/help/plugin.min.js +2 -2
  199. package/dist-cms/tinymce/plugins/image/plugin.js +1 -1
  200. package/dist-cms/tinymce/plugins/image/plugin.min.js +1 -1
  201. package/dist-cms/tinymce/plugins/importcss/plugin.js +1 -1
  202. package/dist-cms/tinymce/plugins/importcss/plugin.min.js +1 -1
  203. package/dist-cms/tinymce/plugins/insertdatetime/plugin.js +1 -1
  204. package/dist-cms/tinymce/plugins/insertdatetime/plugin.min.js +1 -1
  205. package/dist-cms/tinymce/plugins/link/plugin.js +1 -1
  206. package/dist-cms/tinymce/plugins/link/plugin.min.js +1 -1
  207. package/dist-cms/tinymce/plugins/lists/plugin.js +63 -8
  208. package/dist-cms/tinymce/plugins/lists/plugin.min.js +2 -2
  209. package/dist-cms/tinymce/plugins/media/plugin.js +3 -23
  210. package/dist-cms/tinymce/plugins/media/plugin.min.js +2 -2
  211. package/dist-cms/tinymce/plugins/nonbreaking/plugin.js +1 -1
  212. package/dist-cms/tinymce/plugins/nonbreaking/plugin.min.js +1 -1
  213. package/dist-cms/tinymce/plugins/pagebreak/plugin.js +1 -1
  214. package/dist-cms/tinymce/plugins/pagebreak/plugin.min.js +1 -1
  215. package/dist-cms/tinymce/plugins/preview/plugin.js +1 -1
  216. package/dist-cms/tinymce/plugins/preview/plugin.min.js +1 -1
  217. package/dist-cms/tinymce/plugins/quickbars/plugin.js +13 -4
  218. package/dist-cms/tinymce/plugins/quickbars/plugin.min.js +2 -2
  219. package/dist-cms/tinymce/plugins/save/plugin.js +1 -1
  220. package/dist-cms/tinymce/plugins/save/plugin.min.js +1 -1
  221. package/dist-cms/tinymce/plugins/searchreplace/plugin.js +1 -1
  222. package/dist-cms/tinymce/plugins/searchreplace/plugin.min.js +1 -1
  223. package/dist-cms/tinymce/plugins/table/plugin.js +2 -2
  224. package/dist-cms/tinymce/plugins/table/plugin.min.js +2 -2
  225. package/dist-cms/tinymce/plugins/template/plugin.js +1 -1
  226. package/dist-cms/tinymce/plugins/template/plugin.min.js +1 -1
  227. package/dist-cms/tinymce/plugins/visualblocks/plugin.js +1 -1
  228. package/dist-cms/tinymce/plugins/visualblocks/plugin.min.js +1 -1
  229. package/dist-cms/tinymce/plugins/visualchars/plugin.js +1 -1
  230. package/dist-cms/tinymce/plugins/visualchars/plugin.min.js +1 -1
  231. package/dist-cms/tinymce/plugins/wordcount/plugin.js +1 -1
  232. package/dist-cms/tinymce/plugins/wordcount/plugin.min.js +1 -1
  233. package/dist-cms/tinymce/skins/ui/oxide/content.css +1 -1
  234. package/dist-cms/tinymce/skins/ui/oxide/content.inline.css +1 -1
  235. package/dist-cms/tinymce/skins/ui/oxide/content.inline.min.css +1 -1
  236. package/dist-cms/tinymce/skins/ui/oxide/content.min.css +1 -1
  237. package/dist-cms/tinymce/skins/ui/oxide/skin.css +51 -11
  238. package/dist-cms/tinymce/skins/ui/oxide/skin.min.css +1 -1
  239. package/dist-cms/tinymce/skins/ui/oxide-dark/content.css +1 -1
  240. package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.css +1 -1
  241. package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -1
  242. package/dist-cms/tinymce/skins/ui/oxide-dark/content.min.css +1 -1
  243. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.css +54 -14
  244. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
  245. package/dist-cms/tinymce/skins/ui/tinymce-5/content.css +1 -1
  246. package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.css +1 -1
  247. package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.min.css +1 -1
  248. package/dist-cms/tinymce/skins/ui/tinymce-5/content.min.css +1 -1
  249. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.css +51 -11
  250. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.min.css +1 -1
  251. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.css +1 -1
  252. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.css +1 -1
  253. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css +1 -1
  254. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.min.css +1 -1
  255. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.css +51 -11
  256. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  257. package/dist-cms/tinymce/themes/silver/theme.js +158 -55
  258. package/dist-cms/tinymce/themes/silver/theme.min.js +2 -2
  259. package/dist-cms/tinymce/tinymce.d.ts +4 -6
  260. package/dist-cms/tinymce/tinymce.js +911 -691
  261. package/dist-cms/tinymce/tinymce.min.js +2 -2
  262. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  263. package/dist-cms/umbraco-package-schema.json +154 -0
  264. package/dist-cms/vscode-html-custom-data.json +167 -18
  265. package/package.json +2 -2
  266. package/dist-cms/mocks/data/user-groups.data.d.ts +0 -9
  267. package/dist-cms/mocks/data/user-groups.data.js +0 -21
  268. package/dist-cms/mocks/data/users.data.d.ts +0 -16
  269. package/dist-cms/mocks/handlers/user-group.handlers.js +0 -17
  270. /package/dist-cms/mocks/handlers/{user-group.handlers.d.ts → user-group/index.d.ts} +0 -0
@@ -0,0 +1,28 @@
1
+ import { UmbLitElement } from '../../../shared/lit-element/index.js';
2
+ /**
3
+ * This element allows you to localize a number
4
+ * @element umb-localize-number
5
+ * @slot - The fallback value if the key is not found.
6
+ */
7
+ export declare class UmbLocalizeNumberElement extends UmbLitElement {
8
+ /**
9
+ * The number to localize.
10
+ * @attr
11
+ * @example number=1_000_000
12
+ */
13
+ number: number | string;
14
+ /**
15
+ * Formatting options
16
+ * @attr
17
+ * @example options={ style: 'currency', currency: 'EUR' }
18
+ */
19
+ options?: Intl.NumberFormatOptions;
20
+ protected get text(): string;
21
+ protected render(): import("lit-html").TemplateResult<1>;
22
+ static styles: import("@lit/reactive-element/css-tag").CSSResult[];
23
+ }
24
+ declare global {
25
+ interface HTMLElementTagNameMap {
26
+ 'umb-localize-number': UmbLocalizeNumberElement;
27
+ }
28
+ }
@@ -0,0 +1,42 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { css, customElement, html, property, state, unsafeHTML } from '../../../external/lit/index.js';
8
+ import { UmbLitElement } from '../../../shared/lit-element/index.js';
9
+ /**
10
+ * This element allows you to localize a number
11
+ * @element umb-localize-number
12
+ * @slot - The fallback value if the key is not found.
13
+ */
14
+ export let UmbLocalizeNumberElement = class UmbLocalizeNumberElement extends UmbLitElement {
15
+ get text() {
16
+ return this.localize.number(this.number, this.options);
17
+ }
18
+ render() {
19
+ return this.number
20
+ ? html `${unsafeHTML(this.text)}`
21
+ : html `<slot></slot>`;
22
+ }
23
+ static { this.styles = [
24
+ css `
25
+ :host {
26
+ display: contents;
27
+ }
28
+ `,
29
+ ]; }
30
+ };
31
+ __decorate([
32
+ property()
33
+ ], UmbLocalizeNumberElement.prototype, "number", void 0);
34
+ __decorate([
35
+ property()
36
+ ], UmbLocalizeNumberElement.prototype, "options", void 0);
37
+ __decorate([
38
+ state()
39
+ ], UmbLocalizeNumberElement.prototype, "text", null);
40
+ UmbLocalizeNumberElement = __decorate([
41
+ customElement('umb-localize-number')
42
+ ], UmbLocalizeNumberElement);
@@ -0,0 +1,34 @@
1
+ import { UmbLitElement } from '../../../shared/lit-element/index.js';
2
+ /**
3
+ * This element allows you to localize a relative time
4
+ * @element umb-localize-relative-time
5
+ * @slot - The fallback value if the key is not found.
6
+ */
7
+ export declare class UmbLocalizeRelativeTimeElement extends UmbLitElement {
8
+ /**
9
+ * The date to localize.
10
+ * @attr
11
+ * @example time=10
12
+ */
13
+ time: number;
14
+ /**
15
+ * Formatting options
16
+ * @attr
17
+ * @example options={ dateStyle: 'full', timeStyle: 'long', timeZone: 'Australia/Sydney' }
18
+ */
19
+ options?: Intl.RelativeTimeFormatOptions;
20
+ /**
21
+ * Unit
22
+ * @attr
23
+ * @example unit='seconds'
24
+ */
25
+ unit: Intl.RelativeTimeFormatUnit;
26
+ protected get text(): string;
27
+ protected render(): import("lit-html").TemplateResult<1>;
28
+ static styles: import("@lit/reactive-element/css-tag").CSSResult[];
29
+ }
30
+ declare global {
31
+ interface HTMLElementTagNameMap {
32
+ 'umb-localize-relative-time': UmbLocalizeRelativeTimeElement;
33
+ }
34
+ }
@@ -0,0 +1,54 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { css, customElement, html, property, state, unsafeHTML } from '../../../external/lit/index.js';
8
+ import { UmbLitElement } from '../../../shared/lit-element/index.js';
9
+ /**
10
+ * This element allows you to localize a relative time
11
+ * @element umb-localize-relative-time
12
+ * @slot - The fallback value if the key is not found.
13
+ */
14
+ export let UmbLocalizeRelativeTimeElement = class UmbLocalizeRelativeTimeElement extends UmbLitElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ /**
18
+ * Unit
19
+ * @attr
20
+ * @example unit='seconds'
21
+ */
22
+ this.unit = 'seconds';
23
+ }
24
+ get text() {
25
+ return this.localize.relativeTime(this.time, this.unit, this.options);
26
+ }
27
+ render() {
28
+ return this.time
29
+ ? html `${unsafeHTML(this.text)}`
30
+ : html `<slot></slot>`;
31
+ }
32
+ static { this.styles = [
33
+ css `
34
+ :host {
35
+ display: contents;
36
+ }
37
+ `,
38
+ ]; }
39
+ };
40
+ __decorate([
41
+ property()
42
+ ], UmbLocalizeRelativeTimeElement.prototype, "time", void 0);
43
+ __decorate([
44
+ property()
45
+ ], UmbLocalizeRelativeTimeElement.prototype, "options", void 0);
46
+ __decorate([
47
+ property()
48
+ ], UmbLocalizeRelativeTimeElement.prototype, "unit", void 0);
49
+ __decorate([
50
+ state()
51
+ ], UmbLocalizeRelativeTimeElement.prototype, "text", null);
52
+ UmbLocalizeRelativeTimeElement = __decorate([
53
+ customElement('umb-localize-relative-time')
54
+ ], UmbLocalizeRelativeTimeElement);
@@ -31,7 +31,7 @@ export let UmbLocalizeElement = class UmbLocalizeElement extends UmbLitElement {
31
31
  return localizedValue;
32
32
  }
33
33
  render() {
34
- return this.text
34
+ return this.text.trim()
35
35
  ? html `${unsafeHTML(this.text)}`
36
36
  : this.debug
37
37
  ? html `<span style="color:red">${this.key}</span>`
@@ -0,0 +1,19 @@
1
+ import { UmbEntityUserPermissionSettingsModalData, UmbEntityUserPermissionSettingsModalResult, UmbModalContext } from '../../index.js';
2
+ import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
3
+ export declare class UmbEntityUserPermissionSettingsModalElement extends UmbLitElement {
4
+ #private;
5
+ modalContext?: UmbModalContext<UmbEntityUserPermissionSettingsModalData, UmbEntityUserPermissionSettingsModalResult>;
6
+ data?: UmbEntityUserPermissionSettingsModalData;
7
+ private _userPermissionManifests;
8
+ private _handleConfirm;
9
+ private _handleCancel;
10
+ constructor();
11
+ render(): import("lit-html").TemplateResult<1>;
12
+ static styles: import("@lit/reactive-element/css-tag").CSSResult[];
13
+ }
14
+ export default UmbEntityUserPermissionSettingsModalElement;
15
+ declare global {
16
+ interface HTMLElementTagNameMap {
17
+ 'umb-entity-user-permission-modal': UmbEntityUserPermissionSettingsModalElement;
18
+ }
19
+ }
@@ -0,0 +1,97 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, customElement, property, state, css } from '../../../../../external/lit/index.js';
8
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
9
+ import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
10
+ import { umbExtensionsRegistry } from '../../../extension-registry/index.js';
11
+ export let UmbEntityUserPermissionSettingsModalElement = class UmbEntityUserPermissionSettingsModalElement extends UmbLitElement {
12
+ _handleConfirm() {
13
+ this.modalContext?.submit();
14
+ }
15
+ _handleCancel() {
16
+ this.modalContext?.reject();
17
+ }
18
+ constructor() {
19
+ super();
20
+ this._userPermissionManifests = [];
21
+ this.observe(umbExtensionsRegistry.extensionsOfType('userPermission'), (userPermissionManifests) => (this._userPermissionManifests = userPermissionManifests));
22
+ }
23
+ render() {
24
+ return html `
25
+ <umb-body-layout headline="Hello">
26
+ <uui-box>
27
+ Render user permissions for ${this.data?.entityType} ${this.data?.unique}
28
+ ${this._userPermissionManifests.map((permission) => this.#renderPermission(permission))}
29
+
30
+ <uui-button slot="actions" id="cancel" label="Cancel" @click="${this._handleCancel}">Cancel</uui-button>
31
+ <uui-button
32
+ slot="actions"
33
+ id="confirm"
34
+ color="positive"
35
+ look="primary"
36
+ label="Confirm"
37
+ @click=${this._handleConfirm}></uui-button>
38
+ </uui-box>
39
+ </umb-body-layout>
40
+ `;
41
+ }
42
+ #onChangeUserPermission(event, userPermissionManifest) {
43
+ console.log(userPermissionManifest);
44
+ console.log(event.target.checked);
45
+ }
46
+ #isAllowed(userPermissionManifest) {
47
+ return true;
48
+ //return this._userGroup?.permissions?.includes(userPermissionManifest.alias);
49
+ }
50
+ #renderPermission(userPermissionManifest) {
51
+ return html `<div
52
+ style="display: flex; align-items:center; border-bottom: 1px solid var(--uui-color-divider); padding: 9px 0 12px 0;">
53
+ <uui-toggle
54
+ label=${userPermissionManifest.meta.label}
55
+ ?checked=${this.#isAllowed(userPermissionManifest)}
56
+ @change=${(event) => this.#onChangeUserPermission(event, userPermissionManifest)}>
57
+ <div class="permission-meta">
58
+ <div class="permission-name">${userPermissionManifest.meta.label}</div>
59
+ <small>${userPermissionManifest.meta.description}</small>
60
+ </div>
61
+ </uui-toggle>
62
+ </div>`;
63
+ }
64
+ static { this.styles = [
65
+ UmbTextStyles,
66
+ css `
67
+ .permission-toggle {
68
+ display: flex;
69
+ align-items: center;
70
+ border-bottom: 1px solid var(--uui-color-divider);
71
+ padding: var(--uui-size-space-3) 0 var(--uui-size-space-4) 0;
72
+ }
73
+
74
+ .permission-meta {
75
+ margin-left: var(--uui-size-space-4);
76
+ line-height: 1.2em;
77
+ }
78
+
79
+ .permission-name {
80
+ font-weight: bold;
81
+ }
82
+ `,
83
+ ]; }
84
+ };
85
+ __decorate([
86
+ property({ attribute: false })
87
+ ], UmbEntityUserPermissionSettingsModalElement.prototype, "modalContext", void 0);
88
+ __decorate([
89
+ property({ type: Object })
90
+ ], UmbEntityUserPermissionSettingsModalElement.prototype, "data", void 0);
91
+ __decorate([
92
+ state()
93
+ ], UmbEntityUserPermissionSettingsModalElement.prototype, "_userPermissionManifests", void 0);
94
+ UmbEntityUserPermissionSettingsModalElement = __decorate([
95
+ customElement('umb-entity-user-permission-settings-modal')
96
+ ], UmbEntityUserPermissionSettingsModalElement);
97
+ export default UmbEntityUserPermissionSettingsModalElement;
@@ -59,5 +59,11 @@ const modals = [
59
59
  name: 'Tree Picker Modal',
60
60
  loader: () => import('./tree-picker/tree-picker-modal.element.js'),
61
61
  },
62
+ {
63
+ type: 'modal',
64
+ alias: 'Umb.Modal.EntityUserPermissionSettings',
65
+ name: 'Entity User Permission Settings Modal',
66
+ loader: () => import('./entity-user-permission-settings/entity-user-permission-settings-modal.element.js'),
67
+ },
62
68
  ];
63
69
  export const manifests = [...modals];
@@ -4,9 +4,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { css, html, customElement, state } from '../../../../../external/lit/index.js';
8
- import { UmbTextStyles } from "../../../../../shared/style/index.js";
7
+ import { html, customElement, state } from '../../../../../external/lit/index.js';
8
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
9
9
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
10
+ import { UmbSelectedEvent } from '../../../../../shared/umb-events/index.js';
10
11
  export let UmbTreePickerModalElement = class UmbTreePickerModalElement extends UmbModalBaseElement {
11
12
  constructor() {
12
13
  super(...arguments);
@@ -22,6 +23,7 @@ export let UmbTreePickerModalElement = class UmbTreePickerModalElement extends U
22
23
  e.stopPropagation();
23
24
  const element = e.target;
24
25
  this._selection = element.selection;
26
+ this.dispatchEvent(new UmbSelectedEvent());
25
27
  }
26
28
  #submit() {
27
29
  this.modalContext?.submit({ selection: this._selection });
@@ -48,7 +50,7 @@ export let UmbTreePickerModalElement = class UmbTreePickerModalElement extends U
48
50
  </umb-body-layout>
49
51
  `;
50
52
  }
51
- static { this.styles = [UmbTextStyles, css ``]; }
53
+ static { this.styles = [UmbTextStyles]; }
52
54
  };
53
55
  __decorate([
54
56
  state()
@@ -0,0 +1,7 @@
1
+ import { UmbModalToken } from '../index.js';
2
+ export interface UmbEntityUserPermissionSettingsModalData {
3
+ unique: string;
4
+ entityType: Array<string>;
5
+ }
6
+ export type UmbEntityUserPermissionSettingsModalResult = undefined;
7
+ export declare const UMB_ENTITY_USER_PERMISSION_MODAL: UmbModalToken<UmbEntityUserPermissionSettingsModalData, undefined>;
@@ -0,0 +1,4 @@
1
+ import { UmbModalToken } from '../index.js';
2
+ export const UMB_ENTITY_USER_PERMISSION_MODAL = new UmbModalToken('Umb.Modal.EntityUserPermissionSettings', {
3
+ type: 'sidebar',
4
+ });
@@ -33,3 +33,4 @@ export * from './data-type-picker-modal.token.js';
33
33
  export * from './workspace-modal.token.js';
34
34
  export * from './data-type-picker-flow-modal.token.js';
35
35
  export * from './data-type-picker-flow-data-type-picker-modal.token.js';
36
+ export * from './entity-user-permission-settings-modal.token.js';
@@ -33,3 +33,4 @@ export * from './data-type-picker-modal.token.js';
33
33
  export * from './workspace-modal.token.js';
34
34
  export * from './data-type-picker-flow-modal.token.js';
35
35
  export * from './data-type-picker-flow-data-type-picker-modal.token.js';
36
+ export * from './entity-user-permission-settings-modal.token.js';
@@ -48,9 +48,6 @@ export class UmbPickerInputContext {
48
48
  });
49
49
  }
50
50
  async requestRemoveItem(unique) {
51
- await this.#init;
52
- if (!this.repository)
53
- throw new Error('Repository is not initialized');
54
51
  // TODO: id won't always be available on the model, so we need to get the unique property from somewhere. Maybe the repository?
55
52
  const item = this.#itemManager.getItems().find((item) => this.#getUnique(item) === unique);
56
53
  if (!item)
@@ -67,5 +64,6 @@ export class UmbPickerInputContext {
67
64
  #removeItem(unique) {
68
65
  const newSelection = this.getSelection().filter((value) => value !== unique);
69
66
  this.setSelection(newSelection);
67
+ this.host.dispatchEvent(new UmbChangeEvent());
70
68
  }
71
69
  }
@@ -3,6 +3,7 @@ import { UmbBooleanState } from '../../../libs/observable-api/index.js';
3
3
  import { UmbBaseController } from '../../../libs/controller-api/index.js';
4
4
  import { createExtensionClass } from '../../../libs/extension-api/index.js';
5
5
  import { UmbSelectionManagerBase } from '../../../shared/utils/index.js';
6
+ import { UmbSelectedEvent } from '../../../shared/umb-events/index.js';
6
7
  export class UmbTreeContextBase extends UmbBaseController {
7
8
  #selectionManager;
8
9
  #selectable;
@@ -62,11 +63,11 @@ export class UmbTreeContextBase extends UmbBaseController {
62
63
  if (!this.getSelectable())
63
64
  return;
64
65
  this.#selectionManager.select(unique);
65
- this._host.getHostElement().dispatchEvent(new CustomEvent('selected'));
66
+ this._host.getHostElement().dispatchEvent(new UmbSelectedEvent());
66
67
  }
67
68
  deselect(unique) {
68
69
  this.#selectionManager.deselect(unique);
69
- this._host.getHostElement().dispatchEvent(new CustomEvent('selected'));
70
+ this._host.getHostElement().dispatchEvent(new UmbSelectedEvent());
70
71
  }
71
72
  async requestTreeRoot() {
72
73
  await this.#init;
@@ -1 +1,2 @@
1
1
  export * from './input-document/input-document.element.js';
2
+ export * from './input-document-granular-permission/input-document-granular-permission.element.js';
@@ -1 +1,2 @@
1
1
  export * from './input-document/input-document.element.js';
2
+ export * from './input-document-granular-permission/input-document-granular-permission.element.js';
@@ -0,0 +1,6 @@
1
+ import { UmbPickerInputContext } from '../../../../core/picker-input/index.js';
2
+ import { UmbControllerHostElement } from '../../../../../libs/controller-api/index.js';
3
+ import { DocumentItemResponseModel } from '../../../../../external/backend-api/index.js';
4
+ export declare class UmbDocumentPickerContext extends UmbPickerInputContext<DocumentItemResponseModel> {
5
+ constructor(host: UmbControllerHostElement);
6
+ }
@@ -0,0 +1,7 @@
1
+ import { UmbPickerInputContext } from '../../../../core/picker-input/index.js';
2
+ import { UMB_DOCUMENT_PICKER_MODAL } from '../../../../core/modal/index.js';
3
+ export class UmbDocumentPickerContext extends UmbPickerInputContext {
4
+ constructor(host) {
5
+ super(host, 'Umb.Repository.Document', UMB_DOCUMENT_PICKER_MODAL);
6
+ }
7
+ }
@@ -1,13 +1,15 @@
1
1
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
2
2
  declare const UmbInputDocumentElement_base: (new (...args: any[]) => import("../../../../../external/uui/index.js").FormControlMixinInterface) & typeof UmbLitElement;
3
3
  export declare class UmbInputDocumentElement extends UmbInputDocumentElement_base {
4
+ #private;
4
5
  /**
5
6
  * This is a minimum amount of selected items in this input.
6
7
  * @type {number}
7
8
  * @attr
8
- * @default undefined
9
+ * @default 0
9
10
  */
10
- min?: number;
11
+ get min(): number;
12
+ set min(value: number);
11
13
  /**
12
14
  * Min validation message.
13
15
  * @type {boolean}
@@ -19,9 +21,10 @@ export declare class UmbInputDocumentElement extends UmbInputDocumentElement_bas
19
21
  * This is a maximum amount of selected items in this input.
20
22
  * @type {number}
21
23
  * @attr
22
- * @default undefined
24
+ * @default Infinity
23
25
  */
24
- max?: number;
26
+ get max(): number;
27
+ set max(value: number);
25
28
  /**
26
29
  * Max validation message.
27
30
  * @type {boolean}
@@ -29,20 +32,12 @@ export declare class UmbInputDocumentElement extends UmbInputDocumentElement_bas
29
32
  * @default
30
33
  */
31
34
  maxMessage: string;
32
- private _selectedIds;
33
35
  get selectedIds(): Array<string>;
34
36
  set selectedIds(ids: Array<string>);
35
37
  set value(idsString: string);
36
38
  private _items?;
37
- private _modalContext?;
38
- private _documentStore?;
39
- private _pickedItemsObserver?;
40
39
  constructor();
41
40
  protected getFormElement(): undefined;
42
- private _observePickedDocuments;
43
- private _openPicker;
44
- private _removeItem;
45
- private _setSelection;
46
41
  render(): import("lit-html").TemplateResult<1>;
47
42
  private _renderItem;
48
43
  static styles: import("@lit/reactive-element/css-tag.js").CSSResult[];
@@ -4,25 +4,46 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from '../../repository/document.tree.store.js';
8
- import { css, html, nothing, customElement, property, state, ifDefined } from '../../../../../external/lit/index.js';
7
+ import { UmbDocumentPickerContext } from './input-document.context.js';
8
+ import { css, html, customElement, property, state, ifDefined } from '../../../../../external/lit/index.js';
9
9
  import { FormControlMixin } from '../../../../../external/uui/index.js';
10
- import { UMB_MODAL_MANAGER_CONTEXT_TOKEN, UMB_CONFIRM_MODAL, UMB_DOCUMENT_PICKER_MODAL, } from '../../../../core/modal/index.js';
11
10
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
12
11
  export let UmbInputDocumentElement = class UmbInputDocumentElement extends FormControlMixin(UmbLitElement) {
12
+ /**
13
+ * This is a minimum amount of selected items in this input.
14
+ * @type {number}
15
+ * @attr
16
+ * @default 0
17
+ */
18
+ get min() {
19
+ return this.#pickerContext.min;
20
+ }
21
+ set min(value) {
22
+ this.#pickerContext.min = value;
23
+ }
24
+ /**
25
+ * This is a maximum amount of selected items in this input.
26
+ * @type {number}
27
+ * @attr
28
+ * @default Infinity
29
+ */
30
+ get max() {
31
+ return this.#pickerContext.max;
32
+ }
33
+ set max(value) {
34
+ this.#pickerContext.max = value;
35
+ }
13
36
  get selectedIds() {
14
- return this._selectedIds;
37
+ return this.#pickerContext.getSelection();
15
38
  }
16
39
  set selectedIds(ids) {
17
- this._selectedIds = ids;
18
- super.value = ids.join(',');
19
- this._observePickedDocuments();
40
+ this.#pickerContext.setSelection(ids);
20
41
  }
21
42
  set value(idsString) {
22
- if (idsString !== this._value) {
23
- this.selectedIds = idsString.split(/[ ,]+/);
24
- }
43
+ // Its with full purpose we don't call super.value, as thats being handled by the observation of the context selection.
44
+ this.selectedIds = idsString.split(/[ ,]+/);
25
45
  }
46
+ #pickerContext;
26
47
  constructor() {
27
48
  super();
28
49
  /**
@@ -39,69 +60,35 @@ export let UmbInputDocumentElement = class UmbInputDocumentElement extends FormC
39
60
  * @default
40
61
  */
41
62
  this.maxMessage = 'This field exceeds the allowed amount of items';
42
- // TODO: do we need both selectedIds and value? If we just use value we follow the same pattern as native form controls.
43
- this._selectedIds = [];
44
- this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && this._selectedIds.length < this.min);
45
- this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && this._selectedIds.length > this.max);
46
- this.consumeContext(UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN, (instance) => {
47
- this._documentStore = instance;
48
- this._observePickedDocuments();
49
- });
50
- this.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
51
- this._modalContext = instance;
52
- });
63
+ this.#pickerContext = new UmbDocumentPickerContext(this);
64
+ this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && this.#pickerContext.getSelection().length < this.min);
65
+ this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && this.#pickerContext.getSelection().length > this.max);
66
+ this.observe(this.#pickerContext.selection, (selection) => (super.value = selection.join(',')));
67
+ this.observe(this.#pickerContext.selectedItems, (selectedItems) => (this._items = selectedItems));
53
68
  }
54
69
  getFormElement() {
55
70
  return undefined;
56
71
  }
57
- _observePickedDocuments() {
58
- this._pickedItemsObserver?.destroy();
59
- if (!this._documentStore)
60
- return;
61
- // TODO: consider changing this to the list data endpoint when it is available
62
- this._pickedItemsObserver = this.observe(this._documentStore.items(this._selectedIds), (items) => {
63
- this._items = items;
64
- });
65
- }
66
- _openPicker() {
67
- // We send a shallow copy(good enough as its just an array of ids) of our this._selectedIds, as we don't want the modal to manipulate our data:
68
- const modalContext = this._modalContext?.open(UMB_DOCUMENT_PICKER_MODAL, {
69
- multiple: this.max === 1 ? false : true,
70
- selection: [...this._selectedIds],
71
- });
72
- modalContext?.onSubmit().then(({ selection }) => {
73
- this._setSelection(selection);
74
- });
75
- }
76
- async _removeItem(item) {
77
- const modalContext = this._modalContext?.open(UMB_CONFIRM_MODAL, {
78
- color: 'danger',
79
- headline: `Remove ${item.name}?`,
80
- content: 'Are you sure you want to remove this item',
81
- confirmLabel: 'Remove',
82
- });
83
- await modalContext?.onSubmit();
84
- const newSelection = this._selectedIds.filter((value) => value !== item.id);
85
- this._setSelection(newSelection);
86
- }
87
- _setSelection(newSelection) {
88
- this.selectedIds = newSelection;
89
- this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
90
- }
91
72
  render() {
92
73
  return html `
93
- ${this._items?.map((item) => this._renderItem(item))}
94
- <uui-button id="add-button" look="placeholder" @click=${this._openPicker} label="open">Add</uui-button>
74
+ <uui-ref-list>${this._items?.map((item) => this._renderItem(item))}</uui-ref-list>
75
+ <uui-button id="add-button" look="placeholder" @click=${() => this.#pickerContext.openPicker()} label="open"
76
+ >Add</uui-button
77
+ >
95
78
  `;
96
79
  }
97
80
  _renderItem(item) {
98
- // TODO: remove when we have a way to handle trashed items
99
- const tempItem = item;
81
+ if (!item.id)
82
+ return;
100
83
  return html `
101
- <uui-ref-node name=${ifDefined(item.name === null ? undefined : item.name)} detail=${ifDefined(item.id)}>
102
- ${tempItem.isTrashed ? html ` <uui-tag size="s" slot="tag" color="danger">Trashed</uui-tag> ` : nothing}
84
+ <uui-ref-node name=${ifDefined(item.name)} detail=${ifDefined(item.id)}>
85
+ <!-- TODO: implement is trashed <uui-tag size="s" slot="tag" color="danger">Trashed</uui-tag> -->
103
86
  <uui-action-bar slot="actions">
104
- <uui-button @click=${() => this._removeItem(item)} label="Remove document ${item.name}">Remove</uui-button>
87
+ <uui-button
88
+ @click=${() => this.#pickerContext.requestRemoveItem(item.id)}
89
+ label="Remove document ${item.name}"
90
+ >Remove</uui-button
91
+ >
105
92
  </uui-action-bar>
106
93
  </uui-ref-node>
107
94
  `;
@@ -116,13 +103,13 @@ export let UmbInputDocumentElement = class UmbInputDocumentElement extends FormC
116
103
  };
117
104
  __decorate([
118
105
  property({ type: Number })
119
- ], UmbInputDocumentElement.prototype, "min", void 0);
106
+ ], UmbInputDocumentElement.prototype, "min", null);
120
107
  __decorate([
121
108
  property({ type: String, attribute: 'min-message' })
122
109
  ], UmbInputDocumentElement.prototype, "minMessage", void 0);
123
110
  __decorate([
124
111
  property({ type: Number })
125
- ], UmbInputDocumentElement.prototype, "max", void 0);
112
+ ], UmbInputDocumentElement.prototype, "max", null);
126
113
  __decorate([
127
114
  property({ type: String, attribute: 'min-message' })
128
115
  ], UmbInputDocumentElement.prototype, "maxMessage", void 0);