File size: 1,381 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<script>import { derived } from "svelte/store";
import { setCtx } from "../ctx.js";
export let closeOnEscape = void 0;
export let portal = void 0;
export let closeOnPointerDown = void 0;
export let openDelay = void 0;
export let closeDelay = void 0;
export let open = void 0;
export let onOpenChange = void 0;
export let disableHoverableContent = void 0;
export let group = void 0;
const {
states: { open: localOpen },
updateOption,
ids
} = setCtx({
closeOnEscape,
portal,
closeOnPointerDown,
openDelay,
closeDelay,
forceVisible: true,
defaultOpen: open,
disableHoverableContent,
group,
onOpenChange: ({ next }) => {
if (open !== next) {
onOpenChange?.(next);
open = next;
}
return next;
},
positioning: {
gutter: 0,
offset: {
mainAxis: 1
}
}
});
const idValues = derived([ids.content, ids.trigger], ([$contentId, $triggerId]) => ({
content: $contentId,
trigger: $triggerId
}));
$:
open !== void 0 && localOpen.set(open);
$:
updateOption("closeOnEscape", closeOnEscape);
$:
updateOption("portal", portal);
$:
updateOption("closeOnPointerDown", closeOnPointerDown);
$:
updateOption("openDelay", openDelay);
$:
updateOption("closeDelay", closeDelay);
$:
updateOption("group", group);
$:
updateOption("disableHoverableContent", disableHoverableContent);
</script>
<slot ids={$idValues} />
|