diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml index 8e77e1488c..bd973a46e3 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml @@ -34,7 +34,7 @@ jobs: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci --no-audit --no-fund --prefer-offline - - run: npm run lint + - run: npm run lint:errors - run: npm run build - run: npm run generate:jsonschema:dist - run: npx playwright install --with-deps diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts index f7f46543d5..a4af2a808e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts @@ -1,35 +1,19 @@ -import { UMB_APP_CONTEXT } from '@umbraco-cms/backoffice/app'; -import { css, html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @customElement('umb-history-item') export class UmbHistoryItemElement extends UmbLitElement { - @property({ type: String }) - src?: string; - @property({ type: String }) name?: string; @property({ type: String }) detail?: string; - @state() - private _serverUrl?: string; - - constructor() { - super(); - this.consumeContext(UMB_APP_CONTEXT, (instance) => { - this._serverUrl = instance.getServerUrl(); - }); - } - render() { return html`
- +
${this.name} ${this.detail} @@ -55,10 +39,12 @@ export class UmbHistoryItemElement extends UmbLitElement { --uui-button-height: calc(var(--uui-size-2) * 4); margin-right: var(--uui-size-2); } + #actions-container { opacity: 0; transition: opacity 120ms; } + :host(:hover) #actions-container { opacity: 1; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts index 216c381979..79ca53ee46 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-history.element.ts @@ -18,6 +18,7 @@ import type { AuditLogWithUsernameResponseModel } from '@umbraco-cms/backoffice/ import { DirectionModel } from '@umbraco-cms/backoffice/external/backend-api'; import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; +import { UMB_APP_CONTEXT } from '@umbraco-cms/backoffice/app'; @customElement('umb-document-workspace-view-info-history') export class UmbDocumentWorkspaceViewInfoHistoryElement extends UmbLitElement { @@ -36,9 +37,16 @@ export class UmbDocumentWorkspaceViewInfoHistoryElement extends UmbLitElement { @state() private _currentPage = 1; + @state() + private _serverUrl = ''; + constructor() { super(); this.#logRepository = new UmbAuditLogRepository(this); + + this.consumeContext(UMB_APP_CONTEXT, (instance) => { + this._serverUrl = instance.getServerUrl(); + }); } protected firstUpdated(): void { @@ -127,12 +135,18 @@ export class UmbDocumentWorkspaceViewInfoHistoryElement extends UmbLitElement { (item) => item.timestamp, (item) => { const { text, style } = HistoryTagStyleAndText(item.logType); + const avatar = Array.isArray(item.userAvatars) ? item.userAvatars[1] : undefined; + // TODO: we need to get the absolute url for the avatars from the server + const avatarUrl = avatar ? `${this._serverUrl}${avatar}` : undefined; + return html` + + ${this.localize.term(text.label)} ${this.localize.term(text.desc, item.parameters)} diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info-history.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info-history.element.ts index e3bbef6456..c110432190 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info-history.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/info/media-workspace-view-info-history.element.ts @@ -15,6 +15,7 @@ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { AuditLogWithUsernameResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import { DirectionModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { UMB_APP_CONTEXT } from '@umbraco-cms/backoffice/app'; @customElement('umb-media-workspace-view-info-history') export class UmbMediaWorkspaceViewInfoHistoryElement extends UmbLitElement { @@ -33,9 +34,16 @@ export class UmbMediaWorkspaceViewInfoHistoryElement extends UmbLitElement { @state() private _currentPage = 1; + @state() + private _serverUrl = ''; + constructor() { super(); this.#logRepository = new UmbAuditLogRepository(this); + + this.consumeContext(UMB_APP_CONTEXT, (instance) => { + this._serverUrl = instance.getServerUrl(); + }); } protected firstUpdated(): void { @@ -104,12 +112,16 @@ export class UmbMediaWorkspaceViewInfoHistoryElement extends UmbLitElement { (item) => item.timestamp, (item) => { const { text, style } = HistoryTagStyleAndText(item.logType); + const avatar = Array.isArray(item.userAvatars) ? item.userAvatars[1] : undefined; + // TODO: we need to get the absolute url for the avatars from the server + const avatarUrl = avatar ? `${this._serverUrl}${avatar}` : undefined; return html` + ${this.localize.term(text.label)} ${this.localize.term(text.desc, item.parameters)}