vgapp 1.4.2 → 1.4.4

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 (66) hide show
  1. package/README.md +251 -162
  2. package/app/modules/vgalert/scss/_variables.scss +6 -4
  3. package/app/modules/vgalert/scss/vgalert.scss +7 -8
  4. package/app/modules/vgcollapse/scss/_variables.scss +7 -5
  5. package/app/modules/vgcollapse/scss/vgcollapse.scss +5 -6
  6. package/app/modules/vgdropdown/scss/_variables.scss +14 -12
  7. package/app/modules/vgdropdown/scss/vgdropdown.scss +5 -6
  8. package/app/modules/vgdynamictable/scss/_actions.scss +19 -16
  9. package/app/modules/vgdynamictable/scss/_pagination.scss +5 -2
  10. package/app/modules/vgdynamictable/scss/_skeleton.scss +5 -2
  11. package/app/modules/vgdynamictable/scss/_sortable.scss +4 -1
  12. package/app/modules/vgdynamictable/scss/_table.scss +4 -1
  13. package/app/modules/vgdynamictable/scss/_variables.scss +46 -38
  14. package/app/modules/vgdynamictable/scss/vgdynamictable.scss +14 -10
  15. package/app/modules/vgfilepreview/scss/_variables.scss +20 -18
  16. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +4 -5
  17. package/app/modules/vgfiles/scss/_mixins.scss +9 -9
  18. package/app/modules/vgfiles/scss/_variables.scss +28 -26
  19. package/app/modules/vgfiles/scss/vgfiles.scss +13 -14
  20. package/app/modules/vgformsender/scss/_variables.scss +5 -3
  21. package/app/modules/vgformsender/scss/vgformsender.scss +8 -9
  22. package/app/modules/vglawcookie/scss/_variables.scss +13 -11
  23. package/app/modules/vglawcookie/scss/vglawcookie.scss +5 -6
  24. package/app/modules/vgmodal/scss/_variables.scss +17 -15
  25. package/app/modules/vgmodal/scss/vgmodal.scss +10 -11
  26. package/app/modules/vgnav/scss/_breakpoints.scss +36 -20
  27. package/app/modules/vgnav/scss/_hamburger.scss +5 -2
  28. package/app/modules/vgnav/scss/_placement.scss +5 -2
  29. package/app/modules/vgnav/scss/_toggle.scss +5 -2
  30. package/app/modules/vgnav/scss/_variables.scss +26 -23
  31. package/app/modules/vgnav/scss/vgnav.scss +20 -16
  32. package/app/modules/vgnestable/scss/_variables.scss +29 -27
  33. package/app/modules/vgnestable/scss/vgnestable.scss +4 -5
  34. package/app/modules/vgrangeslider/scss/_variables.scss +23 -21
  35. package/app/modules/vgrangeslider/scss/vgrangeslider.scss +4 -5
  36. package/app/modules/vgrollup/scss/_variables.scss +15 -8
  37. package/app/modules/vgrollup/scss/vgrollup.scss +6 -7
  38. package/app/modules/vgselect/scss/_variables.scss +50 -48
  39. package/app/modules/vgselect/scss/vgselect.scss +26 -27
  40. package/app/modules/vgsidebar/scss/_variables.scss +10 -8
  41. package/app/modules/vgsidebar/scss/vgsidebar.scss +5 -6
  42. package/app/modules/vgtabs/scss/_variables.scss +23 -20
  43. package/app/modules/vgtabs/scss/vgtabs.scss +5 -6
  44. package/app/modules/vgtoast/scss/_variables.scss +13 -11
  45. package/app/modules/vgtoast/scss/vgtoast.scss +5 -6
  46. package/app/modules/vgtooltip/scss/_variables.scss +10 -8
  47. package/app/modules/vgtooltip/scss/vgtooltip.scss +5 -6
  48. package/app/utils/scss/_backdrop.scss +19 -0
  49. package/app/utils/scss/_closable.scss +22 -0
  50. package/app/utils/scss/_collapsable.scss +13 -0
  51. package/app/utils/scss/_loaders.scss +22 -0
  52. package/app/utils/scss/_theme-default.scss +12 -0
  53. package/app/utils/scss/_theme.scss +7 -0
  54. package/app/utils/scss/_tokens.scss +170 -0
  55. package/app/utils/scss/default.scss +11 -78
  56. package/app/utils/scss/functions.scss +21 -39
  57. package/app/utils/scss/index.scss +4 -0
  58. package/app/utils/scss/mixin.scss +16 -13
  59. package/app/utils/scss/variables.scss +105 -77
  60. package/build/vgapp.css +2 -4492
  61. package/build/vgapp.css.map +1 -1
  62. package/build/vgapp.js +3 -32145
  63. package/index.scss +20 -23
  64. package/package.json +7 -1
  65. /package/app/utils/scss/{animation.scss → _animation.scss} +0 -0
  66. /package/app/utils/scss/{placement.scss → _placement.scss} +0 -0
