vgapp 1.4.4 → 1.4.6

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 (123) hide show
  1. package/README.md +270 -270
  2. package/app/langs/en/buttons.json +17 -17
  3. package/app/langs/en/messages.json +36 -36
  4. package/app/langs/ru/buttons.json +17 -17
  5. package/app/langs/ru/messages.json +36 -36
  6. package/app/modules/vgalert/js/vgalert.js +266 -266
  7. package/app/modules/vgalert/scss/_variables.scss +16 -16
  8. package/app/modules/vgalert/scss/vgalert.scss +107 -107
  9. package/app/modules/vgcollapse/scss/_variables.scss +7 -7
  10. package/app/modules/vgcollapse/scss/vgcollapse.scss +5 -5
  11. package/app/modules/vgdropdown/scss/_variables.scss +14 -14
  12. package/app/modules/vgdropdown/scss/vgdropdown.scss +5 -5
  13. package/app/modules/vgdynamictable/index.js +4 -4
  14. package/app/modules/vgdynamictable/js/filters.js +21 -21
  15. package/app/modules/vgdynamictable/js/fixed.js +179 -179
  16. package/app/modules/vgdynamictable/js/options.js +3 -3
  17. package/app/modules/vgdynamictable/js/pagination.js +1 -1
  18. package/app/modules/vgdynamictable/js/search.js +12 -12
  19. package/app/modules/vgdynamictable/js/skeleton.js +27 -19
  20. package/app/modules/vgdynamictable/js/sortable.js +71 -71
  21. package/app/modules/vgdynamictable/js/summary-footer.js +28 -28
  22. package/app/modules/vgdynamictable/js/table-url-state.js +31 -31
  23. package/app/modules/vgdynamictable/js/utils/common.js +48 -48
  24. package/app/modules/vgdynamictable/js/vgdynamictable.js +79 -79
  25. package/app/modules/vgdynamictable/scss/_actions.scss +19 -19
  26. package/app/modules/vgdynamictable/scss/_pagination.scss +5 -5
  27. package/app/modules/vgdynamictable/scss/_skeleton.scss +11 -11
  28. package/app/modules/vgdynamictable/scss/_sortable.scss +28 -28
  29. package/app/modules/vgdynamictable/scss/_table.scss +7 -30
  30. package/app/modules/vgdynamictable/scss/_variables.scss +46 -46
  31. package/app/modules/vgdynamictable/scss/vgdynamictable.scss +28 -36
  32. package/app/modules/vgfilepreview/js/i18n.js +56 -56
  33. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
  34. package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
  35. package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
  36. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
  37. package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
  38. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
  39. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
  40. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
  41. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
  42. package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
  43. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -272
  44. package/app/modules/vgfilepreview/js/renderers/video.js +80 -80
  45. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
  46. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
  47. package/app/modules/vgfilepreview/js/vgfilepreview.js +7 -7
  48. package/app/modules/vgfilepreview/readme.md +68 -68
  49. package/app/modules/vgfilepreview/scss/_variables.scss +115 -115
  50. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +463 -463
  51. package/app/modules/vgfiles/js/droppable.js +20 -9
  52. package/app/modules/vgfiles/js/render.js +153 -153
  53. package/app/modules/vgfiles/js/vgfiles.js +104 -104
  54. package/app/modules/vgfiles/readme.md +123 -123
  55. package/app/modules/vgfiles/scss/_mixins.scss +9 -9
  56. package/app/modules/vgfiles/scss/_variables.scss +41 -41
  57. package/app/modules/vgfiles/scss/vgfiles.scss +161 -161
  58. package/app/modules/vgformsender/js/hideshowpass.js +21 -16
  59. package/app/modules/vgformsender/js/vgformsender.js +4 -6
  60. package/app/modules/vgformsender/readme.md +1 -1
  61. package/app/modules/vgformsender/scss/_variables.scss +5 -5
  62. package/app/modules/vgformsender/scss/vgformsender.scss +42 -42
  63. package/app/modules/vglawcookie/js/vglawcookie.js +11 -8
  64. package/app/modules/vglawcookie/scss/_variables.scss +13 -13
  65. package/app/modules/vglawcookie/scss/vglawcookie.scss +5 -5
  66. package/app/modules/vgmodal/js/vgmodal.interaction.js +216 -216
  67. package/app/modules/vgmodal/js/vgmodal.js +355 -355
  68. package/app/modules/vgmodal/js/vgmodal.minimized.js +227 -227
  69. package/app/modules/vgmodal/scss/_variables.scss +17 -17
  70. package/app/modules/vgmodal/scss/vgmodal.scss +77 -77
  71. package/app/modules/vgnav/js/vgnav.js +180 -180
  72. package/app/modules/vgnav/scss/_breakpoints.scss +36 -36
  73. package/app/modules/vgnav/scss/_hamburger.scss +5 -5
  74. package/app/modules/vgnav/scss/_placement.scss +5 -5
  75. package/app/modules/vgnav/scss/_toggle.scss +5 -5
  76. package/app/modules/vgnav/scss/_variables.scss +26 -26
  77. package/app/modules/vgnav/scss/vgnav.scss +41 -41
  78. package/app/modules/vgnestable/README.md +39 -39
  79. package/app/modules/vgnestable/js/vgnestable.js +358 -358
  80. package/app/modules/vgnestable/scss/_variables.scss +35 -35
  81. package/app/modules/vgnestable/scss/vgnestable.scss +55 -55
  82. package/app/modules/vgrangeslider/js/skins.js +222 -222
  83. package/app/modules/vgrangeslider/js/vgrangeslider.js +704 -704
  84. package/app/modules/vgrangeslider/scss/_variables.scss +55 -55
  85. package/app/modules/vgrangeslider/scss/vgrangeslider.scss +239 -239
  86. package/app/modules/vgrollup/scss/_variables.scss +15 -15
  87. package/app/modules/vgrollup/scss/vgrollup.scss +6 -6
  88. package/app/modules/vgselect/js/vgselect.js +129 -129
  89. package/app/modules/vgselect/readme.md +11 -11
  90. package/app/modules/vgselect/scss/_variables.scss +50 -50
  91. package/app/modules/vgselect/scss/vgselect.scss +48 -48
  92. package/app/modules/vgsidebar/js/vgsidebar.js +79 -79
  93. package/app/modules/vgsidebar/scss/_variables.scss +10 -10
  94. package/app/modules/vgsidebar/scss/vgsidebar.scss +5 -5
  95. package/app/modules/vgtabs/scss/_variables.scss +23 -23
  96. package/app/modules/vgtabs/scss/vgtabs.scss +5 -5
  97. package/app/modules/vgtoast/scss/_variables.scss +13 -13
  98. package/app/modules/vgtoast/scss/vgtoast.scss +5 -5
  99. package/app/modules/vgtooltip/js/vgtooltip.js +107 -51
  100. package/app/modules/vgtooltip/scss/_variables.scss +10 -10
  101. package/app/modules/vgtooltip/scss/vgtooltip.scss +5 -5
  102. package/app/utils/js/components/audio-metadata.js +240 -240
  103. package/app/utils/js/components/backdrop.js +116 -116
  104. package/app/utils/js/components/file-icon.js +109 -109
  105. package/app/utils/js/components/file-preview.js +304 -304
  106. package/app/utils/js/components/sanitize.js +150 -150
  107. package/app/utils/js/components/video-metadata.js +140 -140
  108. package/app/utils/scss/_backdrop.scss +5 -5
  109. package/app/utils/scss/_theme-default.scss +12 -12
  110. package/app/utils/scss/_theme.scss +7 -7
  111. package/app/utils/scss/_tokens.scss +170 -170
  112. package/app/utils/scss/default.scss +9 -9
  113. package/app/utils/scss/functions.scss +21 -21
  114. package/app/utils/scss/index.scss +4 -4
  115. package/app/utils/scss/mixin.scss +16 -16
  116. package/app/utils/scss/variables.scss +105 -105
  117. package/app/vgapp.js +295 -295
  118. package/build/vgapp.css +1 -1
  119. package/build/vgapp.css.map +1 -1
  120. package/build/vgapp.js +1 -1
  121. package/build/vgapp.js.map +1 -1
  122. package/index.scss +20 -20
  123. package/package.json +4 -2
