vgapp 1.5.7 → 1.5.8

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 (109) hide show
  1. package/app/langs/en/buttons.json +17 -17
  2. package/app/langs/en/messages.json +36 -36
  3. package/app/langs/ru/buttons.json +17 -17
  4. package/app/langs/ru/messages.json +1 -1
  5. package/app/modules/vgalert/js/vgalert.js +7 -7
  6. package/app/modules/vgalert/scss/_variables.scss +16 -16
  7. package/app/modules/vgcollapse/scss/_variables.scss +7 -7
  8. package/app/modules/vgcollapse/scss/vgcollapse.scss +5 -5
  9. package/app/modules/vgdropdown/scss/_variables.scss +14 -14
  10. package/app/modules/vgdropdown/scss/vgdropdown.scss +5 -5
  11. package/app/modules/vgfilepreview/js/i18n.js +56 -56
  12. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
  13. package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
  14. package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
  15. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
  16. package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
  17. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
  18. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
  19. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
  20. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
  21. package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
  22. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
  23. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
  24. package/app/modules/vgfilepreview/readme.md +68 -68
  25. package/app/modules/vgfiles/js/base.js +198 -198
  26. package/app/modules/vgfiles/js/droppable.js +17 -17
  27. package/app/modules/vgfiles/js/render.js +153 -153
  28. package/app/modules/vgfiles/js/sortable.js +52 -52
  29. package/app/modules/vgfiles/js/vgfiles.js +43 -43
  30. package/app/modules/vgfiles/readme.md +123 -123
  31. package/app/modules/vgfiles/scss/_mixins.scss +13 -13
  32. package/app/modules/vgfiles/scss/_variables.scss +10 -10
  33. package/app/modules/vgfiles/scss/vgfiles.scss +28 -28
  34. package/app/modules/vgformsender/js/hideshowpass.js +22 -22
  35. package/app/modules/vgformsender/readme.md +1 -1
  36. package/app/modules/vgformsender/scss/_variables.scss +5 -5
  37. package/app/modules/vgformsender/scss/vgformsender.scss +42 -42
  38. package/app/modules/vglawcookie/js/vglawcookie.js +19 -19
  39. package/app/modules/vglawcookie/scss/_variables.scss +13 -13
  40. package/app/modules/vglawcookie/scss/vglawcookie.scss +5 -5
  41. package/app/modules/vgmodal/js/vgmodal.interaction.js +216 -216
  42. package/app/modules/vgmodal/js/vgmodal.js +9 -9
  43. package/app/modules/vgmodal/js/vgmodal.minimized.js +227 -227
  44. package/app/modules/vgmodal/scss/_variables.scss +17 -17
  45. package/app/modules/vgmodal/scss/vgmodal.scss +77 -77
  46. package/app/modules/vgnav/js/vgnav.js +62 -62
  47. package/app/modules/vgnav/scss/_breakpoints.scss +36 -36
  48. package/app/modules/vgnav/scss/_hamburger.scss +5 -5
  49. package/app/modules/vgnav/scss/_placement.scss +5 -5
  50. package/app/modules/vgnav/scss/_toggle.scss +5 -5
  51. package/app/modules/vgnav/scss/_variables.scss +26 -26
  52. package/app/modules/vgnav/scss/vgnav.scss +41 -41
  53. package/app/modules/vgnestable/README.md +39 -39
  54. package/app/modules/vgrangeslider/js/skins.js +8 -8
  55. package/app/modules/vgrangeslider/js/vgrangeslider.js +29 -29
  56. package/app/modules/vgrangeslider/scss/_variables.scss +55 -55
  57. package/app/modules/vgrangeslider/scss/vgrangeslider.scss +239 -239
  58. package/app/modules/vgrollup/js/vgrollup.js +15 -15
  59. package/app/modules/vgrollup/scss/_variables.scss +15 -15
  60. package/app/modules/vgrollup/scss/vgrollup.scss +6 -6
  61. package/app/modules/vgselect/js/handlers.js +6 -6
  62. package/app/modules/vgselect/js/vgselect.js +167 -123
  63. package/app/modules/vgselect/readme.md +11 -11
  64. package/app/modules/vgselect/scss/_variables.scss +51 -51
  65. package/app/modules/vgselect/scss/vgselect.scss +1 -1
  66. package/app/modules/vgsidebar/js/vgsidebar.js +21 -21
  67. package/app/modules/vgsidebar/scss/_variables.scss +10 -10
  68. package/app/modules/vgsidebar/scss/vgsidebar.scss +5 -5
  69. package/app/modules/vgspy/js/vgspy.js +43 -43
  70. package/app/modules/vgtable/js/_filters.js +10 -6
  71. package/app/modules/vgtable/js/_options.js +16 -16
  72. package/app/modules/vgtable/js/_pagination.js +118 -118
  73. package/app/modules/vgtable/js/_responsive.js +79 -79
  74. package/app/modules/vgtable/js/_sticky-header.js +349 -280
  75. package/app/modules/vgtable/js/vgtable.js +98 -98
  76. package/app/modules/vgtable/scss/_sorting.scss +6 -6
  77. package/app/modules/vgtable/scss/_sticky-header.scss +31 -31
  78. package/app/modules/vgtable/scss/_variables.scss +6 -4
  79. package/app/modules/vgtable/scss/vgtable.scss +8 -4
  80. package/app/modules/vgtabs/js/vgtabs.js +91 -91
  81. package/app/modules/vgtabs/scss/_variables.scss +23 -23
  82. package/app/modules/vgtabs/scss/vgtabs.scss +5 -5
  83. package/app/modules/vgtoast/js/vgtoast.js +4 -4
  84. package/app/modules/vgtoast/scss/_variables.scss +13 -13
  85. package/app/modules/vgtoast/scss/vgtoast.scss +5 -5
  86. package/app/modules/vgtooltip/js/vgtooltip.js +127 -127
  87. package/app/modules/vgtooltip/scss/_variables.scss +10 -10
  88. package/app/modules/vgtooltip/scss/vgtooltip.scss +5 -5
  89. package/app/utils/js/components/audio-metadata.js +240 -240
  90. package/app/utils/js/components/backdrop.js +116 -116
  91. package/app/utils/js/components/file-icon.js +7 -7
  92. package/app/utils/js/components/file-preview.js +304 -304
  93. package/app/utils/js/components/responsive.js +165 -165
  94. package/app/utils/js/components/sanitize.js +150 -150
  95. package/app/utils/js/components/video-metadata.js +140 -140
  96. package/app/utils/scss/_backdrop.scss +5 -5
  97. package/app/utils/scss/_theme-default.scss +12 -12
  98. package/app/utils/scss/_theme.scss +7 -7
  99. package/app/utils/scss/default.scss +9 -9
  100. package/app/utils/scss/functions.scss +21 -21
  101. package/app/utils/scss/index.scss +4 -4
  102. package/app/utils/scss/mixin.scss +16 -16
  103. package/app/utils/scss/variables.scss +147 -147
  104. package/build/vgapp.css +1 -1
  105. package/build/vgapp.css.map +1 -1
  106. package/build/vgapp.js +1 -1
  107. package/build/vgapp.js.map +1 -1
  108. package/index.js +7 -7
  109. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
