diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/invite-user.collection-action.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/invite-user.collection-action.ts new file mode 100644 index 0000000000..a87c437160 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/invite-user.collection-action.ts @@ -0,0 +1,28 @@ +import { UmbUserCollectionContext } from '../user-collection.context.js'; +import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { + UMB_INVITE_USER_MODAL, + UMB_MODAL_MANAGER_CONTEXT_TOKEN, + UmbModalManagerContext, +} from '@umbraco-cms/backoffice/modal'; + +export class UmbInviteUserCollectionAction extends UmbCollectionActionBase { + #modalManagerContext: UmbModalManagerContext | undefined; + + constructor(host: UmbControllerHost) { + super(host); + + new UmbContextConsumerController(this.host, UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => { + this.#modalManagerContext = instance; + }); + } + + async execute() { + const modalContext = this.#modalManagerContext?.open(UMB_INVITE_USER_MODAL); + await modalContext?.onSubmit(); + } + + destroy(): void {} +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/manifests.ts index 39ec9b6673..05e53e10aa 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/manifests.ts @@ -1,4 +1,5 @@ import { UmbCreateUserCollectionAction } from './create-user.collection-action.js'; +import { UmbInviteUserCollectionAction } from './invite-user.collection-action.js'; import { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; export const createManifest: ManifestTypes = { @@ -6,9 +7,21 @@ export const createManifest: ManifestTypes = { kind: 'button', alias: 'Umb.CollectionAction.User.Create', api: UmbCreateUserCollectionAction, + weight: 200, meta: { - label: 'Create User', + label: 'Create', }, }; -export const manifests = [createManifest]; +export const inviteManifest: ManifestTypes = { + type: 'collectionAction', + kind: 'button', + alias: 'Umb.CollectionAction.User.Invite', + api: UmbInviteUserCollectionAction, + weight: 100, + meta: { + label: 'Invite', + }, +}; + +export const manifests = [createManifest, inviteManifest];