From 5ceb9ed4e8163d3855445a07d5125fc90f6f502c Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Tue, 10 Sep 2024 23:27:59 +0200 Subject: [PATCH 001/105] document notifications --- .../documents/entity-actions/manifests.ts | 2 + .../document-notifications-modal.element.ts | 64 +++++++++++++++++++ .../document-notifications-modal.token.ts | 18 ++++++ .../document-notifications.action.ts | 20 ++++++ .../entity-actions/notifications/index.ts | 2 + .../entity-actions/notifications/manifests.ts | 27 ++++++++ .../document-notifications.repository.ts | 44 +++++++++++++ .../document-notifications.server.data.ts | 46 +++++++++++++ .../notifications/repository/index.ts | 2 + .../notifications/repository/manifests.ts | 12 ++++ .../documents/documents/modals/manifests.ts | 1 + 11 files changed, 238 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.token.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.server.data.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts index 4800606d69..5b3646bd34 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts @@ -12,6 +12,7 @@ import { manifests as duplicateManifests } from './duplicate/manifests.js'; import { manifests as moveManifests } from './move-to/manifests.js'; import { manifests as publicAccessManifests } from './public-access/manifests.js'; import { manifests as sortChildrenOfManifests } from './sort-children-of/manifests.js'; +import { manifests as notificationManifests } from './notifications/manifests.js'; import type { ManifestEntityAction, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; import { @@ -143,4 +144,5 @@ export const manifests: Array = [ ...publicAccessManifests, ...sortChildrenOfManifests, ...entityActions, + ...notificationManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts new file mode 100644 index 0000000000..6c9c6aba57 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts @@ -0,0 +1,64 @@ +import type { + UmbDocumentNotificationsModalData, + UmbDocumentNotificationsModalValue, +} from './document-notifications-modal.token.js'; +import type { UmbEntityUnique } from '@umbraco-cms/backoffice/entity'; +import { css, customElement, html } from '@umbraco-cms/backoffice/external/lit'; +import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; + +@customElement('umb-document-notifications-modal') +export class UmbDocumentNotificationsModalElement extends UmbModalBaseElement< + UmbDocumentNotificationsModalData, + UmbDocumentNotificationsModalValue +> { + #unique?: UmbEntityUnique; + + constructor() { + super(); + this.#unique = this.data?.unique; + } + + override render() { + return html` + + + ${this.#unique} + + + + + + + + + + + + + + + + + + + `; + } + + static override styles = [ + UmbTextStyles, + css` + uui-toggle { + display: block; + } + `, + ]; +} + +export default UmbDocumentNotificationsModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-notifications-modal': UmbDocumentNotificationsModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.token.ts new file mode 100644 index 0000000000..16bf13836e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.token.ts @@ -0,0 +1,18 @@ +import { UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS } from './manifests.js'; +import type { UmbEntityUnique } from '@umbraco-cms/backoffice/entity'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbDocumentNotificationsModalData { + unique: UmbEntityUnique; +} +export interface UmbDocumentNotificationsModalValue {} + +export const UMB_DOCUMENT_NOTIFICATIONS_MODAL = new UmbModalToken< + UmbDocumentNotificationsModalData, + UmbDocumentNotificationsModalValue +>(UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS, { + modal: { + type: 'sidebar', + size: 'small', + }, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts new file mode 100644 index 0000000000..ba0398e90a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts @@ -0,0 +1,20 @@ +import { UMB_DOCUMENT_NOTIFICATIONS_MODAL } from './document-notifications-modal.token.js'; +import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; + +export class UmbDocumentNotificationsEntityAction extends UmbEntityActionBase { + constructor(host: UmbControllerHost, args: UmbEntityActionArgs) { + super(host, args); + } + + override async execute() { + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const modalContext = modalManager.open(this, UMB_DOCUMENT_NOTIFICATIONS_MODAL, { + data: { unique: this.args.unique }, + }); + await modalContext.onSubmit(); + } +} +export default UmbDocumentNotificationsEntityAction; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts new file mode 100644 index 0000000000..b1641ba97e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts @@ -0,0 +1,2 @@ +export * from './document-notifications-modal.token.js'; +export * from './repository/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts new file mode 100644 index 0000000000..854920739b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts @@ -0,0 +1,27 @@ +import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; +import { manifests as repositoryManifests } from './repository/manifests.js'; +import type { ManifestEntityAction, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS = 'Umb.Modal.DocumentNotifications'; + +const actionManifest: ManifestEntityAction = { + type: 'entityAction', + kind: 'default', + alias: 'Umb.EntityAction.Document.Notifications', + name: 'Notifications', + api: () => import('./document-notifications.action.js'), + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], + meta: { + icon: 'icon-megaphone', + label: '#notifications_notifications', + }, +}; + +const modalManifest: ManifestTypes = { + type: 'modal', + alias: UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS, + name: 'Document Notifications Modal', + js: () => import('./document-notifications-modal.element.js'), +}; + +export const manifests = [actionManifest, modalManifest, ...repositoryManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.repository.ts new file mode 100644 index 0000000000..9b79298de1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.repository.ts @@ -0,0 +1,44 @@ +import { UmbDocumentNotificationsServerDataSource } from './document-notifications.server.data.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; +import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; +import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; +import type { UpdateDocumentNotificationsRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; + +export class UmbDocumentNotificationsRepository extends UmbControllerBase implements UmbApi { + #dataSource = new UmbDocumentNotificationsServerDataSource(this); + + #notificationContext?: typeof UMB_NOTIFICATION_CONTEXT.TYPE; + + constructor(host: UmbControllerHost) { + super(host); + + this.consumeContext(UMB_NOTIFICATION_CONTEXT, (instance) => { + this.#notificationContext = instance; + }); + } + + async readNotifications(unique: string) { + if (!unique) throw new Error('Unique is missing'); + + const { data, error } = await this.#dataSource.read(unique); + if (!error) { + return { data }; + } + return { error }; + } + + async updateNotifications(unique: string, data: UpdateDocumentNotificationsRequestModel) { + if (!unique) throw new Error('Unique is missing'); + if (!data) throw new Error('Data is missing'); + + const { error } = await this.#dataSource.update(unique, data); + if (!error) { + const notification = { data: { message: `Notification settings saved` } }; + this.#notificationContext?.peek('positive', notification); + } + return { error }; + } +} + +export { UmbDocumentNotificationsRepository as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.server.data.ts new file mode 100644 index 0000000000..7ee5f2bce7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/document-notifications.server.data.ts @@ -0,0 +1,46 @@ +import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UpdateDocumentNotificationsRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for the Document Culture and Hostnames that fetches data from the server + * @class UmbDocumentNotificationsServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbDocumentNotificationsServerDataSource { + #host: UmbControllerHost; + + /** + * Creates an instance of UmbDocumentNotificationsServerDataSource. + * @param {UmbControllerHost} host - The controller host for this controller to be appended to + * @memberof UmbDocumentNotificationsServerDataSource + */ + constructor(host: UmbControllerHost) { + this.#host = host; + } + + /** + * Fetches the Culture and Hostnames for the given Document unique + * @param {string} unique + * @memberof UmbDocumentNotificationsServerDataSource + */ + async read(unique: string) { + if (!unique) throw new Error('Unique is missing'); + return tryExecuteAndNotify(this.#host, DocumentService.getDocumentByIdNotifications({ id: unique })); + } + + /** + * Updates Culture and Hostnames for the given Document unique + * @param {string} unique + * @param {UpdateDocumentNotificationsRequestModel} data + * @memberof UmbDocumentNotificationsServerDataSource + */ + async update(unique: string, data: UpdateDocumentNotificationsRequestModel) { + if (!unique) throw new Error('Unique is missing'); + return tryExecuteAndNotify( + this.#host, + DocumentService.putDocumentByIdNotifications({ id: unique, requestBody: data }), + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/index.ts new file mode 100644 index 0000000000..6b1e01d108 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/index.ts @@ -0,0 +1,2 @@ +export { UmbDocumentNotificationsRepository } from './document-notifications.repository.js'; +export { UMB_DOCUMENT_NOTIFICATIONS_REPOSITORY_ALIAS } from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/manifests.ts new file mode 100644 index 0000000000..2296083714 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/repository/manifests.ts @@ -0,0 +1,12 @@ +import type { ManifestRepository, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_DOCUMENT_NOTIFICATIONS_REPOSITORY_ALIAS = 'Umb.Repository.Document.Notifications'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_DOCUMENT_NOTIFICATIONS_REPOSITORY_ALIAS, + name: 'Document Notifications Repository', + api: () => import('./document-notifications.repository.js'), +}; + +export const manifests: Array = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts index 520453ed02..ff2a6d087e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/manifests.ts @@ -6,6 +6,7 @@ export const UMB_DOCUMENT_PUBLISH_MODAL_ALIAS = 'Umb.Modal.DocumentPublish'; export const UMB_DOCUMENT_UNPUBLISH_MODAL_ALIAS = 'Umb.Modal.DocumentUnpublish'; export const UMB_DOCUMENT_SCHEDULE_MODAL_ALIAS = 'Umb.Modal.DocumentSchedule'; export const UMB_DOCUMENT_PUBLISH_WITH_DESCENDANTS_MODAL_ALIAS = 'Umb.Modal.DocumentPublishWithDescendants'; +export const UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS = 'Umb.Modal.DocumentNotifications'; const modals: Array = [ { From 6dc3be8623589accbfe23170c5418c126cdd6331 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 11 Sep 2024 10:35:02 +0200 Subject: [PATCH 002/105] move files, setup modal element --- .../document-notifications-modal.element.ts | 64 --------- .../document-notifications.action.ts | 4 +- .../entity-actions/notifications/index.ts | 2 +- .../entity-actions/notifications/manifests.ts | 38 +++--- .../document-notifications-modal.element.ts | 125 ++++++++++++++++++ .../document-notifications-modal.token.ts | 0 .../notifications/modal/index.ts | 1 + .../notifications/modal/manifests.ts | 12 ++ 8 files changed, 157 insertions(+), 89 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts rename src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/{ => modal}/document-notifications-modal.token.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts deleted file mode 100644 index 6c9c6aba57..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.element.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { - UmbDocumentNotificationsModalData, - UmbDocumentNotificationsModalValue, -} from './document-notifications-modal.token.js'; -import type { UmbEntityUnique } from '@umbraco-cms/backoffice/entity'; -import { css, customElement, html } from '@umbraco-cms/backoffice/external/lit'; -import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; -import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; - -@customElement('umb-document-notifications-modal') -export class UmbDocumentNotificationsModalElement extends UmbModalBaseElement< - UmbDocumentNotificationsModalData, - UmbDocumentNotificationsModalValue -> { - #unique?: UmbEntityUnique; - - constructor() { - super(); - this.#unique = this.data?.unique; - } - - override render() { - return html` - - - ${this.#unique} - - - - - - - - - - - - - - - - - - - `; - } - - static override styles = [ - UmbTextStyles, - css` - uui-toggle { - display: block; - } - `, - ]; -} - -export default UmbDocumentNotificationsModalElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-document-notifications-modal': UmbDocumentNotificationsModalElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts index ba0398e90a..a4844b73e0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications.action.ts @@ -1,4 +1,4 @@ -import { UMB_DOCUMENT_NOTIFICATIONS_MODAL } from './document-notifications-modal.token.js'; +import { UMB_DOCUMENT_NOTIFICATIONS_MODAL } from './modal/document-notifications-modal.token.js'; import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -14,7 +14,7 @@ export class UmbDocumentNotificationsEntityAction extends UmbEntityActionBase undefined); } } export default UmbDocumentNotificationsEntityAction; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts index b1641ba97e..e130217e61 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/index.ts @@ -1,2 +1,2 @@ -export * from './document-notifications-modal.token.js'; +export * from './modal/index.js'; export * from './repository/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts index 854920739b..d30a0587a8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts @@ -1,27 +1,21 @@ import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; -import type { ManifestEntityAction, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; +import { manifests as modalManifests } from './modal/manifests.js'; +import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extension-registry'; -export const UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS = 'Umb.Modal.DocumentNotifications'; - -const actionManifest: ManifestEntityAction = { - type: 'entityAction', - kind: 'default', - alias: 'Umb.EntityAction.Document.Notifications', - name: 'Notifications', - api: () => import('./document-notifications.action.js'), - forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], - meta: { - icon: 'icon-megaphone', - label: '#notifications_notifications', +const actionManifests: Array = [ + { + type: 'entityAction', + kind: 'default', + alias: 'Umb.EntityAction.Document.Notifications', + name: 'Notifications', + api: () => import('./document-notifications.action.js'), + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], + meta: { + icon: 'icon-megaphone', + label: '#notifications_notifications', + }, }, -}; +]; -const modalManifest: ManifestTypes = { - type: 'modal', - alias: UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS, - name: 'Document Notifications Modal', - js: () => import('./document-notifications-modal.element.js'), -}; - -export const manifests = [actionManifest, modalManifest, ...repositoryManifests]; +export const manifests = [...actionManifests, ...modalManifests, ...repositoryManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts new file mode 100644 index 0000000000..a83d7da494 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts @@ -0,0 +1,125 @@ +import { UmbDocumentNotificationsRepository } from '../repository/document-notifications.repository.js'; +import type { + UmbDocumentNotificationsModalData, + UmbDocumentNotificationsModalValue, +} from './document-notifications-modal.token.js'; +import type { UmbEntityUnique } from '@umbraco-cms/backoffice/entity'; +import type { GetDocumentByIdNotificationsResponse } from '@umbraco-cms/backoffice/external/backend-api'; +import { css, customElement, html, repeat, state } from '@umbraco-cms/backoffice/external/lit'; +import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; + +interface UmbDocumentNotificationSettings extends GetDocumentByIdNotificationsResponse {} + +@customElement('umb-document-notifications-modal') +export class UmbDocumentNotificationsModalElement extends UmbModalBaseElement< + UmbDocumentNotificationsModalData, + UmbDocumentNotificationsModalValue +> { + #unique?: UmbEntityUnique; + #documentNotificationsRepository = new UmbDocumentNotificationsRepository(this); + + #localizationKeys = [ + { actionId: 'Umb.Document.Duplicate', key: 'actions_copy' }, + { actionId: 'Umb.Document.Delete', key: 'actions_delete' }, + { actionId: 'Umb.Document.Move', key: 'actions_move' }, + { actionId: 'Umb.Document.Create', key: 'actions_create' }, + { actionId: 'Umb.Document.PublicAccess', key: 'actions_protect' }, + { actionId: 'Umb.Document.Publish', key: 'actions_publish' }, + { actionId: 'Umb.DocumentRecycleBin.Restore', key: 'actions_restore' }, + { actionId: 'Umb.Document.Permissions', key: 'actions_rights' }, + { actionId: 'Umb.Document.Rollback', key: 'actions_rollback' }, + { actionId: 'Umb.Document.Sort', key: 'actions_sort' }, + { actionId: 'Umb.Document.SendForApproval', key: 'actions_sendtopublish' }, + { actionId: 'Umb.Document.Update', key: 'actions_update' }, + ]; + + @state() + private _settings: UmbDocumentNotificationSettings = []; + + override firstUpdated() { + this.#unique = this.data?.unique; + this.#readNotificationSettings(); + } + + async #readNotificationSettings() { + if (!this.#unique) return; + const { data } = await this.#documentNotificationsRepository.readNotifications(this.#unique); + + if (!data) return; + this._settings = data; + } + + async #updateNotificationSettings() { + if (!this.#unique) return; + + const subscribedActionIds = this._settings.filter((x) => x.subscribed).map((x) => x.actionId); + const { error } = await this.#documentNotificationsRepository.updateNotifications(this.#unique, { + subscribedActionIds, + }); + + if (error) return; + this._submitModal(); + } + + async #updateSubscription(actionId: string) { + this._settings = this._settings.map((setting) => { + if (setting.actionId === actionId) { + const subscribed = !setting.subscribed; + return { ...setting, subscribed }; + } + return setting; + }); + } + + override render() { + return html` + + + ${repeat( + this._settings, + (setting) => setting.actionId, + (setting) => { + const localization = this.#localizationKeys.find((x) => x.actionId === setting.actionId); + return html` this.#updateSubscription(setting.actionId)} + .label=${localization ? this.localize.term(localization.key) : setting.actionId} + ?checked=${setting.subscribed}>`; + }, + )} + + + + + + + `; + } + + static override styles = [ + UmbTextStyles, + css` + uui-toggle { + display: block; + } + `, + ]; +} + +export default UmbDocumentNotificationsModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-notifications-modal': UmbDocumentNotificationsModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.token.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/document-notifications-modal.token.ts rename to src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.token.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/index.ts new file mode 100644 index 0000000000..0e93ed32df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/index.ts @@ -0,0 +1 @@ +export * from './document-notifications-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/manifests.ts new file mode 100644 index 0000000000..4a12f56a0f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/manifests.ts @@ -0,0 +1,12 @@ +import type { ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS = 'Umb.Modal.DocumentNotifications'; + +const modalManifest: ManifestModal = { + type: 'modal', + alias: UMB_DOCUMENT_NOTIFICATIONS_MODAL_ALIAS, + name: 'Document Notifications Modal', + js: () => import('./document-notifications-modal.element.js'), +}; + +export const manifests = [modalManifest]; From d03f41a9b5316a7fd267c1f8a656e8a738fee279 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 12 Sep 2024 08:09:54 +0200 Subject: [PATCH 003/105] rename folder --- .../src/packages/members/{member-section => section}/manifests.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/members/{member-section => section}/manifests.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member-section/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts From 9dac62d8074318769a7f6e431e3d999256175e23 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Thu, 12 Sep 2024 09:23:09 +0200 Subject: [PATCH 004/105] weight --- .../documents/entity-actions/notifications/manifests.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts index d30a0587a8..2e4b014dc1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/manifests.ts @@ -9,6 +9,7 @@ const actionManifests: Array = [ kind: 'default', alias: 'Umb.EntityAction.Document.Notifications', name: 'Notifications', + weight: 100, api: () => import('./document-notifications.action.js'), forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { From 7548bf21065d217f17b58734071b85dd120bd44b Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Thu, 12 Sep 2024 09:27:05 +0200 Subject: [PATCH 005/105] interface to type --- .../notifications/modal/document-notifications-modal.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts index a83d7da494..77ad2fbcb5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/notifications/modal/document-notifications-modal.element.ts @@ -9,7 +9,7 @@ import { css, customElement, html, repeat, state } from '@umbraco-cms/backoffice import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -interface UmbDocumentNotificationSettings extends GetDocumentByIdNotificationsResponse {} +type UmbDocumentNotificationSettings = GetDocumentByIdNotificationsResponse; @customElement('umb-document-notifications-modal') export class UmbDocumentNotificationsModalElement extends UmbModalBaseElement< From 5ab45884b8f121b7f8af1522c20fbe337a469780 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 07:24:56 +0200 Subject: [PATCH 006/105] register member management menu --- .../src/packages/members/manifests.ts | 5 ++-- .../src/packages/members/section/constants.ts | 1 + .../src/packages/members/section/index.ts | 1 + .../src/packages/members/section/manifests.ts | 19 +++++++++++---- .../members/section/menu/constants.ts | 1 + .../packages/members/section/menu/index.ts | 1 + .../members/section/menu/manifests.ts | 9 ++++++++ .../src/packages/members/section/paths.ts | 7 ++++++ .../members/section/sidebar-app/index.ts | 1 + .../members/section/sidebar-app/manifests.ts | 23 +++++++++++++++++++ 10 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/menu/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/menu/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/menu/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/paths.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/manifests.ts index c5d00784c1..53aac2298d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/manifests.ts @@ -1,7 +1,8 @@ import { manifests as memberGroupManifests } from './member-group/manifests.js'; import { manifests as memberManifests } from './member/manifests.js'; -import { manifests as memberSectionManifests } from './member-section/manifests.js'; import { manifests as memberTypeManifests } from './member-type/manifests.js'; +import { manifests as sectionManifests } from './section/manifests.js'; + import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; import './member/components/index.js'; @@ -10,6 +11,6 @@ import './member-group/components/index.js'; export const manifests: Array = [ ...memberGroupManifests, ...memberManifests, - ...memberSectionManifests, ...memberTypeManifests, + ...sectionManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/constants.ts new file mode 100644 index 0000000000..afe1a32f6d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/constants.ts @@ -0,0 +1 @@ +export const UMB_MEMBER_MANAGEMENT_SECTION_ALIAS = 'Umb.Section.Members'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/index.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/index.ts new file mode 100644 index 0000000000..4f07201dcf --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/index.ts @@ -0,0 +1 @@ +export * from './constants.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts index b1563a290b..8b1493ab85 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/manifests.ts @@ -1,8 +1,15 @@ -import type { ManifestSection, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_MEMBER_MANAGEMENT_SECTION_ALIAS } from './constants.js'; +import { manifests as sectionSidebarAppManifests } from './sidebar-app/manifests.js'; +import { manifests as menuManifests } from './menu/manifests.js'; +import type { + ManifestSection, + ManifestTypes, + UmbBackofficeManifestKind, +} from '@umbraco-cms/backoffice/extension-registry'; const section: ManifestSection = { type: 'section', - alias: 'Umb.Section.Members', + alias: UMB_MEMBER_MANAGEMENT_SECTION_ALIAS, name: 'Members Section', weight: 500, meta: { @@ -12,9 +19,13 @@ const section: ManifestSection = { conditions: [ { alias: 'Umb.Condition.SectionUserPermission', - match: 'Umb.Section.Members', + match: UMB_MEMBER_MANAGEMENT_SECTION_ALIAS, }, ], }; -export const manifests: Array = [section]; +export const manifests: Array = [ + section, + ...sectionSidebarAppManifests, + ...menuManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/constants.ts new file mode 100644 index 0000000000..c90a996f52 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/constants.ts @@ -0,0 +1 @@ +export const UMB_MEMBER_MANAGEMENT_MENU_ALIAS = 'Umb.Menu.MemberManagement'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/index.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/index.ts new file mode 100644 index 0000000000..4f07201dcf --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/index.ts @@ -0,0 +1 @@ +export * from './constants.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/manifests.ts new file mode 100644 index 0000000000..36cbd68c00 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/menu/manifests.ts @@ -0,0 +1,9 @@ +import { UMB_MEMBER_MANAGEMENT_MENU_ALIAS } from './constants.js'; + +export const manifests = [ + { + type: 'menu', + alias: UMB_MEMBER_MANAGEMENT_MENU_ALIAS, + name: 'Member Management Menu', + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/paths.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/paths.ts new file mode 100644 index 0000000000..27a89f53ce --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/paths.ts @@ -0,0 +1,7 @@ +import { UMB_SECTION_PATH_PATTERN } from '@umbraco-cms/backoffice/section'; + +export const UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME = 'member-management'; + +export const UMB_MEMBER_MANAGEMENT_SECTION_PATH = UMB_SECTION_PATH_PATTERN.generateAbsolute({ + sectionName: UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/index.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/index.ts new file mode 100644 index 0000000000..42f853e5be --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/index.ts @@ -0,0 +1 @@ +export * from '../constants.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/manifests.ts new file mode 100644 index 0000000000..b96519e9ac --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/section/sidebar-app/manifests.ts @@ -0,0 +1,23 @@ +import { UMB_MEMBER_MANAGEMENT_SECTION_ALIAS } from '../constants.js'; +import { UMB_MEMBER_MANAGEMENT_MENU_ALIAS } from '../menu/index.js'; +import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'sectionSidebarApp', + kind: 'menu', + alias: 'Umb.SectionSidebarApp.Menu.MemberManagement', + name: 'Member Management Menu Sidebar App', + weight: 100, + meta: { + label: '#treeHeaders_member', + menu: UMB_MEMBER_MANAGEMENT_MENU_ALIAS, + }, + conditions: [ + { + alias: 'Umb.Condition.SectionAlias', + match: UMB_MEMBER_MANAGEMENT_SECTION_ALIAS, + }, + ], + }, +]; From 6fd54ec2f2011a4d3693b6be826389ae1415effd Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 07:27:28 +0200 Subject: [PATCH 007/105] Register member menu item --- .../src/packages/members/member/manifests.ts | 2 ++ .../members/member/menu-item/manifests.ts | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/menu-item/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts index 1a80cef0a9..8d5355e021 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts @@ -1,6 +1,7 @@ import { manifests as collectionManifests } from './collection/manifests.js'; import { manifests as entityActionManifests } from './entity-actions/manifests.js'; import { manifests as memberPickerModalManifests } from './components/member-picker-modal/manifests.js'; +import { manifests as menuItemManifests } from './menu-item/manifests.js'; import { manifests as pickerManifests } from './picker/manifests.js'; import { manifests as propertyEditorManifests } from './property-editor/manifests.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; @@ -14,6 +15,7 @@ export const manifests: Array = [ ...collectionManifests, ...entityActionManifests, ...memberPickerModalManifests, + ...menuItemManifests, ...pickerManifests, ...propertyEditorManifests, ...repositoryManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/menu-item/manifests.ts new file mode 100644 index 0000000000..0304866916 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/menu-item/manifests.ts @@ -0,0 +1,18 @@ +import { UMB_MEMBER_MANAGEMENT_MENU_ALIAS } from '../../section/menu/constants.js'; +import { UMB_MEMBER_ROOT_ENTITY_TYPE } from '../entity.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'menuItem', + alias: 'Umb.MenuItem.Members', + name: 'Members Menu Item', + weight: 200, + meta: { + label: '#treeHeaders_member', + icon: 'icon-user', + entityType: UMB_MEMBER_ROOT_ENTITY_TYPE, + menus: [UMB_MEMBER_MANAGEMENT_MENU_ALIAS], + }, + }, +]; From e0a91620b62bde86dd49daed4cb7735142c557fc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 07:29:41 +0200 Subject: [PATCH 008/105] move member workspace into folder --- .../src/packages/members/member/manifests.ts | 2 +- .../packages/members/member/workspace/{ => member}/index.ts | 0 .../members/member/workspace/{ => member}/manifests.ts | 2 +- .../{ => member}/member-workspace-editor.element.ts | 2 +- .../{ => member}/member-workspace-split-view.element.ts | 0 .../{ => member}/member-workspace.context-token.ts | 0 .../workspace/{ => member}/member-workspace.context.ts | 6 +++--- .../member/member-workspace-view-member-info.element.ts | 2 +- .../views/member/member-workspace-view-member.element.ts | 2 +- .../member/workspace/{ => member}/views/member/utils.ts | 0 10 files changed, 8 insertions(+), 8 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/manifests.ts (97%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/member-workspace-editor.element.ts (98%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/member-workspace-split-view.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/member-workspace.context-token.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/member-workspace.context.ts (98%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/views/member/member-workspace-view-member-info.element.ts (99%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/views/member/member-workspace-view-member.element.ts (99%) rename src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/{ => member}/views/member/utils.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts index 8d5355e021..35ec8d5c58 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts @@ -7,7 +7,7 @@ import { manifests as propertyEditorManifests } from './property-editor/manifest import { manifests as repositoryManifests } from './repository/manifests.js'; import { manifests as searchManifests } from './search/manifests.js'; import { manifests as sectionViewManifests } from './section-view/manifests.js'; -import { manifests as workspaceManifests } from './workspace/manifests.js'; +import { manifests as workspaceManifests } from './workspace/member/manifests.js'; import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/index.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/manifests.ts similarity index 97% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/manifests.ts index c47595c8fc..fe71c5921d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/manifests.ts @@ -1,4 +1,4 @@ -import { UMB_MEMBER_ENTITY_TYPE } from '../entity.js'; +import { UMB_MEMBER_ENTITY_TYPE } from '../../entity.js'; import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-editor.element.ts similarity index 98% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace-editor.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-editor.element.ts index 5bbe5e974e..70aa290688 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-editor.element.ts @@ -1,4 +1,4 @@ -import type { UmbMemberVariantOptionModel } from '../types.js'; +import type { UmbMemberVariantOptionModel } from '../../types.js'; import { UMB_MEMBER_WORKSPACE_CONTEXT } from './member-workspace.context-token.js'; import { UmbMemberWorkspaceSplitViewElement } from './member-workspace-split-view.element.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace-split-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace-split-view.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context-token.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace.context-token.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context-token.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context.ts similarity index 98% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace.context.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context.ts index f71c0c7b3c..fce275292b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context.ts @@ -1,6 +1,6 @@ -import { UmbMemberDetailRepository } from '../repository/index.js'; -import type { UmbMemberDetailModel, UmbMemberVariantModel, UmbMemberVariantOptionModel } from '../types.js'; -import { UmbMemberPropertyDatasetContext } from '../property-dataset-context/member-property-dataset-context.js'; +import { UmbMemberDetailRepository } from '../../repository/index.js'; +import type { UmbMemberDetailModel, UmbMemberVariantModel, UmbMemberVariantOptionModel } from '../../types.js'; +import { UmbMemberPropertyDatasetContext } from '../../property-dataset-context/member-property-dataset-context.js'; import { UMB_MEMBER_WORKSPACE_ALIAS } from './manifests.js'; import { UmbMemberWorkspaceEditorElement } from './member-workspace-editor.element.js'; import { type UmbMemberTypeDetailModel, UmbMemberTypeDetailRepository } from '@umbraco-cms/backoffice/member-type'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/member-workspace-view-member-info.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member-info.element.ts similarity index 99% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/member-workspace-view-member-info.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member-info.element.ts index 4c3d0414c1..eb9c32af01 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/member-workspace-view-member-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member-info.element.ts @@ -1,6 +1,6 @@ // import { UMB_COMPOSITION_PICKER_MODAL, type UmbCompositionPickerModalData } from '../../../modals/index.js'; import { UMB_MEMBER_WORKSPACE_CONTEXT } from '../../member-workspace.context-token.js'; -import { UmbMemberKind, type UmbMemberKindType } from '../../../utils/index.js'; +import { UmbMemberKind, type UmbMemberKindType } from '../../../../utils/index.js'; import { TimeFormatOptions } from './utils.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/member-workspace-view-member.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member.element.ts similarity index 99% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/member-workspace-view-member.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member.element.ts index 8573a9b9c4..e313f80f6d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/member-workspace-view-member.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/member-workspace-view-member.element.ts @@ -1,5 +1,5 @@ import { UMB_MEMBER_WORKSPACE_CONTEXT } from '../../member-workspace.context-token.js'; -import type { UmbMemberDetailModel } from '../../../types.js'; +import type { UmbMemberDetailModel } from '../../../../types.js'; import { TimeFormatOptions } from './utils.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, state, when } from '@umbraco-cms/backoffice/external/lit'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/utils.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/utils.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/member/utils.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/views/member/utils.ts From a3b619592880a9dc3d1cf5c3ea18bdaae1417e45 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 07:31:17 +0200 Subject: [PATCH 009/105] add manifest files --- .../src/packages/members/member/manifests.ts | 2 +- .../src/packages/members/member/workspace/manifests.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts index 35ec8d5c58..8d5355e021 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts @@ -7,7 +7,7 @@ import { manifests as propertyEditorManifests } from './property-editor/manifest import { manifests as repositoryManifests } from './repository/manifests.js'; import { manifests as searchManifests } from './search/manifests.js'; import { manifests as sectionViewManifests } from './section-view/manifests.js'; -import { manifests as workspaceManifests } from './workspace/member/manifests.js'; +import { manifests as workspaceManifests } from './workspace/manifests.js'; import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts new file mode 100644 index 0000000000..50b3efff3e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts @@ -0,0 +1,4 @@ +import { manifests as memberManifests } from './member/manifests.js'; +import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [...memberManifests]; From 81be1b9e3078bf78e21139f0597ea1b2f58b4501 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 07:37:34 +0200 Subject: [PATCH 010/105] change section view to workspace --- .../src/packages/members/member/manifests.ts | 2 - .../members/member/section-view/manifests.ts | 24 -------- .../member-section-view.element.ts | 61 ------------------- .../members/member/workspace/manifests.ts | 3 +- .../member/workspace/member-root/manifests.ts | 14 +++++ .../member-root-workspace.element.ts | 31 ++++++++++ 6 files changed, 47 insertions(+), 88 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/manifests.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/member-section-view.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts index 8d5355e021..a56f825196 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/manifests.ts @@ -6,7 +6,6 @@ import { manifests as pickerManifests } from './picker/manifests.js'; import { manifests as propertyEditorManifests } from './property-editor/manifests.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; import { manifests as searchManifests } from './search/manifests.js'; -import { manifests as sectionViewManifests } from './section-view/manifests.js'; import { manifests as workspaceManifests } from './workspace/manifests.js'; import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; @@ -20,6 +19,5 @@ export const manifests: Array = [ ...propertyEditorManifests, ...repositoryManifests, ...searchManifests, - ...sectionViewManifests, ...workspaceManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/manifests.ts deleted file mode 100644 index da16766f81..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/manifests.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { ManifestSectionView, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; - -const sectionsViews: Array = [ - { - type: 'sectionView', - alias: 'Umb.SectionView.Member', - name: 'Member Section View', - js: () => import('./member-section-view.element.js'), - weight: 200, - meta: { - label: '#treeHeaders_member', - pathname: 'members', - icon: 'icon-user', - }, - conditions: [ - { - alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Members', - }, - ], - }, -]; - -export const manifests: Array = [...sectionsViews]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/member-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/member-section-view.element.ts deleted file mode 100644 index c5ed738500..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/section-view/member-section-view.element.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { UMB_MEMBER_COLLECTION_ALIAS } from '../collection/manifests.js'; -import { UMB_MEMBER_ENTITY_TYPE } from '../entity.js'; -import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import { css, html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { UmbRoute } from '@umbraco-cms/backoffice/router'; - -@customElement('umb-member-section-view') -export class UmbMemberSectionViewElement extends UmbLitElement { - #routes: UmbRoute[] = [ - { - path: 'collection', - component: () => { - const element = document.createElement('umb-collection'); - element.setAttribute('alias', UMB_MEMBER_COLLECTION_ALIAS); - return element; - }, - }, - { - path: 'member', - component: () => { - const element = document.createElement('umb-workspace'); - element.setAttribute('entityType', UMB_MEMBER_ENTITY_TYPE); - return element; - }, - }, - { - path: '', - redirectTo: 'collection', - }, - { - path: `**`, - component: async () => (await import('@umbraco-cms/backoffice/router')).UmbRouteNotFoundElement, - }, - ]; - - override render() { - return html``; - } - - static override styles = [ - UmbTextStyles, - css` - :host { - height: 100%; - } - - #router-slot { - height: calc(100% - var(--umb-header-layout-height)); - } - `, - ]; -} - -export default UmbMemberSectionViewElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-member-section-view': UmbMemberSectionViewElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts index 50b3efff3e..f89d6870b8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts @@ -1,4 +1,5 @@ import { manifests as memberManifests } from './member/manifests.js'; +import { manifests as memberRootManifests } from './member-root/manifests.js'; import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests: Array = [...memberManifests]; +export const manifests: Array = [...memberManifests, ...memberRootManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts new file mode 100644 index 0000000000..62b3d161d0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts @@ -0,0 +1,14 @@ +import { UMB_MEMBER_ROOT_ENTITY_TYPE } from '../../entity.js'; +import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'workspace', + alias: 'Umb.Workspace.MemberRoot', + name: 'Member Root Workspace View', + element: () => import('./member-root-workspace.element.js'), + meta: { + entityType: UMB_MEMBER_ROOT_ENTITY_TYPE, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts new file mode 100644 index 0000000000..7095f17e2d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts @@ -0,0 +1,31 @@ +import { UMB_MEMBER_COLLECTION_ALIAS } from '../../collection/index.js'; +import { UMB_MEMBER_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; +import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; + +const elementName = 'umb-member-root-workspace'; +@customElement(elementName) +export class UmbMemberRootWorkspaceElement extends UmbLitElement { + constructor() { + super(); + // TODO: this.should happen automatically + const entityContext = new UmbEntityContext(this); + entityContext.setEntityType(UMB_MEMBER_ROOT_ENTITY_TYPE); + entityContext.setUnique(null); + } + + override render() { + return html` + ; + `; + } +} + +export { UmbMemberRootWorkspaceElement as element }; + +declare global { + interface HTMLElementTagNameMap { + [elementName]: UmbMemberRootWorkspaceElement; + } +} From f1f12d4ee30cf4d8a5875ed8598d00d0669a116e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 12:15:30 +0200 Subject: [PATCH 011/105] add paths --- .../src/packages/members/member/paths.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/paths.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/paths.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/paths.ts new file mode 100644 index 0000000000..0686227fe9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/paths.ts @@ -0,0 +1,13 @@ +import { UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME } from '../section/paths.js'; +import { UMB_MEMBER_ENTITY_TYPE, UMB_MEMBER_ROOT_ENTITY_TYPE } from './entity.js'; +import { UMB_WORKSPACE_PATH_PATTERN } from '@umbraco-cms/backoffice/workspace'; + +export const UMB_MEMBER_WORKSPACE_PATH = UMB_WORKSPACE_PATH_PATTERN.generateAbsolute({ + sectionName: UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME, + entityType: UMB_MEMBER_ENTITY_TYPE, +}); + +export const UMB_MEMBER_ROOT_WORKSPACE_PATH = UMB_WORKSPACE_PATH_PATTERN.generateAbsolute({ + sectionName: UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME, + entityType: UMB_MEMBER_ROOT_ENTITY_TYPE, +}); From f8a2fe883d3bf6b79a8427ee40c070a311c43e97 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 12:15:39 +0200 Subject: [PATCH 012/105] use path for back button --- .../workspace/member/member-workspace-split-view.element.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts index af378926ed..57a751eeac 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts @@ -3,6 +3,7 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, nothing, customElement, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import type { ActiveVariant } from '@umbraco-cms/backoffice/workspace'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import { UMB_MEMBER_ROOT_WORKSPACE_PATH } from '../../paths.js'; @customElement('umb-member-workspace-split-view') export class UmbMemberWorkspaceSplitViewElement extends UmbLitElement { @@ -12,8 +13,6 @@ export class UmbMemberWorkspaceSplitViewElement extends UmbLitElement { @state() _variants?: Array; - #BACK_PATH = '/section/member-management/view/members'; - constructor() { super(); @@ -45,7 +44,7 @@ export class UmbMemberWorkspaceSplitViewElement extends UmbLitElement { (view) => html` From 10d7b147a29df256fd6dbd228cd1d285496e61f2 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 12:19:15 +0200 Subject: [PATCH 013/105] register member group menu item --- .../packages/members/member-group/manifests.ts | 3 +++ .../member-group/menu-item/manifests.ts | 18 ++++++++++++++++++ .../member-workspace-split-view.element.ts | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/menu-item/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts index b0e74f6012..ffb627fc38 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts @@ -1,16 +1,19 @@ import { manifests as collectionManifests } from './collection/manifests.js'; import { manifests as entityActionManifests } from './entity-actions/manifests.js'; import { manifests as memberGroupPickerModalManifests } from './components/member-group-picker-modal/manifests.js'; +import { manifests as menuItemManifests } from './menu-item/manifests.js'; import { manifests as propertyEditorManifests } from './property-editor/manifests.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; import { manifests as sectionViewManifests } from './section-view/manifests.js'; import { manifests as workspaceManifests } from './workspace/manifests.js'; + import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ ...collectionManifests, ...entityActionManifests, ...memberGroupPickerModalManifests, + ...menuItemManifests, ...propertyEditorManifests, ...repositoryManifests, ...sectionViewManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/menu-item/manifests.ts new file mode 100644 index 0000000000..a3d73b4191 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/menu-item/manifests.ts @@ -0,0 +1,18 @@ +import { UMB_MEMBER_MANAGEMENT_MENU_ALIAS } from '../../section/menu/constants.js'; +import { UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE } from '../entity.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'menuItem', + alias: 'Umb.MenuItem.MemberGroups', + name: 'Member Groups Menu Item', + weight: 100, + meta: { + label: '#treeHeaders_memberGroups', + icon: 'icon-users', + entityType: UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE, + menus: [UMB_MEMBER_MANAGEMENT_MENU_ALIAS], + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts index 57a751eeac..978d3f89c3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace-split-view.element.ts @@ -1,9 +1,9 @@ +import { UMB_MEMBER_ROOT_WORKSPACE_PATH } from '../../paths.js'; import { UMB_MEMBER_WORKSPACE_CONTEXT } from './member-workspace.context-token.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, nothing, customElement, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import type { ActiveVariant } from '@umbraco-cms/backoffice/workspace'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import { UMB_MEMBER_ROOT_WORKSPACE_PATH } from '../../paths.js'; @customElement('umb-member-workspace-split-view') export class UmbMemberWorkspaceSplitViewElement extends UmbLitElement { From cddd556af8899c1435fb1df9e87eeea7862f7a20 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 12:27:39 +0200 Subject: [PATCH 014/105] add root workspace --- .../members/member-group/manifests.ts | 6 +- .../member-group/section-view/manifests.ts | 24 ------- .../member-group-section-view.element.ts | 61 ---------------- .../member-group/workspace/manifests.ts | 69 ++----------------- .../workspace/member-group-root/manifests.ts | 14 ++++ .../member-group-root-workspace.element.ts | 21 ++++++ .../workspace/{ => member-group}/index.ts | 0 .../workspace/member-group/manifests.ts | 65 +++++++++++++++++ .../member-group-workspace-editor.element.ts | 0 .../member-group-workspace.context-token.ts | 0 .../member-group-workspace.context.ts | 4 +- ...member-type-workspace-view-info.element.ts | 0 12 files changed, 110 insertions(+), 154 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/manifests.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/member-group-section-view.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts rename src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/{ => member-group}/index.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/{ => member-group}/member-group-workspace-editor.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/{ => member-group}/member-group-workspace.context-token.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/{ => member-group}/member-group-workspace.context.ts (96%) rename src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/{ => member-group}/views/info/member-type-workspace-view-info.element.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts index ffb627fc38..a5b05512b9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/manifests.ts @@ -4,18 +4,16 @@ import { manifests as memberGroupPickerModalManifests } from './components/membe import { manifests as menuItemManifests } from './menu-item/manifests.js'; import { manifests as propertyEditorManifests } from './property-editor/manifests.js'; import { manifests as repositoryManifests } from './repository/manifests.js'; -import { manifests as sectionViewManifests } from './section-view/manifests.js'; import { manifests as workspaceManifests } from './workspace/manifests.js'; -import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests: Array = [ +export const manifests: Array = [ ...collectionManifests, ...entityActionManifests, ...memberGroupPickerModalManifests, ...menuItemManifests, ...propertyEditorManifests, ...repositoryManifests, - ...sectionViewManifests, ...workspaceManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/manifests.ts deleted file mode 100644 index 823200d358..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/manifests.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { ManifestSectionView, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; - -const sectionsViews: Array = [ - { - type: 'sectionView', - alias: 'Umb.SectionView.MemberGroup', - name: 'Member Group Section View', - js: () => import('./member-group-section-view.element.js'), - weight: 100, - meta: { - label: '#treeHeaders_memberGroups', - pathname: 'member-groups', - icon: 'icon-users', - }, - conditions: [ - { - alias: 'Umb.Condition.SectionAlias', - match: 'Umb.Section.Members', - }, - ], - }, -]; - -export const manifests: Array = [...sectionsViews]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/member-group-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/member-group-section-view.element.ts deleted file mode 100644 index b4809053c8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/section-view/member-group-section-view.element.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { UMB_MEMBER_GROUP_COLLECTION_ALIAS } from '../collection/manifests.js'; -import { UMB_MEMBER_GROUP_ENTITY_TYPE } from '../entity.js'; -import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import { css, html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { UmbRoute } from '@umbraco-cms/backoffice/router'; - -@customElement('umb-member-group-section-view') -export class UmbMemberGroupSectionViewElement extends UmbLitElement { - #routes: UmbRoute[] = [ - { - path: 'collection', - component: () => { - const element = document.createElement('umb-collection'); - element.setAttribute('alias', UMB_MEMBER_GROUP_COLLECTION_ALIAS); - return element; - }, - }, - { - path: 'member-group', - component: () => { - const element = document.createElement('umb-workspace'); - element.setAttribute('entityType', UMB_MEMBER_GROUP_ENTITY_TYPE); - return element; - }, - }, - { - path: '', - redirectTo: 'collection', - }, - { - path: `**`, - component: async () => (await import('@umbraco-cms/backoffice/router')).UmbRouteNotFoundElement, - }, - ]; - - override render() { - return html``; - } - - static override styles = [ - UmbTextStyles, - css` - :host { - height: 100%; - } - - #router-slot { - height: calc(100% - var(--umb-header-layout-height)); - } - `, - ]; -} - -export default UmbMemberGroupSectionViewElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-member-group-section-view': UmbMemberGroupSectionViewElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts index 41de3338ba..14b672a263 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts @@ -1,65 +1,8 @@ -import { UMB_MEMBER_GROUP_ENTITY_TYPE } from '../entity.js'; -import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; -import type { - ManifestWorkspaces, - ManifestWorkspaceActions, - ManifestWorkspaceView, - ManifestTypes, -} from '@umbraco-cms/backoffice/extension-registry'; +import { manifests as memberGroupManifests } from './member-group/manifests.js'; +import { manifests as memberGroupRootManifests } from './member-group-root/manifests.js'; +import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; -export const UMB_MEMBER_GROUP_WORKSPACE_ALIAS = 'Umb.Workspace.MemberGroup'; - -const workspace: ManifestWorkspaces = { - type: 'workspace', - kind: 'routable', - alias: UMB_MEMBER_GROUP_WORKSPACE_ALIAS, - name: 'MemberGroup Workspace', - api: () => import('./member-group-workspace.context.js'), - meta: { - entityType: UMB_MEMBER_GROUP_ENTITY_TYPE, - }, -}; - -const workspaceActions: Array = [ - { - type: 'workspaceAction', - kind: 'default', - alias: 'Umb.WorkspaceAction.MemberGroup.Save', - name: 'Save Member Group Workspace Action', - api: UmbSubmitWorkspaceAction, - meta: { - label: '#buttons_save', - look: 'primary', - color: 'positive', - }, - conditions: [ - { - alias: 'Umb.Condition.WorkspaceAlias', - match: UMB_MEMBER_GROUP_WORKSPACE_ALIAS, - }, - ], - }, +export const manifests: Array = [ + ...memberGroupManifests, + ...memberGroupRootManifests, ]; - -export const workspaceViews: Array = [ - { - type: 'workspaceView', - alias: 'Umb.WorkspaceView.Member.Info', - name: 'Member Workspace info View', - js: () => import('./views/info/member-type-workspace-view-info.element.js'), - weight: 300, - meta: { - label: '#general_info', - pathname: 'info', - icon: 'icon-document', - }, - conditions: [ - { - alias: 'Umb.Condition.WorkspaceAlias', - match: UMB_MEMBER_GROUP_WORKSPACE_ALIAS, - }, - ], - }, -]; - -export const manifests: Array = [workspace, ...workspaceActions, ...workspaceViews]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts new file mode 100644 index 0000000000..bcc1843ad2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts @@ -0,0 +1,14 @@ +import { UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE } from '../../entity.js'; +import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'workspace', + alias: 'Umb.Workspace.MemberGroupRoot', + name: 'Member Group Root Workspace View', + element: () => import('./member-group-root-workspace.element.js'), + meta: { + entityType: UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts new file mode 100644 index 0000000000..5a600d7fc9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts @@ -0,0 +1,21 @@ +import { UMB_MEMBER_GROUP_COLLECTION_ALIAS } from '../../collection/index.js'; +import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; + +const elementName = 'umb-member-group-root-workspace'; +@customElement(elementName) +export class UmbMemberGroupRootWorkspaceElement extends UmbLitElement { + override render() { + return html` + ; + `; + } +} + +export { UmbMemberGroupRootWorkspaceElement as element }; + +declare global { + interface HTMLElementTagNameMap { + [elementName]: UmbMemberGroupRootWorkspaceElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/index.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/manifests.ts new file mode 100644 index 0000000000..307f83c470 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/manifests.ts @@ -0,0 +1,65 @@ +import { UMB_MEMBER_GROUP_ENTITY_TYPE } from '../../entity.js'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { + ManifestWorkspaces, + ManifestWorkspaceActions, + ManifestWorkspaceView, + ManifestTypes, +} from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_MEMBER_GROUP_WORKSPACE_ALIAS = 'Umb.Workspace.MemberGroup'; + +const workspace: ManifestWorkspaces = { + type: 'workspace', + kind: 'routable', + alias: UMB_MEMBER_GROUP_WORKSPACE_ALIAS, + name: 'MemberGroup Workspace', + api: () => import('./member-group-workspace.context.js'), + meta: { + entityType: UMB_MEMBER_GROUP_ENTITY_TYPE, + }, +}; + +const workspaceActions: Array = [ + { + type: 'workspaceAction', + kind: 'default', + alias: 'Umb.WorkspaceAction.MemberGroup.Save', + name: 'Save Member Group Workspace Action', + api: UmbSubmitWorkspaceAction, + meta: { + label: '#buttons_save', + look: 'primary', + color: 'positive', + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_MEMBER_GROUP_WORKSPACE_ALIAS, + }, + ], + }, +]; + +export const workspaceViews: Array = [ + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.Member.Info', + name: 'Member Workspace info View', + js: () => import('./views/info/member-type-workspace-view-info.element.js'), + weight: 300, + meta: { + label: '#general_info', + pathname: 'info', + icon: 'icon-document', + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_MEMBER_GROUP_WORKSPACE_ALIAS, + }, + ], + }, +]; + +export const manifests: Array = [workspace, ...workspaceActions, ...workspaceViews]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace-editor.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-workspace-editor.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace-editor.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace.context-token.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-workspace.context-token.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace.context-token.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace.context.ts similarity index 96% rename from src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-workspace.context.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace.context.ts index 1258127044..3534ed8daf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace.context.ts @@ -1,5 +1,5 @@ -import { UmbMemberGroupDetailRepository } from '../repository/index.js'; -import type { UmbMemberGroupDetailModel } from '../types.js'; +import { UmbMemberGroupDetailRepository } from '../../repository/index.js'; +import type { UmbMemberGroupDetailModel } from '../../types.js'; import { UMB_MEMBER_GROUP_WORKSPACE_ALIAS } from './manifests.js'; import { UmbMemberGroupWorkspaceEditorElement } from './member-group-workspace-editor.element.js'; import { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/views/info/member-type-workspace-view-info.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/views/info/member-type-workspace-view-info.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/views/info/member-type-workspace-view-info.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/views/info/member-type-workspace-view-info.element.ts From 9c3933372bf84bf94749b4ff582a77cabede61f4 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 13 Sep 2024 12:35:02 +0200 Subject: [PATCH 015/105] set up paths --- .../src/packages/members/member-group/paths.ts | 13 +++++++++++++ .../member-group-workspace-editor.element.ts | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/paths.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/paths.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/paths.ts new file mode 100644 index 0000000000..4a2a2b21a3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/paths.ts @@ -0,0 +1,13 @@ +import { UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME } from '../section/paths.js'; +import { UMB_MEMBER_GROUP_ENTITY_TYPE, UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE } from './entity.js'; +import { UMB_WORKSPACE_PATH_PATTERN } from '@umbraco-cms/backoffice/workspace'; + +export const UMB_MEMBER_GROUP_WORKSPACE_PATH = UMB_WORKSPACE_PATH_PATTERN.generateAbsolute({ + sectionName: UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME, + entityType: UMB_MEMBER_GROUP_ENTITY_TYPE, +}); + +export const UMB_MEMBER_GROUP_ROOT_WORKSPACE_PATH = UMB_WORKSPACE_PATH_PATTERN.generateAbsolute({ + sectionName: UMB_MEMBER_MANAGEMENT_SECTION_PATHNAME, + entityType: UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace-editor.element.ts index 0f7ec568cc..2ff5c6f119 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group/member-group-workspace-editor.element.ts @@ -1,3 +1,4 @@ +import { UMB_MEMBER_GROUP_ROOT_WORKSPACE_PATH } from '../../paths.js'; import { UMB_MEMBER_GROUP_WORKSPACE_CONTEXT } from './member-group-workspace.context-token.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, property, state, nothing } from '@umbraco-cms/backoffice/external/lit'; @@ -50,7 +51,7 @@ export class UmbMemberGroupWorkspaceEditorElement extends UmbLitElement { override render() { return html` - + ${this.#renderActions()} ` : nothing; } @@ -433,6 +448,7 @@ export class UmbContentTypeDesignEditorPropertyElement extends UmbLitElement { .types > div uui-icon, .inherited uui-icon { vertical-align: sub; + margin-right: var(--uui-size-space-1); } .inherited { @@ -446,6 +462,7 @@ export class UmbContentTypeDesignEditorPropertyElement extends UmbLitElement { top: var(--uui-size-space-2); left: var(--uui-size-space-2); display: flex; + flex-flow: wrap; gap: var(--uui-size-space-2); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-type/workspace/views/settings/property-workspace-view-settings.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-type/workspace/views/settings/property-workspace-view-settings.element.ts index 21f0d5d93b..26cbe9cdcb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-type/workspace/views/settings/property-workspace-view-settings.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-type/workspace/views/settings/property-workspace-view-settings.element.ts @@ -61,6 +61,9 @@ export class UmbPropertyTypeWorkspaceViewSettingsElement extends UmbLitElement i @query('#alias-input') private _aliasInput!: UUIInputLockElement; + @state() + private _entityType?: string; + constructor() { super(); @@ -82,6 +85,7 @@ export class UmbPropertyTypeWorkspaceViewSettingsElement extends UmbLitElement i this.consumeContext(UMB_CONTENT_TYPE_WORKSPACE_CONTEXT, (instance) => { this.observe(instance.variesByCulture, (variesByCulture) => (this._contentTypeVariesByCulture = variesByCulture)); this.observe(instance.variesBySegment, (variesBySegment) => (this._contentTypeVariesBySegment = variesBySegment)); + this._entityType = instance.getEntityType(); }).passContextAliasMatches(); } @@ -142,6 +146,20 @@ export class UmbPropertyTypeWorkspaceViewSettingsElement extends UmbLitElement i }); } + #onToggleShowOnMemberProfile(e: UUIBooleanInputEvent) { + const memberCanEdit = this._data?.visibility?.memberCanEdit ?? false; + this.updateValue({ visibility: { memberCanView: e.target.checked, memberCanEdit } }); + } + + #onToggleMemberCanEdit(e: UUIBooleanInputEvent) { + const memberCanView = this._data?.visibility?.memberCanView ?? false; + this.updateValue({ visibility: { memberCanEdit: e.target.checked, memberCanView } }); + } + + #onToggleIsSensitiveData(e: UUIBooleanInputEvent) { + this.updateValue({ isSensitive: e.target.checked }); + } + #onToggleAliasLock() { this._aliasLocked = !this._aliasLocked; if (this._aliasLocked && !this._data?.alias) { @@ -255,10 +273,40 @@ export class UmbPropertyTypeWorkspaceViewSettingsElement extends UmbLitElement i
${this.#renderAlignLeftIcon()} ${this.#renderAlignTopIcon()}
+ ${this.#renderMemberTypeOptions()} `; } + #renderMemberTypeOptions() { + if (this._entityType !== 'member-type') return nothing; + return html`
+
+ + Options + +
+ +
${this.localize.term('contentTypeEditor_showOnMemberProfileDescription')}
+ + +
${this.localize.term('contentTypeEditor_memberCanEditDescription')}
+ + +
${this.localize.term('contentTypeEditor_isSensitiveDataDescription')}
+
+
`; + } + #renderAlignLeftIcon() { return html`