- /**
2
- * Описание: визуальные режимы VGRangeSlider — default, ruler и status.
3
- * Возможности: шкала с адаптивными координатами, активные отметки и пороговые цвета с текстовыми статусами.
4
- */
5
- const SKIN_CLASS_DEFAULT = 'is-skin-default';
1
+ /**
2
+ * Описание: визуальные режимы VGRangeSlider — default, ruler и status.
3
+ * Возможности: шкала с адаптивными координатами, активные отметки и пороговые цвета с текстовыми статусами.
4
+ */
5
+ const SKIN_CLASS_DEFAULT = 'is-skin-default';
6
6
  const SKIN_CLASS_RULER = 'is-skin-ruler';
7
7
  const SKIN_CLASS_STATUS = 'is-skin-status';
8
8
  const SKIN_CLASS_RULER_DIM = 'is-ruler-dim-inactive';
@@ -210,9 +210,9 @@ const syncRangeSliderSkin = (skin, state, helpers) => {
210
210
 
211
211
  const isRange = state.from !== state.to || helpers.isRange;
212
212
 
213
- skin.ticks.forEach((tick, index) => {
214
- const value = skin.values[index];
215
- tick.style.left = `${helpers.toPositionPx(value)}px`;
213
+ skin.ticks.forEach((tick, index) => {
214
+ const value = skin.values[index];
215
+ tick.style.left = `${helpers.toPositionPx(value)}px`;
216
216
  const isActive = isRange
217
217
  ? value >= state.from && value <= state.to
218
218
  : value <= state.from;
@@ -1,8 +1,8 @@
1
- /**
2
- * Описание: одиночные и диапазонные слайдеры VGRangeSlider на нативных range-input.
3
- * Возможности: Data API, шкала и статусы, форматирование, синхронизация формы, события и управление значениями.
4
- */
5
- import BaseModule from "../../base-module";
1
+ /**
2
+ * Описание: одиночные и диапазонные слайдеры VGRangeSlider на нативных range-input.
3
+ * Возможности: Data API, шкала и статусы, форматирование, синхронизация формы, события и управление значениями.
4
+ */
5
+ import BaseModule from "../../base-module";
6
6
  import EventHandler from "../../../utils/js/dom/event";
7
7
  import Selectors from "../../../utils/js/dom/selectors";
8
8
  import { mergeDeepObject, normalizeData } from "../../../utils/js/functions";
@@ -263,10 +263,10 @@ class VGRangeSlider extends BaseModule {
263
263
  this._dom.labelFrom = Selectors.find('.vg-range-slider__label--from', root);
264
264
  this._dom.labelTo = Selectors.find('.vg-range-slider__label--to', root);
265
265
  this._dom.labelSeparator = Selectors.find('.vg-range-slider__separator', root);
266
- this._dom.hiddenMin ||= root.querySelector('input[data-vgrangeslider-hidden="min"]');
267
- this._dom.hiddenMax ||= root.querySelector('input[data-vgrangeslider-hidden="max"]');
268
- this._dom.skin = applyRangeSliderSkin(root, this._params, this._state, {
269
- isRange: this._isRange,
266
+ this._dom.hiddenMin ||= root.querySelector('input[data-vgrangeslider-hidden="min"]');
267
+ this._dom.hiddenMax ||= root.querySelector('input[data-vgrangeslider-hidden="max"]');
268
+ this._dom.skin = applyRangeSliderSkin(root, this._params, this._state, {
269
+ isRange: this._isRange,
270
270
  formatValue: (value) => this._formatValue(value),
271
271
  toPositionPx: (value) => this._toPositionPx(value),
272
272
  });
@@ -343,11 +343,11 @@ class VGRangeSlider extends BaseModule {
343
343
  root.appendChild(this._createLabels(this._isRange));
344
344
  }
345
345
 
346
- if (this._isRange) {
347
- this._dom.hiddenMin = this._ensureHiddenInput(root, 'min', this._params.input?.min, this._params.name?.min);
348
- this._dom.hiddenMax = this._ensureHiddenInput(root, 'max', this._params.input?.max, this._params.name?.max);
349
- } else if (this._params.name?.min) {
350
- this._dom.hiddenMin = this._ensureHiddenInput(root, 'min', this._params.input?.min, this._params.name.min);
346
+ if (this._isRange) {
347
+ this._dom.hiddenMin = this._ensureHiddenInput(root, 'min', this._params.input?.min, this._params.name?.min);
348
+ this._dom.hiddenMax = this._ensureHiddenInput(root, 'max', this._params.input?.max, this._params.name?.max);
349
+ } else if (this._params.name?.min) {
350
+ this._dom.hiddenMin = this._ensureHiddenInput(root, 'min', this._params.input?.min, this._params.name.min);
351
351
  }
352
352
 
353
353
  return root;
@@ -404,8 +404,8 @@ class VGRangeSlider extends BaseModule {
404
404
  if (name) input.name = name;
405
405
  root.appendChild(input);
406
406
  }
407
- input.setAttribute('data-vgrangeslider-hidden', role);
408
- return input;
407
+ input.setAttribute('data-vgrangeslider-hidden', role);
408
+ return input;
409
409
  }
410
410
 
411
411
  _bindEvents() {
@@ -448,8 +448,8 @@ class VGRangeSlider extends BaseModule {
448
448
  window.addEventListener('resize', this._handleResize);
449
449
  }
450
450
 
451
- _syncUI() {
452
- if (!this._isRange) this._state.to = this._state.from;
451
+ _syncUI() {
452
+ if (!this._isRange) this._state.to = this._state.from;
453
453
  const fromPercent = this._toPercent(this._state.from);
454
454
  const toPercent = this._toPercent(this._isRange ? this._state.to : this._state.from);
455
455
  const fromPosition = this._toPositionPx(this._state.from);
@@ -474,11 +474,11 @@ class VGRangeSlider extends BaseModule {
474
474
  if (this._dom.labelSeparator) this._dom.labelSeparator.hidden = !this._isRange;
475
475
 
476
476
  this._syncTargets();
477
- syncRangeSliderSkin(this._dom.skin, this._state, {
478
- isRange: this._isRange,
479
- params: this._params,
480
- dom: this._dom,
481
- toPositionPx: (value) => this._toPositionPx(value),
477
+ syncRangeSliderSkin(this._dom.skin, this._state, {
478
+ isRange: this._isRange,
479
+ params: this._params,
480
+ dom: this._dom,
481
+ toPositionPx: (value) => this._toPositionPx(value),
482
482
  });
483
483
  }
484
484
 
@@ -573,12 +573,12 @@ class VGRangeSlider extends BaseModule {
573
573
  const numeric = Number(normalizeData(value));
574
574
  const safeValue = Number.isFinite(numeric) ? numeric : fallback;
575
575
  const clamped = Math.min(Math.max(safeValue, min), max);
576
- const configuredStep = Number(this._state?.step ?? this._params.step);
577
- const step = Number.isFinite(configuredStep) && configuredStep > 0 ? configuredStep : 1;
578
- // Округление не должно выводить значение за max или с нативной сетки шага.
579
- const maxSteps = Math.floor((max - min) / step + 1e-9);
580
- const steps = Math.min(Math.round((clamped - min) / step), maxSteps);
581
- const stepped = steps * step + min;
576
+ const configuredStep = Number(this._state?.step ?? this._params.step);
577
+ const step = Number.isFinite(configuredStep) && configuredStep > 0 ? configuredStep : 1;
578
+ // Округление не должно выводить значение за max или с нативной сетки шага.
579
+ const maxSteps = Math.floor((max - min) / step + 1e-9);
580
+ const steps = Math.min(Math.round((clamped - min) / step), maxSteps);
581
+ const stepped = steps * step + min;
582
582
  return Number(stepped.toFixed(5));
583
583
  }
584
584
 
@@ -1,55 +1,55 @@
1
- @use "../../../utils/scss" as vg;
2
-
3
- $range-slider-map: (
4
- bg: var(--vg-control-muted-bg, #f1f4f8),
5
- fill: var(--vg-control-strong-color, #111827),
6
- thumb: var(--vg-control-bg, #ffffff),
7
- thumb-border: var(--vg-control-strong-color, #111827),
8
- text: var(--vg-control-strong-color, #111827),
9
- muted: var(--vg-text-muted-color, #6b7280),
10
- gap: 10px,
11
- height: 6px,
12
- radius: 999px,
13
- z-ruler: 1,
14
- z-track: 2,
15
- z-fill: 3,
16
- z-input: 4,
17
- z-tooltip: 5,
18
- wrapper-min-height: 36px,
19
- wrapper-padding-top: 12px,
20
- wrapper-padding-bottom: 6px,
21
- input-height: 24px,
22
- thumb-size: 18px,
23
- thumb-border-width: 2px,
24
- thumb-shadow: 0 2px 10px var(--vg-shadow-soft-color, rgba(17, 24, 39, .16)),
25
- tooltip-bg: var(--vg-surface-inverse-bg, #111827),
26
- tooltip-color: var(--vg-text-inverse-color, #ffffff),
27
- tooltip-padding-y: 4px,
28
- tooltip-padding-x: 8px,
29
- tooltip-radius: 6px,
30
- tooltip-shadow: 0 6px 18px var(--vg-shadow-soft-color, rgba(17, 24, 39, .18)),
31
- tooltip-font-size: 12px,
32
- tooltip-line-height: 1.2,
33
- labels-gap: 6px,
34
- labels-font-size: 13px,
35
- labels-line-height: 1.4,
36
- label-font-weight: 500,
37
- ruler-mark-width: 1px,
38
- ruler-mark-height: 8px,
39
- ruler-mark-bg: var(--vg-control-mark-color, #cbd5e1),
40
- ruler-gap-y: 13px,
41
- ruler-label-offset: 8px,
42
- ruler-label-font-size: 11px,
43
- ruler-label-line-height: 1.2,
44
- ruler-label-color: var(--vg-text-muted-color, #6b7280),
45
- ruler-active-mark-bg: var(--vg-control-strong-color, #111827),
46
- ruler-active-label-color: var(--vg-control-strong-color, #111827),
47
- ruler-inactive-opacity: .5,
48
- ruler-active-opacity: 1,
49
- status-success: var(--vg-success-color, #{vg.$success}),
50
- status-warning: var(--vg-warning-color, #{vg.$warning}),
51
- status-danger: var(--vg-danger-color, #{vg.$danger}),
52
- status-success-contrast: var(--vg-success-contrast-color, #ffffff),
53
- status-warning-contrast: var(--vg-warning-contrast-color, #111827),
54
- status-danger-contrast: var(--vg-danger-contrast-color, #ffffff),
55
- ) !default;
1
+ @use "../../../utils/scss" as vg;
2
+
3
+ $range-slider-map: (
4
+ bg: var(--vg-control-muted-bg, #f1f4f8),
5
+ fill: var(--vg-control-strong-color, #111827),
6
+ thumb: var(--vg-control-bg, #ffffff),
7
+ thumb-border: var(--vg-control-strong-color, #111827),
8
+ text: var(--vg-control-strong-color, #111827),
9
+ muted: var(--vg-text-muted-color, #6b7280),
10
+ gap: 10px,
11
+ height: 6px,
12
+ radius: 999px,
13
+ z-ruler: 1,
14
+ z-track: 2,
15
+ z-fill: 3,
16
+ z-input: 4,
17
+ z-tooltip: 5,
18
+ wrapper-min-height: 36px,
19
+ wrapper-padding-top: 12px,
20
+ wrapper-padding-bottom: 6px,
21
+ input-height: 24px,
22
+ thumb-size: 18px,
23
+ thumb-border-width: 2px,
24
+ thumb-shadow: 0 2px 10px var(--vg-shadow-soft-color, rgba(17, 24, 39, .16)),
25
+ tooltip-bg: var(--vg-surface-inverse-bg, #111827),
26
+ tooltip-color: var(--vg-text-inverse-color, #ffffff),
27
+ tooltip-padding-y: 4px,
28
+ tooltip-padding-x: 8px,
29
+ tooltip-radius: 6px,
30
+ tooltip-shadow: 0 6px 18px var(--vg-shadow-soft-color, rgba(17, 24, 39, .18)),
31
+ tooltip-font-size: 12px,
32
+ tooltip-line-height: 1.2,
33
+ labels-gap: 6px,
34
+ labels-font-size: 13px,
35
+ labels-line-height: 1.4,
36
+ label-font-weight: 500,
37
+ ruler-mark-width: 1px,
38
+ ruler-mark-height: 8px,
39
+ ruler-mark-bg: var(--vg-control-mark-color, #cbd5e1),
40
+ ruler-gap-y: 13px,
41
+ ruler-label-offset: 8px,
42
+ ruler-label-font-size: 11px,
43
+ ruler-label-line-height: 1.2,
44
+ ruler-label-color: var(--vg-text-muted-color, #6b7280),
45
+ ruler-active-mark-bg: var(--vg-control-strong-color, #111827),
46
+ ruler-active-label-color: var(--vg-control-strong-color, #111827),
47
+ ruler-inactive-opacity: .5,
48
+ ruler-active-opacity: 1,
49
+ status-success: var(--vg-success-color, #{vg.$success}),
50
+ status-warning: var(--vg-warning-color, #{vg.$warning}),
51
+ status-danger: var(--vg-danger-color, #{vg.$danger}),
52
+ status-success-contrast: var(--vg-success-contrast-color, #ffffff),
53
+ status-warning-contrast: var(--vg-warning-contrast-color, #111827),
54
+ status-danger-contrast: var(--vg-danger-contrast-color, #ffffff),
55
+ ) !default;