vgapp 1.5.7 → 1.5.9
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 +15 -12
- package/app/modules/vgalert/scss/_variables.scss +16 -16
- package/app/modules/vgalert/scss/vgalert.scss +13 -6
- 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 +137 -84
- 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/_fixed-columns.scss +23 -25
- 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
|
@@ -6,23 +6,23 @@
|
|
|
6
6
|
*--------------------------------------------------------------------------
|
|
7
7
|
**/
|
|
8
8
|
|
|
9
|
-
@forward "variables";
|
|
10
|
-
@forward "breakpoints";
|
|
11
|
-
@use "sass:map";
|
|
12
|
-
@use "../../../utils/scss" as vg;
|
|
13
|
-
@use "breakpoints";
|
|
14
|
-
@use "hamburger";
|
|
15
|
-
@use "placement";
|
|
16
|
-
@use "toggle";
|
|
17
|
-
@use "variables" as vars;
|
|
9
|
+
@forward "variables";
|
|
10
|
+
@forward "breakpoints";
|
|
11
|
+
@use "sass:map";
|
|
12
|
+
@use "../../../utils/scss" as vg;
|
|
13
|
+
@use "breakpoints";
|
|
14
|
+
@use "hamburger";
|
|
15
|
+
@use "placement";
|
|
16
|
+
@use "toggle";
|
|
17
|
+
@use "variables" as vars;
|
|
18
18
|
|
|
19
19
|
.vg-nav {
|
|
20
|
-
@include vg.mix-vars('nav', vars.$nav-map);
|
|
21
|
-
@include vg.mix-vars('nav-item', vars.$nav-item-map);
|
|
22
|
-
@include vg.mix-vars('nav-drop', vars.$nav-drop-map);
|
|
23
|
-
@include vg.mix-vars('nav-drop-mega', vars.$nav-drop-mega-map);
|
|
24
|
-
@include vg.mix-vars('nav-drop-item', vars.$nav-drop-item-map);
|
|
25
|
-
@include vg.mix-vars('nav-hamburger', vars.$hamburger-map);
|
|
20
|
+
@include vg.mix-vars('nav', vars.$nav-map);
|
|
21
|
+
@include vg.mix-vars('nav-item', vars.$nav-item-map);
|
|
22
|
+
@include vg.mix-vars('nav-drop', vars.$nav-drop-map);
|
|
23
|
+
@include vg.mix-vars('nav-drop-mega', vars.$nav-drop-mega-map);
|
|
24
|
+
@include vg.mix-vars('nav-drop-item', vars.$nav-drop-item-map);
|
|
25
|
+
@include vg.mix-vars('nav-hamburger', vars.$hamburger-map);
|
|
26
26
|
|
|
27
27
|
.vg-nav-wrapper {
|
|
28
28
|
display: flex;
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
li {
|
|
53
53
|
a {
|
|
54
54
|
/** set toggle **/
|
|
55
|
-
@include toggle.toggle();
|
|
55
|
+
@include toggle.toggle();
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
background-color: var(--vg-nav-drop-bg);
|
|
75
75
|
overflow: visible;
|
|
76
76
|
|
|
77
|
-
&:not(.show) {
|
|
78
|
-
display: none;
|
|
79
|
-
}
|
|
77
|
+
&:not(.show) {
|
|
78
|
+
display: none;
|
|
79
|
+
}
|
|
80
80
|
|
|
81
81
|
&.fade {
|
|
82
82
|
visibility: visible;
|
|
@@ -133,32 +133,32 @@
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
&.vg-nav-drop-list-scroll {
|
|
140
|
-
.vg-nav-wrapper {
|
|
141
|
-
.dropdown {
|
|
142
|
-
.dropdown-content {
|
|
143
|
-
> .vg-nav-drop-list {
|
|
144
|
-
max-height: var(--vg-nav-drop-max-height);
|
|
145
|
-
overflow-y: var(--vg-nav-drop-overflow-y);
|
|
146
|
-
overflow-x: var(--vg-nav-drop-overflow-x);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/** set placement **/
|
|
154
|
-
@include placement.placement();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
&.vg-nav-drop-list-scroll {
|
|
140
|
+
.vg-nav-wrapper {
|
|
141
|
+
.dropdown {
|
|
142
|
+
.dropdown-content {
|
|
143
|
+
> .vg-nav-drop-list {
|
|
144
|
+
max-height: var(--vg-nav-drop-max-height);
|
|
145
|
+
overflow-y: var(--vg-nav-drop-overflow-y);
|
|
146
|
+
overflow-x: var(--vg-nav-drop-overflow-x);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** set placement **/
|
|
154
|
+
@include placement.placement();
|
|
155
155
|
|
|
156
156
|
/** set hamburger **/
|
|
157
|
-
@include hamburger.hamburger();
|
|
157
|
+
@include hamburger.hamburger();
|
|
158
158
|
|
|
159
159
|
&:not(.vg-nav-expand) {
|
|
160
|
-
@each $breakpoint in map.keys(vars.$grid-breakpoints) {
|
|
161
|
-
@include breakpoints.media-breakpoint-down($breakpoint, vars.$grid-breakpoints) {
|
|
160
|
+
@each $breakpoint in map.keys(vars.$grid-breakpoints) {
|
|
161
|
+
@include breakpoints.media-breakpoint-down($breakpoint, vars.$grid-breakpoints) {
|
|
162
162
|
&.vg-nav-#{$breakpoint} {
|
|
163
163
|
.vg-nav-hamburger {
|
|
164
164
|
display: flex;
|
|
@@ -69,18 +69,18 @@ const nestable = VGNestable.getOrCreateInstance("#myNestable", {
|
|
|
69
69
|
Значения по умолчанию:
|
|
70
70
|
|
|
71
71
|
```js
|
|
72
|
-
{
|
|
73
|
-
disabled: false,
|
|
74
|
-
disabledattribute: "data-disabled",
|
|
75
|
-
listselector: ".vg-nestable-list",
|
|
72
|
+
{
|
|
73
|
+
disabled: false,
|
|
74
|
+
disabledattribute: "data-disabled",
|
|
75
|
+
listselector: ".vg-nestable-list",
|
|
76
76
|
itemselector: ".vg-nestable-item",
|
|
77
77
|
handleselector: ".vg-nestable-handle",
|
|
78
78
|
idattribute: "data-id",
|
|
79
79
|
childlistclass: "vg-nestable-list",
|
|
80
80
|
handleicon: "",
|
|
81
|
-
indent: 18,
|
|
81
|
+
indent: 18,
|
|
82
82
|
maxdepth: 6,
|
|
83
|
-
hoverthreshold: 0.25,
|
|
83
|
+
hoverthreshold: 0.25,
|
|
84
84
|
neighborchangethreshold: 0,
|
|
85
85
|
showplaceholder: true,
|
|
86
86
|
group: "",
|
|
@@ -119,49 +119,49 @@ const nestable = VGNestable.getOrCreateInstance("#myNestable", {
|
|
|
119
119
|
}
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
### Пояснение параметров
|
|
123
|
-
|
|
124
|
-
- `disabled`: полностью отключает изменение дерева мышью, touch и клавиатурой. Также читается из `data-disabled="true"` корневого элемента.
|
|
125
|
-
- `disabledattribute`: атрибут блокировки отдельных элементов и вложенных списков (`data-disabled` по умолчанию).
|
|
126
|
-
- `listselector`: селектор корневого/вложенных списков.
|
|
122
|
+
### Пояснение параметров
|
|
123
|
+
|
|
124
|
+
- `disabled`: полностью отключает изменение дерева мышью, touch и клавиатурой. Также читается из `data-disabled="true"` корневого элемента.
|
|
125
|
+
- `disabledattribute`: атрибут блокировки отдельных элементов и вложенных списков (`data-disabled` по умолчанию).
|
|
126
|
+
- `listselector`: селектор корневого/вложенных списков.
|
|
127
127
|
- `itemselector`: селектор sortable-элемента.
|
|
128
128
|
- `handleselector`: селектор зоны, за которую можно начинать drag.
|
|
129
129
|
- `idattribute`: атрибут, из которого берется `id` в `serialize()`.
|
|
130
130
|
- `childlistclass`: классы для автосозданного дочернего списка.
|
|
131
131
|
- `handleicon`: HTML/SVG иконки хэндла (проходит SVG-санитизацию).
|
|
132
|
-
- `indent`: ширина одного горизонтального шага вложенности. Каждый следующий шаг вправо переносит элемент ещё на один доступный уровень под предыдущий элемент.
|
|
132
|
+
- `indent`: ширина одного горизонтального шага вложенности. Каждый следующий шаг вправо переносит элемент ещё на один доступный уровень под предыдущий элемент.
|
|
133
133
|
- `maxdepth`: максимальная глубина дерева.
|
|
134
|
-
- `hoverthreshold`: половина высоты центральной зоны (0.05..0.45), используемой для вложения; выше и ниже неё находятся зоны `before/after`.
|
|
134
|
+
- `hoverthreshold`: половина высоты центральной зоны (0.05..0.45), используемой для вложения; выше и ниже неё находятся зоны `before/after`.
|
|
135
135
|
- `neighborchangethreshold`: порог в процентах (0..49), альтернативная логика смены позиции по краям элемента.
|
|
136
136
|
- `showplaceholder`: показывать/скрывать placeholder во время drag.
|
|
137
137
|
- `group`: имя группы списков для межспискового dnd.
|
|
138
138
|
- `connect`: включить связь списков внутри группы.
|
|
139
|
-
- `accept(item, sourceInstance, targetInstance)`: функция-фильтр разрешения дропа в target.
|
|
140
|
-
|
|
141
|
-
### Блокировка перетаскивания
|
|
142
|
-
|
|
143
|
-
Заблокировать всё дерево, в том числе запретить перенос в него из связанного списка:
|
|
144
|
-
|
|
145
|
-
```html
|
|
146
|
-
<div class="vg-nestable" data-vg-toggle="nestable" data-disabled="true">
|
|
147
|
-
<ol class="vg-nestable-list">...</ol>
|
|
148
|
-
</div>
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
Заблокировать только конкретный элемент. Другие элементы по-прежнему могут вставляться до/после него, поэтому его индекс в результате может измениться:
|
|
152
|
-
|
|
153
|
-
```html
|
|
154
|
-
<li class="vg-nestable-item" data-id="2" data-disabled="true">...</li>
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Заблокировать внутреннюю группу. Её элементы нельзя переносить отдельно или добавлять в эту группу, но родительскую ветку можно перемещать целиком:
|
|
158
|
-
|
|
159
|
-
```html
|
|
160
|
-
<li class="vg-nestable-item" data-id="1">
|
|
161
|
-
<div class="vg-nestable-inner">...</div>
|
|
162
|
-
<ol class="vg-nestable-list" data-disabled="true">...</ol>
|
|
163
|
-
</li>
|
|
164
|
-
```
|
|
139
|
+
- `accept(item, sourceInstance, targetInstance)`: функция-фильтр разрешения дропа в target.
|
|
140
|
+
|
|
141
|
+
### Блокировка перетаскивания
|
|
142
|
+
|
|
143
|
+
Заблокировать всё дерево, в том числе запретить перенос в него из связанного списка:
|
|
144
|
+
|
|
145
|
+
```html
|
|
146
|
+
<div class="vg-nestable" data-vg-toggle="nestable" data-disabled="true">
|
|
147
|
+
<ol class="vg-nestable-list">...</ol>
|
|
148
|
+
</div>
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Заблокировать только конкретный элемент. Другие элементы по-прежнему могут вставляться до/после него, поэтому его индекс в результате может измениться:
|
|
152
|
+
|
|
153
|
+
```html
|
|
154
|
+
<li class="vg-nestable-item" data-id="2" data-disabled="true">...</li>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Заблокировать внутреннюю группу. Её элементы нельзя переносить отдельно или добавлять в эту группу, но родительскую ветку можно перемещать целиком:
|
|
158
|
+
|
|
159
|
+
```html
|
|
160
|
+
<li class="vg-nestable-item" data-id="1">
|
|
161
|
+
<div class="vg-nestable-inner">...</div>
|
|
162
|
+
<ol class="vg-nestable-list" data-disabled="true">...</ol>
|
|
163
|
+
</li>
|
|
164
|
+
```
|
|
165
165
|
|
|
166
166
|
#### `collapse`
|
|
167
167
|
|
|
@@ -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;
|