vgapp 1.1.6 → 1.1.7

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 (54) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/README.md +48 -48
  3. package/app/langs/en/buttons.json +17 -17
  4. package/app/langs/en/messages.json +36 -36
  5. package/app/langs/ru/buttons.json +17 -17
  6. package/app/langs/ru/messages.json +36 -36
  7. package/app/modules/vgfilepreview/js/i18n.js +56 -56
  8. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
  9. package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
  10. package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
  11. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
  12. package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
  13. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
  14. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
  15. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
  16. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
  17. package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
  18. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -272
  19. package/app/modules/vgfilepreview/js/renderers/video.js +80 -80
  20. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
  21. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
  22. package/app/modules/vgfilepreview/js/vgfilepreview.js +7 -7
  23. package/app/modules/vgfilepreview/readme.md +68 -68
  24. package/app/modules/vgfilepreview/scss/_variables.scss +113 -113
  25. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +464 -464
  26. package/app/modules/vgfiles/js/base.js +26 -26
  27. package/app/modules/vgfiles/js/droppable.js +260 -260
  28. package/app/modules/vgfiles/js/render.js +153 -153
  29. package/app/modules/vgfiles/js/vgfiles.js +41 -41
  30. package/app/modules/vgfiles/readme.md +123 -123
  31. package/app/modules/vgfiles/scss/_variables.scss +18 -18
  32. package/app/modules/vgfiles/scss/vgfiles.scss +148 -148
  33. package/app/modules/vgformsender/js/vgformsender.js +1 -1
  34. package/app/modules/vgmodal/js/vgmodal.drag.js +332 -332
  35. package/app/modules/vgmodal/js/vgmodal.js +33 -33
  36. package/app/modules/vgmodal/js/vgmodal.resize.js +435 -435
  37. package/app/modules/vgnav/js/vgnav.js +135 -135
  38. package/app/modules/vgnav/readme.md +67 -67
  39. package/app/modules/vgnestable/README.md +307 -307
  40. package/app/modules/vgnestable/scss/_variables.scss +60 -60
  41. package/app/modules/vgnestable/scss/vgnestable.scss +163 -163
  42. package/app/modules/vgselect/js/vgselect.js +39 -39
  43. package/app/modules/vgselect/scss/vgselect.scss +22 -22
  44. package/app/modules/vgspy/readme.md +28 -28
  45. package/app/utils/js/components/audio-metadata.js +240 -240
  46. package/app/utils/js/components/file-icon.js +109 -109
  47. package/app/utils/js/components/file-preview.js +304 -304
  48. package/app/utils/js/components/sanitize.js +150 -150
  49. package/app/utils/js/components/video-metadata.js +140 -140
  50. package/build/vgapp.css +1 -1
  51. package/build/vgapp.css.map +1 -1
  52. package/build/vgapp.js.map +1 -1
  53. package/index.scss +9 -9
  54. package/package.json +1 -1
