diff --git a/package.json b/package.json index 9ef38385..65c00506 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,8 @@ "ecmaVersion": 2020 }, "rules": { - "@typescript-eslint/no-explicit-any": "off" + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" }, "overrides": [ { diff --git a/src/components/Graph.vue b/src/components/Graph.vue index f038a91c..92b8b2cb 100644 --- a/src/components/Graph.vue +++ b/src/components/Graph.vue @@ -16,9 +16,18 @@ limitations under the License. -->
diff --git a/src/utils/event.ts b/src/utils/event.ts new file mode 100644 index 00000000..7309c586 --- /dev/null +++ b/src/utils/event.ts @@ -0,0 +1,40 @@ +const isServer = typeof window === "undefined"; + +function resizeHandler(entries: any[]): void { + for (const entry of entries) { + const listeners = entry.target.__resizeListeners__ || []; + if (listeners.length) { + listeners.forEach((fn: () => any) => { + fn(); + }); + } + } +} + +export function addResizeListener(element: any, fn: () => unknown): void { + if (isServer) return; + if (!element.__resizeListeners__) { + element.__resizeListeners__ = []; + element.__ro__ = new ResizeObserver(resizeHandler); + element.__ro__.observe(element); + } + element.__resizeListeners__.push(fn); +} + +export function removeResizeListener(element: any, fn: () => unknown): void { + if (!element || !element.__resizeListeners__) return; + element.__resizeListeners__.splice( + element.__resizeListeners__.indexOf(fn), + 1 + ); + if (!element.__resizeListeners__.length) { + element.__ro__.disconnect(); + } +} + +export function triggerWindowResize(): void { + const event = document.createEvent("HTMLEvents"); + event.initEvent("resize", true, true); + (event as any).eventType = "message"; + window.dispatchEvent(event); +} diff --git a/src/views/dashboard/controls/Widget.vue b/src/views/dashboard/controls/Widget.vue index 17cfca2e..778697d9 100644 --- a/src/views/dashboard/controls/Widget.vue +++ b/src/views/dashboard/controls/Widget.vue @@ -32,7 +32,7 @@ limitations under the License. --> -