@formixru/b2b-ui 2.0.0 → 2.1.0
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 +11 -0
- package/package.json +1 -1
- package/src/components/dialog/index.js +11 -15
- package/src/components/form/index.js +3 -12
- package/src/components/request/index.js +60 -12
- package/src/components/sidebar/index.js +57 -41
- package/src/helpers/css-var.js +3 -2
- package/src/helpers/request.js +0 -126
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
## v2.1.0
|
|
2
|
+
|
|
3
|
+
- В Request добавлены `reloadOnHideSidebar`/`hideSidebar`, а так же параметр `hideLoaderOnSuccess`
|
|
4
|
+
- В Request добавлена функция `__FORMIX__REQUEST__INIT_CONTENT` вместо `__FORMIX__FORM__INIT_CONTENT`/`__FORMIX__DIALOG__INIT_CONTENT`/`__FORMIX__SIDEBAR_INIT_CONTENT`
|
|
5
|
+
- Поддержка id диалогового окна или сайдбара как c `#`, так и без неё
|
|
6
|
+
|
|
7
|
+
## v2.0.1
|
|
8
|
+
|
|
9
|
+
- Исправлена работа `Request`
|
|
10
|
+
- Исправлена работа `cssVar`
|
|
11
|
+
|
|
1
12
|
## v2.0.0
|
|
2
13
|
|
|
3
14
|
- Добавлен новый компонент - универсальный AJAX-контроллер `Request`, который используется внутри `Dialog`/`Form`/`Sidebar` и может использоваться как отдельный компонент
|
package/package.json
CHANGED
|
@@ -2,8 +2,9 @@ import _throttle from 'lodash-es/throttle.js';
|
|
|
2
2
|
|
|
3
3
|
import { cssVar } from '../../helpers/css-var.js';
|
|
4
4
|
import { mm } from '../../helpers/mm.js';
|
|
5
|
+
import { hide as hideLoader } from '../loader/index.js';
|
|
5
6
|
import { disableScroll, enableScroll } from '../overlay/index.js';
|
|
6
|
-
import { request } from '../request/index.js';
|
|
7
|
+
import { initRequestContent, request } from '../request/index.js';
|
|
7
8
|
|
|
8
9
|
const isDialogOverflow = ($b) => {
|
|
9
10
|
return $b.scrollHeight > $b.clientHeight;
|
|
@@ -42,7 +43,7 @@ export const init = ($b) => {
|
|
|
42
43
|
};
|
|
43
44
|
|
|
44
45
|
export const show = async ($b) => {
|
|
45
|
-
if ($b
|
|
46
|
+
if ($b?.hidden) {
|
|
46
47
|
$b.dispatchEvent(new CustomEvent('dialog-show'));
|
|
47
48
|
|
|
48
49
|
disableScroll();
|
|
@@ -88,35 +89,30 @@ export const hide = async ($b) => {
|
|
|
88
89
|
|
|
89
90
|
$b.hidden = true;
|
|
90
91
|
enableScroll();
|
|
92
|
+
|
|
91
93
|
$b.dispatchEvent(new CustomEvent('dialog-hidden'));
|
|
92
94
|
} else {
|
|
93
95
|
enableScroll();
|
|
94
96
|
}
|
|
95
97
|
};
|
|
96
98
|
|
|
97
|
-
export const initDialogContent = ($b) => {
|
|
98
|
-
try {
|
|
99
|
-
window.__FORMIX__DIALOG__INIT_CONTENT($b);
|
|
100
|
-
} catch {
|
|
101
|
-
console.warn('Функция __FORMIX__DIALOG__INIT_CONTENT не установлена');
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
|
|
105
99
|
export const get = async (id, url) => {
|
|
100
|
+
const elementId = id.startsWith('#') ? id : `#${id}`;
|
|
106
101
|
if (url && url !== '#') {
|
|
107
|
-
const { content } = await request({ url });
|
|
102
|
+
const { content } = await request({ url, hideLoaderOnSuccess: false });
|
|
108
103
|
if (content) {
|
|
109
|
-
const $b = document.querySelector(
|
|
104
|
+
const $b = document.querySelector(elementId);
|
|
110
105
|
if ($b) {
|
|
111
106
|
$b.querySelector('.dialog__container').innerHTML = content;
|
|
112
107
|
await show($b);
|
|
113
|
-
|
|
108
|
+
initRequestContent($b);
|
|
109
|
+
hideLoader();
|
|
114
110
|
} else {
|
|
115
|
-
console.error(`Диалоговое окно с id ${
|
|
111
|
+
console.error(`Диалоговое окно с id ${elementId} не найдено`);
|
|
116
112
|
}
|
|
117
113
|
}
|
|
118
114
|
} else {
|
|
119
|
-
const $b = document.querySelector(
|
|
115
|
+
const $b = document.querySelector(elementId);
|
|
120
116
|
show($b);
|
|
121
117
|
}
|
|
122
118
|
};
|
|
@@ -2,16 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { getSmartCaptcha } from '../../helpers/get-smart-captcha.js';
|
|
4
4
|
import { scrollTo } from '../../helpers/scroll-to.js';
|
|
5
|
-
import {
|
|
6
|
-
import { request } from '../request/index.js';
|
|
7
|
-
|
|
8
|
-
const initFormContent = ($b) => {
|
|
9
|
-
try {
|
|
10
|
-
window.__FORMIX__FORM__INIT_CONTENT($b);
|
|
11
|
-
} catch {
|
|
12
|
-
console.warn('Функция __FORMIX__FORM__INIT_CONTENT не установлена');
|
|
13
|
-
}
|
|
14
|
-
};
|
|
5
|
+
import { initRequestContent, request } from '../request/index.js';
|
|
15
6
|
|
|
16
7
|
export const send = async ($b, url, method, data) => {
|
|
17
8
|
const { success, content } = await request({
|
|
@@ -27,7 +18,7 @@ export const send = async ($b, url, method, data) => {
|
|
|
27
18
|
const $dialog = $b.closest('.dialog');
|
|
28
19
|
if ($dialog) {
|
|
29
20
|
$dialog.querySelector('.dialog__container').innerHTML = content;
|
|
30
|
-
|
|
21
|
+
initRequestContent($dialog);
|
|
31
22
|
setTimeout(() => {
|
|
32
23
|
scrollToError($dialog);
|
|
33
24
|
});
|
|
@@ -37,7 +28,7 @@ export const send = async ($b, url, method, data) => {
|
|
|
37
28
|
const $form = $parent.querySelector('.form');
|
|
38
29
|
if ($form) {
|
|
39
30
|
init($form);
|
|
40
|
-
|
|
31
|
+
initRequestContent($form);
|
|
41
32
|
setTimeout(() => {
|
|
42
33
|
scrollToError($form);
|
|
43
34
|
});
|
|
@@ -3,11 +3,27 @@
|
|
|
3
3
|
import { is } from '@advdominion/is';
|
|
4
4
|
|
|
5
5
|
import { errorHandler } from '../../helpers/error-handler.js';
|
|
6
|
-
import { hide as hideDialog,
|
|
6
|
+
import { hide as hideDialog, show as showDialog } from '../dialog/index.js';
|
|
7
7
|
import { clearLoaderTimeout, hide as hideLoader, show as showLoader } from '../loader/index.js';
|
|
8
|
-
import {
|
|
8
|
+
import { hide as hideSidebar, show as showSidebar } from '../sidebar/index.js';
|
|
9
9
|
|
|
10
|
-
export const
|
|
10
|
+
export const initRequestContent = ($b) => {
|
|
11
|
+
try {
|
|
12
|
+
window.__FORMIX__REQUEST__INIT_CONTENT($b);
|
|
13
|
+
} catch {
|
|
14
|
+
console.warn('Функция __FORMIX__REQUEST__INIT_CONTENT не установлена');
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const request = async ({
|
|
19
|
+
$b,
|
|
20
|
+
url = '',
|
|
21
|
+
method = 'GET',
|
|
22
|
+
data = {},
|
|
23
|
+
loader = true,
|
|
24
|
+
showLoaderDelay,
|
|
25
|
+
hideLoaderOnSuccess = true,
|
|
26
|
+
}) => {
|
|
11
27
|
url = new URL(url, location.origin);
|
|
12
28
|
const options = {
|
|
13
29
|
method,
|
|
@@ -44,11 +60,15 @@ export const request = async ({ $b, url = '', method = 'GET', data = {}, loader
|
|
|
44
60
|
if (!response.ok) {
|
|
45
61
|
throw response;
|
|
46
62
|
}
|
|
47
|
-
|
|
63
|
+
|
|
64
|
+
const raw = await response.text();
|
|
65
|
+
let data;
|
|
66
|
+
try {
|
|
67
|
+
data = JSON.parse(raw);
|
|
68
|
+
} catch {
|
|
48
69
|
console.warn('Ошибка при попытке преобразования ответа в JSON');
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
});
|
|
70
|
+
data = { content: raw };
|
|
71
|
+
}
|
|
52
72
|
|
|
53
73
|
if (is(data.redirect, 'String')) {
|
|
54
74
|
if (data.redirect) {
|
|
@@ -65,7 +85,7 @@ export const request = async ({ $b, url = '', method = 'GET', data = {}, loader
|
|
|
65
85
|
}
|
|
66
86
|
} else {
|
|
67
87
|
try {
|
|
68
|
-
await window.
|
|
88
|
+
await window.__FORMIX__REQUEST__INTERCEPT_DATA(data);
|
|
69
89
|
} catch {
|
|
70
90
|
console.warn('Функция __FORMIX__REQUEST__INTERCEPT_DATA не установлена');
|
|
71
91
|
}
|
|
@@ -74,7 +94,7 @@ export const request = async ({ $b, url = '', method = 'GET', data = {}, loader
|
|
|
74
94
|
if ($dialog) {
|
|
75
95
|
$dialog.querySelector('.dialog__container').innerHTML = data.dialog.content;
|
|
76
96
|
await showDialog($dialog);
|
|
77
|
-
|
|
97
|
+
initRequestContent($dialog);
|
|
78
98
|
} else {
|
|
79
99
|
console.error(`Диалоговое окно с id ${data.trigger} не найдено`);
|
|
80
100
|
}
|
|
@@ -106,11 +126,33 @@ export const request = async ({ $b, url = '', method = 'GET', data = {}, loader
|
|
|
106
126
|
if ($sidebar) {
|
|
107
127
|
$sidebar.innerHTML = data.sidebar.content;
|
|
108
128
|
await showSidebar($sidebar);
|
|
109
|
-
|
|
129
|
+
initRequestContent($sidebar);
|
|
110
130
|
} else {
|
|
111
131
|
console.error(`Сайдбар с id ${data.trigger} не найден`);
|
|
112
132
|
}
|
|
113
133
|
}
|
|
134
|
+
if (data.reloadOnHideSidebar) {
|
|
135
|
+
if (data.sidebar) {
|
|
136
|
+
const $sidebar = document.querySelector(data.sidebar.id);
|
|
137
|
+
$sidebar?.addEventListener('sidebar-hide', () => {
|
|
138
|
+
location.reload();
|
|
139
|
+
});
|
|
140
|
+
} else {
|
|
141
|
+
$b?.closest('.sidebar').addEventListener('sidebar-hide', () => {
|
|
142
|
+
location.reload();
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (data.hideSidebar) {
|
|
147
|
+
if (data.sidebar) {
|
|
148
|
+
const $sidebar = document.querySelector(data.sidebar.id);
|
|
149
|
+
if ($sidebar) {
|
|
150
|
+
hideSidebar($sidebar);
|
|
151
|
+
}
|
|
152
|
+
} else if ($b) {
|
|
153
|
+
hideSidebar($b.closest('.sidebar'));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
114
156
|
if (data.trigger) {
|
|
115
157
|
const $trigger = document.querySelector(data.trigger);
|
|
116
158
|
if ($trigger) {
|
|
@@ -122,7 +164,13 @@ export const request = async ({ $b, url = '', method = 'GET', data = {}, loader
|
|
|
122
164
|
}
|
|
123
165
|
}
|
|
124
166
|
}
|
|
125
|
-
if (
|
|
167
|
+
if (
|
|
168
|
+
!(data.reloadOnHideDialog && data.hideDialog) &&
|
|
169
|
+
!(data.reloadOnHideSidebar && data.hideSidebar) &&
|
|
170
|
+
(!data.trigger || data.hideDialog || data.hideSidebar) &&
|
|
171
|
+
loader &&
|
|
172
|
+
hideLoaderOnSuccess
|
|
173
|
+
) {
|
|
126
174
|
hideLoader();
|
|
127
175
|
}
|
|
128
176
|
}
|
|
@@ -151,7 +199,7 @@ document.body.addEventListener('click', (event) => {
|
|
|
151
199
|
}
|
|
152
200
|
if ($el.dataset.requestData) {
|
|
153
201
|
try {
|
|
154
|
-
options.
|
|
202
|
+
options.data = JSON.parse($el.dataset.requestData);
|
|
155
203
|
} catch {
|
|
156
204
|
console.warn('Ошибка при попытке преобразования значения data-request-data в JSON');
|
|
157
205
|
}
|
|
@@ -1,67 +1,83 @@
|
|
|
1
1
|
import { cssVar } from '../../helpers/css-var.js';
|
|
2
2
|
import { mm } from '../../helpers/mm.js';
|
|
3
|
+
import { hide as hideLoader } from '../loader/index.js';
|
|
3
4
|
import { disableScroll, enableScroll, hide as hideOverlay, show as showOverlay } from '../overlay/index.js';
|
|
4
|
-
import { request } from '../request/index.js';
|
|
5
|
+
import { initRequestContent, request } from '../request/index.js';
|
|
5
6
|
|
|
6
7
|
export const show = async ($b) => {
|
|
7
|
-
if ($b
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
width =
|
|
8
|
+
if ($b?.hidden) {
|
|
9
|
+
$b.dispatchEvent(new CustomEvent('sidebar-show'));
|
|
10
|
+
|
|
11
|
+
if ($b.id !== 'settings-generator') {
|
|
12
|
+
disableScroll();
|
|
13
|
+
}
|
|
14
|
+
$b.hidden = false;
|
|
15
|
+
showOverlay();
|
|
16
|
+
|
|
17
|
+
let width = mm('tablet-landscape-up')
|
|
18
|
+
? $b.offsetWidth + $b.querySelector('.sidebar__aside').offsetWidth
|
|
19
|
+
: $b.offsetWidth;
|
|
20
|
+
if ($b.classList.contains('sidebar_left')) {
|
|
21
|
+
width = width * -1;
|
|
22
|
+
}
|
|
23
|
+
await $b.animate([{ transform: `translateX(${width}px)` }, { transform: 'translateX(0px)' }], {
|
|
24
|
+
duration: cssVar('--duration-enter-m'),
|
|
25
|
+
easing: cssVar('--easing-deceleration'),
|
|
26
|
+
}).finished;
|
|
27
|
+
|
|
28
|
+
$b.dispatchEvent(new CustomEvent('sidebar-shown'));
|
|
17
29
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
})
|
|
30
|
+
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
resolve();
|
|
33
|
+
});
|
|
22
34
|
};
|
|
23
35
|
|
|
24
36
|
export const hide = async ($b) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
? $b.offsetWidth + $b.querySelector('.sidebar__aside').offsetWidth
|
|
28
|
-
: $b.offsetWidth;
|
|
29
|
-
if ($b.classList.contains('sidebar_left')) {
|
|
30
|
-
width = width * -1;
|
|
31
|
-
}
|
|
32
|
-
await $b.animate([{ transform: 'translateX(0px)' }, { transform: `translateX(${width}px)` }], {
|
|
33
|
-
duration: cssVar('--duration-leave-m'),
|
|
34
|
-
easing: cssVar('--easing-acceleration'),
|
|
35
|
-
}).finished;
|
|
36
|
-
$b.hidden = true;
|
|
37
|
-
if ($b.id !== 'settings-generator') {
|
|
38
|
-
enableScroll();
|
|
39
|
-
}
|
|
40
|
-
};
|
|
37
|
+
if ($b && !$b.hidden) {
|
|
38
|
+
$b.dispatchEvent(new CustomEvent('sidebar-hide'));
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
hideOverlay();
|
|
41
|
+
|
|
42
|
+
let width = mm('tablet-landscape-up')
|
|
43
|
+
? $b.offsetWidth + $b.querySelector('.sidebar__aside').offsetWidth
|
|
44
|
+
: $b.offsetWidth;
|
|
45
|
+
if ($b.classList.contains('sidebar_left')) {
|
|
46
|
+
width = width * -1;
|
|
47
|
+
}
|
|
48
|
+
await $b.animate([{ transform: 'translateX(0px)' }, { transform: `translateX(${width}px)` }], {
|
|
49
|
+
duration: cssVar('--duration-leave-m'),
|
|
50
|
+
easing: cssVar('--easing-acceleration'),
|
|
51
|
+
}).finished;
|
|
52
|
+
|
|
53
|
+
$b.hidden = true;
|
|
54
|
+
if ($b.id !== 'settings-generator') {
|
|
55
|
+
enableScroll();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
$b.dispatchEvent(new CustomEvent('sidebar-hidden'));
|
|
59
|
+
} else if ($b.id !== 'settings-generator') {
|
|
60
|
+
enableScroll();
|
|
47
61
|
}
|
|
48
62
|
};
|
|
49
63
|
|
|
50
64
|
export const get = async (id, url, showLoaderDelay) => {
|
|
65
|
+
const elementId = id.startsWith('#') ? id : `#${id}`;
|
|
51
66
|
if (url && url !== '#') {
|
|
52
|
-
const { content } = await request({ url, showLoaderDelay });
|
|
67
|
+
const { content } = await request({ url, showLoaderDelay, hideLoaderOnSuccess: false });
|
|
53
68
|
if (content) {
|
|
54
|
-
const $b = document.querySelector(
|
|
69
|
+
const $b = document.querySelector(elementId);
|
|
55
70
|
if ($b) {
|
|
56
71
|
$b.innerHTML = content;
|
|
57
72
|
await show($b);
|
|
58
|
-
|
|
73
|
+
initRequestContent($b);
|
|
74
|
+
hideLoader();
|
|
59
75
|
} else {
|
|
60
|
-
console.error(`Сайдбар с id ${
|
|
76
|
+
console.error(`Сайдбар с id ${elementId} не найден`);
|
|
61
77
|
}
|
|
62
78
|
}
|
|
63
79
|
} else {
|
|
64
|
-
const $b = document.querySelector(
|
|
80
|
+
const $b = document.querySelector(elementId);
|
|
65
81
|
show($b);
|
|
66
82
|
}
|
|
67
83
|
};
|
package/src/helpers/css-var.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export const cssVar = (name, element = document.documentElement) => {
|
|
2
2
|
const value = window.getComputedStyle(element).getPropertyValue(name);
|
|
3
|
-
const durationRegExp =
|
|
3
|
+
const durationRegExp = /(^[\d.]+)(ms|s)$/;
|
|
4
4
|
if (durationRegExp.test(value)) {
|
|
5
|
-
|
|
5
|
+
const [, numericValue, unit] = durationRegExp.exec(value);
|
|
6
|
+
return unit === 's' ? numericValue * 1000 : Number(numericValue);
|
|
6
7
|
}
|
|
7
8
|
return value;
|
|
8
9
|
};
|
package/src/helpers/request.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/* globals BX */
|
|
2
|
-
|
|
3
|
-
import { is } from '@advdominion/is';
|
|
4
|
-
|
|
5
|
-
import { hide as hideDialog, initDialogContent, show as showDialog } from '../components/dialog/index.js';
|
|
6
|
-
import { clearLoaderTimeout, hide as hideLoader, show as showLoader } from '../components/loader.js';
|
|
7
|
-
import { initSidebarContent, show as showSidebar } from '../components/sidebar/index.js';
|
|
8
|
-
import { errorHandler } from './error-handler.js';
|
|
9
|
-
|
|
10
|
-
export const req = async ({ $b, url = '', method = 'GET', data = {}, loader = true, showLoaderDelay }) => {
|
|
11
|
-
url = new URL(url, location.origin);
|
|
12
|
-
const options = {
|
|
13
|
-
method,
|
|
14
|
-
headers: {
|
|
15
|
-
'X-Requested-With': 'XMLHttpRequest',
|
|
16
|
-
'X-Session-Id': BX.message('bitrix_sessid'),
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
if (method === 'GET') {
|
|
20
|
-
for (const [name, value] of data) {
|
|
21
|
-
url.searchParams.append(name, value);
|
|
22
|
-
}
|
|
23
|
-
} else {
|
|
24
|
-
options.body = data;
|
|
25
|
-
}
|
|
26
|
-
if (loader) {
|
|
27
|
-
showLoader(showLoaderDelay);
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
const response = await fetch(url, options);
|
|
31
|
-
if (!response.ok) {
|
|
32
|
-
throw response;
|
|
33
|
-
}
|
|
34
|
-
const data = await response.json().catch(async () => {
|
|
35
|
-
console.warn('Ошибка при попытке преобразования ответа в JSON.');
|
|
36
|
-
const content = await response.text();
|
|
37
|
-
return { content };
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
if (is(data.redirect, 'String')) {
|
|
41
|
-
if (data.redirect) {
|
|
42
|
-
location.assign(data.redirect);
|
|
43
|
-
if (data.redirect.startsWith('tg:')) {
|
|
44
|
-
if (loader) {
|
|
45
|
-
hideLoader();
|
|
46
|
-
}
|
|
47
|
-
} else {
|
|
48
|
-
clearLoaderTimeout();
|
|
49
|
-
}
|
|
50
|
-
} else {
|
|
51
|
-
location.reload();
|
|
52
|
-
}
|
|
53
|
-
} else {
|
|
54
|
-
try {
|
|
55
|
-
await window.__FORMIX__REQ__INTERCEPT_DATA(data);
|
|
56
|
-
} catch {
|
|
57
|
-
console.warn('Функция __FORMIX__REQUEST__INTERCEPT_DATA не установлена');
|
|
58
|
-
}
|
|
59
|
-
if (data.dialog) {
|
|
60
|
-
const $dialog = document.querySelector(data.dialog.id);
|
|
61
|
-
if ($dialog) {
|
|
62
|
-
$dialog.querySelector('.dialog__container').innerHTML = data.dialog.content;
|
|
63
|
-
await showDialog($dialog);
|
|
64
|
-
initDialogContent($dialog);
|
|
65
|
-
} else {
|
|
66
|
-
console.error(`Диалоговое окно с id ${data.trigger} не найдено`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (data.reloadOnHideDialog) {
|
|
70
|
-
if (data.dialog) {
|
|
71
|
-
const $dialog = document.querySelector(data.dialog.id);
|
|
72
|
-
$dialog?.addEventListener('dialog-hide', () => {
|
|
73
|
-
location.reload();
|
|
74
|
-
});
|
|
75
|
-
} else {
|
|
76
|
-
$b?.closest('.dialog').addEventListener('dialog-hide', () => {
|
|
77
|
-
location.reload();
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (data.hideDialog) {
|
|
82
|
-
if (data.dialog) {
|
|
83
|
-
const $dialog = document.querySelector(data.dialog.id);
|
|
84
|
-
if ($dialog) {
|
|
85
|
-
hideDialog($dialog);
|
|
86
|
-
}
|
|
87
|
-
} else if ($b) {
|
|
88
|
-
hideDialog($b.closest('.dialog'));
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (data.sidebar) {
|
|
92
|
-
const $sidebar = document.querySelector(data.sidebar.id);
|
|
93
|
-
if ($sidebar) {
|
|
94
|
-
$sidebar.innerHTML = data.sidebar.content;
|
|
95
|
-
await showSidebar($sidebar);
|
|
96
|
-
initSidebarContent($sidebar);
|
|
97
|
-
} else {
|
|
98
|
-
console.error(`Сайдбар с id ${data.trigger} не найден`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (data.trigger) {
|
|
102
|
-
const $trigger = document.querySelector(data.trigger);
|
|
103
|
-
if ($trigger) {
|
|
104
|
-
$trigger?.click();
|
|
105
|
-
console.error(`Элемент с селектором ${data.trigger} не найден`);
|
|
106
|
-
} else if (loader) {
|
|
107
|
-
hideLoader();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (!(data.reloadOnHideDialog && data.hideDialog) && (!data.trigger || data.hideDialog) && loader) {
|
|
111
|
-
hideLoader();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return data;
|
|
116
|
-
} catch (error) {
|
|
117
|
-
if (error.status === 401) {
|
|
118
|
-
location.reload();
|
|
119
|
-
} else {
|
|
120
|
-
if (loader) {
|
|
121
|
-
hideLoader();
|
|
122
|
-
}
|
|
123
|
-
errorHandler(error);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
};
|