@@ -1,463 +1,463 @@
1
- /**
2
- *--------------------------------------------------------------------------
3
- * Модуль: VGFilePreview
4
- * Автор: Vegas DEV
5
- * Лицензия: смотри LICENSE
6
- *--------------------------------------------------------------------------
7
- **/
8
-
9
- @forward "variables";
10
- @use "../../../utils/scss" as vg;
11
- @use "variables" as vars;
12
-
13
- %vg-filepreview-vars {
14
- @include vg.mix-vars('filepreview', vars.$filepreview-map);
15
- }
16
-
17
- @mixin filepreview-trigger($bg) {
18
- border: 0;
19
- cursor: pointer;
20
- border-radius: var(--vg-filepreview-trigger-radius);
21
- padding: var(--vg-filepreview-trigger-padding);
22
- font-size: var(--vg-filepreview-trigger-font-size);
23
- font-weight: var(--vg-filepreview-trigger-font-weight);
24
- background: $bg;
25
- color: var(--vg-filepreview-trigger-color);
26
- }
27
-
28
- .is-preview-action {
29
- cursor: pointer;
30
- }
31
-
32
- .vg-filepreview-audio-inline {
33
- @extend %vg-filepreview-vars;
34
- display: inline-flex;
35
- align-items: center;
36
- gap: 8px;
37
- min-width: 0;
38
-
39
- &__toggle {
40
- display: inline-flex;
41
- align-items: center;
42
- justify-content: center;
43
- width: var(--vg-filepreview-audio-inline-toggle-size);
44
- height: var(--vg-filepreview-audio-inline-toggle-size);
45
- border: 0;
46
- border-radius: var(--vg-filepreview-audio-inline-toggle-radius);
47
- background: var(--vg-filepreview-audio-inline-toggle-bg);
48
- color: var(--vg-filepreview-audio-inline-toggle-color);
49
- cursor: pointer;
50
- padding: 0;
51
- flex: 0 0 auto;
52
- }
53
-
54
- &__icon {
55
- display: inline-flex;
56
- align-items: center;
57
- justify-content: center;
58
-
59
- svg {
60
- width: var(--vg-filepreview-audio-inline-icon-size);
61
- height: var(--vg-filepreview-audio-inline-icon-size);
62
- }
63
- }
64
-
65
- &__name {
66
- line-height: var(--vg-filepreview-audio-inline-name-line-height);
67
- white-space: nowrap;
68
- overflow: hidden;
69
- text-overflow: ellipsis;
70
- }
71
- }
72
-
73
- .vg-filepreview-image-modal,
74
- .vg-filepreview-text-modal,
75
- .vg-filepreview-video-modal,
76
- .vg-filepreview-zip-modal {
77
- @extend %vg-filepreview-vars;
78
-
79
- .vg-modal-content {
80
- background: var(--vg-filepreview-modal-content-bg);
81
- color: var(--vg-filepreview-modal-content-color);
82
- }
83
-
84
- .vg-btn-close {
85
- top: var(--vg-filepreview-modal-close-top);
86
- right: var(--vg-filepreview-modal-close-right);
87
- }
88
- }
89
-
90
- .vg-filepreview-image-modal {
91
- &__body {
92
- display: flex;
93
- flex-direction: column;
94
- align-items: center;
95
- justify-content: center;
96
- gap: var(--vg-filepreview-image-body-gap);
97
- padding: var(--vg-filepreview-modal-body-padding);
98
- }
99
-
100
- &__title {
101
- color: var(--vg-filepreview-panel-color);
102
- font-size: var(--vg-filepreview-modal-title-size);
103
- font-weight: var(--vg-filepreview-modal-title-weight);
104
- line-height: var(--vg-filepreview-modal-title-line-height);
105
- width: 100%;
106
- text-align: center;
107
- white-space: nowrap;
108
- overflow: hidden;
109
- text-overflow: ellipsis;
110
- }
111
-
112
- &__img {
113
- display: block;
114
- max-width: var(--vg-filepreview-image-img-max-width);
115
- max-height: var(--vg-filepreview-image-img-max-height);
116
- width: auto;
117
- height: auto;
118
- object-fit: contain;
119
- border-radius: var(--vg-filepreview-image-img-radius);
120
- }
121
- }
122
-
123
- .vg-filepreview-image-trigger {
124
- @extend %vg-filepreview-vars;
125
- @include filepreview-trigger(var(--vg-filepreview-trigger-image-bg));
126
- }
127
-
128
- .vg-filepreview-image-thumb {
129
- @extend %vg-filepreview-vars;
130
- display: block;
131
- margin-top: var(--vg-filepreview-image-thumb-margin-top);
132
- max-width: var(--vg-filepreview-image-thumb-max-width);
133
- max-height: var(--vg-filepreview-image-thumb-max-height);
134
- width: auto;
135
- height: auto;
136
- border-radius: var(--vg-filepreview-image-thumb-radius);
137
- cursor: pointer;
138
- object-fit: cover;
139
- }
140
-
141
- .vg-filepreview-text-modal,
142
- .vg-filepreview-video-modal,
143
- .vg-filepreview-zip-modal {
144
- &__body {
145
- padding: var(--vg-filepreview-modal-body-padding);
146
- }
147
-
148
- &__title {
149
- color: var(--vg-filepreview-panel-color);
150
- font-size: var(--vg-filepreview-modal-title-size);
151
- font-weight: var(--vg-filepreview-modal-title-weight);
152
- line-height: var(--vg-filepreview-modal-title-line-height);
153
- margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
154
- white-space: nowrap;
155
- overflow: hidden;
156
- text-overflow: ellipsis;
157
- }
158
- }
159
-
160
- .vg-filepreview-text-modal {
161
- &__content {
162
- margin: 0;
163
- padding: var(--vg-filepreview-text-content-padding);
164
- max-height: var(--vg-filepreview-text-content-max-height);
165
- overflow: auto;
166
- background: var(--vg-filepreview-text-content-bg);
167
- border-radius: var(--vg-filepreview-text-content-radius);
168
- font-size: var(--vg-filepreview-text-content-font-size);
169
- line-height: var(--vg-filepreview-text-content-line-height);
170
- white-space: pre-wrap;
171
- word-break: break-word;
172
-
173
- &.is-markdown {
174
- white-space: normal;
175
-
176
- h1,
177
- h2,
178
- h3,
179
- h4,
180
- h5,
181
- h6 {
182
- margin: var(--vg-filepreview-text-markdown-block-margin);
183
- line-height: var(--vg-filepreview-text-markdown-heading-line-height);
184
- }
185
-
186
- p {
187
- margin: var(--vg-filepreview-text-markdown-block-margin);
188
- }
189
-
190
- ul {
191
- margin: var(--vg-filepreview-text-markdown-list-margin);
192
- padding: 0;
193
- }
194
-
195
- pre {
196
- margin: var(--vg-filepreview-text-markdown-block-margin);
197
- padding: var(--vg-filepreview-text-markdown-code-padding);
198
- border-radius: var(--vg-filepreview-text-markdown-code-radius);
199
- background: var(--vg-filepreview-text-markdown-code-bg);
200
- overflow: auto;
201
- }
202
-
203
- a {
204
- color: var(--vg-filepreview-text-markdown-link-color);
205
- }
206
- }
207
- }
208
- }
209
-
210
- .vg-filepreview-text-trigger {
211
- @extend %vg-filepreview-vars;
212
- @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
213
- }
214
-
215
- .vg-filepreview-video-modal {
216
- &__video {
217
- display: block;
218
- width: var(--vg-filepreview-video-player-width);
219
- max-height: var(--vg-filepreview-video-player-max-height);
220
- height: auto;
221
- border-radius: var(--vg-filepreview-video-player-radius);
222
- background: var(--vg-filepreview-video-player-bg);
223
- }
224
-
225
- .vg-modal-header {
226
- display: flex;
227
- gap: 1rem;
228
- }
229
- }
230
-
231
- .vg-filepreview-video-trigger {
232
- @extend %vg-filepreview-vars;
233
- @include filepreview-trigger(var(--vg-filepreview-trigger-video-bg));
234
- }
235
-
236
- .vg-filepreview-zip-modal {
237
- &__content {
238
- max-height: var(--vg-filepreview-zip-content-max-height);
239
- overflow: auto;
240
- background: var(--vg-filepreview-zip-content-bg);
241
- border-radius: var(--vg-filepreview-zip-content-radius);
242
- padding: var(--vg-filepreview-zip-content-padding);
243
- }
244
-
245
- &__table {
246
- width: 100%;
247
- border-collapse: collapse;
248
- font-size: var(--vg-filepreview-zip-table-font-size);
249
-
250
- th,
251
- td {
252
- padding: var(--vg-filepreview-zip-table-cell-padding);
253
- border-bottom: var(--vg-filepreview-zip-table-border);
254
- text-align: left;
255
- vertical-align: top;
256
- }
257
-
258
- td.name {
259
- word-break: break-word;
260
- }
261
- }
262
-
263
- &__loading,
264
- &__error,
265
- &__empty {
266
- font-size: var(--vg-filepreview-zip-status-font-size);
267
- }
268
- }
269
-
270
- .vg-filepreview-zip-trigger {
271
- @extend %vg-filepreview-vars;
272
- @include filepreview-trigger(var(--vg-filepreview-trigger-zip-bg));
273
- }
274
-
275
- .vg-filepreview-pdf-trigger,
276
- .vg-filepreview-office-trigger,
277
- .vg-filepreview-download-trigger {
278
- @extend %vg-filepreview-vars;
279
- @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
280
- display: inline-flex;
281
- align-items: center;
282
- gap: 6px;
283
-
284
- &__icon {
285
- display: inline-flex;
286
- align-items: center;
287
-
288
- svg {
289
- width: 14px;
290
- height: 14px;
291
- }
292
- }
293
- }
294
-
295
- .vg-filepreview-video-modal__navigation {
296
- display: inline-flex;
297
- gap: 8px;
298
- }
299
-
300
- .vg-filepreview-video-modal__nav-btn {
301
- border: 0;
302
- border-radius: 8px;
303
- padding: 6px 10px;
304
- font-size: 12px;
305
- font-weight: 600;
306
- cursor: pointer;
307
- background: rgba(255, 255, 255, .12);
308
- color: var(--vg-filepreview-panel-color);
309
- }
310
-
311
- .vg-filepreview-pdf-modal,
312
- .vg-filepreview-office-modal {
313
- @extend %vg-filepreview-vars;
314
-
315
- .vg-modal-content {
316
- background: var(--vg-filepreview-modal-content-bg);
317
- color: var(--vg-filepreview-modal-content-color);
318
- }
319
-
320
- .vg-btn-close {
321
- top: var(--vg-filepreview-modal-close-top);
322
- right: var(--vg-filepreview-modal-close-right);
323
- }
324
-
325
- &__body {
326
- padding: var(--vg-filepreview-modal-body-padding);
327
- }
328
-
329
- &__title {
330
- color: var(--vg-filepreview-panel-color);
331
- font-size: var(--vg-filepreview-modal-title-size);
332
- font-weight: var(--vg-filepreview-modal-title-weight);
333
- line-height: var(--vg-filepreview-modal-title-line-height);
334
- margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
335
- white-space: nowrap;
336
- overflow: hidden;
337
- text-overflow: ellipsis;
338
- }
339
- }
340
-
341
- .vg-filepreview-pdf-modal {
342
- &__toolbar {
343
- display: flex;
344
- align-items: center;
345
- flex-wrap: wrap;
346
- gap: var(--vg-filepreview-pdf-toolbar-gap);
347
- margin-bottom: var(--vg-filepreview-pdf-toolbar-margin-bottom);
348
- }
349
-
350
- &__btn {
351
- border: 0;
352
- border-radius: var(--vg-filepreview-pdf-btn-radius);
353
- padding: var(--vg-filepreview-pdf-btn-padding);
354
- font-size: var(--vg-filepreview-pdf-btn-font-size);
355
- font-weight: var(--vg-filepreview-pdf-btn-font-weight);
356
- cursor: pointer;
357
- background: var(--vg-filepreview-pdf-btn-bg);
358
- color: var(--vg-filepreview-panel-color);
359
- }
360
-
361
- &__meta {
362
- font-size: var(--vg-filepreview-pdf-meta-font-size);
363
- opacity: var(--vg-filepreview-pdf-meta-opacity);
364
- }
365
-
366
- &__frame {
367
- display: block;
368
- width: var(--vg-filepreview-pdf-frame-width);
369
- height: var(--vg-filepreview-pdf-frame-height);
370
- border: 0;
371
- border-radius: var(--vg-filepreview-pdf-frame-radius);
372
- background: var(--vg-filepreview-pdf-frame-bg);
373
- }
374
- }
375
-
376
- .vg-filepreview-office-modal {
377
- &__frame {
378
- display: block;
379
- width: var(--vg-filepreview-office-frame-width);
380
- height: var(--vg-filepreview-office-frame-height);
381
- border: 0;
382
- border-radius: var(--vg-filepreview-office-frame-radius);
383
- background: var(--vg-filepreview-office-frame-bg);
384
- }
385
-
386
- &__footer {
387
- display: flex;
388
- align-items: center;
389
- justify-content: space-between;
390
- gap: var(--vg-filepreview-office-footer-gap);
391
- margin-top: var(--vg-filepreview-office-footer-margin-top);
392
- }
393
-
394
- &__hint {
395
- font-size: var(--vg-filepreview-office-hint-font-size);
396
- opacity: var(--vg-filepreview-office-hint-opacity);
397
- }
398
-
399
- &__btn {
400
- border: 0;
401
- border-radius: var(--vg-filepreview-office-btn-radius);
402
- padding: var(--vg-filepreview-office-btn-padding);
403
- font-size: var(--vg-filepreview-office-btn-font-size);
404
- font-weight: var(--vg-filepreview-office-btn-font-weight);
405
- cursor: pointer;
406
- background: var(--vg-filepreview-office-btn-bg);
407
- color: var(--vg-filepreview-panel-color);
408
- }
409
- }
410
-
411
- .vg-filepreview-zip-modal {
412
- &__entry-btn {
413
- border: 0;
414
- border-radius: 6px;
415
- padding: 4px 8px;
416
- font-size: 11px;
417
- cursor: pointer;
418
- background: rgba(255, 255, 255, .12);
419
- color: var(--vg-filepreview-panel-color);
420
- }
421
-
422
- &__entry-preview {
423
- margin-top: 10px;
424
- padding-top: 10px;
425
- border-top: var(--vg-filepreview-zip-table-border);
426
- }
427
-
428
- &__entry-preview-title {
429
- font-size: 12px;
430
- font-weight: 600;
431
- margin-bottom: 8px;
432
- word-break: break-all;
433
- }
434
-
435
- &__entry-preview-text {
436
- margin: 0;
437
- padding: 10px;
438
- border-radius: 8px;
439
- background: rgba(255, 255, 255, .08);
440
- white-space: pre-wrap;
441
- word-break: break-word;
442
- }
443
-
444
- &__entry-preview-image {
445
- display: block;
446
- max-width: 100%;
447
- max-height: 360px;
448
- border-radius: 8px;
449
- }
450
-
451
- &__content {
452
- width: 100%;
453
- }
454
- }
455
-
456
- [data-vg-filepreview-state="loading"] .preview {
457
- opacity: .72;
458
- }
459
-
460
- [data-vg-filepreview-state="error"] .preview,
461
- [data-vg-filepreview-state="empty"] .preview {
462
- opacity: .9;
463
- }
1
+ /**
2
+ *--------------------------------------------------------------------------
3
+ * Модуль: VGFilePreview
4
+ * Автор: Vegas DEV
5
+ * Лицензия: смотри LICENSE
6
+ *--------------------------------------------------------------------------
7
+ **/
8
+
9
+ @forward "variables";
10
+ @use "../../../utils/scss" as vg;
11
+ @use "variables" as vars;
12
+
13
+ %vg-filepreview-vars {
14
+ @include vg.mix-vars('filepreview', vars.$filepreview-map);
15
+ }
16
+
17
+ @mixin filepreview-trigger($bg) {
18
+ border: 0;
19
+ cursor: pointer;
20
+ border-radius: var(--vg-filepreview-trigger-radius);
21
+ padding: var(--vg-filepreview-trigger-padding);
22
+ font-size: var(--vg-filepreview-trigger-font-size);
23
+ font-weight: var(--vg-filepreview-trigger-font-weight);
24
+ background: $bg;
25
+ color: var(--vg-filepreview-trigger-color);
26
+ }
27
+
28
+ .is-preview-action {
29
+ cursor: pointer;
30
+ }
31
+
32
+ .vg-filepreview-audio-inline {
33
+ @extend %vg-filepreview-vars;
34
+ display: inline-flex;
35
+ align-items: center;
36
+ gap: 8px;
37
+ min-width: 0;
38
+
39
+ &__toggle {
40
+ display: inline-flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ width: var(--vg-filepreview-audio-inline-toggle-size);
44
+ height: var(--vg-filepreview-audio-inline-toggle-size);
45
+ border: 0;
46
+ border-radius: var(--vg-filepreview-audio-inline-toggle-radius);
47
+ background: var(--vg-filepreview-audio-inline-toggle-bg);
48
+ color: var(--vg-filepreview-audio-inline-toggle-color);
49
+ cursor: pointer;
50
+ padding: 0;
51
+ flex: 0 0 auto;
52
+ }
53
+
54
+ &__icon {
55
+ display: inline-flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+
59
+ svg {
60
+ width: var(--vg-filepreview-audio-inline-icon-size);
61
+ height: var(--vg-filepreview-audio-inline-icon-size);
62
+ }
63
+ }
64
+
65
+ &__name {
66
+ line-height: var(--vg-filepreview-audio-inline-name-line-height);
67
+ white-space: nowrap;
68
+ overflow: hidden;
69
+ text-overflow: ellipsis;
70
+ }
71
+ }
72
+
73
+ .vg-filepreview-image-modal,
74
+ .vg-filepreview-text-modal,
75
+ .vg-filepreview-video-modal,
76
+ .vg-filepreview-zip-modal {
77
+ @extend %vg-filepreview-vars;
78
+
79
+ .vg-modal-content {
80
+ background: var(--vg-filepreview-modal-content-bg);
81
+ color: var(--vg-filepreview-modal-content-color);
82
+ }
83
+
84
+ .vg-btn-close {
85
+ top: var(--vg-filepreview-modal-close-top);
86
+ right: var(--vg-filepreview-modal-close-right);
87
+ }
88
+ }
89
+
90
+ .vg-filepreview-image-modal {
91
+ &__body {
92
+ display: flex;
93
+ flex-direction: column;
94
+ align-items: center;
95
+ justify-content: center;
96
+ gap: var(--vg-filepreview-image-body-gap);
97
+ padding: var(--vg-filepreview-modal-body-padding);
98
+ }
99
+
100
+ &__title {
101
+ color: var(--vg-filepreview-panel-color);
102
+ font-size: var(--vg-filepreview-modal-title-size);
103
+ font-weight: var(--vg-filepreview-modal-title-weight);
104
+ line-height: var(--vg-filepreview-modal-title-line-height);
105
+ width: 100%;
106
+ text-align: center;
107
+ white-space: nowrap;
108
+ overflow: hidden;
109
+ text-overflow: ellipsis;
110
+ }
111
+
112
+ &__img {
113
+ display: block;
114
+ max-width: var(--vg-filepreview-image-img-max-width);
115
+ max-height: var(--vg-filepreview-image-img-max-height);
116
+ width: auto;
117
+ height: auto;
118
+ object-fit: contain;
119
+ border-radius: var(--vg-filepreview-image-img-radius);
120
+ }
121
+ }
122
+
123
+ .vg-filepreview-image-trigger {
124
+ @extend %vg-filepreview-vars;
125
+ @include filepreview-trigger(var(--vg-filepreview-trigger-image-bg));
126
+ }
127
+
128
+ .vg-filepreview-image-thumb {
129
+ @extend %vg-filepreview-vars;
130
+ display: block;
131
+ margin-top: var(--vg-filepreview-image-thumb-margin-top);
132
+ max-width: var(--vg-filepreview-image-thumb-max-width);
133
+ max-height: var(--vg-filepreview-image-thumb-max-height);
134
+ width: auto;
135
+ height: auto;
136
+ border-radius: var(--vg-filepreview-image-thumb-radius);
137
+ cursor: pointer;
138
+ object-fit: cover;
139
+ }
140
+
141
+ .vg-filepreview-text-modal,
142
+ .vg-filepreview-video-modal,
143
+ .vg-filepreview-zip-modal {
144
+ &__body {
145
+ padding: var(--vg-filepreview-modal-body-padding);
146
+ }
147
+
148
+ &__title {
149
+ color: var(--vg-filepreview-panel-color);
150
+ font-size: var(--vg-filepreview-modal-title-size);
151
+ font-weight: var(--vg-filepreview-modal-title-weight);
152
+ line-height: var(--vg-filepreview-modal-title-line-height);
153
+ margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
154
+ white-space: nowrap;
155
+ overflow: hidden;
156
+ text-overflow: ellipsis;
157
+ }
158
+ }
159
+
160
+ .vg-filepreview-text-modal {
161
+ &__content {
162
+ margin: 0;
163
+ padding: var(--vg-filepreview-text-content-padding);
164
+ max-height: var(--vg-filepreview-text-content-max-height);
165
+ overflow: auto;
166
+ background: var(--vg-filepreview-text-content-bg);
167
+ border-radius: var(--vg-filepreview-text-content-radius);
168
+ font-size: var(--vg-filepreview-text-content-font-size);
169
+ line-height: var(--vg-filepreview-text-content-line-height);
170
+ white-space: pre-wrap;
171
+ word-break: break-word;
172
+
173
+ &.is-markdown {
174
+ white-space: normal;
175
+
176
+ h1,
177
+ h2,
178
+ h3,
179
+ h4,
180
+ h5,
181
+ h6 {
182
+ margin: var(--vg-filepreview-text-markdown-block-margin);
183
+ line-height: var(--vg-filepreview-text-markdown-heading-line-height);
184
+ }
185
+
186
+ p {
187
+ margin: var(--vg-filepreview-text-markdown-block-margin);
188
+ }
189
+
190
+ ul {
191
+ margin: var(--vg-filepreview-text-markdown-list-margin);
192
+ padding: 0;
193
+ }
194
+
195
+ pre {
196
+ margin: var(--vg-filepreview-text-markdown-block-margin);
197
+ padding: var(--vg-filepreview-text-markdown-code-padding);
198
+ border-radius: var(--vg-filepreview-text-markdown-code-radius);
199
+ background: var(--vg-filepreview-text-markdown-code-bg);
200
+ overflow: auto;
201
+ }
202
+
203
+ a {
204
+ color: var(--vg-filepreview-text-markdown-link-color);
205
+ }
206
+ }
207
+ }
208
+ }
209
+
210
+ .vg-filepreview-text-trigger {
211
+ @extend %vg-filepreview-vars;
212
+ @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
213
+ }
214
+
215
+ .vg-filepreview-video-modal {
216
+ &__video {
217
+ display: block;
218
+ width: var(--vg-filepreview-video-player-width);
219
+ max-height: var(--vg-filepreview-video-player-max-height);
220
+ height: auto;
221
+ border-radius: var(--vg-filepreview-video-player-radius);
222
+ background: var(--vg-filepreview-video-player-bg);
223
+ }
224
+
225
+ .vg-modal-header {
226
+ display: flex;
227
+ gap: 1rem;
228
+ }
229
+ }
230
+
231
+ .vg-filepreview-video-trigger {
232
+ @extend %vg-filepreview-vars;
233
+ @include filepreview-trigger(var(--vg-filepreview-trigger-video-bg));
234
+ }
235
+
236
+ .vg-filepreview-zip-modal {
237
+ &__content {
238
+ max-height: var(--vg-filepreview-zip-content-max-height);
239
+ overflow: auto;
240
+ background: var(--vg-filepreview-zip-content-bg);
241
+ border-radius: var(--vg-filepreview-zip-content-radius);
242
+ padding: var(--vg-filepreview-zip-content-padding);
243
+ }
244
+
245
+ &__table {
246
+ width: 100%;
247
+ border-collapse: collapse;
248
+ font-size: var(--vg-filepreview-zip-table-font-size);
249
+
250
+ th,
251
+ td {
252
+ padding: var(--vg-filepreview-zip-table-cell-padding);
253
+ border-bottom: var(--vg-filepreview-zip-table-border);
254
+ text-align: left;
255
+ vertical-align: top;
256
+ }
257
+
258
+ td.name {
259
+ word-break: break-word;
260
+ }
261
+ }
262
+
263
+ &__loading,
264
+ &__error,
265
+ &__empty {
266
+ font-size: var(--vg-filepreview-zip-status-font-size);
267
+ }
268
+ }
269
+
270
+ .vg-filepreview-zip-trigger {
271
+ @extend %vg-filepreview-vars;
272
+ @include filepreview-trigger(var(--vg-filepreview-trigger-zip-bg));
273
+ }
274
+
275
+ .vg-filepreview-pdf-trigger,
276
+ .vg-filepreview-office-trigger,
277
+ .vg-filepreview-download-trigger {
278
+ @extend %vg-filepreview-vars;
279
+ @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
280
+ display: inline-flex;
281
+ align-items: center;
282
+ gap: 6px;
283
+
284
+ &__icon {
285
+ display: inline-flex;
286
+ align-items: center;
287
+
288
+ svg {
289
+ width: 14px;
290
+ height: 14px;
291
+ }
292
+ }
293
+ }
294
+
295
+ .vg-filepreview-video-modal__navigation {
296
+ display: inline-flex;
297
+ gap: 8px;
298
+ }
299
+
300
+ .vg-filepreview-video-modal__nav-btn {
301
+ border: 0;
302
+ border-radius: 8px;
303
+ padding: 6px 10px;
304
+ font-size: 12px;
305
+ font-weight: 600;
306
+ cursor: pointer;
307
+ background: rgba(255, 255, 255, .12);
308
+ color: var(--vg-filepreview-panel-color);
309
+ }
310
+
311
+ .vg-filepreview-pdf-modal,
312
+ .vg-filepreview-office-modal {
313
+ @extend %vg-filepreview-vars;
314
+
315
+ .vg-modal-content {
316
+ background: var(--vg-filepreview-modal-content-bg);
317
+ color: var(--vg-filepreview-modal-content-color);
318
+ }
319
+
320
+ .vg-btn-close {
321
+ top: var(--vg-filepreview-modal-close-top);
322
+ right: var(--vg-filepreview-modal-close-right);
323
+ }
324
+
325
+ &__body {
326
+ padding: var(--vg-filepreview-modal-body-padding);
327
+ }
328
+
329
+ &__title {
330
+ color: var(--vg-filepreview-panel-color);
331
+ font-size: var(--vg-filepreview-modal-title-size);
332
+ font-weight: var(--vg-filepreview-modal-title-weight);
333
+ line-height: var(--vg-filepreview-modal-title-line-height);
334
+ margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
335
+ white-space: nowrap;
336
+ overflow: hidden;
337
+ text-overflow: ellipsis;
338
+ }
339
+ }
340
+
341
+ .vg-filepreview-pdf-modal {
342
+ &__toolbar {
343
+ display: flex;
344
+ align-items: center;
345
+ flex-wrap: wrap;
346
+ gap: var(--vg-filepreview-pdf-toolbar-gap);
347
+ margin-bottom: var(--vg-filepreview-pdf-toolbar-margin-bottom);
348
+ }
349
+
350
+ &__btn {
351
+ border: 0;
352
+ border-radius: var(--vg-filepreview-pdf-btn-radius);
353
+ padding: var(--vg-filepreview-pdf-btn-padding);
354
+ font-size: var(--vg-filepreview-pdf-btn-font-size);
355
+ font-weight: var(--vg-filepreview-pdf-btn-font-weight);
356
+ cursor: pointer;
357
+ background: var(--vg-filepreview-pdf-btn-bg);
358
+ color: var(--vg-filepreview-panel-color);
359
+ }
360
+
361
+ &__meta {
362
+ font-size: var(--vg-filepreview-pdf-meta-font-size);
363
+ opacity: var(--vg-filepreview-pdf-meta-opacity);
364
+ }
365
+
366
+ &__frame {
367
+ display: block;
368
+ width: var(--vg-filepreview-pdf-frame-width);
369
+ height: var(--vg-filepreview-pdf-frame-height);
370
+ border: 0;
371
+ border-radius: var(--vg-filepreview-pdf-frame-radius);
372
+ background: var(--vg-filepreview-pdf-frame-bg);
373
+ }
374
+ }
375
+
376
+ .vg-filepreview-office-modal {
377
+ &__frame {
378
+ display: block;
379
+ width: var(--vg-filepreview-office-frame-width);
380
+ height: var(--vg-filepreview-office-frame-height);
381
+ border: 0;
382
+ border-radius: var(--vg-filepreview-office-frame-radius);
383
+ background: var(--vg-filepreview-office-frame-bg);
384
+ }
385
+
386
+ &__footer {
387
+ display: flex;
388
+ align-items: center;
389
+ justify-content: space-between;
390
+ gap: var(--vg-filepreview-office-footer-gap);
391
+ margin-top: var(--vg-filepreview-office-footer-margin-top);
392
+ }
393
+
394
+ &__hint {
395
+ font-size: var(--vg-filepreview-office-hint-font-size);
396
+ opacity: var(--vg-filepreview-office-hint-opacity);
397
+ }
398
+
399
+ &__btn {
400
+ border: 0;
401
+ border-radius: var(--vg-filepreview-office-btn-radius);
402
+ padding: var(--vg-filepreview-office-btn-padding);
403
+ font-size: var(--vg-filepreview-office-btn-font-size);
404
+ font-weight: var(--vg-filepreview-office-btn-font-weight);
405
+ cursor: pointer;
406
+ background: var(--vg-filepreview-office-btn-bg);
407
+ color: var(--vg-filepreview-panel-color);
408
+ }
409
+ }
410
+
411
+ .vg-filepreview-zip-modal {
412
+ &__entry-btn {
413
+ border: 0;
414
+ border-radius: 6px;
415
+ padding: 4px 8px;
416
+ font-size: 11px;
417
+ cursor: pointer;
418
+ background: rgba(255, 255, 255, .12);
419
+ color: var(--vg-filepreview-panel-color);
420
+ }
421
+
422
+ &__entry-preview {
423
+ margin-top: 10px;
424
+ padding-top: 10px;
425
+ border-top: var(--vg-filepreview-zip-table-border);
426
+ }
427
+
428
+ &__entry-preview-title {
429
+ font-size: 12px;
430
+ font-weight: 600;
431
+ margin-bottom: 8px;
432
+ word-break: break-all;
433
+ }
434
+
435
+ &__entry-preview-text {
436
+ margin: 0;
437
+ padding: 10px;
438
+ border-radius: 8px;
439
+ background: rgba(255, 255, 255, .08);
440
+ white-space: pre-wrap;
441
+ word-break: break-word;
442
+ }
443
+
444
+ &__entry-preview-image {
445
+ display: block;
446
+ max-width: 100%;
447
+ max-height: 360px;
448
+ border-radius: 8px;
449
+ }
450
+
451
+ &__content {
452
+ width: 100%;
453
+ }
454
+ }
455
+
456
+ [data-vg-filepreview-state="loading"] .preview {
457
+ opacity: .72;
458
+ }
459
+
460
+ [data-vg-filepreview-state="error"] .preview,
461
+ [data-vg-filepreview-state="empty"] .preview {
462
+ opacity: .9;
463
+ }