@@ -1,60 +1,60 @@
1
- $nestable-map: (
2
- list-transition: "background-color .15s ease, outline-color .15s ease",
3
- list-drop-target-bg: rgba(13, 110, 253, .06),
4
- list-drop-target-outline: 1px dashed rgba(13, 110, 253, .45),
5
- list-drop-target-outline-offset: 2px,
6
- list-drop-denied-bg: rgba(220, 53, 69, .06),
7
- list-drop-denied-outline: 1px dashed rgba(220, 53, 69, .5),
8
- list-drop-denied-outline-offset: 2px,
9
- list-nested-margin-top: .35rem,
10
- list-nested-padding-left: 1.25rem,
11
- list-nested-border-left: 1px dashed rgba(0, 0, 0, .12),
12
-
13
- item-margin: .35rem 0,
14
- item-transition: opacity .15s ease,
15
- item-dragging-opacity: .85,
16
- item-ghost-opacity: .3,
17
-
18
- inner-gap: .5rem,
19
- inner-min-height: 40px,
20
- inner-padding: .45rem .65rem,
21
- inner-border: 1px solid rgba(0, 0, 0, .12),
22
- inner-bg: #fff,
23
- inner-border-radius: .45rem,
24
-
25
- handle-size: 1.85rem,
26
- handle-border: 1px solid rgba(0, 0, 0, .12),
27
- handle-bg: rgba(0, 0, 0, .03),
28
- handle-border-radius: .35rem,
29
- handle-cursor: grab,
30
- handle-active-cursor: grabbing,
31
-
32
- toggle-size: 1.85rem,
33
- toggle-border: 1px solid rgba(0, 0, 0, .12),
34
- toggle-bg: rgba(0, 0, 0, .03),
35
- toggle-border-radius: .35rem,
36
- toggle-color: rgba(0, 0, 0, .65),
37
- toggle-font-weight: 700,
38
- toggle-line-height: 1,
39
- toggle-hover-bg: rgba(0, 0, 0, .07),
40
- toggle-svg-size: 16px,
41
- toggle-svg-transition: transform .2s ease,
42
- toggle-svg-closed-transform: rotate(0deg),
43
- toggle-svg-open-transform: rotate(180deg),
44
-
45
- handle-icon-min-width: .9rem,
46
- handle-icon-color: rgba(0, 0, 0, .45),
47
- handle-icon-font-weight: 700,
48
- handle-icon-line-height: 1,
49
- handle-icon-letter-spacing: .06em,
50
-
51
- placeholder-border: 1px dashed rgba(13, 110, 253, .7),
52
- placeholder-bg: rgba(13, 110, 253, .08),
53
- placeholder-border-radius: .45rem,
54
- placeholder-margin: .35rem 0,
55
- placeholder-min-height: 40px,
56
-
57
- drag-element-opacity: .92,
58
- drag-element-transform: rotate(.5deg),
59
- drag-element-shadow: 0 8px 22px rgba(0, 0, 0, .18)
60
- );
1
+ $nestable-map: (
2
+ list-transition: "background-color .15s ease, outline-color .15s ease",
3
+ list-drop-target-bg: rgba(13, 110, 253, .06),
4
+ list-drop-target-outline: 1px dashed rgba(13, 110, 253, .45),
5
+ list-drop-target-outline-offset: 2px,
6
+ list-drop-denied-bg: rgba(220, 53, 69, .06),
7
+ list-drop-denied-outline: 1px dashed rgba(220, 53, 69, .5),
8
+ list-drop-denied-outline-offset: 2px,
9
+ list-nested-margin-top: .35rem,
10
+ list-nested-padding-left: 1.25rem,
11
+ list-nested-border-left: 1px dashed rgba(0, 0, 0, .12),
12
+
13
+ item-margin: .35rem 0,
14
+ item-transition: opacity .15s ease,
15
+ item-dragging-opacity: .85,
16
+ item-ghost-opacity: .3,
17
+
18
+ inner-gap: .5rem,
19
+ inner-min-height: 40px,
20
+ inner-padding: .45rem .65rem,
21
+ inner-border: 1px solid rgba(0, 0, 0, .12),
22
+ inner-bg: #fff,
23
+ inner-border-radius: .45rem,
24
+
25
+ handle-size: 1.85rem,
26
+ handle-border: 1px solid rgba(0, 0, 0, .12),
27
+ handle-bg: rgba(0, 0, 0, .03),
28
+ handle-border-radius: .35rem,
29
+ handle-cursor: grab,
30
+ handle-active-cursor: grabbing,
31
+
32
+ toggle-size: 1.85rem,
33
+ toggle-border: 1px solid rgba(0, 0, 0, .12),
34
+ toggle-bg: rgba(0, 0, 0, .03),
35
+ toggle-border-radius: .35rem,
36
+ toggle-color: rgba(0, 0, 0, .65),
37
+ toggle-font-weight: 700,
38
+ toggle-line-height: 1,
39
+ toggle-hover-bg: rgba(0, 0, 0, .07),
40
+ toggle-svg-size: 16px,
41
+ toggle-svg-transition: transform .2s ease,
42
+ toggle-svg-closed-transform: rotate(0deg),
43
+ toggle-svg-open-transform: rotate(180deg),
44
+
45
+ handle-icon-min-width: .9rem,
46
+ handle-icon-color: rgba(0, 0, 0, .45),
47
+ handle-icon-font-weight: 700,
48
+ handle-icon-line-height: 1,
49
+ handle-icon-letter-spacing: .06em,
50
+
51
+ placeholder-border: 1px dashed rgba(13, 110, 253, .7),
52
+ placeholder-bg: rgba(13, 110, 253, .08),
53
+ placeholder-border-radius: .45rem,
54
+ placeholder-margin: .35rem 0,
55
+ placeholder-min-height: 40px,
56
+
57
+ drag-element-opacity: .92,
58
+ drag-element-transform: rotate(.5deg),
59
+ drag-element-shadow: 0 8px 22px rgba(0, 0, 0, .18)
60
+ );
@@ -1,163 +1,163 @@
1
- /**
2
- *--------------------------------------------------------------------------
3
- * Module: VGNestable
4
- * Author: Vegas DEV
5
- * License: see LICENSE
6
- *--------------------------------------------------------------------------
7
- **/
8
-
9
- @import "../../../utils/scss/functions";
10
- @import "../../../utils/scss/mixin";
11
- @import "../../../utils/scss/variables";
12
- @import "variables";
13
-
14
- .vg-nestable {
15
- @include mix-vars('nestable', $nestable-map);
16
-
17
- &-list {
18
- list-style: none;
19
- margin: 0;
20
- padding: 0;
21
- transition: var(--vg-nestable-list-transition);
22
-
23
- &.is-drop-target {
24
- background: var(--vg-nestable-list-drop-target-bg);
25
- outline: var(--vg-nestable-list-drop-target-outline);
26
- outline-offset: var(--vg-nestable-list-drop-target-outline-offset);
27
- }
28
-
29
- &.is-drop-denied {
30
- background: var(--vg-nestable-list-drop-denied-bg);
31
- outline: var(--vg-nestable-list-drop-denied-outline);
32
- outline-offset: var(--vg-nestable-list-drop-denied-outline-offset);
33
- }
34
-
35
- .vg-nestable-list {
36
- margin-top: var(--vg-nestable-list-nested-margin-top);
37
- padding-left: var(--vg-nestable-list-nested-padding-left);
38
- border-left: var(--vg-nestable-list-nested-border-left);
39
- }
40
- }
41
-
42
- &-item {
43
- margin: var(--vg-nestable-item-margin);
44
- position: relative;
45
- transition: var(--vg-nestable-item-transition);
46
-
47
- &.is-dragging {
48
- opacity: var(--vg-nestable-item-dragging-opacity);
49
- }
50
-
51
- &.is-drag-ghost {
52
- opacity: var(--vg-nestable-item-ghost-opacity);
53
- }
54
- }
55
-
56
- &-inner {
57
- display: flex;
58
- align-items: center;
59
- gap: var(--vg-nestable-inner-gap);
60
- min-height: var(--vg-nestable-inner-min-height);
61
- padding: var(--vg-nestable-inner-padding);
62
- border: var(--vg-nestable-inner-border);
63
- background: var(--vg-nestable-inner-bg);
64
- border-radius: var(--vg-nestable-inner-border-radius);
65
- }
66
-
67
- &-handle {
68
- flex: 0 0 auto;
69
- display: inline-flex;
70
- align-items: center;
71
- justify-content: center;
72
- width: var(--vg-nestable-handle-size);
73
- min-height: var(--vg-nestable-handle-size);
74
- padding: 0;
75
- border: var(--vg-nestable-handle-border);
76
- background: var(--vg-nestable-handle-bg);
77
- border-radius: var(--vg-nestable-handle-border-radius);
78
- cursor: var(--vg-nestable-handle-cursor);
79
- user-select: none;
80
-
81
- &:active {
82
- cursor: var(--vg-nestable-handle-active-cursor);
83
- }
84
- }
85
-
86
- &-collapse-toggle {
87
- flex: 0 0 auto;
88
- display: inline-flex;
89
- align-items: center;
90
- justify-content: center;
91
- width: var(--vg-nestable-toggle-size);
92
- min-height: var(--vg-nestable-toggle-size);
93
- padding: 0;
94
- border: var(--vg-nestable-toggle-border);
95
- background: var(--vg-nestable-toggle-bg);
96
- border-radius: var(--vg-nestable-toggle-border-radius);
97
- cursor: pointer;
98
- color: var(--vg-nestable-toggle-color);
99
- font-weight: var(--vg-nestable-toggle-font-weight);
100
- line-height: var(--vg-nestable-toggle-line-height);
101
-
102
- &:hover {
103
- background: var(--vg-nestable-toggle-hover-bg);
104
- }
105
-
106
- svg {
107
- width: var(--vg-nestable-toggle-svg-size);
108
- height: var(--vg-nestable-toggle-svg-size);
109
- transition: var(--vg-nestable-toggle-svg-transition);
110
- transform: var(--vg-nestable-toggle-svg-closed-transform);
111
-
112
- path {
113
- fill: currentColor;
114
- }
115
- }
116
-
117
- &[aria-expanded="true"] {
118
- svg {
119
- transform: var(--vg-nestable-toggle-svg-open-transform);
120
- }
121
- }
122
- }
123
-
124
- &-handle-icon {
125
- flex: 0 0 auto;
126
- display: inline-flex;
127
- align-items: center;
128
- justify-content: center;
129
- min-width: var(--vg-nestable-handle-icon-min-width);
130
- color: var(--vg-nestable-handle-icon-color);
131
- font-weight: var(--vg-nestable-handle-icon-font-weight);
132
- line-height: var(--vg-nestable-handle-icon-line-height);
133
- letter-spacing: var(--vg-nestable-handle-icon-letter-spacing);
134
- }
135
-
136
- &-content {
137
- flex: 1 1 auto;
138
- min-width: 0;
139
- }
140
-
141
- &-placeholder {
142
- list-style: none;
143
- border: var(--vg-nestable-placeholder-border);
144
- background: var(--vg-nestable-placeholder-bg);
145
- border-radius: var(--vg-nestable-placeholder-border-radius);
146
- margin: var(--vg-nestable-placeholder-margin);
147
- min-height: var(--vg-nestable-placeholder-min-height);
148
- }
149
-
150
- &-placeholder-hidden {
151
- border: 0;
152
- background: transparent;
153
- margin: 0;
154
- min-height: 0;
155
- height: 0 !important;
156
- }
157
-
158
- &-drag-element {
159
- opacity: var(--vg-nestable-drag-element-opacity);
160
- transform: var(--vg-nestable-drag-element-transform);
161
- box-shadow: var(--vg-nestable-drag-element-shadow);
162
- }
163
- }
1
+ /**
2
+ *--------------------------------------------------------------------------
3
+ * Module: VGNestable
4
+ * Author: Vegas DEV
5
+ * License: see LICENSE
6
+ *--------------------------------------------------------------------------
7
+ **/
8
+
9
+ @import "../../../utils/scss/functions";
10
+ @import "../../../utils/scss/mixin";
11
+ @import "../../../utils/scss/variables";
12
+ @import "variables";
13
+
14
+ .vg-nestable {
15
+ @include mix-vars('nestable', $nestable-map);
16
+
17
+ &-list {
18
+ list-style: none;
19
+ margin: 0;
20
+ padding: 0;
21
+ transition: var(--vg-nestable-list-transition);
22
+
23
+ &.is-drop-target {
24
+ background: var(--vg-nestable-list-drop-target-bg);
25
+ outline: var(--vg-nestable-list-drop-target-outline);
26
+ outline-offset: var(--vg-nestable-list-drop-target-outline-offset);
27
+ }
28
+
29
+ &.is-drop-denied {
30
+ background: var(--vg-nestable-list-drop-denied-bg);
31
+ outline: var(--vg-nestable-list-drop-denied-outline);
32
+ outline-offset: var(--vg-nestable-list-drop-denied-outline-offset);
33
+ }
34
+
35
+ .vg-nestable-list {
36
+ margin-top: var(--vg-nestable-list-nested-margin-top);
37
+ padding-left: var(--vg-nestable-list-nested-padding-left);
38
+ border-left: var(--vg-nestable-list-nested-border-left);
39
+ }
40
+ }
41
+
42
+ &-item {
43
+ margin: var(--vg-nestable-item-margin);
44
+ position: relative;
45
+ transition: var(--vg-nestable-item-transition);
46
+
47
+ &.is-dragging {
48
+ opacity: var(--vg-nestable-item-dragging-opacity);
49
+ }
50
+
51
+ &.is-drag-ghost {
52
+ opacity: var(--vg-nestable-item-ghost-opacity);
53
+ }
54
+ }
55
+
56
+ &-inner {
57
+ display: flex;
58
+ align-items: center;
59
+ gap: var(--vg-nestable-inner-gap);
60
+ min-height: var(--vg-nestable-inner-min-height);
61
+ padding: var(--vg-nestable-inner-padding);
62
+ border: var(--vg-nestable-inner-border);
63
+ background: var(--vg-nestable-inner-bg);
64
+ border-radius: var(--vg-nestable-inner-border-radius);
65
+ }
66
+
67
+ &-handle {
68
+ flex: 0 0 auto;
69
+ display: inline-flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ width: var(--vg-nestable-handle-size);
73
+ min-height: var(--vg-nestable-handle-size);
74
+ padding: 0;
75
+ border: var(--vg-nestable-handle-border);
76
+ background: var(--vg-nestable-handle-bg);
77
+ border-radius: var(--vg-nestable-handle-border-radius);
78
+ cursor: var(--vg-nestable-handle-cursor);
79
+ user-select: none;
80
+
81
+ &:active {
82
+ cursor: var(--vg-nestable-handle-active-cursor);
83
+ }
84
+ }
85
+
86
+ &-collapse-toggle {
87
+ flex: 0 0 auto;
88
+ display: inline-flex;
89
+ align-items: center;
90
+ justify-content: center;
91
+ width: var(--vg-nestable-toggle-size);
92
+ min-height: var(--vg-nestable-toggle-size);
93
+ padding: 0;
94
+ border: var(--vg-nestable-toggle-border);
95
+ background: var(--vg-nestable-toggle-bg);
96
+ border-radius: var(--vg-nestable-toggle-border-radius);
97
+ cursor: pointer;
98
+ color: var(--vg-nestable-toggle-color);
99
+ font-weight: var(--vg-nestable-toggle-font-weight);
100
+ line-height: var(--vg-nestable-toggle-line-height);
101
+
102
+ &:hover {
103
+ background: var(--vg-nestable-toggle-hover-bg);
104
+ }
105
+
106
+ svg {
107
+ width: var(--vg-nestable-toggle-svg-size);
108
+ height: var(--vg-nestable-toggle-svg-size);
109
+ transition: var(--vg-nestable-toggle-svg-transition);
110
+ transform: var(--vg-nestable-toggle-svg-closed-transform);
111
+
112
+ path {
113
+ fill: currentColor;
114
+ }
115
+ }
116
+
117
+ &[aria-expanded="true"] {
118
+ svg {
119
+ transform: var(--vg-nestable-toggle-svg-open-transform);
120
+ }
121
+ }
122
+ }
123
+
124
+ &-handle-icon {
125
+ flex: 0 0 auto;
126
+ display: inline-flex;
127
+ align-items: center;
128
+ justify-content: center;
129
+ min-width: var(--vg-nestable-handle-icon-min-width);
130
+ color: var(--vg-nestable-handle-icon-color);
131
+ font-weight: var(--vg-nestable-handle-icon-font-weight);
132
+ line-height: var(--vg-nestable-handle-icon-line-height);
133
+ letter-spacing: var(--vg-nestable-handle-icon-letter-spacing);
134
+ }
135
+
136
+ &-content {
137
+ flex: 1 1 auto;
138
+ min-width: 0;
139
+ }
140
+
141
+ &-placeholder {
142
+ list-style: none;
143
+ border: var(--vg-nestable-placeholder-border);
144
+ background: var(--vg-nestable-placeholder-bg);
145
+ border-radius: var(--vg-nestable-placeholder-border-radius);
146
+ margin: var(--vg-nestable-placeholder-margin);
147
+ min-height: var(--vg-nestable-placeholder-min-height);
148
+ }
149
+
150
+ &-placeholder-hidden {
151
+ border: 0;
152
+ background: transparent;
153
+ margin: 0;
154
+ min-height: 0;
155
+ height: 0 !important;
156
+ }
157
+
158
+ &-drag-element {
159
+ opacity: var(--vg-nestable-drag-element-opacity);
160
+ transform: var(--vg-nestable-drag-element-transform);
161
+ box-shadow: var(--vg-nestable-drag-element-shadow);
162
+ }
163
+ }
@@ -52,7 +52,7 @@ const SELECTOR_DROPDOWN = `.${CLASS_NAME_DROPDOWN}`;
52
52
  const SELECTOR_SEARCH_INPUT = `.${CLASS_NAME_SEARCH} input`;
