Skip to content

Commit 99e3b3c

Browse files
authored
feat: update depends on filter styling for app (#8077)
* feat: update depends on filter styling for app * fix: last item in search filters can be covered by "Upgrade to Modrinth+" link
1 parent 9c31607 commit 99e3b3c

4 files changed

Lines changed: 20 additions & 7 deletions

File tree

‎apps/app-frontend/src/app/shell/sidebar/index.vue‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { injectOnboardingChecklist } from '@/providers/onboarding-checklist'
1515
1616
import Promotion from './promotion.vue'
1717
18-
defineProps<{
18+
const props = defineProps<{
1919
credentials: ModrinthCredentials | null | undefined
2020
hasPlus: boolean
2121
showAd: boolean
@@ -37,6 +37,9 @@ const friends = ref<InstanceType<typeof FriendsList> | null>(null)
3737
const scrollContainer = ref<HTMLElement | null>(null)
3838
const scrollViewport = ref<HTMLElement | null>(null)
3939
const upgradeHeight = ref(0)
40+
const promotionPaddingStyle = computed(() =>
41+
props.showAd ? { paddingBottom: `calc(1rem + ${upgradeHeight.value}px)` } : undefined,
42+
)
4043
const { showTopFade, showBottomFade, checkScrollState } = useScrollIndicator(scrollViewport)
4144
4245
let removeScrollbarListener: (() => void) | undefined
@@ -103,7 +106,11 @@ const messages = defineMessages({
103106
@login-minecraft="accounts?.login()"
104107
@login-modrinth="emit('login-modrinth')"
105108
/>
106-
<div id="sidebar-teleport-target" class="sidebar-teleport-content contents"></div>
109+
<div
110+
id="sidebar-teleport-target"
111+
class="sidebar-teleport-content empty:hidden"
112+
:style="promotionPaddingStyle"
113+
></div>
107114
<div class="sidebar-default-content hidden" :class="{ 'sidebar-enabled': visible }">
108115
<div
109116
v-show="hasLoggedIntoMinecraft"
@@ -131,9 +138,7 @@ const messages = defineMessages({
131138
<PrideFundraiserBanner
132139
class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid"
133140
/>
134-
<NewsSidebar
135-
:style="showAd ? { paddingBottom: `calc(1rem + ${upgradeHeight}px)` } : undefined"
136-
/>
141+
<NewsSidebar :style="promotionPaddingStyle" />
137142
</div>
138143
</div>
139144
<div

‎packages/ui/src/components/search/SearchDependsOnFilter.vue‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
:model-value="pendingProjectId"
55
:project-types="selectableProjectTypes"
66
:exclude-project-ids="dependencyProjectIds"
7+
:force-direction="dropdownDirection"
78
:search-placeholder="formatMessage(messages.searchContentPlaceholder)"
89
:show-chevron="false"
910
:sync-with-selection="false"
@@ -70,6 +71,7 @@
7071
:model-value="selectedProjectId"
7172
:project-types="selectableProjectTypes"
7273
:search-placeholder="formatMessage(messages.searchProjectPlaceholder)"
74+
:force-direction="dropdownDirection"
7375
:show-chevron="false"
7476
clearable
7577
search-input-variant="button"
@@ -97,6 +99,7 @@
9799
<MultiSelect
98100
:model-value="draftDependencyTypes"
99101
:options="dependencyTypeOptions"
102+
:force-direction="dropdownDirection"
100103
:clearable="false"
101104
fit-content
102105
show-chevron
@@ -108,7 +111,7 @@
108111
@update:model-value="setDraftDependencyTypes"
109112
>
110113
<template #input-content="{ isOpen }">
111-
<span class="flex items-center gap-0.5 text-sm text-secondary ml-2.5">
114+
<span class="flex items-center gap-0.5 text-sm text-secondary ml-2.5 select-none">
112115
{{ dependencyTypeLabel }}
113116
<DropdownIcon
114117
class="size-4 transition-transform"
@@ -163,6 +166,7 @@ const selectedFilters = defineModel<FilterValue[]>('selectedFilters', { required
163166
164167
const props = defineProps<{
165168
projectType: string
169+
dropdownDirection?: 'up' | 'down'
166170
innerPanelClass?: string
167171
selectedProjectClass?: string
168172
resultCount?: number

‎packages/ui/src/components/search/SearchSidebarFilter.vue‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
v-if="filterType.display === 'depends-on-project'"
7474
v-model:selected-filters="selectedFilters"
7575
:project-type="projectType"
76+
:dropdown-direction="dropdownDirection"
7677
:inner-panel-class="innerPanelClass"
7778
:selected-project-class="selectedProjectClass"
7879
:result-count="resultCount"
@@ -270,6 +271,7 @@ const overriddenProvidedFilterTypes = defineModel<string[]>('overriddenProvidedF
270271
const props = defineProps<{
271272
filterType: FilterType
272273
projectType: string
274+
dropdownDirection?: 'up' | 'down'
273275
buttonClass?: string
274276
contentClass?: string
275277
innerPanelClass?: string

‎packages/ui/src/layouts/shared/browse-tab/sidebar.vue‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ const buttonClass = computed(() => {
9393
const contentClass = computed(() => (isApp.value ? 'mt-2 mb-3' : 'mb-4 mx-3'))
9494
const innerPanelClass = computed(() => (isApp.value ? 'ml-2 mr-3' : 'p-1'))
9595
const selectedProjectClass = computed(() =>
96-
isApp.value ? 'bg-surface-1 border border-solid border-surface-3' : 'bg-surface-2',
96+
isApp.value ? 'bg-surface-4 border border-solid border-surface-5' : 'bg-surface-2',
9797
)
9898
9999
function hasProvidedFilter(filterId: string): boolean {
@@ -221,6 +221,7 @@ function getFilterOpenByDefault(filterId: string): boolean {
221221
:provided-filters="[]"
222222
:filter-type="filterType"
223223
:project-type="ctx.projectType.value"
224+
:dropdown-direction="isApp ? 'up' : undefined"
224225
:class="filterClass"
225226
:button-class="buttonClass"
226227
:content-class="contentClass"
@@ -252,6 +253,7 @@ function getFilterOpenByDefault(filterId: string): boolean {
252253
:provided-filters="ctx.providedFilters?.value ?? []"
253254
:filter-type="filter"
254255
:project-type="ctx.projectType.value"
256+
:dropdown-direction="isApp ? 'up' : undefined"
255257
:result-count="ctx.totalHits.value"
256258
:loading="ctx.loading.value"
257259
:refreshing="ctx.refreshing.value"

0 commit comments

Comments
 (0)