vgapp 1.3.3 → 1.3.5

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 (89) hide show
  1. package/README.md +5 -12
  2. package/app/langs/en/buttons.json +17 -17
  3. package/app/langs/en/messages.json +36 -36
  4. package/app/langs/ru/buttons.json +17 -17
  5. package/app/langs/ru/messages.json +36 -36
  6. package/app/modules/base-module.js +111 -111
  7. package/app/modules/vgalert/js/vgalert.js +52 -52
  8. package/app/modules/vgalert/readme.md +105 -105
  9. package/app/modules/vgdynamictable/index.js +5 -5
  10. package/app/modules/vgdynamictable/js/editable.js +19 -19
  11. package/app/modules/vgdynamictable/js/filters.js +21 -21
  12. package/app/modules/vgdynamictable/js/fixed.js +179 -179
  13. package/app/modules/vgdynamictable/js/pagination.js +1 -1
  14. package/app/modules/vgdynamictable/js/search.js +12 -12
  15. package/app/modules/vgdynamictable/js/sortable.js +71 -71
  16. package/app/modules/vgdynamictable/js/summary-footer.js +28 -28
  17. package/app/modules/vgdynamictable/js/table-remote.js +79 -79
  18. package/app/modules/vgdynamictable/js/table-url-state.js +31 -31
  19. package/app/modules/vgdynamictable/js/utils/common.js +48 -48
  20. package/app/modules/vgdynamictable/js/vgdynamictable.js +268 -268
  21. package/app/modules/vgdynamictable/readme.md +250 -250
  22. package/app/modules/vgdynamictable/scss/_skeleton.scss +6 -6
  23. package/app/modules/vgdynamictable/scss/_sortable.scss +24 -24
  24. package/app/modules/vgdynamictable/scss/_table.scss +4 -4
  25. package/app/modules/vgdynamictable/scss/_variables.scss +79 -79
  26. package/app/modules/vgdynamictable/scss/vgdynamictable.scss +27 -27
  27. package/app/modules/vgfilepreview/js/i18n.js +56 -56
  28. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
  29. package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
  30. package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
  31. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
  32. package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
  33. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
  34. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
  35. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
  36. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
  37. package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
  38. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -272
  39. package/app/modules/vgfilepreview/js/renderers/video.js +80 -80
  40. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
  41. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
  42. package/app/modules/vgfilepreview/js/vgfilepreview.js +7 -7
  43. package/app/modules/vgfilepreview/readme.md +68 -68
  44. package/app/modules/vgfilepreview/scss/_variables.scss +113 -113
  45. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +464 -464
  46. package/app/modules/vgfiles/js/base.js +26 -26
  47. package/app/modules/vgfiles/js/droppable.js +260 -260
  48. package/app/modules/vgfiles/js/render.js +153 -153
  49. package/app/modules/vgfiles/js/vgfiles.js +104 -104
  50. package/app/modules/vgfiles/readme.md +123 -123
  51. package/app/modules/vgfiles/scss/_variables.scss +18 -18
  52. package/app/modules/vgfiles/scss/vgfiles.scss +148 -148
  53. package/app/modules/vgformsender/js/hideshowpass.js +16 -16
  54. package/app/modules/vgformsender/scss/vgformsender.scss +34 -34
  55. package/app/modules/vgmodal/js/vgmodal.drag.js +332 -332
  56. package/app/modules/vgmodal/js/vgmodal.js +188 -188
  57. package/app/modules/vgmodal/js/vgmodal.resize.js +27 -27
  58. package/app/modules/vgmodal/scss/vgmodal.scss +14 -14
  59. package/app/modules/vgnav/js/vgnav.js +135 -135
  60. package/app/modules/vgnav/readme.md +67 -67
  61. package/app/modules/vgnestable/README.md +307 -307
  62. package/app/modules/vgnestable/scss/_variables.scss +60 -60
  63. package/app/modules/vgnestable/scss/vgnestable.scss +163 -163
  64. package/app/modules/vgrangeslider/js/skins.js +222 -222
  65. package/app/modules/vgrangeslider/js/vgrangeslider.js +704 -704
  66. package/app/modules/vgrangeslider/readme.md +523 -523
  67. package/app/modules/vgrangeslider/scss/_variables.scss +53 -53
  68. package/app/modules/vgrangeslider/scss/vgrangeslider.scss +240 -240
  69. package/app/modules/vgselect/js/vgselect.js +39 -39
  70. package/app/modules/vgselect/scss/vgselect.scss +22 -22
  71. package/app/modules/vgspy/readme.md +28 -28
  72. package/app/modules/vgtoast/readme.md +18 -18
  73. package/app/modules/vgtoast/scss/vgtoast.scss +48 -48
  74. package/app/modules/vgtooltip/js/vgtooltip.js +89 -89
  75. package/app/modules/vgtooltip/readme.md +181 -181
  76. package/app/utils/js/components/ajax.js +117 -117
  77. package/app/utils/js/components/audio-metadata.js +240 -240
  78. package/app/utils/js/components/backdrop.js +17 -17
  79. package/app/utils/js/components/file-icon.js +109 -109
  80. package/app/utils/js/components/file-preview.js +304 -304
  81. package/app/utils/js/components/sanitize.js +150 -150
  82. package/app/utils/js/components/video-metadata.js +140 -140
  83. package/app/vgapp.js +21 -21
  84. package/build/vgapp.css +1 -1
  85. package/build/vgapp.css.map +1 -1
  86. package/build/vgapp.js +1 -1
  87. package/build/vgapp.js.map +1 -1
  88. package/index.js +14 -14
  89. package/package.json +3 -2
