vgapp 0.4.5 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +15 -1
- package/app/modules/base-module.js +8 -3
- package/app/modules/module-fn.js +11 -3
- package/app/modules/vgcollapse/js/vgcollapse.js +1 -0
- package/app/modules/vgdropdown/js/vgdropdown.js +1 -0
- package/app/modules/vglawcookie/js/vglawcookie.js +4 -1
- package/app/modules/vgloadmore/index.js +3 -0
- package/app/modules/vgloadmore/js/vgloadmore.js +104 -0
- package/app/modules/vgmodal/js/vgmodal.js +2 -1
- package/app/modules/vgnav/js/vgnav.js +4 -1
- package/app/modules/vgsidebar/js/vgsidebar.js +1 -0
- package/app/modules/vgtabs/js/vgtabs.js +2 -1
- package/app/modules/vgtoast/js/vgtoast.js +1 -0
- package/app/utils/js/components/templater.js +1 -0
- package/build/vgapp.js +1 -1
- package/build/vgapp.js.map +1 -1
- package/index.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
|
+
# VEGAS-APP 0.4.3 - 0.4.6 (Июнь, 3, 2025)
|
|
2
|
+
* Исправлены ошибки в разных модулях
|
|
3
|
+
* Во все модули, где есть группа параметров ajax, добавлен параметр output (boolean),
|
|
4
|
+
разрешает или запрещает добавление контента с сервера в целевой блок
|
|
5
|
+
* Во все модули, где есть группа параметров ajax, добавлен параметр once (boolean),
|
|
6
|
+
разовый запрос на сервер
|
|
7
|
+
|
|
8
|
+
## Модуль VGRollup
|
|
9
|
+
* Исправлено, последовательное открытие свернутого контента
|
|
10
|
+
|
|
11
|
+
## Новый модуль VGLoadMore
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
1
15
|
# VEGAS-APP 0.4.3 (Май, 31, 2025)
|
|
2
16
|
* Исправлены ошибки в разных модулях
|
|
3
17
|
## Новый модуль VGTabs
|
|
18
|
+
|
|
4
19
|
---
|
|
5
20
|
|
|
6
21
|
# VEGAS-APP 0.4.0 (Май, 287, 2025)
|
|
@@ -8,32 +23,38 @@
|
|
|
8
23
|
## Модуль VGFORMSENDER
|
|
9
24
|
* Добавлен параметр interceptors (перехватчики) для состояний error и/или success, после чего вызывается соответствующий колбек afterError и/или afterSuccess
|
|
10
25
|
* Добавлен параметр delay в группу alert автоматическое закрытие, отсчет в миллисекундах
|
|
26
|
+
|
|
11
27
|
---
|
|
12
28
|
|
|
13
29
|
# VEGAS-APP 0.3.4 (Май, 20, 2025)
|
|
14
30
|
## Новый модуль VGSpy
|
|
31
|
+
|
|
15
32
|
---
|
|
16
33
|
|
|
17
34
|
# VEGAS-APP 0.3.0 (Май, 09, 2025)
|
|
18
35
|
* Исправлены ошибки
|
|
19
36
|
## Модуль VGFORMSENDER
|
|
20
37
|
* Добавлен параметр pass, будет добавлен глаз к полю с паролем
|
|
38
|
+
|
|
21
39
|
---
|
|
22
40
|
|
|
23
41
|
# VEGAS-APP 0.2.5 (Апрель, 12, 2025)
|
|
24
42
|
* Исправлены ошибки в разных модулях
|
|
25
43
|
## Новый модуль VGRollup
|
|
44
|
+
|
|
26
45
|
---
|
|
27
46
|
|
|
28
47
|
# VEGAS-APP 0.2.4 (Апрель, 8, 2025)
|
|
29
48
|
## Модуль VGSidebar & VGModal
|
|
30
49
|
* Добавлен параметр hash
|
|
31
50
|
## Новый модуль VGToast
|
|
51
|
+
|
|
32
52
|
---
|
|
33
53
|
|
|
34
54
|
# VEGAS-APP 0.2.3 (Апрель, 4, 2025)
|
|
35
55
|
## Модуль VGDROPDOWN
|
|
36
56
|
* Добавлен параметр overflow и backdrop
|
|
57
|
+
|
|
37
58
|
---
|
|
38
59
|
|
|
39
60
|
# VEGAS-APP 0.2.1 (Март, 31, 2025)
|
package/README.md
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
1
|
# VEGAS APP
|
|
2
|
-
[FUNC.TRUE?!](http://func-true.ru)
|
|
2
|
+
[FUNC.TRUE?!](http://func-true.ru)
|
|
3
|
+
|
|
4
|
+
[](https://www.npmjs.com/package/vgapp) []()
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
```
|
|
8
|
+
npm i vgapp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Authors
|
|
12
|
+
|
|
13
|
+
[VEGAS STUDIO](https://vegas-dev.com) Russia
|
|
14
|
+
|
|
15
|
+
## License
|
|
16
|
+
Is published under the [MIT license](http://www.opensource.org/licenses/mit-license)
|
|
@@ -60,7 +60,9 @@ class BaseModule {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
if ('loader' in _this._params.ajax && _this._params.ajax.loader) {
|
|
63
|
-
|
|
63
|
+
if ('output' in _this._params.ajax && _this._params.ajax.output) {
|
|
64
|
+
setData('<div class="vg-loader"></div>');
|
|
65
|
+
}
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
Ajax[_this._params.ajax.method](_this._params.ajax.route, _this._params.ajax.data || {}, function (status, data) {
|
|
@@ -68,8 +70,11 @@ class BaseModule {
|
|
|
68
70
|
_this._isLoaded = true;
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
if ('output' in _this._params.ajax && _this._params.ajax.output) {
|
|
74
|
+
setData(data.response);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
execute(callback, [status, data, $content]);
|
|
73
78
|
});
|
|
74
79
|
}
|
|
75
80
|
|
package/app/modules/module-fn.js
CHANGED
|
@@ -101,11 +101,19 @@ const Ajax = {
|
|
|
101
101
|
let query = [];
|
|
102
102
|
|
|
103
103
|
if (!isEmptyObj(data)) {
|
|
104
|
-
for (let key
|
|
105
|
-
|
|
104
|
+
for (let key in data) {
|
|
105
|
+
console.log(key)
|
|
106
|
+
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
|
-
|
|
109
|
+
|
|
110
|
+
let uri = '';
|
|
111
|
+
if (query.length) {
|
|
112
|
+
uri += url.includes('?') ? '&' : '?';
|
|
113
|
+
uri += query.join('&');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
Ajax.send(url + uri, callback, 'GET', null, async)
|
|
109
117
|
},
|
|
110
118
|
|
|
111
119
|
post: function (url, data, callback, async) {
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import BaseModule from "../../base-module";
|
|
2
|
+
import EventHandler from "../../../utils/js/dom/event";
|
|
3
|
+
import {execute, mergeDeepObject} from "../../../utils/js/functions";
|
|
4
|
+
import Selectors from "../../../utils/js/dom/selectors";
|
|
5
|
+
|
|
6
|
+
const NAME = 'loadmore';
|
|
7
|
+
const NAME_KEY = 'vg.loadmore';
|
|
8
|
+
const CLASS_NAME_SHOW = 'show';
|
|
9
|
+
|
|
10
|
+
const SELECTOR_DATA_TOGGLE = '[data-vg-toggle="loadmore"]';
|
|
11
|
+
|
|
12
|
+
const EVENT_KEY_HIDE = `${NAME_KEY}.hide`;
|
|
13
|
+
const EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;
|
|
14
|
+
const EVENT_KEY_SHOW = `${NAME_KEY}.show`;
|
|
15
|
+
const EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;
|
|
16
|
+
const EVENT_KEY_LOADED = `${NAME_KEY}.loaded`;
|
|
17
|
+
|
|
18
|
+
const EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;
|
|
19
|
+
|
|
20
|
+
class VGLoadMore extends BaseModule{
|
|
21
|
+
constructor(element, params) {
|
|
22
|
+
super(element, params);
|
|
23
|
+
|
|
24
|
+
this._params = this._getParams(element, mergeDeepObject({
|
|
25
|
+
limit: 0,
|
|
26
|
+
offset: 0,
|
|
27
|
+
output: true,
|
|
28
|
+
autohide: true,
|
|
29
|
+
button: {
|
|
30
|
+
text: '',
|
|
31
|
+
send: 'Загружаем...'
|
|
32
|
+
},
|
|
33
|
+
ajax: {
|
|
34
|
+
route: '',
|
|
35
|
+
target: '',
|
|
36
|
+
method: 'get',
|
|
37
|
+
loader: false,
|
|
38
|
+
once: false,
|
|
39
|
+
output: false,
|
|
40
|
+
},
|
|
41
|
+
}, params));
|
|
42
|
+
|
|
43
|
+
this.fOffset = this._params.offset;
|
|
44
|
+
|
|
45
|
+
if (!this._params.button.text) {
|
|
46
|
+
this._params.button.text = this._element.innerHTML;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
static get NAME() {
|
|
51
|
+
return NAME;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static get NAME_KEY() {
|
|
55
|
+
return NAME_KEY;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
toggle(callback) {
|
|
59
|
+
this._params.ajax.data = {
|
|
60
|
+
limit: this._params.limit,
|
|
61
|
+
offset: this._params.offset
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (this._params.button.send) {
|
|
65
|
+
this._element.innerHTML = this._params.button.send;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
this._route((status, data, target) => {
|
|
69
|
+
if ('loader' in this._params.ajax && this._params.ajax.loader) {
|
|
70
|
+
let loader = Selectors.find('.vg-loader', target);
|
|
71
|
+
if (loader) loader.remove();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if ('output' in this._params && this._params.output) {
|
|
75
|
+
target.insertAdjacentHTML('beforeend', data.response);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
this._params.offset = this.fOffset + this._params.offset;
|
|
79
|
+
this._element.innerHTML = this._params.button.text;
|
|
80
|
+
|
|
81
|
+
if ('autohide' in this._params && this._params.autohide) {
|
|
82
|
+
if (!data.response) this._element.remove();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
EventHandler.trigger(this._element, EVENT_KEY_LOADED, {stats: status, data: data});
|
|
86
|
+
execute(callback, [this, data, target, status]);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Data API implementation
|
|
93
|
+
*/
|
|
94
|
+
EventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
95
|
+
const target = this;
|
|
96
|
+
|
|
97
|
+
if (['A', 'AREA'].includes(this.tagName)) event.preventDefault();
|
|
98
|
+
|
|
99
|
+
const instance = VGLoadMore.getOrCreateInstance(target);
|
|
100
|
+
instance.toggle();
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
export default VGLoadMore;
|
|
@@ -3,6 +3,7 @@ import {execute, mergeDeepObject} from "../functions";
|
|
|
3
3
|
const TEMPLATES = [
|
|
4
4
|
{type: 'pass-open', template: '<span data-vg-toggle="vgpass" class="[[classes]]" title="Показать / Скрыть" data-bs-toggle="tooltip"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z"/></svg></span>'},
|
|
5
5
|
{type: 'pass-close', template: '<span data-vg-toggle="vgpass" class="[[classes]]" title="Показать / Скрыть" data-bs-toggle="tooltip"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z"/></svg></span>'},
|
|
6
|
+
{type: 'loader', template: '<div class="vg-loader"></div>'}
|
|
6
7
|
]
|
|
7
8
|
|
|
8
9
|
|