| @@ -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"> | <meta name="viewport" content="width=device-width,initial-scale=1.0"> | ||||
| <link rel="icon" href="<%= BASE_URL %>favicon.ico"> | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> | ||||
| <title><%= htmlWebpackPlugin.options.title %></title> | <title><%= htmlWebpackPlugin.options.title %></title> | ||||
| <script type="text/javascript" src="env/envlist.json"></script> | |||||
| </head> | </head> | ||||
| <body> | <body> | ||||
| <noscript> | <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> | <template> | ||||
| <div class="editor" v-bind:class="{ preview: isPreviewMode }"> | <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"/> | <meta-editor v-on:meta-editor:closed="isMetaEditorVisible=false" v-if="isMetaEditorVisible"/> | ||||
| <div class="bottom-bar"> | <div class="bottom-bar"> | ||||
| @@ -168,6 +169,7 @@ | |||||
| Link | Link | ||||
| } from 'tiptap-extensions' | } from 'tiptap-extensions' | ||||
| import OpenPane from './OpenPane'; | |||||
| import MetaEditor from './MetaEditor'; | import MetaEditor from './MetaEditor'; | ||||
| @@ -180,15 +182,18 @@ | |||||
| EditorContent, | EditorContent, | ||||
| EditorMenuBar, | EditorMenuBar, | ||||
| EditorMenuBubble, | EditorMenuBubble, | ||||
| OpenPane, | |||||
| MetaEditor | MetaEditor | ||||
| }, | }, | ||||
| data() { | data() { | ||||
| console.log(window.environments); | |||||
| return { | return { | ||||
| nbWords: 0, | nbWords: 0, | ||||
| nbParagraphs: 0, | nbParagraphs: 0, | ||||
| nbSentences: 0, | nbSentences: 0, | ||||
| nbCharacters : 0, | nbCharacters : 0, | ||||
| environmentName: 'typobasic', | |||||
| isOpeningState: false, | |||||
| environmentList : window.environments ? window.environments : [], | |||||
| cssEnvElement : null, | cssEnvElement : null, | ||||
| isMetaEditorVisible: false, | isMetaEditorVisible: false, | ||||
| isPreviewMode: false, | isPreviewMode: false, | ||||
| @@ -238,9 +243,6 @@ | |||||
| console.warn('Something went wrong.', err); | console.warn('Something went wrong.', err); | ||||
| }); | }); | ||||
| this.addPrettyBackground(); | |||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| @@ -280,9 +282,9 @@ | |||||
| }, | }, | ||||
| installEnvironment() { | |||||
| installEnvironment(envName) { | |||||
| let self = this; | let self = this; | ||||
| Environment.getEnvironment(this.environmentName).then(async function (env) { | |||||
| Environment.getEnvironment(envName).then(async function (env) { | |||||
| if(!env) | if(!env) | ||||
| alert('À venir.'); | alert('À venir.'); | ||||
| else { | else { | ||||
| @@ -323,7 +325,8 @@ | |||||
| }, | }, | ||||
| newFile() { | newFile() { | ||||
| this.editor.setContent('<p></p>'); | |||||
| this.isOpeningState = true; | |||||
| //this.editor.setContent('<p></p>'); | |||||
| }, | }, | ||||
| htmlExport() { | htmlExport() { | ||||
| @@ -335,11 +338,16 @@ | |||||
| //document.getElementById('preview_button').innerHTML = this.isPreviewMode ? '×' :''; | //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> | </script> | ||||
| @@ -1,20 +1,18 @@ | |||||
| <template> | <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"> | <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> | </button> | ||||
| <h3>Métadonnées</h3> | <h3>Métadonnées</h3> | ||||
| <div> | <div> | ||||
| @@ -70,18 +68,9 @@ | |||||
| <style lang="scss"> | <style lang="scss"> | ||||
| @import '../assets/_vars'; | @import '../assets/_vars'; | ||||
| @import '../assets/_dialog'; | |||||
| .meta-editor { | .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 { | h3 { | ||||
| text-align: center; | text-align: center; | ||||
| @@ -89,11 +78,7 @@ | |||||
| } | } | ||||
| .meta-editor-content { | .meta-editor-content { | ||||
| padding: 10px; | |||||
| width: 800px; | |||||
| height: 400px; | |||||
| background-color: $bg-color; | |||||
| position: relative; | |||||
| div { | div { | ||||
| margin: 5px; | 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> | |||||