@@ -1,53 +1,53 @@
1
- $range-slider-map: (
2
- bg: #f1f4f8,
3
- fill: #111827,
4
- thumb: #ffffff,
5
- thumb-border: #111827,
6
- text: #111827,
7
- muted: #6b7280,
8
- gap: 10px,
9
- height: 6px,
10
- radius: 999px,
11
- z-ruler: 1,
12
- z-track: 2,
13
- z-fill: 3,
14
- z-input: 4,
15
- z-tooltip: 5,
16
- wrapper-min-height: 36px,
17
- wrapper-padding-top: 12px,
18
- wrapper-padding-bottom: 6px,
19
- input-height: 24px,
20
- thumb-size: 18px,
21
- thumb-border-width: 2px,
22
- thumb-shadow: 0 2px 10px rgba(17, 24, 39, 0.16),
23
- tooltip-bg: #111827,
24
- tooltip-color: #ffffff,
25
- tooltip-padding-y: 4px,
26
- tooltip-padding-x: 8px,
27
- tooltip-radius: 6px,
28
- tooltip-shadow: 0 6px 18px rgba(17, 24, 39, 0.18),
29
- tooltip-font-size: 12px,
30
- tooltip-line-height: 1.2,
31
- labels-gap: 6px,
32
- labels-font-size: 13px,
33
- labels-line-height: 1.4,
34
- label-font-weight: 500,
35
- ruler-mark-width: 1px,
36
- ruler-mark-height: 8px,
37
- ruler-mark-bg: #cbd5e1,
38
- ruler-gap-y: 13px,
39
- ruler-label-offset: 8px,
40
- ruler-label-font-size: 11px,
41
- ruler-label-line-height: 1.2,
42
- ruler-label-color: #6b7280,
43
- ruler-active-mark-bg: #111827,
44
- ruler-active-label-color: #111827,
45
- ruler-inactive-opacity: .5,
46
- ruler-active-opacity: 1,
47
- status-success: $success,
48
- status-warning: $warning,
49
- status-danger: $danger,
50
- status-success-contrast: #ffffff,
51
- status-warning-contrast: #111827,
52
- status-danger-contrast: #ffffff,
53
- );
1
+ $range-slider-map: (
2
+ bg: #f1f4f8,
3
+ fill: #111827,
4
+ thumb: #ffffff,
5
+ thumb-border: #111827,
6
+ text: #111827,
7
+ muted: #6b7280,
8
+ gap: 10px,
9
+ height: 6px,
10
+ radius: 999px,
11
+ z-ruler: 1,
12
+ z-track: 2,
13
+ z-fill: 3,
14
+ z-input: 4,
15
+ z-tooltip: 5,
16
+ wrapper-min-height: 36px,
17
+ wrapper-padding-top: 12px,
18
+ wrapper-padding-bottom: 6px,
19
+ input-height: 24px,
20
+ thumb-size: 18px,
21
+ thumb-border-width: 2px,
22
+ thumb-shadow: 0 2px 10px rgba(17, 24, 39, 0.16),
23
+ tooltip-bg: #111827,
24
+ tooltip-color: #ffffff,
25
+ tooltip-padding-y: 4px,
26
+ tooltip-padding-x: 8px,
27
+ tooltip-radius: 6px,
28
+ tooltip-shadow: 0 6px 18px rgba(17, 24, 39, 0.18),
29
+ tooltip-font-size: 12px,
30
+ tooltip-line-height: 1.2,
31
+ labels-gap: 6px,
32
+ labels-font-size: 13px,
33
+ labels-line-height: 1.4,
34
+ label-font-weight: 500,
35
+ ruler-mark-width: 1px,
36
+ ruler-mark-height: 8px,
37
+ ruler-mark-bg: #cbd5e1,
38
+ ruler-gap-y: 13px,
39
+ ruler-label-offset: 8px,
40
+ ruler-label-font-size: 11px,
41
+ ruler-label-line-height: 1.2,
42
+ ruler-label-color: #6b7280,
43
+ ruler-active-mark-bg: #111827,
44
+ ruler-active-label-color: #111827,
45
+ ruler-inactive-opacity: .5,
46
+ ruler-active-opacity: 1,
47
+ status-success: $success,
48
+ status-warning: $warning,
49
+ status-danger: $danger,
50
+ status-success-contrast: #ffffff,
51
+ status-warning-contrast: #111827,
52
+ status-danger-contrast: #ffffff,
53
+ );
@@ -1,240 +1,240 @@
1
- /**
2
- *--------------------------------------------------------------------------
3
- * Module: VGRangeSlider
4
- *--------------------------------------------------------------------------
5
- **/
6
-
7
- @import "../../../utils/scss/functions";
8
- @import "../../../utils/scss/mixin";
9
- @import "../../../utils/scss/variables";
10
- @import "variables";
11
-
12
- .vg-range-slider {
13
- @include mix-vars('range-slider', $range-slider-map);
14
-
15
- --vg-range-slider-ruler-height: calc(
16
- var(--vg-range-slider-ruler-mark-height) +
17
- var(--vg-range-slider-ruler-label-offset) +
18
- (var(--vg-range-slider-ruler-label-font-size) * var(--vg-range-slider-ruler-label-line-height))
19
- );
20
- --vg-range-slider-ruler-offset-y: calc(var(--vg-range-slider-ruler-gap-y) * -1);
21
- --vg-range-slider-wrapper-padding-bottom-ruler: calc(
22
- var(--vg-range-slider-ruler-height) + var(--vg-range-slider-ruler-gap-y)
23
- );
24
-
25
- position: relative;
26
- display: grid;
27
- gap: var(--vg-range-slider-gap);
28
- color: var(--vg-range-slider-text);
29
-
30
- &.disabled {
31
- opacity: .65;
32
- }
33
-
34
- &__wrapper {
35
- position: relative;
36
- min-height: var(--vg-range-slider-wrapper-min-height);
37
- padding: var(--vg-range-slider-wrapper-padding-top) 0 var(--vg-range-slider-wrapper-padding-bottom);
38
- }
39
-
40
- &.is-skin-ruler {
41
- .vg-range-slider__wrapper {
42
- padding-bottom: var(--vg-range-slider-wrapper-padding-bottom-ruler);
43
- }
44
-
45
- .vg-range-slider__labels {
46
- display: none;
47
- }
48
- }
49
-
50
- &.is-ruler-dim-inactive {
51
- .vg-range-slider__ruler-item {
52
- opacity: var(--vg-range-slider-ruler-inactive-opacity);
53
- }
54
-
55
- .vg-range-slider__ruler-item.is-active {
56
- opacity: var(--vg-range-slider-ruler-active-opacity);
57
- }
58
- }
59
-
60
- &.is-skin-status {
61
- &.is-status-success {
62
- --vg-range-slider-fill: var(--vg-range-slider-status-success);
63
- --vg-range-slider-thumb-border: var(--vg-range-slider-status-success);
64
- --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-success);
65
- --vg-range-slider-tooltip-color: var(--vg-range-slider-status-success-contrast);
66
- }
67
-
68
- &.is-status-warning {
69
- --vg-range-slider-fill: var(--vg-range-slider-status-warning);
70
- --vg-range-slider-thumb-border: var(--vg-range-slider-status-warning);
71
- --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-warning);
72
- --vg-range-slider-tooltip-color: var(--vg-range-slider-status-warning-contrast);
73
- }
74
-
75
- &.is-status-danger {
76
- --vg-range-slider-fill: var(--vg-range-slider-status-danger);
77
- --vg-range-slider-thumb-border: var(--vg-range-slider-status-danger);
78
- --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-danger);
79
- --vg-range-slider-tooltip-color: var(--vg-range-slider-status-danger-contrast);
80
- }
81
- }
82
-
83
- &__track,
84
- &__fill {
85
- position: absolute;
86
- top: 50%;
87
- transform: translateY(-50%);
88
- height: var(--vg-range-slider-height);
89
- border-radius: var(--vg-range-slider-radius);
90
- }
91
-
92
- &__track {
93
- left: 0;
94
- right: 0;
95
- z-index: var(--vg-range-slider-z-track);
96
- background: var(--vg-range-slider-bg);
97
- }
98
-
99
- &__fill {
100
- left: 0;
101
- width: 0;
102
- z-index: var(--vg-range-slider-z-fill);
103
- background: var(--vg-range-slider-fill);
104
- }
105
-
106
- &__input {
107
- position: absolute;
108
- top: 50%;
109
- left: 0;
110
- width: 100%;
111
- height: var(--vg-range-slider-input-height);
112
- transform: translateY(-50%);
113
- margin: 0;
114
- background: transparent;
115
- pointer-events: none;
116
- z-index: var(--vg-range-slider-z-input);
117
- appearance: none;
118
- -webkit-appearance: none;
119
-
120
- &::-webkit-slider-runnable-track {
121
- height: var(--vg-range-slider-height);
122
- background: transparent;
123
- }
124
-
125
- &::-moz-range-track {
126
- height: var(--vg-range-slider-height);
127
- background: transparent;
128
- }
129
-
130
- &::-webkit-slider-thumb {
131
- width: var(--vg-range-slider-thumb-size);
132
- height: var(--vg-range-slider-thumb-size);
133
- margin-top: calc((var(--vg-range-slider-height) - var(--vg-range-slider-thumb-size)) / 2);
134
- border: var(--vg-range-slider-thumb-border-width) solid var(--vg-range-slider-thumb-border);
135
- border-radius: 50%;
136
- background: var(--vg-range-slider-thumb);
137
- box-shadow: var(--vg-range-slider-thumb-shadow);
138
- cursor: pointer;
139
- pointer-events: auto;
140
- appearance: none;
141
- -webkit-appearance: none;
142
- }
143
-
144
- &::-moz-range-thumb {
145
- width: var(--vg-range-slider-thumb-size);
146
- height: var(--vg-range-slider-thumb-size);
147
- border: var(--vg-range-slider-thumb-border-width) solid var(--vg-range-slider-thumb-border);
148
- border-radius: 50%;
149
- background: var(--vg-range-slider-thumb);
150
- box-shadow: var(--vg-range-slider-thumb-shadow);
151
- cursor: pointer;
152
- pointer-events: auto;
153
- }
154
-
155
- &:focus {
156
- outline: none;
157
- }
158
- }
159
-
160
- &__tooltip {
161
- position: absolute;
162
- top: 0;
163
- z-index: var(--vg-range-slider-z-tooltip);
164
- transform: translate(-50%, -100%);
165
- padding: var(--vg-range-slider-tooltip-padding-y) var(--vg-range-slider-tooltip-padding-x);
166
- border-radius: var(--vg-range-slider-tooltip-radius);
167
- background: var(--vg-range-slider-tooltip-bg);
168
- box-shadow: var(--vg-range-slider-tooltip-shadow);
169
- color: var(--vg-range-slider-tooltip-color);
170
- font-size: var(--vg-range-slider-tooltip-font-size);
171
- line-height: var(--vg-range-slider-tooltip-line-height);
172
- white-space: nowrap;
173
- pointer-events: none;
174
-
175
- &.is-hidden {
176
- opacity: 0;
177
- visibility: hidden;
178
- }
179
- }
180
-
181
- &__labels {
182
- display: flex;
183
- align-items: center;
184
- gap: var(--vg-range-slider-labels-gap);
185
- font-size: var(--vg-range-slider-labels-font-size);
186
- line-height: var(--vg-range-slider-labels-line-height);
187
- }
188
-
189
- &__label {
190
- font-weight: var(--vg-range-slider-label-font-weight);
191
- }
192
-
193
- &__separator {
194
- color: var(--vg-range-slider-muted);
195
- }
196
-
197
- &__ruler {
198
- position: absolute;
199
- left: 0;
200
- right: 0;
201
- bottom: var(--vg-range-slider-ruler-offset-y);
202
- z-index: var(--vg-range-slider-z-ruler);
203
- height: var(--vg-range-slider-ruler-height);
204
- pointer-events: none;
205
- }
206
-
207
- &__ruler-item {
208
- position: absolute;
209
- bottom: 0;
210
- transform: translateX(-50%);
211
- display: flex;
212
- flex-direction: column;
213
- align-items: center;
214
- transition: opacity .2s ease;
215
-
216
- &.is-active {
217
- .vg-range-slider__ruler-mark {
218
- background: var(--vg-range-slider-ruler-active-mark-bg);
219
- }
220
-
221
- .vg-range-slider__ruler-label {
222
- color: var(--vg-range-slider-ruler-active-label-color);
223
- }
224
- }
225
- }
226
-
227
- &__ruler-mark {
228
- width: var(--vg-range-slider-ruler-mark-width);
229
- height: var(--vg-range-slider-ruler-mark-height);
230
- background: var(--vg-range-slider-ruler-mark-bg);
231
- }
232
-
233
- &__ruler-label {
234
- margin-top: var(--vg-range-slider-ruler-label-offset);
235
- font-size: var(--vg-range-slider-ruler-label-font-size);
236
- line-height: var(--vg-range-slider-ruler-label-line-height);
237
- color: var(--vg-range-slider-ruler-label-color);
238
- white-space: nowrap;
239
- }
240
- }
1
+ /**
2
+ *--------------------------------------------------------------------------
3
+ * Module: VGRangeSlider
4
+ *--------------------------------------------------------------------------
5
+ **/
6
+
7
+ @import "../../../utils/scss/functions";
8
+ @import "../../../utils/scss/mixin";
9
+ @import "../../../utils/scss/variables";
10
+ @import "variables";
11
+
12
+ .vg-range-slider {
13
+ @include mix-vars('range-slider', $range-slider-map);
14
+
15
+ --vg-range-slider-ruler-height: calc(
16
+ var(--vg-range-slider-ruler-mark-height) +
17
+ var(--vg-range-slider-ruler-label-offset) +
18
+ (var(--vg-range-slider-ruler-label-font-size) * var(--vg-range-slider-ruler-label-line-height))
19
+ );
20
+ --vg-range-slider-ruler-offset-y: calc(var(--vg-range-slider-ruler-gap-y) * -1);
21
+ --vg-range-slider-wrapper-padding-bottom-ruler: calc(
22
+ var(--vg-range-slider-ruler-height) + var(--vg-range-slider-ruler-gap-y)
23
+ );
24
+
25
+ position: relative;
26
+ display: grid;
27
+ gap: var(--vg-range-slider-gap);
28
+ color: var(--vg-range-slider-text);
29
+
30
+ &.disabled {
31
+ opacity: .65;
32
+ }
33
+
34
+ &__wrapper {
35
+ position: relative;
36
+ min-height: var(--vg-range-slider-wrapper-min-height);
37
+ padding: var(--vg-range-slider-wrapper-padding-top) 0 var(--vg-range-slider-wrapper-padding-bottom);
38
+ }
39
+
40
+ &.is-skin-ruler {
41
+ .vg-range-slider__wrapper {
42
+ padding-bottom: var(--vg-range-slider-wrapper-padding-bottom-ruler);
43
+ }
44
+
45
+ .vg-range-slider__labels {
46
+ display: none;
47
+ }
48
+ }
49
+
50
+ &.is-ruler-dim-inactive {
51
+ .vg-range-slider__ruler-item {
52
+ opacity: var(--vg-range-slider-ruler-inactive-opacity);
53
+ }
54
+
55
+ .vg-range-slider__ruler-item.is-active {
56
+ opacity: var(--vg-range-slider-ruler-active-opacity);
57
+ }
58
+ }
59
+
60
+ &.is-skin-status {
61
+ &.is-status-success {
62
+ --vg-range-slider-fill: var(--vg-range-slider-status-success);
63
+ --vg-range-slider-thumb-border: var(--vg-range-slider-status-success);
64
+ --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-success);
65
+ --vg-range-slider-tooltip-color: var(--vg-range-slider-status-success-contrast);
66
+ }
67
+
68
+ &.is-status-warning {
69
+ --vg-range-slider-fill: var(--vg-range-slider-status-warning);
70
+ --vg-range-slider-thumb-border: var(--vg-range-slider-status-warning);
71
+ --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-warning);
72
+ --vg-range-slider-tooltip-color: var(--vg-range-slider-status-warning-contrast);
73
+ }
74
+
75
+ &.is-status-danger {
76
+ --vg-range-slider-fill: var(--vg-range-slider-status-danger);
77
+ --vg-range-slider-thumb-border: var(--vg-range-slider-status-danger);
78
+ --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-danger);
79
+ --vg-range-slider-tooltip-color: var(--vg-range-slider-status-danger-contrast);
80
+ }
81
+ }
82
+
83
+ &__track,
84
+ &__fill {
85
+ position: absolute;
86
+ top: 50%;
87
+ transform: translateY(-50%);
88
+ height: var(--vg-range-slider-height);
89
+ border-radius: var(--vg-range-slider-radius);
90
+ }
91
+
92
+ &__track {
93
+ left: 0;
94
+ right: 0;
95
+ z-index: var(--vg-range-slider-z-track);
96
+ background: var(--vg-range-slider-bg);
97
+ }
98
+
99
+ &__fill {
100
+ left: 0;
101
+ width: 0;
102
+ z-index: var(--vg-range-slider-z-fill);
103
+ background: var(--vg-range-slider-fill);
104
+ }
105
+
106
+ &__input {
107
+ position: absolute;
108
+ top: 50%;
109
+ left: 0;
110
+ width: 100%;
111
+ height: var(--vg-range-slider-input-height);
112
+ transform: translateY(-50%);
113
+ margin: 0;
114
+ background: transparent;
115
+ pointer-events: none;
116
+ z-index: var(--vg-range-slider-z-input);
117
+ appearance: none;
118
+ -webkit-appearance: none;
119
+
120
+ &::-webkit-slider-runnable-track {
121
+ height: var(--vg-range-slider-height);
122
+ background: transparent;
123
+ }
124
+
125
+ &::-moz-range-track {
126
+ height: var(--vg-range-slider-height);
127
+ background: transparent;
128
+ }
129
+
130
+ &::-webkit-slider-thumb {
131
+ width: var(--vg-range-slider-thumb-size);
132
+ height: var(--vg-range-slider-thumb-size);
133
+ margin-top: calc((var(--vg-range-slider-height) - var(--vg-range-slider-thumb-size)) / 2);
134
+ border: var(--vg-range-slider-thumb-border-width) solid var(--vg-range-slider-thumb-border);
135
+ border-radius: 50%;
136
+ background: var(--vg-range-slider-thumb);
137
+ box-shadow: var(--vg-range-slider-thumb-shadow);
138
+ cursor: pointer;
139
+ pointer-events: auto;
140
+ appearance: none;
141
+ -webkit-appearance: none;
142
+ }
143
+
144
+ &::-moz-range-thumb {
145
+ width: var(--vg-range-slider-thumb-size);
146
+ height: var(--vg-range-slider-thumb-size);
147
+ border: var(--vg-range-slider-thumb-border-width) solid var(--vg-range-slider-thumb-border);
148
+ border-radius: 50%;
149
+ background: var(--vg-range-slider-thumb);
150
+ box-shadow: var(--vg-range-slider-thumb-shadow);
151
+ cursor: pointer;
152
+ pointer-events: auto;
153
+ }
154
+
155
+ &:focus {
156
+ outline: none;
157
+ }
158
+ }
159
+
160
+ &__tooltip {
161
+ position: absolute;
162
+ top: 0;
163
+ z-index: var(--vg-range-slider-z-tooltip);
164
+ transform: translate(-50%, -100%);
165
+ padding: var(--vg-range-slider-tooltip-padding-y) var(--vg-range-slider-tooltip-padding-x);
166
+ border-radius: var(--vg-range-slider-tooltip-radius);
167
+ background: var(--vg-range-slider-tooltip-bg);
168
+ box-shadow: var(--vg-range-slider-tooltip-shadow);
169
+ color: var(--vg-range-slider-tooltip-color);
170
+ font-size: var(--vg-range-slider-tooltip-font-size);
171
+ line-height: var(--vg-range-slider-tooltip-line-height);
172
+ white-space: nowrap;
173
+ pointer-events: none;
174
+
175
+ &.is-hidden {
176
+ opacity: 0;
177
+ visibility: hidden;
178
+ }
179
+ }
180
+
181
+ &__labels {
182
+ display: flex;
183
+ align-items: center;
184
+ gap: var(--vg-range-slider-labels-gap);
185
+ font-size: var(--vg-range-slider-labels-font-size);
186
+ line-height: var(--vg-range-slider-labels-line-height);
187
+ }
188
+
189
+ &__label {
190
+ font-weight: var(--vg-range-slider-label-font-weight);
191
+ }
192
+
193
+ &__separator {
194
+ color: var(--vg-range-slider-muted);
195
+ }
196
+
197
+ &__ruler {
198
+ position: absolute;
199
+ left: 0;
200
+ right: 0;
201
+ bottom: var(--vg-range-slider-ruler-offset-y);
202
+ z-index: var(--vg-range-slider-z-ruler);
203
+ height: var(--vg-range-slider-ruler-height);
204
+ pointer-events: none;
205
+ }
206
+
207
+ &__ruler-item {
208
+ position: absolute;
209
+ bottom: 0;
210
+ transform: translateX(-50%);
211
+ display: flex;
212
+ flex-direction: column;
213
+ align-items: center;
214
+ transition: opacity .2s ease;
215
+
216
+ &.is-active {
217
+ .vg-range-slider__ruler-mark {
218
+ background: var(--vg-range-slider-ruler-active-mark-bg);
219
+ }
220
+
221
+ .vg-range-slider__ruler-label {
222
+ color: var(--vg-range-slider-ruler-active-label-color);
223
+ }
224
+ }
225
+ }
226
+
227
+ &__ruler-mark {
228
+ width: var(--vg-range-slider-ruler-mark-width);
229
+ height: var(--vg-range-slider-ruler-mark-height);
230
+ background: var(--vg-range-slider-ruler-mark-bg);
231
+ }
232
+
233
+ &__ruler-label {
234
+ margin-top: var(--vg-range-slider-ruler-label-offset);
235
+ font-size: var(--vg-range-slider-ruler-label-font-size);
236
+ line-height: var(--vg-range-slider-ruler-label-line-height);
237
+ color: var(--vg-range-slider-ruler-label-color);
238
+ white-space: nowrap;
239
+ }
240
+ }