@yourgoods/ui-smart 0.1.1
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/dist/ProfileEmailDialog-_CmzDM2p.js +777 -0
- package/dist/ProfilePasswordDialog-DTLqgHqm.js +268 -0
- package/dist/ProfilePhoneDialog-D4EwUMe2.js +737 -0
- package/dist/components/PEditUserContact/PEditUserContact.vue.d.ts +44 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogManager.vue.d.ts +24 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/AddNewEmailContent.vue.d.ts +60 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/AddNewPasswordContent.vue.d.ts +25 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/AddNewPhoneContent.vue.d.ts +63 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/NewEmailContent.vue.d.ts +64 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/NewPhoneContent.vue.d.ts +64 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/OldEmailContent.vue.d.ts +55 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/OldPhoneContent.vue.d.ts +55 -0
- package/dist/components/PEditUserContact/ProfileDialogs/DialogSegments/ThrottlerTimer.vue.d.ts +45 -0
- package/dist/components/PEditUserContact/ProfileDialogs/ProfileEmailDialog.vue.d.ts +55 -0
- package/dist/components/PEditUserContact/ProfileDialogs/ProfilePasswordDialog.vue.d.ts +36 -0
- package/dist/components/PEditUserContact/ProfileDialogs/ProfilePhoneDialog.vue.d.ts +89 -0
- package/dist/components/PEditUserContact/ProfileOverlayLoading.vue.d.ts +2 -0
- package/dist/components/PEditUserContact/index.vue.d.ts +36 -0
- package/dist/components/PEditUserContact/types.d.ts +29 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/composables/profile/useDialogManager.d.ts +21 -0
- package/dist/composables/profile/useModeFlow.d.ts +7 -0
- package/dist/composables/profile/usePasswordRateLimitToast.d.ts +9 -0
- package/dist/composables/profile/useRateLimitToast.d.ts +9 -0
- package/dist/composables/profile/useThrottler.d.ts +13 -0
- package/dist/index-DtHlzO1x.js +570 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -0
- package/dist/locales/index.d.ts +130 -0
- package/dist/modules/api/profile/check-availability.d.ts +1 -0
- package/dist/modules/api/profile/me.d.ts +19 -0
- package/dist/modules/index.d.ts +8 -0
- package/dist/types/vue-shims.d.ts +5 -0
- package/dist/useRateLimitToast-DsEVCh0F.js +140 -0
- package/dist/vue-shims.d.ts +5 -0
- package/package.json +49 -0
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
import { ref as w, shallowRef as Ue, defineComponent as Y, defineAsyncComponent as R, watch as ne, createBlock as D, createCommentVNode as E, unref as s, openBlock as y, resolveDynamicComponent as De, mergeProps as Fe, computed as k, reactive as z, onMounted as Ie, createElementBlock as N, Fragment as re, createVNode as f, createElementVNode as L, withCtx as U, createTextVNode as V, toDisplayString as x, Teleport as te, Transition as Ve, withDirectives as xe, vShow as Se } from "vue";
|
|
2
|
+
import Ae from "axios";
|
|
3
|
+
import { PInputFileUploader as $e, PInput as S, IconFilledEditMd as A, PButton as oe, PImageCropper as Oe, PToast as Me, PTeleportContainer as le, PToastContainer as Re } from "@profeat/ui-kit";
|
|
4
|
+
function ze(p, r = 2) {
|
|
5
|
+
if (p === 0)
|
|
6
|
+
return "0 B";
|
|
7
|
+
const n = 1024, m = ["B", "KB", "MB", "GB", "TB", "PB", "EB"], h = Math.floor(Math.log(p) / Math.log(n));
|
|
8
|
+
return `${Number.parseFloat((p / n ** h).toFixed(r))} ${m[h]}`;
|
|
9
|
+
}
|
|
10
|
+
const Le = {
|
|
11
|
+
"image/jpeg": "JPEG",
|
|
12
|
+
"image/png": "PNG",
|
|
13
|
+
"application/pdf": "PDF",
|
|
14
|
+
"text/plain": "Text File",
|
|
15
|
+
"application/zip": "ZIP Archive"
|
|
16
|
+
// ...
|
|
17
|
+
};
|
|
18
|
+
function je(p) {
|
|
19
|
+
return p.map((r) => {
|
|
20
|
+
var n;
|
|
21
|
+
return Le[r] || ((n = r.split("/")[1]) == null ? void 0 : n.toUpperCase());
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const ra = {
|
|
25
|
+
OLD: "old",
|
|
26
|
+
NEW: "new",
|
|
27
|
+
COMPLETED: "completed"
|
|
28
|
+
}, la = {
|
|
29
|
+
VERIFY_EMAIL: "verify-email"
|
|
30
|
+
};
|
|
31
|
+
let q = null;
|
|
32
|
+
function qe(p, r) {
|
|
33
|
+
q = Ae.create({
|
|
34
|
+
baseURL: r,
|
|
35
|
+
headers: {
|
|
36
|
+
Authorization: `Bearer ${p}`,
|
|
37
|
+
"Content-Type": "application/json",
|
|
38
|
+
"x-throttler-prefix": "throttler_profile_edit"
|
|
39
|
+
},
|
|
40
|
+
validateStatus: () => !0
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function se() {
|
|
44
|
+
if (!q)
|
|
45
|
+
throw new Error("Axios instance not initialized. Call initAxios(token, baseUrl) first.");
|
|
46
|
+
return q;
|
|
47
|
+
}
|
|
48
|
+
async function J(p, r, n) {
|
|
49
|
+
return se().post(p, r, n);
|
|
50
|
+
}
|
|
51
|
+
async function sa(p, r) {
|
|
52
|
+
return se().get(p, r);
|
|
53
|
+
}
|
|
54
|
+
async function Je(p) {
|
|
55
|
+
const r = await J("/users/profile/me", p);
|
|
56
|
+
if (console.log("---res: ", r), r.status !== 200 && r.status !== 201 || !r.data)
|
|
57
|
+
throw new Error("Ошибка при получении профиля пользователя");
|
|
58
|
+
return r.data;
|
|
59
|
+
}
|
|
60
|
+
const $ = w(null), j = Ue(null);
|
|
61
|
+
function G() {
|
|
62
|
+
return {
|
|
63
|
+
currentDialog: $,
|
|
64
|
+
dialogPayload: j,
|
|
65
|
+
openDialog: (m, h) => {
|
|
66
|
+
$.value = m, j.value = h ?? null;
|
|
67
|
+
},
|
|
68
|
+
closeDialog: () => {
|
|
69
|
+
$.value = null, j.value = null;
|
|
70
|
+
},
|
|
71
|
+
isDialogOpen: (m) => $.value === m
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const Ye = {
|
|
75
|
+
ru: {
|
|
76
|
+
Имя: "Имя",
|
|
77
|
+
Фамилия: "Фамилия",
|
|
78
|
+
Email: "Email",
|
|
79
|
+
Телефон: "Телефон",
|
|
80
|
+
Аватар: "Аватар",
|
|
81
|
+
Сохранить: "Сохранить",
|
|
82
|
+
Отмена: "Отмена",
|
|
83
|
+
Изменить: "Изменить",
|
|
84
|
+
"Отправить код": "Отправить код",
|
|
85
|
+
Подтвердить: "Подтвердить",
|
|
86
|
+
"Некорректный email": "Некорректный email",
|
|
87
|
+
"Некорректный номер телефона": "Некорректный номер телефона",
|
|
88
|
+
"Обязательное поле": "Обязательное поле",
|
|
89
|
+
"Загрузить обложку": "Загрузить обложку",
|
|
90
|
+
Формат: "Формат",
|
|
91
|
+
до: "до",
|
|
92
|
+
"Номер телефона": "Номер телефона",
|
|
93
|
+
"Сменить пароль": "Сменить пароль",
|
|
94
|
+
"E-mail изменен": "E-mail изменен",
|
|
95
|
+
"Не удалось сохранить изменения. Попробуйте позже": "Не удалось сохранить изменения. Попробуйте позже",
|
|
96
|
+
"Смена почты": "Смена почты",
|
|
97
|
+
"Чтобы продолжить, введите код подтверждения": "Чтобы продолжить, введите код подтверждения",
|
|
98
|
+
"Повторить через": "Повторить через",
|
|
99
|
+
"Введите новый адрес вашей почты": "Введите новый адрес вашей почты",
|
|
100
|
+
_Повторить_: "Повторить",
|
|
101
|
+
"Вы слишком часто запрашивали код.": "Вы слишком часто запрашивали код.",
|
|
102
|
+
"Новый код можно получить через": "Новый код можно получить через",
|
|
103
|
+
"Если есть вопросы": "Если есть вопросы",
|
|
104
|
+
"пишите в": "пишите в",
|
|
105
|
+
"Неверный код": "Неверный код",
|
|
106
|
+
"Такой email уже используется": "Такой email уже используется",
|
|
107
|
+
"Это не похоже на e-mail": "Это не похоже на e-mail",
|
|
108
|
+
"Осталось 2 попытки. После исчерпания лимита ввод кода будет заблокирован на 5 минут": "Осталось 2 попытки. После исчерпания лимита ввод кода будет заблокирован на 5 минут",
|
|
109
|
+
"Осталась 1 попытка. После следующей ошибки ввод кода будет заблокирован на 5 минут": "Осталась 1 попытка. После следующей ошибки ввод кода будет заблокирован на 5 минут",
|
|
110
|
+
"Смена номера телефона": "Смена номера телефона",
|
|
111
|
+
"Чтобы продолжить, введите код подтверждения из": "Чтобы продолжить, введите код подтверждения из",
|
|
112
|
+
"Получить код из СМС": "Получить код из СМС",
|
|
113
|
+
"Чтобы продолжить, введите новый номер": "Чтобы продолжить, введите новый номер",
|
|
114
|
+
"Такой номер уже используется": "Такой номер уже используется",
|
|
115
|
+
"Это не похоже на номер телефона": "Это не похоже на номер телефона",
|
|
116
|
+
"Смена пароля": "Смена пароля",
|
|
117
|
+
"Введите ваш текущий пароль": "Введите ваш текущий пароль",
|
|
118
|
+
"Текущий пароль": "Текущий пароль",
|
|
119
|
+
Продолжить: "Продолжить",
|
|
120
|
+
"Установите новый пароль для защиты аккаунта. Пароль должен содержать не менее 8 символов.": "Установите новый пароль для защиты аккаунта. Пароль должен содержать не менее 8 символов.",
|
|
121
|
+
"Новый пароль": "Новый пароль",
|
|
122
|
+
"Повторите новый пароль": "Повторите новый пароль",
|
|
123
|
+
"Пароль изменён": "Пароль изменён",
|
|
124
|
+
"Неверный текущий пароль": "Неверный текущий пароль",
|
|
125
|
+
"Осталось 2 попытки. Ввод пароля будет заблокирован на 5 минут.": "Осталось 2 попытки. Ввод пароля будет заблокирован на 5 минут.",
|
|
126
|
+
"Осталась 1 попытка. После исчерпания лимита ввод пароля будет заблокирован на 1 час.": "Осталась 1 попытка. После исчерпания лимита ввод пароля будет заблокирован на 1 час.",
|
|
127
|
+
"Достигнут лимит попыток ввода пароля. Попробуйте снова через 1 час.": "Достигнут лимит попыток ввода пароля. Попробуйте снова через 1 час.",
|
|
128
|
+
"Пароли не совпадают": "Пароли не совпадают",
|
|
129
|
+
"Пароль слишком короткий. Введите хотя бы 8 символов.": "Пароль слишком короткий. Введите хотя бы 8 символов.",
|
|
130
|
+
"Добавление номера телефона": "Добавление номера телефона",
|
|
131
|
+
"Номер телефона успешно привязан к аккаунту": "Номер телефона успешно привязан к аккаунту",
|
|
132
|
+
"Добавление почты": "Добавление почты",
|
|
133
|
+
"Добавление пароля": "Добавление пароля",
|
|
134
|
+
"Повторите пароль": "Повторите пароль",
|
|
135
|
+
"E-mail успешно привязан к аккаунту": "E-mail успешно привязан к аккаунту",
|
|
136
|
+
"Введите новый номер телефона": "Введите новый номер телефона",
|
|
137
|
+
"Телефон успешно изменен": "Телефон успешно изменен"
|
|
138
|
+
},
|
|
139
|
+
en: {
|
|
140
|
+
Имя: "First Name",
|
|
141
|
+
Фамилия: "Last Name",
|
|
142
|
+
Email: "Email",
|
|
143
|
+
Телефон: "Phone Number",
|
|
144
|
+
Аватар: "Avatar",
|
|
145
|
+
Сохранить: "Save",
|
|
146
|
+
Отмена: "Cancel",
|
|
147
|
+
Изменить: "Change",
|
|
148
|
+
"Отправить код": "Send verification code",
|
|
149
|
+
Подтвердить: "Verify",
|
|
150
|
+
"Некорректный email": "Invalid email format",
|
|
151
|
+
"Некорректный номер телефона": "Invalid phone number",
|
|
152
|
+
"Обязательное поле": "Required field",
|
|
153
|
+
"Загрузить обложку": "Upload cover",
|
|
154
|
+
Формат: "Format",
|
|
155
|
+
до: "up to",
|
|
156
|
+
"Номер телефона": "Phone number",
|
|
157
|
+
"Сменить пароль": "Change password",
|
|
158
|
+
"E-mail изменен": "Email has been updated",
|
|
159
|
+
"Не удалось сохранить изменения. Попробуйте позже": "Failed to save changes. Please try again later.",
|
|
160
|
+
"Смена почты": "Change of email",
|
|
161
|
+
"Чтобы продолжить, введите код подтверждения": "To continue, please enter the verification code",
|
|
162
|
+
"Повторить через": "Repeat after",
|
|
163
|
+
"Введите новый адрес вашей почты": "Enter your new email address",
|
|
164
|
+
_Повторить_: "Repeat",
|
|
165
|
+
"Вы слишком часто запрашивали код.": "You have requested the code too many times.",
|
|
166
|
+
"Новый код можно получить через": "A new code can be obtained through",
|
|
167
|
+
"Если есть вопросы": "If you have any questions",
|
|
168
|
+
"пишите в": "write to",
|
|
169
|
+
"Неверный код": "Invalid code",
|
|
170
|
+
"Такой email уже используется": "This email is already in use",
|
|
171
|
+
"Это не похоже на e-mail": "This doesn't look like email.",
|
|
172
|
+
"Осталось 2 попытки. После исчерпания лимита ввод кода будет заблокирован на 5 минут": "You have 2 attempts remaining. Once the limit is reached, code entry will be blocked for 5 minutes",
|
|
173
|
+
"Осталась 1 попытка. После следующей ошибки ввод кода будет заблокирован на 5 минут": "You have 1 attempt left. After another error, entering the code will be blocked for 5 minutes",
|
|
174
|
+
"Смена номера телефона": "Change of phone number",
|
|
175
|
+
"Чтобы продолжить, введите код подтверждения из": "To continue, please enter the verification code from",
|
|
176
|
+
"Получить код из СМС": "Receive code from SMS",
|
|
177
|
+
"Чтобы продолжить, введите новый номер": "To continue, please enter a new number",
|
|
178
|
+
"Такой номер уже используется": "This number is already in use",
|
|
179
|
+
"Это не похоже на номер телефона": "This doesn't look like a phone number",
|
|
180
|
+
"Смена пароля": "Change password",
|
|
181
|
+
"Введите ваш текущий пароль": "Enter your current password",
|
|
182
|
+
"Текущий пароль": "Current Password",
|
|
183
|
+
Продолжить: "Continue",
|
|
184
|
+
"Установите новый пароль для защиты аккаунта. Пароль должен содержать не менее 8 символов.": "Set a new password to protect your account. The password must be at least 8 characters long.",
|
|
185
|
+
"Новый пароль": "New Password",
|
|
186
|
+
"Повторите новый пароль": "Repeat the new password",
|
|
187
|
+
"Пароль изменён": "Password changed",
|
|
188
|
+
"Неверный текущий пароль": "Incorrect current password",
|
|
189
|
+
"Осталось 2 попытки. Ввод пароля будет заблокирован на 5 минут.": "You have 2 attempts left. Password entry will be blocked for 5 minutes.",
|
|
190
|
+
"Осталась 1 попытка. После исчерпания лимита ввод пароля будет заблокирован на 1 час.": "You have 1 attempt remaining. Once the limit is reached, password entry will be blocked for 1 hour.",
|
|
191
|
+
"Достигнут лимит попыток ввода пароля. Попробуйте снова через 1 час.": "The password entry attempt limit has been reached. Please try again in 1 hour.",
|
|
192
|
+
"Пароли не совпадают": "The passwords don't match",
|
|
193
|
+
"Пароль слишком короткий. Введите хотя бы 8 символов.": "The password is too short. Please enter at least 8 characters.",
|
|
194
|
+
"Добавление номера телефона": "Adding a phone number",
|
|
195
|
+
"Номер телефона успешно привязан к аккаунту": "The phone number has been successfully linked to the account.",
|
|
196
|
+
"Добавление почты": "Adding mail",
|
|
197
|
+
"Добавление пароля": "Adding a password",
|
|
198
|
+
"Повторите пароль": "Repeat password",
|
|
199
|
+
"E-mail успешно привязан к аккаунту": "The email has been successfully linked to the account",
|
|
200
|
+
"Введите новый номер телефона": "Enter a new phone number",
|
|
201
|
+
"Телефон успешно изменен": "Phone number successfully changed"
|
|
202
|
+
}
|
|
203
|
+
}, Ge = /* @__PURE__ */ Y({
|
|
204
|
+
__name: "DialogManager",
|
|
205
|
+
props: {
|
|
206
|
+
language: {},
|
|
207
|
+
provider: {}
|
|
208
|
+
},
|
|
209
|
+
emits: ["clean-input-errors", "on-update-jwt", "update-phone-field", "update-email-field", "on-password-error", "on-toast"],
|
|
210
|
+
setup(p, { emit: r }) {
|
|
211
|
+
const n = r, m = w(!0), { currentDialog: h, dialogPayload: g, closeDialog: P } = G(), i = {
|
|
212
|
+
email: R(() => import("./ProfileEmailDialog-_CmzDM2p.js")),
|
|
213
|
+
phone: R(() => import("./ProfilePhoneDialog-D4EwUMe2.js")),
|
|
214
|
+
password: R(() => import("./ProfilePasswordDialog-DTLqgHqm.js"))
|
|
215
|
+
}, u = ({ email: l }) => {
|
|
216
|
+
n("update-email-field", l);
|
|
217
|
+
}, c = ({ phone: l }) => {
|
|
218
|
+
n("update-phone-field", l);
|
|
219
|
+
};
|
|
220
|
+
return ne(h, (l) => {
|
|
221
|
+
m.value = !!l;
|
|
222
|
+
}), (l, d) => s(h) ? (y(), D(De(i[s(h)]), Fe({
|
|
223
|
+
key: 0,
|
|
224
|
+
modelValue: m.value,
|
|
225
|
+
"onUpdate:modelValue": d[0] || (d[0] = (v) => m.value = v),
|
|
226
|
+
language: l.language,
|
|
227
|
+
provider: l.provider
|
|
228
|
+
}, s(g), {
|
|
229
|
+
onClose: s(P),
|
|
230
|
+
onCleanInputErrors: d[1] || (d[1] = (v) => n("clean-input-errors")),
|
|
231
|
+
onOnUpdateJwt: d[2] || (d[2] = (v, o, b) => n("on-update-jwt", v, o, b)),
|
|
232
|
+
onSubmitEmail: u,
|
|
233
|
+
onSubmitPhone: c,
|
|
234
|
+
onOnPasswordError: d[3] || (d[3] = (v, o) => n("on-password-error", v, o)),
|
|
235
|
+
onOnToast: d[4] || (d[4] = (v) => n("on-toast", v))
|
|
236
|
+
}), null, 16, ["modelValue", "language", "provider", "onClose"])) : E("", !0);
|
|
237
|
+
}
|
|
238
|
+
}), We = { class: "base-container" }, Ke = {
|
|
239
|
+
key: 1,
|
|
240
|
+
class: "input-wrapper"
|
|
241
|
+
}, Ze = {
|
|
242
|
+
key: 2,
|
|
243
|
+
class: "input-wrapper"
|
|
244
|
+
}, He = {
|
|
245
|
+
key: 3,
|
|
246
|
+
class: "input-wrapper"
|
|
247
|
+
}, Qe = {
|
|
248
|
+
key: 4,
|
|
249
|
+
class: "input-wrapper"
|
|
250
|
+
}, Xe = { class: "buttons-container" }, _e = {
|
|
251
|
+
key: 0,
|
|
252
|
+
class: "centered-overlay"
|
|
253
|
+
}, ea = { class: "toastWrapper" }, aa = /* @__PURE__ */ Y({
|
|
254
|
+
__name: "PEditUserContact",
|
|
255
|
+
props: {
|
|
256
|
+
language: {},
|
|
257
|
+
throttlerPrefix: {},
|
|
258
|
+
provider: {},
|
|
259
|
+
requestUrl: {},
|
|
260
|
+
accessToken: {},
|
|
261
|
+
refreshToken: {},
|
|
262
|
+
fields: {}
|
|
263
|
+
},
|
|
264
|
+
emits: ["open-email-dialog", "open-phone-dialog", "open-password-dialog", "on-update-jwt", "on-password-error", "update-tokens"],
|
|
265
|
+
setup(p, { emit: r }) {
|
|
266
|
+
const n = p, m = r, h = k(() => n.language ?? "ru"), g = (e) => Ye[h.value][e] || e, { openDialog: P } = G(), i = z({ firstName: "", lastName: "" }), u = w({ firstName: "", lastName: "" }), c = z({ firstName: !1, lastName: !1, email: !1, phone: !1 }), l = w(""), d = w(""), v = w(!1), o = z({
|
|
267
|
+
value: null,
|
|
268
|
+
loading: !1,
|
|
269
|
+
accept: ["image/png", "image/jpeg"],
|
|
270
|
+
uploadLimit: 10 * 1024 * 1024,
|
|
271
|
+
// 10mb вроде
|
|
272
|
+
imageBinary: null,
|
|
273
|
+
imageContent: ""
|
|
274
|
+
}), b = w(!1), F = w(!1), W = w(!0), K = w(!0), Z = w(void 0), H = w(""), ie = k(() => c.firstName && !i.firstName.trim() ? "Введите имя" : ""), ue = k(() => c.lastName && !i.lastName.trim() ? "Введите фамилию" : ""), me = k(() => c.email && !l.value.trim() ? "Введите e-mail" : ""), de = k(() => c.phone && !d.value.trim() ? "Введите номер телефона" : ""), T = (e) => n.fields.some((a) => a.key === e), Q = (e) => e && e.trim() ? "edit" : "bind", O = () => setTimeout(() => {
|
|
275
|
+
var e;
|
|
276
|
+
return (e = document.activeElement) == null ? void 0 : e.blur();
|
|
277
|
+
}, 0), pe = k(() => !!(l.value && l.value.trim() !== "")), ce = (e) => P("email", { mode: e ? "edit" : "bind", initialEmail: e }), fe = () => {
|
|
278
|
+
O(), m("open-email-dialog", l.value, Q(l.value)), ce(l.value);
|
|
279
|
+
}, ge = () => {
|
|
280
|
+
O(), m("open-phone-dialog", d.value, Q(d.value));
|
|
281
|
+
}, ve = async (e, a, t) => {
|
|
282
|
+
e === "email" && t && (l.value = t), e === "phone" && t && (d.value = t), m("on-update-jwt");
|
|
283
|
+
}, he = (e) => {
|
|
284
|
+
d.value = e;
|
|
285
|
+
}, we = (e) => {
|
|
286
|
+
l.value = e;
|
|
287
|
+
}, ye = (e, a) => {
|
|
288
|
+
F.value = !0, m("on-password-error", e, a);
|
|
289
|
+
}, Ee = () => {
|
|
290
|
+
W.value = !1, K.value = !1;
|
|
291
|
+
}, X = (e) => {
|
|
292
|
+
F.value = !0, Z.value = e.color ?? "", H.value = e.text ?? "";
|
|
293
|
+
}, I = (e) => {
|
|
294
|
+
c[e] = !0;
|
|
295
|
+
}, Ne = (e) => {
|
|
296
|
+
if (!e) {
|
|
297
|
+
o.imageContent = "", o.imageBinary = null, o.value = null;
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
o.value = e, o.imageBinary = e.fileBinary ?? null, o.imageContent = e.fileContent ?? "", v.value = !0;
|
|
301
|
+
}, _ = async (e, a, t = "image/png") => {
|
|
302
|
+
if (!e) return null;
|
|
303
|
+
const M = await (await fetch(e)).blob();
|
|
304
|
+
return new File([M], a, { type: t });
|
|
305
|
+
}, be = () => {
|
|
306
|
+
o.value = null, o.imageBinary = null, o.imageContent = "", v.value = !1;
|
|
307
|
+
}, Ce = async (e) => {
|
|
308
|
+
if (v.value = !1, o.imageContent = e, !o.imageBinary) return;
|
|
309
|
+
const a = await _(e, o.imageBinary.name, o.imageBinary.type || "image/png");
|
|
310
|
+
if (a)
|
|
311
|
+
try {
|
|
312
|
+
o.loading = !0;
|
|
313
|
+
const t = "019a49d3-9305-7b90-acb8-a255b7007696", C = new FormData();
|
|
314
|
+
C.append("file", a), await J("/users/profile/{userId}/avatar", {
|
|
315
|
+
params: { path: { userId: t } },
|
|
316
|
+
body: C
|
|
317
|
+
});
|
|
318
|
+
} catch {
|
|
319
|
+
} finally {
|
|
320
|
+
o.loading = !1;
|
|
321
|
+
}
|
|
322
|
+
}, ke = async (e) => {
|
|
323
|
+
o.imageContent = e ?? "", o.imageBinary && (o.imageBinary = await _(
|
|
324
|
+
e ?? "",
|
|
325
|
+
o.imageBinary.name,
|
|
326
|
+
o.imageBinary.type || "image/png"
|
|
327
|
+
));
|
|
328
|
+
}, ee = w(!1), ae = async (e) => {
|
|
329
|
+
var t, C;
|
|
330
|
+
const a = (t = i[e]) == null ? void 0 : t.trim();
|
|
331
|
+
if (a)
|
|
332
|
+
try {
|
|
333
|
+
ee.value = !0;
|
|
334
|
+
const B = (C = (await J("/users/profile/update-name", { [e]: a })).data) == null ? void 0 : C.data;
|
|
335
|
+
B != null && B.user && (i.firstName = B.user.firstName ?? i.firstName, i.lastName = B.user.lastName ?? i.lastName, u.value = {
|
|
336
|
+
firstName: i.firstName,
|
|
337
|
+
lastName: i.lastName
|
|
338
|
+
});
|
|
339
|
+
} catch {
|
|
340
|
+
} finally {
|
|
341
|
+
ee.value = !1;
|
|
342
|
+
}
|
|
343
|
+
}, Pe = async () => {
|
|
344
|
+
var e;
|
|
345
|
+
if (!n.accessToken) throw new Error("Access token не передан в props");
|
|
346
|
+
try {
|
|
347
|
+
const t = (e = (await Je({
|
|
348
|
+
accessToken: n.accessToken,
|
|
349
|
+
refreshToken: n.refreshToken ?? "",
|
|
350
|
+
excludeFields: []
|
|
351
|
+
})).data) == null ? void 0 : e.user;
|
|
352
|
+
if (!t) throw new Error("user data отсутствует в response");
|
|
353
|
+
i.firstName = t.privateFirstName ?? "", i.lastName = t.privateLastName ?? "", l.value = t.email ?? "", d.value = t.phoneNumber ?? "", o.imageContent = t.avatar ?? "", u.value = { firstName: t.privateFirstName ?? "", lastName: t.privateLastName ?? "" };
|
|
354
|
+
} catch {
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
ne(
|
|
358
|
+
() => [i.firstName, i.lastName],
|
|
359
|
+
([e, a]) => {
|
|
360
|
+
const t = e.trim() !== u.value.firstName.trim() || a.trim() !== u.value.lastName.trim();
|
|
361
|
+
b.value = t;
|
|
362
|
+
},
|
|
363
|
+
{ immediate: !0 }
|
|
364
|
+
);
|
|
365
|
+
const Te = async () => {
|
|
366
|
+
b.value && (await Promise.all([ae("firstName"), ae("lastName")]), X({ color: "success", text: "Изменения сохранены" }), b.value = !1);
|
|
367
|
+
}, Be = () => {
|
|
368
|
+
O(), m("open-password-dialog");
|
|
369
|
+
};
|
|
370
|
+
return Ie(async () => {
|
|
371
|
+
if (!n.accessToken) throw new Error("Access token не передан в props");
|
|
372
|
+
if (!n.requestUrl) throw new Error("auth-backend url не передан в props");
|
|
373
|
+
qe(n.accessToken, n.requestUrl), await Pe();
|
|
374
|
+
}), (e, a) => (y(), N(re, null, [
|
|
375
|
+
f(Ge, {
|
|
376
|
+
language: h.value,
|
|
377
|
+
provider: e.provider,
|
|
378
|
+
onCleanInputErrors: Ee,
|
|
379
|
+
onOnUpdateJwt: ve,
|
|
380
|
+
onUpdatePhoneField: he,
|
|
381
|
+
onUpdateEmailField: we,
|
|
382
|
+
onOnPasswordError: ye,
|
|
383
|
+
onOnToast: X
|
|
384
|
+
}, null, 8, ["language", "provider"]),
|
|
385
|
+
L("div", We, [
|
|
386
|
+
T("avatar") ? (y(), D(s($e), {
|
|
387
|
+
key: 0,
|
|
388
|
+
modelValue: o.value,
|
|
389
|
+
"onUpdate:modelValue": [
|
|
390
|
+
a[0] || (a[0] = (t) => o.value = t),
|
|
391
|
+
a[1] || (a[1] = (t) => Ne(t))
|
|
392
|
+
],
|
|
393
|
+
type: "img",
|
|
394
|
+
src: o.imageContent,
|
|
395
|
+
accept: o.accept,
|
|
396
|
+
loading: o.loading,
|
|
397
|
+
label: g("Загрузить обложку"),
|
|
398
|
+
"upload-limit": o.uploadLimit
|
|
399
|
+
}, {
|
|
400
|
+
afterLoadLabel: U(() => [
|
|
401
|
+
V(x(g("Загрузить обложку")), 1)
|
|
402
|
+
]),
|
|
403
|
+
subtext: U(() => [
|
|
404
|
+
V(x(`${g("Формат")} ${s(je)(o.accept).join(", ")} ${g("до")} ${s(ze)(o.uploadLimit)}`), 1)
|
|
405
|
+
]),
|
|
406
|
+
_: 1
|
|
407
|
+
}, 8, ["modelValue", "src", "accept", "loading", "label", "upload-limit"])) : E("", !0),
|
|
408
|
+
T("firstName") ? (y(), N("div", Ke, [
|
|
409
|
+
f(s(S), {
|
|
410
|
+
modelValue: i.firstName,
|
|
411
|
+
"onUpdate:modelValue": a[2] || (a[2] = (t) => i.firstName = t),
|
|
412
|
+
size: "large",
|
|
413
|
+
label: g("Имя"),
|
|
414
|
+
error: ie.value,
|
|
415
|
+
onBlur: a[3] || (a[3] = (t) => c.firstName = !0),
|
|
416
|
+
onInput: a[4] || (a[4] = (t) => I("firstName"))
|
|
417
|
+
}, null, 8, ["modelValue", "label", "error"]),
|
|
418
|
+
f(s(A), { class: "icon-locked" })
|
|
419
|
+
])) : E("", !0),
|
|
420
|
+
T("lastName") ? (y(), N("div", Ze, [
|
|
421
|
+
f(s(S), {
|
|
422
|
+
modelValue: i.lastName,
|
|
423
|
+
"onUpdate:modelValue": a[5] || (a[5] = (t) => i.lastName = t),
|
|
424
|
+
size: "large",
|
|
425
|
+
label: g("Фамилия"),
|
|
426
|
+
error: ue.value,
|
|
427
|
+
onBlur: a[6] || (a[6] = (t) => c.lastName = !0),
|
|
428
|
+
onInput: a[7] || (a[7] = (t) => I("lastName"))
|
|
429
|
+
}, null, 8, ["modelValue", "label", "error"]),
|
|
430
|
+
f(s(A), { class: "icon-locked" })
|
|
431
|
+
])) : E("", !0),
|
|
432
|
+
T("email") ? (y(), N("div", He, [
|
|
433
|
+
f(s(S), {
|
|
434
|
+
modelValue: l.value,
|
|
435
|
+
"onUpdate:modelValue": a[8] || (a[8] = (t) => l.value = t),
|
|
436
|
+
size: "large",
|
|
437
|
+
"text-size": "medium",
|
|
438
|
+
label: "E-mail",
|
|
439
|
+
type: "email",
|
|
440
|
+
readonly: "",
|
|
441
|
+
style: { cursor: "pointer" },
|
|
442
|
+
error: me.value && K.value,
|
|
443
|
+
onBlur: a[9] || (a[9] = (t) => c.email = !0),
|
|
444
|
+
onInput: a[10] || (a[10] = (t) => I("email")),
|
|
445
|
+
onClick: fe
|
|
446
|
+
}, null, 8, ["modelValue", "error"]),
|
|
447
|
+
f(s(A), { class: "icon-locked" })
|
|
448
|
+
])) : E("", !0),
|
|
449
|
+
T("phone") ? (y(), N("div", Qe, [
|
|
450
|
+
f(s(S), {
|
|
451
|
+
modelValue: d.value,
|
|
452
|
+
"onUpdate:modelValue": a[11] || (a[11] = (t) => d.value = t),
|
|
453
|
+
size: "large",
|
|
454
|
+
"text-size": "medium",
|
|
455
|
+
label: g("Номер телефона"),
|
|
456
|
+
type: "tel",
|
|
457
|
+
readonly: "",
|
|
458
|
+
style: { cursor: "pointer" },
|
|
459
|
+
error: de.value && W.value,
|
|
460
|
+
onBlur: a[12] || (a[12] = (t) => c.phone = !0),
|
|
461
|
+
onInput: a[13] || (a[13] = (t) => I("phone")),
|
|
462
|
+
onClick: ge
|
|
463
|
+
}, null, 8, ["modelValue", "label", "error"]),
|
|
464
|
+
f(s(A), { class: "icon-locked" })
|
|
465
|
+
])) : E("", !0),
|
|
466
|
+
L("div", Xe, [
|
|
467
|
+
pe.value ? (y(), D(s(oe), {
|
|
468
|
+
key: 0,
|
|
469
|
+
color: "secondary",
|
|
470
|
+
onClick: Be
|
|
471
|
+
}, {
|
|
472
|
+
default: U(() => [
|
|
473
|
+
V(x(g("Сменить пароль")), 1)
|
|
474
|
+
]),
|
|
475
|
+
_: 1
|
|
476
|
+
})) : E("", !0),
|
|
477
|
+
f(s(oe), {
|
|
478
|
+
disabled: !b.value,
|
|
479
|
+
onClick: Te
|
|
480
|
+
}, {
|
|
481
|
+
default: U(() => [
|
|
482
|
+
V(x(g("Сохранить")), 1)
|
|
483
|
+
]),
|
|
484
|
+
_: 1
|
|
485
|
+
}, 8, ["disabled"])
|
|
486
|
+
])
|
|
487
|
+
]),
|
|
488
|
+
v.value ? (y(), D(te, {
|
|
489
|
+
key: 0,
|
|
490
|
+
to: "body"
|
|
491
|
+
}, [
|
|
492
|
+
v.value ? (y(), N("div", _e, [
|
|
493
|
+
f(s(Oe), {
|
|
494
|
+
"circle-mode": !0,
|
|
495
|
+
"model-value": o.imageContent,
|
|
496
|
+
onClose: be,
|
|
497
|
+
onSave: a[14] || (a[14] = (t) => Ce(t)),
|
|
498
|
+
"onUpdate:modelValue": a[15] || (a[15] = (t) => ke(t))
|
|
499
|
+
}, null, 8, ["model-value"])
|
|
500
|
+
])) : E("", !0)
|
|
501
|
+
])) : E("", !0),
|
|
502
|
+
(y(), D(te, { to: "#toast-root" }, [
|
|
503
|
+
L("div", ea, [
|
|
504
|
+
f(Ve, { name: "list" }, {
|
|
505
|
+
default: U(() => [
|
|
506
|
+
xe(f(s(Me), {
|
|
507
|
+
class: "toast",
|
|
508
|
+
color: Z.value,
|
|
509
|
+
text: H.value,
|
|
510
|
+
onClose: a[16] || (a[16] = (t) => F.value = !1)
|
|
511
|
+
}, null, 8, ["color", "text"]), [
|
|
512
|
+
[Se, F.value]
|
|
513
|
+
])
|
|
514
|
+
]),
|
|
515
|
+
_: 1
|
|
516
|
+
})
|
|
517
|
+
])
|
|
518
|
+
])),
|
|
519
|
+
f(s(le))
|
|
520
|
+
], 64));
|
|
521
|
+
}
|
|
522
|
+
}), ia = /* @__PURE__ */ Y({
|
|
523
|
+
__name: "index",
|
|
524
|
+
props: {
|
|
525
|
+
throttlerPrefix: {},
|
|
526
|
+
provider: {},
|
|
527
|
+
requestUrl: {},
|
|
528
|
+
accessToken: {},
|
|
529
|
+
refreshToken: {},
|
|
530
|
+
language: {},
|
|
531
|
+
fields: {}
|
|
532
|
+
},
|
|
533
|
+
emits: ["on-update-jwt", "update-tokens"],
|
|
534
|
+
setup(p, { emit: r }) {
|
|
535
|
+
const n = r, { openDialog: m } = G(), h = (u, c) => {
|
|
536
|
+
m("email", { initialEmail: u, mode: c });
|
|
537
|
+
}, g = (u, c) => {
|
|
538
|
+
m("phone", { initialPhone: u, mode: c });
|
|
539
|
+
}, P = () => {
|
|
540
|
+
m("password");
|
|
541
|
+
}, i = (u, c, l) => {
|
|
542
|
+
n("on-update-jwt", u, c, l);
|
|
543
|
+
};
|
|
544
|
+
return (u, c) => (y(), N(re, null, [
|
|
545
|
+
f(s(Re)),
|
|
546
|
+
f(aa, {
|
|
547
|
+
"throttler-prefix": u.throttlerPrefix,
|
|
548
|
+
provider: u.provider,
|
|
549
|
+
"request-url": u.requestUrl,
|
|
550
|
+
language: u.language,
|
|
551
|
+
fields: u.fields,
|
|
552
|
+
"access-token": u.accessToken,
|
|
553
|
+
"refresh-token": u.refreshToken,
|
|
554
|
+
onOpenEmailDialog: h,
|
|
555
|
+
onOpenPhoneDialog: g,
|
|
556
|
+
onOpenPasswordDialog: P,
|
|
557
|
+
onOnUpdateJwt: i
|
|
558
|
+
}, null, 8, ["throttler-prefix", "provider", "request-url", "language", "fields", "access-token", "refresh-token"]),
|
|
559
|
+
f(s(le))
|
|
560
|
+
], 64));
|
|
561
|
+
}
|
|
562
|
+
});
|
|
563
|
+
export {
|
|
564
|
+
la as B,
|
|
565
|
+
ra as C,
|
|
566
|
+
ia as _,
|
|
567
|
+
sa as g,
|
|
568
|
+
J as p,
|
|
569
|
+
Ye as t
|
|
570
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".icon-locked{pointer-events:auto;position:absolute;right:1rem;top:1rem;color:#b6c7d6}.input-wrapper{position:relative;width:100%}.dialogTitle{z-index:10;width:100%;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#2b3238}.dialogDefaultContainer{display:flex;align-items:flex-start;flex-direction:column;width:100%;gap:32px;margin-top:16px;padding:10px 16px}.dialogDefaultContainerTextHint{font-weight:400;font-size:14px;line-height:20px;text-align:center;color:#1b1b1b}.dialogDefaultContainerRateLimitText{font-weight:600;font-size:14px;line-height:20px;color:#d0dbe4}.dialogDefaultContainerInsideContent{width:100%;display:flex;flex-direction:column;gap:24px}.dialogDefaultContainerRateLimitTextActive{color:#1c7ef1;cursor:pointer}.dialogDefaultContainerSendCodeBySmsText{color:#1c7ef1;cursor:pointer;font-size:14px;font-weight:600;display:flex;align-items:center;text-align:center}.chip{display:flex;align-items:center;justify-content:center;flex-direction:row;gap:4px;height:24px;font-size:12px;font-weight:600;color:#1b1b1b;padding:4px;line-height:16px;background-color:#b6d7ff4d;border-radius:4px;text-align:center;margin-left:5px}.cross{cursor:pointer;text-align:end}.finalLimitWrapper{display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:12px;width:440px;min-height:94px;background:#e4606026;border-radius:8px}.finalLimitText{text-align:center;font-family:Inter,sans-serif;font-size:14px;line-height:20px;color:#5d7285}.finalLimitLink{font-family:Inter,sans-serif;font-weight:600;font-size:14px;line-height:20px;color:#1c7ef1;text-align:center;cursor:pointer;text-decoration:none}.finalLimitLink:hover{text-decoration:underline}.toastWrapper{position:fixed;bottom:1rem;right:1rem;z-index:9999}.toast{width:100%}.base-container{margin-top:1.5rem;display:flex;flex-direction:column;gap:1.25rem;width:490px;height:428px}.icon-disabled{pointer-events:none;position:absolute;right:1rem;top:1rem;color:#b6c7d6}.centered-overlay{position:absolute;left:50%;top:50%;z-index:1000;height:100%;width:100%;transform:translate(-50%,-50%)}.buttons-container{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-start}.buttons-container PButton{flex:1 1 100%}._loaderOverlay_cpu73_1[data-v-9e697525]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background:#ffffffb3;border-radius:16px;z-index:99}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
|
+
import { _ as r } from "./index-DtHlzO1x.js";
|
|
3
|
+
export {
|
|
4
|
+
r as PEditUserContact
|
|
5
|
+
};
|