Improved tooltip positioning and sizing, in particular for stashing (heart).
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
/* Content */
|
/* Content */
|
||||||
|
|
||||||
.v-popper__popper {
|
.v-popper__popper {
|
||||||
z-index: 10000;
|
z-index: 1000;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
outline: none;
|
outline: none;
|
||||||
@@ -45,6 +45,10 @@
|
|||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-outer-scroll .v-popper__inner {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
.v-popper__inner > div {
|
.v-popper__inner > div {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
@@ -82,6 +86,10 @@
|
|||||||
border-width: 6px;
|
border-width: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-container {
|
||||||
|
bottom: -7px;
|
||||||
|
}
|
||||||
|
|
||||||
.v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner,
|
.v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner,
|
||||||
.v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner {
|
.v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner {
|
||||||
left: -2px;
|
left: -2px;
|
||||||
@@ -105,7 +113,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-container {
|
.v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-container {
|
||||||
top: 0;
|
top: -2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner,
|
.v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner,
|
||||||
@@ -151,7 +159,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-container {
|
.v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-container {
|
||||||
right: -10px;
|
right: -7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-container {
|
||||||
|
left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner,
|
.v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner,
|
||||||
|
|||||||
@@ -248,6 +248,8 @@ async function reloadStashes(newStash) {
|
|||||||
v-if="itemStashes && (showSecondary || (hasSecondaryStash && pageStash?.user.id !== user.id))"
|
v-if="itemStashes && (showSecondary || (hasSecondaryStash && pageStash?.user.id !== user.id))"
|
||||||
:aria-id="stashMenuDropdownId"
|
:aria-id="stashMenuDropdownId"
|
||||||
:shown="showStashes"
|
:shown="showStashes"
|
||||||
|
placement="auto"
|
||||||
|
popper-class="no-outer-scroll"
|
||||||
@hide="showStashes = false"
|
@hide="showStashes = false"
|
||||||
>
|
>
|
||||||
<Icon
|
<Icon
|
||||||
@@ -274,6 +276,8 @@ async function reloadStashes(newStash) {
|
|||||||
:triggers="[]"
|
:triggers="[]"
|
||||||
:shown="showStashes"
|
:shown="showStashes"
|
||||||
:disabled="showSecondary"
|
:disabled="showSecondary"
|
||||||
|
placement="auto"
|
||||||
|
popper-class="no-outer-scroll"
|
||||||
@hide="showStashes = false"
|
@hide="showStashes = false"
|
||||||
>
|
>
|
||||||
<template v-if="pageStash?.user.id === user.id">
|
<template v-if="pageStash?.user.id === user.id">
|
||||||
|
|||||||
@@ -16,40 +16,53 @@ const emit = defineEmits(['stash', 'unstash', 'create']);
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<ul class="stash-menu nolist noselect">
|
<div class="stash-menu noselect">
|
||||||
<li
|
<ul class="stash-list nolist noselect">
|
||||||
v-for="userStash in stashes"
|
<li
|
||||||
:key="`stash-${userStash.id}`"
|
v-for="userStash in stashes"
|
||||||
class="menu-item"
|
:key="`stash-${userStash.id}`"
|
||||||
>
|
class="menu-item"
|
||||||
<label class="menu-stash">
|
|
||||||
<Checkbox
|
|
||||||
:checked="itemStashes.some((itemStash) => itemStash.id === userStash.id)"
|
|
||||||
@change="(checked) => checked ? emit('stash', userStash) : emit('unstash', userStash)"
|
|
||||||
/>{{ userStash.name }}
|
|
||||||
</label>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="menu-item create">
|
|
||||||
<label
|
|
||||||
v-close-popper
|
|
||||||
class="menu-stash"
|
|
||||||
@click="emit('create')"
|
|
||||||
>
|
>
|
||||||
<Icon icon="plus3" />
|
<label class="menu-stash">
|
||||||
New
|
<Checkbox
|
||||||
</label>
|
:checked="itemStashes.some((itemStash) => itemStash.id === userStash.id)"
|
||||||
</li>
|
@change="(checked) => checked ? emit('stash', userStash) : emit('unstash', userStash)"
|
||||||
</ul>
|
/>{{ userStash.name }}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-close-popper
|
||||||
|
class="menu-item menu-stash create"
|
||||||
|
@click="emit('create')"
|
||||||
|
>
|
||||||
|
<Icon icon="plus3" />
|
||||||
|
New
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.stash-menu {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
max-height: inherit;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stash-list {
|
||||||
|
overflow-y: auto;
|
||||||
|
min-height: 0; /* lets this flex child actually shrink and scroll instead of pushing the container taller */
|
||||||
|
}
|
||||||
|
|
||||||
.menu-item {
|
.menu-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
fill: var(--shadow-weak-10);
|
fill: var(--shadow-weak-10);
|
||||||
padding: 0 .55rem 0 .2rem;
|
padding: 0 .55rem 0 .2rem;
|
||||||
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,6 +71,7 @@ const emit = defineEmits(['stash', 'unstash', 'create']);
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: .5rem;
|
padding: .5rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -71,5 +85,10 @@ const emit = defineEmits(['stash', 'unstash', 'create']);
|
|||||||
.check-container {
|
.check-container {
|
||||||
margin-right: .5rem;
|
margin-right: .5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.create {
|
||||||
|
flex-shrink: 0;
|
||||||
|
border-top: 1px solid var(--glass-weak-40);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -32,7 +32,14 @@ function createApp(Page, pageProps, pageContext) {
|
|||||||
|
|
||||||
app.provide('pageContext', pageContext);
|
app.provide('pageContext', pageContext);
|
||||||
|
|
||||||
app.use(FloatingVue, { container: '#container' });
|
app.use(FloatingVue, {
|
||||||
|
container: '#container',
|
||||||
|
autoBoundaryMaxSize: true,
|
||||||
|
shiftCrossAxis: true,
|
||||||
|
overflowPadding: 10,
|
||||||
|
arrowPadding: 10,
|
||||||
|
});
|
||||||
|
|
||||||
app.use(VueVirtualScroller);
|
app.use(VueVirtualScroller);
|
||||||
|
|
||||||
app.component('Link', Link);
|
app.component('Link', Link);
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ onMounted(() => {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 2rem;
|
bottom: 2rem;
|
||||||
z-index: 1000;
|
z-index: 10000;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user