update
This commit is contained in:
parent
e3fbebe1b8
commit
4791bd8037
30 changed files with 15738 additions and 278 deletions
0
.env.example
Normal file
0
.env.example
Normal file
|
@ -13,6 +13,7 @@ module.exports = {
|
|||
},
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'@typescript-eslint/ban-ts-ignore': 'off'
|
||||
}
|
||||
}
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -5,6 +5,7 @@ node_modules
|
|||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
.env
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
|
|
13770
package-lock.json
generated
Normal file
13770
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
12
package.json
12
package.json
|
@ -10,9 +10,11 @@
|
|||
"dependencies": {
|
||||
"core-js": "^3.6.5",
|
||||
"register-service-worker": "^1.7.1",
|
||||
"tiptap-vuetify": "^2.23.0",
|
||||
"vue": "^2.6.11",
|
||||
"vue-apitator": "^0.0.16",
|
||||
"vue-class-component": "^7.2.3",
|
||||
"vue-croppa": "^1.3.8",
|
||||
"vue-property-decorator": "^8.4.2",
|
||||
"vue-router": "^3.2.0",
|
||||
"vuetify": "^2.2.11",
|
||||
|
@ -44,13 +46,7 @@
|
|||
"vue-template-compiler": "^2.6.11",
|
||||
"vuetify-loader": "^1.3.0"
|
||||
},
|
||||
"gitHooks": {
|
||||
"pre-commit": "lint-staged"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx,vue,ts,tsx}": [
|
||||
"vue-cli-service lint",
|
||||
"git add"
|
||||
]
|
||||
"resolutions": {
|
||||
"prosemirror-model": "1.9.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
|
|
|
@ -16,6 +16,10 @@ export default Vue.extend({
|
|||
GlobalSnackbar
|
||||
},
|
||||
|
||||
created () {
|
||||
console.log('Using ' + process.env.VUE_APP_BASE_URL)
|
||||
},
|
||||
|
||||
data: () => ({})
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87.5 100"><defs><style>.cls-1{fill:#1697f6;}.cls-2{fill:#7bc6ff;}.cls-3{fill:#1867c0;}.cls-4{fill:#aeddff;}</style></defs><title>Artboard 46</title><polyline class="cls-1" points="43.75 0 23.31 0 43.75 48.32"/><polygon class="cls-2" points="43.75 62.5 43.75 100 0 14.58 22.92 14.58 43.75 62.5"/><polyline class="cls-3" points="43.75 0 64.19 0 43.75 48.32"/><polygon class="cls-4" points="64.58 14.58 87.5 14.58 43.75 100 43.75 62.5 64.58 14.58"/></svg>
|
Before Width: | Height: | Size: 539 B |
141
src/components/AvatarEditor.vue
Normal file
141
src/components/AvatarEditor.vue
Normal file
|
@ -0,0 +1,141 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="enabled"
|
||||
max-width="500px">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
{{ caption }}
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-layout justify-center>
|
||||
<croppa
|
||||
class="canvas-container"
|
||||
v-model="plugin"
|
||||
:show-remove-button="false"
|
||||
canvas-color="white"
|
||||
:width="size"
|
||||
:height="size"
|
||||
prevent-white-space
|
||||
:placeholder-font-size="22"
|
||||
@file-size-exceed="handleFileSizeExceed"
|
||||
@file-type-mismatch="handleFileTypeMismatch"
|
||||
placeholder="Choisissez une image"
|
||||
></croppa>
|
||||
</v-layout>
|
||||
<v-layout justify-center wrap>
|
||||
<v-btn
|
||||
dark
|
||||
outlined
|
||||
color="indigo"
|
||||
@click="rotate()">
|
||||
Tourner 90°
|
||||
</v-btn>
|
||||
<v-btn
|
||||
dark
|
||||
outlined
|
||||
color="indigo"
|
||||
@click="rotate(-1)">
|
||||
Tourner -90°
|
||||
</v-btn>
|
||||
<v-btn
|
||||
dark
|
||||
outlined
|
||||
color="purple"
|
||||
@click="clear">
|
||||
Supprimer
|
||||
</v-btn>
|
||||
</v-layout>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-btn
|
||||
text
|
||||
color="error"
|
||||
@click="toggle">
|
||||
Fermer
|
||||
</v-btn>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn
|
||||
text
|
||||
:loading="loading"
|
||||
color="primary"
|
||||
@click="submit">
|
||||
Sauvegarder
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import 'vue-croppa/dist/vue-croppa.css'
|
||||
|
||||
export default {
|
||||
name: 'AvatarEditor',
|
||||
data: () => ({
|
||||
enabled: false,
|
||||
plugin: {},
|
||||
size: 400
|
||||
}),
|
||||
props: {
|
||||
caption: {
|
||||
type: String,
|
||||
default: 'Modifier votre logo'
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toggle: function () {
|
||||
this.enabled = !this.enabled
|
||||
},
|
||||
clear: function () {
|
||||
this.plugin.remove()
|
||||
},
|
||||
rotate: function (x) {
|
||||
this.plugin.rotate(x)
|
||||
},
|
||||
submit: function () {
|
||||
this.plugin.generateBlob(
|
||||
blob => {
|
||||
this.$emit('submitted', blob)
|
||||
},
|
||||
'image/jpeg',
|
||||
0.8
|
||||
)
|
||||
},
|
||||
finish: function () {
|
||||
this.plugin.remove()
|
||||
this.enabled = false
|
||||
},
|
||||
handleFileSizeExceed: function () {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: 'Ce fichier est trop grand !'
|
||||
})
|
||||
},
|
||||
handleFileTypeMismatch: function () {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: "Ce fichier n'est pas une image !"
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.croppa-container {
|
||||
background: transparent !important;
|
||||
}
|
||||
.canvas-container canvas {
|
||||
border: 1px solid #bdc3c7;
|
||||
border-radius: 50%;
|
||||
}
|
||||
@media screen and (max-width: 959px) {
|
||||
.canvas-container canvas {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
}
|
||||
}
|
||||
</style>
|
17
src/icons/Facebook.vue
Normal file
17
src/icons/Facebook.vue
Normal file
|
@ -0,0 +1,17 @@
|
|||
<template>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
data-prefix="fab"
|
||||
data-icon="facebook"
|
||||
class="svg-inline--fa fa-facebook fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
17
src/icons/Instagram.vue
Normal file
17
src/icons/Instagram.vue
Normal file
|
@ -0,0 +1,17 @@
|
|||
<template>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
data-prefix="fab"
|
||||
data-icon="instagram"
|
||||
class="svg-inline--fa fa-instagram fa-w-14"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 448 512"
|
||||
>
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
17
src/icons/Twitter.vue
Normal file
17
src/icons/Twitter.vue
Normal file
|
@ -0,0 +1,17 @@
|
|||
<template>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
data-prefix="fab"
|
||||
data-icon="twitter"
|
||||
class="svg-inline--fa fa-twitter fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-main>
|
||||
<div v-if="enabled">
|
||||
<v-app-bar
|
||||
app
|
||||
|
@ -8,10 +8,12 @@
|
|||
dark
|
||||
>
|
||||
<v-app-bar-nav-icon @click.stop="drawer = !drawer"></v-app-bar-nav-icon>
|
||||
<v-toolbar-title>Administration</v-toolbar-title>
|
||||
<v-toolbar-title>{{ $store.state.title }}</v-toolbar-title>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn icon @click="logout">
|
||||
<v-icon>exit_to_app</v-icon>
|
||||
</v-btn>
|
||||
</v-app-bar>
|
||||
|
||||
<v-navigation-drawer
|
||||
v-model="drawer"
|
||||
app
|
||||
|
@ -35,38 +37,40 @@
|
|||
</v-list-item>
|
||||
</v-list>
|
||||
</v-navigation-drawer>
|
||||
|
||||
<v-main>
|
||||
<v-container fluid>
|
||||
<router-view></router-view>
|
||||
</v-container>
|
||||
</v-main>
|
||||
<v-container fluid>
|
||||
<router-view></router-view>
|
||||
</v-container>
|
||||
</div>
|
||||
<v-main v-else>
|
||||
<div v-if="!enabled && loading">
|
||||
<span>Chargement...</span>
|
||||
</div>
|
||||
<div v-if="!enabled && !loading">
|
||||
<div class="d-flex align-center justify-center mt-5">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
Connexion au panel administrateur
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<p>
|
||||
Vous n'êtes pas encore connecté à l'interface d'administration veuillez copier-coller le token dans la boîte ci-dessous.
|
||||
</p>
|
||||
<v-text-field autofocus label="Token" v-model="token" />
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn color="primary" @click="init" :disabled="token === ''">Se connecter</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</div>
|
||||
</div>
|
||||
</v-main>
|
||||
</div>
|
||||
<div v-if="!enabled && loading" class="d-flex align-center justify-center mt-10 pt-10">
|
||||
<v-progress-circular indeterminate color="primary" />
|
||||
</div>
|
||||
<div v-if="!enabled && !loading" class="d-flex align-center justify-center mt-5">
|
||||
<v-card max-width="600">
|
||||
<v-card-title>
|
||||
Connexion au panel administrateur
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<p>
|
||||
Vous n'êtes pas encore connecté à l'interface d'administration veuillez copier-coller le token dans la boîte ci-dessous.
|
||||
</p>
|
||||
<v-text-field
|
||||
v-on:keydown.enter="submitForm()"
|
||||
autofocus
|
||||
label="Token"
|
||||
v-model="token" />
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn
|
||||
color="primary"
|
||||
@click="submitForm()"
|
||||
:disabled="token === ''">
|
||||
Se connecter
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</div>
|
||||
</v-main>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
@ -99,7 +103,7 @@ export default {
|
|||
}
|
||||
this.$apitator.setAuthorizationToken(adminToken)
|
||||
// verify the token
|
||||
this.$apitator.get('/admin', { withAuth: true }).then(res => {
|
||||
this.$apitator.get('/admin', { withAuth: true }).then(() => {
|
||||
window.localStorage.setItem('adminToken', adminToken)
|
||||
this.loading = false
|
||||
this.enabled = true
|
||||
|
@ -112,11 +116,16 @@ export default {
|
|||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
submitForm () {
|
||||
if (this.token !== '') {
|
||||
this.init()
|
||||
}
|
||||
},
|
||||
logout () {
|
||||
window.localStorage.removeItem('adminToken')
|
||||
this.$router.push('/')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
|
214
src/layouts/Delegate.vue
Normal file
214
src/layouts/Delegate.vue
Normal file
|
@ -0,0 +1,214 @@
|
|||
<template>
|
||||
<v-main>
|
||||
<div v-if="enabled">
|
||||
<v-toolbar
|
||||
color="primary"
|
||||
dark
|
||||
flat
|
||||
>
|
||||
<v-toolbar-title>Gestion de l'association We Robot</v-toolbar-title>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn outlined>
|
||||
Publier
|
||||
</v-btn>
|
||||
<v-btn icon @click="logout()">
|
||||
<v-icon>exit_to_app</v-icon>
|
||||
</v-btn>
|
||||
<template v-slot:extension>
|
||||
<v-tabs
|
||||
v-model="tab"
|
||||
centered
|
||||
show-arrows
|
||||
slider-color="yellow"
|
||||
ref="tabs"
|
||||
>
|
||||
<v-tab @click="navigate('DelegateMain')">
|
||||
Résumé
|
||||
</v-tab>
|
||||
<v-tab @click="navigate('DelegateGallery')">
|
||||
Images/vidéos
|
||||
</v-tab>
|
||||
<v-tab @click="navigate('DelegatePresentation')">
|
||||
Présentation
|
||||
</v-tab>
|
||||
<v-tab @click="navigate('DelegateSchedule')">
|
||||
Horaires
|
||||
</v-tab>
|
||||
<v-tab @click="navigate('DelegatePricing')">
|
||||
Tarifs
|
||||
</v-tab>
|
||||
<v-tab @click="navigate('DelegateContact')">
|
||||
Contact
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
</template>
|
||||
</v-toolbar>
|
||||
<v-container fluid>
|
||||
<v-row class="justify-center">
|
||||
<v-col cols="12" sm="12" md="8">
|
||||
<router-view></router-view>
|
||||
<div class="mt-3 d-flex justify-end">
|
||||
<v-btn color="success" :loading="isSaving" @click="save()">Sauvegarder</v-btn>
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-container>
|
||||
</div>
|
||||
<div v-if="!enabled && loading" class="d-flex align-center justify-center mt-10 pt-10">
|
||||
<v-progress-circular indeterminate color="primary" />
|
||||
</div>
|
||||
<div v-if="!enabled && !loading" class="d-flex align-center justify-center mt-5">
|
||||
<v-card max-width="600">
|
||||
<v-card-title>
|
||||
Connexion au panel de modification
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<p>
|
||||
Vous n'êtes pas encore connecté à l'interface de modification de votre association, veuillez copier-coller la clée qui vous a été envoyé par e-mail dans la boîte ci-dessous.
|
||||
</p>
|
||||
<v-text-field
|
||||
v-on:keydown.enter="submitForm()"
|
||||
autofocus
|
||||
label="Clée"
|
||||
v-model="token" />
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn
|
||||
color="primary"
|
||||
@click="submitForm()"
|
||||
:disabled="token === ''">
|
||||
Se connecter
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</div>
|
||||
</v-main>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data: () => ({
|
||||
enabled: false,
|
||||
loading: true,
|
||||
token: '',
|
||||
loadingHandle: null,
|
||||
isSaving: false,
|
||||
tab: 0
|
||||
}),
|
||||
created () {
|
||||
this.init()
|
||||
},
|
||||
mounted () {
|
||||
const path = this.$route.path.split('/')
|
||||
const name = path[path.length - 1]
|
||||
const routes = ['', 'gallery', 'presentation', 'schedule', 'pricing', 'contact']
|
||||
this.tab = routes.indexOf(name)
|
||||
/**
|
||||
* this is very ugly I kown
|
||||
*/
|
||||
// setTimeout(() => {
|
||||
// window.dispatchEvent(new Event('resize'))
|
||||
// }, 100)
|
||||
// const i = setInterval(() => {
|
||||
// window.dispatchEvent(new Event('resize'))
|
||||
// }, 500)
|
||||
// setTimeout(() => {
|
||||
// window.dispatchEvent(new Event('resize'))
|
||||
// }, 1000)
|
||||
// setTimeout(() => {
|
||||
// clearInterval(i)
|
||||
// }, 3000)
|
||||
},
|
||||
methods: {
|
||||
init () {
|
||||
this.enabled = false
|
||||
|
||||
this.loadingHandle = setTimeout(() => {
|
||||
this.loading = true
|
||||
}, 300)
|
||||
|
||||
let inUrl = false
|
||||
let delegateToken = (new URL(window.location)).searchParams.get('delegateToken')
|
||||
if (this.token !== '') {
|
||||
delegateToken = this.token
|
||||
}
|
||||
if (delegateToken === null) {
|
||||
delegateToken = window.localStorage.getItem('delegateToken')
|
||||
if (delegateToken === null || delegateToken === 'null') {
|
||||
clearTimeout(this.loadingHandle)
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
} else {
|
||||
inUrl = true
|
||||
}
|
||||
|
||||
this.$apitator.setAuthorizationToken(delegateToken)
|
||||
// verify the token
|
||||
this.$apitator.get('/delegate', { withAuth: true }).then(res => {
|
||||
window.localStorage.setItem('delegateToken', delegateToken)
|
||||
if (this.token !== '') {
|
||||
this.$router.push({ query: { delegateToken: this.token } })
|
||||
}
|
||||
clearTimeout(this.loadingHandle)
|
||||
this.loading = false
|
||||
this.enabled = true
|
||||
const organization = res.data.data
|
||||
this.$store.commit('SET_DATA', organization.proposedVersion)
|
||||
this.$nextTick(() => {
|
||||
setTimeout(this.$refs.tabs.callSlider, 200)
|
||||
setTimeout(this.$refs.tabs.callSlider, 400)
|
||||
setTimeout(this.$refs.tabs.callSlider, 500)
|
||||
setTimeout(this.$refs.tabs.callSlider, 1000)
|
||||
setTimeout(this.$refs.tabs.callSlider, 1500)
|
||||
})
|
||||
}).catch(() => {
|
||||
clearTimeout(this.loadingHandle)
|
||||
this.loading = false
|
||||
if (this.token !== '' || inUrl) {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: 'Clée invalide !'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
logout () {
|
||||
window.localStorage.removeItem('delegateToken')
|
||||
this.$router.push('/')
|
||||
},
|
||||
save () {
|
||||
this.isSaving = true
|
||||
const data = this.$store.state.data
|
||||
data.pricing = data.pricing.map(i => {
|
||||
delete i._id
|
||||
return i
|
||||
})
|
||||
this.$apitator.put('/delegate', data, { withAuth: true }).then(() => {
|
||||
this.isSaving = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: 'Vos changements ont été sauvegardés !'
|
||||
})
|
||||
}).catch(() => {
|
||||
this.isSaving = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: 'Impossible de sauvegarder vos changements'
|
||||
})
|
||||
})
|
||||
},
|
||||
navigate (routeName) {
|
||||
if (routeName !== this.$route.name) {
|
||||
this.$router.push({ name: routeName })
|
||||
}
|
||||
},
|
||||
submitForm () {
|
||||
if (this.token !== '') {
|
||||
this.init()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -1,31 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<h1>Organization Layout</h1>
|
||||
|
||||
<router-view></router-view>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
created() {
|
||||
let delegateToken = window.localStorage.getItem('delegateToken')
|
||||
if (delegateToken === null) {
|
||||
delegateToken = (new URL(window.location)).searchParams.get('delegateToken')
|
||||
if (delegateToken === null) {
|
||||
delegateToken = prompt(`
|
||||
Vous n'êtes pas encore connecté à l'interface de configuration de votre
|
||||
association veuillez copier-coller le token qui vous a été envoyé par email ci-dessous.
|
||||
(ou connectez vous directement avec le lient envoyé par email)
|
||||
`)
|
||||
}
|
||||
window.localStorage.setItem('delegateToken', delegateToken)
|
||||
}
|
||||
this.$apitator.setAuthorizationToken(delegateToken)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
14
src/main.ts
14
src/main.ts
|
@ -3,16 +3,28 @@ import App from './App.vue'
|
|||
import './registerServiceWorker'
|
||||
import router from './router'
|
||||
import store from './store'
|
||||
|
||||
// @ts-ignore
|
||||
import Croppa from 'vue-croppa'
|
||||
|
||||
import vuetify from './plugins/vuetify'
|
||||
import apitator from 'vue-apitator'
|
||||
|
||||
// @ts-ignore
|
||||
import { TiptapVuetifyPlugin } from 'tiptap-vuetify'
|
||||
|
||||
Vue.config.productionTip = false
|
||||
Vue.use(apitator, {
|
||||
baseUrl: 'http://localhost:8001'
|
||||
baseUrl: process.env.VUE_APP_BASE_URL
|
||||
})
|
||||
Vue.filter('less', (s: string, l = 60) => {
|
||||
return s.substr(0, l) + (s.length > 60 ? '...' : '')
|
||||
})
|
||||
Vue.use(TiptapVuetifyPlugin, {
|
||||
vuetify,
|
||||
iconsGroup: 'md'
|
||||
})
|
||||
Vue.use(Croppa)
|
||||
|
||||
new Vue({
|
||||
router,
|
||||
|
|
|
@ -1,7 +1,28 @@
|
|||
import Vue from 'vue'
|
||||
import Vuetify from 'vuetify/lib'
|
||||
import fr from 'vuetify/src/locale/fr'
|
||||
import FacebookIcon from '../icons/Facebook.vue'
|
||||
import InstagramIcon from '../icons/Instagram.vue'
|
||||
import TwitterIcon from '../icons/Twitter.vue'
|
||||
|
||||
Vue.use(Vuetify)
|
||||
|
||||
export default new Vuetify({
|
||||
lang: {
|
||||
locales: { fr },
|
||||
current: 'fr'
|
||||
},
|
||||
icons: {
|
||||
values: {
|
||||
facebook: {
|
||||
component: FacebookIcon
|
||||
},
|
||||
twitter: {
|
||||
component: TwitterIcon
|
||||
},
|
||||
instagram: {
|
||||
component: InstagramIcon
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -35,6 +35,44 @@ const routes: Array<RouteConfig> = [
|
|||
component: () => import(/* webpackChunkName: "tags" */ '../views/Admin/Tags.vue')
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
path: '/delegate',
|
||||
name: 'DelegateLayout',
|
||||
component: () => import(/* webpackChunkName: "delegateLayout" */ '../layouts/Delegate.vue'),
|
||||
children: [
|
||||
{
|
||||
path: '/',
|
||||
name: 'DelegateMain',
|
||||
component: () => import(/* webpackChunkName: "delegateMain" */ '../views/Delegate/Main.vue')
|
||||
},
|
||||
{
|
||||
path: 'contact',
|
||||
name: 'DelegateContact',
|
||||
component: () => import(/* webpackChunkName: "delegateContact" */ '../views/Delegate/Contact.vue')
|
||||
},
|
||||
{
|
||||
path: 'pricing',
|
||||
name: 'DelegatePricing',
|
||||
component: () => import(/* webpackChunkName: "delegatePricing" */ '../views/Delegate/Pricing.vue')
|
||||
},
|
||||
{
|
||||
path: 'schedule',
|
||||
name: 'DelegateSchedule',
|
||||
component: () => import(/* webpackChunkName: "delegateSchedule" */ '../views/Delegate/Schedule.vue')
|
||||
},
|
||||
{
|
||||
path: 'gallery',
|
||||
name: 'DelegateGallery',
|
||||
component: () => import(/* webpackChunkName: "delegateGallery" */ '../views/Delegate/Gallery.vue')
|
||||
},
|
||||
{
|
||||
path: 'presentation',
|
||||
name: 'DelegatePresentation',
|
||||
component: () => import(/* webpackChunkName: "delegatePresentation" */ '../views/Delegate/Presentation.vue')
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
@ -9,9 +9,34 @@ export default new Vuex.Store({
|
|||
color: '',
|
||||
text: '',
|
||||
enabled: false
|
||||
},
|
||||
title: '',
|
||||
data: {
|
||||
name: '',
|
||||
descriptionShort: '',
|
||||
descriptionLong: '',
|
||||
thumbnail: {
|
||||
key: '',
|
||||
contentType: '',
|
||||
location: '',
|
||||
type: 'thumbnail'
|
||||
},
|
||||
contacts: {
|
||||
facebook: '',
|
||||
twitter: '',
|
||||
instagram: '',
|
||||
website: '',
|
||||
address: '',
|
||||
person: '',
|
||||
email: '',
|
||||
phone: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
mutations: {
|
||||
SET_TITLE (state, payload) {
|
||||
state.title = payload
|
||||
},
|
||||
ADD_ALERT (state, payload) {
|
||||
state.alert = {
|
||||
color: payload.color,
|
||||
|
@ -21,6 +46,11 @@ export default new Vuex.Store({
|
|||
},
|
||||
DISABLE_ALERT (state) {
|
||||
state.alert.enabled = false
|
||||
},
|
||||
SET_DATA (state, payload) {
|
||||
if (payload !== null) {
|
||||
state.data = { ...state.data, ...payload }
|
||||
}
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
|
|
|
@ -1,13 +1,515 @@
|
|||
<template>
|
||||
<div>
|
||||
OrganizationList
|
||||
</div>
|
||||
<v-row no-gutters class="d-flex justify-center">
|
||||
<v-col cols="12" xl="8" md="10" sm="12">
|
||||
<v-data-table
|
||||
:headers="headers"
|
||||
:items="organizations"
|
||||
sort-by="calories"
|
||||
class="elevation-1"
|
||||
>
|
||||
<template v-slot:top>
|
||||
<v-toolbar flat color="white">
|
||||
<v-toolbar-title>Gestion des associations</v-toolbar-title>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn
|
||||
outlined
|
||||
color="primary"
|
||||
dark
|
||||
@click="fetchData()"
|
||||
class="mb-2 mr-2"
|
||||
>
|
||||
<v-icon>refresh</v-icon>
|
||||
</v-btn>
|
||||
<v-dialog v-model="dialog" max-width="500px">
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn
|
||||
color="primary"
|
||||
dark
|
||||
class="mb-2"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
Nouvelle association
|
||||
</v-btn>
|
||||
</template>
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<span class="headline">{{ formTitle }}</span>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-text-field
|
||||
v-model="editedItem.adminName"
|
||||
required
|
||||
label="Nom (interne) de l'associatiton">
|
||||
</v-text-field>
|
||||
<v-text-field
|
||||
v-model="editedItem.email"
|
||||
label="E-mail utilisé pour recevoir le lien/la clé d'identification">
|
||||
</v-text-field>
|
||||
<v-select
|
||||
:items="validationState"
|
||||
v-model="editedItem.validationState"
|
||||
label="DEBUG: status de la validation"
|
||||
></v-select>
|
||||
<div v-if="editedIndex === -1">
|
||||
<p>
|
||||
Remarque : Lorsque vous allez créer cette association un email contenant le lien de connexion va être automatiquement envoyé sur l'adresse renseignée.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else>
|
||||
<p>
|
||||
Remarque : Si l'email change lors d'une modification, rien ne sera fait en plus.
|
||||
Si vous voulez envoyer un email contenant le lient de connexion, vous devez utiliser le bouton dédié pour ça.
|
||||
</p>
|
||||
</div>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="grey darken-3" text @click="close">Annuler</v-btn>
|
||||
<v-btn color="blue darken-1" text @click="save">Valider</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</v-toolbar>
|
||||
</template>
|
||||
<!-- <template v-slot:item.icon="{ item }">
|
||||
</template> -->
|
||||
<!-- <template v-slot:item.description="{ item }">
|
||||
{{ item.description|less }}
|
||||
</template> -->
|
||||
<template v-slot:item.actions="{ item }">
|
||||
<v-tooltip top>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn icon small color="success">
|
||||
<v-icon
|
||||
small
|
||||
@click="openApproveModal(item)"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
done
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<span>Valider les changements</span>
|
||||
</v-tooltip>
|
||||
<v-tooltip top>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn icon small color="info">
|
||||
<v-icon
|
||||
small
|
||||
@click="editItem(item)"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
mdi-pencil
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<span>Modifier</span>
|
||||
</v-tooltip>
|
||||
<v-tooltip top>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn icon small color="error">
|
||||
<v-icon
|
||||
small
|
||||
@click="openDeleteModal(item)"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
mdi-delete
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<span>Supprimer</span>
|
||||
</v-tooltip>
|
||||
<v-tooltip top>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn icon small color="primary">
|
||||
<v-icon
|
||||
small
|
||||
@click="openDetailsModal(item)"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
visibility
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<span>Voir plus</span>
|
||||
</v-tooltip>
|
||||
<v-tooltip top>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn icon small color="success">
|
||||
<v-icon
|
||||
small
|
||||
@click="openExternal(item)"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
launch
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<span>Ouvrir la page publique</span>
|
||||
</v-tooltip>
|
||||
</template>
|
||||
<template v-slot:no-data>
|
||||
<span>Aucune associations n'ont été crées jusqu'a présent</span>
|
||||
</template>
|
||||
</v-data-table>
|
||||
</v-col>
|
||||
<v-dialog v-model="deleteModal" max-width="600">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
Voulez vous vraiment supprimer cette association ?
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<b>Attention, cette action est irréversible !</b>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn color="blue darken-1" text @click="deleteModal = false">Annuler</v-btn>
|
||||
<v-btn color="red darken-1" text @click="deleteItem">Supprimer</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
<v-dialog v-model="detailsModal" max-width="600">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
Détails et actions sur l'association {{ toSeeItem.adminName }}
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<!-- show dates, status, current and published version page link, token -->
|
||||
<!-- action: reset token, send email -->
|
||||
<v-list two-line>
|
||||
|
||||
<v-divider />
|
||||
<v-list-item>
|
||||
<v-list-item-icon>
|
||||
<v-icon>vpn_key</v-icon>
|
||||
</v-list-item-icon>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ toSeeItem.token }}</v-list-item-title>
|
||||
<v-list-item-subtitle>Token/clée</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-list-item>
|
||||
<v-list-item-icon>
|
||||
<v-icon>update</v-icon>
|
||||
</v-list-item-icon>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ toSeeItem.createdAt }}</v-list-item-title>
|
||||
<v-list-item-subtitle>Date de création</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
|
||||
<div v-if="toSeeItem.updatedAt !== undefined">
|
||||
<v-list-item>
|
||||
<v-list-item-action />
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ toSeeItem.updatedAt }}</v-list-item-title>
|
||||
<v-list-item-subtitle>Date de dernière mise à jour</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</div>
|
||||
|
||||
<div v-if="toSeeItem.publishedAt !== undefined">
|
||||
<v-divider />
|
||||
<v-list-item>
|
||||
<v-list-item-action />
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ toSeeItem.publishedAt }}</v-list-item-title>
|
||||
<v-list-item-subtitle>Date de dernière publication</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</div>
|
||||
|
||||
<v-divider />
|
||||
<v-list-item three-line>
|
||||
<v-list-item-icon>
|
||||
<v-icon>refresh</v-icon>
|
||||
</v-list-item-icon>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>Générer une nouvelle clé</v-list-item-title>
|
||||
<v-list-item-subtitle>Cette action va remplacer les clés existantes par une nouvelle clé généré aléatoirement</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
<v-list-item-action>
|
||||
<v-btn color="info" outlined @click="generateToken(toSeeItem)" small>Générer</v-btn>
|
||||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-list-item>
|
||||
<v-list-item-icon>
|
||||
<v-icon>email</v-icon>
|
||||
</v-list-item-icon>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>Envoyer un email contenant la clé</v-list-item-title>
|
||||
<v-list-item-subtitle>Un message sera envoyé contenant le token existant</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
<v-list-item-action>
|
||||
<v-btn color="teal" outlined @click="sendEmailToken(toSeeItem)" small>Envoyer</v-btn>
|
||||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
<v-divider />
|
||||
</v-list>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn color="blue darken-1" text @click="detailsModal = false">Fermer</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
<v-dialog v-model="approveModal" max-width="700">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
Vérification et publication des changements de l'association {{ toSeeItem.adminName }}
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-switch label="Les modifications sont acceptées" v-model="approved" />
|
||||
<v-textarea
|
||||
:disabled="approved"
|
||||
label="Raisons du rejet"
|
||||
v-model="rejectionDescription">
|
||||
</v-textarea>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn color="grey darken-3" text @click="approveModal = false">Fermer</v-btn>
|
||||
<v-btn
|
||||
color="primary"
|
||||
text
|
||||
@click="approveOrReject()"
|
||||
:disabled="approved && rejectionDescription.length === 0"
|
||||
>Valider</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
mounted () {
|
||||
console.log('dzqsd')
|
||||
|
||||
data: () => {
|
||||
const item = {
|
||||
adminName: '',
|
||||
email: '',
|
||||
validationState: 'none'
|
||||
}
|
||||
return {
|
||||
dialog: false,
|
||||
headers: [
|
||||
{
|
||||
text: 'Nom interne',
|
||||
value: 'adminName'
|
||||
},
|
||||
{
|
||||
text: 'E-mail',
|
||||
value: 'email'
|
||||
},
|
||||
{
|
||||
text: 'Actions',
|
||||
value: 'actions'
|
||||
}
|
||||
],
|
||||
organizations: [],
|
||||
editedIndex: -1,
|
||||
editedItem: item,
|
||||
defaultItem: item,
|
||||
deleteModal: false,
|
||||
validationState: ['none', 'pending', 'rejected', 'published'],
|
||||
detailsModal: false,
|
||||
toSeeItem: item,
|
||||
approveModal: false,
|
||||
toApproveItem: item,
|
||||
rejectionDescription: '',
|
||||
approved: false
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
formTitle () {
|
||||
return this.editedIndex === -1 ? 'Nouvelle association' : "Modification de l'association"
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
dialog (val) {
|
||||
val || this.close()
|
||||
}
|
||||
},
|
||||
|
||||
created () {
|
||||
this.$store.commit('SET_TITLE', 'Gestion des associations')
|
||||
this.fetchData()
|
||||
},
|
||||
|
||||
methods: {
|
||||
fetchData () {
|
||||
this.$apitator.get('/admin/organizations', { withAuth: true }).then(res => {
|
||||
this.organizations = res.data.data
|
||||
})
|
||||
},
|
||||
|
||||
editItem (item) {
|
||||
this.editedIndex = this.organizations.indexOf(item)
|
||||
this.editedItem = Object.assign({}, item)
|
||||
this.dialog = true
|
||||
},
|
||||
|
||||
openDeleteModal (item) {
|
||||
this.toDeleteItem = item
|
||||
this.deleteModal = true
|
||||
},
|
||||
|
||||
deleteItem () {
|
||||
const index = this.organizations.indexOf(this.toDeleteItem)
|
||||
if (confirm('Êtes vous sûr de vouloir supprimer cette association ?')) {
|
||||
this.organizations.splice(index, 1)
|
||||
this.$apitator.delete('/admin/organizations/' + this.toDeleteItem._id, { withAuth: true }).then(() => {
|
||||
this.deleteModal = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: "Cette association vient d'être supprimé"
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
openDetailsModal (item) {
|
||||
this.toSeeItem = item
|
||||
this.detailsModal = true
|
||||
},
|
||||
|
||||
close () {
|
||||
this.dialog = false
|
||||
this.$nextTick(() => {
|
||||
this.editedItem = Object.assign({}, this.defaultItem)
|
||||
this.editedIndex = -1
|
||||
})
|
||||
},
|
||||
|
||||
save () {
|
||||
if (this.editedIndex > -1) {
|
||||
// call the api to update the organization
|
||||
this.$apitator.put('/admin/organizations/' + this.editedItem._id, {
|
||||
adminName: this.editedItem.adminName,
|
||||
email: this.editedItem.email,
|
||||
validationState: this.editedItem.validationState
|
||||
}, { withAuth: true }).then(res => {
|
||||
console.log(res.data)
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: 'Association mise à jour'
|
||||
})
|
||||
this.fetchData()
|
||||
this.close()
|
||||
}).catch(() => {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: 'Impossible de modifier cette association'
|
||||
})
|
||||
})
|
||||
} else {
|
||||
// call the api to store the organization
|
||||
this.$apitator.post('/admin/organizations', {
|
||||
adminName: this.editedItem.adminName,
|
||||
email: this.editedItem.email,
|
||||
validationState: this.editedItem.validationState
|
||||
}, { withAuth: true }).then(() => {
|
||||
this.fetchData()
|
||||
this.close()
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: 'Association ajoutée'
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: "Impossible d'ajouter cette association"
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
generateToken (item) {
|
||||
if (!confirm('Êtes vous sur de reinitialiser la clée de cette association ? Les liens de connexions existants seront inutilisables.')) {
|
||||
return
|
||||
}
|
||||
this.$apitator.post('/admin/organizations/' + item._id + '/reset-token', {}, { withAuth: true }).then(() => {
|
||||
this.detailsModal = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: 'La clée de cette association a été reinitialisé'
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: 'Impossible de reinitialiser la clée de cette association'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
sendEmailToken (item) {
|
||||
this.$apitator.post('/admin/organizations/' + item._id + '/send-email-token', {}, { withAuth: true }).then(() => {
|
||||
this.detailsModal = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: 'Un email va être envoyé à cette association contenant la clée'
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: "Impossible d'envoyer un email à cette association"
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
openExternal (item) {
|
||||
window.open('https://forum.espacecondorcet.org/association/slug' + item.slug, '_blank').focus()
|
||||
},
|
||||
|
||||
openApproveModal (item) {
|
||||
this.approveModal = true
|
||||
this.toApproveItem = item
|
||||
this.approved = false
|
||||
},
|
||||
|
||||
approveOrReject (item) {
|
||||
if (this.approved) {
|
||||
this.$apitator.post('/admin/organizations/' + item._id + '/approve', {}, { withAuth: true }).then(() => {
|
||||
this.approveModal = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: 'La publication est cours de réalisation et un email va être envoyé à cette association afin de notifier de cette publication'
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: "Impossible d'approuver les changements"
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$apitator.post('/admin/organizations/' + item._id + '/reject', {
|
||||
rejectionDescription: this.rejectionDescription
|
||||
}, { withAuth: true }).then(() => {
|
||||
this.approveModal = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: "Un email va être envoyé à cette association afin d'informer du problème"
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: 'Impossible de rejeter les changements'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,110 +1,114 @@
|
|||
<template>
|
||||
<v-data-table
|
||||
:headers="headers"
|
||||
:items="tags"
|
||||
sort-by="calories"
|
||||
class="elevation-1"
|
||||
>
|
||||
<template v-slot:top>
|
||||
<v-toolbar flat color="white">
|
||||
<v-toolbar-title>Gestion des catégories</v-toolbar-title>
|
||||
<!-- <v-divider
|
||||
class="mx-4"
|
||||
inset
|
||||
vertical
|
||||
></v-divider> -->
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn
|
||||
outlined
|
||||
color="primary"
|
||||
dark
|
||||
@click="fetchData()"
|
||||
class="mb-2 mr-2"
|
||||
>
|
||||
<v-icon>refresh</v-icon>
|
||||
</v-btn>
|
||||
<v-dialog v-model="dialog" max-width="500px">
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-row no-gutters class="d-flex justify-center">
|
||||
<v-col cols="12" xl="8" md="10" sm="12">
|
||||
<v-data-table
|
||||
:headers="headers"
|
||||
:items="tags"
|
||||
sort-by="name"
|
||||
class="elevation-1"
|
||||
>
|
||||
<template v-slot:top>
|
||||
<v-toolbar flat color="white">
|
||||
<v-toolbar-title>Gestion des catégories</v-toolbar-title>
|
||||
<!-- <v-divider
|
||||
class="mx-4"
|
||||
inset
|
||||
vertical
|
||||
></v-divider> -->
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn
|
||||
outlined
|
||||
color="primary"
|
||||
dark
|
||||
class="mb-2"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
@click="fetchData()"
|
||||
class="mb-2 mr-2"
|
||||
>
|
||||
Nouvelle catégorie
|
||||
<v-icon>refresh</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<span class="headline">{{ formTitle }}</span>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-text-field
|
||||
v-model="editedItem.name"
|
||||
required
|
||||
label="Nom de la catégorie">
|
||||
</v-text-field>
|
||||
<v-text-field
|
||||
v-model="editedItem.icon"
|
||||
label="Icône de la catégorie">
|
||||
</v-text-field>
|
||||
<v-text-field
|
||||
v-model="editedItem.description"
|
||||
label="Description de la catégorie">
|
||||
</v-text-field>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="blue darken-1" text @click="close">Annuler</v-btn>
|
||||
<v-btn color="blue darken-1" text @click="save">Valider</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</v-toolbar>
|
||||
</template>
|
||||
<template v-slot:item.icon="{ item }">
|
||||
<div style="display:flex">
|
||||
<svg
|
||||
style="width: 1em; margin-right: .75em"
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="camera"
|
||||
class="svg-inline--fa fa-camera fa-w-16"
|
||||
role="img"
|
||||
:viewBox="'0 0 ' + item.icon.width + ' ' + item.icon.height"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="currentColor" :d="item.icon.path"></path>
|
||||
</svg>
|
||||
<span>{{ item.icon.id }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:item.description="{ item }">
|
||||
{{ item.description|less }}
|
||||
</template>
|
||||
<template v-slot:item.actions="{ item }">
|
||||
<v-btn icon small color="info">
|
||||
<v-icon
|
||||
small
|
||||
@click="editItem(item)"
|
||||
>
|
||||
mdi-pencil
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
<v-btn icon small color="error">
|
||||
<v-icon
|
||||
small
|
||||
@click="deleteItem(item)"
|
||||
>
|
||||
mdi-delete
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<template v-slot:no-data>
|
||||
<span>Aucune catégories n'ont été crées jusqu'a présent</span>
|
||||
</template>
|
||||
</v-data-table>
|
||||
<v-dialog v-model="dialog" max-width="500px">
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn
|
||||
color="primary"
|
||||
dark
|
||||
class="mb-2"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
Nouvelle catégorie
|
||||
</v-btn>
|
||||
</template>
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<span class="headline">{{ formTitle }}</span>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-text-field
|
||||
v-model="editedItem.name"
|
||||
required
|
||||
label="Nom de la catégorie">
|
||||
</v-text-field>
|
||||
<v-text-field
|
||||
v-model="editedItem.icon"
|
||||
label="Icône de la catégorie">
|
||||
</v-text-field>
|
||||
<v-text-field
|
||||
v-model="editedItem.description"
|
||||
label="Description de la catégorie">
|
||||
</v-text-field>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="grey darken-3" text @click="close">Annuler</v-btn>
|
||||
<v-btn color="blue darken-1" text @click="save">Valider</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</v-toolbar>
|
||||
</template>
|
||||
<template v-slot:item.icon="{ item }">
|
||||
<div style="display:flex">
|
||||
<svg
|
||||
style="width: 1em; margin-right: .75em"
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="camera"
|
||||
class="svg-inline--fa fa-camera fa-w-16"
|
||||
role="img"
|
||||
:viewBox="'0 0 ' + item.icon.width + ' ' + item.icon.height"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="currentColor" :d="item.icon.path"></path>
|
||||
</svg>
|
||||
<span>{{ item.icon.id }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:item.description="{ item }">
|
||||
{{ item.description|less }}
|
||||
</template>
|
||||
<template v-slot:item.actions="{ item }">
|
||||
<v-btn icon small color="info">
|
||||
<v-icon
|
||||
small
|
||||
@click="editItem(item)"
|
||||
>
|
||||
mdi-pencil
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
<v-btn icon small color="error">
|
||||
<v-icon
|
||||
small
|
||||
@click="deleteItem(item)"
|
||||
>
|
||||
mdi-delete
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<template v-slot:no-data>
|
||||
<span>Aucune catégories n'ont été crées jusqu'a présent</span>
|
||||
</template>
|
||||
</v-data-table>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
@ -119,7 +123,7 @@ export default {
|
|||
width: 200
|
||||
},
|
||||
{
|
||||
text: 'Icone',
|
||||
text: 'Icône',
|
||||
value: 'icon',
|
||||
width: 250
|
||||
},
|
||||
|
@ -160,6 +164,7 @@ export default {
|
|||
},
|
||||
|
||||
created () {
|
||||
this.$store.commit('SET_TITLE', 'Gestion des tags')
|
||||
this.fetchData()
|
||||
},
|
||||
|
||||
|
|
51
src/views/Delegate/Contact.vue
Normal file
51
src/views/Delegate/Contact.vue
Normal file
|
@ -0,0 +1,51 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="mb-2">
|
||||
<p class="text-body">
|
||||
Ici vous pouvez préciser quelques manières de contacter votre association, aucun des champs indiqués n'est obligatoire.
|
||||
</p>
|
||||
</div>
|
||||
<v-text-field
|
||||
prepend-icon="person"
|
||||
label="Personne responsable"
|
||||
outlined
|
||||
v-model="$store.state.data.contacts.person" />
|
||||
<v-text-field
|
||||
prepend-icon="call"
|
||||
label="Numéro de téléphone"
|
||||
outlined
|
||||
v-model="$store.state.data.contacts.phone" />
|
||||
<v-text-field
|
||||
prepend-icon="public"
|
||||
label="Site web"
|
||||
outlined
|
||||
v-model="$store.state.data.contacts.website" />
|
||||
<v-textarea
|
||||
prepend-icon="room"
|
||||
label="Adresse"
|
||||
outlined
|
||||
v-model="$store.state.data.contacts.address" />
|
||||
<v-text-field
|
||||
prepend-icon="$vuetify.icons.facebook"
|
||||
label="Compte facebook"
|
||||
outlined
|
||||
v-model="$store.state.data.contacts.facebook" />
|
||||
<v-text-field
|
||||
prepend-icon="$vuetify.icons.twitter"
|
||||
label="Compte twitter"
|
||||
outlined
|
||||
v-model="$store.state.data.contacts.twitter" />
|
||||
<v-text-field
|
||||
prepend-icon="$vuetify.icons.instagram"
|
||||
label="Compte instagram"
|
||||
outlined
|
||||
v-model="$store.state.data.contacts.instagram" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data: () => ({}),
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
5
src/views/Delegate/Gallery.vue
Normal file
5
src/views/Delegate/Gallery.vue
Normal file
|
@ -0,0 +1,5 @@
|
|||
<template>
|
||||
<div>
|
||||
Gallery
|
||||
</div>
|
||||
</template>
|
77
src/views/Delegate/Main.vue
Normal file
77
src/views/Delegate/Main.vue
Normal file
|
@ -0,0 +1,77 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-row class="mb-5">
|
||||
<v-col cols="12" sm="12" md="6" style="align-items: center; justify-content: center; display: flex;">
|
||||
<v-avatar size="200" style="border: 2px solid #95a5a6">
|
||||
<img :src="$store.state.data.thumbnail.location" />
|
||||
</v-avatar>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="12" md="6" style="align-items: center; justify-content: center; display: flex;">
|
||||
<v-btn @click="$refs.avatarEditor.toggle()" color="primary">Changer le logo</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-row style="align-items: center;">
|
||||
<v-col cols="12" sm="12" md="12">
|
||||
<v-text-field
|
||||
label="Nom de l'association"
|
||||
outlined
|
||||
prepend-icon="label"
|
||||
v-model="$store.state.data.name" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-textarea
|
||||
outlined
|
||||
label="Description ou résumé rapide"
|
||||
placeholder="Courte description qui apparaitra sur la page d'accueil"
|
||||
:rules="rules.descriptionShort"
|
||||
counter
|
||||
v-model="$store.state.data.descriptionShort" />
|
||||
|
||||
<AvatarEditor
|
||||
ref="avatarEditor"
|
||||
:loading="logoLoading"
|
||||
@submitted="handleAvatarEditorSubmitted"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AvatarEditor from '../../components/AvatarEditor'
|
||||
|
||||
export default {
|
||||
components: { AvatarEditor },
|
||||
|
||||
data: () => ({
|
||||
logoLoading: false,
|
||||
rules: {
|
||||
descriptionShort: [v => v.length <= 100 || 'Au maximum 100 caractères'],
|
||||
logo: [v => !v || v.size < 2000000 || 'La taille du logo doit être inférieur à 2 Mega Octets!']
|
||||
}
|
||||
}),
|
||||
|
||||
methods: {
|
||||
handleAvatarEditorSubmitted: function (blob) {
|
||||
const form = new FormData()
|
||||
form.append('file', blob, blob.filename)
|
||||
this.logoLoading = true
|
||||
this.$apitator.post('/delegate/thumbnail', form, { withAuth: true }).then(res => {
|
||||
this.logoLoading = false
|
||||
this.$store.commit('SET_DATA', { thumbnail: res.data.thumbnail })
|
||||
this.$refs.avatarEditor.finish()
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'success',
|
||||
text: 'Logo mis à jour !'
|
||||
})
|
||||
}).catch(() => {
|
||||
this.logoLoading = false
|
||||
this.$store.commit('ADD_ALERT', {
|
||||
color: 'error',
|
||||
text: 'Impossible de mettre à jour le logo'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
56
src/views/Delegate/Presentation.vue
Normal file
56
src/views/Delegate/Presentation.vue
Normal file
|
@ -0,0 +1,56 @@
|
|||
<template>
|
||||
<div>
|
||||
<tiptap-vuetify
|
||||
v-model="$store.state.data.descriptionLong"
|
||||
:extensions="tiptapExtensions"
|
||||
placeholder="Décrivez ici votre association plus en détail (section présentation)"
|
||||
min-height="15em"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import 'tiptap-vuetify/dist/main.css'
|
||||
import {
|
||||
TiptapVuetify,
|
||||
Heading,
|
||||
Bold,
|
||||
Italic,
|
||||
Underline,
|
||||
Paragraph,
|
||||
BulletList,
|
||||
OrderedList,
|
||||
ListItem,
|
||||
Link,
|
||||
Blockquote,
|
||||
HardBreak,
|
||||
HorizontalRule,
|
||||
History
|
||||
} from 'tiptap-vuetify'
|
||||
|
||||
export default {
|
||||
components: { TiptapVuetify },
|
||||
|
||||
data: () => ({
|
||||
tiptapExtensions: [
|
||||
History,
|
||||
Blockquote,
|
||||
Link,
|
||||
Underline,
|
||||
Italic,
|
||||
ListItem,
|
||||
BulletList,
|
||||
OrderedList,
|
||||
[Heading, {
|
||||
options: {
|
||||
levels: [1, 2, 3]
|
||||
}
|
||||
}],
|
||||
Bold,
|
||||
HorizontalRule,
|
||||
Paragraph,
|
||||
HardBreak
|
||||
]
|
||||
})
|
||||
}
|
||||
</script>
|
167
src/views/Delegate/Pricing.vue
Normal file
167
src/views/Delegate/Pricing.vue
Normal file
|
@ -0,0 +1,167 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="d-flex justify-end">
|
||||
<v-btn @click="openAddModal()" color="teal" outlined>
|
||||
<v-icon left>add</v-icon>
|
||||
Ajouter un tarif
|
||||
</v-btn>
|
||||
</div>
|
||||
<div
|
||||
v-if="$store.state.data.pricing.length === 0"
|
||||
class="mb-2 mt-2 d-flex justify-center">
|
||||
<span class="text-gray">
|
||||
Pas de tarifs ajoutés
|
||||
</span>
|
||||
</div>
|
||||
<v-row v-else>
|
||||
<v-col
|
||||
v-for="pricing in $store.state.data.pricing"
|
||||
:key="pricing._id"
|
||||
cols="12"
|
||||
sm="12"
|
||||
md="6"
|
||||
lg="6"
|
||||
>
|
||||
<v-card
|
||||
class="mx-auto"
|
||||
max-width="344"
|
||||
>
|
||||
<v-card-text>
|
||||
<div v-text="pricing.name" />
|
||||
<div
|
||||
v-text="pricing.priceLabel"
|
||||
class="mb-2 mt-2 display-1 text--primary" />
|
||||
<div
|
||||
v-text="pricing.description"
|
||||
class="text--primary" />
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn
|
||||
@click="openDeleteModal(pricing)"
|
||||
icon
|
||||
color="error"
|
||||
>
|
||||
<v-icon>delete</v-icon>
|
||||
</v-btn>
|
||||
<v-btn
|
||||
@click="openEditModal(pricing)"
|
||||
icon
|
||||
color="info"
|
||||
>
|
||||
<v-icon>edit</v-icon>
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-dialog
|
||||
max-width="500"
|
||||
v-model="itemModal">
|
||||
<v-card>
|
||||
<v-card-title v-text="itemModalTitle + ' un tarif'" />
|
||||
<v-card-text>
|
||||
<v-text-field
|
||||
v-model="item.priceLabel"
|
||||
label="Tarif"
|
||||
hint="Requis"
|
||||
/>
|
||||
<v-text-field
|
||||
v-model="item.name"
|
||||
label="Nom/Titre du tarif"
|
||||
hint="Requis"
|
||||
/>
|
||||
<v-text-field
|
||||
v-model="item.description"
|
||||
label="Description/Sous Titre du tarif"
|
||||
hint="Optionel"
|
||||
/>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-btn @click="itemModal = false" text color="primary">
|
||||
Fermer
|
||||
</v-btn>
|
||||
<v-spacer />
|
||||
<v-btn @click="save()" text color="success">
|
||||
Valider
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
<v-dialog
|
||||
max-width="500"
|
||||
v-model="deleteModal">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
Voulez vous vraiment supprimer ce tarif ?
|
||||
</v-card-title>
|
||||
<v-card-actions>
|
||||
<v-btn @click="deleteModal = false" text color="primary">
|
||||
Fermer
|
||||
</v-btn>
|
||||
<v-spacer />
|
||||
<v-btn @click="destroy()" text color="error">
|
||||
Supprimer
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data: () => ({
|
||||
itemModal: false,
|
||||
mode: '',
|
||||
item: {
|
||||
priceLabel: '',
|
||||
name: '',
|
||||
description: ''
|
||||
},
|
||||
toDelete: {},
|
||||
deleteModal: false,
|
||||
oldEdit: {}
|
||||
}),
|
||||
created () {
|
||||
this.item = JSON.parse('{"priceLabel":"3.14159 €","name":"Hippie","description":"Vomissures que ce juillets haleurs haleurs dont, roulant"}')
|
||||
},
|
||||
computed: {
|
||||
itemModalTitle () { return this.mode === 'add' ? 'Ajouter' : 'Editer' }
|
||||
},
|
||||
methods: {
|
||||
openAddModal () {
|
||||
this.mode = 'add'
|
||||
this.itemModal = true
|
||||
},
|
||||
save () {
|
||||
let pricing = this.$store.state.data.pricing
|
||||
if (this.mode === 'add') {
|
||||
this.item._id = Date.now().toString()
|
||||
pricing.push(this.item)
|
||||
} else {
|
||||
pricing = pricing.map(i => i === this.oldEdit ? this.item : i)
|
||||
}
|
||||
|
||||
this.$store.commit('SET_DATA', { pricing })
|
||||
this.itemModal = false
|
||||
},
|
||||
openEditModal (item) {
|
||||
this.item = item
|
||||
this.oldEdit = item
|
||||
this.mode = 'edit'
|
||||
this.itemModal = true
|
||||
},
|
||||
openDeleteModal (item) {
|
||||
this.deleteModal = true
|
||||
this.toDelete = item
|
||||
},
|
||||
destroy () {
|
||||
let pricing = this.$store.state.data.pricing
|
||||
pricing = pricing.filter(item => item !== this.toDelete)
|
||||
this.$store.commit('SET_DATA', { pricing })
|
||||
this.deleteModal = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
115
src/views/Delegate/Schedule.vue
Normal file
115
src/views/Delegate/Schedule.vue
Normal file
|
@ -0,0 +1,115 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="d-flex">
|
||||
<div
|
||||
class="schedule-item"
|
||||
v-for="item in scheduleData"
|
||||
:key="item.name"
|
||||
>
|
||||
<!--
|
||||
cols="12"
|
||||
sm="12"
|
||||
md="6"
|
||||
lg="6"
|
||||
-->
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<div class="subheading font-weight-bold">{{ item.name }}</div>
|
||||
<div class="text-subtitle-2">{{ item.description }}</div>
|
||||
</v-card-title>
|
||||
|
||||
<v-divider></v-divider>
|
||||
|
||||
<v-list dense>
|
||||
<v-list-item
|
||||
v-for="when in item.when"
|
||||
:key="when.day">
|
||||
<v-list-item-content>{{ when.day }}</v-list-item-content>
|
||||
<v-list-item-content class="align-end">
|
||||
{{ when.from }} - {{ when.to }}
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data: () => ({
|
||||
scheduleData: [
|
||||
{
|
||||
name: 'Création de robot super cool',
|
||||
description: 'Clita duo sanctus sed rebum elitr dolores et lorem stet',
|
||||
when: [
|
||||
{
|
||||
day: 'Lundi',
|
||||
from: '13:45',
|
||||
to: '14:25'
|
||||
},
|
||||
{
|
||||
day: 'Mardi',
|
||||
from: '10:30',
|
||||
to: '11:00'
|
||||
},
|
||||
{
|
||||
day: 'Mecredi',
|
||||
from: '09:00',
|
||||
to: '10:00'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Introduction à la programmation',
|
||||
description: 'Clita duo sanctus sed rebum elitr dolores et lorem stetEt ipsum sit et invidunt invidunt tempor lorem consetetur amet, takimata elitr sanctus nonumy at amet ut ut. Justo et stet sanctus no at at, sit ut sit vero rebum ipsum aliquyam vero. Ea at diam vero vero magna kasd ipsum. Diam ipsum amet consetetur sadipscing amet, sed lorem dolor.',
|
||||
when: [
|
||||
{
|
||||
day: 'Lundi',
|
||||
from: '13:45',
|
||||
to: '14:25'
|
||||
},
|
||||
{
|
||||
day: 'Mardi',
|
||||
from: '10:30',
|
||||
to: '11:00'
|
||||
},
|
||||
{
|
||||
day: 'Mecredi',
|
||||
from: '09:00',
|
||||
to: '10:00'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Ldsldsllds',
|
||||
description: 'Clita duo sanctus sed rebum elitr dolores et lorem stetEt ipsum sit et invidunt invidunt tempor lorem consetetur amet, takimata elitr sanctus nonumy at amet ut ut. Justo et stet sanctus no at at, sit ut sit vero rebum ipsum aliquyam vero. Ea at diam vero vero magna kasd ipsum. Diam ipsum amet consetetur sadipscing amet, sed lorem dolor.',
|
||||
when: [
|
||||
{
|
||||
day: 'Lundi',
|
||||
from: '13:45',
|
||||
to: '14:25'
|
||||
},
|
||||
{
|
||||
day: 'Mardi',
|
||||
from: '10:30',
|
||||
to: '11:00'
|
||||
},
|
||||
{
|
||||
day: 'Mecredi',
|
||||
from: '09:00',
|
||||
to: '10:00'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.schedule-item {
|
||||
width: 25em;
|
||||
}
|
||||
</style>
|
|
@ -1,10 +1,14 @@
|
|||
<template>
|
||||
<div class="home">
|
||||
<h2>Vous êtes :</h2>
|
||||
<ul>
|
||||
<li><a href="">Une association</a></li>
|
||||
<li><a href="">Administrateur de l'Espace Condorcet Centre Social</a></li>
|
||||
</ul>
|
||||
<v-main>
|
||||
<v-container>
|
||||
<h2>Vous êtes :</h2>
|
||||
<ul>
|
||||
<li><router-link :to="{name: 'DelegateMain'}">Une association</router-link></li>
|
||||
<li><router-link :to="{name: 'OrganizationList'}">Administrateur de l'Espace Condorcet Centre Social</router-link></li>
|
||||
</ul>
|
||||
</v-container>
|
||||
</v-main>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
387
yarn.lock
387
yarn.lock
|
@ -782,14 +782,6 @@
|
|||
"@babel/types" "^7.4.4"
|
||||
esutils "^2.0.2"
|
||||
|
||||
"@babel/runtime-corejs3@^7.8.3":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d"
|
||||
integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==
|
||||
dependencies:
|
||||
core-js-pure "^3.0.0"
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.6":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99"
|
||||
|
@ -937,9 +929,9 @@
|
|||
integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
|
||||
|
||||
"@types/glob@^7.1.1":
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987"
|
||||
integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
|
||||
integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
|
||||
dependencies:
|
||||
"@types/minimatch" "*"
|
||||
"@types/node" "*"
|
||||
|
@ -960,9 +952,9 @@
|
|||
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
||||
|
||||
"@types/node@*":
|
||||
version "14.0.14"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce"
|
||||
integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==
|
||||
version "14.0.23"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.23.tgz#676fa0883450ed9da0bb24156213636290892806"
|
||||
integrity sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw==
|
||||
|
||||
"@types/normalize-package-data@^2.4.0":
|
||||
version "2.4.0"
|
||||
|
@ -1494,14 +1486,14 @@ ajv-errors@^1.0.0:
|
|||
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
|
||||
|
||||
ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773"
|
||||
integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw==
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.1.tgz#b83ca89c5d42d69031f424cad49aada0236c6957"
|
||||
integrity sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==
|
||||
|
||||
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5:
|
||||
version "6.12.2"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
|
||||
integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
|
||||
version "6.12.3"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
|
||||
integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.1"
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
|
@ -1754,12 +1746,12 @@ atob@^2.1.2:
|
|||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||
|
||||
autoprefixer@^9.8.0:
|
||||
version "9.8.4"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.4.tgz#736f1012673a70fa3464671d78d41abd54512863"
|
||||
integrity sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A==
|
||||
version "9.8.5"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa"
|
||||
integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==
|
||||
dependencies:
|
||||
browserslist "^4.12.0"
|
||||
caniuse-lite "^1.0.30001087"
|
||||
caniuse-lite "^1.0.30001097"
|
||||
colorette "^1.2.0"
|
||||
normalize-range "^0.1.2"
|
||||
num2fraction "^1.2.2"
|
||||
|
@ -2061,12 +2053,12 @@ browserify-zlib@^0.2.0:
|
|||
pako "~1.0.5"
|
||||
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5:
|
||||
version "4.12.2"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711"
|
||||
integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw==
|
||||
version "4.13.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d"
|
||||
integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001088"
|
||||
electron-to-chromium "^1.3.483"
|
||||
caniuse-lite "^1.0.30001093"
|
||||
electron-to-chromium "^1.3.488"
|
||||
escalade "^3.0.1"
|
||||
node-releases "^1.1.58"
|
||||
|
||||
|
@ -2243,10 +2235,15 @@ caniuse-api@^3.0.0:
|
|||
lodash.memoize "^4.1.2"
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001087, caniuse-lite@^1.0.30001088:
|
||||
version "1.0.30001093"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001093.tgz#833e80f64b1a0455cbceed2a4a3baf19e4abd312"
|
||||
integrity sha512-0+ODNoOjtWD5eS9aaIpf4K0gQqZfILNY4WSNuYzeT1sXni+lMrrVjc0odEobJt6wrODofDZUX8XYi/5y7+xl8g==
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001097:
|
||||
version "1.0.30001099"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e"
|
||||
integrity sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA==
|
||||
|
||||
canvas-exif-orientation@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/canvas-exif-orientation/-/canvas-exif-orientation-0.4.0.tgz#b487f3701998a9e879eb104010b2a58115368b6b"
|
||||
integrity sha1-tIfzcBmYqeh56xBAELKlgRU2i2s=
|
||||
|
||||
case-sensitive-paths-webpack-plugin@^2.3.0:
|
||||
version "2.3.0"
|
||||
|
@ -2533,9 +2530,9 @@ color@^3.0.0:
|
|||
color-string "^1.5.2"
|
||||
|
||||
colorette@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63"
|
||||
integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw==
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
|
||||
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
|
||||
|
||||
combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||
version "1.0.8"
|
||||
|
@ -2708,11 +2705,6 @@ core-js-compat@^3.6.2, core-js-compat@^3.6.5:
|
|||
browserslist "^4.8.5"
|
||||
semver "7.0.0"
|
||||
|
||||
core-js-pure@^3.0.0:
|
||||
version "3.6.5"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
|
||||
integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
|
||||
|
||||
core-js@^2.4.0:
|
||||
version "2.6.11"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
|
||||
|
@ -3033,13 +3025,6 @@ decamelize@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
||||
|
||||
decamelize@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851"
|
||||
integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==
|
||||
dependencies:
|
||||
xregexp "^4.2.4"
|
||||
|
||||
decode-uri-component@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
|
@ -3349,10 +3334,10 @@ ejs@^2.6.1:
|
|||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
|
||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||
|
||||
electron-to-chromium@^1.3.483:
|
||||
version "1.3.485"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.485.tgz#ee67ba44fbe0dddc9dd439af532e593f6c8baaa6"
|
||||
integrity sha512-Qclz/MFjp6H1oMd1U1AWCWqT8DW/SaN7lUb6ejh03bD6lBoN2X8W2xhXfsU4rdjf7TWReb0ZOGxo6MjsFiEgzQ==
|
||||
electron-to-chromium@^1.3.488:
|
||||
version "1.3.497"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.497.tgz#de00f2f2f44c258c4577fbfbd5124b94c18bfa44"
|
||||
integrity sha512-sPdW5bUDZwiFtoonuZCUwRGzsZmKzcLM0bMVhp6SMCfUG+B3faENLx3cE+o+K0Jl+MPuNA9s9cScyFjOlixZpQ==
|
||||
|
||||
elegant-spinner@^1.0.1:
|
||||
version "1.0.1"
|
||||
|
@ -3961,6 +3946,13 @@ fastq@^1.6.0:
|
|||
dependencies:
|
||||
reusify "^1.0.4"
|
||||
|
||||
fault@^1.0.0:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13"
|
||||
integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==
|
||||
dependencies:
|
||||
format "^0.2.0"
|
||||
|
||||
faye-websocket@^0.10.0:
|
||||
version "0.10.0"
|
||||
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
|
||||
|
@ -4186,6 +4178,11 @@ form-data@~2.3.2:
|
|||
combined-stream "^1.0.6"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
format@^0.2.0:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
|
||||
integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
|
||||
|
||||
forwarded@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
|
||||
|
@ -4548,6 +4545,11 @@ highlight.js@^9.6.0:
|
|||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c"
|
||||
integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==
|
||||
|
||||
highlight.js@~10.1.0:
|
||||
version "10.1.1"
|
||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.1.1.tgz#691a2148a8d922bf12e52a294566a0d993b94c57"
|
||||
integrity sha512-b4L09127uVa+9vkMgPpdUQP78ickGbHEQTWeBrQFTJZ4/n2aihWOGS0ZoUqAwjVmfjhq/C76HRzkqwZhK4sBbg==
|
||||
|
||||
hmac-drbg@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||
|
@ -4846,9 +4848,9 @@ inherits@2.0.3:
|
|||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
inquirer@^7.0.0, inquirer@^7.1.0:
|
||||
version "7.3.0"
|
||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.0.tgz#aa3e7cb0c18a410c3c16cdd2bc9dcbe83c4d333e"
|
||||
integrity sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA==
|
||||
version "7.3.2"
|
||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.2.tgz#25245d2e32dc9f33dbe26eeaada231daa66e9c7c"
|
||||
integrity sha512-DF4osh1FM6l0RJc5YWYhSDB6TawiBRlbV9Cox8MWlidU218Tb7fm3lQTULyUJDfJ0tjbzl0W4q651mrCCEM55w==
|
||||
dependencies:
|
||||
ansi-escapes "^4.2.1"
|
||||
chalk "^4.1.0"
|
||||
|
@ -4856,7 +4858,7 @@ inquirer@^7.0.0, inquirer@^7.1.0:
|
|||
cli-width "^3.0.0"
|
||||
external-editor "^3.0.3"
|
||||
figures "^3.0.0"
|
||||
lodash "^4.17.15"
|
||||
lodash "^4.17.16"
|
||||
mute-stream "0.0.8"
|
||||
run-async "^2.4.0"
|
||||
rxjs "^6.6.0"
|
||||
|
@ -5625,10 +5627,10 @@ lodash.uniq@^4.5.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||
|
||||
lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3:
|
||||
version "4.17.15"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||
lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.3:
|
||||
version "4.17.19"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
||||
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
|
||||
|
||||
log-symbols@^1.0.2:
|
||||
version "1.0.2"
|
||||
|
@ -5677,6 +5679,14 @@ lower-case@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
|
||||
|
||||
lowlight@^1.14.0:
|
||||
version "1.14.0"
|
||||
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.14.0.tgz#83ebc143fec0f9e6c0d3deffe01be129ce56b108"
|
||||
integrity sha512-N2E7zTM7r1CwbzwspPxJvmjAbxljCPThTFawEX2Z7+P3NGrrvY54u8kyU16IY4qWfoVIxY8SYCS8jTkuG7TqYA==
|
||||
dependencies:
|
||||
fault "^1.0.0"
|
||||
highlight.js "~10.1.0"
|
||||
|
||||
lru-cache@^4.0.1, lru-cache@^4.1.2:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||
|
@ -6041,9 +6051,9 @@ negotiator@0.6.2:
|
|||
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
||||
|
||||
neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
||||
|
||||
nice-try@^1.0.4:
|
||||
version "1.0.5"
|
||||
|
@ -6101,9 +6111,9 @@ node-ipc@^9.1.1:
|
|||
vm-browserify "^1.0.1"
|
||||
|
||||
node-releases@^1.1.58:
|
||||
version "1.1.58"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935"
|
||||
integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==
|
||||
version "1.1.59"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.59.tgz#4d648330641cec704bff10f8e4fe28e453ab8e8e"
|
||||
integrity sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw==
|
||||
|
||||
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
|
||||
version "2.5.0"
|
||||
|
@ -6355,6 +6365,11 @@ ora@^3.4.0:
|
|||
strip-ansi "^5.2.0"
|
||||
wcwidth "^1.0.1"
|
||||
|
||||
orderedmap@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.1.1.tgz#c618e77611b3b21d0fe3edc92586265e0059c789"
|
||||
integrity sha512-3Ux8um0zXbVacKUkcytc0u3HgC0b0bBLT+I60r2J/En72cI0nZffqrA7Xtf2Hqs27j1g82llR5Mhbd0Z1XW4AQ==
|
||||
|
||||
original@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
|
||||
|
@ -6699,6 +6714,11 @@ pnp-webpack-plugin@^1.6.4:
|
|||
dependencies:
|
||||
ts-pnp "^1.1.6"
|
||||
|
||||
popper.js@^1.16.1:
|
||||
version "1.16.1"
|
||||
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b"
|
||||
integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==
|
||||
|
||||
portfinder@^1.0.26:
|
||||
version "1.0.26"
|
||||
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70"
|
||||
|
@ -7096,6 +7116,130 @@ promise-inflight@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
||||
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
|
||||
|
||||
prosemirror-collab@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.2.2.tgz#8d2c0e82779cfef5d051154bd0836428bd6d9c4a"
|
||||
integrity sha512-tBnHKMLgy5Qmx9MYVcLfs3pAyjtcqYYDd9kp3y+LSiQzkhMQDfZSV3NXWe4Gsly32adSef173BvObwfoSQL5MA==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
|
||||
prosemirror-commands@1.1.4, prosemirror-commands@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.4.tgz#991563e67623acab4f8c510fad1570f8b4693780"
|
||||
integrity sha512-kj4Qi+8h3EpJtZuuEDwZ9h2/QNGWDsIX/CzjmClxi9GhxWyBUMVUvIFk0mgdqHyX20lLeGmOpc0TLA5aPzgpWg==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-dropcursor@1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.2.tgz#28738c4ed7102e814d7a8a26d70018523fc7cd6d"
|
||||
integrity sha512-4c94OUGyobGnwcQI70OXyMhE/9T4aTgjU+CHxkd5c7D+jH/J0mKM/lk+jneFVKt7+E4/M0D9HzRPifu8U28Thw==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.1.0"
|
||||
prosemirror-view "^1.1.0"
|
||||
|
||||
prosemirror-gapcursor@1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.5.tgz#0c37fd6cbb1d7c46358c2e7397f8da9a8b5c6246"
|
||||
integrity sha512-SjbUZq5pgsBDuV3hu8GqgIpZR5eZvGLM+gPQTqjVVYSMUCfKW3EGXTEYaLHEl1bGduwqNC95O3bZflgtAb4L6w==
|
||||
dependencies:
|
||||
prosemirror-keymap "^1.0.0"
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-view "^1.0.0"
|
||||
|
||||
prosemirror-history@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.1.3.tgz#4f76a1e71db4ef7cdf0e13dec6d8da2aeaecd489"
|
||||
integrity sha512-zGDotijea+vnfnyyUGyiy1wfOQhf0B/b6zYcCouBV8yo6JmrE9X23M5q7Nf/nATywEZbgRLG70R4DmfSTC+gfg==
|
||||
dependencies:
|
||||
prosemirror-state "^1.2.2"
|
||||
prosemirror-transform "^1.0.0"
|
||||
rope-sequence "^1.3.0"
|
||||
|
||||
prosemirror-inputrules@1.1.2, prosemirror-inputrules@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz#487e46c763e1212a4577397aba7706139084f012"
|
||||
integrity sha512-Ja5Z3BWestlHYGvtSGqyvxMeB8QEuBjlHM8YnKtLGUXMDp965qdDV4goV8lJb17kIWHk7e7JNj6Catuoa3302g==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-keymap@1.1.4, prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz#8b481bf8389a5ac40d38dbd67ec3da2c7eac6a6d"
|
||||
integrity sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg==
|
||||
dependencies:
|
||||
prosemirror-state "^1.0.0"
|
||||
w3c-keyname "^2.2.0"
|
||||
|
||||
prosemirror-model@1.10.0, prosemirror-model@1.9.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.10.0, prosemirror-model@^1.8.1:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.9.1.tgz#8c08cf556f593c5f015548d2c1a6825661df087f"
|
||||
integrity sha512-Qblh8pm1c7Ll64sYLauwwzjimo/tFg1zW3Q3IWhKRhvfOEgRKqa6dC5pRrAa+XHOIjBFEYrqbi52J5bqA2dV8Q==
|
||||
dependencies:
|
||||
orderedmap "^1.1.0"
|
||||
|
||||
prosemirror-schema-list@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.1.2.tgz#310809209094b03425da7f5c337105074913da6c"
|
||||
integrity sha512-dgM9PwtM4twa5WsgSYMB+J8bwjnR43DAD3L9MsR9rKm/nZR5Y85xcjB7gusVMSsbQ2NomMZF03RE6No6mTnclQ==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-state@1.3.3, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.3:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.3.tgz#b2862866b14dec2b3ae1ab18229f2bd337651a2c"
|
||||
integrity sha512-PLXh2VJsIgvlgSTH6I2Yg6vk1CzPDp21DFreVpQtDMY2S6WaMmrQgDTLRcsrD8X38v8Yc873H7+ogdGzyIPn+w==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
prosemirror-transform "^1.0.0"
|
||||
|
||||
prosemirror-tables@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.1.0.tgz#e7fc65e57a44759b0b999d8c71294f79e5a4d54b"
|
||||
integrity sha512-E00+KSbDw65966GdiLBpqTNxIextw0RavlGmvdv/dyYbN9OTD0gzaoCU1S8MAbz4GLKmY9Y/g4nSiC1IL1ThQg==
|
||||
dependencies:
|
||||
prosemirror-keymap "^1.1.2"
|
||||
prosemirror-model "^1.8.1"
|
||||
prosemirror-state "^1.3.1"
|
||||
prosemirror-transform "^1.2.1"
|
||||
prosemirror-view "^1.13.3"
|
||||
|
||||
prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.2.6:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.2.7.tgz#ba0e291a3cb43e6b633b779d93f53d01f5dad570"
|
||||
integrity sha512-/107Lo2zeDgXuJBxb8s/clNu0Z2W8Gv3MKmkuSS/68Mcr7LBaUnN/Hj2g+GUxEJ7MpExCzFs65GrsNo2K9rxUQ==
|
||||
dependencies:
|
||||
prosemirror-model "^1.0.0"
|
||||
|
||||
prosemirror-utils@^0.9.6:
|
||||
version "0.9.6"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.6.tgz#3d97bd85897e3b535555867dc95a51399116a973"
|
||||
integrity sha512-UC+j9hQQ1POYfMc5p7UFxBTptRiGPR7Kkmbl3jVvU8VgQbkI89tR/GK+3QYC8n+VvBZrtAoCrJItNhWSxX3slA==
|
||||
|
||||
prosemirror-view@1.15.0:
|
||||
version "1.15.0"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.15.0.tgz#372102c91d05b3b0f371b3eb59aeacedb5011bba"
|
||||
integrity sha512-a7Q76sO/DCZr2UX2Rv1Rbw52cr9kVIz8iJOf/rq4mPN1NA3lugq2BKJgUMwlB3U4utyw3olLigqouRHM48NJyg==
|
||||
dependencies:
|
||||
prosemirror-model "^1.1.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.1.0"
|
||||
|
||||
prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.15.0:
|
||||
version "1.15.2"
|
||||
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.15.2.tgz#3f07881d11f18c033467591bbaec26b569bbc22c"
|
||||
integrity sha512-0wftmMDVD8VXj2HZgv6Rg//+tgJC0lpV9LkYlCiAkDLKsf4yW3Ozs5td1ZXqsyoqvX0ga/k5g2EyLbqOMmC1+w==
|
||||
dependencies:
|
||||
prosemirror-model "^1.1.0"
|
||||
prosemirror-state "^1.0.0"
|
||||
prosemirror-transform "^1.1.0"
|
||||
|
||||
proxy-addr@~2.0.5:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
|
||||
|
@ -7566,6 +7710,11 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
|
|||
hash-base "^3.0.0"
|
||||
inherits "^2.0.1"
|
||||
|
||||
rope-sequence@^1.3.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.2.tgz#a19e02d72991ca71feb6b5f8a91154e48e3c098b"
|
||||
integrity sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg==
|
||||
|
||||
run-async@^2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
||||
|
@ -8252,9 +8401,9 @@ strip-indent@^2.0.0:
|
|||
integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
|
||||
|
||||
strip-json-comments@^3.0.1:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
||||
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||
|
||||
stylehacks@^4.0.0:
|
||||
version "4.0.3"
|
||||
|
@ -8437,6 +8586,72 @@ timsort@^0.3.0:
|
|||
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
|
||||
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
|
||||
|
||||
tiptap-commands@^1.14.1:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.14.1.tgz#7c3c4d27e6d66701b2f308f79eee01ccde03e14a"
|
||||
integrity sha512-8yUkcUgTvEZqzhCJdWN7sY4IB/7IAnDtk0gcfXODOXyf+i7fMj4E/k741jlPxYSUFgWWYZWGks29EG6KJ2IQvQ==
|
||||
dependencies:
|
||||
prosemirror-commands "^1.1.4"
|
||||
prosemirror-inputrules "^1.1.2"
|
||||
prosemirror-model "^1.10.0"
|
||||
prosemirror-schema-list "^1.1.2"
|
||||
prosemirror-state "^1.3.3"
|
||||
prosemirror-tables "^1.1.0"
|
||||
prosemirror-utils "^0.9.6"
|
||||
tiptap-utils "^1.10.1"
|
||||
|
||||
tiptap-extensions@^1.14.0:
|
||||
version "1.31.1"
|
||||
resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.31.1.tgz#7b6cbd334f0484699d035533e11a2d02a26ffd8d"
|
||||
integrity sha512-fDaU+ghnK5/kTkS+HHn1TjljNv66y0ED1ppP1iszk7hmuBc1bo+XfFzhsViqcYi8QB9AeHzBEmvVF1fnKNar4A==
|
||||
dependencies:
|
||||
lowlight "^1.14.0"
|
||||
prosemirror-collab "^1.2.2"
|
||||
prosemirror-history "^1.1.3"
|
||||
prosemirror-model "^1.10.0"
|
||||
prosemirror-state "^1.3.3"
|
||||
prosemirror-tables "^1.1.0"
|
||||
prosemirror-transform "^1.2.6"
|
||||
prosemirror-utils "^0.9.6"
|
||||
prosemirror-view "^1.15.0"
|
||||
tiptap "^1.29.1"
|
||||
tiptap-commands "^1.14.1"
|
||||
|
||||
tiptap-utils@^1.10.1:
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.10.1.tgz#bb958fda0a00928e610bee0e004809bdc8827ddd"
|
||||
integrity sha512-ET3khlkapIPDPuuNou5PhXsI9PE1O8khlqltoE1mcD2eMBQ+q/P/knJNasmBywkZYXJEqJlZSeVufRL0oEH2ZQ==
|
||||
dependencies:
|
||||
prosemirror-model "^1.10.0"
|
||||
prosemirror-state "^1.3.3"
|
||||
prosemirror-tables "^1.1.0"
|
||||
prosemirror-utils "^0.9.6"
|
||||
|
||||
tiptap-vuetify@^2.23.0:
|
||||
version "2.23.0"
|
||||
resolved "https://registry.yarnpkg.com/tiptap-vuetify/-/tiptap-vuetify-2.23.0.tgz#dc6ad26bd029a6392ae86cc5eb9d4b173a211ac6"
|
||||
integrity sha512-Yr6ra2XYAxmF2wM+EALaAyTpiqtql3TPa651+aVAGKlkP3Vr3Ydm6+rtTA/GAlspX3IPq/x61DG4NDrKdMnZMQ==
|
||||
dependencies:
|
||||
popper.js "^1.16.1"
|
||||
tiptap "^1.16.2"
|
||||
tiptap-extensions "^1.14.0"
|
||||
|
||||
tiptap@^1.16.2, tiptap@^1.29.1:
|
||||
version "1.29.1"
|
||||
resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.29.1.tgz#9a8d8b360ce53491556f535b47a9a631e3a1808f"
|
||||
integrity sha512-clb92b4/Ej83/bGLCnV8V3vifFN99B1HOvlP9D0U3Ym0jKwnryvk285oWl7255D9bvjukSVwmx4vWnBIZmpGUA==
|
||||
dependencies:
|
||||
prosemirror-commands "1.1.4"
|
||||
prosemirror-dropcursor "1.3.2"
|
||||
prosemirror-gapcursor "1.1.5"
|
||||
prosemirror-inputrules "1.1.2"
|
||||
prosemirror-keymap "1.1.4"
|
||||
prosemirror-model "1.10.0"
|
||||
prosemirror-state "1.3.3"
|
||||
prosemirror-view "1.15.0"
|
||||
tiptap-commands "^1.14.1"
|
||||
tiptap-utils "^1.10.1"
|
||||
|
||||
tmp@^0.0.33:
|
||||
version "0.0.33"
|
||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
||||
|
@ -8880,6 +9095,14 @@ vue-cli-plugin-vuetify@^2.0.6:
|
|||
semver "^7.1.2"
|
||||
shelljs "^0.8.3"
|
||||
|
||||
vue-croppa@^1.3.8:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/vue-croppa/-/vue-croppa-1.3.8.tgz#1aac95bf5d94020de7bc1ea7ca61e3aadfff1811"
|
||||
integrity sha512-WwYgEKscTCD7BzhnbfRJfzWIU6RcMq2JRimB3aI5gGzpADmpKuqmDh9+oVfiZaEnpmRthgXZxcAvbxU6CeIU9w==
|
||||
dependencies:
|
||||
canvas-exif-orientation "^0.4.0"
|
||||
object-assign "^4.1.1"
|
||||
|
||||
vue-eslint-parser@^7.0.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83"
|
||||
|
@ -8947,9 +9170,9 @@ vue@^2.5.17, vue@^2.6.11:
|
|||
integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==
|
||||
|
||||
vuetify-loader@^1.3.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.5.0.tgz#511173c4d1498761210708f7e475dff60fcee8bb"
|
||||
integrity sha512-JC2EVAblox2FFWE8NIUoHvQmGnnGJLrHISo2Ngciov3mWEWpt2B3qfQ3CYwmUJ7nM99DQgYDdNs26Dg3bgKzEQ==
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.6.0.tgz#05df0805b3ab2ff0de198109d34f9da3f69da667"
|
||||
integrity sha512-1bx3YeZ712dT1+QMX+XSFlP0O5k5O5Ui9ysBBmUZ9bWkAEHWZJQI9soI+qG5qmeFxUC0L9QYMCIKP0hOL/pf3Q==
|
||||
dependencies:
|
||||
file-loader "^4.0.0"
|
||||
loader-utils "^1.2.0"
|
||||
|
@ -8964,6 +9187,11 @@ vuex@^3.4.0:
|
|||
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.5.1.tgz#f1b8dcea649bc25254cf4f4358081dbf5da18b3d"
|
||||
integrity sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw==
|
||||
|
||||
w3c-keyname@^2.2.0:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b"
|
||||
integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==
|
||||
|
||||
watchpack-chokidar2@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
|
||||
|
@ -9364,13 +9592,6 @@ ws@^6.0.0, ws@^6.2.1:
|
|||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
|
||||
xregexp@^4.2.4:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50"
|
||||
integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==
|
||||
dependencies:
|
||||
"@babel/runtime-corejs3" "^7.8.3"
|
||||
|
||||
xtend@^4.0.0, xtend@~4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||
|
@ -9429,12 +9650,12 @@ yargs@^13.3.2:
|
|||
yargs-parser "^13.1.2"
|
||||
|
||||
yargs@^15.0.0:
|
||||
version "15.4.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2"
|
||||
integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
|
||||
integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
|
||||
dependencies:
|
||||
cliui "^6.0.0"
|
||||
decamelize "^3.2.0"
|
||||
decamelize "^1.2.0"
|
||||
find-up "^4.1.0"
|
||||
get-caller-file "^2.0.1"
|
||||
require-directory "^2.1.1"
|
||||
|
|
Loading…
Reference in a new issue