vgapp 1.2.4 → 1.2.6

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 (51) hide show
  1. package/CHANGELOG.md +66 -7
  2. package/README.md +2 -1
  3. package/agents.md +2 -2
  4. package/app/modules/base-module.js +87 -10
  5. package/app/modules/vgalert/js/vgalert.js +133 -202
  6. package/app/modules/vgalert/readme.md +105 -46
  7. package/app/modules/vgalert/scss/vgalert.scss +18 -0
  8. package/app/modules/vgdynamictable/index.js +5 -0
  9. package/app/modules/vgdynamictable/js/editable.js +438 -0
  10. package/app/modules/vgdynamictable/js/expandable.js +248 -0
  11. package/app/modules/vgdynamictable/js/filters.js +450 -0
  12. package/app/modules/vgdynamictable/js/fixed.js +566 -0
  13. package/app/modules/vgdynamictable/js/options.js +646 -0
  14. package/app/modules/vgdynamictable/js/pagination.js +623 -0
  15. package/app/modules/vgdynamictable/js/search.js +82 -0
  16. package/app/modules/vgdynamictable/js/skeleton.js +136 -0
  17. package/app/modules/vgdynamictable/js/sortable.js +442 -0
  18. package/app/modules/vgdynamictable/js/summary-footer.js +284 -0
  19. package/app/modules/vgdynamictable/js/table-remote.js +821 -0
  20. package/app/modules/vgdynamictable/js/table-state.js +243 -0
  21. package/app/modules/vgdynamictable/js/table-url-state.js +444 -0
  22. package/app/modules/vgdynamictable/js/utils/common.js +48 -0
  23. package/app/modules/vgdynamictable/js/vgdynamictable.js +3829 -0
  24. package/app/modules/vgdynamictable/js/viewport.js +322 -0
  25. package/app/modules/vgdynamictable/readme.md +251 -0
  26. package/app/modules/vgdynamictable/scss/_actions.scss +193 -0
  27. package/app/modules/vgdynamictable/scss/_pagination.scss +183 -0
  28. package/app/modules/vgdynamictable/scss/_skeleton.scss +60 -0
  29. package/app/modules/vgdynamictable/scss/_sortable.scss +63 -0
  30. package/app/modules/vgdynamictable/scss/_table.scss +157 -0
  31. package/app/modules/vgdynamictable/scss/_variables.scss +130 -0
  32. package/app/modules/vgdynamictable/scss/vgdynamictable.scss +267 -0
  33. package/app/modules/vgrangeslider/index.js +3 -0
  34. package/app/modules/vgrangeslider/js/skins.js +222 -0
  35. package/app/modules/vgrangeslider/js/vgrangeslider.js +704 -0
  36. package/app/modules/vgrangeslider/readme.md +523 -0
  37. package/app/modules/vgrangeslider/scss/_variables.scss +53 -0
  38. package/app/modules/vgrangeslider/scss/vgrangeslider.scss +240 -0
  39. package/app/modules/vgtoast/js/vgtoast.js +111 -111
  40. package/app/modules/vgtooltip/index.js +3 -0
  41. package/app/modules/vgtooltip/js/vgtooltip.js +493 -0
  42. package/app/modules/vgtooltip/readme.md +181 -0
  43. package/app/modules/vgtooltip/scss/_variables.scss +15 -0
  44. package/app/modules/vgtooltip/scss/vgtooltip.scss +64 -0
  45. package/app/utils/js/components/ajax.js +116 -7
  46. package/app/utils/js/components/placement.js +112 -41
  47. package/build/vgapp.css +1 -1
  48. package/build/vgapp.css.map +1 -1
  49. package/index.js +20 -17
  50. package/index.scss +9 -0
  51. package/package.json +1 -1
