Skip to content

Commit 9fab51b

Browse files
authored
Merge pull request #689 from Dative-GPI/features/add-use-resize-composable
feat: add useResize composable for responsive HTMLElement resizing
2 parents 1dcd268 + d89a3c3 commit 9fab51b

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

package-lock.json

Lines changed: 4 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/shared/foundation-shared-components/composables/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export * from "./useCountUp";
77
export * from "./useDebounce";
88
export * from "./useElementVisibility";
99
export * from "./useMapLayers";
10+
export * from "./useResize";
1011
export * from "./useRules";
1112
export * from "./useSlots";
1213
export * from "./useTables";
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { watch } from 'vue';
2+
3+
export function useResize(
4+
getElement: () => HTMLElement | null | undefined,
5+
onResize: () => void
6+
) {
7+
let resizeObserver: ResizeObserver | null = null;
8+
9+
watch(
10+
() => getElement(),
11+
(newElement, _, onCleanup) => {
12+
if (newElement && typeof ResizeObserver !== 'undefined') {
13+
resizeObserver = new ResizeObserver(() => {
14+
onResize();
15+
});
16+
resizeObserver.observe(newElement);
17+
18+
onCleanup(() => {
19+
resizeObserver?.disconnect();
20+
resizeObserver = null;
21+
});
22+
}
23+
},
24+
{ immediate: true }
25+
);
26+
27+
return {};
28+
}

src/shared/foundation-shared-components/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dative-gpi/foundation-shared-components",
3-
"repository" : {
3+
"repository": {
44
"url": "https://github.com/Dative-GPI/foundation-shared-ui.git"
55
},
66
"sideEffects": false,

0 commit comments

Comments
 (0)