@golstats/gsc-reports 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +2 -0
  2. package/dist/FilterConditions-55d68355-C5NIJbY6-xW04mYhu-DRN4eEO4.js +191 -0
  3. package/dist/FilterField-59a73e38-DO8nYLqs-Da7H_Fvj-ZuLwDGOM.js +21 -0
  4. package/dist/FilterSubcategories-a9b32cc9-DlkHni1L-BXid_sIn-BvoU3OqZ.js +42 -0
  5. package/dist/css/fonts.css +83 -0
  6. package/dist/fonts/BebasNeue-Bold.otf +0 -0
  7. package/dist/fonts/BebasNeue-Bold.ttf +0 -0
  8. package/dist/fonts/BebasNeue-Bold.woff2 +0 -0
  9. package/dist/fonts/BebasNeue-Book.otf +0 -0
  10. package/dist/fonts/BebasNeue-Book.ttf +0 -0
  11. package/dist/fonts/BebasNeue-Book.woff2 +0 -0
  12. package/dist/fonts/BebasNeue-Light.otf +0 -0
  13. package/dist/fonts/BebasNeue-Light.ttf +0 -0
  14. package/dist/fonts/BebasNeue-Light.woff2 +0 -0
  15. package/dist/fonts/BebasNeue-Regular.otf +0 -0
  16. package/dist/fonts/BebasNeue-Regular.ttf +0 -0
  17. package/dist/fonts/BebasNeue-Regular.woff2 +0 -0
  18. package/dist/fonts/BebasNeue-Thin.otf +0 -0
  19. package/dist/fonts/BebasNeue-Thin.ttf +0 -0
  20. package/dist/fonts/BebasNeue-Thin.woff2 +0 -0
  21. package/dist/fonts/Montserrat-Black.otf +0 -0
  22. package/dist/fonts/Montserrat-BlackItalic.otf +0 -0
  23. package/dist/fonts/Montserrat-Bold.otf +0 -0
  24. package/dist/fonts/Montserrat-BoldItalic.otf +0 -0
  25. package/dist/fonts/Montserrat-ExtraBold.otf +0 -0
  26. package/dist/fonts/Montserrat-ExtraBoldItalic.otf +0 -0
  27. package/dist/fonts/Montserrat-ExtraLight.otf +0 -0
  28. package/dist/fonts/Montserrat-ExtraLightItalic.otf +0 -0
  29. package/dist/fonts/Montserrat-Italic.otf +0 -0
  30. package/dist/fonts/Montserrat-Light.otf +0 -0
  31. package/dist/fonts/Montserrat-LightItalic.otf +0 -0
  32. package/dist/fonts/Montserrat-Medium.otf +0 -0
  33. package/dist/fonts/Montserrat-MediumItalic.otf +0 -0
  34. package/dist/fonts/Montserrat-Regular.otf +0 -0
  35. package/dist/fonts/Montserrat-SemiBold.otf +0 -0
  36. package/dist/fonts/Montserrat-SemiBoldItalic.otf +0 -0
  37. package/dist/fonts/Montserrat-Thin.otf +0 -0
  38. package/dist/fonts/Montserrat-ThinItalic.otf +0 -0
  39. package/dist/fonts/Oswald-Bold.ttf +0 -0
  40. package/dist/fonts/Oswald-ExtraLight.ttf +0 -0
  41. package/dist/fonts/Oswald-Light.ttf +0 -0
  42. package/dist/fonts/Oswald-Medium.ttf +0 -0
  43. package/dist/fonts/Oswald-Regular.ttf +0 -0
  44. package/dist/fonts/Oswald-SemiBold.ttf +0 -0
  45. package/dist/fonts/Poppins-Black.otf +0 -0
  46. package/dist/fonts/Poppins-BlackItalic.otf +0 -0
  47. package/dist/fonts/Poppins-Bold.otf +0 -0
  48. package/dist/fonts/Poppins-BoldItalic.otf +0 -0
  49. package/dist/fonts/Poppins-ExtraBold.otf +0 -0
  50. package/dist/fonts/Poppins-ExtraBoldItalic.otf +0 -0
  51. package/dist/fonts/Poppins-ExtraLight.otf +0 -0
  52. package/dist/fonts/Poppins-ExtraLightItalic.otf +0 -0
  53. package/dist/fonts/Poppins-Italic.otf +0 -0
  54. package/dist/fonts/Poppins-Light.otf +0 -0
  55. package/dist/fonts/Poppins-LightItalic.otf +0 -0
  56. package/dist/fonts/Poppins-Medium.otf +0 -0
  57. package/dist/fonts/Poppins-MediumItalic.otf +0 -0
  58. package/dist/fonts/Poppins-Regular.otf +0 -0
  59. package/dist/fonts/Poppins-SemiBold.otf +0 -0
  60. package/dist/fonts/Poppins-SemiBoldItalic.otf +0 -0
  61. package/dist/fonts/Poppins-Thin.otf +0 -0
  62. package/dist/fonts/Poppins-ThinItalic.otf +0 -0
  63. package/dist/gsc-reports.css +1 -0
  64. package/dist/gsc-reports.es.js +4 -0
  65. package/dist/gsc-reports.umd.js +4079 -0
  66. package/dist/icons/icn-close.svg +5 -0
  67. package/dist/icons/icn-delete-delete.svg +3 -0
  68. package/dist/icons/icn-delete.svg +3 -0
  69. package/dist/icons/icn-download.svg +4 -0
  70. package/dist/icons/icn-duplicate-white.svg +11 -0
  71. package/dist/icons/icn-duplicate.svg +11 -0
  72. package/dist/icons/icn-edit.svg +11 -0
  73. package/dist/icons/icn-editar-withe.svg +3 -0
  74. package/dist/icons/icn-rename-white.svg +3 -0
  75. package/dist/icons/icn-rename.svg +3 -0
  76. package/dist/icons/icn-report-white.svg +11 -0
  77. package/dist/icons/icn-report.svg +11 -0
  78. package/dist/images/background-postmatch-template-01.jpg +0 -0
  79. package/dist/images/background-postmatch-template-02.jpg +0 -0
  80. package/dist/images/canchaRPH.svg +30 -0
  81. package/dist/index-B1R4W2EC.js +128151 -0
  82. package/dist/reports/background-postmatch-template-01@2x.jpg +0 -0
  83. package/dist/reports/background-postmatch-template-02@2x.jpg +0 -0
  84. package/dist/reports/thumbnail-portada-01@2x.png +0 -0
  85. package/dist/reports/thumbnail-portada-02@2x.png +0 -0
  86. package/dist/reports/thumbnail-portada-03@2x.png +0 -0
  87. package/dist/reports/thumbnail-portada-04@2x.png +0 -0
  88. package/dist/reports/thumbnail-portada-prmatch-01@2x.png +0 -0
  89. package/dist/reports/thumbnail-portada-prmatch-02@2x.png +0 -0
  90. package/dist/reports/thumbnail-portada-prmatch-03@2x.png +0 -0
  91. package/dist/reports/thumbnail-portada-prmatch-04@2x.png +0 -0
  92. package/dist/thumb1.png +0 -0
  93. package/dist/thumbnail-portada-01.jpg +0 -0
  94. package/dist/thumbnail-portada-02.jpg +0 -0
  95. package/dist/thumbnail-portada-03.jpg +0 -0
  96. package/dist/thumbnail-portada-04.jpg +0 -0
  97. package/dist/thumbnail-portada-prmatch-01.jpg +0 -0
  98. package/dist/thumbnail-portada-prmatch-02.jpg +0 -0
  99. package/dist/thumbnail-portada-prmatch-03.jpg +0 -0
  100. package/dist/thumbnail-portada-prmatch-04.jpg +0 -0
  101. package/package.json +70 -0
  102. package/src/App.vue +28 -0
  103. package/src/components/ReportsSection.vue +764 -0
  104. package/src/components/TemplatesSection.vue +911 -0
  105. package/src/components/elementsTemplates/ModalCreateTemplate.vue +407 -0
  106. package/src/components/elementsTemplates/ModalDeleteReport.vue +231 -0
  107. package/src/components/elementsTemplates/ModalDeleteTemplate.vue +234 -0
  108. package/src/components/elementsTemplates/ModalGenerarReporte.vue +1151 -0
  109. package/src/components/elementsTemplates/ModalRenameReporte.vue +315 -0
  110. package/src/components/elementsTemplates/ModalRenameTemplate.vue +320 -0
  111. package/src/components/elementsTemplates/ModalSoloEscritorio.vue +83 -0
  112. package/src/components/elementsTemplates/ModalduplicateTemplate.vue +283 -0
  113. package/src/components/elementsTemplates/ReportItem.vue +458 -0
  114. package/src/components/elementsTemplates/TemplateItem.vue +360 -0
  115. package/src/components/elementsTemplates/TooltipReportOptions.vue +85 -0
  116. package/src/components/elementsTemplates/TooltipTemplateOptions.vue +141 -0
  117. package/src/components/filters.vue +935 -0
  118. package/src/components/gsc-reports.vue +452 -0
  119. package/src/components/template-report-maker/CoverPage.vue +636 -0
  120. package/src/components/template-report-maker/CoverSelector.vue +165 -0
  121. package/src/components/template-report-maker/ReportAndTemplateMaker.vue +675 -0
  122. package/src/components/template-report-maker/ReportView.vue +66 -0
  123. package/src/components/template-report-maker/TemplateReportPage.vue +398 -0
  124. package/src/components/thumbnails-reports/AnalisisPostMatchType1.vue +741 -0
  125. package/src/components/thumbnails-reports/AnalisisPostMatchType2.vue +743 -0
  126. package/src/components/thumbnails-reports/AnalisisPostMatchType3.vue +463 -0
  127. package/src/components/thumbnails-reports/AnalisisPostMatchType4.vue +462 -0
  128. package/src/components/thumbnails-reports/AnalisisPrematchType1.vue +164 -0
  129. package/src/components/thumbnails-reports/AnalisisPrematchType2.vue +163 -0
  130. package/src/components/thumbnails-reports/AnalisisPrematchType3.vue +173 -0
  131. package/src/components/thumbnails-reports/AnalisisPrematchType4.vue +173 -0
  132. package/src/index.js +4 -0
  133. package/src/main.js +4 -0
  134. package/src/types.d.ts +45 -0
  135. package/src/utils/dateUtils.js +52 -0
