@alexsab-ru/scripts 0.5.2 → 0.5.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.
- package/README.md +30 -2
- package/README_RU.md +154 -0
- package/lib/form.js +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @alexsab-ru/scripts
|
|
2
2
|
|
|
3
|
+
[Русский](README_RU.md)
|
|
4
|
+
|
|
3
5
|
common libs for websites
|
|
4
6
|
|
|
5
7
|
* [Installation](#Installation)
|
|
@@ -91,6 +93,32 @@ document.querySelectorAll("form").forEach((form) => {
|
|
|
91
93
|
});
|
|
92
94
|
```
|
|
93
95
|
|
|
96
|
+
### Goals can be achieved as follows
|
|
97
|
+
|
|
98
|
+
Interaction with the form
|
|
99
|
+
|
|
100
|
+
- **form_open** – opened the form
|
|
101
|
+
- **form_click** – clicked on the form
|
|
102
|
+
- **form_change** – changes in the form
|
|
103
|
+
- **form_submit** – pressed the Submit button
|
|
104
|
+
- **form_required** – incomplete form filling
|
|
105
|
+
- **form_error** – error, data did not send for some reason
|
|
106
|
+
- **form_success** – received a positive response from the server, i.e., data was sent
|
|
107
|
+
- **form_close** – closed the form
|
|
108
|
+
|
|
109
|
+
Interaction with the phone
|
|
110
|
+
|
|
111
|
+
- **phone_click** — clicked on it with the mouse
|
|
112
|
+
- **phone_contextmenu** — opening the context menu on it with the right mouse button
|
|
113
|
+
- **phone_copy** — copying the selected text
|
|
114
|
+
|
|
115
|
+
If there is a clickable email on the page, goals will be triggered on it
|
|
116
|
+
|
|
117
|
+
- **email_click** — clicked on it with the mouse
|
|
118
|
+
- **email_contextmenu** — opening the context menu on it with the right mouse button
|
|
119
|
+
- **email_copy** — copying the selected text
|
|
120
|
+
|
|
121
|
+
|
|
94
122
|
## Cookie module
|
|
95
123
|
|
|
96
124
|
```js
|
|
@@ -107,10 +135,10 @@ cookiecook(days);
|
|
|
107
135
|
```js
|
|
108
136
|
import { createRequest } from '@alexsab-ru/scripts';
|
|
109
137
|
|
|
110
|
-
//
|
|
138
|
+
// Sending a callback request to CallTouch
|
|
111
139
|
createRequest("ct_callback", "+7 (987) 654-32-10");
|
|
112
140
|
|
|
113
|
-
//
|
|
141
|
+
// to display the log, the third parameter must be used
|
|
114
142
|
createRequest("ct_callback", "+7 (987) 654-32-10", true);
|
|
115
143
|
```
|
|
116
144
|
|
package/README_RU.md
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# @alexsab-ru/scripts
|
|
2
|
+
|
|
3
|
+
[English](README.md)
|
|
4
|
+
|
|
5
|
+
Общие пакеты для вебсайтов
|
|
6
|
+
|
|
7
|
+
* [Установка](#Установка)
|
|
8
|
+
* [Модуль аналитики](#Модуль-аналитики)
|
|
9
|
+
* [Модуль куков](#Модуль-куков)
|
|
10
|
+
* [Модуль Calltouch](#Модуль-Calltouch)
|
|
11
|
+
* [Модуль для форм](#Модуль-для-форм)
|
|
12
|
+
|
|
13
|
+
## Установка
|
|
14
|
+
```bash
|
|
15
|
+
pnpm i @alexsab-ru/scripts
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Модуль аналитики
|
|
19
|
+
|
|
20
|
+
`reachGoal` и `pageView` функции добавляют в `dataLayer` данные с названием цели
|
|
21
|
+
```js
|
|
22
|
+
reachGoal("названиеЦели");
|
|
23
|
+
pageView("названиеЦели");
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
в GTM вы можете использовать их чтобы отправить цели в вашу систему аналитики
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
{
|
|
30
|
+
event: "reachGoal-названиеЦели",
|
|
31
|
+
eventAction: "названиеЦели"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Пример:
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
import { reachGoal } from '@alexsab-ru/scripts';
|
|
39
|
+
|
|
40
|
+
// Автоматически подключаются из модуля форм
|
|
41
|
+
reachGoal("phone_click");
|
|
42
|
+
reachGoal("phone_copy");
|
|
43
|
+
reachGoal("phone_contextmenu");
|
|
44
|
+
reachGoal("email_click");
|
|
45
|
+
reachGoal("email_copy");
|
|
46
|
+
reachGoal("email_contextmenu");
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Для аналитики форм вы можете использовать следующие цели
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
reachGoal("form_open");
|
|
53
|
+
reachGoal("form_click"); // автоматически подключаются из модуля форм
|
|
54
|
+
reachGoal("form_change"); // автоматически подключаются из модуля форм
|
|
55
|
+
reachGoal("form_submit");
|
|
56
|
+
reachGoal("form_required");
|
|
57
|
+
reachGoal("form_error");
|
|
58
|
+
reachGoal("form_success");
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`getFormDataObject` нужна для отслеживания заявок в Calltouch
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
import { getFormDataObject } from '@alexsab-ru/scripts';
|
|
65
|
+
|
|
66
|
+
document.querySelectorAll("form").forEach((form) => {
|
|
67
|
+
form.onsubmit = async (event) => {
|
|
68
|
+
|
|
69
|
+
var formData = new FormData(form);
|
|
70
|
+
// ...
|
|
71
|
+
var formDataObj = getFormDataObject(formData, form.id);
|
|
72
|
+
|
|
73
|
+
await fetch("https://example.com/api/lead/", {
|
|
74
|
+
// ...
|
|
75
|
+
})
|
|
76
|
+
.then((res) => res.json())
|
|
77
|
+
.then((data) => {
|
|
78
|
+
if (data.answer == "required") {
|
|
79
|
+
reachGoal("form_required");
|
|
80
|
+
return;
|
|
81
|
+
} else if (data.answer == "error") {
|
|
82
|
+
reachGoal("form_error");
|
|
83
|
+
return;
|
|
84
|
+
} else {
|
|
85
|
+
reachGoal("form_success", formDataObj);
|
|
86
|
+
}
|
|
87
|
+
form.reset();
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => {
|
|
90
|
+
reachGoal("form_error");
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Цели могут выполняться такие
|
|
97
|
+
|
|
98
|
+
Взаимодействия с формой
|
|
99
|
+
|
|
100
|
+
- **form_open** – открыл форму
|
|
101
|
+
- **form_click** – кликнул по форме
|
|
102
|
+
- **form_change** – изменения в форме
|
|
103
|
+
- **form_submit** – нажал кнопку Отправить
|
|
104
|
+
- **form_required** – не полное заполнение формы
|
|
105
|
+
- **form_error** – ошибка, данные по какой-то причине не отправились
|
|
106
|
+
- **form_success** – получит положительный ответ от сервера, т.е. данные отправились
|
|
107
|
+
- **form_close** – закрыл форму
|
|
108
|
+
|
|
109
|
+
Взаимодейтсвие с телефоном
|
|
110
|
+
|
|
111
|
+
- **phone_click** — клик по телефону мышкой
|
|
112
|
+
- **phone_contextmenu** — открытие контекстного меню на телефоне правой кнопкой мыши
|
|
113
|
+
- **phone_copy** — копирование выделенного телефона
|
|
114
|
+
|
|
115
|
+
Если где-то есть кликабельный email на странице, то будут отрабатываться цели на нем
|
|
116
|
+
|
|
117
|
+
- **email_click** — клик по email мышкой
|
|
118
|
+
- **email_contextmenu** — открытие контекстного меню на email правой кнопкой мыши
|
|
119
|
+
- **email_copy** — копирование выделенного email
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## Модуль куков
|
|
123
|
+
|
|
124
|
+
```js
|
|
125
|
+
import { getCookie, setCookie, deleteCookie, cookiecook } from './cookie';
|
|
126
|
+
|
|
127
|
+
getCookie('cookie_name');
|
|
128
|
+
setCookie('cookie_name');
|
|
129
|
+
deleteCookie('cookie_name');
|
|
130
|
+
cookiecook(days);
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Модуль Calltouch
|
|
134
|
+
|
|
135
|
+
```js
|
|
136
|
+
import { createRequest } from '@alexsab-ru/scripts';
|
|
137
|
+
|
|
138
|
+
// Отправка заявки на обратный возов в CallTouch
|
|
139
|
+
createRequest("ct_callback", "+7 (987) 654-32-10");
|
|
140
|
+
|
|
141
|
+
// для показа лога нужно использовать третий парамтер
|
|
142
|
+
createRequest("ct_callback", "+7 (987) 654-32-10", true);
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Модуль для форм
|
|
146
|
+
|
|
147
|
+
```js
|
|
148
|
+
import { connectForms, cookiecook } from '@alexsab-ru/scripts';
|
|
149
|
+
|
|
150
|
+
cookiecook();
|
|
151
|
+
connectForms('https://alexsab.ru/lead/test/', function() {
|
|
152
|
+
console.log("sucess lead");
|
|
153
|
+
});
|
|
154
|
+
```
|
package/lib/form.js
CHANGED
|
@@ -119,7 +119,6 @@ const showMessageModal = (messageModal, icon, message) => {
|
|
|
119
119
|
messageModal.classList.remove("hidden");
|
|
120
120
|
};
|
|
121
121
|
|
|
122
|
-
|
|
123
122
|
export const connectForms = (url, callback, callback_error, ct_routeKey = 'ct_callback', verbose = false) => {
|
|
124
123
|
|
|
125
124
|
// Отправка всех форм
|
|
@@ -190,7 +189,9 @@ document.querySelectorAll("form").forEach((form) => {
|
|
|
190
189
|
// Отправка заявки на обратный возов в CallTouch
|
|
191
190
|
const requestData = await createRequest(ct_routeKey, phone.value, verbose);
|
|
192
191
|
formData.append("ct_callback", true);
|
|
192
|
+
formData.append("ctw_createRequest", requestData);
|
|
193
193
|
} catch (error) {
|
|
194
|
+
formData.append("ctw_createRequest", error);
|
|
194
195
|
verbose && console.error("Error during request Calltouch callback:", error);
|
|
195
196
|
formDataObj = getFormDataObject(formData, form.id);
|
|
196
197
|
}
|