53
53
  const SELECTOR_LIST = `.${CLASS_NAME_LIST}`;
54
54
  const SELECTOR_LOAD_MORE_BTN = `.${CLASS_NAME_LOAD_MORE}`;
55
- const DATA_ATTR_COPY_EXCLUDE_DEFAULT = ['inited', 'updating', 'exclude'];
55
+ const DATA_ATTR_COPY_EXCLUDE_DEFAULT = ['inited', 'updating', 'exclude'];
56
56
 
57
57
  /**
58
58
  * Класс VGSelect
@@ -90,7 +90,7 @@ class VGSelect extends BaseModule {
90
90
  },
91
91
  close: true,
92
92
  tree: false,
93
- exclude: 'data-filter-param',
93
+ exclude: 'data-filter-param',
94
94
  placeholder: '',
95
95
  onInit: null,
96
96
  onShow: null,
@@ -275,12 +275,12 @@ class VGSelect extends BaseModule {
275
275
  return new Set([...DATA_ATTR_COPY_EXCLUDE_DEFAULT, ...customExcluded]);
276
276
  }
277
277
 
278
- static _normalizeDataAttrKey(value) {
279
- return String(value || '')
280
- .trim()
281
- .replace(/^data-/, '')
282
- .toLowerCase();
283
- }
278
+ static _normalizeDataAttrKey(value) {
279
+ return String(value || '')
280
+ .trim()
281
+ .replace(/^data-/, '')
282
+ .toLowerCase();
283
+ }
284
284
 
285
285
  /**
286
286
  * Проверяет, является ли значение "пустым" (соответствует placeholder)
@@ -788,28 +788,28 @@ class VGSelect extends BaseModule {
788
788
  * @param {string} value - Значение для выбора
789
789
  * @param {Object} [data] - Дополнительные данные
790
790
  */
