vgapp 0.1.1 → 0.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 (52) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/app/modules/base-module.js +6 -1
  4. package/app/modules/module-fn.js +5 -7
  5. package/app/modules/vgdropdown/js/vgdropdown.js +16 -10
  6. package/app/modules/vgdropdown/scss/vgdropdown.css +47 -0
  7. package/app/modules/vgdropdown/scss/vgdropdown.css.map +1 -0
  8. package/app/modules/vgformsender/js/vgformsender.js +1 -1
  9. package/app/modules/vgformsender/scss/vgformsender.css +13 -0
  10. package/app/modules/vgformsender/scss/vgformsender.css.map +1 -0
  11. package/app/modules/vglawcookie/js/vglawcookie.js +182 -0
  12. package/app/modules/vglawcookie/scss/_variables.scss +14 -0
  13. package/app/modules/vglawcookie/scss/vglawcookie.css +87 -0
  14. package/app/modules/vglawcookie/scss/vglawcookie.css.map +1 -0
  15. package/app/modules/vglawcookie/scss/vglawcookie.scss +91 -0
  16. package/app/modules/vgmodal/js/vgmodal.js +24 -28
  17. package/app/modules/vgmodal/scss/vgmodal.css +3824 -0
  18. package/app/modules/vgmodal/scss/vgmodal.css.map +1 -0
  19. package/app/modules/vgnav/scss/vgnav.css +309 -0
  20. package/app/modules/vgnav/scss/vgnav.css.map +1 -0
  21. package/app/modules/vgnotify/scss/vgnotify.css +3 -0
  22. package/app/modules/vgnotify/scss/vgnotify.css.map +1 -0
  23. package/app/modules/vgrollup/js/vgrollup.js +10 -10
  24. package/app/modules/vgrollup/scss/vgrollup.css +41 -0
  25. package/app/modules/vgrollup/scss/vgrollup.css.map +1 -0
  26. package/app/modules/vgselect/js/vgselect.js +341 -0
  27. package/app/modules/vgselect/scss/_variables.scss +74 -0
  28. package/app/modules/vgselect/scss/vgselect.css +243 -0
  29. package/app/modules/vgselect/scss/vgselect.css.map +1 -0
  30. package/app/modules/vgselect/scss/vgselect.scss +216 -0
  31. package/app/modules/vgsidebar/js/vgsidebar.js +21 -9
  32. package/app/modules/vgsidebar/scss/vgsidebar.css +86 -0
  33. package/app/modules/vgsidebar/scss/vgsidebar.css.map +1 -0
  34. package/app/utils/js/components/alert.js +8 -0
  35. package/app/utils/js/components/animation.js +53 -0
  36. package/app/utils/js/components/backdrop.js +7 -5
  37. package/app/utils/js/dom/cookie.js +127 -0
  38. package/app/utils/js/dom/data.js +1 -1
  39. package/app/utils/js/dom/manipulator.js +9 -1
  40. package/app/utils/js/functions.js +20 -1
  41. package/app/utils/scss/default.css +275 -0
  42. package/app/utils/scss/default.css.map +1 -0
  43. package/app/utils/scss/variables.scss +5 -4
  44. package/build/vgapp.css +2 -0
  45. package/build/vgapp.css.map +1 -1
  46. package/build/vgapp.js +2 -1
  47. package/build/vgapp.js.LICENSE.txt +1 -0
  48. package/build/vgapp.js.map +1 -1
  49. package/index.js +9 -1
  50. package/package.json +1 -1
  51. package/app/modules/vgsidebar/js/!oldjs.txt +0 -143
  52. /package/app/modules/vgnotify/scss/{vgnotify.sass → vgnotify.scss} +0 -0