@@ -0,0 +1,675 @@
1
+ <script setup>
2
+ import CoverSelector from '@/components/template-report-maker/CoverSelector.vue'
3
+ import TemplateReportPage from '@/components/template-report-maker/TemplateReportPage.vue'
4
+ import Cover from '@/components/template-report-maker/CoverPage.vue'
5
+ import Filters from '@/components/filters.vue'
6
+ import { nextTick, ref, watch } from 'vue'
7
+ import emitter from 'tiny-emitter/instance'
8
+
9
+ const pages = ref([
10
+ {
11
+ title: 'Page 1',
12
+ id: String(Date.now()),
13
+ items: [
14
+ {
15
+ name: 'Volumetrica',
16
+ id: `w-${String(Date.now())}`,
17
+ x: 0,
18
+ y: 0,
19
+ w: 4,
20
+ h: 6,
21
+ maxWidth: 4,
22
+ maxHeight: 4,
23
+ noResize: false,
24
+ noMove: false,
25
+ componentProps: {},
26
+ },
27
+ {
28
+ name: 'Volumetrica',
29
+ id: String(Date.now()),
30
+ x: 4,
31
+ y: 0,
32
+ w: 4,
33
+ h: 4,
34
+ maxWidth: 4,
35
+ maxHeight: 4,
36
+ noResize: false,
37
+ noMove: false,
38
+ componentProps: {},
39
+ },
40
+ ],
41
+ },
42
+ ])
43
+ const coverSelected = ref(null)
44
+ const currentPageIndex = ref(0)
45
+ const isVisible = ref(false)
46
+ const templateToEdit = ref(null)
47
+ const templateAux = ref(null)
48
+ const isTemplateMode = ref(true)
49
+ const isPostMatch = ref(false)
50
+ const coverId = ref(0)
51
+ const showFiltersMenu = ref(false)
52
+
53
+ watch(
54
+ () => isVisible.value,
55
+ (newValue) => {
56
+ if (newValue) {
57
+ // Reset the current page index when the template maker is shown
58
+ currentPageIndex.value = 0
59
+ // disable body scroll
60
+ document.body.style.overflow = 'hidden'
61
+ } else {
62
+ // Enable body scroll when the template maker is closed
63
+ document.body.style.overflow = ''
64
+ }
65
+ },
66
+ )
67
+
68
+ function getTwoDigitNumber(num) {
69
+ return num < 10 ? `0${num}` : num
70
+ }
71
+
72
+ function onSelectCover(cover) {
73
+ coverSelected.value = cover
74
+ console.log('coverSelected.value', coverSelected.value)
75
+ }
76
+
77
+ function onClickAddPage(index) {
78
+ if (index !== undefined && index >= -1) {
79
+ pages.value.splice(index + 1, 0, {
80
+ title: `Page ${pages.value.length + 1}`,
81
+ id: `p-${Date.now()}`,
82
+ items: [],
83
+ })
84
+ } else {
85
+ pages.value.push({
86
+ title: `Page ${pages.value.length + 1}`,
87
+ id: `p-${Date.now()}`,
88
+ items: [],
89
+ })
90
+ }
91
+ }
92
+
93
+ function onClickPage(pageIndex) {
94
+ if (pageIndex < -1 || pageIndex >= pages.value.length + 1) {
95
+ return // Invalid page index
96
+ }
97
+ const pageElement = document.getElementById(`page-${pageIndex}`)
98
+ if (pageElement) {
99
+ pageElement.scrollIntoView({ behavior: 'smooth', block: 'start' })
100
+ }
101
+ }
102
+
103
+ function onClickAddView() {
104
+ showFiltersMenu.value = true
105
+ //emitter.emit('add-view')
106
+ }
107
+
108
+ function onIntersectionChanged(isVisible, pageIndex) {
109
+ if (isVisible) {
110
+ currentPageIndex.value = pageIndex + 1 // +1 because the first page is the cover
111
+ }
112
+ }
113
+
114
+ function show(initialConfig) {
115
+ console.log('show, initialConfig', initialConfig)
116
+ isTemplateMode.value = initialConfig.isTemplateMode
117
+ if (initialConfig.isTemplateMode) {
118
+ templateToEdit.value = initialConfig.template
119
+ templateAux.value = JSON.parse(JSON.stringify(initialConfig.template)) // Deep copy
120
+ isPostMatch.value = templateToEdit.value.template_type === 2
121
+ const cover = templateToEdit.value.pages.find((page) => page.is_front_page)
122
+ console.log('cover')
123
+ coverId.value = cover ? cover.type : 1
124
+ pages.value = templateToEdit.value.pages.reduce((acc, page) => {
125
+ if (!page.is_front_page) {
126
+ const pageAux = {
127
+ originalPage: JSON.parse(JSON.stringify(page)),
128
+ title: page.name,
129
+ id: `p-${Date.now()}`,
130
+ items: [],
131
+ }
132
+ if (page.components && page.components.length > 0) {
133
+ pageAux.items = page.components.map((component) => ({
134
+ originalComponent: JSON.parse(JSON.stringify(component)),
135
+ title: component.title,
136
+ idAux: component.id,
137
+ id: `w-${Date.now()}`,
138
+ x: component.column,
139
+ y: component.row,
140
+ w: component.colspan,
141
+ h: component.rowspan,
142
+ maxWidth: component.max_column,
143
+ maxHeight: component.max_row,
144
+ minWidth: component.min_column,
145
+ minHeight: component.min_row,
146
+ noResize: false,
147
+ noMove: false,
148
+ isTemplateMode: isTemplateMode.value,
149
+ }))
150
+ }
151
+ acc.push(pageAux)
152
+ }
153
+ return acc
154
+ }, [])
155
+ isVisible.value = true
156
+ } else if (initialConfig.report) {
157
+ isVisible.value = true
158
+ }
159
+ }
160
+
161
+ defineProps({
162
+ token: {
163
+ type: String,
164
+ required: true,
165
+ },
166
+ })
167
+
168
+ defineExpose({
169
+ show,
170
+ })
171
+ emitter.on('add-page-view', ({ pageId, view, grid }) => {
172
+ console.log('++++++++++++++++++++++++++++++++++++++++++++++')
173
+ console.log('view', view)
174
+ const page = pages.value.find((p) => p.id === pageId)
175
+ if (page) {
176
+ if (!page.items) {
177
+ page.items = []
178
+ }
179
+ page.items.push(view)
180
+ nextTick(() => {
181
+ const el = document.querySelector(`[gs-id="${view.id}"]`)
182
+ grid.makeWidget(el)
183
+ })
184
+ }
185
+ console.log('page', page)
186
+ })
187
+
188
+ function onClickClose() {
189
+ isVisible.value = false
190
+ }
191
+ </script>
192
+
193
+ <template>
194
+ <Teleport to="body">
195
+ <div v-if="isVisible && (templateToEdit || report)" class="template-maker">
196
+ <Filters v-if="showFiltersMenu" :token="token" @close="showFiltersMenu = false" />
197
+ <div class="template-maker__header">
198
+ {{ templateToEdit ? templateToEdit.name : 'Nuevo template' }}
199
+ <div class="template-maker__header__close" @click="onClickClose">
200
+ <svg
201
+ width="16"
202
+ height="16"
203
+ viewBox="0 0 16 16"
204
+ fill="none"
205
+ xmlns="http://www.w3.org/2000/svg"
206
+ @click="$emit('close')"
207
+ >
208
+ <path
209
+ d="M1.33398 1.33398L14.6673 14.6673"
210
+ stroke="#FFFFFF"
211
+ stroke-width="2"
212
+ stroke-linecap="round"
213
+ stroke-linejoin="round"
214
+ />
215
+ <path
216
+ d="M14.666 1.33398L1.33268 14.6673"
217
+ stroke="#FFFFFF"
218
+ stroke-width="2"
219
+ stroke-linecap="round"
220
+ stroke-linejoin="round"
221
+ />
222
+ </svg>
223
+ </div>
224
+ </div>
225
+ <div class="template-maker__content">
226
+ <div class="template-maker__content__sidebar">
227
+ <!-- Plantillas-->
228
+ </div>
229
+ <div class="template-maker__content__main">
230
+ <div class="container-main">
231
+ <div class="template-maker__content__main__cover-selector">
232
+ <CoverSelector
233
+ v-if="isTemplateMode"
234
+ :is-post-match="true"
235
+ :initial-cover-id="coverId"
236
+ @select-cover="onSelectCover"
237
+ />
238
+ </div>
239
+ <div class="template-maker__content__main__pages">
240
+ <Cover
241
+ v-if="coverSelected"
242
+ id="page-0"
243
+ :cover-id="coverSelected.id"
244
+ :is-post-match="coverSelected.isPostMatch"
245
+ @intersection-changed="onIntersectionChanged($event, -1)"
246
+ />
247
+ <div
248
+ class="new-items-buttons"
249
+ :style="{ 'margin-bottom': pages.length === 0 ? '30px' : '0' }"
250
+ >
251
+ <div
252
+ class="new-items-buttons__add-page new-item-button"
253
+ @click="onClickAddPage(-1)"
254
+ >
255
+ <div>+ Nueva página</div>
256
+ <svg
257
+ width="16"
258
+ height="16"
259
+ viewBox="0 0 16 16"
260
+ fill="none"
261
+ xmlns="http://www.w3.org/2000/svg"
262
+ >
263
+ <path
264
+ d="M8.66797 1.33203H4.0013C3.64768 1.33203 3.30854 1.47251 3.05849 1.72256C2.80844 1.9726 2.66797 2.31174 2.66797 2.66536V13.332C2.66797 13.6857 2.80844 14.0248 3.05849 14.2748C3.30854 14.5249 3.64768 14.6654 4.0013 14.6654H12.0013C12.3549 14.6654 12.6941 14.5249 12.9441 14.2748C13.1942 14.0248 13.3346 13.6857 13.3346 13.332V5.9987L8.66797 1.33203Z"
265
+ stroke="white"
266
+ stroke-width="1.33333"
267
+ stroke-linecap="round"
268
+ stroke-linejoin="round"
269
+ />
270
+ <path
271
+ d="M8.66797 1.33203V5.9987H13.3346"
272
+ stroke="white"
273
+ stroke-width="1.33333"
274
+ stroke-linecap="round"
275
+ stroke-linejoin="round"
276
+ />
277
+ </svg>
278
+ </div>
279
+ </div>
280
+ <div
281
+ v-for="(page, index) of pages"
282
+ :key="index"
283
+ :id="`page-${index + 1}`"
284
+ class="template-maker__content__main__pages__page"
285
+ >
286
+ <div class="page-indicator">
287
+ <div class="page-indicator__index">Pag {{ getTwoDigitNumber(index + 2) }}</div>
288
+ </div>
289
+ <TemplateReportPage
290
+ v-if="coverSelected"
291
+ :page="page"
292
+ :isTemplateMode="isTemplateMode"
293
+ :is-post-match="coverSelected.isPostMatch"
294
+ @intersection-changed="onIntersectionChanged($event, index)"
295
+ />
296
+ <div
297
+ class="new-items-buttons"
298
+ :style="{
299
+ 'margin-bottom': index + 1 === pages.length ? '30px' : '0',
300
+ 'margin-top': '10px',
301
+ }"
302
+ >
303
+ <div
304
+ class="new-items-buttons__add-page new-item-button"
305
+ @click="onClickAddPage(index)"
306
+ >
307
+ <div>+ Nueva página</div>
308
+ <svg
309
+ width="16"
310
+ height="16"
311
+ viewBox="0 0 16 16"
312
+ fill="none"
313
+ xmlns="http://www.w3.org/2000/svg"
314
+ >
315
+ <path
316
+ d="M8.66797 1.33203H4.0013C3.64768 1.33203 3.30854 1.47251 3.05849 1.72256C2.80844 1.9726 2.66797 2.31174 2.66797 2.66536V13.332C2.66797 13.6857 2.80844 14.0248 3.05849 14.2748C3.30854 14.5249 3.64768 14.6654 4.0013 14.6654H12.0013C12.3549 14.6654 12.6941 14.5249 12.9441 14.2748C13.1942 14.0248 13.3346 13.6857 13.3346 13.332V5.9987L8.66797 1.33203Z"
317
+ stroke="white"
318
+ stroke-width="1.33333"
319
+ stroke-linecap="round"
320
+ stroke-linejoin="round"
321
+ />
322
+ <path
323
+ d="M8.66797 1.33203V5.9987H13.3346"
324
+ stroke="white"
325
+ stroke-width="1.33333"
326
+ stroke-linecap="round"
327
+ stroke-linejoin="round"
328
+ />
329
+ </svg>
330
+ </div>
331
+ <div
332
+ class="new-items-buttons__add-item new-item-button"
333
+ @click="onClickAddView()"
334
+ >
335
+ <div>+ Agregar gráfico</div>
336
+ <svg
337
+ width="16"
338
+ height="16"
339
+ viewBox="0 0 16 16"
340
+ fill="none"
341
+ xmlns="http://www.w3.org/2000/svg"
342
+ >
343
+ <path
344
+ d="M12 13.3346V6.66797"
345
+ stroke="white"
346
+ stroke-width="1.33333"
347
+ stroke-linecap="round"
348
+ stroke-linejoin="round"
349
+ />
350
+ <path
351
+ d="M8 13.3346V2.66797"
352
+ stroke="white"
353
+ stroke-width="1.33333"
354
+ stroke-linecap="round"
355
+ stroke-linejoin="round"
356
+ />
357
+ <path
358
+ d="M4 13.332V9.33203"
359
+ stroke="white"
360
+ stroke-width="1.33333"
361
+ stroke-linecap="round"
362
+ stroke-linejoin="round"
363
+ />
364
+ </svg>
365
+ </div>
366
+ </div>
367
+ </div>
368
+ </div>
369
+ </div>
370
+ <div class="template-maker__content__main__footer">
371
+ <div class="template-maker__content__main__footer__paginator">
372
+ <div class="template-maker__content__main__footer__paginator__nav">
373
+ <div>Páginas</div>
374
+ <div
375
+ class="template-maker__content__main__footer__paginator__nav__arrow"
376
+ @click="onClickPage(currentPageIndex - 1)"
377
+ >
378
+ <svg
379
+ width="6"
380
+ height="10"
381
+ viewBox="0 0 6 10"
382
+ fill="none"
383
+ xmlns="http://www.w3.org/2000/svg"
384
+ >
385
+ <path
386
+ fill-rule="evenodd"
387
+ clip-rule="evenodd"
388
+ d="M2.22444 5L5.29079 8.57741C5.56974 8.90285 5.56974 9.43049 5.29079 9.75592C5.01184 10.0814 4.55958 10.0814 4.28064 9.75592L0.709209 5.58926C0.430263 5.26382 0.430263 4.73618 0.709209 4.41074L4.28064 0.244078C4.55958 -0.0813593 5.01184 -0.0813592 5.29079 0.244078C5.56974 0.569515 5.56974 1.09715 5.29079 1.42259L2.22444 5Z"
389
+ fill="#92929D"
390
+ />
391
+ </svg>
392
+ </div>
393
+ <div
394
+ class="template-maker__content__main__footer__paginator__nav__arrow"
395
+ @click="onClickPage(currentPageIndex + 1)"
396
+ >
397
+ <svg
398
+ width="6"
399
+ height="10"
400
+ viewBox="0 0 6 10"
401
+ fill="none"
402
+ xmlns="http://www.w3.org/2000/svg"
403
+ >
404
+ <path
405
+ fill-rule="evenodd"
406
+ clip-rule="evenodd"
407
+ d="M3.77556 5L0.70921 8.57741C0.430264 8.90285 0.430264 9.43049 0.70921 9.75592C0.988156 10.0814 1.44042 10.0814 1.71936 9.75592L5.29079 5.58926C5.56974 5.26382 5.56974 4.73618 5.29079 4.41074L1.71936 0.244078C1.44042 -0.0813593 0.988155 -0.0813592 0.709209 0.244078C0.430264 0.569515 0.430264 1.09715 0.70921 1.42259L3.77556 5Z"
408
+ fill="#92929D"
409
+ />
410
+ </svg>
411
+ </div>
412
+ </div>
413
+ <div class="template-maker__content__main__footer__paginator__numbers">
414
+ <div
415
+ role="button"
416
+ :class="{ active: currentPageIndex === 0 }"
417
+ @click="onClickPage(0)"
418
+ >
419
+ {{ getTwoDigitNumber(1) }}
420
+ </div>
421
+ <div
422
+ role="button"
423
+ v-for="(page, index) of pages"
424
+ :key="index"
425
+ :class="{ active: index + 1 === currentPageIndex }"
426
+ @click="onClickPage(index + 1)"
427
+ >
428
+ {{ getTwoDigitNumber(index + 2) }}
429
+ </div>
430
+ </div>
431
+ </div>
432
+ <div role="button" class="template-maker__content__main__footer__save save-button">
433
+ <div>Guardar</div>
434
+ </div>
435
+ </div>
436
+ </div>
437
+ </div>
438
+ </div>
439
+ </Teleport>
440
+ </template>
441
+
442
+ <style scoped lang="scss">
443
+ $header-height: 64px;
444
+
445
+ .page-indicator {
446
+ position: relative;
447
+ display: flex;
448
+ align-items: center;
449
+ width: 998px;
450
+ border-top: 1px dashed #496290;
451
+ margin: 2px 0 4px;
452
+
453
+ &__index {
454
+ position: absolute;
455
+ left: -60px;
456
+ top: 0;
457
+ height: 100%;
458
+ display: flex;
459
+ align-items: center;
460
+ justify-content: center;
461
+ font-size: 12px;
462
+ color: #ffffff;
463
+ font-family: Poppins-Regular, sans-serif;
464
+ font-weight: normal;
465
+ font-stretch: normal;
466
+ font-style: normal;
467
+ line-height: 1.71;
468
+ letter-spacing: normal;
469
+ }
470
+ }
471
+
472
+ .save-button {
473
+ display: flex;
474
+ justify-content: center;
475
+ align-items: center;
476
+ padding: 7px 14px 7px 12px;
477
+ border-radius: 5px;
478
+ border: solid 1px rgba(255, 255, 255, 0.1);
479
+ background-color: rgba(255, 255, 255, 0.05);
480
+ cursor: pointer;
481
+ }
482
+
483
+ .new-items-buttons {
484
+ width: 100%;
485
+ display: flex;
486
+ align-items: center;
487
+ justify-content: center;
488
+ gap: 8px;
489
+ margin-top: 2px;
490
+ }
491
+
492
+ .new-item-button {
493
+ width: 100%;
494
+ padding: 10px 14px;
495
+ border-radius: 8px;
496
+ border: solid 1px #8a8a8a;
497
+ background-color: rgba(255, 255, 255, 0.05);
498
+ display: flex;
499
+ justify-content: center;
500
+ align-items: center;
501
+ gap: 12px;
502
+ cursor: pointer;
503
+ font-family: Poppins-Regular, sans-serif;
504
+ font-size: 14px;
505
+ font-weight: normal;
506
+ font-stretch: normal;
507
+ font-style: normal;
508
+ line-height: 1.71;
509
+ letter-spacing: normal;
510
+ text-align: left;
511
+ color: #fff;
512
+ }
513
+
514
+ .container-main {
515
+ height: calc(100vh - $header-height);
516
+ width: 100%;
517
+ padding: 24px 16px;
518
+ display: flex;
519
+ flex-direction: column;
520
+ align-items: center;
521
+ overflow-y: scroll;
522
+ position: relative;
523
+ margin-bottom: 180px;
524
+ }
525
+
526
+ .template-maker {
527
+ position: fixed;
528
+ height: 100vh;
529
+ width: 100vw;
530
+ top: 0;
531
+ left: 0;
532
+ right: 0;
533
+ bottom: 0;
534
+ background-color: #0d1d29;
535
+ z-index: 4999;
536
+
537
+ display: flex;
538
+ flex-direction: column;
539
+
540
+ &__header {
541
+ height: $header-height;
542
+ display: flex;
543
+ align-items: center;
544
+ justify-content: space-between;
545
+ padding: 10px 27px;
546
+ -webkit-backdrop-filter: blur(60px);
547
+ backdrop-filter: blur(60px);
548
+ border-bottom: solid 1px #3d4a54;
549
+ background-color: rgba(38, 50, 60, 0.8);
550
+
551
+ font-family: Poppins-Regular, sans-serif;
552
+ font-size: 16px;
553
+ font-weight: normal;
554
+ font-stretch: normal;
555
+ font-style: normal;
556
+ line-height: 1.38;
557
+ letter-spacing: normal;
558
+ text-align: left;
559
+ color: #fff;
560
+
561
+ &__close {
562
+ cursor: pointer;
563
+ }
564
+ }
565
+
566
+ &__content {
567
+ display: grid;
568
+ grid-template-columns: 0px 1fr;
569
+
570
+ &__sidebar {
571
+ height: calc(100vh - $header-height);
572
+ width: 0px;
573
+ -webkit-backdrop-filter: blur(60px);
574
+ backdrop-filter: blur(60px);
575
+ background-color: rgba(45, 62, 75, 0.8);
576
+ }
577
+
578
+ &__main {
579
+ display: flex;
580
+ flex-direction: column;
581
+ align-items: center;
582
+
583
+ &__cover-selector {
584
+ width: 352px;
585
+ height: fit-content;
586
+ }
587
+
588
+ &__pages {
589
+ width: 100%;
590
+ max-width: 998px;
591
+ display: flex;
592
+ flex-direction: column;
593
+ align-items: center;
594
+ gap: 4px;
595
+ margin-top: 18px;
596
+ margin-bottom: 70px;
597
+
598
+ &__page {
599
+ width: 100%;
600
+ max-width: 998px;
601
+ }
602
+ }
603
+
604
+ &__footer {
605
+ width: 100%;
606
+ position: absolute;
607
+ display: flex;
608
+ justify-content: space-between;
609
+ max-width: 1202px;
610
+ bottom: 0;
611
+ padding: 10px 14px 14px;
612
+ box-shadow: 0 -4px 24px 0 rgba(0, 0, 0, 0.5);
613
+ background-color: #182531;
614
+
615
+ &__paginator {
616
+ display: flex;
617
+ gap: 12px;
618
+ flex-grow: 1;
619
+
620
+ &__nav {
621
+ display: flex;
622
+ align-items: center;
623
+ gap: 4px;
624
+
625
+ & > div:first-child {
626
+ opacity: 0.5;
627
+ font-family: Poppins-Regular, sans-serif;
628
+ font-size: 14px;
629
+ font-weight: normal;
630
+ font-stretch: normal;
631
+ font-style: normal;
632
+ line-height: 1.71;
633
+ letter-spacing: normal;
634
+ text-align: left;
635
+ color: #fff;
636
+ }
637
+
638
+ &__arrow {
639
+ padding: 4px 6px;
640
+ cursor: pointer;
641
+ }
642
+ }
643
+
644
+ &__numbers {
645
+ display: flex;
646
+ align-items: center;
647
+ font-size: 14px;
648
+ color: #ffffff;
649
+
650
+ & > div {
651
+ padding: 4px;
652
+ opacity: 0.6;
653
+ font-family: Poppins-Regular, sans-serif;
654
+ font-size: 14px;
655
+ font-weight: normal;
656
+ font-stretch: normal;
657
+ font-style: normal;
658
+ //line-height: 1.71;
659
+ letter-spacing: normal;
660
+ text-align: left;
661
+ color: #fff;
662
+ cursor: pointer;
663
+
664
+ &.active {
665
+ opacity: 1;
666
+ border-bottom: solid 1px #cbee6b;
667
+ }
668
+ }
669
+ }
670
+ }
671
+ }
672
+ }
673
+ }
674
+ }
675
+ </style>