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.
- package/app/langs/en/buttons.json +17 -17
- package/app/langs/en/messages.json +36 -36
- package/app/langs/ru/buttons.json +17 -17
- package/app/langs/ru/messages.json +1 -1
- package/app/modules/vgalert/js/vgalert.js +7 -7
- package/app/modules/vgalert/scss/_variables.scss +16 -16
- package/app/modules/vgcollapse/scss/_variables.scss +7 -7
- package/app/modules/vgcollapse/scss/vgcollapse.scss +5 -5
- package/app/modules/vgdropdown/scss/_variables.scss +14 -14
- package/app/modules/vgdropdown/scss/vgdropdown.scss +5 -5
- package/app/modules/vgfilepreview/js/i18n.js +56 -56
- package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
- package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
- package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
- package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
- package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
- package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
- package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
- package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
- package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
- package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
- package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
- package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
- package/app/modules/vgfilepreview/readme.md +68 -68
- package/app/modules/vgfiles/js/base.js +198 -198
- package/app/modules/vgfiles/js/droppable.js +17 -17
- package/app/modules/vgfiles/js/render.js +153 -153
- package/app/modules/vgfiles/js/sortable.js +52 -52
- package/app/modules/vgfiles/js/vgfiles.js +43 -43
- package/app/modules/vgfiles/readme.md +123 -123
- package/app/modules/vgfiles/scss/_mixins.scss +13 -13
- package/app/modules/vgfiles/scss/_variables.scss +10 -10
- package/app/modules/vgfiles/scss/vgfiles.scss +28 -28
- package/app/modules/vgformsender/js/hideshowpass.js +22 -22
- package/app/modules/vgformsender/readme.md +1 -1
- package/app/modules/vgformsender/scss/_variables.scss +5 -5
- package/app/modules/vgformsender/scss/vgformsender.scss +42 -42
- package/app/modules/vglawcookie/js/vglawcookie.js +19 -19
- package/app/modules/vglawcookie/scss/_variables.scss +13 -13
- package/app/modules/vglawcookie/scss/vglawcookie.scss +5 -5
- package/app/modules/vgmodal/js/vgmodal.interaction.js +216 -216
- package/app/modules/vgmodal/js/vgmodal.js +9 -9
- package/app/modules/vgmodal/js/vgmodal.minimized.js +227 -227
- package/app/modules/vgmodal/scss/_variables.scss +17 -17
- package/app/modules/vgmodal/scss/vgmodal.scss +77 -77
- package/app/modules/vgnav/js/vgnav.js +62 -62
- package/app/modules/vgnav/scss/_breakpoints.scss +36 -36
- package/app/modules/vgnav/scss/_hamburger.scss +5 -5
- package/app/modules/vgnav/scss/_placement.scss +5 -5
- package/app/modules/vgnav/scss/_toggle.scss +5 -5
- package/app/modules/vgnav/scss/_variables.scss +26 -26
- package/app/modules/vgnav/scss/vgnav.scss +41 -41
- package/app/modules/vgnestable/README.md +39 -39
- package/app/modules/vgrangeslider/js/skins.js +8 -8
- package/app/modules/vgrangeslider/js/vgrangeslider.js +29 -29
- package/app/modules/vgrangeslider/scss/_variables.scss +55 -55
- package/app/modules/vgrangeslider/scss/vgrangeslider.scss +239 -239
- package/app/modules/vgrollup/js/vgrollup.js +15 -15
- package/app/modules/vgrollup/scss/_variables.scss +15 -15
- package/app/modules/vgrollup/scss/vgrollup.scss +6 -6
- package/app/modules/vgselect/js/handlers.js +6 -6
- package/app/modules/vgselect/js/vgselect.js +167 -123
- package/app/modules/vgselect/readme.md +11 -11
- package/app/modules/vgselect/scss/_variables.scss +51 -51
- package/app/modules/vgselect/scss/vgselect.scss +1 -1
- package/app/modules/vgsidebar/js/vgsidebar.js +21 -21
- package/app/modules/vgsidebar/scss/_variables.scss +10 -10
- package/app/modules/vgsidebar/scss/vgsidebar.scss +5 -5
- package/app/modules/vgspy/js/vgspy.js +43 -43
- package/app/modules/vgtable/js/_filters.js +10 -6
- package/app/modules/vgtable/js/_options.js +16 -16
- package/app/modules/vgtable/js/_pagination.js +118 -118
- package/app/modules/vgtable/js/_responsive.js +79 -79
- package/app/modules/vgtable/js/_sticky-header.js +349 -280
- package/app/modules/vgtable/js/vgtable.js +98 -98
- package/app/modules/vgtable/scss/_sorting.scss +6 -6
- package/app/modules/vgtable/scss/_sticky-header.scss +31 -31
- package/app/modules/vgtable/scss/_variables.scss +6 -4
- package/app/modules/vgtable/scss/vgtable.scss +8 -4
- package/app/modules/vgtabs/js/vgtabs.js +91 -91
- package/app/modules/vgtabs/scss/_variables.scss +23 -23
- package/app/modules/vgtabs/scss/vgtabs.scss +5 -5
- package/app/modules/vgtoast/js/vgtoast.js +4 -4
- package/app/modules/vgtoast/scss/_variables.scss +13 -13
- package/app/modules/vgtoast/scss/vgtoast.scss +5 -5
- package/app/modules/vgtooltip/js/vgtooltip.js +127 -127
- package/app/modules/vgtooltip/scss/_variables.scss +10 -10
- package/app/modules/vgtooltip/scss/vgtooltip.scss +5 -5
- package/app/utils/js/components/audio-metadata.js +240 -240
- package/app/utils/js/components/backdrop.js +116 -116
- package/app/utils/js/components/file-icon.js +7 -7
- package/app/utils/js/components/file-preview.js +304 -304
- package/app/utils/js/components/responsive.js +165 -165
- package/app/utils/js/components/sanitize.js +150 -150
- package/app/utils/js/components/video-metadata.js +140 -140
- package/app/utils/scss/_backdrop.scss +5 -5
- package/app/utils/scss/_theme-default.scss +12 -12
- package/app/utils/scss/_theme.scss +7 -7
- package/app/utils/scss/default.scss +9 -9
- package/app/utils/scss/functions.scss +21 -21
- package/app/utils/scss/index.scss +4 -4
- package/app/utils/scss/mixin.scss +16 -16
- package/app/utils/scss/variables.scss +147 -147
- package/build/vgapp.css +1 -1
- package/build/vgapp.css.map +1 -1
- package/build/vgapp.js +1 -1
- package/build/vgapp.js.map +1 -1
- package/index.js +7 -7
- 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:
|
|
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;
|
|
@@ -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) =>
|
|
117
|
-
|
|
118
|
-
|
|
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: {
|