package/README.md CHANGED
@@ -1,181 +1,270 @@
1
- # VEGAS APP (VGApp)
2
- [FUNC.TRUE?!](http://func-true.ru)
3
-
4
- VGApp — набор фронтенд‑модулей (UI‑компонентов и утилит) на чистом JavaScript от Vegas Studio.
5
- Проект объединяет типовые элементы интерфейса и сценарии (модалки, табы, формы, загрузка файлов и т.д.) с едиными подходами к инициализации, data‑API, событиям и локализации.
6
-
7
- [![npm](https://img.shields.io/npm/v/vgapp.svg?style=flat-square&maxAge=600)](https://www.npmjs.com/package/vgapp) [![npm](https://img.shields.io/npm/l/vgapp.svg?style=flat-square)]()
8
-
9
- ## Install
10
- ```
11
- npm i vgapp
12
- ```
13
-
14
- ## API
15
- ```js
16
- import vgapp from 'vgapp';
17
-
18
- vgapp.boot();
19
- ```
20
-
21
- - `vgapp` экспортируется как singleton app.
22
- - `vgapp.register()` использует единый контракт: `register(name, Module)`.
23
- - `vgapp.boot()` вызывает общий boot-контракт модуля.
24
- - У модулей со своим `initAll()` boot использует его автоматически.
25
-
26
- Для выборочного набора модулей создавайте отдельный экземпляр:
27
- ```js
28
- import { VGApp, VGModal, VGTooltip } from 'vgapp';
29
-
30
- const app = new VGApp();
31
-
32
- app
33
- .register(VGModal.NAME, VGModal)
34
- .register(VGTooltip.NAME, VGTooltip)
35
- .boot();
36
- ```
37
-
38
- ## Подключение
39
-
40
- ### Laravel + Vite
41
- `resources/js/app.js`
42
- ```js
43
- import vgapp from 'vgapp';
44
- import 'vgapp/build/vgapp.css';
45
-
46
- vgapp.boot();
47
- ```
48
-
49
- `vite.config.js`
50
- ```js
51
- import { defineConfig } from 'vite';
52
- import laravel from 'laravel-vite-plugin';
53
-
54
- export default defineConfig({
55
- plugins: [
56
- laravel([
57
- 'resources/css/app.css',
58
- 'resources/js/app.js',
59
- ]),
60
- ],
61
- });
62
- ```
63
-
64
- В Blade:
65
- ```php
66
- @vite(['resources/css/app.css', 'resources/js/app.js'])
67
- ```
68
-
69
- ### Vite
70
- `src/main.js`
71
- ```js
72
- import vgapp from 'vgapp';
73
- import 'vgapp/build/vgapp.css';
74
-
75
- vgapp.boot();
76
- ```
77
-
78
- ### Webpack
79
- `src/app.js`
80
- ```js
81
- import vgapp from 'vgapp';
82
- import 'vgapp/build/vgapp.css';
83
-
84
- vgapp.boot();
85
- ```
86
-
87
- Минимально в `webpack.config.js`:
88
- ```js
89
- module.exports = {
90
- entry: './src/app.js',
91
- module: {
92
- rules: [
93
- {
94
- test: /\.css$/i,
95
- use: ['style-loader', 'css-loader'],
96
- },
97
- ],
98
- },
99
- };
100
- ```
101
-
102
- ### Частичный boot
103
- Если не нужно поднимать весь реестр singleton-приложения:
104
- ```js
105
- import { VGApp, VGModal, VGTooltip } from 'vgapp';
106
- import 'vgapp/build/vgapp.css';
107
-
108
- const app = new VGApp();
109
-
110
- app
111
- .register(VGModal.NAME, VGModal)
112
- .register(VGTooltip.NAME, VGTooltip)
113
- .boot();
114
- ```
115
-
116
- ## Что умеет
117
-
118
- ### Общие возможности
119
- - Работает без jQuery, ориентирован на ES6+.
120
- - Поддерживает инициализацию через JS и `data-*` атрибуты.
121
- - События на DOM для интеграции и расширения поведения.
122
- - AJAX‑интеграция в ключевых модулях.
123
- - Локализация интерфейсных текстов.
124
- - Расширяемая архитектура модулей и рендереров.
125
-
126
- ### Основные модули
127
- - `VGAlert` — диалоги подтверждения и уведомления с поддержкой AJAX‑сценариев.
128
- - `VGCollapse` — сворачиваемые секции и аккордеоны с анимацией.
129
- - `VGDropdown` — выпадающие меню с гибким открытием и позиционированием.
130
- - `VGDynamicTable` — интерактивные таблицы с сортировкой, фильтрацией, remote-режимом и состоянием.
131
- - `VGFiles` — загрузка и управление файлами (dropzone, валидация, AJAX, сортировка).
132
- - `VGFilePreview` — предпросмотр файлов разных типов и действия по файлу (preview/download).
133
- - `VGFormSender` — отправка форм (AJAX/нативно), обработка состояний и ответов.
134
- - `VGLawCookie` — баннер cookies с сохранением выбора пользователя.
135
- - `VGLoadMore` — подгрузка контента кнопкой или при прокрутке.
136
- - `VGModal` — базовый модуль модальных окон.
137
- - `VGNav` — навигация и мобильное меню.
138
- - `VGNestable` — drag‑and‑drop вложенных списков с обновлением структуры.
139
- - `VGRangeSlider` — одиночные и диапазонные слайдеры со значениями, лимитами и синхронизацией полей.
140
- - `VGRollup` — ограничение контента по высоте/элементам с кнопкой разворота.
141
- - `VGSelect` — кастомный select с поиском, мультивыбором и i18n.
142
- - `VGSidebar` — боковые панели с управлением открытием/закрытием.
143
- - `VGSpy` — scroll‑spy для подсветки активных ссылок по секциям.
144
- - `VGTabs` — вкладки с переключением контента и поддержкой URL/hash.
1
+ # VEGAS APP (VGApp)
2
+ [FUNC.TRUE?!](http://func-true.ru)
3
+
4
+ VGApp — набор фронтенд‑модулей (UI‑компонентов и утилит) на чистом JavaScript от Vegas Studio.
5
+ Проект объединяет типовые элементы интерфейса и сценарии (модалки, табы, формы, загрузка файлов и т.д.) с едиными подходами к инициализации, data‑API, событиям и локализации.
6
+
7
+ [![npm](https://img.shields.io/npm/v/vgapp.svg?style=flat-square&maxAge=600)](https://www.npmjs.com/package/vgapp) [![npm](https://img.shields.io/npm/l/vgapp.svg?style=flat-square)]()
8
+
9
+ ## Что умеет
10
+
11
+ ### Общие возможности
12
+ - Работает без jQuery, ориентирован на ES6+.
13
+ - Поддерживает инициализацию через JS и `data-*` атрибуты.
14
+ - События на DOM для интеграции и расширения поведения.
15
+ - AJAX‑интеграция в ключевых модулях.
16
+ - Локализация интерфейсных текстов.
17
+ - Расширяемая архитектура модулей и рендереров.
18
+
19
+ ### Основные модули
20
+ - `VGAlert` — диалоги подтверждения и уведомления с поддержкой AJAX‑сценариев.
21
+ - `VGCollapse` сворачиваемые секции и аккордеоны с анимацией.
22
+ - `VGDropdown` выпадающие меню с гибким открытием и позиционированием.
23
+ - `VGDynamicTable` интерактивные таблицы с сортировкой, фильтрацией, remote-режимом и состоянием.
24
+ - `VGFiles` загрузка и управление файлами (dropzone, валидация, AJAX, сортировка).
25
+ - `VGFilePreview` — предпросмотр файлов разных типов и действия по файлу (preview/download).
26
+ - `VGFormSender` отправка форм (AJAX/нативно), обработка состояний и ответов.
27
+ - `VGLawCookie` — баннер cookies с сохранением выбора пользователя.
28
+ - `VGLoadMore` подгрузка контента кнопкой или при прокрутке.
29
+ - `VGModal` — базовый модуль модальных окон.
30
+ - `VGNav` навигация и мобильное меню.
31
+ - `VGNestable` — drag‑and‑drop вложенных списков с обновлением структуры.
32
+ - `VGRangeSlider` — одиночные и диапазонные слайдеры со значениями, лимитами и синхронизацией полей.
33
+ - `VGRollup` — ограничение контента по высоте/элементам с кнопкой разворота.
34
+ - `VGSelect` — кастомный select с поиском, мультивыбором и i18n.
35
+ - `VGSidebar` — боковые панели с управлением открытием/закрытием.
36
+ - `VGSpy` — scroll‑spy для подсветки активных ссылок по секциям.
37
+ - `VGTabs` — вкладки с переключением контента и поддержкой URL/hash.
145
38
  - `VGToast` — всплывающие уведомления со стеком и автозакрытием.
146
39
  - `VGTooltip` — tooltip/popover подсказки с Data API, автопозиционированием и закрытием по `Esc`/клику вне элемента.
147
40
 
148
- ### VGSelect: автоматический поиск
41
+ ## Install
42
+ ```
43
+ npm i vgapp
44
+ ```
45
+
46
+ ## API
47
+ ```js
48
+ import vgapp from 'vgapp';
49
+
50
+ vgapp.boot();
51
+ ```
149
52
 
150
- По умолчанию `autosearch: true`: поле поиска автоматически появляется, если в `<select>` больше 7 непустых видимых опций. Число вместо `true` задаёт собственный порог:
53
+ - `vgapp` экспортируется как singleton app.
54
+ - `vgapp.register()` использует единый контракт: `register(name, Module)`.
55
+ - `vgapp.boot()` вызывает общий boot-контракт модуля.
56
+ - У модулей со своим `initAll()` boot использует его автоматически.
151
57
 
58
+ Для выборочного набора модулей создавайте отдельный экземпляр:
152
59
  ```js
153
- VGSelect.init(select, { autosearch: 10 }); // поиск появится при 11+ опциях
154
- VGSelect.init(select, { autosearch: 15 }); // поиск появится при 16+ опциях
155
- VGSelect.init(select, { autosearch: false }); // автоматический поиск отключён
60
+ import { VGApp, VGModal, VGTooltip } from 'vgapp';
61
+
62
+ const app = new VGApp();
63
+
64
+ app
65
+ .register(VGModal.NAME, VGModal)
66
+ .register(VGTooltip.NAME, VGTooltip)
67
+ .boot();
156
68
  ```
157
69
 
158
- Ручное включение поиска не зависит от количества опций и имеет приоритет над `autosearch`:
70
+ ## Подключение
71
+
72
+ ### Laravel + Vite
73
+ `resources/js/app.js`
74
+ ```js
75
+ import vgapp from 'vgapp';
76
+ import 'vgapp/build/vgapp.css';
77
+
78
+ vgapp.boot();
79
+ ```
159
80
 
81
+ `vite.config.js`
160
82
  ```js
161
- VGSelect.init(select, {
162
- search: { enabled: true }, // поиск будет виден даже для двух опций
83
+ import { defineConfig } from 'vite';
84
+ import laravel from 'laravel-vite-plugin';
85
+
86
+ export default defineConfig({
87
+ plugins: [
88
+ laravel([
89
+ 'resources/css/app.css',
90
+ 'resources/js/app.js',
91
+ ]),
92
+ ],
163
93
  });
164
94
  ```
165
95
 
166
- `search.remote: true` также всегда включает поле поиска: remote-режим не зависит от количества локальных опций.
96
+ В Blade:
97
+ ```php
98
+ @vite(['resources/css/app.css', 'resources/js/app.js'])
99
+ ```
100
+
101
+ ### Vite
102
+ `src/main.js`
103
+ ```js
104
+ import vgapp from 'vgapp';
105
+ import 'vgapp/build/vgapp.css';
106
+
107
+ vgapp.boot();
108
+ ```
109
+
110
+ ### Webpack
111
+ `src/app.js`
112
+ ```js
113
+ import vgapp from 'vgapp';
114
+ import 'vgapp/build/vgapp.css';
115
+
116
+ vgapp.boot();
117
+ ```
118
+
119
+ Минимально в `webpack.config.js`:
120
+ ```js
121
+ module.exports = {
122
+ entry: './src/app.js',
123
+ module: {
124
+ rules: [
125
+ {
126
+ test: /\.css$/i,
127
+ use: ['style-loader', 'css-loader'],
128
+ },
129
+ ],
130
+ },
131
+ };
132
+ ```
167
133
 
168
- Те же настройки через Data API:
134
+ ### Частичный boot
135
+ Если не нужно поднимать весь реестр singleton-приложения:
136
+ ```js
137
+ import { VGApp, VGModal, VGTooltip } from 'vgapp';
138
+ import 'vgapp/build/vgapp.css';
139
+
140
+ const app = new VGApp();
141
+
142
+ app
143
+ .register(VGModal.NAME, VGModal)
144
+ .register(VGTooltip.NAME, VGTooltip)
145
+ .boot();
146
+ ```
147
+
148
+ ## Темы и SCSS-токены
149
+
150
+ VGApp использует семантические CSS-переменные с префиксом `--vg-`. Значения переменных формируются из SCSS-карт `$theme-light` и `$theme-dark`, расположенных в `app/utils/scss/_tokens.scss`.
151
+
152
+ Светлая тема используется по умолчанию. Явно выбрать тему можно атрибутом `data-vg-theme` на `<html>`:
153
+
154
+ ```html
155
+ <html data-vg-theme="light">
156
+ ```
169
157
 
170
158
  ```html
171
- <select class="vg-select" data-autosearch="10">...</select>
172
- <select class="vg-select" data-search-enabled="true">...</select>
173
- <select class="vg-select" data-search-remote="true" data-search-route="/api/search">...</select>
159
+ <html data-vg-theme="dark">
174
160
  ```
175
161
 
162
+ Атрибут также можно установить на отдельный контейнер, чтобы изменить тему только внутри него:
163
+
164
+ ```html
165
+ <section data-vg-theme="dark">
166
+ <!-- Компоненты внутри секции используют тёмную тему -->
167
+ </section>
168
+ ```
169
+
170
+ Тему можно переключать во время работы приложения:
171
+
172
+ ```js
173
+ document.documentElement.dataset.vgTheme = 'dark';
174
+ ```
175
+
176
+ `data-vg-theme` — стандартный адаптер готового `vgapp.css`, а не обязательный механизм темы сайта. При сборке из SCSS карты и генератор можно подключить к селекторам основного проекта:
177
+
178
+ ```scss
179
+ @use "vgapp/theme" as vg-theme;
180
+
181
+ [data-bs-theme="light"] {
182
+ @include vg-theme.theme-variables(vg-theme.$theme-light);
183
+ }
184
+
185
+ [data-bs-theme="dark"] {
186
+ @include vg-theme.theme-variables(vg-theme.$theme-dark);
187
+ }
188
+ ```
189
+
190
+ Таким же способом можно использовать `data-ox-theme`, класс `.dark` или любой другой селектор. VGApp генерирует только переменные с префиксом `--vg-` и не меняет глобальный `color-scheme` проекта.
191
+
192
+ ### Структура карт
193
+
194
+ Карты содержат не названия конкретных компонентов, а общие семантические роли:
195
+
196
+ - фон страницы и поверхности компонентов;
197
+ - обычный, акцентный, вторичный, disabled и контрастный текст;
198
+ - обычные, усиленные и disabled-границы;
199
+ - primary-цвет и его состояния;
200
+ - тени и backdrop;
201
+ - цвета состояний `success`, `warning`, `danger` и `info`.
202
+
203
+ У `$theme-light` и `$theme-dark` должен быть одинаковый набор ключей. Значения этих ключей для каждой темы могут отличаться.
204
+
205
+ ### Добавление нового токена
206
+
207
+ Например, чтобы добавить secondary-цвет и цвет focus-ring, нужно расширить обе карты:
208
+
209
+ ```scss
210
+ $theme-light: (
211
+ // Существующие токены...
212
+ secondary-color: #6b7280,
213
+ secondary-hover-color: #4b5563,
214
+ focus-ring-color: rgba(0, 101, 255, .35),
215
+ );
216
+
217
+ $theme-dark: (
218
+ // Существующие токены...
219
+ secondary-color: #a7a7a7,
220
+ secondary-hover-color: #d1d1d1,
221
+ focus-ring-color: rgba(110, 168, 254, .45),
222
+ );
223
+ ```
224
+
225
+ Генератор темы автоматически создаст CSS-переменные:
226
+
227
+ ```css
228
+ --vg-secondary-color: ...;
229
+ --vg-secondary-hover-color: ...;
230
+ --vg-focus-ring-color: ...;
231
+ ```
232
+
233
+ После этого токены можно использовать в компонентах:
234
+
235
+ ```scss
236
+ .vg-control {
237
+ color: var(--vg-secondary-color);
238
+
239
+ &:hover {
240
+ color: var(--vg-secondary-hover-color);
241
+ }
242
+
243
+ &:focus-visible {
244
+ box-shadow: 0 0 0 3px var(--vg-focus-ring-color);
245
+ }
246
+ }
247
+ ```
248
+
249
+ При миграции существующего значения следует указывать fallback светлой темы. Благодаря этому отдельный SCSS-вход компонента продолжит работать, даже если базовый файл темы не был подключён:
250
+
251
+ ```scss
252
+ border-color: var(--vg-border-color, rgba(0, 0, 0, .2));
253
+ background: var(--vg-surface-bg, #ffffff);
254
+ ```
255
+
256
+ ### Правила именования
257
+
258
+ - Токен должен описывать назначение, например `surface-hover-bg`, а не конкретное значение вроде `gray-100`.
259
+ - Общие токены не должны содержать название компонента. Настройки конкретного компонента остаются в его собственной SCSS-карте.
260
+ - Новый ключ необходимо добавлять одновременно в `$theme-light` и `$theme-dark`.
261
+ - Компоненты должны использовать `var(--vg-...)`, чтобы тема могла переключаться без повторной сборки CSS.
262
+
263
+ CSS-переменные темы генерируются в `app/utils/scss/_theme.scss` и подключаются через базовый `default.scss` и полную SCSS-сборку. Все SCSS-компоненты VGApp переведены на модульную систему Sass, семантические токены и публичные настраиваемые карты.
264
+
176
265
  ## Authors
177
-
178
- [VEGAS STUDIO](https://vegas-dev.com) Russia
179
-
180
- ## License
181
- Is published under the [MIT license](http://www.opensource.org/licenses/mit-license)
266
+
267
+ [VEGAS STUDIO](https://vegas-dev.com) Russia
268
+
269
+ ## License
270
+ Is published under the [MIT license](http://www.opensource.org/licenses/mit-license)
@@ -1,14 +1,16 @@
1
+ @use "../../../utils/scss" as vg;
2
+
1
3
  $alert-map: (
2
4
  overlay-z-index: 1,
3
5
  overlay-backdrop-bg: rgba(0, 0, 0, 0),
4
- overlay-backdrop-show-bg: rgba(0, 0, 0, 0.25),
6
+ overlay-backdrop-show-bg: var(--vg-backdrop-subtle-color, rgba(0, 0, 0, .25)),
5
7
  overlay-backdrop-transition: background-color .05s linear,
6
- overlay-wrapper-bg: #fff,
8
+ overlay-wrapper-bg: var(--vg-surface-bg, #{vg.$surface-bg}),
7
9
  overlay-wrapper-width: 90%,
8
10
  overlay-wrapper-top: 1rem,
9
11
  overlay-wrapper-start: 50%,
10
12
  overlay-wrapper-transform: translate(-50%, -1rem),
11
13
  overlay-wrapper-show-transform: translate(-50%, 0),
12
14
  overlay-wrapper-transition: transform .12s ease-out,
13
- buttons-bg: #F5F5F5,
14
- );
15
+ buttons-bg: var(--vg-surface-muted-bg, #{vg.$surface-muted-bg}),
16
+ ) !default;
@@ -6,10 +6,9 @@
6
6
  *--------------------------------------------------------------------------
7
7
  **/
8
8
 
9
- @import "../../../utils/scss/functions";
10
- @import "../../../utils/scss/mixin";
11
- @import "../../../utils/scss/variables";
12
- @import "variables";
9
+ @forward "variables";
10
+ @use "../../../utils/scss" as vg;
11
+ @use "variables" as vars;
13
12
 
14
13
  .vg-alert {
15
14
  &-modal {
@@ -19,7 +18,7 @@
19
18
  }
20
19
 
21
20
  &-overlay {
22
- @include mix-vars('alert', $alert-map);
21
+ @include vg.mix-vars('alert', vars.$alert-map);
23
22
  width: 100%;
24
23
  height: 100%;
25
24
  position: absolute;
@@ -111,9 +110,9 @@
111
110
  }
112
111
 
113
112
  &-wrapper {
114
- @include mix-vars('alert', $alert-map);
115
- @include mix-alert-color-mode($class: vg-alert);
116
- border-radius: var(--vg-border-radius);
113
+ @include vg.mix-vars('alert', vars.$alert-map);
114
+ @include vg.mix-alert-color-mode($class: vg-alert);
115
+ border-radius: var(--vg-border-radius, #{vg.$border-radius});
117
116
  overflow: hidden;
118
117
 
119
118
  .vg-alert-content {
@@ -1,5 +1,7 @@
1
- $collapse-accordion-map: (
2
- border: 1px solid $border-color,
3
- border-radius: $border-radius,
4
- padding: 1rem
5
- );
1
+ @use "../../../utils/scss" as vg;
2
+
3
+ $collapse-accordion-map: (
4
+ border: vg.$border-width vg.$border-style var(--vg-border-color, #{vg.$border-color}),
5
+ border-radius: vg.$border-radius,
6
+ padding: 1rem
7
+ ) !default;
@@ -6,14 +6,13 @@
6
6
  *--------------------------------------------------------------------------
7
7
  **/
8
8
 
9
- @import "../../../utils/scss/functions";
10
- @import "../../../utils/scss/mixin";
11
- @import "../../../utils/scss/variables";
12
- @import "variables";
9
+ @forward "variables";
10
+ @use "../../../utils/scss" as vg;
11
+ @use "variables" as vars;
13
12
 
14
13
 
15
14
  .vg-accordion {
16
- @include mix-vars('accordion', $collapse-accordion-map);
15
+ @include vg.mix-vars('accordion', vars.$collapse-accordion-map);
17
16
  position: relative;
18
17
  border: var(--vg-accordion-border);
19
18
  border-radius: var(--vg-accordion-border-radius);
@@ -38,4 +37,4 @@
38
37
  display: block;
39
38
  padding: var(--vg-accordion-padding);
40
39
  }
41
- }
40
+ }
@@ -1,12 +1,14 @@
1
- $dropdown-map: (
2
- bg-color: $bg-color,
3
- color: $color,
4
- box-shadow: $box-shadow,
5
- border-width: 1px,
6
- border-style: solid,
7
- border-color: $border-color,
8
- border-radius: $border-radius,
9
- z-index: $dropdown-index,
10
- transition: $transition-base,
11
- min-width: 225px
12
- );
1
+ @use "../../../utils/scss" as vg;
2
+
3
+ $dropdown-map: (
4
+ bg-color: var(--vg-surface-bg, #{vg.$surface-bg}),
5
+ color: var(--vg-text-color, #{vg.$color}),
6
+ box-shadow: var(--vg-box-shadow, #{vg.$box-shadow}),
7
+ border-width: vg.$border-width,
8
+ border-style: vg.$border-style,
9
+ border-color: var(--vg-border-color, #{vg.$border-color}),
10
+ border-radius: vg.$border-radius,
11
+ z-index: vg.$dropdown-index,
12
+ transition: vg.$transition-base,
13
+ min-width: 225px
14
+ ) !default;
@@ -6,14 +6,13 @@
6
6
  *--------------------------------------------------------------------------
7
7
  **/
8
8
 
9
- @import "../../../utils/scss/functions";
10
- @import "../../../utils/scss/mixin";
11
- @import "../../../utils/scss/variables";
12
- @import "variables";
9
+ @forward "variables";
10
+ @use "../../../utils/scss" as vg;
11
+ @use "variables" as vars;
13
12
 
14
13
  .vg-dropdown {
15
14
  position: relative;
16
- @include mix-vars('dropdown', $dropdown-map);
15
+ @include vg.mix-vars('dropdown', vars.$dropdown-map);
17
16
 
18
17
  &-content {
19
18
  z-index: var(--vg-dropdown-z-index);
@@ -78,4 +77,4 @@
78
77
  border-radius: var(--vg-dropdown-border-radius);
79
78
  box-shadow: var(--vg-dropdown-box-shadow);
80
79
  }
81
- }
80
+ }
@@ -1,4 +1,5 @@
1
- [data-table-state] {
1
+ @mixin actions() {
2
+ [data-table-state] {
2
3
  text-align: center;
3
4
  padding: 18px 14px;
4
5
  vertical-align: middle;
@@ -66,12 +67,12 @@ tbody tr[data-row-dragging="1"] {
66
67
  opacity: 0.55;
67
68
  }
68
69
 
69
- tbody tr[data-row-drag-over="before"] {
70
- box-shadow: inset 0 2px 0 #3f8cff;
71
- }
72
-
73
- tbody tr[data-row-drag-over="after"] {
74
- box-shadow: inset 0 -2px 0 #3f8cff;
70
+ tbody tr[data-row-drag-over="before"] {
71
+ box-shadow: inset 0 2px 0 var(--vg-dynamic-table-actions-drag-indicator);
72
+ }
73
+
74
+ tbody tr[data-row-drag-over="after"] {
75
+ box-shadow: inset 0 -2px 0 var(--vg-dynamic-table-actions-drag-indicator);
75
76
  }
76
77
 
77
78
  .vgdt-row-reorder-cell {
@@ -103,19 +104,19 @@ tbody tr[data-row-drag-over="after"] {
103
104
  gap: 6px;
104
105
  }
105
106
 
106
- .vgdt-row-action {
107
- border: 1px solid #a22929;
108
- background: transparent;
109
- color: #a22929;
107
+ .vgdt-row-action {
108
+ border: 1px solid var(--vg-dynamic-table-actions-danger-color);
109
+ background: transparent;
110
+ color: var(--vg-dynamic-table-actions-danger-color);
110
111
  border-radius: 8px;
111
112
  padding: 5px 10px;
112
113
  font-size: 12px;
113
114
  cursor: pointer;
114
115
  }
115
116
 
116
- .vgdt-row-action:hover {
117
- background: #a22929;
118
- color: #fff;
117
+ .vgdt-row-action:hover {
118
+ background: var(--vg-dynamic-table-actions-danger-color);
119
+ color: var(--vg-dynamic-table-actions-danger-contrast);
119
120
  }
120
121
 
121
122
  .vgdt-pan-hint {
@@ -184,10 +185,12 @@ tbody tr[data-row-drag-over="after"] {
184
185
  }
185
186
  }
186
187
 
187
- @media (hover: none), (pointer: coarse), (any-pointer: coarse), (any-hover: none) {
188
+ @media (hover: none), (pointer: coarse), (any-pointer: coarse), (any-hover: none) {
188
189
  .vgdt-pan-hint {
189
190
  display: none !important;
190
191
  }
191
- }
192
+ }
193
+
194
+ }
192
195
 
193
196
 
@@ -1,4 +1,5 @@
1
- &.table-pagination {
1
+ @mixin pagination() {
2
+ &.table-pagination {
2
3
  .vgdt-pagination {
3
4
  padding: var(--vg-dynamic-table-pagination-padding-y) var(--vg-dynamic-table-pagination-padding-x);
4
5
  border-top: 1px solid var(--vg-dynamic-table-pagination-border-color);
@@ -179,5 +180,7 @@
179
180
  .vgdt-page--ellipsis:hover .vgdt-ellipsis-chevron {
180
181
  display: inline;
181
182
  }
182
- }
183
+ }
184
+
185
+ }
183
186