Advertisement
KoctrX

Untitled

Jun 19th, 2023
746
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.     <div ref="pagesList">
  3.         <template v-for="(page, pageIndex) in pages">
  4.             <div class="workspace__panel" :key="pageIndex+'-panel'" v-if="!editorLoading"
  5.                 :style="calculatePageSize(page, ['width'])" :class="{ disabled: isLockedDocument }"
  6.                 ref="pages_render">
  7.                 <a class="btn" @click="addPage">
  8.                     <img src="@/assets/img/plus.svg" alt="plus"><span>Add</span>
  9.                 </a>
  10.  
  11.                 <div class="dropdown-button relative">
  12.                     <a class="btn" @click="changeMenuTopOpen(pageMenuTopOpen === pageIndex ? false : pageIndex)">
  13.                         <img src="@/assets/img/more-horizontal.svg">
  14.                     </a>
  15.  
  16.                     <ul class="page_dropdown_top_menu" v-show="pageMenuTopOpen === pageIndex">
  17.                         <li v-if="pages.length">
  18.                             <a class="flex items-center" @click="openPageProperties(pageIndex)">
  19.                                 <img src="@/assets/img/Settings.svg"> Page Properties
  20.                             </a>
  21.                         </li>
  22.                        
  23.                         <li v-if="pages.length">
  24.                             <a class="flex items-center" :class="{ disabled: renderPage && renderPage.isShow }" @click="dublicatePage(page)">
  25.                                 <img src="@/assets/img/copy-item-big-right.svg"> Dublicate
  26.                             </a>
  27.                         </li>
  28.                        
  29.                         <li v-if="pages.length">
  30.                             <a class="flex items-center" @click="deletePage(pageIndex)">
  31.                                 <img src="@/assets/img/trash-2.svg"> Delete page
  32.                             </a>
  33.                         </li>
  34.                     </ul>
  35.                 </div>
  36.             </div>
  37.  
  38.             <div class="workspace__field relative" :key="pageIndex">
  39.                 <div class="body_page overflow-x-auto bg-white" style="color: red;">
  40.                     <div :id="page.id + '_editor'"></div>
  41.                 </div>
  42.             </div>
  43.         </template>
  44.     </div>
  45. </template>
  46.  
  47. <script>
  48.     import lib from '../../lib';
  49.  
  50.     export default {
  51.         props: {
  52.             isLockedDocument: {
  53.                 type: Boolean,
  54.                 default: () => false
  55.             },
  56.  
  57.             editorLoading: {
  58.                 type: Boolean,
  59.                 default: () => false
  60.             },
  61.  
  62.             pageMenuTopOpen: {
  63.                 type: [String, Number, Boolean],
  64.                 default: () => false
  65.             },
  66.  
  67.             renderPage: {
  68.                 type: Object,
  69.                 default: () => ({})
  70.             }
  71.         },
  72.  
  73.         methods: {
  74.             renderPagesHTML() {
  75.                 const addPage = document.createElement('a');
  76.                 addPage.setAttribute('class', 'btn');
  77.                 addPage.innerHTML = `<img src="${require('@/assets/img/plus.svg')}" alt="plus"><span>Add</span>`;
  78.             },
  79.  
  80.             calculatePageSize(page, fields) {
  81.                 return lib.calculatePageSize(page, fields, this.pageSize);
  82.             },
  83.  
  84.             addPage() {            
  85.                 lib.addComponent('page-break');
  86.             },
  87.  
  88.             changeMenuTopOpen(value) {
  89.                 console.log('Update', value);
  90.                 this.$emit('changeMenuTopOpen', value);
  91.             },
  92.  
  93.             sidebarOpen(sidebar, title, icon) {
  94.                 this.$emit('sidebarOpen', { sidebar, title, icon })
  95.             },
  96.  
  97.             openPageProperties(index) {
  98.                 this.changeMenuTopOpen(false);
  99.                 this.sidebarOpen('PageProperties', 'Page Properties', 'chevron-down');
  100.             },
  101.  
  102.             dublicatePage(page) {
  103.                 const editor = this.$store.state.editors.find(ed => ed.id == page.id);
  104.                 if(editor) {
  105.                     const json = utils.generateDocumentExport([editor]);
  106.                     if(json && json[0]) {
  107.                         const id = 'P_' + utils.uuid();
  108.                         this.$store.state.selectedEditor = id;
  109.                         const data = {
  110.                             id, data: json[0].json,
  111.                             setting: json[0].setting
  112.                         };
  113.  
  114.                         this.$store.state.pages = this.$store.state.pages.reduce((result, p) => {
  115.                             result.push(p);
  116.                             if(p.id == page.id) result.push(data);
  117.  
  118.                             return result;
  119.                         }, []);
  120.                        
  121.                         this.$nextTick(() => document.getElementById(id + '_editor').scrollIntoView());
  122.                     }
  123.                 }
  124.                
  125.                 this.changeMenuTopOpen(false);
  126.             },
  127.  
  128.             deletePage(pageIndex) {
  129.                 // this.editorWorkspaceOutside();
  130.                 this.$emit('editorWorkspaceOutside');
  131.                 // this.pages.splice(pageIndex, 1);
  132.                 this.$store.state.pages.splice(pageIndex, 1);
  133.                 this.$store.state.editors.splice(pageIndex, 1);
  134.                 //this.$store.state._editors.splice(pageIndex, 1);
  135.                 // lib.deletePageByIndex(pageIndex);
  136.             },
  137.         },
  138.  
  139.         computed: {
  140.             pageSize() {
  141.                 return this.$store.state.defaultPageSize;
  142.             },
  143.  
  144.             pages() {
  145.                 return this.$store.state.pages;
  146.             }
  147.         }
  148.     }
  149. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement