fix: Fix thumbnail rendering issues (#2058)

- Closes #2054
This commit is contained in:
Dermot Duffy
2025-05-22 21:21:04 -07:00
committed by GitHub
parent 95c926e237
commit c342c5d529
6 changed files with 45 additions and 26 deletions
@@ -135,8 +135,12 @@ export class ThumbnailDetailsController {
: []),
];
// To avoid duplication, if the event already has a structured 'what' and a
// starttime, the title is omitted from the details.
const includeTitle =
!ViewItemClassifier.isEvent(item) || !item?.getWhat()?.length || !startTime;
this._details = [
...(itemTitle
...(includeTitle && itemTitle
? [
{
title: itemTitle,
+17 -15
View File
@@ -40,27 +40,29 @@ export class AdvancedCameraCardThumbnailDetails extends LitElement {
const heading = this._controller.getHeading();
const details = this._controller.getDetails();
return html`<div class="details">
return html`
${heading
? html` <div class="title">
? html` <div class="heading">
<span title=${heading}>${heading}</span>
</div>`
: ``}
${details
? details.map(
(detail) =>
html`<div>
${detail.icon
? html` <advanced-camera-card-icon
title=${detail.hint ?? ''}
.icon=${detail.icon}
></advanced-camera-card-icon>`
: ''}
<span>${detail.title}</span>
</div>`,
)
? html` <div class="details">
${details.map(
(detail) =>
html`<div>
${detail.icon
? html` <advanced-camera-card-icon
title=${detail.hint ?? ''}
.icon=${detail.icon}
></advanced-camera-card-icon>`
: ''}
<span>${detail.title}</span>
</div>`,
)}
</div>`
: ''}
</div> `;
`;
}
static get styles(): CSSResult {
+2 -2
View File
@@ -58,8 +58,8 @@ export class AdvancedCameraCardThumbnailFeature extends LitElement {
class="${thumbnailClasses}"
.hass=${this.hass}
.thumbnail=${this._controller.getThumbnail()}
aria-label=${this._controller.getTitle() ?? ''}
title=${this._controller.getTitle() ?? ''}
aria-label=${this.item?.getTitle() ?? ''}
title=${this.item?.getTitle() ?? ''}
></advanced-camera-card-thumbnail-feature-thumbnail>`
: this._controller.getIcon()
? html`<advanced-camera-card-icon
-1
View File
@@ -96,7 +96,6 @@ export class AdvancedCameraCardThumbnail extends LitElement {
return html`
<advanced-camera-card-thumbnail-feature
aria-label=${this.item.getTitle() ?? ''}
.cameraManager=${this.cameraManager}
.hasDetails=${this.details}
.hass=${this.hass}
+1 -3
View File
@@ -64,8 +64,6 @@ advanced-camera-card-icon.download {
bottom: 3px;
}
advanced-camera-card-thumbnail-details-event,
advanced-camera-card-thumbnail-details-recording,
advanced-camera-card-thumbnail-details-folder {
advanced-camera-card-thumbnail-details {
flex: 1;
}
@@ -1,9 +1,9 @@
import { describe, expect, it } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CameraManager } from '../../../../src/camera-manager/manager';
import { ThumbnailDetailsController } from '../../../../src/components-lib/thumbnail/details-controller';
import { ViewFolder, ViewMediaType } from '../../../../src/view/item';
import { createFolder, TestViewMedia } from '../../../test-utils';
import { CameraManager } from '../../../src/camera-manager/manager';
import { ThumbnailDetailsController } from '../../../src/components-lib/thumbnail/details-controller';
import { ViewFolder, ViewMediaType } from '../../../src/view/item';
import { createFolder, TestViewMedia } from '../../test-utils';
describe('ThumbnailDetailsController', () => {
describe('should set heading', () => {
@@ -117,6 +117,22 @@ describe('ThumbnailDetailsController', () => {
},
]);
});
it('should not have title with a what and a start time', () => {
const item = new TestViewMedia({
title: 'Test Event',
what: ['person', 'car'],
startTime: new Date('2025-05-22T21:12:00Z'),
});
const controller = new ThumbnailDetailsController();
controller.calculate(null, item);
expect(controller.getDetails()).not.toContainEqual(
expect.objectContaining({
title: 'Test Event',
}),
);
});
});
it('should have start time in details', () => {