@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
@@ -4,17 +4,16 @@ 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_USER_GROUP_ENTITY_TYPE } from '../index.js';
7
8
  import { UMB_USER_GROUP_WORKSPACE_CONTEXT } from './user-group-workspace.context.js';
8
9
  import { UUIInputEvent } from '../../../../external/uui/index.js';
9
10
  import { css, html, nothing, customElement, state } from '../../../../external/lit/index.js';
10
- // TODO: import from package when available
11
- //import { UmbUserInputElement } from '../../users/components/user-input/user-input.element.js';
12
11
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
13
- import { UMB_CONFIRM_MODAL, UMB_MODAL_MANAGER_CONTEXT_TOKEN, } from '../../../core/modal/index.js';
14
12
  import { UmbTextStyles } from '../../../../shared/style/index.js';
13
+ import './components/user-group-default-permission-list.element.js';
14
+ import './components/user-group-granular-permission-list.element.js';
15
15
  export let UmbUserGroupWorkspaceEditorElement = class UmbUserGroupWorkspaceEditorElement extends UmbLitElement {
16
16
  #workspaceContext;
17
- #modalContext;
18
17
  constructor() {
19
18
  super();
20
19
  this.consumeContext(UMB_USER_GROUP_WORKSPACE_CONTEXT, (instance) => {
@@ -22,31 +21,26 @@ export let UmbUserGroupWorkspaceEditorElement = class UmbUserGroupWorkspaceEdito
22
21
  this.observe(this.#workspaceContext.data, (userGroup) => (this._userGroup = userGroup));
23
22
  this.observe(this.#workspaceContext.userIds, (userKeys) => (this._userKeys = userKeys));
24
23
  });
25
- this.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
26
- this.#modalContext = instance;
27
- });
28
24
  }
29
- #onUsersChange(userIds) {
30
- this.#workspaceContext?.updateUserKeys(userIds);
25
+ #onSectionsChange(event) {
26
+ event.stopPropagation();
27
+ const target = event.target;
28
+ this.#workspaceContext?.updateProperty('sections', target.value);
31
29
  }
32
- #onSectionsChange(value) {
33
- this.#workspaceContext?.updateProperty('sections', value);
30
+ #onDocumentStartNodeChange(event) {
31
+ event.stopPropagation();
32
+ const target = event.target;
33
+ this.#workspaceContext?.updateProperty('documentStartNodeId', target.selectedIds[0]);
34
34
  }
35
- async #onDelete() {
36
- if (!this.#modalContext || !this.#workspaceContext)
37
- return;
38
- const modalContext = this.#modalContext.open(UMB_CONFIRM_MODAL, {
39
- color: 'danger',
40
- headline: `Delete user group ${this._userGroup?.name}?`,
41
- content: html `Are you sure you want to delete <b>${this._userGroup?.name}</b> user group?`,
42
- confirmLabel: 'Delete',
43
- });
44
- await modalContext.onSubmit();
45
- if (!this._userGroup || !this._userGroup.id)
46
- return;
47
- await this.#workspaceContext.delete(this._userGroup?.id);
48
- //TODO: should we check if it actually succeeded in deleting the user group?
49
- history.pushState(null, '', 'section/users/view/user-groups');
35
+ #onMediaStartNodeChange(event) {
36
+ event.stopPropagation();
37
+ const target = event.target;
38
+ this.#workspaceContext?.updateProperty('mediaStartNodeId', target.selectedIds[0]);
39
+ }
40
+ #onUsersChange(event) {
41
+ event.stopPropagation();
42
+ const target = event.target;
43
+ this.#workspaceContext?.updateUserKeys(target.selectedIds);
50
44
  }
51
45
  #onNameChange(event) {
