Skip to content

Commit e25f8d1

Browse files
committed
fix popover overflowing page
1 parent c87a8f2 commit e25f8d1

File tree

3 files changed

+48
-29
lines changed

3 files changed

+48
-29
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"@appwrite.io/pink-icons": "0.25.0",
2727
"@appwrite.io/pink-icons-svelte": "^2.0.0-RC.1",
2828
"@appwrite.io/pink-legacy": "^1.0.3",
29-
"@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@40bae6b",
29+
"@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@ee1b778",
3030
"@popperjs/core": "^2.11.8",
3131
"@sentry/sveltekit": "^8.38.0",
3232
"@stripe/stripe-js": "^3.5.0",

pnpm-lock.yaml

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

src/lib/components/columnSelector.svelte

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,19 @@
1818
children: Snippet<[toggle: () => void, selectedColumnsNumber: number]>;
1919
} = $props();
2020
21+
let maxHeight = $state('none');
22+
let containerRef;
23+
24+
const calcMaxHeight = () => {
25+
if (containerRef) {
26+
// get parent row element for correct top position
27+
const parent = containerRef.parentElement.parentElement;
28+
const { top } = parent.getBoundingClientRect();
29+
30+
maxHeight = `${window.innerHeight - top - 48}px`;
31+
}
32+
};
33+
2134
onMount(async () => {
2235
if (isCustomCollection) {
2336
const prefs = preferences.getCustomCollectionColumns(page.params.collection);
@@ -50,6 +63,8 @@
5063
preferences.setColumns(columns);
5164
}
5265
});
66+
67+
calcMaxHeight();
5368
});
5469
5570
let selectedColumnsNumber = $derived(
@@ -61,29 +76,32 @@
6176
);
6277
</script>
6378

79+
<svelte:window on:resize={calcMaxHeight} />
6480
{#if $columns?.length}
6581
<Popover let:toggle placement="bottom-end" padding="none">
6682
{@render children(toggle, selectedColumnsNumber)}
6783
<svelte:fragment slot="tooltip">
68-
<ActionMenu.Root>
69-
{#each $columns as column}
70-
{#if !column?.exclude}
71-
<ActionMenu.Item.Button
72-
on:click={() => (column.hide = !column.hide)}
73-
disabled={allowNoColumns
74-
? false
75-
: selectedColumnsNumber <= 1 && column.hide !== true}>
76-
<Layout.Stack direction="row" gap="s">
77-
<Selector.Checkbox
78-
checked={!column.hide}
79-
size="s"
80-
on:click={() => (column.hide = !column.hide)} />
81-
{column.title}
82-
</Layout.Stack>
83-
</ActionMenu.Item.Button>
84-
{/if}
85-
{/each}
86-
</ActionMenu.Root>
84+
<div style:max-height={maxHeight} style:overflow="scroll" bind:this={containerRef}>
85+
<ActionMenu.Root>
86+
{#each $columns as column}
87+
{#if !column?.exclude}
88+
<ActionMenu.Item.Button
89+
on:click={() => (column.hide = !column.hide)}
90+
disabled={allowNoColumns
91+
? false
92+
: selectedColumnsNumber <= 1 && column.hide !== true}>
93+
<Layout.Stack direction="row" gap="s">
94+
<Selector.Checkbox
95+
checked={!column.hide}
96+
size="s"
97+
on:click={() => (column.hide = !column.hide)} />
98+
{column.title}
99+
</Layout.Stack>
100+
</ActionMenu.Item.Button>
101+
{/if}
102+
{/each}
103+
</ActionMenu.Root>
104+
</div>
87105
</svelte:fragment>
88106
</Popover>
89107
{/if}

0 commit comments

Comments
 (0)