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,11 +1,11 @@
1
- @use "../../../utils/scss" as vg;
2
-
3
- $select-current-map: (
4
- background-color: var(--vg-control-bg, #ffffff),
5
- color: var(--vg-text-color, #{vg.$color}),
6
- border-width: vg.$border-width,
7
- border-style: vg.$border-style,
8
- border-color: var(--vg-control-border-color, #dddddd),
1
+ @use "../../../utils/scss" as vg;
2
+
3
+ $select-current-map: (
4
+ background-color: var(--vg-control-bg, #ffffff),
5
+ color: var(--vg-text-color, #{vg.$color}),
6
+ border-width: vg.$border-width,
7
+ border-style: vg.$border-style,
8
+ border-color: var(--vg-control-border-color, #dddddd),
9
9
  border-radius: 5px,
10
10
  padding-left: 16px,
11
11
  padding-right: 40px,
@@ -16,69 +16,69 @@ $select-current-map: (
16
16
  z-index: 10,
17
17
  ) !default;
18
18
 
19
- $select-placeholder-map: (
20
- placehoder-color: var(--vg-text-placeholder-color, rgba(0, 0, 0, .32)),
21
- placehoder-font-size: 16px,
22
- ) !default;
19
+ $select-placeholder-map: (
20
+ placehoder-color: var(--vg-text-placeholder-color, rgba(0, 0, 0, .32)),
21
+ placehoder-font-size: 16px,
22
+ ) !default;
23
23
 
24
24
  $select-current-svg: '<svg aria-hidden="true" focusable="false" data-prefix="fa-light" data-icon="chevron-down" class="svg-inline--fa fa-chevron-down fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M4 181C7 178 12 176 16 176C20 176 24 177 27 180L224 362L421 180C428 174 438 175 444 181C450 188 449 198 443 204L235 396C229 401 219 401 213 396L5 204C-1 198 -2 188 4 181Z" fill="gray"/></svg>' !default;
25
25
 
26
- $select-dropdown-map: (
27
- background-color: var(--vg-control-bg, #ffffff),
28
- color: var(--vg-text-color, #{vg.$color}),
29
- border-width: vg.$border-width,
30
- border-style: vg.$border-style,
31
- border-color: var(--vg-control-border-color, #dddddd),
32
- border-radius: vg.$border-radius,
33
- box-shadow: 0 7px 12px 1px var(--vg-shadow-soft-color, rgba(68, 68, 68, .11)),
26
+ $select-dropdown-map: (
27
+ background-color: var(--vg-control-bg, #ffffff),
28
+ color: var(--vg-text-color, #{vg.$color}),
29
+ border-width: vg.$border-width,
30
+ border-style: vg.$border-style,
31
+ border-color: var(--vg-control-border-color, #dddddd),
32
+ border-radius: vg.$border-radius,
33
+ box-shadow: 0 7px 12px 1px var(--vg-shadow-soft-color, rgba(68, 68, 68, .11)),
34
34
  z-index: 15,
35
35
  ) !default;
36
36
 
37
- $select-list-map: (
38
- background-color: transparent,
39
- color: var(--vg-text-color, #{vg.$color}),
37
+ $select-list-map: (
38
+ background-color: transparent,
39
+ color: var(--vg-text-color, #{vg.$color}),
40
40
  padding-left: 8px,
41
41
  padding-right: 8px,
42
42
  padding-top: 8px,
43
43
  padding-bottom: 8px,
44
- border-bottom-width: vg.$border-width,
45
- border-bottom-style: vg.$border-style,
46
- border-bottom-color: var(--vg-border-disabled-color, #f5f5f5),
44
+ border-bottom-width: vg.$border-width,
45
+ border-bottom-style: vg.$border-style,
46
+ border-bottom-color: var(--vg-border-disabled-color, #f5f5f5),
47
47
  ) !default;
48
48
 
49
- $select-optgroup-map: (
50
- background-color: transparent,
51
- color: var(--vg-text-color, #{vg.$color}),
49
+ $select-optgroup-map: (
50
+ background-color: transparent,
51
+ color: var(--vg-text-color, #{vg.$color}),
52
52
  padding-left: 8px,
53
53
  padding-right: 8px,
54
54
  padding-top: 8px,
55
55
  padding-bottom: 8px,
56
- border-bottom-width: vg.$border-width,
57
- border-bottom-style: vg.$border-style,
58
- border-bottom-color: var(--vg-border-strong-color, #838383),
56
+ border-bottom-width: vg.$border-width,
57
+ border-bottom-style: vg.$border-style,
58
+ border-bottom-color: var(--vg-border-strong-color, #838383),
59
59
  font-weight: 500,
60
60
  ) !default;
61
61
 
62
- $select-list-max-height: 286px !default;
62
+ $select-list-max-height: 300px !default;
63
63
  $select-list-scrollbar-width: 6px !default;
64
- $select-list-scrollbar-bg: var(--vg-surface-muted-bg, #f5f5f5) !default;
65
- $select-list-scrollbar-thumb: var(--vg-text-muted-color, #999999) !default;
64
+ $select-list-scrollbar-bg: var(--vg-surface-muted-bg, #f5f5f5) !default;
65
+ $select-list-scrollbar-thumb: var(--vg-text-muted-color, #999999) !default;
66
66
 
67
- $select-list-hover-map: (
68
- background-color: var(--vg-surface-hover-bg, #f7f7f7),
69
- color: var(--vg-text-color, #{vg.$color}),
70
- border-bottom-color: var(--vg-border-disabled-color, #f5f5f5),
67
+ $select-list-hover-map: (
68
+ background-color: var(--vg-surface-hover-bg, #f7f7f7),
69
+ color: var(--vg-text-color, #{vg.$color}),
70
+ border-bottom-color: var(--vg-border-disabled-color, #f5f5f5),
71
71
  ) !default;
72
72
 
73
- $select-optgroup-hover-map: (
74
- background-color: var(--vg-surface-hover-bg, #f7f7f7),
75
- color: var(--vg-text-color, #{vg.$color}),
76
- border-bottom-color: var(--vg-border-disabled-color, #f5f5f5),
73
+ $select-optgroup-hover-map: (
74
+ background-color: var(--vg-surface-hover-bg, #f7f7f7),
75
+ color: var(--vg-text-color, #{vg.$color}),
76
+ border-bottom-color: var(--vg-border-disabled-color, #f5f5f5),
77
77
  ) !default;
78
78
 
79
- $select-search-map: (
80
- background-color: var(--vg-control-muted-bg, #f2f2f2),
81
- color: var(--vg-text-color, #{vg.$color})
79
+ $select-search-map: (
80
+ background-color: var(--vg-control-muted-bg, #f2f2f2),
81
+ color: var(--vg-text-color, #{vg.$color})
82
82
  ) !default;
83
83
 
84
84
  $select-tags-map: (
@@ -88,15 +88,15 @@ $select-tags-map: (
88
88
  padding: 2px 0
89
89
  ) !default;
90
90
 
91
- $select-tag-map: (
92
- gap: 4px,
93
- background: var(--vg-primary-color, #0d6efd),
94
- color: var(--vg-primary-contrast-color, #ffffff),
91
+ $select-tag-map: (
92
+ gap: 4px,
93
+ background: var(--vg-primary-color, #0d6efd),
94
+ color: var(--vg-primary-contrast-color, #ffffff),
95
95
  padding: 2px 6px,
96
96
  border-radius: 4px,
97
97
  font-size: 14px,
98
98
  remove-width: 12px,
99
99
  remove-height: 12px,
100
- remove-stroke: var(--vg-primary-contrast-color, #ffffff),
100
+ remove-stroke: var(--vg-primary-contrast-color, #ffffff),
101
101
  remove-stroke-width: 2
102
102
  ) !default;
@@ -11,7 +11,7 @@
11
11
  @use "variables" as vars;
12
12
 
13
13
  select {
14
- &.vg-select[data-inited="true"] {
14
+ &.vg-select[data-inited="true"] {
15
15
  position: absolute;
16
16
  left: 0;
17
17
  top: 0;
@@ -1,8 +1,8 @@
1
- /**
2
- * Описание: боковые панели VGSidebar с декларативным и программным управлением.
3
- * Возможности: четыре стороны экрана, backdrop, прокрутка, URL-хэш, AJAX, события и доступность.
4
- */
5
- import BaseModule from "../../base-module";
1
+ /**
2
+ * Описание: боковые панели VGSidebar с декларативным и программным управлением.
3
+ * Возможности: четыре стороны экрана, backdrop, прокрутка, URL-хэш, AJAX, события и доступность.
4
+ */
5
+ import BaseModule from "../../base-module";
6
6
  import { isDisabled, isVisible, mergeDeepObject } from "../../../utils/js/functions";
7
7
  import EventHandler from "../../../utils/js/dom/event";
8
8
  import { dismissTrigger } from "../../module-fn";
@@ -215,8 +215,8 @@ class VGSidebar extends BaseModule {
215
215
  EventHandler.on(window, EVENT_KEYS.POPSTATE_DATA_API, this._showPopstateHandler);
216
216
  }
217
217
 
218
- this._element.classList.add(CLASS_NAME_SHOW);
219
- this._element.removeAttribute('aria-hidden');
218
+ this._element.classList.add(CLASS_NAME_SHOW);
219
+ this._element.removeAttribute('aria-hidden');
220
220
  document.body.classList.add(CLASS_NAME_OPEN);
221
221
 
222
222
  const completeCallback = () => {
@@ -242,8 +242,8 @@ class VGSidebar extends BaseModule {
242
242
  const hideEvent = EventHandler.trigger(this._element, EVENT_KEYS.HIDE);
243
243
  if (hideEvent.defaultPrevented) return;
244
244
 
245
- this._element.classList.remove(CLASS_NAME_SHOW);
246
- this._element.setAttribute('aria-hidden', 'true');
245
+ this._element.classList.remove(CLASS_NAME_SHOW);
246
+ this._element.setAttribute('aria-hidden', 'true');
247
247
  const remainingOpenSidebars = VGSidebar.getOpenSidebars(this._element);
248
248
  if (!remainingOpenSidebars.length) {
249
249
  document.body.classList.remove(CLASS_NAME_OPEN);
@@ -294,17 +294,17 @@ class VGSidebar extends BaseModule {
294
294
  * Очищает ресурсы модуля.
295
295
  * @override
296
296
  */
297
- dispose() {
298
- if (!this._element) return;
299
- EventHandler.off(document, EVENT_KEYS.KEYDOWN_DISMISS, this._keydownHandler);
300
- EventHandler.off(this._element, EVENT_KEYS.HIDE);
297
+ dispose() {
298
+ if (!this._element) return;
299
+ EventHandler.off(document, EVENT_KEYS.KEYDOWN_DISMISS, this._keydownHandler);
300
+ EventHandler.off(this._element, EVENT_KEYS.HIDE);
301
301
  if (this._showPopstateHandler) {
302
302
  EventHandler.off(window, EVENT_KEYS.POPSTATE_DATA_API, this._showPopstateHandler);
303
303
  }
304
- if (!VGSidebar.getOpenSidebars(this._element).length && !Backdrop.isActive()) {
305
- this._scrollBar.reset();
306
- }
307
- super.dispose();
304
+ if (!VGSidebar.getOpenSidebars(this._element).length && !Backdrop.isActive()) {
305
+ this._scrollBar.reset();
306
+ }
307
+ super.dispose();
308
308
  }
309
309
 
310
310
  /**
@@ -321,16 +321,16 @@ class VGSidebar extends BaseModule {
321
321
  * @private
322
322
  */
323
323
  _addEventListeners() {
324
- this._keydownHandler = (event) => {
325
- if (event.key !== 'Escape' || !this._isShown()) return;
324
+ this._keydownHandler = (event) => {
325
+ if (event.key !== 'Escape' || !this._isShown()) return;
326
326
 
327
327
  if (this._params.keyboard) {
328
328
  this.hide();
329
329
  } else {
330
330
  EventHandler.trigger(this._element, EVENT_KEYS.HIDE_PREVENTED);
331
331
  }
332
- };
333
- EventHandler.on(document, EVENT_KEYS.KEYDOWN_DISMISS, this._keydownHandler);
332
+ };
333
+ EventHandler.on(document, EVENT_KEYS.KEYDOWN_DISMISS, this._keydownHandler);
334
334
  }
335
335
  }
336
336
 
@@ -1,6 +1,6 @@
1
- @use "../../../utils/scss" as vg;
2
-
3
- $sidebar-map: (
1
+ @use "../../../utils/scss" as vg;
2
+
3
+ $sidebar-map: (
4
4
  horizontal: (
5
5
  width: 400px,
6
6
  height: 100vh,
@@ -9,13 +9,13 @@ $sidebar-map: (
9
9
  width: 100vw,
10
10
  height: 30vh,
11
11
  ),
12
- bg-color: var(--vg-surface-bg, #{vg.$surface-bg}),
13
- color: var(--vg-text-color, #{vg.$color}),
14
- box-shadow: var(--vg-box-shadow, #{vg.$box-shadow}),
12
+ bg-color: var(--vg-surface-bg, #{vg.$surface-bg}),
13
+ color: var(--vg-text-color, #{vg.$color}),
14
+ box-shadow: var(--vg-box-shadow, #{vg.$box-shadow}),
15
15
  header-height: 60px,
16
16
  footer-height: 70px,
17
17
  padding: 1rem,
18
- border: vg.$border-width vg.$border-style var(--vg-border-color, #{vg.$border-color}),
19
- z-index: vg.$sidebar-index,
20
- transition: vg.$transition-base,
21
- ) !default;
18
+ border: vg.$border-width vg.$border-style var(--vg-border-color, #{vg.$border-color}),
19
+ z-index: vg.$sidebar-index,
20
+ transition: vg.$transition-base,
21
+ ) !default;
@@ -6,12 +6,12 @@
6
6
  *--------------------------------------------------------------------------
7
7
  **/
8
8
 
9
- @forward "variables";
10
- @use "../../../utils/scss" as vg;
11
- @use "variables" as vars;
9
+ @forward "variables";
10
+ @use "../../../utils/scss" as vg;
11
+ @use "variables" as vars;
12
12
 
13
13
  .vg-sidebar {
14
- @include vg.mix-vars('sidebar', vars.$sidebar-map);
14
+ @include vg.mix-vars('sidebar', vars.$sidebar-map);
15
15
  position: fixed;
16
16
  width: auto;
17
17
  height: auto;
@@ -90,4 +90,4 @@
90
90
  padding: var(--vg-sidebar-padding);
91
91
  border-top: var(--vg-sidebar-border);
92
92
  }
93
- }
93
+ }
@@ -1,9 +1,9 @@
1
- /**
2
- * Описание: отслеживание активных секций и навигация по якорям.
3
- * Возможности: Data API, нативная и виртуальная прокрутка, вложенные меню и обновление секций.
4
- */
5
- import BaseModule from "../../base-module";
6
- import { getElement, isDisabled, isVisible, normalizeData } from "../../../utils/js/functions";
1
+ /**
2
+ * Описание: отслеживание активных секций и навигация по якорям.
3
+ * Возможности: Data API, нативная и виртуальная прокрутка, вложенные меню и обновление секций.
4
+ */
5
+ import BaseModule from "../../base-module";
6
+ import { getElement, isDisabled, isVisible, normalizeData } from "../../../utils/js/functions";
7
7
  import EventHandler from "../../../utils/js/dom/event";
8
8
  import Selectors from "../../../utils/js/dom/selectors";
9
9
 
@@ -56,7 +56,7 @@ class VGSpy extends BaseModule {
56
56
  * @property {number[]|string} threshold - пороги видимости (0.1, 0.5, 1)
57
57
  */
58
58
  this._params = this._configAfterMerge(
59
- Object.assign(
59
+ Object.assign(
60
60
  {
61
61
  offset: null, // Устаревшее, для обратной совместимости
62
62
  rootMargin: '0px 0px -25%',
@@ -64,8 +64,8 @@ class VGSpy extends BaseModule {
64
64
  target: this._element,
65
65
  threshold: [0.1, 0.5, 1],
66
66
  },
67
- params,
68
- this._getDataOptions()
67
+ params,
68
+ this._getDataOptions()
69
69
  )
70
70
  );
71
71
 
@@ -135,27 +135,27 @@ class VGSpy extends BaseModule {
135
135
  * Ключ модуля (для хранения в data)
136
136
  * @returns {string}
137
137
  */
138
- static get NAME_KEY() {
139
- return NAME_KEY;
140
- }
141
-
142
- _getDataOptions() {
143
- const options = {};
144
- for (const name of ['target', 'offset', 'rootMargin', 'smoothScroll', 'threshold']) {
145
- const attribute = `data-${name.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)}`;
146
- if (this._element.hasAttribute(attribute)) {
147
- options[name] = normalizeData(this._element.getAttribute(attribute));
148
- }
149
- }
150
- return options;
151
- }
138
+ static get NAME_KEY() {
139
+ return NAME_KEY;
140
+ }
141
+
142
+ _getDataOptions() {
143
+ const options = {};
144
+ for (const name of ['target', 'offset', 'rootMargin', 'smoothScroll', 'threshold']) {
145
+ const attribute = `data-${name.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)}`;
146
+ if (this._element.hasAttribute(attribute)) {
147
+ options[name] = normalizeData(this._element.getAttribute(attribute));
148
+ }
149
+ }
150
+ return options;
151
+ }
152
152
 
153
153
  /**
154
154
  * Инициализирует или перезапускает модуль: находит ссылки и секции, создаёт observer
155
155
  */
156
- refresh() {
157
- this._process(null);
158
- this._initializeTargetsAndObservables();
156
+ refresh() {
157
+ this._process(null);
158
+ this._initializeTargetsAndObservables();
159
159
  this._updateRootElement();
160
160
  this._maybeEnableSmoothScroll();
161
161
 
@@ -180,8 +180,8 @@ class VGSpy extends BaseModule {
180
180
 
181
181
  // Smooth Scrollbar can be initialized after the spy; retry once on the next tick.
182
182
  if (this._rootElement && !this._isScrollableSelf(this._rootElement) && window.Scrollbar) {
183
- setTimeout(() => {
184
- if (!this._element || this._scrollbar) return;
183
+ setTimeout(() => {
184
+ if (!this._element || this._scrollbar) return;
185
185
  this._updateSmoothScrollbar();
186
186
  if (this._scrollbar) this._setupScrollbarTracking();
187
187
  }, 0);
@@ -373,9 +373,9 @@ class VGSpy extends BaseModule {
373
373
  return window.scrollY || document.documentElement.scrollTop || 0;
374
374
  }
375
375
 
376
- dispose() {
377
- if (!this._element) return;
378
- this._process(null);
376
+ dispose() {
377
+ if (!this._element) return;
378
+ this._process(null);
379
379
  if (this._observer) {
380
380
  this._observer.disconnect();
381
381
  }
@@ -434,9 +434,9 @@ class VGSpy extends BaseModule {
434
434
  // If the target section is currently hidden (tabs/collapses/lazy layout),
435
435
  // don't hijack the click; allow UI to reveal it, then retry.
436
436
  if (!isVisible(section)) {
437
- setTimeout(() => {
438
- if (!this._element) return;
439
- const revealed = Selectors.findID(id);
437
+ setTimeout(() => {
438
+ if (!this._element) return;
439
+ const revealed = Selectors.findID(id);
440
440
  if (!revealed || !isVisible(revealed)) return;
441
441
 
442
442
  this._targetLinks.set(revealed.id, link);
@@ -525,10 +525,10 @@ class VGSpy extends BaseModule {
525
525
  const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
526
526
  this._previousScrollData.parentScrollTop = parentScrollTop;
527
527
 
528
- for (const entry of entries) {
529
- if (!entry.isIntersecting) {
530
- if (getTargetLink(entry) === this._activeTarget) this._process(null);
531
- continue;
528
+ for (const entry of entries) {
529
+ if (!entry.isIntersecting) {
530
+ if (getTargetLink(entry) === this._activeTarget) this._process(null);
531
+ continue;
532
532
  }
533
533
 
534
534
  const entryTop = this._getSectionTop(entry.target);
@@ -536,7 +536,7 @@ class VGSpy extends BaseModule {
536
536
  const shouldActivate =
537
537
  (userScrollsDown && isEntryBelow) || (!userScrollsDown && !isEntryBelow);
538
538
 
539
- if (shouldActivate || !this._activeTarget) {
539
+ if (shouldActivate || !this._activeTarget) {
540
540
  this._previousScrollData.visibleEntryTop = entryTop;
541
541
  this._process(getTargetLink(entry));
542
542
  }
@@ -615,7 +615,7 @@ class VGSpy extends BaseModule {
615
615
  parent.classList.remove(CLASS_NAME_ACTIVE);
616
616
 
617
617
  const activeLinks = Selectors.findAll(
618
- `[href].${CLASS_NAME_ACTIVE}, [data-vg-target].${CLASS_NAME_ACTIVE}, ${SELECTOR_DROPDOWN_TOGGLE}.${CLASS_NAME_ACTIVE}`,
618
+ `[href].${CLASS_NAME_ACTIVE}, [data-vg-target].${CLASS_NAME_ACTIVE}, ${SELECTOR_DROPDOWN_TOGGLE}.${CLASS_NAME_ACTIVE}`,
619
619
  parent
620
620
  );
621
621
  for (const link of activeLinks) {
@@ -623,9 +623,9 @@ class VGSpy extends BaseModule {
623
623
  }
624
624
  }
625
625
 
626
- _getTargetIdFromTrigger(trigger) {
627
- if (!trigger || typeof trigger.getAttribute !== 'function') return null;
628
- if (isDisabled(trigger) || trigger.matches(SELECTOR_DROPDOWN_TOGGLE)) return null;
626
+ _getTargetIdFromTrigger(trigger) {
627
+ if (!trigger || typeof trigger.getAttribute !== 'function') return null;
628
+ if (isDisabled(trigger) || trigger.matches(SELECTOR_DROPDOWN_TOGGLE)) return null;
629
629
 
630
630
  const dataTarget = (trigger.getAttribute('data-vg-target') || '').trim();
631
631
  const href = (trigger.getAttribute('href') || '').trim();
@@ -2,7 +2,8 @@
2
2
  * Описание: форма локальных и remote-фильтров VGTable.
3
3
  * Возможности: auto/manual применение, debounce, операторы, reset и публичное состояние.
4
4
  */
5
- import EventHandler from "../../../utils/js/dom/event";
5
+ import EventHandler from "../../../utils/js/dom/event";
6
+ import VGSelect from "../../vgselect/js/vgselect";
6
7
 
7
8
  const EVENT_CHANGE = 'filterschange.vg.table';
8
9
 
@@ -112,11 +113,14 @@ class _filters {
112
113
  return this.getState();
113
114
  }
114
115
 
115
- reset(options = {}) {
116
- this._controls.forEach((control) => this._resetControl(control));
117
- if (options.emit !== false) this._emit(String(options.source || 'reset'));
118
- return this.getState();
119
- }
116
+ reset(options = {}) {
117
+ this._controls.forEach((control) => {
118
+ this._resetControl(control);
119
+ if (control.tagName === 'SELECT') VGSelect.updateUI(control);
120
+ });
121
+ if (options.emit !== false) this._emit(String(options.source || 'reset'));
122
+ return this.getState();
123
+ }
120
124
 
121
125
  _handleInput(event) {
122
126
  if (!this._isControl(event.target) || this._isManual()) return;
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * Описание: константы и параметры по умолчанию базовой таблицы VGTable.
3
- * Возможности: единая настройка Data API, i18n, wrapper, remote, фильтров, sticky, колонок, строк, выбора и адаптивной пагинации.
4
- */
3
+ * Возможности: единая настройка Data API, i18n, wrapper, remote, фильтров, sticky, колонок, строк, выбора и адаптивной пагинации.
4
+ */
5
5
 
6
6
  /**
7
7
  * Служебные константы модуля.
8
8
  */
9
9
  // Имя компонента в публичном API. Варианты: фиксированное значение 'table'.
10
- const NAME = 'table';
10
+ const NAME = 'table';
11
11
  // Ключ экземпляра в Data API. Варианты: фиксированное значение 'vg.table'.
12
12
  const NAME_KEY = `vg.${NAME}`;
13
13
  // Селектор автоматической инициализации. Варианты: элементы с атрибутом data-vg-table.
@@ -21,16 +21,16 @@ const TABLE_CONTAINER_SELECTOR = '.vg-table-container';
21
21
  // Маркер container, созданного компонентом. Варианты: пустой data-атрибут.
22
22
  const GENERATED_TABLE_CONTAINER_ATTRIBUTE = 'data-vg-table-generated-container';
23
23
 
24
- const DEFAULT_OPTIONS = {
25
- /** Профили представления: базовые параметры + все достигнутые границы xs–xxl. */
26
- responsive: {
27
- // Включается явно; Data API: data-responsive-enabled.
28
- enabled: false,
29
- // Локальные переопределения границ общего Responsive; пустой объект сохраняет глобальные значения.
30
- breakpoints: {},
31
- // Профили принимают pagination: maxButtons, align, position, size.enabled/label, quick.enabled.
32
- xs: {}, sm: {}, md: {}, lg: {}, xl: {}, xxl: {},
33
- },
24
+ const DEFAULT_OPTIONS = {
25
+ /** Профили представления: базовые параметры + все достигнутые границы xs–xxl. */
26
+ responsive: {
27
+ // Включается явно; Data API: data-responsive-enabled.
28
+ enabled: false,
29
+ // Локальные переопределения границ общего Responsive; пустой объект сохраняет глобальные значения.
30
+ breakpoints: {},
31
+ // Профили принимают pagination: maxButtons, align, position, size.enabled/label, quick.enabled.
32
+ xs: {}, sm: {}, md: {}, lg: {}, xl: {}, xxl: {},
33
+ },
34
34
  // Активная локаль встроенного интерфейса. Data API: data-locale. Варианты: 'ru' | 'en' | региональный BCP 47 код.
35
35
  locale: 'ru',
36
36
  // Пользовательские словари, объединяемые со встроенными ru/en. Data API отсутствует; варианты: объект {locale: {group: {key: value}}}.
@@ -368,9 +368,9 @@ const DEFAULT_OPTIONS = {
368
368
  // Задаёт число страниц, после которого разрешены многоточие и quick='auto'. Варианты: целое число >= 1.
369
369
  threshold: 5,
370
370
  // Задаёт максимальное число соседних страниц между первой и последней. Варианты: целое число >= 1.
371
- visible: 5,
372
- // Лимит номеров и многоточий без prev/next; null сохраняет visible/threshold. Data API: data-pagination-max-buttons.
373
- maxButtons: null,
371
+ visible: 5,
372
+ // Лимит номеров и многоточий без prev/next; null сохраняет visible/threshold. Data API: data-pagination-max-buttons.
373
+ maxButtons: null,
374
374
 
375
375
  /** Поле и VGDropdown для выбора количества строк. */
376
376
  size: {