@@ -0,0 +1,341 @@
1
+ import BaseModule from "../../base-module";
2
+ import {isEmptyObj, mergeDeepObject, transliterate} from "../../../utils/js/functions";
3
+ import {Manipulator} from "../../../utils/js/dom/manipulator";
4
+ import EventHandler from "../../../utils/js/dom/event";
5
+
6
+ /**
7
+ * Constants
8
+ */
9
+ const NAME = 'select';
10
+ const NAME_KEY = 'vg.select';
11
+
12
+ const CLASS_NAME_CONTAINER = 'vg-select';
13
+ const CLASS_NAME_DROPDOWN = 'vg-select-dropdown';
14
+ const CLASS_NAME_LIST = 'vg-select-list';
15
+ const CLASS_NAME_OPTION = 'vg-select-list--option';
16
+ const CLASS_NAME_OPTGROUP = 'vg-select-list--optgroup';
17
+ const CLASS_NAME_OPTGROUP_TITLE = 'vg-select-list--optgroup-title';
18
+ const CLASS_NAME_CURRENT = 'vg-select-current';
19
+ const CLASS_NAME_SEARCH = 'vg-select-search';
20
+ const CLASS_NAME_SELECTED = 'selected';
21
+
22
+ const EVENT_KEY_CHANGE = `${NAME_KEY}.change`;
23
+
24
+ let observerTimout;
25
+
26
+ class VGSelect extends BaseModule {
27
+ constructor(element, params = {}) {
28
+ super(element, params);
29
+
30
+ this._params = this._getParams(element, mergeDeepObject({
31
+ search: false
32
+ }, params));
33
+ }
34
+
35
+ static get NAME() {
36
+ return NAME;
37
+ }
38
+
39
+ static get NAME_KEY() {
40
+ return NAME_KEY;
41
+ }
42
+
43
+ build(isRebuild, elm = null) {
44
+ const _this = this;
45
+ let element = this._element;
46
+
47
+ if (elm) element = elm;
48
+
49
+ if (element.dataset?.inited === 'true' && !isRebuild) {
50
+ return;
51
+ } else if (isRebuild) {
52
+ _this.destroy(element);
53
+ }
54
+
55
+ element.parentElement.style.position = 'relative';
56
+
57
+ let option_selected = element.options[element.selectedIndex].innerText,
58
+ options = element.options;
59
+
60
+ // Создаем основной элемент с классами селекта
61
+ let classes = Manipulator.get(element,'class'),
62
+ select = document.createElement('div');
63
+
64
+ classes = classes.split(' ');
65
+
66
+ for (const _class of classes) {
67
+ select.classList.add(_class)
68
+ }
69
+
70
+ if (Manipulator.has(element, 'disabled')) select.classList.add('disabled')
71
+
72
+ let elData = Manipulator.get(element);
73
+ if (!isEmptyObj(elData)) {
74
+ for (const key of Object.keys(elData)) {
75
+ Manipulator.set(select,'data-' + key, elData[key]);
76
+ }
77
+ }
78
+
79
+ // Создаем элемент с отображением выбранного варианта
80
+ let current = document.createElement('div');
81
+ current.classList.add(CLASS_NAME_CURRENT);
82
+ current.innerText = option_selected.trim();
83
+ select.append(current);
84
+
85
+ // Создаем элемент выпадающего списка
86
+ let dropdown = document.createElement('div');
87
+ dropdown.classList.add(CLASS_NAME_DROPDOWN);
88
+ select.append(dropdown);
89
+
90
+ // Создаем список и варианты селекта
91
+ let list = document.createElement('ul');
92
+ list.classList.add(CLASS_NAME_LIST);
93
+
94
+ let optGroup = element.querySelectorAll('optgroup');
95
+
96
+ if (optGroup.length) {
97
+ let isSelected = false;
98
+ [...optGroup].forEach(function (el) {
99
+ let olOptGroup = document.createElement('ol');
100
+ olOptGroup.classList.add(CLASS_NAME_OPTGROUP);
101
+
102
+ let liLabel = document.createElement('li');
103
+ liLabel.innerHTML = el.label.trim();
104
+ liLabel.classList.add(CLASS_NAME_OPTGROUP_TITLE)
105
+
106
+ olOptGroup.prepend(liLabel)
107
+
108
+ let optGroupOptions = el.querySelectorAll('option');
109
+
110
+ createLi(optGroupOptions, olOptGroup, isSelected);
111
+
112
+ list.append(olOptGroup);
113
+ isSelected = true;
114
+ });
115
+ } else {
116
+ let isSelected = false;
117
+ createLi(options, list, isSelected);
118
+ }
119
+
120
+ function createLi(options, list, isSelected) {
121
+ let i = 0;
122
+ for (const option of options) {
123
+ let li = document.createElement('li');
124
+
125
+ li.innerHTML = option.innerHTML.trim().replace(/<\/[^>]+(>|$)/g, "")
126
+ li.dataset.value = Manipulator.get(option, 'value');
127
+ li.classList.add(CLASS_NAME_OPTION);
128
+
129
+ let liData = Manipulator.get(option);
130
+ if (!isEmptyObj(liData)) {
131
+ for (const key of Object.keys(liData)) {
132
+ Manipulator.set(li, 'data-' + key, liData[key]);
133
+ }
134
+ }
135
+
136
+ if (i === element.selectedIndex && !isSelected) {
137
+ li.classList.add('selected');
138
+ }
139
+
140
+ if (Manipulator.has(option, 'disabled')) li.classList.add('disabled');
141
+ if (Manipulator.has(option, 'hidden')) li.classList.add('hidden');
142
+
143
+ list.append(li);
144
+
145
+ i++;
146
+ }
147
+ }
148
+
149
+ dropdown.append(list);
150
+
151
+ // Добавляем все созданный контейнер после селекта
152
+ element.insertAdjacentElement('afterend', select);
153
+
154
+ // помечаем элемент инициализированным
155
+ element.dataset.inited = 'true';
156
+
157
+ if (_this._params.search) {
158
+ this.search(select);
159
+ }
160
+
161
+ this._addEventListeners(select);
162
+ }
163
+
164
+ destroy(select) {
165
+ let element = select.nextElementSibling;
166
+
167
+ if (element) {
168
+ if (element.classList.contains(CLASS_NAME_CONTAINER)) {
169
+ element.remove();
170
+
171
+ select.selectedIndex = 0;
172
+ [...select.querySelectorAll('option')].forEach(function (el, index) {
173
+ if (el.hasAttribute('selected')) {
174
+ select.selectedIndex = index;
175
+ }
176
+ });
177
+ }
178
+ }
179
+ }
180
+
181
+ refresh(select) {
182
+ const _this = this;
183
+
184
+ let observer = new MutationObserver(() => {
185
+ clearTimeout(observerTimout);
186
+ observerTimout = setTimeout(() => {
187
+ _this.build(true, select);
188
+ }, 100);
189
+ });
190
+
191
+ observer.observe(select, {
192
+ attributeFilter: ['disabled', 'required', 'style', 'hidden'],
193
+ childList: true,
194
+ subtree: true,
195
+ characterDataOldValue: true,
196
+ });
197
+ }
198
+
199
+ search(select) {
200
+ const _this = this;
201
+
202
+ let dropdown = select.querySelector('.' + CLASS_NAME_DROPDOWN);
203
+
204
+ let search_container = document.createElement('div');
205
+ search_container.classList.add(CLASS_NAME_SEARCH);
206
+
207
+ let input = document.createElement('input');
208
+ input.setAttribute('name', 'vg-select-search');
209
+ input.setAttribute('type', 'text');
210
+ input.setAttribute('placeholder', 'Поиск...');
211
+
212
+ search_container.append(input);
213
+ dropdown.prepend(search_container);
214
+
215
+ search_container.querySelector('[name=vg-select-search]').addEventListener('keyup', (e) => {
216
+ e.preventDefault();
217
+
218
+ let el = e.target;
219
+
220
+ let selectList = el?.closest('.' + CLASS_NAME_DROPDOWN).querySelector('.' + CLASS_NAME_LIST);
221
+ if (selectList) {
222
+ let options = [...selectList.querySelectorAll('.' + CLASS_NAME_OPTION)],
223
+ optionsGroup = [...selectList.querySelectorAll('.' + CLASS_NAME_OPTGROUP)],
224
+ value = el?.value;
225
+
226
+ options = options.concat(optionsGroup);
227
+
228
+ for (const option of options) {
229
+ Manipulator.show(option);
230
+ }
231
+
232
+ if (value.length) {
233
+ value = value.trim();
234
+ value = value.toLowerCase();
235
+ value = transliterate(value, true);
236
+
237
+ for (const option of options) {
238
+ let text = option.innerText.toLowerCase();
239
+
240
+ if (text.indexOf(value) === -1) Manipulator.hide(option);
241
+ }
242
+ }
243
+ }
244
+ });
245
+ }
246
+
247
+ dispose() {
248
+ super.dispose();
249
+ }
250
+
251
+ _addEventListeners(select) {
252
+ const _this = this;
253
+
254
+ select.querySelector('.' + CLASS_NAME_CURRENT).onclick = function (e) {
255
+ let el = e.target,
256
+ container = el.closest('.' + CLASS_NAME_CONTAINER);
257
+
258
+ let selects = document.querySelectorAll('.' + CLASS_NAME_CONTAINER);
259
+ if (selects.length) {
260
+ for (const els of selects) {
261
+ if (els !== container) {
262
+ els?.classList.remove('show');
263
+ }
264
+ }
265
+ }
266
+
267
+ if (container.classList.contains('show')) {
268
+ container.classList.remove('show');
269
+ } else {
270
+ container.classList.add('show');
271
+
272
+ if (_this._params.search) {
273
+ let input = container.querySelector('input');
274
+ if (input) input.focus();
275
+ }
276
+ }
277
+
278
+ return false;
279
+ }
280
+
281
+ select.querySelectorAll('.' + CLASS_NAME_OPTION).forEach((option) => {
282
+ option.addEventListener('click', (e) => {
283
+ e.preventDefault();
284
+
285
+ let el = e.target;
286
+
287
+ if (!el.classList.contains('disabled')) {
288
+ let container = el.closest('.' + CLASS_NAME_CONTAINER),
289
+ options = container.querySelectorAll('.' + CLASS_NAME_OPTION);
290
+
291
+ if (options.length) {
292
+ for (const option of options) {
293
+ option.classList.remove('selected');
294
+ }
295
+ }
296
+
297
+ el.classList.add('selected');
298
+
299
+ container.querySelector('.' + CLASS_NAME_CURRENT).innerText = el.innerText;
300
+ container.classList.remove('show');
301
+
302
+ let select = container.previousSibling;
303
+ select.value = el.dataset.value;
304
+ EventHandler.trigger(select, EVENT_KEY_CHANGE)
305
+ }
306
+ });
307
+ });
308
+
309
+ window.addEventListener('click', function (e) {
310
+ if (!e?.target.closest('.' + CLASS_NAME_CONTAINER)) {
311
+ let selects = document.querySelectorAll('.' + CLASS_NAME_CONTAINER);
312
+ if (selects.length) {
313
+ for (const el of selects) {
314
+ el?.classList.remove('show');
315
+ }
316
+ }
317
+ }
318
+ });
319
+
320
+ [...document.querySelectorAll('form')].forEach(function (form) {
321
+ form.addEventListener("reset", function () {
322
+ form.querySelectorAll('select.vg-select').forEach(function (select) {
323
+ VGSelect.init(select, {}, true)
324
+ })
325
+ });
326
+ });
327
+ }
328
+
329
+ /**
330
+ * Инициализация
331
+ * @param element
332
+ * @param params
333
+ * @param isRebuild
334
+ */
335
+ static init(element, params = {}, isRebuild = false) {
336
+ const instance = VGSelect.getOrCreateInstance(element, params);
337
+ instance.build(isRebuild);
338
+ }
339
+ }
340
+
341
+ export default VGSelect;
@@ -0,0 +1,74 @@
1
+ $select-current-map: (
2
+ background-color: white,
3
+ color: black,
4
+ border-width: 1px,
5
+ border-style: solid,
6
+ border-color: #dddddd,
7
+ border-radius: 5px,
8
+ padding-left: 16px,
9
+ padding-right: 40px,
10
+ padding-top: 16px,
11
+ padding-bottom: 16px,
12
+ line-height: 1.1,
13
+ font-size: 16px,
14
+ z-index: 10,
15
+ ) !default;
16
+
17
+ $select-current-svg: '<svg aria-hidden="true" focusable="false" data-prefix="fa-light" data-icon="chevron-down" class="svg-inline--fa fa-chevron-down fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M4 181C7 178 12 176 16 176C20 176 24 177 27 180L224 362L421 180C428 174 438 175 444 181C450 188 449 198 443 204L235 396C229 401 219 401 213 396L5 204C-1 198 -2 188 4 181Z" fill="gray"/></svg>' !default;
18
+
19
+ $select-dropdown-map: (
20
+ background-color: white,
21
+ color: black,
22
+ border-width: 1px,
23
+ border-style: solid,
24
+ border-color: #dddddd,
25
+ border-radius: $border-radius,
26
+ box-shadow: 0 7px 12px 1px rgba(68, 68, 68, 0.11),
27
+ z-index: 15,
28
+ ) !default;
29
+
30
+ $select-list-map: (
31
+ background-color: transparent,
32
+ color: black,
33
+ padding-left: 8px,
34
+ padding-right: 8px,
35
+ padding-top: 8px,
36
+ padding-bottom: 8px,
37
+ border-bottom-width: 1px,
38
+ border-bottom-style: solid,
39
+ border-bottom-color: #f5f5f5,
40
+ ) !default;
41
+
42
+ $select-optgroup-map: (
43
+ background-color: transparent,
44
+ color: #fff,
45
+ padding-left: 8px,
46
+ padding-right: 8px,
47
+ padding-top: 8px,
48
+ padding-bottom: 8px,
49
+ border-bottom-width: 1px,
50
+ border-bottom-style: solid,
51
+ border-bottom-color: #838383,
52
+ ) !default;
53
+
54
+ $select-list-max-height: 286px !default;
55
+ $select-list-scrollbar-width: 6px !default;
56
+ $select-list-scrollbar-bg: #F5F5F5 !default;
57
+ $select-list-scrollbar-thumb: #999 !default;
58
+
59
+ $select-list-hover-map: (
60
+ background-color: #f7f7f7,
61
+ color: black,
62
+ border-bottom-color: #f5f5f5,
63
+ ) !default;
64
+
65
+ $select-optgroup-hover-map: (
66
+ background-color: #f7f7f7,
67
+ color: black,
68
+ border-bottom-color: #f5f5f5,
69
+ ) !default;
70
+
71
+ $select-search-map: (
72
+ background-color: #f2f2f2,
73
+ color: #000000
74
+ ) !default;
@@ -0,0 +1,243 @@
1
+ @charset "UTF-8";
2
+ /**
3
+ *--------------------------------------------------------------------------
4
+ * Модуль: VGSELECT
5
+ * Автор: Vegas DEV
6
+ * Лицензия: смотри LICENSE
7
+ *--------------------------------------------------------------------------
8
+ **/
9
+ select.vg-select {
10
+ position: absolute;
11
+ left: 0;
12
+ top: 0;
13
+ opacity: 0;
14
+ z-index: -1000;
15
+ width: 100%;
16
+ height: 100%;
17
+ display: inline-block;
18
+ visibility: hidden;
19
+ }
20
+
21
+ .vg-select {
22
+ --vg-select-current-background-color: white ;
23
+ --vg-select-current-color: black ;
24
+ --vg-select-current-border-width: 1px ;
25
+ --vg-select-current-border-style: solid ;
26
+ --vg-select-current-border-color: #dddddd ;
27
+ --vg-select-current-border-radius: 5px ;
28
+ --vg-select-current-padding-left: 16px ;
29
+ --vg-select-current-padding-right: 40px ;
30
+ --vg-select-current-padding-top: 16px ;
31
+ --vg-select-current-padding-bottom: 16px ;
32
+ --vg-select-current-line-height: 1.1 ;
33
+ --vg-select-current-font-size: 16px ;
34
+ --vg-select-current-z-index: 10 ;
35
+ --vg-select-dropdown-background-color: white ;
36
+ --vg-select-dropdown-color: black ;
37
+ --vg-select-dropdown-border-width: 1px ;
38
+ --vg-select-dropdown-border-style: solid ;
39
+ --vg-select-dropdown-border-color: #dddddd ;
40
+ --vg-select-dropdown-border-radius: 0.375rem ;
41
+ --vg-select-dropdown-box-shadow: 0 7px 12px 1px rgba(68, 68, 68, 0.11) ;
42
+ --vg-select-dropdown-z-index: 15 ;
43
+ --vg-select-list-background-color: transparent ;
44
+ --vg-select-list-color: black ;
45
+ --vg-select-list-padding-left: 8px ;
46
+ --vg-select-list-padding-right: 8px ;
47
+ --vg-select-list-padding-top: 8px ;
48
+ --vg-select-list-padding-bottom: 8px ;
49
+ --vg-select-list-border-bottom-width: 1px ;
50
+ --vg-select-list-border-bottom-style: solid ;
51
+ --vg-select-list-border-bottom-color: #f5f5f5 ;
52
+ --vg-select-optgroup-background-color: transparent ;
53
+ --vg-select-optgroup-color: #fff ;
54
+ --vg-select-optgroup-padding-left: 8px ;
55
+ --vg-select-optgroup-padding-right: 8px ;
56
+ --vg-select-optgroup-padding-top: 8px ;
57
+ --vg-select-optgroup-padding-bottom: 8px ;
58
+ --vg-select-optgroup-border-bottom-width: 1px ;
59
+ --vg-select-optgroup-border-bottom-style: solid ;
60
+ --vg-select-optgroup-border-bottom-color: #838383 ;
61
+ --vg-select-optgroup-hover-background-color: #f7f7f7 ;
62
+ --vg-select-optgroup-hover-color: black ;
63
+ --vg-select-optgroup-hover-border-bottom-color: #f5f5f5 ;
64
+ --vg-select-list-hover-background-color: #f7f7f7 ;
65
+ --vg-select-list-hover-color: black ;
66
+ --vg-select-list-hover-border-bottom-color: #f5f5f5 ;
67
+ --vg-select-search-background-color: #f2f2f2 ;
68
+ --vg-select-search-color: #000000 ;
69
+ --vg-select-list-max-height: 286px;
70
+ --vg-select-list-scrollbar-width: 6px;
71
+ --vg-select-list-scrollbar-bg: #F5F5F5;
72
+ --vg-select-list-scrollbar-thumb: #999;
73
+ position: relative;
74
+ }
75
+ .vg-select-current {
76
+ background-color: var(--vg-select-current-background-color);
77
+ color: var(--vg-select-current-color);
78
+ border-width: var(--vg-select-current-border-width);
79
+ border-style: var(--vg-select-current-border-style);
80
+ border-color: var(--vg-select-current-border-color);
81
+ border-radius: var(--vg-select-current-border-radius);
82
+ padding-left: var(--vg-select-current-padding-left);
83
+ padding-right: var(--vg-select-current-padding-right);
84
+ padding-top: var(--vg-select-current-padding-top);
85
+ padding-bottom: var(--vg-select-current-padding-bottom);
86
+ line-height: var(--vg-select-current-line-height);
87
+ font-size: var(--vg-select-current-font-size);
88
+ z-index: var(--vg-select-current-z-index);
89
+ box-sizing: border-box;
90
+ cursor: pointer;
91
+ outline: none;
92
+ position: relative;
93
+ z-index: var(--vg-select-current-z-index);
94
+ white-space: nowrap;
95
+ overflow: hidden;
96
+ text-overflow: ellipsis;
97
+ }
98
+ .vg-select-current:after {
99
+ content: "";
100
+ position: absolute;
101
+ right: 16px;
102
+ top: 50%;
103
+ transform: translateY(-50%);
104
+ transition: all 0.4s ease-in-out;
105
+ background-image: url('data:image/svg+xml, <svg aria-hidden="true" focusable="false" data-prefix="fa-light" data-icon="chevron-down" class="svg-inline--fa fa-chevron-down fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M4 181C7 178 12 176 16 176C20 176 24 177 27 180L224 362L421 180C428 174 438 175 444 181C450 188 449 198 443 204L235 396C229 401 219 401 213 396L5 204C-1 198 -2 188 4 181Z" fill="gray"/></svg>');
106
+ background-repeat: no-repeat;
107
+ width: 16px;
108
+ height: 16px;
109
+ }
110
+ .vg-select-dropdown {
111
+ background-color: var(--vg-select-dropdown-background-color);
112
+ color: var(--vg-select-dropdown-color);
113
+ border-width: var(--vg-select-dropdown-border-width);
114
+ border-style: var(--vg-select-dropdown-border-style);
115
+ border-color: var(--vg-select-dropdown-border-color);
116
+ border-radius: var(--vg-select-dropdown-border-radius);
117
+ box-shadow: var(--vg-select-dropdown-box-shadow);
118
+ z-index: var(--vg-select-dropdown-z-index);
119
+ position: absolute;
120
+ box-sizing: border-box;
121
+ opacity: 0;
122
+ overflow: hidden;
123
+ padding: 0;
124
+ top: 100%;
125
+ left: 0;
126
+ width: 100%;
127
+ height: 0;
128
+ pointer-events: auto;
129
+ transform-origin: 50% 0;
130
+ transform: scale(0.75) translateY(-11px);
131
+ transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
132
+ z-index: var(--vg-select-dropdown-z-index);
133
+ margin-top: 0.25rem;
134
+ }
135
+ .vg-select-list {
136
+ margin: 0;
137
+ padding: 0;
138
+ list-style: none;
139
+ display: flex;
140
+ flex-direction: column;
141
+ max-height: var(--vg-select-list-max-height);
142
+ overflow-y: auto;
143
+ }
144
+ .vg-select-list::-webkit-scrollbar-track {
145
+ -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
146
+ background-color: var(--vg-select-list-scrollbar-bg);
147
+ }
148
+ .vg-select-list::-webkit-scrollbar {
149
+ width: var(--vg-select-list-scrollbar-width);
150
+ background-color: var(--vg-select-list-scrollbar-bg);
151
+ }
152
+ .vg-select-list::-webkit-scrollbar-thumb {
153
+ background-color: var(--vg-select-list-scrollbar-thumb);
154
+ }
155
+ .vg-select-list--option {
156
+ background-color: var(--vg-select-list-background-color);
157
+ color: var(--vg-select-list-color);
158
+ padding-left: var(--vg-select-list-padding-left);
159
+ padding-right: var(--vg-select-list-padding-right);
160
+ padding-top: var(--vg-select-list-padding-top);
161
+ padding-bottom: var(--vg-select-list-padding-bottom);
162
+ border-bottom-width: var(--vg-select-list-border-bottom-width);
163
+ border-bottom-style: var(--vg-select-list-border-bottom-style);
164
+ border-bottom-color: var(--vg-select-list-border-bottom-color);
165
+ display: block;
166
+ width: 100%;
167
+ cursor: pointer;
168
+ transition: all 0.4s ease-in-out;
169
+ }
170
+ .vg-select-list--option:last-child {
171
+ border: none;
172
+ }
173
+ .vg-select-list--option:hover, .vg-select-list--option.selected {
174
+ background-color: var(--vg-select-list-hover-background-color);
175
+ color: var(--vg-select-list-hover-color);
176
+ border-bottom-color: var(--vg-select-list-hover-border-bottom-color);
177
+ }
178
+ .vg-select-list--option.disabled {
179
+ opacity: 0.6;
180
+ cursor: not-allowed;
181
+ }
182
+ .vg-select-list--option.hidden {
183
+ display: none !important;
184
+ }
185
+ .vg-select-list--optgroup {
186
+ list-style: none;
187
+ padding: 0;
188
+ }
189
+ .vg-select-list--optgroup + .vg-select-list--optgroup {
190
+ border-top-width: var(--vg-select-optgroup-border-bottom-width);
191
+ border-top-style: var(--vg-select-optgroup-border-bottom-style);
192
+ border-top-color: var(--vg-select-optgroup-border-bottom-color);
193
+ }
194
+ .vg-select-list--optgroup > li {
195
+ --vg-select-list-padding-left: 16px;
196
+ }
197
+ .vg-select-list--optgroup-title {
198
+ background-color: var(--vg-select-optgroup-background-color);
199
+ color: var(--vg-select-optgroup-color);
200
+ padding-left: var(--vg-select-optgroup-padding-left);
201
+ padding-right: var(--vg-select-optgroup-padding-right);
202
+ padding-top: var(--vg-select-optgroup-padding-top);
203
+ padding-bottom: var(--vg-select-optgroup-padding-bottom);
204
+ border-bottom-width: var(--vg-select-optgroup-border-bottom-width);
205
+ border-bottom-style: var(--vg-select-optgroup-border-bottom-style);
206
+ border-bottom-color: var(--vg-select-optgroup-border-bottom-color);
207
+ }
208
+ .vg-select-search input {
209
+ background-color: var(--vg-select-search-background-color);
210
+ color: var(--vg-select-search-color);
211
+ padding: 8px;
212
+ border: none;
213
+ outline: none;
214
+ width: 100%;
215
+ }
216
+ .vg-select.show .vg-select-current:after {
217
+ transform: translateY(-50%) rotate(180deg);
218
+ }
219
+ .vg-select.show .vg-select-dropdown {
220
+ transform: scale(1) translateY(0);
221
+ opacity: 1;
222
+ box-sizing: border-box;
223
+ height: auto;
224
+ }
225
+ .vg-select.is-invalid .vg-select-current {
226
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
227
+ background-repeat: no-repeat;
228
+ background-position: right calc(1.975em + 0.1875rem) center;
229
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
230
+ --vg-select-current-padding-right: 55px;
231
+ }
232
+ .vg-select.disabled:before {
233
+ content: "";
234
+ position: absolute;
235
+ width: 100%;
236
+ height: 100%;
237
+ z-index: 500;
238
+ }
239
+ .vg-select.disabled > .vg-select-current {
240
+ opacity: 0.75;
241
+ }
242
+
243
+ /*# sourceMappingURL=vgselect.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["vgselect.scss","../../../utils/scss/mixin.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;ECpBG;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ED4BF;EACA;EACA;EACA;EACA;;AAEA;EAEE;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EAEE;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EAEC;EACA;;AAGD;EAEC;;AAGD;EAEE;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAED;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EAEE;EAAA;EAAA;;AAIF;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EAEE;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;AAOH;EAEE;EAAA;EAED;EACA;EACA;EACA;;AAMA;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC","file":"vgselect.css"}