@@ -0,0 +1,240 @@
1
+ /**
2
+ *--------------------------------------------------------------------------
3
+ * Module: VGRangeSlider
4
+ *--------------------------------------------------------------------------
5
+ **/
6
+
7
+ @import "../../../utils/scss/functions";
8
+ @import "../../../utils/scss/mixin";
9
+ @import "../../../utils/scss/variables";
10
+ @import "variables";
11
+
12
+ .vg-range-slider {
13
+ @include mix-vars('range-slider', $range-slider-map);
14
+
15
+ --vg-range-slider-ruler-height: calc(
16
+ var(--vg-range-slider-ruler-mark-height) +
17
+ var(--vg-range-slider-ruler-label-offset) +
18
+ (var(--vg-range-slider-ruler-label-font-size) * var(--vg-range-slider-ruler-label-line-height))
19
+ );
20
+ --vg-range-slider-ruler-offset-y: calc(var(--vg-range-slider-ruler-gap-y) * -1);
21
+ --vg-range-slider-wrapper-padding-bottom-ruler: calc(
22
+ var(--vg-range-slider-ruler-height) + var(--vg-range-slider-ruler-gap-y)
23
+ );
24
+
25
+ position: relative;
26
+ display: grid;
27
+ gap: var(--vg-range-slider-gap);
28
+ color: var(--vg-range-slider-text);
29
+
30
+ &.disabled {
31
+ opacity: .65;
32
+ }
33
+
34
+ &__wrapper {
35
+ position: relative;
36
+ min-height: var(--vg-range-slider-wrapper-min-height);
37
+ padding: var(--vg-range-slider-wrapper-padding-top) 0 var(--vg-range-slider-wrapper-padding-bottom);
38
+ }
39
+
40
+ &.is-skin-ruler {
41
+ .vg-range-slider__wrapper {
42
+ padding-bottom: var(--vg-range-slider-wrapper-padding-bottom-ruler);
43
+ }
44
+
45
+ .vg-range-slider__labels {
46
+ display: none;
47
+ }
48
+ }
49
+
50
+ &.is-ruler-dim-inactive {
51
+ .vg-range-slider__ruler-item {
52
+ opacity: var(--vg-range-slider-ruler-inactive-opacity);
53
+ }
54
+
55
+ .vg-range-slider__ruler-item.is-active {
56
+ opacity: var(--vg-range-slider-ruler-active-opacity);
57
+ }
58
+ }
59
+
60
+ &.is-skin-status {
61
+ &.is-status-success {
62
+ --vg-range-slider-fill: var(--vg-range-slider-status-success);
63
+ --vg-range-slider-thumb-border: var(--vg-range-slider-status-success);
64
+ --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-success);
65
+ --vg-range-slider-tooltip-color: var(--vg-range-slider-status-success-contrast);
66
+ }
67
+
68
+ &.is-status-warning {
69
+ --vg-range-slider-fill: var(--vg-range-slider-status-warning);
70
+ --vg-range-slider-thumb-border: var(--vg-range-slider-status-warning);
71
+ --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-warning);
72
+ --vg-range-slider-tooltip-color: var(--vg-range-slider-status-warning-contrast);
73
+ }
74
+
75
+ &.is-status-danger {
76
+ --vg-range-slider-fill: var(--vg-range-slider-status-danger);
77
+ --vg-range-slider-thumb-border: var(--vg-range-slider-status-danger);
78
+ --vg-range-slider-tooltip-bg: var(--vg-range-slider-status-danger);
79
+ --vg-range-slider-tooltip-color: var(--vg-range-slider-status-danger-contrast);
80
+ }
81
+ }
82
+
83
+ &__track,
84
+ &__fill {
85
+ position: absolute;
86
+ top: 50%;
87
+ transform: translateY(-50%);
88
+ height: var(--vg-range-slider-height);
89
+ border-radius: var(--vg-range-slider-radius);
90
+ }
91
+
92
+ &__track {
93
+ left: 0;
94
+ right: 0;
95
+ z-index: var(--vg-range-slider-z-track);
96
+ background: var(--vg-range-slider-bg);
97
+ }
98
+
99
+ &__fill {
100
+ left: 0;
101
+ width: 0;
102
+ z-index: var(--vg-range-slider-z-fill);
103
+ background: var(--vg-range-slider-fill);
104
+ }
105
+
106
+ &__input {
107
+ position: absolute;
108
+ top: 50%;
109
+ left: 0;
110
+ width: 100%;
111
+ height: var(--vg-range-slider-input-height);
112
+ transform: translateY(-50%);
113
+ margin: 0;
114
+ background: transparent;
115
+ pointer-events: none;
116
+ z-index: var(--vg-range-slider-z-input);
117
+ appearance: none;
118
+ -webkit-appearance: none;
119
+
120
+ &::-webkit-slider-runnable-track {
121
+ height: var(--vg-range-slider-height);
122
+ background: transparent;
123
+ }
124
+
125
+ &::-moz-range-track {
126
+ height: var(--vg-range-slider-height);
127
+ background: transparent;
128
+ }
129
+
130
+ &::-webkit-slider-thumb {
131
+ width: var(--vg-range-slider-thumb-size);
132
+ height: var(--vg-range-slider-thumb-size);
133
+ margin-top: calc((var(--vg-range-slider-height) - var(--vg-range-slider-thumb-size)) / 2);
134
+ border: var(--vg-range-slider-thumb-border-width) solid var(--vg-range-slider-thumb-border);
135
+ border-radius: 50%;
136
+ background: var(--vg-range-slider-thumb);
137
+ box-shadow: var(--vg-range-slider-thumb-shadow);
138
+ cursor: pointer;
139
+ pointer-events: auto;
140
+ appearance: none;
141
+ -webkit-appearance: none;
142
+ }
143
+
144
+ &::-moz-range-thumb {
145
+ width: var(--vg-range-slider-thumb-size);
146
+ height: var(--vg-range-slider-thumb-size);
147
+ border: var(--vg-range-slider-thumb-border-width) solid var(--vg-range-slider-thumb-border);
148
+ border-radius: 50%;
149
+ background: var(--vg-range-slider-thumb);
150
+ box-shadow: var(--vg-range-slider-thumb-shadow);
151
+ cursor: pointer;
152
+ pointer-events: auto;
153
+ }
154
+
155
+ &:focus {
156
+ outline: none;
157
+ }
158
+ }
159
+
160
+ &__tooltip {
161
+ position: absolute;
162
+ top: 0;
163
+ z-index: var(--vg-range-slider-z-tooltip);
164
+ transform: translate(-50%, -100%);
165
+ padding: var(--vg-range-slider-tooltip-padding-y) var(--vg-range-slider-tooltip-padding-x);
166
+ border-radius: var(--vg-range-slider-tooltip-radius);
167
+ background: var(--vg-range-slider-tooltip-bg);
168
+ box-shadow: var(--vg-range-slider-tooltip-shadow);
169
+ color: var(--vg-range-slider-tooltip-color);
170
+ font-size: var(--vg-range-slider-tooltip-font-size);
171
+ line-height: var(--vg-range-slider-tooltip-line-height);
172
+ white-space: nowrap;
173
+ pointer-events: none;
174
+
175
+ &.is-hidden {
176
+ opacity: 0;
177
+ visibility: hidden;
178
+ }
179
+ }
180
+
181
+ &__labels {
182
+ display: flex;
183
+ align-items: center;
184
+ gap: var(--vg-range-slider-labels-gap);
185
+ font-size: var(--vg-range-slider-labels-font-size);
186
+ line-height: var(--vg-range-slider-labels-line-height);
187
+ }
188
+
189
+ &__label {
190
+ font-weight: var(--vg-range-slider-label-font-weight);
191
+ }
192
+
193
+ &__separator {
194
+ color: var(--vg-range-slider-muted);
195
+ }
196
+
197
+ &__ruler {
198
+ position: absolute;
199
+ left: 0;
200
+ right: 0;
201
+ bottom: var(--vg-range-slider-ruler-offset-y);
202
+ z-index: var(--vg-range-slider-z-ruler);
203
+ height: var(--vg-range-slider-ruler-height);
204
+ pointer-events: none;
205
+ }
206
+
207
+ &__ruler-item {
208
+ position: absolute;
209
+ bottom: 0;
210
+ transform: translateX(-50%);
211
+ display: flex;
212
+ flex-direction: column;
213
+ align-items: center;
214
+ transition: opacity .2s ease;
215
+
216
+ &.is-active {
217
+ .vg-range-slider__ruler-mark {
218
+ background: var(--vg-range-slider-ruler-active-mark-bg);
219
+ }
220
+
221
+ .vg-range-slider__ruler-label {
222
+ color: var(--vg-range-slider-ruler-active-label-color);
223
+ }
224
+ }
225
+ }
226
+
227
+ &__ruler-mark {
228
+ width: var(--vg-range-slider-ruler-mark-width);
229
+ height: var(--vg-range-slider-ruler-mark-height);
230
+ background: var(--vg-range-slider-ruler-mark-bg);
231
+ }
232
+
233
+ &__ruler-label {
234
+ margin-top: var(--vg-range-slider-ruler-label-offset);
235
+ font-size: var(--vg-range-slider-ruler-label-font-size);
236
+ line-height: var(--vg-range-slider-ruler-label-line-height);
237
+ color: var(--vg-range-slider-ruler-label-color);
238
+ white-space: nowrap;
239
+ }
240
+ }
@@ -184,11 +184,11 @@ class VGToast extends BaseModule {
184
184
  this._dismissElement();
185
185
  this._addEventListeners();
186
186
 
187
- /** @private */
188
- this._timeout = null;
189
- this._hideTimeout = null;
190
- this._isHiding = false;
191
- }
187
+ /** @private */
188
+ this._timeout = null;
189
+ this._hideTimeout = null;
190
+ this._isHiding = false;
191
+ }
192
192
 
