Added user select box to achievement pages
This commit is contained in:
@@ -38,6 +38,7 @@ class HandleInertiaRequests extends Middleware
|
||||
'roles' => $request->user()?->getRoleNames() ?? [],
|
||||
'permissions' => $request->user()?->getAllPermissions()->pluck('name') ?? [],
|
||||
'apiToken' => session('api_token'),
|
||||
'following' => $request->user()?->following()->with('followee')->get()->pluck('followee')->filter()->pluck('name')->toArray() ?? [],
|
||||
],
|
||||
'flash' => [
|
||||
'success' => $request->session()->get('success'),
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<script setup lang="ts">
|
||||
import { usePage, router } from "@inertiajs/vue3";
|
||||
import { SharedProps } from "@/Types/types";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
redirectRoute: string;
|
||||
routeParams?: Record<string, string | number>;
|
||||
placeholder?: string;
|
||||
}>(),
|
||||
{
|
||||
routeParams: () => ({}),
|
||||
}
|
||||
);
|
||||
|
||||
const page = usePage<SharedProps>().props;
|
||||
const following = [...page.auth?.following ?? [], page.auth?.user?.name]
|
||||
.filter((x, i, a) => a.indexOf(x) === i);
|
||||
|
||||
function onUpdate(user: string) {
|
||||
if (!user) return;
|
||||
|
||||
router.get(
|
||||
route(props.redirectRoute, {
|
||||
user,
|
||||
...props.routeParams,
|
||||
})
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<VSelect
|
||||
:placeholder="placeholder"
|
||||
variant="outlined"
|
||||
density="comfortable"
|
||||
:items="following"
|
||||
@update:model-value="onUpdate"
|
||||
>
|
||||
</VSelect>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -25,5 +25,4 @@ defineProps<{
|
||||
background-size: cover;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -12,6 +12,7 @@ import {useFlights} from "@/Composables/useFlights";
|
||||
import InlineBadge from "@/Components/FlightsGoneBy/InlineBadge.vue";
|
||||
import GlassTooltip from "@/Components/FlightsGoneBy/GlassTooltip.vue";
|
||||
import ButtonLink from "@/Components/FlightsGoneBy/ButtonLink.vue";
|
||||
import FollowingSelectBox from "@/Components/FlightsGoneBy/FollowingSelectBox.vue";
|
||||
|
||||
defineOptions({ layout: MainLayout })
|
||||
|
||||
@@ -119,6 +120,14 @@ const unlocked = computed(() => {
|
||||
:families="aircraft_families"
|
||||
:major-alliances="majorAlliances"
|
||||
/>
|
||||
|
||||
<Panel>
|
||||
<FollowingSelectBox
|
||||
redirect-route="profile.achievement"
|
||||
:route-params="{ achievement: achievement.internal_name }"
|
||||
placeholder="View the Progress of Someone You Follow"
|
||||
/>
|
||||
</Panel>
|
||||
</div>
|
||||
</ProfileLayout>
|
||||
</template>
|
||||
|
||||
@@ -9,6 +9,7 @@ import MainLayout from "@/Layouts/MainLayout.vue";
|
||||
import Panel from "@/Components/FlightsGoneBy/Panels/Panel.vue";
|
||||
import PanelHeader from "@/Components/FlightsGoneBy/Panels/PanelHeader.vue";
|
||||
import {useUpdateSetting} from "@/Composables/useUpdateSetting";
|
||||
import FollowingSelectBox from "@/Components/FlightsGoneBy/FollowingSelectBox.vue";
|
||||
|
||||
const {updateSetting} = useUpdateSetting()
|
||||
|
||||
@@ -121,6 +122,10 @@ const filteredUnlockedCount = computed(() =>
|
||||
/>
|
||||
</div>
|
||||
</Panel>
|
||||
|
||||
<Panel>
|
||||
<FollowingSelectBox redirect-route="profile.achievements" placeholder="View The Achievements of Someone You Follow" />
|
||||
</Panel>
|
||||
</div>
|
||||
</ProfileLayout>
|
||||
</template>
|
||||
|
||||
Vendored
+1
@@ -101,6 +101,7 @@ export type SharedProps = import('@inertiajs/core').PageProps & {
|
||||
roles: string[];
|
||||
permissions: string[];
|
||||
apiToken: string | null;
|
||||
following: string[];
|
||||
},
|
||||
flash: {
|
||||
success?: string;
|
||||
|
||||
Reference in New Issue
Block a user