vgapp 1.1.2 → 1.1.3

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 (53) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +19 -16
  3. package/app/langs/en/buttons.json +17 -2
  4. package/app/langs/en/messages.json +36 -1
  5. package/app/langs/ru/buttons.json +17 -2
  6. package/app/langs/ru/messages.json +69 -34
  7. package/app/modules/module-fn.js +15 -9
  8. package/app/modules/vgfilepreview/index.js +3 -0
  9. package/app/modules/vgfilepreview/js/i18n.js +56 -0
  10. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -0
  11. package/app/modules/vgfilepreview/js/renderers/image.js +92 -0
  12. package/app/modules/vgfilepreview/js/renderers/index.js +19 -0
  13. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -0
  14. package/app/modules/vgfilepreview/js/renderers/office.js +79 -0
  15. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -0
  16. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -0
  17. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -0
  18. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -0
  19. package/app/modules/vgfilepreview/js/renderers/text.js +83 -0
  20. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -0
  21. package/app/modules/vgfilepreview/js/renderers/video.js +80 -0
  22. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -0
  23. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -0
  24. package/app/modules/vgfilepreview/js/vgfilepreview.js +532 -0
  25. package/app/modules/vgfilepreview/readme.md +68 -0
  26. package/app/modules/vgfilepreview/scss/_variables.scss +113 -0
  27. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +460 -0
  28. package/app/modules/vgfiles/js/base.js +463 -175
  29. package/app/modules/vgfiles/js/droppable.js +260 -260
  30. package/app/modules/vgfiles/js/render.js +153 -153
  31. package/app/modules/vgfiles/js/vgfiles.js +41 -29
  32. package/app/modules/vgfiles/readme.md +116 -217
  33. package/app/modules/vgfiles/scss/_variables.scss +18 -10
  34. package/app/modules/vgfiles/scss/vgfiles.scss +153 -59
  35. package/app/modules/vgformsender/js/vgformsender.js +13 -13
  36. package/app/modules/vgmodal/js/vgmodal.js +12 -0
  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 -0
  46. package/app/utils/js/components/file-icon.js +109 -0
  47. package/app/utils/js/components/file-preview.js +304 -0
  48. package/app/utils/js/components/sanitize.js +150 -150
  49. package/build/vgapp.css +1 -1
  50. package/build/vgapp.css.map +1 -1
  51. package/index.js +1 -0
  52. package/index.scss +9 -6
  53. 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
+ }