fix: Multiple cards should form a masonry layout (#1585)
This commit is contained in:
@@ -54,10 +54,6 @@ export class CardElementManager {
|
|||||||
return this._element.hasUpdated;
|
return this._element.hasUpdated;
|
||||||
}
|
}
|
||||||
|
|
||||||
public getCardHeight(): number {
|
|
||||||
return this._element.getBoundingClientRect().height;
|
|
||||||
}
|
|
||||||
|
|
||||||
public elementConnected(): void {
|
public elementConnected(): void {
|
||||||
// Set initial condition state. Must be done after the element is connected to
|
// Set initial condition state. Must be done after the element is connected to
|
||||||
// allow callbacks to interact with the card.
|
// allow callbacks to interact with the card.
|
||||||
|
|||||||
+9
-2
@@ -455,8 +455,15 @@ class FrigateCard extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public getCardSize(): number {
|
public getCardSize(): number {
|
||||||
// Lovelace card size is expressed in units of 50px.
|
// This method is called before the card is rendered. As such, we don't
|
||||||
return this._controller.getCardElementManager().getCardHeight() / 50;
|
// actually know what height the card will end up being, and for this card
|
||||||
|
// it may change significantly with usage. As such, we just return a fixed
|
||||||
|
// size guess (stock HA cards, such as the picture glance card, do similar).
|
||||||
|
|
||||||
|
// Lovelace card size is expressed in units of 50px. A 16:9 aspect-ratio
|
||||||
|
// camera will likely render as a 276.75px height masonary card => 5.52
|
||||||
|
// units of 50, round up to 6.
|
||||||
|
return 6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,23 +83,6 @@ describe('CardElementManager', () => {
|
|||||||
expect(manager.hasUpdated()).toBeTruthy();
|
expect(manager.hasUpdated()).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should get height', () => {
|
|
||||||
const element = createLitElement();
|
|
||||||
element.getBoundingClientRect = vi.fn().mockReturnValue({
|
|
||||||
width: 200,
|
|
||||||
height: 800,
|
|
||||||
});
|
|
||||||
|
|
||||||
const manager = new CardElementManager(
|
|
||||||
createCardAPI(),
|
|
||||||
element,
|
|
||||||
() => undefined,
|
|
||||||
() => undefined,
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(manager.getCardHeight()).toBe(800);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should connect', () => {
|
it('should connect', () => {
|
||||||
const windowAddEventListener = vi.spyOn(global.window, 'addEventListener');
|
const windowAddEventListener = vi.spyOn(global.window, 'addEventListener');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user