Skip to content

Commit 56a804b

Browse files
authored
Added sync external test aswell as ensure only defined dom nodes are synced with effects (#145)
1 parent 4244127 commit 56a804b

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

.changeset/twelve-tables-press.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@skeletonlabs/floating-ui-svelte": patch
3+
---
4+
5+
Ensures referenced dom elements are synced externally.

packages/floating-ui-svelte/src/hooks/use-floating.svelte.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,17 @@ function useFloating(options: UseFloatingOptions = {}): UseFloatingReturn {
332332
};
333333

334334
$effect.pre(() => {
335-
elements.reference = options.elements?.reference;
335+
if (!options.elements || !options.elements.reference) {
336+
return;
337+
}
338+
elements.reference = options.elements.reference;
336339
});
337340

338341
$effect.pre(() => {
339-
elements.floating = options.elements?.floating;
342+
if (!options.elements || !options.elements.floating) {
343+
return;
344+
}
345+
elements.floating = options.elements.floating;
340346
});
341347

342348
$effect.pre(() => {

packages/floating-ui-svelte/test/hooks/use-floating.svelte.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,25 @@ describe("useFloating", () => {
8585
});
8686
}),
8787
);
88+
it(
89+
"is synced externally",
90+
withRunes(() => {
91+
const elements = $state(createElements());
92+
93+
const floating = useFloating({
94+
get elements() {
95+
return elements;
96+
},
97+
});
98+
99+
const newElements = createElements();
100+
101+
floating.elements.reference = newElements.reference;
102+
floating.elements.floating = newElements.floating;
103+
104+
expect(elements).toEqual(newElements);
105+
}),
106+
);
88107
});
89108

90109
describe("transform", () => {

0 commit comments

Comments
 (0)