tp3
This commit is contained in:
parent
c389030972
commit
b5aa8b5dc7
8
tp3/.gitignore
vendored
Normal file
8
tp3/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
node_modules
|
||||||
|
*.log*
|
||||||
|
.nuxt
|
||||||
|
.nitro
|
||||||
|
.cache
|
||||||
|
.output
|
||||||
|
.env
|
||||||
|
dist
|
42
tp3/README.md
Normal file
42
tp3/README.md
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Nuxt 3 Minimal Starter
|
||||||
|
|
||||||
|
Look at the [nuxt 3 documentation](https://v3.nuxtjs.org) to learn more.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Make sure to install the dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# yarn
|
||||||
|
yarn install
|
||||||
|
|
||||||
|
# npm
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# pnpm
|
||||||
|
pnpm install --shamefully-hoist
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Server
|
||||||
|
|
||||||
|
Start the development server on http://localhost:3000
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## Production
|
||||||
|
|
||||||
|
Build the application for production:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
Locally preview production build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run preview
|
||||||
|
```
|
||||||
|
|
||||||
|
Checkout the [deployment documentation](https://v3.nuxtjs.org/guide/deploy/presets) for more information.
|
7
tp3/app.vue
Normal file
7
tp3/app.vue
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<NuxtLayout>
|
||||||
|
<NuxtPage />
|
||||||
|
</NuxtLayout>
|
||||||
|
</div>
|
||||||
|
</template>
|
0
tp3/assets/css/main.css
Normal file
0
tp3/assets/css/main.css
Normal file
1
tp3/assets/css/main.scss
Normal file
1
tp3/assets/css/main.scss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import "bootstrap/scss/bootstrap";
|
28
tp3/components/Product/Card.vue
Normal file
28
tp3/components/Product/Card.vue
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">{{ name }}</h5>
|
||||||
|
<h6 class="card-subtitle mb-2 text-muted">{{ price }}</h6>
|
||||||
|
<p class="card-text">{{ description }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
price: {
|
||||||
|
type: Number,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
9
tp3/components/Product/Container.vue
Normal file
9
tp3/components/Product/Container.vue
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
45
tp3/layouts/default.vue
Normal file
45
tp3/layouts/default.vue
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<nav class="navbar navbar-expand">
|
||||||
|
<p>
|
||||||
|
<a class="navbar-brand" href="#">Logo</a>
|
||||||
|
</p>
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li v-for="(menuItem, i) in menuItems" :key="'menuItem' + i" class="nav-item">
|
||||||
|
<a class="nav-link" :href="menuItem.path">{{ menuItem.title }}</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<slot />
|
||||||
|
Footer
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const menuItems = [
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
title: 'Accueil'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/category/vetements',
|
||||||
|
title: 'Vêtements'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/category/chaussures',
|
||||||
|
title: 'Chaussures'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/category/accessoires',
|
||||||
|
title: 'Accessoires'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
</script>
|
28
tp3/nuxt.config.ts
Normal file
28
tp3/nuxt.config.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// https://v3.nuxtjs.org/api/configuration/nuxt.config
|
||||||
|
export default defineNuxtConfig(
|
||||||
|
{
|
||||||
|
app: {
|
||||||
|
head: {
|
||||||
|
meta: [
|
||||||
|
{
|
||||||
|
name: 'viewport',
|
||||||
|
content: 'width=device-width, initial-scale=1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
charset: 'utf-8'
|
||||||
|
}
|
||||||
|
], link: [
|
||||||
|
{
|
||||||
|
rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css', integrity: 'sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi', crossorigin: 'anonymous'}
|
||||||
|
], style: [
|
||||||
|
|
||||||
|
], script: [
|
||||||
|
{src: 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js', integrity: 'sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3', crossorigin: 'anonymous'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
css: [
|
||||||
|
'~/assets/css/main.css'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
14226
tp3/package-lock.json
generated
Normal file
14226
tp3/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
18
tp3/package.json
Normal file
18
tp3/package.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"build": "nuxt build",
|
||||||
|
"dev": "nuxt dev",
|
||||||
|
"generate": "nuxt generate",
|
||||||
|
"preview": "nuxt preview",
|
||||||
|
"postinstall": "nuxt prepare"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"nuxt": "3.0.0-rc.13"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"bootstrap": "^5.2.2",
|
||||||
|
"sass": "^1.56.1",
|
||||||
|
"sass-loader": "^13.2.0"
|
||||||
|
}
|
||||||
|
}
|
22
tp3/pages/category/[categoryName].vue
Normal file
22
tp3/pages/category/[categoryName].vue
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Catégorie : {{ $route.params.categoryName }}</h1>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ProductContainer>
|
||||||
|
<ProductCard name="test1" price="10" description="description1" class="col-4" />
|
||||||
|
<ProductCard name="test2" price="20" description="description2" class="col-4" />
|
||||||
|
<ProductCard name="test3" price="30" description="description3" class="col-4" />
|
||||||
|
</ProductContainer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const route = useRoute()
|
||||||
|
console.log(route.params.categoryName)
|
||||||
|
useHead({
|
||||||
|
title: 'Catégorie ' + route.params.categoryName
|
||||||
|
})
|
||||||
|
</script>
|
13
tp3/pages/index.vue
Normal file
13
tp3/pages/index.vue
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Salut les pommes</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
</script>
|
4
tp3/plugins/useBootstrap.client.ts
Normal file
4
tp3/plugins/useBootstrap.client.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import bootstrap from 'bootstrap/dist/js/bootstrap.bundle'
|
||||||
|
export default defineNuxtPlugin(nuxtApp => {
|
||||||
|
nuxtApp.provide('bootstrap', bootstrap)
|
||||||
|
})
|
4
tp3/tsconfig.json
Normal file
4
tp3/tsconfig.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
// https://v3.nuxtjs.org/concepts/typescript
|
||||||
|
"extends": "./.nuxt/tsconfig.json"
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user