@@ -0,0 +1,10 @@ | |||
window.environments = [ | |||
{ | |||
'name':'typobasic', | |||
'desc': "Environnement de rédaction contenant l'ensemble des élements typographiques de base." | |||
}, | |||
{ | |||
'name':'courrier', | |||
'desc': "Environnement permettant la rédaction d'un courrier." | |||
} | |||
]; |
@@ -6,6 +6,7 @@ | |||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> | |||
<title><%= htmlWebpackPlugin.options.title %></title> | |||
<script type="text/javascript" src="env/envlist.json"></script> | |||
</head> | |||
<body> | |||
<noscript> | |||
@@ -0,0 +1,50 @@ | |||
@import './_vars'; | |||
.dialog{ | |||
width: 100vw; | |||
height: 100vh; | |||
background-color: rgba(100, 100, 100, 0.75); | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
z-index: 500; | |||
.dialog-content{ | |||
padding: 10px; | |||
width: 800px; | |||
height: 400px; | |||
background-color: $bg-color; | |||
position: relative; | |||
} | |||
.close-btn { | |||
position: absolute; | |||
top: 5px; | |||
right: 5px; | |||
padding:0; | |||
margin : 0; | |||
border: none; | |||
cursor: pointer; | |||
background-color: $bg-color; | |||
color: $txt-color; | |||
font-size: $button-width; | |||
display: block; | |||
line-height: unset; | |||
svg{ | |||
width: $button-width; | |||
height: $button-width; | |||
} | |||
} | |||
.ok-button{ | |||
position: absolute; | |||
bottom: 5px; | |||
right: 5px; | |||
cursor: pointer; | |||
} | |||
} |
@@ -1,6 +1,7 @@ | |||
<template> | |||
<div class="editor" v-bind:class="{ preview: isPreviewMode }"> | |||
<open-pane v-bind:environmentList="environmentList" v-on:open-pane:open="openEnvFile" v-if="isOpeningState"/> | |||
<meta-editor v-on:meta-editor:closed="isMetaEditorVisible=false" v-if="isMetaEditorVisible"/> | |||
<div class="bottom-bar"> | |||
@@ -168,6 +169,7 @@ | |||
Link | |||
} from 'tiptap-extensions' | |||
import OpenPane from './OpenPane'; | |||
import MetaEditor from './MetaEditor'; | |||
@@ -180,15 +182,18 @@ | |||
EditorContent, | |||
EditorMenuBar, | |||
EditorMenuBubble, | |||
OpenPane, | |||
MetaEditor | |||
}, | |||
data() { | |||
console.log(window.environments); | |||
return { | |||
nbWords: 0, | |||
nbParagraphs: 0, | |||
nbSentences: 0, | |||
nbCharacters : 0, | |||
environmentName: 'typobasic', | |||
isOpeningState: false, | |||
environmentList : window.environments ? window.environments : [], | |||
cssEnvElement : null, | |||
isMetaEditorVisible: false, | |||
isPreviewMode: false, | |||
@@ -238,9 +243,6 @@ | |||
console.warn('Something went wrong.', err); | |||
}); | |||
this.addPrettyBackground(); | |||
}, | |||
methods: { | |||
@@ -280,9 +282,9 @@ | |||
}, | |||
installEnvironment() { | |||
installEnvironment(envName) { | |||
let self = this; | |||
Environment.getEnvironment(this.environmentName).then(async function (env) { | |||
Environment.getEnvironment(envName).then(async function (env) { | |||
if(!env) | |||
alert('À venir.'); | |||
else { | |||
@@ -323,7 +325,8 @@ | |||
}, | |||
newFile() { | |||
this.editor.setContent('<p></p>'); | |||
this.isOpeningState = true; | |||
//this.editor.setContent('<p></p>'); | |||
}, | |||
htmlExport() { | |||
@@ -335,11 +338,16 @@ | |||
//document.getElementById('preview_button').innerHTML = this.isPreviewMode ? '×' :''; | |||
}, | |||
addPrettyBackground(){ | |||
let editorElement = document.querySelector('.ProseMirror'); | |||
console.log(editorElement); | |||
openEnvFile(envName){ | |||
this.isOpeningState = false; | |||
if(envName){ | |||
this.installEnvironment(envName); | |||
this.editor.setContent('<p></p>'); | |||
} | |||
} | |||
} | |||
} | |||
</script> | |||
@@ -1,20 +1,18 @@ | |||
<template> | |||
<div class="meta-editor"> | |||
<div class="meta-editor-content"> | |||
<div class="meta-editor dialog"> | |||
<div class="meta-editor-content dialog-content"> | |||
<button title="fermer" class="close-btn" v-on:click="hide"> | |||
× | |||
<!--<svg viewPort="0 0 42 42" version="1.1"--> | |||
<!--xmlns="http://www.w3.org/2000/svg">--> | |||
<!--<line x1="0" y1="42"--> | |||
<!--x2="42" y2="0"--> | |||
<!--stroke="black"--> | |||
<!--stroke-width="1"/>--> | |||
<!--<line x1="0" y1="0"--> | |||
<!--x2="42" y2="42"--> | |||
<!--stroke="black"--> | |||
<!--stroke-width="1"/>--> | |||
<!--</svg>--> | |||
<svg viewPort="0 0 42 42" version="1.1" | |||
xmlns="http://www.w3.org/2000/svg"> | |||
<line x1="0" y1="42" | |||
x2="42" y2="0" | |||
stroke="black" | |||
stroke-width="2"/> | |||
<line x1="0" y1="0" | |||
x2="42" y2="42" | |||
stroke="black" | |||
stroke-width="2"/> | |||
</svg> | |||
</button> | |||
<h3>Métadonnées</h3> | |||
<div> | |||
@@ -70,18 +68,9 @@ | |||
<style lang="scss"> | |||
@import '../assets/_vars'; | |||
@import '../assets/_dialog'; | |||
.meta-editor { | |||
width: 100vw; | |||
height: 100vh; | |||
background-color: rgba(100, 100, 100, 0.75); | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
z-index: 500; | |||
h3 { | |||
text-align: center; | |||
@@ -89,11 +78,7 @@ | |||
} | |||
.meta-editor-content { | |||
padding: 10px; | |||
width: 800px; | |||
height: 400px; | |||
background-color: $bg-color; | |||
position: relative; | |||
div { | |||
margin: 5px; | |||
@@ -104,22 +89,7 @@ | |||
} | |||
} | |||
.close-btn { | |||
position: absolute; | |||
top: 5px; | |||
right: 5px; | |||
padding:0; | |||
margin : 0; | |||
border: none; | |||
cursor: pointer; | |||
background-color: $bg-color; | |||
//height: $button-width; | |||
font-size: $button-width; | |||
/*svg{ | |||
width: $button-width; | |||
height: 4$button-width; | |||
}*/ | |||
} | |||
} | |||
} | |||
@@ -0,0 +1,112 @@ | |||
<template> | |||
<div class="open-pane dialog"> | |||
<div class="dialog-content"> | |||
<button title="fermer" class="close-btn" v-on:click="close"> | |||
<svg viewPort="0 0 42 42" version="1.1" | |||
xmlns="http://www.w3.org/2000/svg"> | |||
<line x1="0" y1="42" | |||
x2="42" y2="0" | |||
stroke="black" | |||
stroke-width="2"/> | |||
<line x1="0" y1="0" | |||
x2="42" y2="42" | |||
stroke="black" | |||
stroke-width="2"/> | |||
</svg> | |||
</button> | |||
<h3>Nouveau document</h3> | |||
<p>Quel type de document souhaitez-vous créer ?</p> | |||
<div class="env-blocks"> | |||
<div class="env-block" v-bind:class="{ selected: currentEnv===env}" v-on:click="envSelected(env)" @mouseover="hovering(env)" @mouseout="hovering(null)" v-bind:key="env.name" v-for="env in environmentList"> | |||
{{env.name}} | |||
</div> | |||
</div> | |||
<div id="desc"> | |||
{{currentDesc}} | |||
</div> | |||
<button v-if="currentEnv !== null" class="ok-button" v-on:click="hide()">Valider</button> | |||
<button v-else class="ok-button" disabled >Valider</button> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
components: {}, | |||
props: ['environmentList'], | |||
data() { | |||
return { | |||
currentEnv : null, | |||
currentDesc: '', | |||
} | |||
}, | |||
beforeDestroy() { | |||
}, | |||
mounted() { | |||
}, | |||
methods: { | |||
close : function(){ | |||
this.$emit('open-pane:open', null); | |||
}, | |||
hide: function(){ | |||
this.$emit('open-pane:open', this.currentEnv ? this.currentEnv.name : null); | |||
}, | |||
hovering(env){ | |||
this.currentDesc = env ? env.desc : ""; | |||
}, | |||
envSelected(env){ | |||
this.currentEnv = env; | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="scss"> | |||
@import '../assets/_dialog'; | |||
h3{ | |||
text-align: center; | |||
} | |||
.env-blocks{ | |||
display: flex; | |||
justify-content: center; | |||
.env-block{ | |||
min-width: 200px; | |||
min-height: 200px; | |||
border: 2px solid #ccc; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
margin:2px; | |||
cursor: pointer; | |||
font-weight: bold; | |||
text-transform: uppercase; | |||
&:hover{ | |||
background-color: $txt-color; | |||
color:$bg-color; | |||
} | |||
&.selected{ | |||
border: 2px solid black; | |||
font-size: 1.8rem; | |||
} | |||
} | |||
} | |||
#desc{ | |||
width : 75%; | |||
margin: auto; | |||
padding-top:15px; | |||
} | |||
</style> |