791
- static changeSelector(select, value, data = {}) {
792
- const container = select.nextElementSibling;
793
- const instance = container ? VGSelect.getInstance(container) : null;
794
-
795
- select.setAttribute('data-updating', 'true');
796
- try {
797
- const opt = select.querySelector(`option[value="${CSS.escape(normalizeData(value))}"]`);
791
+ static changeSelector(select, value, data = {}) {
792
+ const container = select.nextElementSibling;
793
+ const instance = container ? VGSelect.getInstance(container) : null;
794
+
795
+ select.setAttribute('data-updating', 'true');
796
+ try {
797
+ const opt = select.querySelector(`option[value="${CSS.escape(normalizeData(value))}"]`);
798
798
  if (!opt) {
799
799
  instance?._triggerEvent(EVENT_KEY_ERROR, { error: 'Option not found', value });
800
800
  return;
801
801
  }
802
802
 
803
- const wasSelected = opt.selected;
804
- const selectedText = opt.textContent.trim();
805
-
806
- if (select.multiple) {
807
- opt.selected = data?.selected === false ? false : true;
808
- } else {
809
- [...select.options].forEach(o => o.selected = false);
810
- opt.selected = true;
811
- select.value = opt.value;
812
- }
803
+ const wasSelected = opt.selected;
804
+ const selectedText = opt.textContent.trim();
805
+
806
+ if (select.multiple) {
807
+ opt.selected = data?.selected === false ? false : true;
808
+ } else {
809
+ [...select.options].forEach(o => o.selected = false);
810
+ opt.selected = true;
811
+ select.value = opt.value;
812
+ }
813
813
 
814
814
  this.updateUI(select);
815
815
 
@@ -832,9 +832,9 @@ class VGSelect extends BaseModule {
832
832
  * @param {number} index
833
833
  * @param {Object} [data]
834
834
  */
835
- static changeSelectorByIndex(select, index, data = {}) {
836
- const container = select.nextElementSibling;
837
- const instance = container ? VGSelect.getInstance(container) : null;
835
+ static changeSelectorByIndex(select, index, data = {}) {
836
+ const container = select.nextElementSibling;
837
+ const instance = container ? VGSelect.getInstance(container) : null;
838
838
 
839
839
  select.setAttribute('data-updating', 'true');
840
840
  try {
@@ -844,17 +844,17 @@ class VGSelect extends BaseModule {
844
844
  return;
845
845
  }
846
846
 
847
- const wasSelected = opt.selected;
848
- const selectedText = opt.textContent.trim();
849
- const value = opt.value;
850
-
851
- if (select.multiple) {
852
- opt.selected = data?.selected === false ? false : true;
853
- } else {
854
- [...select.options].forEach(o => o.selected = false);
855
- opt.selected = true;
856
- select.value = opt.value;
857
- }
847
+ const wasSelected = opt.selected;
848
+ const selectedText = opt.textContent.trim();
849
+ const value = opt.value;
850
+
851
+ if (select.multiple) {
852
+ opt.selected = data?.selected === false ? false : true;
853
+ } else {
854
+ [...select.options].forEach(o => o.selected = false);
855
+ opt.selected = true;
856
+ select.value = opt.value;
857
+ }
858
858
 
859
859
  this.updateUI(select);
860
860
 
@@ -25,7 +25,7 @@ select {
25
25
  }
26
26
  }
27
27
 
28
- .vg-select {
28
+ .vg-select {
29
29
  @include mix-vars('select-current', $select-current-map);
30
30
  @include mix-vars('select-current', $select-placeholder-map);
31
31
  @include mix-vars('select-dropdown', $select-dropdown-map);
@@ -117,7 +117,7 @@ select {
117
117
  }
118
118
  }
119
119
 
120
- &-dropdown {
120
+ &-dropdown {
121
121
  @each $key, $value in $select-dropdown-map {
122
122
  #{$key}: var(--vg-select-dropdown-#{$key})
123
123
  }
@@ -135,25 +135,25 @@ select {
135
135
  transform: scale(0.75) translateY(-11px);
136
136
  transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
137
137
  z-index: var(--vg-select-dropdown-z-index);
138
- margin-top: .25rem;
139
- }
140
-
141
- &.drop-up {
142
- .vg-select-dropdown {
143
- top: auto;
144
- bottom: 100%;
145
- margin-top: 0;
146
- margin-bottom: .25rem;
147
- transform-origin: 50% 100%;
148
- transform: scale(0.75) translateY(11px);
149
- }
150
- }
151
-
152
- &-list {
153
- margin: 0;
154
- padding: 0;
155
- list-style: none;
156
- display: flex;
138
+ margin-top: .25rem;
139
+ }
140
+
141
+ &.drop-up {
142
+ .vg-select-dropdown {
143
+ top: auto;
144
+ bottom: 100%;
145
+ margin-top: 0;
146
+ margin-bottom: .25rem;
147
+ transform-origin: 50% 100%;
148
+ transform: scale(0.75) translateY(11px);
149
+ }
150
+ }
151
+
152
+ &-list {
153
+ margin: 0;
154
+ padding: 0;
155
+ list-style: none;
156
+ display: flex;
157
157
  flex-direction: column;
158
158
  max-height: var(--vg-select-list-max-height);
159
159
  overflow-y: auto;
@@ -281,4 +281,4 @@ select {
281
281
  opacity: .75;
282
282
  }
283
283
  }
284
- }
284
+ }