Commit c1b951fe authored by Jérémie Passerat's avatar Jérémie Passerat

Mode sombre v1

parent b80e3391
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-cookie": "^1.1.4", "vue-cookie": "^1.1.4",
"vue-cookies": "^1.7.4", "vue-cookies": "^1.7.4",
"vue-dark-mode-switch": "^1.1.0",
"vue-js-modal": "^2.0.0-rc.6", "vue-js-modal": "^2.0.0-rc.6",
"vue-js-popover": "^1.2.1", "vue-js-popover": "^1.2.1",
"vue-showdown": "^3.1.0", "vue-showdown": "^3.1.0",
...@@ -19342,6 +19343,15 @@ ...@@ -19342,6 +19343,15 @@
"resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.7.4.tgz", "resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.7.4.tgz",
"integrity": "sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA==" "integrity": "sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA=="
}, },
"node_modules/vue-dark-mode-switch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/vue-dark-mode-switch/-/vue-dark-mode-switch-1.1.0.tgz",
"integrity": "sha512-HXdzgEcxqr3oJMeG4T4aoRU/Qk+fTuGsPpfKe8y1UAK5arzP/l7wd/hNPlKP5mcBGMLfnZAhLCCuFLUmaBmCdw==",
"dependencies": {
"core-js": "^3.6.5",
"vue": "^2.6.11"
}
},
"node_modules/vue-eslint-parser": { "node_modules/vue-eslint-parser": {
"version": "7.6.0", "version": "7.6.0",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz",
...@@ -36460,6 +36470,15 @@ ...@@ -36460,6 +36470,15 @@
"resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.7.4.tgz", "resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.7.4.tgz",
"integrity": "sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA==" "integrity": "sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA=="
}, },
"vue-dark-mode-switch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/vue-dark-mode-switch/-/vue-dark-mode-switch-1.1.0.tgz",
"integrity": "sha512-HXdzgEcxqr3oJMeG4T4aoRU/Qk+fTuGsPpfKe8y1UAK5arzP/l7wd/hNPlKP5mcBGMLfnZAhLCCuFLUmaBmCdw==",
"requires": {
"core-js": "^3.6.5",
"vue": "^2.6.11"
}
},
"vue-eslint-parser": { "vue-eslint-parser": {
"version": "7.6.0", "version": "7.6.0",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz",
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div id="app"> <div id="app">
<Volet_Base @rechercherNouvellesPublications="rechercherNouvellesPublications" @choix_variante="choixVariante" <Volet_Base @rechercherNouvellesPublications="rechercherNouvellesPublications" @choix_variante="choixVariante"
@newContenu="newContenu" v-bind:nvoContenu="nvoContenu" v-bind:auteur="auteur" @newContenu="newContenu" v-bind:nvoContenu="nvoContenu" v-bind:auteur="auteur"
v-bind:contenuAjoute="contenuAjoute" v-bind:majContenus="majContenus" /> v-bind:contenuAjoute="contenuAjoute" v-bind:majContenus="majContenus" v-bind:darktheme="darktheme" />
</div> </div>
</template> </template>
...@@ -48,7 +48,10 @@ export default { ...@@ -48,7 +48,10 @@ export default {
contenuAjoute: {}, contenuAjoute: {},
// Variable contenant un "nouveau contenu", créé à partir d'une demande de publication, à destination de Volet_Base // Variable contenant un "nouveau contenu", créé à partir d'une demande de publication, à destination de Volet_Base
nvoContenu: {}, nvoContenu: {},
majContenus: {} // Signal d'alerte pour mettre à jour les contenus
majContenus: {},
// Signal d'activation ou non du theme sombre
darktheme: {}
} }
} }
</script> </script>
......
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
<Login v-show="etat === 'unlogged'" @user_logged="setLogged"></Login> <Login v-show="etat === 'unlogged'" @user_logged="setLogged"></Login>
<Menu v-show="etat !== 'unlogged'" v-bind:auteur="auteur" v-bind:etat="etat" v-bind:variante="variante" <Menu v-show="etat !== 'unlogged'" v-bind:auteur="auteur" v-bind:etat="etat" v-bind:variante="variante"
v-bind:recalculerNotif="recalculerNotif" @menu_choisi="changerPage"></Menu> v-bind:recalculerNotif="recalculerNotif" @menu_choisi="changerPage" @darkTheme="darkTheme"></Menu>
<Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" v-bind:nvoContenu="nvoContenu" v-bind:contenuAjoute="contenuAjoute" <Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" v-bind:nvoContenu="nvoContenu" v-bind:contenuAjoute="contenuAjoute"
@choix_variante="choixVariante" @newContenu="newContenu" @choix_variante="choixVariante" @newContenu="newContenu"
@rechercherNouvellesPublications="rechercherPublications = !rechercherPublications" @rechercherNouvellesPublications="rechercherPublications = !rechercherPublications"
v-bind:majContenus="majContenus"></Contenu> v-bind:majContenus="majContenus" v-bind:darktheme="darktheme"></Contenu>
<Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose" <Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose"
v-bind:contenuEnPublication="contenuEnPublication" @recalculerNotif="recalculerNotification" v-bind:contenuEnPublication="contenuEnPublication" @recalculerNotif="recalculerNotification"
@majNvoContenu="majNvoContenu" @majContenus="majContenus = !majContenus" @majNvoContenu="majNvoContenu" @majContenus="majContenus = !majContenus"
...@@ -49,7 +49,8 @@ export default { ...@@ -49,7 +49,8 @@ export default {
nvoContenu: '', nvoContenu: '',
rechercherPublications: false, rechercherPublications: false,
majContenus: false, majContenus: false,
errorMessage: 'Login ou mot de passe erroné' errorMessage: 'Login ou mot de passe erroné',
darktheme: ''
} }
}, },
methods: { methods: {
...@@ -131,6 +132,13 @@ export default { ...@@ -131,6 +132,13 @@ export default {
*/ */
majNvoContenu: function (event) { majNvoContenu: function (event) {
this.nvoContenu = event.contenu this.nvoContenu = event.contenu
},
/**
* @vuese
* Passage d'information concernant l'activation ou non du theme sombre:
*/
darkTheme: function (event) {
this.darktheme = event.active
} }
}, },
......
<template> <template>
<div id="menuHaut"> <div id="menuHaut" v-bind:class="darkMode ? 'dark' : ''">
<DarkModeSwitch v-bind:style="{'margin-top': '10px', 'margin-left': '10px'}" @switched="onSwitched"/>
<Choix_Mode_Variante class="menuVariante" v-show="variante"></Choix_Mode_Variante> <Choix_Mode_Variante class="menuVariante" v-show="variante"></Choix_Mode_Variante>
<p v-show="!variante"> Open Quizz - Bienvenue {{auteur}}</p> <p v-show="!variante"> Open Quizz - Bienvenue {{auteur}}</p>
<div class="notif" v-on:click="choixIconeNotification" v-show="isNotif === true" v-bind:style="[!variante ? {'margin-left': '90%'} : {'margin-left': '32%'}]"></div> <div class="notif" v-on:click="choixIconeNotification" v-show="isNotif === true" v-bind:style="[!variante ? {'margin-left': '90%'} : {'margin-left': '32%'}]"></div>
<div class="circle" id="menuAuteur" v-on:click="isAffiche = !isAffiche" v-bind:style="styleCircle"> <div class="circle" id="menuAuteur" v-on:click="isAffiche = !isAffiche" v-bind:style="styleCircle">
</div> </div>
<div class="menu" v-show="isAffiche"> <div class="menu" v-show="isAffiche">
<div class="sous_menu" v-on:click="choixMenuAnnexe">Profil</div> <div class="sous_menu" v-on:click="choixMenuAnnexe">Profil</div>
<div v-if="etat !== 'Mises à jour'" class="sous_menu" v-on:click="choixMenuAnnexe">Mises à jour</div> <div v-if="etat !== 'Mises à jour'" class="sous_menu" v-on:click="choixMenuAnnexe">Mises à jour</div>
<div v-else class="sous_menu" v-on:click="choixMenuAnnexe">Contenu</div> <div v-else class="sous_menu" v-on:click="choixMenuAnnexe">Contenu</div>
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
//[!isNotif ? {'margin-left': '94.75%'} : {'margin-left': '3%'} //[!isNotif ? {'margin-left': '94.75%'} : {'margin-left': '3%'}
import Choix_Mode_Variante from "./components/Choix_Mode_Variante"; import Choix_Mode_Variante from "./components/Choix_Mode_Variante";
import Service from "./service/Service"; import Service from "./service/Service";
import DarkModeSwitch from 'vue-dark-mode-switch'
import 'vue-dark-mode-switch/dist/vue-dark-mode-switch.css'
export default { export default {
name: "Menu", name: "Menu",
data: function () { data: function () {
...@@ -31,6 +34,7 @@ export default { ...@@ -31,6 +34,7 @@ export default {
isRecu: false, isRecu: false,
isPropose: false, isPropose: false,
styleCircle: {}, styleCircle: {},
darkMode: false,
roblox: "https://www.google.com/url?sa=i&url=https%3A%2F%2Feducation.roblox.com%2F&psig=AOvVaw2WUZcaXl4Wpn3dLXhgO41R&ust=1626436473301000&source=images&cd=vfe&ved=0CAoQjRxqFwoTCIjmoJWC5fECFQAAAAAdAAAAABAD" roblox: "https://www.google.com/url?sa=i&url=https%3A%2F%2Feducation.roblox.com%2F&psig=AOvVaw2WUZcaXl4Wpn3dLXhgO41R&ust=1626436473301000&source=images&cd=vfe&ved=0CAoQjRxqFwoTCIjmoJWC5fECFQAAAAAdAAAAABAD"
} }
}, },
...@@ -128,6 +132,10 @@ export default { ...@@ -128,6 +132,10 @@ export default {
}) })
}, },
/**
* @vuese
* Fonction qui petmet d'affecter les bonnes marges pour le menu d'en haut à droite
*/
changerStyle: function () { changerStyle: function () {
...@@ -141,10 +149,15 @@ export default { ...@@ -141,10 +149,15 @@ export default {
this.styleCircle["margin-left"] = "94.75%" this.styleCircle["margin-left"] = "94.75%"
} }
},
onSwitched: function (isSwitched) {
this.darkMode = isSwitched
this.$emit("darkTheme", {active: isSwitched})
} }
}, },
components: { components: {
Choix_Mode_Variante Choix_Mode_Variante,
DarkModeSwitch
}, },
watch: { watch: {
/** /**
...@@ -208,7 +221,7 @@ export default { ...@@ -208,7 +221,7 @@ export default {
background: white; background: white;
border: thin solid black; border: thin solid black;
margin-top: 46px; margin-top: 46px;
margin-left: 93%; margin-left: 94.75%;
position: absolute; position: absolute;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -247,4 +260,9 @@ p { ...@@ -247,4 +260,9 @@ p {
margin-top: 0.5%; margin-top: 0.5%;
margin-bottom: 0.1%; margin-bottom: 0.1%;
} }
.dark {
background-color: #111 !important;
color: #eee;
}
</style> </style>
\ No newline at end of file
<template> <template>
<div id="divPrincipale"> <div id="divPrincipale" >
<div id="principal" v-show="!modeConsultation && !modeModification"> <div id="principal" v-show="!modeConsultation && !modeModification">
<!-- width: 330px; <!-- width: 330px;
--> -->
<div id="ensemble" :style="isActif ? {width: '330px'} : {width: '40px'}"> <div id="ensemble" class="ensemble" :class="darktheme ? 'ensembledark' : ''" :style="isActif ? {width: '340px'} : {width: '40px'}">
<button id="changerVariante" :style="isActif ? {width: 'auto'} : {width: '20px'}" <button id="changerVariante" :style="isActif ? {width: 'auto'} : {width: '20px'}"
v-show="!modeConsultation && !modeModification" v-on:click="changerVariante">{{ texteBoutonvariante }}</button> v-show="!modeConsultation && !modeModification" v-on:click="changerVariante">{{ texteBoutonvariante }}</button>
<br><br> <br>
<button id="boutonVolet" v-on:click="desactiverVolet" v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '24px'}"></button> <button id="boutonVolet" v-on:click="desactiverVolet" v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '24px'}"></button>
<div class="full" id="volet" v-show="isActif"> <div class="full" id="volet" v-show="isActif">
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
</div> </div>
</div> </div>
<div id="tableau" :style="isActif ? {width: '90%'} : {width: '98%'}" > <div id="tableau" :class="darktheme ? 'tableaudark' : ''" :style="isActif ? {width: '90%'} : {width: '98%'}" >
<div class="choixPanier" v-show="panierChoisi && !modeConsultation && !modeModification"> <div class="choixPanier" v-show="panierChoisi && !modeConsultation && !modeModification">
<label id="labelPerso" :style="isActif ? {'margin-left': '-5px'} : {'margin-left': '148px'}">Perso </label> <label id="labelPerso" :style="isActif ? {'margin-left': '-5px'} : {'margin-left': '148px'}">Perso </label>
<input type="checkbox" class="filtreTableau" id="filtrePerso" v-model="persoChecked" <input type="checkbox" class="filtreTableau" id="filtrePerso" v-model="persoChecked"
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<th v-bind:colspan="!isActif ? 10 : 8">Contenus</th> <th v-bind:colspan="!isActif ? 10 : 8">Contenus</th>
</tr> </tr>
</thead> </thead>
<tr v-bind:style="{'background-color': 'orange'}"> <tr v-bind:style="!darktheme ? {'background-color': 'orange'} : {'background-color': '#FF8C00'}">
<th>Titre</th> <th>Titre</th>
<th>Auteur</th> <th>Auteur</th>
<th>Version actuelle</th> <th>Version actuelle</th>
...@@ -161,7 +161,10 @@ export default { ...@@ -161,7 +161,10 @@ export default {
contenuAjoute: {}, contenuAjoute: {},
// Permet de stocker un 'nouveau contenu' ajouté // Permet de stocker un 'nouveau contenu' ajouté
nvoContenu: {}, nvoContenu: {},
majContenus: {} // Signal d'alerte pour mettre à jour les contenus
majContenus: {},
// Signal d'activation ou non du theme sombre
darktheme: {}
}, },
data: function () { data: function () {
return { return {
...@@ -233,6 +236,10 @@ export default { ...@@ -233,6 +236,10 @@ export default {
// Fonction retour du menu des maj // Fonction retour du menu des maj
this.contenus.push(this.nvoContenu) this.contenus.push(this.nvoContenu)
}, },
/**
* @vuese
* Mise à jour des contenus pour l'auteur connecté
*/
majContenus: function () { majContenus: function () {
this.contenusDuPanier() this.contenusDuPanier()
this.contenusDeLaBanque() this.contenusDeLaBanque()
...@@ -690,6 +697,7 @@ tfoot { ...@@ -690,6 +697,7 @@ tfoot {
border: 1px solid black; border: 1px solid black;
margin-top: 2px; margin-top: 2px;
margin-left: 10px; margin-left: 10px;
margin-right: 10px;
} }
#boutonVolet { #boutonVolet {
...@@ -702,6 +710,8 @@ tfoot { ...@@ -702,6 +710,8 @@ tfoot {
text-align: center; text-align: center;
line-height: 1em; line-height: 1em;
margin-left: 10px; margin-left: 10px;
margin-top: 5px;
margin-bottom: 20px;
} }
...@@ -768,7 +778,7 @@ th image ...@@ -768,7 +778,7 @@ th image
#ensemble { #ensemble {
background-color: whitesmoke; background-color: whitesmoke;
height: 846px; height: 845px;
} }
#tableau { #tableau {
...@@ -780,4 +790,24 @@ th image ...@@ -780,4 +790,24 @@ th image
}*/ }*/
/*<img src="@/assets/img/etoile.png" alt="" height=20 width=20/>*/ /*<img src="@/assets/img/etoile.png" alt="" height=20 width=20/>*/
</style>
\ No newline at end of file .ensembledark {
background-color: #878787 !important;
color: white;
}
.tableaudark td {
background-color: #878787 !important;
color: white;
}
.titreTab {
background-color: !important;
}
.tableaudark thead {
background-color: white !important;
color: black;
}
</style>#FF8C00
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment