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: {
|
rules: {
|
||||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
'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
|
# local env files
|
||||||
.env.local
|
.env.local
|
||||||
.env.*.local
|
.env.*.local
|
||||||
|
.env
|
||||||
|
|
||||||
# Log files
|
# Log files
|
||||||
npm-debug.log*
|
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": {
|
"dependencies": {
|
||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"register-service-worker": "^1.7.1",
|
"register-service-worker": "^1.7.1",
|
||||||
|
"tiptap-vuetify": "^2.23.0",
|
||||||
"vue": "^2.6.11",
|
"vue": "^2.6.11",
|
||||||
"vue-apitator": "^0.0.16",
|
"vue-apitator": "^0.0.16",
|
||||||
"vue-class-component": "^7.2.3",
|
"vue-class-component": "^7.2.3",
|
||||||
|
"vue-croppa": "^1.3.8",
|
||||||
"vue-property-decorator": "^8.4.2",
|
"vue-property-decorator": "^8.4.2",
|
||||||
"vue-router": "^3.2.0",
|
"vue-router": "^3.2.0",
|
||||||
"vuetify": "^2.2.11",
|
"vuetify": "^2.2.11",
|
||||||
|
@ -44,13 +46,7 @@
|
||||||
"vue-template-compiler": "^2.6.11",
|
"vue-template-compiler": "^2.6.11",
|
||||||
"vuetify-loader": "^1.3.0"
|
"vuetify-loader": "^1.3.0"
|
||||||
},
|
},
|
||||||
"gitHooks": {
|
"resolutions": {
|
||||||
"pre-commit": "lint-staged"
|
"prosemirror-model": "1.9.1"
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"*.{js,jsx,vue,ts,tsx}": [
|
|
||||||
"vue-cli-service lint",
|
|
||||||
"git add"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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=Roboto:100,300,400,500,700,900">
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons"/>
|
<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">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<noscript>
|
<noscript>
|
||||||
|
|
|
@ -16,6 +16,10 @@ export default Vue.extend({
|
||||||
GlobalSnackbar
|
GlobalSnackbar
|
||||||
},
|
},
|
||||||
|
|
||||||
|
created () {
|
||||||
|
console.log('Using ' + process.env.VUE_APP_BASE_URL)
|
||||||
|
},
|
||||||
|
|
||||||
data: () => ({})
|
data: () => ({})
|
||||||
})
|
})
|
||||||
</script>
|
</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>
|
<template>
|
||||||
<div>
|
<v-main>
|
||||||
<div v-if="enabled">
|
<div v-if="enabled">
|
||||||
<v-app-bar
|
<v-app-bar
|
||||||
app
|
app
|
||||||
|
@ -8,10 +8,12 @@
|
||||||
dark
|
dark
|
||||||
>
|
>
|
||||||
<v-app-bar-nav-icon @click.stop="drawer = !drawer"></v-app-bar-nav-icon>
|
<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-spacer></v-spacer>
|
||||||
|
<v-btn icon @click="logout">
|
||||||
|
<v-icon>exit_to_app</v-icon>
|
||||||
|
</v-btn>
|
||||||
</v-app-bar>
|
</v-app-bar>
|
||||||
|
|
||||||
<v-navigation-drawer
|
<v-navigation-drawer
|
||||||
v-model="drawer"
|
v-model="drawer"
|
||||||
app
|
app
|
||||||
|
@ -35,38 +37,40 @@
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-navigation-drawer>
|
</v-navigation-drawer>
|
||||||
|
<v-container fluid>
|
||||||
<v-main>
|
<router-view></router-view>
|
||||||
<v-container fluid>
|
</v-container>
|
||||||
<router-view></router-view>
|
|
||||||
</v-container>
|
|
||||||
</v-main>
|
|
||||||
</div>
|
</div>
|
||||||
<v-main v-else>
|
<div v-if="!enabled && loading" class="d-flex align-center justify-center mt-10 pt-10">
|
||||||
<div v-if="!enabled && loading">
|
<v-progress-circular indeterminate color="primary" />
|
||||||
<span>Chargement...</span>
|
</div>
|
||||||
</div>
|
<div v-if="!enabled && !loading" class="d-flex align-center justify-center mt-5">
|
||||||
<div v-if="!enabled && !loading">
|
<v-card max-width="600">
|
||||||
<div class="d-flex align-center justify-center mt-5">
|
<v-card-title>
|
||||||
<v-card>
|
Connexion au panel administrateur
|
||||||
<v-card-title>
|
</v-card-title>
|
||||||
Connexion au panel administrateur
|
<v-card-text>
|
||||||
</v-card-title>
|
<p>
|
||||||
<v-card-text>
|
Vous n'êtes pas encore connecté à l'interface d'administration veuillez copier-coller le token dans la boîte ci-dessous.
|
||||||
<p>
|
</p>
|
||||||
Vous n'êtes pas encore connecté à l'interface d'administration veuillez copier-coller le token dans la boîte ci-dessous.
|
<v-text-field
|
||||||
</p>
|
v-on:keydown.enter="submitForm()"
|
||||||
<v-text-field autofocus label="Token" v-model="token" />
|
autofocus
|
||||||
</v-card-text>
|
label="Token"
|
||||||
<v-card-actions>
|
v-model="token" />
|
||||||
<v-spacer />
|
</v-card-text>
|
||||||
<v-btn color="primary" @click="init" :disabled="token === ''">Se connecter</v-btn>
|
<v-card-actions>
|
||||||
</v-card-actions>
|
<v-spacer />
|
||||||
</v-card>
|
<v-btn
|
||||||
</div>
|
color="primary"
|
||||||
</div>
|
@click="submitForm()"
|
||||||
</v-main>
|
:disabled="token === ''">
|
||||||
</div>
|
Se connecter
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</div>
|
||||||
|
</v-main>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -99,7 +103,7 @@ export default {
|
||||||
}
|
}
|
||||||
this.$apitator.setAuthorizationToken(adminToken)
|
this.$apitator.setAuthorizationToken(adminToken)
|
||||||
// verify the token
|
// verify the token
|
||||||
this.$apitator.get('/admin', { withAuth: true }).then(res => {
|
this.$apitator.get('/admin', { withAuth: true }).then(() => {
|
||||||
window.localStorage.setItem('adminToken', adminToken)
|
window.localStorage.setItem('adminToken', adminToken)
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.enabled = true
|
this.enabled = true
|
||||||
|
@ -112,11 +116,16 @@ export default {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
submitForm () {
|
||||||
|
if (this.token !== '') {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
logout () {
|
||||||
|
window.localStorage.removeItem('adminToken')
|
||||||
|
this.$router.push('/')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</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 './registerServiceWorker'
|
||||||
import router from './router'
|
import router from './router'
|
||||||
import store from './store'
|
import store from './store'
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
import Croppa from 'vue-croppa'
|
||||||
|
|
||||||
import vuetify from './plugins/vuetify'
|
import vuetify from './plugins/vuetify'
|
||||||
import apitator from 'vue-apitator'
|
import apitator from 'vue-apitator'
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
import { TiptapVuetifyPlugin } from 'tiptap-vuetify'
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
Vue.use(apitator, {
|
Vue.use(apitator, {
|
||||||
baseUrl: 'http://localhost:8001'
|
baseUrl: process.env.VUE_APP_BASE_URL
|
||||||
})
|
})
|
||||||
Vue.filter('less', (s: string, l = 60) => {
|
Vue.filter('less', (s: string, l = 60) => {
|
||||||
return s.substr(0, l) + (s.length > 60 ? '...' : '')
|
return s.substr(0, l) + (s.length > 60 ? '...' : '')
|
||||||
})
|
})
|
||||||
|
Vue.use(TiptapVuetifyPlugin, {
|
||||||
|
vuetify,
|
||||||
|
iconsGroup: 'md'
|
||||||
|
})
|
||||||
|
Vue.use(Croppa)
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
router,
|
router,
|
||||||
|
|
|
@ -1,7 +1,28 @@
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import Vuetify from 'vuetify/lib'
|
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)
|
Vue.use(Vuetify)
|
||||||
|
|
||||||
export default new 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')
|
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: '',
|
color: '',
|
||||||
text: '',
|
text: '',
|
||||||
enabled: false
|
enabled: false
|
||||||
|
},
|
||||||
|
title: '',
|
||||||
|
data: {
|
||||||
|
name: '',
|
||||||
|
descriptionShort: '',
|
||||||
|
descriptionLong: '',
|
||||||
|
thumbnail: {
|
||||||
|
key: '',
|
||||||
|
contentType: '',
|
||||||
|
location: '',
|
||||||
|
type: 'thumbnail'
|
||||||
|
},
|
||||||
|
contacts: {
|
||||||
|
facebook: '',
|
||||||
|
twitter: '',
|
||||||
|
instagram: '',
|
||||||
|
website: '',
|
||||||
|
address: '',
|
||||||
|
person: '',
|
||||||
|
email: '',
|
||||||
|
phone: ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
|
SET_TITLE (state, payload) {
|
||||||
|
state.title = payload
|
||||||
|
},
|
||||||
ADD_ALERT (state, payload) {
|
ADD_ALERT (state, payload) {
|
||||||
state.alert = {
|
state.alert = {
|
||||||
color: payload.color,
|
color: payload.color,
|
||||||
|
@ -21,6 +46,11 @@ export default new Vuex.Store({
|
||||||
},
|
},
|
||||||
DISABLE_ALERT (state) {
|
DISABLE_ALERT (state) {
|
||||||
state.alert.enabled = false
|
state.alert.enabled = false
|
||||||
|
},
|
||||||
|
SET_DATA (state, payload) {
|
||||||
|
if (payload !== null) {
|
||||||
|
state.data = { ...state.data, ...payload }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
|
|
|
@ -1,13 +1,515 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<v-row no-gutters class="d-flex justify-center">
|
||||||
OrganizationList
|
<v-col cols="12" xl="8" md="10" sm="12">
|
||||||
</div>
|
<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>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
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>
|
</script>
|
||||||
|
|
|
@ -1,110 +1,114 @@
|
||||||
<template>
|
<template>
|
||||||
<v-data-table
|
<v-row no-gutters class="d-flex justify-center">
|
||||||
:headers="headers"
|
<v-col cols="12" xl="8" md="10" sm="12">
|
||||||
:items="tags"
|
<v-data-table
|
||||||
sort-by="calories"
|
:headers="headers"
|
||||||
class="elevation-1"
|
:items="tags"
|
||||||
>
|
sort-by="name"
|
||||||
<template v-slot:top>
|
class="elevation-1"
|
||||||
<v-toolbar flat color="white">
|
>
|
||||||
<v-toolbar-title>Gestion des catégories</v-toolbar-title>
|
<template v-slot:top>
|
||||||
<!-- <v-divider
|
<v-toolbar flat color="white">
|
||||||
class="mx-4"
|
<v-toolbar-title>Gestion des catégories</v-toolbar-title>
|
||||||
inset
|
<!-- <v-divider
|
||||||
vertical
|
class="mx-4"
|
||||||
></v-divider> -->
|
inset
|
||||||
<v-spacer></v-spacer>
|
vertical
|
||||||
<v-btn
|
></v-divider> -->
|
||||||
outlined
|
<v-spacer></v-spacer>
|
||||||
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
|
<v-btn
|
||||||
|
outlined
|
||||||
color="primary"
|
color="primary"
|
||||||
dark
|
dark
|
||||||
class="mb-2"
|
@click="fetchData()"
|
||||||
v-bind="attrs"
|
class="mb-2 mr-2"
|
||||||
v-on="on"
|
|
||||||
>
|
>
|
||||||
Nouvelle catégorie
|
<v-icon>refresh</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</template>
|
<v-dialog v-model="dialog" max-width="500px">
|
||||||
<v-card>
|
<template v-slot:activator="{ on, attrs }">
|
||||||
<v-card-title>
|
<v-btn
|
||||||
<span class="headline">{{ formTitle }}</span>
|
color="primary"
|
||||||
</v-card-title>
|
dark
|
||||||
<v-card-text>
|
class="mb-2"
|
||||||
<v-text-field
|
v-bind="attrs"
|
||||||
v-model="editedItem.name"
|
v-on="on"
|
||||||
required
|
>
|
||||||
label="Nom de la catégorie">
|
Nouvelle catégorie
|
||||||
</v-text-field>
|
</v-btn>
|
||||||
<v-text-field
|
</template>
|
||||||
v-model="editedItem.icon"
|
<v-card>
|
||||||
label="Icône de la catégorie">
|
<v-card-title>
|
||||||
</v-text-field>
|
<span class="headline">{{ formTitle }}</span>
|
||||||
<v-text-field
|
</v-card-title>
|
||||||
v-model="editedItem.description"
|
<v-card-text>
|
||||||
label="Description de la catégorie">
|
<v-text-field
|
||||||
</v-text-field>
|
v-model="editedItem.name"
|
||||||
</v-card-text>
|
required
|
||||||
<v-card-actions>
|
label="Nom de la catégorie">
|
||||||
<v-spacer></v-spacer>
|
</v-text-field>
|
||||||
<v-btn color="blue darken-1" text @click="close">Annuler</v-btn>
|
<v-text-field
|
||||||
<v-btn color="blue darken-1" text @click="save">Valider</v-btn>
|
v-model="editedItem.icon"
|
||||||
</v-card-actions>
|
label="Icône de la catégorie">
|
||||||
</v-card>
|
</v-text-field>
|
||||||
</v-dialog>
|
<v-text-field
|
||||||
</v-toolbar>
|
v-model="editedItem.description"
|
||||||
</template>
|
label="Description de la catégorie">
|
||||||
<template v-slot:item.icon="{ item }">
|
</v-text-field>
|
||||||
<div style="display:flex">
|
</v-card-text>
|
||||||
<svg
|
<v-card-actions>
|
||||||
style="width: 1em; margin-right: .75em"
|
<v-spacer></v-spacer>
|
||||||
aria-hidden="true"
|
<v-btn color="grey darken-3" text @click="close">Annuler</v-btn>
|
||||||
focusable="false"
|
<v-btn color="blue darken-1" text @click="save">Valider</v-btn>
|
||||||
data-prefix="fas"
|
</v-card-actions>
|
||||||
data-icon="camera"
|
</v-card>
|
||||||
class="svg-inline--fa fa-camera fa-w-16"
|
</v-dialog>
|
||||||
role="img"
|
</v-toolbar>
|
||||||
:viewBox="'0 0 ' + item.icon.width + ' ' + item.icon.height"
|
</template>
|
||||||
xmlns="http://www.w3.org/2000/svg">
|
<template v-slot:item.icon="{ item }">
|
||||||
<path fill="currentColor" :d="item.icon.path"></path>
|
<div style="display:flex">
|
||||||
</svg>
|
<svg
|
||||||
<span>{{ item.icon.id }}</span>
|
style="width: 1em; margin-right: .75em"
|
||||||
</div>
|
aria-hidden="true"
|
||||||
</template>
|
focusable="false"
|
||||||
<template v-slot:item.description="{ item }">
|
data-prefix="fas"
|
||||||
{{ item.description|less }}
|
data-icon="camera"
|
||||||
</template>
|
class="svg-inline--fa fa-camera fa-w-16"
|
||||||
<template v-slot:item.actions="{ item }">
|
role="img"
|
||||||
<v-btn icon small color="info">
|
:viewBox="'0 0 ' + item.icon.width + ' ' + item.icon.height"
|
||||||
<v-icon
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
small
|
<path fill="currentColor" :d="item.icon.path"></path>
|
||||||
@click="editItem(item)"
|
</svg>
|
||||||
>
|
<span>{{ item.icon.id }}</span>
|
||||||
mdi-pencil
|
</div>
|
||||||
</v-icon>
|
</template>
|
||||||
</v-btn>
|
<template v-slot:item.description="{ item }">
|
||||||
<v-btn icon small color="error">
|
{{ item.description|less }}
|
||||||
<v-icon
|
</template>
|
||||||
small
|
<template v-slot:item.actions="{ item }">
|
||||||
@click="deleteItem(item)"
|
<v-btn icon small color="info">
|
||||||
>
|
<v-icon
|
||||||
mdi-delete
|
small
|
||||||
</v-icon>
|
@click="editItem(item)"
|
||||||
</v-btn>
|
>
|
||||||
</template>
|
mdi-pencil
|
||||||
<template v-slot:no-data>
|
</v-icon>
|
||||||
<span>Aucune catégories n'ont été crées jusqu'a présent</span>
|
</v-btn>
|
||||||
</template>
|
<v-btn icon small color="error">
|
||||||
</v-data-table>
|
<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>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -119,7 +123,7 @@ export default {
|
||||||
width: 200
|
width: 200
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Icone',
|
text: 'Icône',
|
||||||
value: 'icon',
|
value: 'icon',
|
||||||
width: 250
|
width: 250
|
||||||
},
|
},
|
||||||
|
@ -160,6 +164,7 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
created () {
|
created () {
|
||||||
|
this.$store.commit('SET_TITLE', 'Gestion des tags')
|
||||||
this.fetchData()
|
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>
|
<template>
|
||||||
<div class="home">
|
<div class="home">
|
||||||
<h2>Vous êtes :</h2>
|
<v-main>
|
||||||
<ul>
|
<v-container>
|
||||||
<li><a href="">Une association</a></li>
|
<h2>Vous êtes :</h2>
|
||||||
<li><a href="">Administrateur de l'Espace Condorcet Centre Social</a></li>
|
<ul>
|
||||||
</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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
387
yarn.lock
387
yarn.lock
|
@ -782,14 +782,6 @@
|
||||||
"@babel/types" "^7.4.4"
|
"@babel/types" "^7.4.4"
|
||||||
esutils "^2.0.2"
|
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":
|
"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.6":
|
||||||
version "7.10.4"
|
version "7.10.4"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99"
|
||||||
|
@ -937,9 +929,9 @@
|
||||||
integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
|
integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
|
||||||
|
|
||||||
"@types/glob@^7.1.1":
|
"@types/glob@^7.1.1":
|
||||||
version "7.1.2"
|
version "7.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987"
|
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
|
||||||
integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==
|
integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/minimatch" "*"
|
"@types/minimatch" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
@ -960,9 +952,9 @@
|
||||||
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "14.0.14"
|
version "14.0.23"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.23.tgz#676fa0883450ed9da0bb24156213636290892806"
|
||||||
integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==
|
integrity sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw==
|
||||||
|
|
||||||
"@types/normalize-package-data@^2.4.0":
|
"@types/normalize-package-data@^2.4.0":
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
|
@ -1494,14 +1486,14 @@ ajv-errors@^1.0.0:
|
||||||
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
|
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
|
||||||
|
|
||||||
ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
|
ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
|
||||||
version "3.5.0"
|
version "3.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773"
|
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.1.tgz#b83ca89c5d42d69031f424cad49aada0236c6957"
|
||||||
integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw==
|
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:
|
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5:
|
||||||
version "6.12.2"
|
version "6.12.3"
|
||||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
|
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
|
||||||
integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
|
integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-deep-equal "^3.1.1"
|
fast-deep-equal "^3.1.1"
|
||||||
fast-json-stable-stringify "^2.0.0"
|
fast-json-stable-stringify "^2.0.0"
|
||||||
|
@ -1754,12 +1746,12 @@ atob@^2.1.2:
|
||||||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||||
|
|
||||||
autoprefixer@^9.8.0:
|
autoprefixer@^9.8.0:
|
||||||
version "9.8.4"
|
version "9.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.4.tgz#736f1012673a70fa3464671d78d41abd54512863"
|
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa"
|
||||||
integrity sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A==
|
integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist "^4.12.0"
|
browserslist "^4.12.0"
|
||||||
caniuse-lite "^1.0.30001087"
|
caniuse-lite "^1.0.30001097"
|
||||||
colorette "^1.2.0"
|
colorette "^1.2.0"
|
||||||
normalize-range "^0.1.2"
|
normalize-range "^0.1.2"
|
||||||
num2fraction "^1.2.2"
|
num2fraction "^1.2.2"
|
||||||
|
@ -2061,12 +2053,12 @@ browserify-zlib@^0.2.0:
|
||||||
pako "~1.0.5"
|
pako "~1.0.5"
|
||||||
|
|
||||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5:
|
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5:
|
||||||
version "4.12.2"
|
version "4.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711"
|
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d"
|
||||||
integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw==
|
integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite "^1.0.30001088"
|
caniuse-lite "^1.0.30001093"
|
||||||
electron-to-chromium "^1.3.483"
|
electron-to-chromium "^1.3.488"
|
||||||
escalade "^3.0.1"
|
escalade "^3.0.1"
|
||||||
node-releases "^1.1.58"
|
node-releases "^1.1.58"
|
||||||
|
|
||||||
|
@ -2243,10 +2235,15 @@ caniuse-api@^3.0.0:
|
||||||
lodash.memoize "^4.1.2"
|
lodash.memoize "^4.1.2"
|
||||||
lodash.uniq "^4.5.0"
|
lodash.uniq "^4.5.0"
|
||||||
|
|
||||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001087, caniuse-lite@^1.0.30001088:
|
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001097:
|
||||||
version "1.0.30001093"
|
version "1.0.30001099"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001093.tgz#833e80f64b1a0455cbceed2a4a3baf19e4abd312"
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e"
|
||||||
integrity sha512-0+ODNoOjtWD5eS9aaIpf4K0gQqZfILNY4WSNuYzeT1sXni+lMrrVjc0odEobJt6wrODofDZUX8XYi/5y7+xl8g==
|
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:
|
case-sensitive-paths-webpack-plugin@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
|
@ -2533,9 +2530,9 @@ color@^3.0.0:
|
||||||
color-string "^1.5.2"
|
color-string "^1.5.2"
|
||||||
|
|
||||||
colorette@^1.2.0:
|
colorette@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63"
|
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
|
||||||
integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw==
|
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
|
||||||
|
|
||||||
combined-stream@^1.0.6, combined-stream@~1.0.6:
|
combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||||
version "1.0.8"
|
version "1.0.8"
|
||||||
|
@ -2708,11 +2705,6 @@ core-js-compat@^3.6.2, core-js-compat@^3.6.5:
|
||||||
browserslist "^4.8.5"
|
browserslist "^4.8.5"
|
||||||
semver "7.0.0"
|
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:
|
core-js@^2.4.0:
|
||||||
version "2.6.11"
|
version "2.6.11"
|
||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
|
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"
|
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||||
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
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:
|
decode-uri-component@^0.2.0:
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
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"
|
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
|
||||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||||
|
|
||||||
electron-to-chromium@^1.3.483:
|
electron-to-chromium@^1.3.488:
|
||||||
version "1.3.485"
|
version "1.3.497"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.485.tgz#ee67ba44fbe0dddc9dd439af532e593f6c8baaa6"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.497.tgz#de00f2f2f44c258c4577fbfbd5124b94c18bfa44"
|
||||||
integrity sha512-Qclz/MFjp6H1oMd1U1AWCWqT8DW/SaN7lUb6ejh03bD6lBoN2X8W2xhXfsU4rdjf7TWReb0ZOGxo6MjsFiEgzQ==
|
integrity sha512-sPdW5bUDZwiFtoonuZCUwRGzsZmKzcLM0bMVhp6SMCfUG+B3faENLx3cE+o+K0Jl+MPuNA9s9cScyFjOlixZpQ==
|
||||||
|
|
||||||
elegant-spinner@^1.0.1:
|
elegant-spinner@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
|
@ -3961,6 +3946,13 @@ fastq@^1.6.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
reusify "^1.0.4"
|
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:
|
faye-websocket@^0.10.0:
|
||||||
version "0.10.0"
|
version "0.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
|
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"
|
combined-stream "^1.0.6"
|
||||||
mime-types "^2.1.12"
|
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:
|
forwarded@~0.1.2:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
|
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"
|
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c"
|
||||||
integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==
|
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:
|
hmac-drbg@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
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=
|
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||||
|
|
||||||
inquirer@^7.0.0, inquirer@^7.1.0:
|
inquirer@^7.0.0, inquirer@^7.1.0:
|
||||||
version "7.3.0"
|
version "7.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.0.tgz#aa3e7cb0c18a410c3c16cdd2bc9dcbe83c4d333e"
|
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.2.tgz#25245d2e32dc9f33dbe26eeaada231daa66e9c7c"
|
||||||
integrity sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA==
|
integrity sha512-DF4osh1FM6l0RJc5YWYhSDB6TawiBRlbV9Cox8MWlidU218Tb7fm3lQTULyUJDfJ0tjbzl0W4q651mrCCEM55w==
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-escapes "^4.2.1"
|
ansi-escapes "^4.2.1"
|
||||||
chalk "^4.1.0"
|
chalk "^4.1.0"
|
||||||
|
@ -4856,7 +4858,7 @@ inquirer@^7.0.0, inquirer@^7.1.0:
|
||||||
cli-width "^3.0.0"
|
cli-width "^3.0.0"
|
||||||
external-editor "^3.0.3"
|
external-editor "^3.0.3"
|
||||||
figures "^3.0.0"
|
figures "^3.0.0"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.16"
|
||||||
mute-stream "0.0.8"
|
mute-stream "0.0.8"
|
||||||
run-async "^2.4.0"
|
run-async "^2.4.0"
|
||||||
rxjs "^6.6.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"
|
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||||
|
|
||||||
lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3:
|
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.15"
|
version "4.17.19"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
||||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
|
||||||
|
|
||||||
log-symbols@^1.0.2:
|
log-symbols@^1.0.2:
|
||||||
version "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"
|
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||||
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
|
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:
|
lru-cache@^4.0.1, lru-cache@^4.1.2:
|
||||||
version "4.1.5"
|
version "4.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
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==
|
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
||||||
|
|
||||||
neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
|
neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
|
||||||
version "2.6.1"
|
version "2.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
||||||
|
|
||||||
nice-try@^1.0.4:
|
nice-try@^1.0.4:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
|
@ -6101,9 +6111,9 @@ node-ipc@^9.1.1:
|
||||||
vm-browserify "^1.0.1"
|
vm-browserify "^1.0.1"
|
||||||
|
|
||||||
node-releases@^1.1.58:
|
node-releases@^1.1.58:
|
||||||
version "1.1.58"
|
version "1.1.59"
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.59.tgz#4d648330641cec704bff10f8e4fe28e453ab8e8e"
|
||||||
integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==
|
integrity sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw==
|
||||||
|
|
||||||
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
|
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
|
@ -6355,6 +6365,11 @@ ora@^3.4.0:
|
||||||
strip-ansi "^5.2.0"
|
strip-ansi "^5.2.0"
|
||||||
wcwidth "^1.0.1"
|
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:
|
original@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
|
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
|
||||||
|
@ -6699,6 +6714,11 @@ pnp-webpack-plugin@^1.6.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
ts-pnp "^1.1.6"
|
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:
|
portfinder@^1.0.26:
|
||||||
version "1.0.26"
|
version "1.0.26"
|
||||||
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70"
|
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"
|
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
|
||||||
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
|
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:
|
proxy-addr@~2.0.5:
|
||||||
version "2.0.6"
|
version "2.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
|
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"
|
hash-base "^3.0.0"
|
||||||
inherits "^2.0.1"
|
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:
|
run-async@^2.4.0:
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
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=
|
integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
|
||||||
|
|
||||||
strip-json-comments@^3.0.1:
|
strip-json-comments@^3.0.1:
|
||||||
version "3.1.0"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||||
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||||
|
|
||||||
stylehacks@^4.0.0:
|
stylehacks@^4.0.0:
|
||||||
version "4.0.3"
|
version "4.0.3"
|
||||||
|
@ -8437,6 +8586,72 @@ timsort@^0.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
|
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
|
||||||
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
|
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:
|
tmp@^0.0.33:
|
||||||
version "0.0.33"
|
version "0.0.33"
|
||||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
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"
|
semver "^7.1.2"
|
||||||
shelljs "^0.8.3"
|
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:
|
vue-eslint-parser@^7.0.0:
|
||||||
version "7.1.0"
|
version "7.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83"
|
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==
|
integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==
|
||||||
|
|
||||||
vuetify-loader@^1.3.0:
|
vuetify-loader@^1.3.0:
|
||||||
version "1.5.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.5.0.tgz#511173c4d1498761210708f7e475dff60fcee8bb"
|
resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.6.0.tgz#05df0805b3ab2ff0de198109d34f9da3f69da667"
|
||||||
integrity sha512-JC2EVAblox2FFWE8NIUoHvQmGnnGJLrHISo2Ngciov3mWEWpt2B3qfQ3CYwmUJ7nM99DQgYDdNs26Dg3bgKzEQ==
|
integrity sha512-1bx3YeZ712dT1+QMX+XSFlP0O5k5O5Ui9ysBBmUZ9bWkAEHWZJQI9soI+qG5qmeFxUC0L9QYMCIKP0hOL/pf3Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
file-loader "^4.0.0"
|
file-loader "^4.0.0"
|
||||||
loader-utils "^1.2.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"
|
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.5.1.tgz#f1b8dcea649bc25254cf4f4358081dbf5da18b3d"
|
||||||
integrity sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw==
|
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:
|
watchpack-chokidar2@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
|
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:
|
dependencies:
|
||||||
async-limiter "~1.0.0"
|
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:
|
xtend@^4.0.0, xtend@~4.0.1:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
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-parser "^13.1.2"
|
||||||
|
|
||||||
yargs@^15.0.0:
|
yargs@^15.0.0:
|
||||||
version "15.4.0"
|
version "15.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2"
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
|
||||||
integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==
|
integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
|
||||||
dependencies:
|
dependencies:
|
||||||
cliui "^6.0.0"
|
cliui "^6.0.0"
|
||||||
decamelize "^3.2.0"
|
decamelize "^1.2.0"
|
||||||
find-up "^4.1.0"
|
find-up "^4.1.0"
|
||||||
get-caller-file "^2.0.1"
|
get-caller-file "^2.0.1"
|
||||||
require-directory "^2.1.1"
|
require-directory "^2.1.1"
|
||||||
|
|
Loading…
Reference in a new issue