evcc-io/assets/js/mixins/breakpoint.ts
Maschga d07a0741ec
chore: use vite+ (#32297)
Co-authored-by: Michael Geers <michael@geers.tv>
2026-07-31 11:43:57 +02:00

44 lines
1,022 B
TypeScript

export type Breakpoint = "xs" | "sm" | "md" | "lg" | "xl" | "xxl";
interface BreakpointDef {
name: Breakpoint;
maxWidth: number;
}
const BREAKPOINTS: BreakpointDef[] = [
{ name: "xs", maxWidth: 575 },
{ name: "sm", maxWidth: 767 },
{ name: "md", maxWidth: 991 },
{ name: "lg", maxWidth: 1199 },
{ name: "xl", maxWidth: 1399 },
{ name: "xxl", maxWidth: Infinity },
];
export default {
data() {
return {
breakpoint: "md" as Breakpoint,
};
},
methods: {
updateBreakpoint(): void {
const width: number = window.innerWidth;
const self = this as any;
for (const bp of BREAKPOINTS) {
if (width <= bp.maxWidth) {
self.breakpoint = bp.name;
return;
}
}
},
},
mounted() {
const self = this as any;
self.updateBreakpoint();
window.addEventListener("resize", self.updateBreakpoint);
},
beforeUnmount() {
const self = this as any;
window.removeEventListener("resize", self.updateBreakpoint);
},
};