193
193
  /**
194
194
  * Имя модуля
@@ -318,7 +318,7 @@ class VGToast extends BaseModule {
318
318
  /**
319
319
  * Переключает состояние (показать/скрыть)
320
320
  * @param {Element} [relatedTarget] - Элемент, вызвавший тост.
321
- * @returns {VGToast}
321
+ * @returns {void}
322
322
  */
323
323
  toggle(relatedTarget) {
324
324
  return this._isShown() ? this.hide() : this.show(relatedTarget);
@@ -329,105 +329,105 @@ class VGToast extends BaseModule {
329
329
  * @param {Element} [relatedTarget] - Элемент, инициировавший показ.
330
330
  * @returns {void}
331
331
  */
332
- show(relatedTarget) {
333
- if (isDisabled(this._element)) return;
334
-
335
- const element = this._element;
336
- this._clearTimeout();
337
- this._clearHideTimeout();
338
- this._isHiding = false;
339
- this._disableInteractionHandlers();
340
-
341
- this._params = this._getParams(relatedTarget || {}, this._params);
342
- this._route((status, data) => {
343
- if (this._element !== element) return;
344
- EventHandler.trigger(element, EVENT_KEY_LOADED, { stats: status, data });
345
- });
346
-
347
- const showEvent = EventHandler.trigger(element, EVENT_KEY_SHOW, { relatedTarget });
348
- if (showEvent.defaultPrevented) return;
349
-
350
- element.classList.remove(CLASS_NAME_SHOWN);
351
- element.classList.add(CLASS_NAME_SHOW);
352
- document.body.classList.add(CLASS_NAME_OPEN);
353
-
354
- this._setPlacement();
355
-
356
- const completeCallBack = () => {
357
- if (this._element !== element || this._isHiding) return;
358
-
359
- element.classList.add(CLASS_NAME_SHOWN);
360
- this._toggleInteractionHandlers();
361
- this._syncInteractiveBounds();
362
- this._scheduleHide();
363
- EventHandler.trigger(element, EVENT_KEY_SHOWN, { relatedTarget });
364
- };
365
-
366
- this._queueCallback(completeCallBack, element, true, this._params.animation.delay);
367
- }
332
+ show(relatedTarget) {
333
+ if (isDisabled(this._element)) return;
334
+
335
+ const element = this._element;
336
+ this._clearTimeout();
337
+ this._clearHideTimeout();
338
+ this._isHiding = false;
339
+ this._disableInteractionHandlers();
340
+
341
+ this._params = this._getParams(relatedTarget || {}, this._params);
342
+ this._route((status, data) => {
343
+ if (this._element !== element) return;
344
+ EventHandler.trigger(element, EVENT_KEY_LOADED, { stats: status, data });
345
+ });
346
+
347
+ const showEvent = EventHandler.trigger(element, EVENT_KEY_SHOW, { relatedTarget });
348
+ if (showEvent.defaultPrevented) return;
349
+
350
+ element.classList.remove(CLASS_NAME_SHOWN);
351
+ element.classList.add(CLASS_NAME_SHOW);
352
+ document.body.classList.add(CLASS_NAME_OPEN);
353
+
354
+ this._setPlacement();
355
+
356
+ const completeCallBack = () => {
357
+ if (this._element !== element || this._isHiding) return;
358
+
359
+ element.classList.add(CLASS_NAME_SHOWN);
360
+ this._toggleInteractionHandlers();
361
+ this._syncInteractiveBounds();
362
+ this._scheduleHide();
363
+ EventHandler.trigger(element, EVENT_KEY_SHOWN, { relatedTarget });
364
+ };
365
+
366
+ this._queueCallback(completeCallBack, element, true, this._params.animation.delay);
367
+ }
368
368
 
369
369
  /**
370
370
  * Скрывает тост
371
371
  * @returns {void}
372
372
  */
373
- hide() {
374
- if (isDisabled(this._element) || this._isHiding) return;
375
-
376
- const element = this._element;
377
- this._clearTimeout();
378
- this._clearHideTimeout();
379
-
380
- const hideEvent = EventHandler.trigger(element, EVENT_KEY_HIDE);
381
- if (hideEvent.defaultPrevented) return;
382
-
383
- this._isHiding = true;
384
- element.classList.remove(CLASS_NAME_SHOWN);
385
- this._disableInteractionHandlers();
386
-
387
- this._hideTimeout = setTimeout(() => {
388
- this._hideTimeout = null;
389
- if (this._element !== element) return;
390
-
391
- element.classList.remove(CLASS_NAME_SHOW);
392
- if (this._params.stack.enable) {
393
- this._setPlacement();
394
- }
395
-
396
- const completeCallback = () => {
397
- if (this._element !== element) return;
398
-
399
- if (!Selectors.find('.vg-toast.show')) {
400
- document.body.classList.remove(CLASS_NAME_OPEN);
401
- }
402
-
403
- const shouldDispose = !this._params.static;
404
- this._isHiding = false;
405
- EventHandler.trigger(element, EVENT_KEY_HIDDEN);
406
-
407
- if (this._element !== element) return;
408
- if (shouldDispose) {
409
- this.dispose();
410
- }
411
- };
412
-
413
- this._queueCallback(completeCallback, element, false, this._params.animation.delay);
414
- }, this._params.animation.delay);
415
- }
373
+ hide() {
374
+ if (isDisabled(this._element) || this._isHiding) return;
375
+
376
+ const element = this._element;
377
+ this._clearTimeout();
378
+ this._clearHideTimeout();
379
+
380
+ const hideEvent = EventHandler.trigger(element, EVENT_KEY_HIDE);
381
+ if (hideEvent.defaultPrevented) return;
382
+
383
+ this._isHiding = true;
384
+ element.classList.remove(CLASS_NAME_SHOWN);
385
+ this._disableInteractionHandlers();
386
+
387
+ this._hideTimeout = setTimeout(() => {
388
+ this._hideTimeout = null;
389
+ if (this._element !== element) return;
390
+
391
+ element.classList.remove(CLASS_NAME_SHOW);
392
+ if (this._params.stack.enable) {
393
+ this._setPlacement();
394
+ }
395
+
396
+ const completeCallback = () => {
397
+ if (this._element !== element) return;
398
+
399
+ if (!Selectors.find('.vg-toast.show')) {
400
+ document.body.classList.remove(CLASS_NAME_OPEN);
401
+ }
402
+
403
+ const shouldDispose = !this._params.static;
404
+ this._isHiding = false;
405
+ EventHandler.trigger(element, EVENT_KEY_HIDDEN);
406
+
407
+ if (this._element !== element) return;
408
+ if (shouldDispose) {
409
+ this.dispose();
410
+ }
411
+ };
412
+
413
+ this._queueCallback(completeCallback, element, false, this._params.animation.delay);
414
+ }, this._params.animation.delay);
415
+ }
416
416
 
417
417
  /**
418
418
  * Удаляет тост из DOM и снимает обработчики
419
419
  * @override
420
420
  */
421
- dispose() {
422
- if (!this._element) return;
423
-
424
- this._clearTimeout();
425
- this._clearHideTimeout();
426
- this._disableInteractionHandlers();
427
- if (!this._params.static) {
428
- this._element.remove();
429
- }
430
- super.dispose();
421
+ dispose() {
422
+ if (!this._element) return;
423
+
424
+ this._clearTimeout();
425
+ this._clearHideTimeout();
426
+ this._disableInteractionHandlers();
427
+ if (!this._params.static) {
428
+ this._element.remove();
429
+ }
430
+ super.dispose();
431
431
  }
432
432
 
433
433
  /**
@@ -446,9 +446,9 @@ class VGToast extends BaseModule {
446
446
  * @private
447
447
  * @returns {boolean}
448
448
  */
449
- _isShown() {
450
- return !!this._element && this._element.classList.contains(CLASS_NAME_SHOW);
451
- }
449
+ _isShown() {
450
+ return !!this._element && this._element.classList.contains(CLASS_NAME_SHOW);
451
+ }
452
452
 
453
453
  /**
454
454
  * Возвращает список активных тостов с вертикальными смещениями
@@ -641,19 +641,19 @@ class VGToast extends BaseModule {
641
641
  return effectValue.trim();
642
642
  }
643
643
 
644
- _clearTimeout() {
645
- if (this._timeout) {
646
- clearTimeout(this._timeout);
647
- this._timeout = null;
648
- }
649
- }
650
-
651
- _clearHideTimeout() {
652
- if (this._hideTimeout) {
653
- clearTimeout(this._hideTimeout);
654
- this._hideTimeout = null;
655
- }
656
- }
644
+ _clearTimeout() {
645
+ if (this._timeout) {
646
+ clearTimeout(this._timeout);
647
+ this._timeout = null;
648
+ }
649
+ }
650
+
651
+ _clearHideTimeout() {
652
+ if (this._hideTimeout) {
653
+ clearTimeout(this._hideTimeout);
654
+ this._hideTimeout = null;
655
+ }
656
+ }
657
657
 
658
658
  /**
659
659
  * Назначает обработчики событий
@@ -0,0 +1,3 @@
1
+ import VGTooltip from "./js/vgtooltip";
2
+
3
+ export default VGTooltip;