52
46
  if (event instanceof UUIInputEvent) {
@@ -77,7 +71,7 @@ export let UmbUserGroupWorkspaceEditorElement = class UmbUserGroupWorkspaceEdito
77
71
  </a>
78
72
  <uui-input
79
73
  id="name"
80
- label="name"
74
+ label=${this.localize.term('general_name')}
81
75
  .value=${this._userGroup?.name ?? ''}
82
76
  @input="${this.#onNameChange}"></uui-input>
83
77
  </div>
@@ -86,53 +80,60 @@ export let UmbUserGroupWorkspaceEditorElement = class UmbUserGroupWorkspaceEdito
86
80
  #renderLeftColumn() {
87
81
  if (!this._userGroup)
88
82
  return nothing;
89
- return html ` <uui-box>
90
- <div slot="headline">Assign access</div>
91
- <umb-workspace-property-layout label="Sections" description="Add sections to give users access">
83
+ return html `
84
+ <uui-box>
85
+ <div slot="headline"><umb-localize key="user_assignAccess"></umb-localize></div>
86
+ <umb-workspace-property-layout
87
+ label=${this.localize.term('main_sections')}
88
+ description=${this.localize.term('user_sectionsHelp')}>
92
89
  <umb-input-section
93
90
  slot="editor"
94
91
  .value=${this._userGroup.sections ?? []}
95
- @change=${(e) => this.#onSectionsChange(e.target.value)}></umb-input-section>
92
+ @change=${this.#onSectionsChange}></umb-input-section>
96
93
  </umb-workspace-property-layout>
97
94
  <umb-workspace-property-layout
98
- label="Content start node"
99
- description="Limit the content tree to a specific start node">
100
- <b slot="editor">CONTENT START NODE PICKER NOT IMPLEMENTED YET</b>
95
+ label=${this.localize.term('defaultdialogs_selectContentStartNode')}
96
+ description=${this.localize.term('user_startnodehelp')}>
97
+ <umb-input-document
98
+ slot="editor"
99
+ max="1"
100
+ .selectedIds=${this._userGroup.documentStartNodeId ? [this._userGroup.documentStartNodeId] : []}
101
+ @change=${this.#onDocumentStartNodeChange}></umb-input-document>
101
102
  </umb-workspace-property-layout>
102
103
  <umb-workspace-property-layout
103
- label="Media start node"
104
- description="Limit the media library to a specific start node">
105
- <b slot="editor">MEDIA START NODE PICKER NOT IMPLEMENTED YET</b>
104
+ label=${this.localize.term('defaultdialogs_selectMediaStartNode')}
105
+ description=${this.localize.term('user_mediastartnodehelp')}>
106
+ <umb-input-media
107
+ slot="editor"
108
+ max="1"
109
+ .selectedIds=${this._userGroup.mediaStartNodeId ? [this._userGroup.mediaStartNodeId] : []}
110
+ @change=${this.#onMediaStartNodeChange}></umb-input-media>
106
111
  </umb-workspace-property-layout>
107
112
  </uui-box>
108
113
 
109
114
  <uui-box>
110
- <div slot="headline">Default Permissions</div>
111
- <b>PERMISSIONS NOT IMPLEMENTED YET</b>
115
+ <div slot="headline"><umb-localize key="user_permissionsDefault"></umb-localize></div>
116
+ <umb-user-group-default-permission-list></umb-user-group-default-permission-list>
112
117
  </uui-box>
113
118
 
119
+ <!-- Temp disabled because it is work in progress
114
120
  <uui-box>
115
- <div slot="headline">Granular permissions</div>
116
- <b>PERMISSIONS NOT IMPLEMENTED YET</b>
117
- </uui-box>`;
121
+ <div slot="headline"><umb-localize key="user_permissionsGranular"></umb-localize></div>
122
+ <umb-user-group-granular-permission-list></umb-user-group-granular-permission-list>
123
+ </uui-box>
124
+ -->
125
+ `;
118
126
  }
119
127
  #renderRightColumn() {
120
128
  return html `<uui-box>
121
- <div slot="headline">Users</div>
122
- <!-- change any to UmbUserInputElement when package is available -->
123
- <umb-user-input
124
- @change=${(e) => this.#onUsersChange(e.target.selectedIds)}
125
- .selectedIds=${this._userKeys ?? []}></umb-user-input>
129
+ <div slot="headline"><umb-localize key="sections_users"></umb-localize></div>
130
+ <umb-user-input @change=${this.#onUsersChange} .selectedIds=${this._userKeys ?? []}></umb-user-input>
126
131
  </uui-box>
127
- <uui-box>
128
- <div slot="headline">Delete user group</div>
129
- <uui-button
130
- @click=${this.#onDelete}
131
- style="width: 100%"
132
- color="danger"
133
- look="secondary"
134
- label="Delete"></uui-button>
135
- </uui-box>`;
132
+ <uui-box headline="Actions">
133
+ <umb-entity-action-list
134
+ .entityType=${UMB_USER_GROUP_ENTITY_TYPE}
135
+ .unique=${this._userGroup?.id}></umb-entity-action-list
136
+ ></uui-box>`;
136
137
  }
137
138
  static { this.styles = [
138
139
  UmbTextStyles,
@@ -20,5 +20,17 @@ export declare class UmbUserGroupWorkspaceContext extends UmbWorkspaceContext<Um
20
20
  delete(id: string): Promise<void>;
21
21
  updateProperty<Alias extends keyof UserGroupResponseModel>(alias: Alias, value: UserGroupResponseModel[Alias]): void;
22
22
  updateUserKeys(keys: Array<string>): void;
23
+ /**
24
+ * Adds a permission to the user group permission array.
25
+ * @param {string} permissionAlias
26
+ * @memberof UmbUserGroupWorkspaceContext
27
+ */
28
+ addPermission(permissionAlias: string): void;
29
+ /**
30
+ * Removes a permission from the user group permission array.
31
+ * @param {string} permissionAlias
32
+ * @memberof UmbUserGroupWorkspaceContext
33
+ */
34
+ removePermission(permissionAlias: string): void;
23
35
  }
24
36
  export declare const UMB_USER_GROUP_WORKSPACE_CONTEXT: UmbContextToken<UmbSaveableWorkspaceContextInterface<unknown>, UmbUserGroupWorkspaceContext>;
@@ -83,5 +83,25 @@ export class UmbUserGroupWorkspaceContext extends UmbWorkspaceContext {
83
83
  updateUserKeys(keys) {
84
84
  this.#userIds.next(keys);
85
85
  }
86
+ /**
87
+ * Adds a permission to the user group permission array.
88
+ * @param {string} permissionAlias
89
+ * @memberof UmbUserGroupWorkspaceContext
90
+ */
91
+ addPermission(permissionAlias) {
92
+ const permissions = this.#data.getValue()?.permissions ?? [];
93
+ const newValue = [...permissions, permissionAlias];
94
+ this.#data.update({ permissions: newValue });
95
+ }
96
+ /**
97
+ * Removes a permission from the user group permission array.
98
+ * @param {string} permissionAlias
99
+ * @memberof UmbUserGroupWorkspaceContext
100
+ */
101
+ removePermission(permissionAlias) {
102
+ const permissions = this.#data.getValue()?.permissions ?? [];
103
+ const newValue = permissions.filter((alias) => alias !== permissionAlias);
104
+ this.#data.update({ permissions: newValue });
105
+ }
86
106
  }
87
107
  export const UMB_USER_GROUP_WORKSPACE_CONTEXT = new UmbContextToken('UmbWorkspaceContext', (context) => context.getEntityType?.() === 'user-group');
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { UmbUserGroupWorkspaceContext } from './user-group-workspace.context.js';
8
8
  import { UmbUserGroupWorkspaceEditorElement } from './user-group-workspace-editor.element.js';
9
- import { UmbTextStyles } from "../../../../shared/style/index.js";
9
+ import { UmbTextStyles } from '../../../../shared/style/index.js';
10
10
  import { html, customElement, state } from '../../../../external/lit/index.js';
11
11
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
12
12
  import { UmbWorkspaceIsNewRedirectController } from '../../../core/workspace/index.js';
@@ -85,18 +85,19 @@ export let UmbUserCollectionHeaderElement = class UmbUserCollectionHeaderElement
85
85
  return html `
86
86
  <uui-button
87
87
  @click=${this._showInviteOrCreate}
88
- label=${this._isCloud ? 'Invite' : 'Create' + ' user'}
88
+ label=${this.localize.term(this._isCloud ? 'user_inviteUser' : 'user_createUser')}
89
89
  look="outline"></uui-button>
90
- <uui-input @input=${this._updateSearch} label="search" id="input-search"></uui-input>
90
+ <uui-input @input=${this._updateSearch} label=${this.localize.term('visuallyHiddenTexts_userSearchLabel')} placeholder=${this.localize.term('visuallyHiddenTexts_userSearchLabel')} id="input-search"></uui-input>
91
91
  <div>
92
92
  <!-- TODO: we should consider using the uui-combobox. We need to add a multiple options to it first -->
93
93
  <umb-dropdown margin="8">
94
94
  <uui-button @click=${this.#onDropdownClick} slot="trigger" label="status">
95
- State: ${this._stateFilterSelection}
95
+ <umb-localize key="general_status"></umb-localize>:
96
+ <umb-localize key=${'user_state' + this._stateFilterSelection}></umb-localize>
96
97
  </uui-button>
97
98
  <div slot="dropdown" class="filter-dropdown">
98
99
  ${this._stateFilterOptions.map((option) => html `<uui-checkbox
99
- label=${option}
100
+ label=${this.localize.term('user_state' + option)}
100
101
  @change=${this.#onStateFilterChange}
101
102
  name="state"
102
103
  value=${option}></uui-checkbox>`)}
@@ -105,19 +106,25 @@ export let UmbUserCollectionHeaderElement = class UmbUserCollectionHeaderElement
105
106
 
106
107
  <!-- TODO: we should consider using the uui-combobox. We need to add a multiple options to it first -->
107
108
  <umb-dropdown margin="8">
108
- <uui-button @click=${this.#onDropdownClick} slot="trigger" label="order by"> Group: </uui-button>
109
+ <uui-button @click=${this.#onDropdownClick} slot="trigger" label=${this.localize.term('general_groups')}>
110
+ <umb-localize key="general_groups"></umb-localize>:
111
+ <!-- TODO: show the value here -->
112
+ </uui-button>
109
113
  <div slot="dropdown" class="filter-dropdown">
110
- <uui-checkbox label="Active"></uui-checkbox>
111
- <uui-checkbox label="Inactive"></uui-checkbox>
112
- <uui-checkbox label="Invited"></uui-checkbox>
113
- <uui-checkbox label="Disabled"></uui-checkbox>
114
+ <!-- TODO: GET THESE FROM SERVER (not localized) -->
115
+ <uui-checkbox label="Administrators"></uui-checkbox>
116
+ <uui-checkbox label="Editors"></uui-checkbox>
117
+ <uui-checkbox label="Sensitive Data"></uui-checkbox>
118
+ <uui-checkbox label="Translators"></uui-checkbox>
119
+ <uui-checkbox label="Writers"></uui-checkbox>
114
120
  </div>
115
121
  </umb-dropdown>
116
122
 
117
123
  <!-- TODO: we should consider using the uui-combobox. We need to add a multiple options to it first -->
118
124
  <umb-dropdown margin="8">
119
- <uui-button @click=${this.#onDropdownClick} slot="trigger" label="Order By">
120
- Order By: <b>${this._orderBy}</b>
125
+ <uui-button @click=${this.#onDropdownClick} slot="trigger" label=${this.localize.term('general_orderBy')}>
126
+ <umb-localize key="general_orderBy"></umb-localize>:
127
+ <b>${this._orderBy}</b>
121
128
  </uui-button>
122
129
  <div slot="dropdown" class="filter-dropdown" name="orderBy">
123
130
  <uui-radio-group name="radioGroup" @change=${this.#onOrderByChange}>
@@ -4,7 +4,7 @@ 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 { getLookAndColorFromUserStatus } from '../../../../utils.js';
7
+ import { getDisplayStateFromUserStatus } from '../../../../utils.js';
8
8
  import { css, html, nothing, customElement, state, repeat, ifDefined } from '../../../../../../external/lit/index.js';
9
9
  import { UmbTextStyles } from "../../../../../../shared/style/index.js";
10
10
  import { UMB_COLLECTION_CONTEXT_TOKEN } from '../../../../../core/collection/index.js';
@@ -52,22 +52,22 @@ export let UmbUserCollectionGridViewElement = class UmbUserCollectionGridViewEle
52
52
  if (user.state && user.state === UserStateModel.ACTIVE) {
53
53
  return nothing;
54
54
  }
55
- const statusLook = getLookAndColorFromUserStatus(user.state);
55
+ const statusLook = getDisplayStateFromUserStatus(user.state);
56
56
  return html `<uui-tag
57
57
  slot="tag"
58
58
  size="s"
59
59
  look="${ifDefined(statusLook?.look)}"
60
60
  color="${ifDefined(statusLook?.color)}">
61
- ${user.state}
61
+ <umb-localize key=${'user_' + statusLook.key}></umb-localize>
62
62
  </uui-tag>`;
63
63
  }
64
64
  #renderUserLoginDate(user) {
65
65
  if (!user.lastLoginDate) {
66
- return html `<div class="user-login-time">${`${user.name} has not logged in yet`}</div>`;
66
+ return html `<div class="user-login-time">${`${user.name} ${this.localize.term('user_noLogin')}`}</div>`;
67
67
  }
68
68
  return html `<div class="user-login-time">
69
- <div>Last login</div>
70
- ${user.lastLoginDate}
69
+ <umb-localize key="user_lastLogin"></umb-localize><br/>
70
+ ${this.localize.date(user.lastLoginDate)}
71
71
  </div>`;
72
72
  }
73
73
  render() {
@@ -4,15 +4,15 @@ 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 { getLookAndColorFromUserStatus } from '../../../../../../utils.js';
7
+ import { getDisplayStateFromUserStatus } from '../../../../../../utils.js';
8
8
  import { html, LitElement, nothing, customElement, property } from '../../../../../../../../external/lit/index.js';
9
9
  export let UmbUserTableStatusColumnLayoutElement = class UmbUserTableStatusColumnLayoutElement extends LitElement {
10
10
  render() {
11
11
  return html `${this.value.status && this.value.status !== 'enabled'
12
12
  ? html `<uui-tag
13
13
  size="s"
14
- look="${getLookAndColorFromUserStatus(this.value.status).look}"
15
- color="${getLookAndColorFromUserStatus(this.value.status).color}">
14
+ look="${getDisplayStateFromUserStatus(this.value.status).look}"
15
+ color="${getDisplayStateFromUserStatus(this.value.status).color}">
16
16
  ${this.value.status}
17
17
  </uui-tag>`
18
18
  : nothing}`;
@@ -1 +1,4 @@
1
1
  import './user-input/user-input.element.js';
2
+ import './user-permission-setting/user-permission-setting.element.js';
3
+ export * from './user-input/user-input.element.js';
4
+ export * from './user-permission-setting/user-permission-setting.element.js';
@@ -1 +1,4 @@
1
1
  import './user-input/user-input.element.js';
2
+ import './user-permission-setting/user-permission-setting.element.js';
3
+ export * from './user-input/user-input.element.js';
4
+ export * from './user-permission-setting/user-permission-setting.element.js';
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { UmbUserPickerContext } from './user-input.context.js';
8
- import { css, html, customElement, property, state } from '../../../../../external/lit/index.js';
8
+ import { css, html, customElement, property, state, ifDefined } from '../../../../../external/lit/index.js';
9
9
  import { FormControlMixin } from '../../../../../external/uui/index.js';
10
10
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
11
11
  export let UmbUserInputElement = class UmbUserInputElement extends FormControlMixin(UmbLitElement) {
@@ -81,7 +81,7 @@ export let UmbUserInputElement = class UmbUserInputElement extends FormControlMi
81
81
  if (!item.id)
82
82
  return;
83
83
  return html `
84
- <uui-ref-node-user name=${item.name}>
84
+ <uui-ref-node-user name=${ifDefined(item.name)}>
85
85
  <uui-action-bar slot="actions">
86
86
  <uui-button @click=${() => this.#pickerContext.requestRemoveItem(item.id)} label="Remove ${item.name}"
87
87
  >Remove</uui-button
@@ -0,0 +1,15 @@
1
+ import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
2
+ export declare class UmbUserPermissionSettingElement extends UmbLitElement {
3
+ #private;
4
+ label: string;
5
+ description?: string;
6
+ allowed: boolean;
7
+ render(): import("lit-html").TemplateResult<1>;
8
+ static styles: import("@lit/reactive-element/css-tag").CSSResult[];
9
+ }
10
+ export default UmbUserPermissionSettingElement;
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ 'umb-user-permission-setting': UmbUserPermissionSettingElement;
14
+ }
15
+ }
@@ -0,0 +1,66 @@
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, html, customElement, property } from '../../../../../external/lit/index.js';
8
+ import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
9
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
10
+ import { UmbChangeEvent } from '../../../../../shared/umb-events/index.js';
11
+ export let UmbUserPermissionSettingElement = class UmbUserPermissionSettingElement extends UmbLitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.label = '';
15
+ this.description = '';
16
+ this.allowed = false;
17
+ }
18
+ #onChange(event) {
19
+ event.stopPropagation();
20
+ this.allowed = event.target.checked;
21
+ this.dispatchEvent(new UmbChangeEvent());
22
+ }
23
+ render() {
24
+ return html `<div id="setting">
25
+ <uui-toggle label=${this.label} ?checked=${this.allowed} @change=${this.#onChange}>
26
+ <div id="meta">
27
+ <div id="name">${this.label}</div>
28
+ <small>${this.description}</small>
29
+ </div>
30
+ </uui-toggle>
31
+ </div>`;
32
+ }
33
+ static { this.styles = [
34
+ UmbTextStyles,
35
+ css `
36
+ #setting {
37
+ display: flex;
38
+ align-items: center;
39
+ border-bottom: 1px solid var(--uui-color-divider);
40
+ padding: var(--uui-size-space-3) 0 var(--uui-size-space-4) 0;
41
+ }
42
+
43
+ #meta {
44
+ margin-left: var(--uui-size-space-4);
45
+ line-height: 1.2em;
46
+ }
47
+
48
+ #name {
49
+ font-weight: bold;
50
+ }
51
+ `,
52
+ ]; }
53
+ };
54
+ __decorate([
55
+ property({ type: String, attribute: true })
56
+ ], UmbUserPermissionSettingElement.prototype, "label", void 0);
57
+ __decorate([
58
+ property({ type: String, attribute: true })
59
+ ], UmbUserPermissionSettingElement.prototype, "description", void 0);
60
+ __decorate([
61
+ property({ type: Boolean, attribute: true })
62
+ ], UmbUserPermissionSettingElement.prototype, "allowed", void 0);
63
+ UmbUserPermissionSettingElement = __decorate([
64
+ customElement('umb-user-permission-setting')
65
+ ], UmbUserPermissionSettingElement);
66
+ export default UmbUserPermissionSettingElement;
@@ -1 +1,3 @@
1
+ export * from './components/index.js';
2
+ export * from './repository/index.js';
1
3
  export * from './types.js';
@@ -1 +1,3 @@
1
+ export * from './components/index.js';
2
+ export * from './repository/index.js';
1
3
  export * from './types.js';
@@ -1,9 +1,11 @@
1
+ import { PropertyValueMap } from '../../../../../external/lit/index.js';
1
2
  import { UmbUserPickerModalData, UmbUserPickerModalResult } from '../../../../core/modal/index.js';
2
3
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
3
4
  export declare class UmbUserPickerModalElement extends UmbModalBaseElement<UmbUserPickerModalData, UmbUserPickerModalResult> {
4
5
  #private;
5
6
  private _users;
6
- constructor();
7
+ connectedCallback(): void;
8
+ protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
7
9
  render(): import("lit-html").TemplateResult<1>;
8
10
  static styles: import("@lit/reactive-element/css-tag.js").CSSResult[];
9
11
  }
@@ -4,38 +4,33 @@ 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 { UmbTextStyles } from "../../../../../shared/style/index.js";
8
- import { css, html, customElement, state } from '../../../../../external/lit/index.js';
9
- import { createExtensionClass } from '../../../../../libs/extension-api/index.js';
10
- import { umbExtensionsRegistry } from '../../../../core/extension-registry/index.js';
11
- import { UmbObserverController } from '../../../../../libs/observable-api/index.js';
7
+ import { UmbUserRepository } from '../../repository/user.repository.js';
8
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
9
+ import { css, html, customElement, state, ifDefined } from '../../../../../external/lit/index.js';
12
10
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
13
11
  import { UmbSelectionManagerBase } from '../../../../../shared/utils/index.js';
14
12
  export let UmbUserPickerModalElement = class UmbUserPickerModalElement extends UmbModalBaseElement {
15
- #selectionManager;
16
- #userRepository;
17
13
  constructor() {
18
- super();
14
+ super(...arguments);
19
15
  this._users = [];
20
16
  this.#selectionManager = new UmbSelectionManagerBase();
21
- // TODO: this code is reused in multiple places, so it should be extracted to a function
22
- new UmbObserverController(this, umbExtensionsRegistry.getByTypeAndAlias('repository', 'Umb.Repository.User'), async (repositoryManifest) => {
23
- if (!repositoryManifest)
24
- return;
25
- try {
26
- const result = await createExtensionClass(repositoryManifest, [this]);
27
- this.#userRepository = result;
28
- this.#observeUsers();
29
- }
30
- catch (error) {
31
- throw new Error('Could not create repository with alias: Umb.Repository.User');
32
- }
33
- });
17
+ this.#userRepository = new UmbUserRepository(this);
18
+ }
19
+ #selectionManager;
20
+ #userRepository;
21
+ connectedCallback() {
22
+ super.connectedCallback();
23
+ // TODO: in theory this config could change during the lifetime of the modal, so we could observe it
24
+ this.#selectionManager.setMultiple(this.data?.multiple ?? false);
25
+ this.#selectionManager.setSelection(this.data?.selection ?? []);
26
+ }
27
+ firstUpdated(_changedProperties) {
28
+ super.firstUpdated(_changedProperties);
29
+ this.#requestUsers();
34
30
  }
35
- async #observeUsers() {
31
+ async #requestUsers() {
36
32
  if (!this.#userRepository)
37
33
  return;
38
- // TODO is this the correct end point?
39
34
  const { data } = await this.#userRepository.requestCollection();
40
35
  if (data) {
41
36
  this._users = data.items;
@@ -53,12 +48,12 @@ export let UmbUserPickerModalElement = class UmbUserPickerModalElement extends U
53
48
  <uui-box>
54
49
  ${this._users.map((user) => html `
55
50
  <uui-menu-item
56
- label=${user.name}
51
+ label=${ifDefined(user.name)}
57
52
  selectable
58
53
  @selected=${() => this.#selectionManager.select(user.id)}
59
54
  @deselected=${() => this.#selectionManager.deselect(user.id)}
60
55
  ?selected=${this.#selectionManager.isSelected(user.id)}>
61
- <uui-avatar slot="icon" name=${user.name}></uui-avatar>
56
+ <uui-avatar slot="icon" name=${ifDefined(user.name)}></uui-avatar>
62
57
  </uui-menu-item>
63
58
  `)}
64
59
  </uui-box>
@@ -0,0 +1 @@
1
+ export * from './user.repository.js';
@@ -0,0 +1 @@
1
+ export * from './user.repository.js';
@@ -45,7 +45,7 @@ export class UmbUserRepository {
45
45
  ]);
46
46
  }
47
47
  // COLLECTION
48
- async requestCollection(filter = { skip: 0, take: 100 }) {
48
+ async requestCollection(filter = { skip: 0, take: 100000 }) {
49
49
  //TODO: missing observable
50
50
  return this.#collectionSource.filterCollection(filter);
51
51
  }