bx-1379-redesign #15

Merged
ksenia_mikhailova merged 124 commits from bx-1379-redesign into dev 2024-09-06 15:39:13 +03:00
7 changed files with 56 additions and 26 deletions
Showing only changes of commit 8544b0d858 - Show all commits

View File

@ -2,5 +2,5 @@
<Suspense>
<RouterView />
</Suspense>
<Nav/>
<Nav />
</template>

View File

@ -5,7 +5,7 @@ $white: #fff;
.nav {
background-color: $white;
padding: 1rem;
height: 2rem;
// height: 2rem;
position: fixed;
right: 0;
left: 0;
@ -20,8 +20,8 @@ $white: #fff;
justify-content: center;
align-items: center;
font-size: 1.75rem;
width: 2rem;
height: 2rem;
width: 2.25rem;
height: 2.25rem;
border-radius: 50%;
overflow: hidden;
@ -32,6 +32,7 @@ $white: #fff;
a,
a[href].router-link-active {
color: $white;
line-height: 0;
}
&.active {

View File

@ -2,19 +2,16 @@
import { useRouter, useRoute } from "vue-router";
import KLogo from "../../assets/promo/logo.svg";
import { SERVER_URL } from "../../constants";
import Gallery from "./gallery.vue";
import { useItem } from "../../stores/item";
const router = useRouter()
const route = useRoute()
const page = useItem()
const startColor = `hsl(${(Math.random() * 360).toFixed()}, 100%, 50%)`
const endColor = `hsl(${(Math.random() * 360).toFixed()}, 100%, 50%)`
const res = await fetch(`${SERVER_URL}/api/item/${route.params.item ? (route.params.item + '/') : '?is_front=true'}`)
const pageArray = await res.json()
const page = Array.isArray(pageArray) ? pageArray[0] : pageArray
await page.load(route.params)
</script>
<template>
<div class="main">

View File

@ -1,32 +1,28 @@
<script setup lang="ts">
import { Icon } from '@iconify/vue';
import { useRoute } from 'vue-router';
import { usePromoSidebar } from '../stores/promo_sidebar';
import { useItem } from '../stores/item';
const route = useRoute()
const sidebar = usePromoSidebar()
const sidebarFunc = () => {
if (sidebar.is_open) {
sidebar.close()
} else {
sidebar.open()
}
}
const page = useItem()
console.log(route.params)
// console.log(route.name)
</script>
<template>
<div class="nav">
<div class="nav-group">
<span class="nav-icon" :class="[{ 'active': route.name == 'home' }]">
<RouterLink :to="`/${route.params.item ? route.params.item.toString() : ''}`" @click.prevent="sidebarFunc">
<span class="nav-icon" :class="[{ 'active': route.name == 'home' || route.fullPath == '/' }]">
<RouterLink :to="`/${page.slug}`">
<Icon icon="mdi:home-outline" />
</RouterLink>
</span>
<span class="nav-icon" :class="[{ 'active': route.name == 'scene' }]">
<Icon icon="mdi:video-3d" />
<span class="nav-icon" :class="[{ 'active': route.name == 'scene' }]" style="font-size: 1.875rem;">
<RouterLink :to="`/${page.slug}/${page.scene_3d}`">
<Icon icon="mdi:video-3d" />
</RouterLink>
</span>
<span class="nav-icon">
<span class="nav-icon" style="font-size: 1.375rem;">
<Icon icon="mdi:vector-arrange-below" />
</span>
</div>

15
front/src/index.d.ts vendored
View File

@ -76,4 +76,19 @@ interface EnvVars {
clear_color?: string,
env_displacementmap?: string,
env_normalmap?: string
}
interface PageItem {
id: number;
images: Image[];
name: string;
slug: string;
is_front: boolean;
scene_3d: number;
}
interface Image {
id: number;
file: string;
alt: string;
title: string;
}

View File

@ -9,7 +9,7 @@ import Promo from './components/Promo/index.vue'
import PromoMain from './components/Promo/main.vue'
const routes = [
{ path: '/', component: Promo, name: 'index' },
{ path: '/', component: Promo, name: 'home_no' },
{ path: '/:item', component: Promo, name: 'home' },
{ path: '/:item/:target', component: PromoMain, name: 'scene' },
]

21
front/src/stores/item.ts Normal file
View File

@ -0,0 +1,21 @@
import { defineStore } from 'pinia'
import { SERVER_URL } from '../constants'
export const useItem = defineStore('item', {
state: () => {
return {
} as PageItem
},
actions: {
async load(params: any) {
const res = await fetch(`${SERVER_URL}/api/item/${params.item ? (params.item + '/') : '?is_front=true'}`)
const pageArray = await res.json()
const page = Array.isArray(pageArray) ? pageArray[0] : pageArray
// this.$state = Object.assign(this.$state, page)
for (const key in page) {
this[key] = page[key]
}
return page
}
}
})