diff --git a/package-lock.json b/package-lock.json index ad46e3c129..ecfa8c3545 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "@types/diff": "^5.2.1", "@types/dompurify": "^3.0.5", "@types/uuid": "^9.0.8", - "@umbraco-ui/uui": "1.8.1", + "@umbraco-ui/uui": "1.8.2", "@umbraco-ui/uui-css": "1.8.0", "base64-js": "^1.5.1", "diff": "^5.2.0", @@ -6665,16 +6665,16 @@ "link": true }, "node_modules/@umbraco-ui/uui": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.8.1.tgz", - "integrity": "sha512-KWKtuSQdxeCbGH2gezumuFysf+33q2TZy4h85zCABFvHgOeeR1EB7/S2jUNGoe2IOqYLktYl0GdQszfmyFN1dg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.8.2.tgz", + "integrity": "sha512-uJvF+YcqwivhoUJnVpT7Na3/8toyfsnBj34/DVh97BIMv7gsWL+ijQ/6gS5VlDMZKEMeK74DtnwzdDY3ahL67Q==", "dependencies": { "@umbraco-ui/uui-action-bar": "1.8.0", "@umbraco-ui/uui-avatar": "1.8.0", "@umbraco-ui/uui-avatar-group": "1.8.0", "@umbraco-ui/uui-badge": "1.8.0", "@umbraco-ui/uui-base": "1.8.0", - "@umbraco-ui/uui-boolean-input": "1.8.0", + "@umbraco-ui/uui-boolean-input": "1.8.2", "@umbraco-ui/uui-box": "1.8.0", "@umbraco-ui/uui-breadcrumbs": "1.8.0", "@umbraco-ui/uui-button": "1.8.0", @@ -6683,10 +6683,10 @@ "@umbraco-ui/uui-card": "1.8.0", "@umbraco-ui/uui-card-block-type": "1.8.0", "@umbraco-ui/uui-card-content-node": "1.8.0", - "@umbraco-ui/uui-card-media": "1.8.0", + "@umbraco-ui/uui-card-media": "1.8.2", "@umbraco-ui/uui-card-user": "1.8.0", "@umbraco-ui/uui-caret": "1.8.0", - "@umbraco-ui/uui-checkbox": "1.8.0", + "@umbraco-ui/uui-checkbox": "1.8.2", "@umbraco-ui/uui-color-area": "1.8.0", "@umbraco-ui/uui-color-picker": "1.8.0", "@umbraco-ui/uui-color-slider": "1.8.0", @@ -6707,14 +6707,14 @@ "@umbraco-ui/uui-icon-registry-essential": "1.8.0", "@umbraco-ui/uui-input": "1.8.0", "@umbraco-ui/uui-input-file": "1.8.0", - "@umbraco-ui/uui-input-lock": "1.8.0", + "@umbraco-ui/uui-input-lock": "1.8.2", "@umbraco-ui/uui-input-password": "1.8.0", "@umbraco-ui/uui-keyboard-shortcut": "1.8.0", "@umbraco-ui/uui-label": "1.8.0", "@umbraco-ui/uui-loader": "1.8.0", "@umbraco-ui/uui-loader-bar": "1.8.0", "@umbraco-ui/uui-loader-circle": "1.8.0", - "@umbraco-ui/uui-menu-item": "1.8.0", + "@umbraco-ui/uui-menu-item": "1.8.2", "@umbraco-ui/uui-modal": "1.8.0", "@umbraco-ui/uui-pagination": "1.8.0", "@umbraco-ui/uui-popover": "1.8.0", @@ -6733,7 +6733,7 @@ "@umbraco-ui/uui-ref-node-user": "1.8.0", "@umbraco-ui/uui-scroll-container": "1.8.0", "@umbraco-ui/uui-select": "1.8.0", - "@umbraco-ui/uui-slider": "1.8.0", + "@umbraco-ui/uui-slider": "1.8.2", "@umbraco-ui/uui-symbol-expand": "1.8.0", "@umbraco-ui/uui-symbol-file": "1.8.0", "@umbraco-ui/uui-symbol-file-dropzone": "1.8.0", @@ -6749,7 +6749,7 @@ "@umbraco-ui/uui-toast-notification": "1.8.0", "@umbraco-ui/uui-toast-notification-container": "1.8.0", "@umbraco-ui/uui-toast-notification-layout": "1.8.0", - "@umbraco-ui/uui-toggle": "1.8.0", + "@umbraco-ui/uui-toggle": "1.8.2", "@umbraco-ui/uui-visually-hidden": "1.8.0" } }, @@ -6796,9 +6796,9 @@ } }, "node_modules/@umbraco-ui/uui-boolean-input": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.8.0.tgz", - "integrity": "sha512-6GqzuALrzrJIWIAdsYAau9t3sxYL0P+OKSKpcvj+4/DkbhbWjk54CtVFyWBAzYa9LhZHauGl2VYzxSvmGWARSA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.8.2.tgz", + "integrity": "sha512-qXHoMJKuszaAK5EYSDk1ZoA64NpIejOLwXJXDML0m4ci9G2AGUslAJn1mn4Kni0xeGoSkHuvSxB1WL2AI69Zdw==", "dependencies": { "@umbraco-ui/uui-base": "1.8.0" } @@ -6873,9 +6873,9 @@ } }, "node_modules/@umbraco-ui/uui-card-media": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.8.0.tgz", - "integrity": "sha512-C1xsdO9mWJ/gzE8nLfF2k5NfpFzJ2yMQYzJVtov3s9C33iy6NVq7OM67o+QugCqDuwwYSkonjgNJLHTav78KVg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.8.2.tgz", + "integrity": "sha512-rzuBoGXb8uoEE76vD+EHJkiMeTsPFGhf+bmE5Vw6oMfSJuQXyaFdQWFPu7MwKntRq63WUE47tqME9wqDl8VTaw==", "dependencies": { "@umbraco-ui/uui-base": "1.8.0", "@umbraco-ui/uui-card": "1.8.0", @@ -6902,12 +6902,12 @@ } }, "node_modules/@umbraco-ui/uui-checkbox": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.8.0.tgz", - "integrity": "sha512-Gf/kZ4q5SuLNEEfcL1/YRzcOI5CZTsMyo2+9LuksCZqRzWtxoo1meB42GZRjE4GTCFZfQOr4Ayz7ZNRaizuM+Q==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.8.2.tgz", + "integrity": "sha512-DKGmJw2JnqYDTY99ah94hBYI+PWC/dyRqpubuDuXecqFpUme1vzacu+rzjkp0VP97rUvO6v/OA4Sjjku3oDVuQ==", "dependencies": { "@umbraco-ui/uui-base": "1.8.0", - "@umbraco-ui/uui-boolean-input": "1.8.0", + "@umbraco-ui/uui-boolean-input": "1.8.2", "@umbraco-ui/uui-icon-registry-essential": "1.8.0" } }, @@ -7097,9 +7097,9 @@ } }, "node_modules/@umbraco-ui/uui-input-lock": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.8.0.tgz", - "integrity": "sha512-ZFBssrhCPrCiSfoS6Y9yA9u2dktzNDCRFQ95Z9nQEthhVm2okyqMS3daGz57Vdm4+LVB0HrqIjpEHC6dOqNTBg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.8.2.tgz", + "integrity": "sha512-GfEV2KsZ+VbHhz1zKGQfYfeSAe7P29p2VaSJZDqZmRial85J3qFRK0dLEUnkQ1x0XGwiE+OprK+EsoFq1vNpdQ==", "dependencies": { "@umbraco-ui/uui-base": "1.8.0", "@umbraco-ui/uui-button": "1.8.0", @@ -7158,9 +7158,9 @@ } }, "node_modules/@umbraco-ui/uui-menu-item": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.8.0.tgz", - "integrity": "sha512-0zEMhcw35Evw7cEq1W0GYNVCzIorTVMzFquU7Sg2QiZmk3eiF6HvkF/gHr4d0WR7HvztM1k/eVm+RTs6zp+96g==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.8.2.tgz", + "integrity": "sha512-8LaA1P+tSLvHqWGIpLv+75k9Xewq+CE5YscO/WFMPP6el+c/PtCyr2uhXhA/KVKqBorkV4+w7cgoANt79997Mw==", "dependencies": { "@umbraco-ui/uui-base": "1.8.0", "@umbraco-ui/uui-loader-bar": "1.8.0", @@ -7322,9 +7322,9 @@ } }, "node_modules/@umbraco-ui/uui-slider": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.8.0.tgz", - "integrity": "sha512-qKgWyVzMKF8RVwwgpdMvKfCS3TEyMbZj/ZKClgTJJfs+3r8Q002F7irx7Lgh+mDww+jLsuMtG/cu0xSXU4HC4w==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.8.2.tgz", + "integrity": "sha512-fE1BVuCu6uDlQJh5leFSWxSPhCnJGlW3vskRMdplCLbvmFK0dYjYNbNzLyVCRsENlXJVEAkIavsdETJ784ALoQ==", "dependencies": { "@umbraco-ui/uui-base": "1.8.0" } @@ -7459,12 +7459,12 @@ } }, "node_modules/@umbraco-ui/uui-toggle": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.8.0.tgz", - "integrity": "sha512-PNk2qeaL7bJXnSkG0T1J5pheNy7yTeaVbdyXuL/9fkoIdb9IkD/h6XLE9niiyWYF1xrdjpgAKZ32u0Oc4qXVyA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.8.2.tgz", + "integrity": "sha512-imjSbkHQy8pjzIOco2ts61sVtVLiu6JtXTaX8KxgSpGKZ/NofhJ48QbhRUx0qJ4l4Cm3KDC93x/2RzFG99LhkQ==", "dependencies": { "@umbraco-ui/uui-base": "1.8.0", - "@umbraco-ui/uui-boolean-input": "1.8.0" + "@umbraco-ui/uui-boolean-input": "1.8.2" } }, "node_modules/@umbraco-ui/uui-visually-hidden": { diff --git a/package.json b/package.json index 09af6e1536..ecf8b9f59b 100644 --- a/package.json +++ b/package.json @@ -186,7 +186,7 @@ "@types/diff": "^5.2.1", "@types/dompurify": "^3.0.5", "@types/uuid": "^9.0.8", - "@umbraco-ui/uui": "1.8.1", + "@umbraco-ui/uui": "1.8.2", "@umbraco-ui/uui-css": "1.8.0", "base64-js": "^1.5.1", "diff": "^5.2.0", @@ -267,4 +267,4 @@ "access": "public", "registry": "https://registry.npmjs.org/" } -} +} \ No newline at end of file diff --git a/src/assets/lang/da-dk.ts b/src/assets/lang/da-dk.ts index b38bcea472..14f131d9b9 100644 --- a/src/assets/lang/da-dk.ts +++ b/src/assets/lang/da-dk.ts @@ -538,6 +538,7 @@ export default { selectContentType: 'Vælg indholdstype', selectMediaStartNode: 'Vælg startnode for mediearkivet', selectMember: 'Vælg medlem', + selectMembers: 'Vælg medlemmer', selectMemberGroup: 'Vælg medlemsgruppe', selectMemberType: 'Vælg medlemstype', selectNode: 'Vælg node', @@ -762,6 +763,7 @@ export default { deleted: 'Slettet', deleting: 'Sletter...', design: 'Design', + details: 'Detaljer', dictionary: 'Ordbog', dimensions: 'Dimensioner', discard: 'Kassér', @@ -808,6 +810,7 @@ export default { message: 'Besked', move: 'Flyt', name: 'Navn', + never: 'Aldrig', new: 'Ny', next: 'Næste', no: 'Nej', @@ -850,6 +853,7 @@ export default { submit: 'Indsend', type: 'Type', typeToSearch: 'Skriv for at søge...', + unknown: 'Ukendt', unknownUser: 'Ukendt bruger', under: 'under', up: 'Op', diff --git a/src/assets/lang/en-us.ts b/src/assets/lang/en-us.ts index 7b85147492..511f97480e 100644 --- a/src/assets/lang/en-us.ts +++ b/src/assets/lang/en-us.ts @@ -549,6 +549,7 @@ export default { selectContentType: 'Select content type', selectMediaStartNode: 'Select media start node', selectMember: 'Select member', + selectMembers: 'Select members', selectMemberGroup: 'Select member group', selectMemberType: 'Select member type', selectNode: 'Select node', @@ -821,6 +822,7 @@ export default { message: 'Message', move: 'Move', name: 'Name', + never: 'Never', new: 'New', next: 'Next', no: 'No', @@ -870,6 +872,7 @@ export default { type: 'Type', typeName: 'Type Name', typeToSearch: 'Type to search...', + unknown: 'Unknown', unknownUser: 'Unknown user', under: 'under', up: 'Up', diff --git a/src/assets/lang/en.ts b/src/assets/lang/en.ts index 235976583f..ca46c17572 100644 --- a/src/assets/lang/en.ts +++ b/src/assets/lang/en.ts @@ -560,6 +560,7 @@ export default { selectContentType: 'Select content type', selectMediaStartNode: 'Select media start node', selectMember: 'Select member', + selectMembers: 'Select members', selectMemberGroup: 'Select member group', selectMemberType: 'Select member type', selectNode: 'Select node', @@ -830,6 +831,7 @@ export default { message: 'Message', move: 'Move', name: 'Name', + never: 'Never', new: 'New', next: 'Next', no: 'No', @@ -879,6 +881,7 @@ export default { type: 'Type', typeName: 'Type Name', typeToSearch: 'Type to search...', + unknown: 'Unknown', unknownUser: 'Unknown user', under: 'under', up: 'Up', diff --git a/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts b/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts index ab49511e8b..e0ff56e471 100644 --- a/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts +++ b/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts @@ -561,11 +561,9 @@ export class UmbInputMarkdownElement extends UUIFormControlMixin(UmbLitElement, #toolbar { background-color: var(--uui-color-background-alt); display: flex; + flex-wrap: wrap; gap: var(--uui-size-2); - } - - #toolbar uui-button-group:last-child { - margin-left: auto; + margin-bottom: var(--uui-size-2); } umb-code-editor { diff --git a/src/packages/members/member-group/collection/views/table/member-group-table-collection-view.element.ts b/src/packages/members/member-group/collection/views/table/member-group-table-collection-view.element.ts index 5b37dbb1f1..3a95108ef7 100644 --- a/src/packages/members/member-group/collection/views/table/member-group-table-collection-view.element.ts +++ b/src/packages/members/member-group/collection/views/table/member-group-table-collection-view.element.ts @@ -16,7 +16,7 @@ export class UmbMemberGroupTableCollectionViewElement extends UmbLitElement { @state() private _tableColumns: Array = [ { - name: 'Name', + name: this.localize.term('general_name'), alias: 'memberGroupName', }, ]; diff --git a/src/packages/members/member-group/components/input-member-group/input-member-group.element.ts b/src/packages/members/member-group/components/input-member-group/input-member-group.element.ts index e415c4a535..ae00375388 100644 --- a/src/packages/members/member-group/components/input-member-group/input-member-group.element.ts +++ b/src/packages/members/member-group/components/input-member-group/input-member-group.element.ts @@ -182,6 +182,7 @@ export class UmbInputMemberGroupElement extends UUIFormControlMixin(UmbLitElemen ${this.#renderOpenButton(item)} this.#removeItem(item)} label=${this.localize.term('general_remove')}> + `; } diff --git a/src/packages/members/member-group/workspace/views/info/member-type-workspace-view-info.element.ts b/src/packages/members/member-group/workspace/views/info/member-type-workspace-view-info.element.ts index d38e509e02..0d6748fb3b 100644 --- a/src/packages/members/member-group/workspace/views/info/member-type-workspace-view-info.element.ts +++ b/src/packages/members/member-group/workspace/views/info/member-type-workspace-view-info.element.ts @@ -23,17 +23,19 @@ export class UmbMemberTypeWorkspaceViewMemberInfoElement extends UmbLitElement i render() { return html`
- +
- + + Member groups have no additional properties for editing. +
- +
- Id + Id ${this._unique}
diff --git a/src/packages/members/member/collection/views/table/member-table-collection-view.element.ts b/src/packages/members/member/collection/views/table/member-table-collection-view.element.ts index ce1f3f0d10..ae6b1bfe34 100644 --- a/src/packages/members/member/collection/views/table/member-table-collection-view.element.ts +++ b/src/packages/members/member/collection/views/table/member-table-collection-view.element.ts @@ -16,7 +16,7 @@ export class UmbMemberTableCollectionViewElement extends UmbLitElement { @state() private _tableColumns: Array = [ { - name: 'Name', + name: this.localize.term('general_name'), alias: 'memberName', }, ]; diff --git a/src/packages/members/member/components/member-picker-modal/member-picker-modal.element.ts b/src/packages/members/member/components/member-picker-modal/member-picker-modal.element.ts index a5ab4a5928..e810b003d4 100644 --- a/src/packages/members/member/components/member-picker-modal/member-picker-modal.element.ts +++ b/src/packages/members/member/components/member-picker-modal/member-picker-modal.element.ts @@ -46,7 +46,7 @@ export class UmbMemberPickerModalElement extends UmbModalBaseElement< } render() { - return html` + return html` ${repeat( this.#filteredMembers, @@ -64,8 +64,12 @@ export class UmbMemberPickerModalElement extends UmbModalBaseElement< )}
- - + +
`; } diff --git a/src/packages/members/member/workspace/manifests.ts b/src/packages/members/member/workspace/manifests.ts index 12cd0df619..0c83475d5c 100644 --- a/src/packages/members/member/workspace/manifests.ts +++ b/src/packages/members/member/workspace/manifests.ts @@ -67,7 +67,7 @@ export const workspaceViews: Array = [ js: () => import('./views/member/member-workspace-view-member.element.js'), weight: 200, meta: { - label: 'Member', + label: '#treeHeaders_member', pathname: 'member', icon: 'icon-user', }, diff --git a/src/packages/members/member/workspace/member-workspace.context.ts b/src/packages/members/member/workspace/member-workspace.context.ts index a635e56a12..d24fd54c86 100644 --- a/src/packages/members/member/workspace/member-workspace.context.ts +++ b/src/packages/members/member/workspace/member-workspace.context.ts @@ -399,43 +399,40 @@ export class UmbMemberWorkspaceContext this.#currentData.setValue({ ...currentData, ...data }); } - get email() { + get email(): string { return this.#get('email') || ''; } - get username() { + get username(): string { return this.#get('username') || ''; } - get isLockedOut() { + get isLockedOut(): boolean { return this.#get('isLockedOut') || false; } - get isTwoFactorEnabled() { + get isTwoFactorEnabled(): boolean { return this.#get('isTwoFactorEnabled') || false; } - get isApproved() { + get isApproved(): boolean { return this.#get('isApproved') || false; } - get failedPasswordAttempts() { + get failedPasswordAttempts(): number { return this.#get('failedPasswordAttempts') || 0; } - //TODO Use localization for "never" - get lastLockOutDate() { - return this.#get('lastLockoutDate') || 'never'; + get lastLockOutDate(): string | null { + return this.#get('lastLockoutDate') ?? null; } - get lastLoginDate() { - return this.#get('lastLoginDate') || 'never'; + get lastLoginDate(): string | null { + return this.#get('lastLoginDate') ?? null; } - get lastPasswordChangeDate() { - const date = this.#get('lastPasswordChangeDate'); - if (!date) return 'never'; - return new Date(date).toLocaleString(); + get lastPasswordChangeDate(): string | null { + return this.#get('lastPasswordChangeDate') ?? null; } get memberGroups() { diff --git a/src/packages/members/member/workspace/views/member/member-workspace-view-member-info.element.ts b/src/packages/members/member/workspace/views/member/member-workspace-view-member-info.element.ts index 5e463eceff..3b5f8405df 100644 --- a/src/packages/members/member/workspace/views/member/member-workspace-view-member-info.element.ts +++ b/src/packages/members/member/workspace/views/member/member-workspace-view-member-info.element.ts @@ -1,5 +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 { TimeFormatOptions } from './utils.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @@ -19,10 +20,12 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple @state() private _editMemberTypePath = ''; + @state() - private _createDate = 'Unknown'; + private _createDate = this.localize.term('general_unknown'); + @state() - private _updateDate = 'Unknown'; + private _updateDate = this.localize.term('general_unknown'); @state() private _unique = ''; @@ -45,8 +48,8 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple this.consumeContext(UMB_MEMBER_WORKSPACE_CONTEXT, async (context) => { this.#workspaceContext = context; this.observe(this.#workspaceContext.contentTypeUnique, (unique) => (this._memberTypeUnique = unique || '')); - this.observe(this.#workspaceContext.createDate, (date) => (this._createDate = date || 'Unknown')); - this.observe(this.#workspaceContext.updateDate, (date) => (this._updateDate = date || 'Unknown')); + this.observe(this.#workspaceContext.createDate, (date) => (this._createDate = this.#setDateFormat(date))); + this.observe(this.#workspaceContext.updateDate, (date) => (this._updateDate = this.#setDateFormat(date))); this.observe(this.#workspaceContext.unique, (unique) => (this._unique = unique || '')); const memberType = (await this.#memberTypeItemRepository.requestItems([this._memberTypeUnique])).data?.[0]; @@ -56,6 +59,11 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple }); } + #setDateFormat(date: string | undefined | null): string { + if (!date) return this.localize.term('general_unknown'); + return this.localize.date(date, TimeFormatOptions); + } + render() { return this.#renderGeneralSection(); } @@ -63,30 +71,24 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple #renderGeneralSection() { return html`
- - - - + Created + ${this._createDate}
- - - - + Last edited + ${this._updateDate}
- Member Type -
- - ${this._memberTypeName} - -
+ Member Type + + +
- + Id ${this._unique}
`; @@ -95,17 +97,6 @@ export class UmbMemberWorkspaceViewMemberInfoElement extends UmbLitElement imple static styles = [ UmbTextStyles, css` - .member-type-edit { - display: flex; - align-items: center; - } - .member-type-edit uui-icon { - margin-right: var(--uui-size-space-1); - } - .member-type-edit uui-button { - margin-left: auto; - } - .general-item { display: flex; flex-direction: column; diff --git a/src/packages/members/member/workspace/views/member/member-workspace-view-member.element.ts b/src/packages/members/member/workspace/views/member/member-workspace-view-member.element.ts index abcf82c4fd..c5d3af5470 100644 --- a/src/packages/members/member/workspace/views/member/member-workspace-view-member.element.ts +++ b/src/packages/members/member/workspace/views/member/member-workspace-view-member.element.ts @@ -1,5 +1,6 @@ import { UMB_MEMBER_WORKSPACE_CONTEXT } from '../../member-workspace.context-token.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'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @@ -93,35 +94,38 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement } return html` - + ${when( this._showChangePasswordForm, () => html`
- + this.#onPasswordUpdate()}> - + this.#onPasswordUpdate()}> ${when(this._newPasswordError, () => html`

${this._newPasswordError}

`)} - +
`, () => html` (this._showChangePasswordForm = true)}>`, )} @@ -153,14 +157,14 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement ${this.#renderPasswordInput()} - + - + - + - +
- + Failed login attempts ${this._workspaceContext.failedPasswordAttempts}
- - ${this._workspaceContext.lastLockOutDate} + Last lockout date + + ${this._workspaceContext.lastLockOutDate + ? this.localize.date(this._workspaceContext.lastLockOutDate, TimeFormatOptions) + : this.localize.term('general_never')} +
- - ${this._workspaceContext.lastLoginDate} + Last login + + ${this._workspaceContext.lastLoginDate + ? this.localize.date(this._workspaceContext.lastLoginDate, TimeFormatOptions) + : this.localize.term('general_never')} +
- - ${this._workspaceContext.lastPasswordChangeDate} + Password changed + + ${this._workspaceContext.lastPasswordChangeDate + ? this.localize.date(this._workspaceContext.lastPasswordChangeDate, TimeFormatOptions) + : this.localize.term('general_never')} +
diff --git a/src/packages/members/member/workspace/views/member/utils.ts b/src/packages/members/member/workspace/views/member/utils.ts new file mode 100644 index 0000000000..4202a90282 --- /dev/null +++ b/src/packages/members/member/workspace/views/member/utils.ts @@ -0,0 +1 @@ +export const TimeFormatOptions: Intl.DateTimeFormatOptions = { dateStyle: 'long', timeStyle: 'short' }; diff --git a/src/packages/user/user/utils.ts b/src/packages/user/user/utils.ts index 75a22b572b..5f28cf85af 100644 --- a/src/packages/user/user/utils.ts +++ b/src/packages/user/user/utils.ts @@ -23,3 +23,5 @@ export const getDisplayStateFromUserStatus = (status: UserStateModel): UmbUserDi ...state, key: 'state' + state.key, }))[0]; + +export const TimeFormatOptions: Intl.DateTimeFormatOptions = { dateStyle: 'long', timeStyle: 'short' }; diff --git a/src/packages/user/user/workspace/components/user-workspace-info/user-workspace-info.element.ts b/src/packages/user/user/workspace/components/user-workspace-info/user-workspace-info.element.ts index 8d5a19a7ee..fa6c911faa 100644 --- a/src/packages/user/user/workspace/components/user-workspace-info/user-workspace-info.element.ts +++ b/src/packages/user/user/workspace/components/user-workspace-info/user-workspace-info.element.ts @@ -1,5 +1,5 @@ import type { UmbUserDisplayStatus } from '../../../utils.js'; -import { getDisplayStateFromUserStatus } from '../../../utils.js'; +import { TimeFormatOptions, getDisplayStateFromUserStatus } from '../../../utils.js'; import { UMB_USER_WORKSPACE_CONTEXT } from '../../user-workspace.context-token.js'; import type { UmbUserDetailModel } from '../../../types.js'; import { html, customElement, state, css, repeat, ifDefined, nothing } from '@umbraco-cms/backoffice/external/lit'; @@ -45,24 +45,24 @@ export class UmbUserWorkspaceInfoElement extends UmbLitElement { { labelKey: 'user_lastLogin', value: user.lastLoginDate - ? this.localize.date(user.lastLoginDate) - : `${user.name + ' ' + this.localize.term('user_noLogin')} `, + ? this.localize.date(user.lastLoginDate, TimeFormatOptions) + : `${user.name} ${this.localize.term('user_noLogin')}`, }, { labelKey: 'user_failedPasswordAttempts', value: user.failedLoginAttempts }, { labelKey: 'user_lastLockoutDate', value: user.lastLockoutDate - ? this.localize.date(user.lastLockoutDate) - : `${user.name + ' ' + this.localize.term('user_noLockouts')}`, + ? this.localize.date(user.lastLockoutDate, TimeFormatOptions) + : `${user.name} ${this.localize.term('user_noLockouts')}`, }, { labelKey: 'user_lastPasswordChangeDate', value: user.lastPasswordChangeDate - ? this.localize.date(user.lastPasswordChangeDate) - : `${user.name + ' ' + this.localize.term('user_noPasswordChange')}`, + ? this.localize.date(user.lastPasswordChangeDate, TimeFormatOptions) + : `${user.name} ${this.localize.term('user_noPasswordChange')}`, }, - { labelKey: 'user_createDate', value: this.localize.date(user.createDate!) }, - { labelKey: 'user_updateDate', value: this.localize.date(user.updateDate!) }, + { labelKey: 'user_createDate', value: this.localize.date(user.createDate!, TimeFormatOptions) }, + { labelKey: 'user_updateDate', value: this.localize.date(user.updateDate!, TimeFormatOptions) }, { labelKey: 'general_id', value: user.unique }, ]; };