@yourgoods/ui-smart 0.53.37 → 0.53.39
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-aS-CW0cn.js → ProfileEmailDialog-DIvTOerl.js} +2 -2
- package/dist/{ProfilePasswordDialog-Hew1T5DH.js → ProfilePasswordDialog-Bkci1f-J.js} +1 -1
- package/dist/{ProfilePhoneDialog-BysaY3fk.js → ProfilePhoneDialog-C1V1NeW4.js} +2 -2
- package/dist/components/PEmailOrPhoneInput/utils/detect-field.d.ts +1 -0
- package/dist/{index-Dz48Vppw.js → index-BysRZGf4.js} +377 -378
- package/dist/index.js +2 -2
- package/dist/{useRateLimitToast-BjQhqrta.js → useRateLimitToast-qSyYLX2x.js} +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as oe, ref as T, reactive as Z, watch as Y, computed as b, toRefs as ce, createElementBlock as I, openBlock as y, createElementVNode as x, createCommentVNode as D, toDisplayString as _, createVNode as $, unref as u, isRef as ee, withCtx as G, createTextVNode as ie, Fragment as Ae, createBlock as H, resolveDynamicComponent as he, onMounted as Fe } from "vue";
|
|
2
|
-
import { _ as ve, c as ke, u as Re, a as ze, P as Me, b as We } from "./useRateLimitToast-
|
|
3
|
-
import { C as F, _ as He, B as qe, p as W, g as je } from "./index-
|
|
2
|
+
import { _ as ve, c as ke, u as Re, a as ze, P as Me, b as We } from "./useRateLimitToast-qSyYLX2x.js";
|
|
3
|
+
import { C as F, _ as He, B as qe, p as W, g as je } from "./index-BysRZGf4.js";
|
|
4
4
|
import { PInput as J, IconMailMd as pe, PButton as ne, IconEyeMd as Ve, IconEyeClosedMd as be, PDialog as Ge, PTopBar as Ye, IconCrossMd as Je } from "@profeat/ui-kit";
|
|
5
5
|
const Ke = { class: "dialogDefaultContainerInsideContent" }, Qe = { class: "dialogDefaultContainerTextHint" }, Xe = {
|
|
6
6
|
key: 0,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as ye, ref as a, reactive as _, computed as u, watch as Z, onMounted as Ce, createElementBlock as S, openBlock as g, Fragment as ge, createVNode as n, unref as o, withCtx as m, createCommentVNode as ee, createElementVNode as r, toDisplayString as V, createBlock as B, resolveDynamicComponent as $, createTextVNode as z } from "vue";
|
|
2
|
-
import { C as I, p as D, g as Ve } from "./index-
|
|
2
|
+
import { C as I, p as D, g as Ve } from "./index-BysRZGf4.js";
|
|
3
3
|
import { PDialog as be, PInput as M, IconEyeMd as O, IconEyeClosedMd as U, PButton as F, PTopBar as Te, IconCrossMd as Ie, PTeleportContainer as xe } from "@profeat/ui-kit";
|
|
4
4
|
function ke(b) {
|
|
5
5
|
return { showPasswordRateLimitToast: (P) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createElementBlock as S, openBlock as v, createElementVNode as H, defineComponent as he, reactive as ve, watch as _, ref as O, toRefs as Ce, computed as I, createCommentVNode as B, createVNode as b, toDisplayString as G, createBlock as J, createTextVNode as Z, unref as r, isRef as le, withCtx as X, onMounted as We, Fragment as je } from "vue";
|
|
2
|
-
import { _ as we, c as Ne, a as He, u as Ge, P as Oe, b as Je } from "./useRateLimitToast-
|
|
2
|
+
import { _ as we, c as Ne, a as He, u as Ge, P as Oe, b as Je } from "./useRateLimitToast-qSyYLX2x.js";
|
|
3
3
|
import { IconTelegramSm as Pe, PInput as se, IconPhoneMd as Re, IconMailMd as Ke, PButton as ze, PDialog as Qe, PTopBar as Xe, IconCrossMd as Ye, PTeleportContainer as Ze } from "@profeat/ui-kit";
|
|
4
|
-
import { C as j, t as De, p as te, g as Ae } from "./index-
|
|
4
|
+
import { C as j, t as De, p as te, g as Ae } from "./index-BysRZGf4.js";
|
|
5
5
|
const _e = {
|
|
6
6
|
xmlns: "http://www.w3.org/2000/svg",
|
|
7
7
|
width: "12",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
import
|
|
3
|
-
import { PInputFileUploader as
|
|
4
|
-
function
|
|
5
|
-
if (
|
|
1
|
+
import { ref as E, shallowRef as We, defineComponent as ee, defineAsyncComponent as ae, watch as Ne, createBlock as $, createCommentVNode as D, unref as p, openBlock as N, resolveDynamicComponent as Ye, mergeProps as Ke, computed as B, reactive as te, onMounted as Xe, createElementBlock as V, Fragment as Ce, createVNode as b, createElementVNode as ne, withCtx as O, toDisplayString as G, createTextVNode as oe, Teleport as ve, Transition as He, withDirectives as Ze, vShow as Qe } from "vue";
|
|
2
|
+
import ea from "axios";
|
|
3
|
+
import { PInputFileUploader as aa, PInput as j, IconFilledEditMd as Z, PButton as he, PImageCropper as ta, PToast as na, PTeleportContainer as ke, PToastContainer as oa, IconPhoneMd as ra, IconMailMd as la } from "@profeat/ui-kit";
|
|
4
|
+
function sa(l, s = 2) {
|
|
5
|
+
if (l === 0)
|
|
6
6
|
return "0 B";
|
|
7
|
-
const t = 1024, n = ["B", "KB", "MB", "GB", "TB", "PB", "EB"], f = Math.floor(Math.log(
|
|
8
|
-
return `${Number.parseFloat((
|
|
7
|
+
const t = 1024, n = ["B", "KB", "MB", "GB", "TB", "PB", "EB"], f = Math.floor(Math.log(l) / Math.log(t));
|
|
8
|
+
return `${Number.parseFloat((l / t ** f).toFixed(s))} ${n[f]}`;
|
|
9
9
|
}
|
|
10
|
-
const
|
|
10
|
+
const ia = {
|
|
11
11
|
"image/jpeg": "JPEG",
|
|
12
12
|
"image/png": "PNG",
|
|
13
13
|
"application/pdf": "PDF",
|
|
@@ -15,25 +15,25 @@ const sa = {
|
|
|
15
15
|
"application/zip": "ZIP Archive"
|
|
16
16
|
// ...
|
|
17
17
|
};
|
|
18
|
-
function
|
|
19
|
-
return
|
|
18
|
+
function ua(l) {
|
|
19
|
+
return l.map((s) => {
|
|
20
20
|
var t;
|
|
21
|
-
return
|
|
21
|
+
return ia[s] || ((t = s.split("/")[1]) == null ? void 0 : t.toUpperCase());
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
const
|
|
24
|
+
const za = {
|
|
25
25
|
OLD: "old",
|
|
26
26
|
NEW: "new",
|
|
27
27
|
COMPLETED: "completed"
|
|
28
|
-
},
|
|
28
|
+
}, La = {
|
|
29
29
|
VERIFY_EMAIL: "verify-email"
|
|
30
30
|
};
|
|
31
|
-
let
|
|
32
|
-
function
|
|
33
|
-
|
|
31
|
+
let le = null;
|
|
32
|
+
function da(l, s, t) {
|
|
33
|
+
le = ea.create({
|
|
34
34
|
baseURL: s,
|
|
35
35
|
headers: {
|
|
36
|
-
Authorization: `Bearer ${
|
|
36
|
+
Authorization: `Bearer ${l}`,
|
|
37
37
|
"x-throttler-prefix": t ?? "throttler_profile_edit"
|
|
38
38
|
// здесь можно словить баг, который может быть сложно отследить, если будет передаваться пустой прелфикс
|
|
39
39
|
// 'Content-Type': 'application/json',
|
|
@@ -41,41 +41,41 @@ function ua(r, s, t) {
|
|
|
41
41
|
validateStatus: (n) => n >= 200 && n < 300
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
function
|
|
45
|
-
if (!
|
|
44
|
+
function ue() {
|
|
45
|
+
if (!le)
|
|
46
46
|
throw new Error("Axios instance not initialized. Call initAxios(token, baseUrl) first.");
|
|
47
|
-
return
|
|
47
|
+
return le;
|
|
48
48
|
}
|
|
49
|
-
async function
|
|
50
|
-
return
|
|
49
|
+
async function se(l, s, t) {
|
|
50
|
+
return ue().post(l, s, t);
|
|
51
51
|
}
|
|
52
|
-
async function
|
|
53
|
-
return
|
|
52
|
+
async function ma(l, s) {
|
|
53
|
+
return ue().get(l, s);
|
|
54
54
|
}
|
|
55
|
-
async function
|
|
56
|
-
return
|
|
55
|
+
async function ca(l, s) {
|
|
56
|
+
return ue().delete(l, s);
|
|
57
57
|
}
|
|
58
|
-
async function
|
|
59
|
-
const s = await
|
|
58
|
+
async function pa(l) {
|
|
59
|
+
const s = await se("/users/profile/me", l);
|
|
60
60
|
if (s.status !== 200 && s.status !== 201 || !s.data)
|
|
61
61
|
throw new Error("Ошибка при получении профиля пользователя");
|
|
62
62
|
return s.data;
|
|
63
63
|
}
|
|
64
|
-
const
|
|
65
|
-
function
|
|
64
|
+
const Q = E(null), re = We(null);
|
|
65
|
+
function de() {
|
|
66
66
|
return {
|
|
67
|
-
currentDialog:
|
|
68
|
-
dialogPayload:
|
|
67
|
+
currentDialog: Q,
|
|
68
|
+
dialogPayload: re,
|
|
69
69
|
openDialog: (n, f) => {
|
|
70
|
-
|
|
70
|
+
Q.value = n, re.value = f ?? null;
|
|
71
71
|
},
|
|
72
72
|
closeDialog: () => {
|
|
73
|
-
|
|
73
|
+
Q.value = null, re.value = null;
|
|
74
74
|
},
|
|
75
|
-
isDialogOpen: (n) =>
|
|
75
|
+
isDialogOpen: (n) => Q.value === n
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
|
-
const
|
|
78
|
+
const ie = {
|
|
79
79
|
ru: {
|
|
80
80
|
Имя: "Имя",
|
|
81
81
|
Фамилия: "Фамилия",
|
|
@@ -216,7 +216,7 @@ const le = {
|
|
|
216
216
|
"Это не похоже на email": "It’s not like email",
|
|
217
217
|
"Email или телефон": "Email or phone"
|
|
218
218
|
}
|
|
219
|
-
},
|
|
219
|
+
}, fa = /* @__PURE__ */ ee({
|
|
220
220
|
__name: "DialogManager",
|
|
221
221
|
props: {
|
|
222
222
|
language: {},
|
|
@@ -224,54 +224,54 @@ const le = {
|
|
|
224
224
|
disableAddPhone: { type: Boolean }
|
|
225
225
|
},
|
|
226
226
|
emits: ["clean-input-errors", "on-update-jwt", "update-phone-field", "update-email-field", "on-password-error", "on-toast"],
|
|
227
|
-
setup(
|
|
228
|
-
const t = s, n =
|
|
229
|
-
email:
|
|
230
|
-
phone:
|
|
231
|
-
password:
|
|
232
|
-
}, i = ({ email:
|
|
233
|
-
t("update-email-field",
|
|
234
|
-
}, v = ({ phone:
|
|
235
|
-
t("update-phone-field",
|
|
227
|
+
setup(l, { emit: s }) {
|
|
228
|
+
const t = s, n = E(!0), { currentDialog: f, dialogPayload: g, closeDialog: S } = de(), c = {
|
|
229
|
+
email: ae(() => import("./ProfileEmailDialog-DIvTOerl.js")),
|
|
230
|
+
phone: ae(() => import("./ProfilePhoneDialog-C1V1NeW4.js")),
|
|
231
|
+
password: ae(() => import("./ProfilePasswordDialog-Bkci1f-J.js"))
|
|
232
|
+
}, i = ({ email: P }) => {
|
|
233
|
+
t("update-email-field", P);
|
|
234
|
+
}, v = ({ phone: P }) => {
|
|
235
|
+
t("update-phone-field", P);
|
|
236
236
|
};
|
|
237
|
-
return
|
|
238
|
-
n.value = !!
|
|
239
|
-
}), (
|
|
237
|
+
return Ne(f, (P) => {
|
|
238
|
+
n.value = !!P;
|
|
239
|
+
}), (P, m) => p(f) ? (N(), $(Ye(c[p(f)]), Ke({
|
|
240
240
|
key: 0,
|
|
241
241
|
modelValue: n.value,
|
|
242
|
-
"onUpdate:modelValue":
|
|
243
|
-
language:
|
|
244
|
-
provider:
|
|
245
|
-
"disable-add-phone":
|
|
242
|
+
"onUpdate:modelValue": m[0] || (m[0] = (d) => n.value = d),
|
|
243
|
+
language: P.language,
|
|
244
|
+
provider: P.provider,
|
|
245
|
+
"disable-add-phone": P.disableAddPhone
|
|
246
246
|
}, p(g), {
|
|
247
|
-
onClose: p(
|
|
248
|
-
onCleanInputErrors:
|
|
249
|
-
onOnUpdateJwt:
|
|
247
|
+
onClose: p(S),
|
|
248
|
+
onCleanInputErrors: m[1] || (m[1] = (d) => t("clean-input-errors")),
|
|
249
|
+
onOnUpdateJwt: m[2] || (m[2] = (d, w, o) => t("on-update-jwt", d, w, o)),
|
|
250
250
|
onSubmitEmail: i,
|
|
251
251
|
onSubmitPhone: v,
|
|
252
|
-
onOnPasswordError:
|
|
253
|
-
onOnToast:
|
|
254
|
-
}), null, 16, ["modelValue", "language", "provider", "disable-add-phone", "onClose"])) :
|
|
252
|
+
onOnPasswordError: m[3] || (m[3] = (d, w) => t("on-password-error", d, w)),
|
|
253
|
+
onOnToast: m[4] || (m[4] = (d) => t("on-toast", d))
|
|
254
|
+
}), null, 16, ["modelValue", "language", "provider", "disable-add-phone", "onClose"])) : D("", !0);
|
|
255
255
|
}
|
|
256
|
-
}),
|
|
256
|
+
}), ga = { class: "base-container" }, va = {
|
|
257
257
|
key: 0,
|
|
258
258
|
style: { color: "#E46060" }
|
|
259
|
-
},
|
|
259
|
+
}, ha = { key: 1 }, ya = {
|
|
260
260
|
key: 1,
|
|
261
261
|
class: "input-wrapper"
|
|
262
|
-
},
|
|
262
|
+
}, wa = {
|
|
263
263
|
key: 2,
|
|
264
264
|
class: "input-wrapper"
|
|
265
|
-
},
|
|
265
|
+
}, Ea = {
|
|
266
266
|
key: 3,
|
|
267
267
|
class: "input-wrapper"
|
|
268
268
|
}, ba = {
|
|
269
269
|
key: 4,
|
|
270
270
|
class: "input-wrapper"
|
|
271
|
-
},
|
|
271
|
+
}, Pa = { class: "buttons-container" }, Na = {
|
|
272
272
|
key: 0,
|
|
273
273
|
class: "centered-overlay"
|
|
274
|
-
},
|
|
274
|
+
}, Ca = { class: "toastWrapper" }, ka = /* @__PURE__ */ ee({
|
|
275
275
|
__name: "PEditUserContact",
|
|
276
276
|
props: {
|
|
277
277
|
language: {},
|
|
@@ -285,8 +285,8 @@ const le = {
|
|
|
285
285
|
disableAddPhone: { type: Boolean }
|
|
286
286
|
},
|
|
287
287
|
emits: ["open-email-dialog", "open-phone-dialog", "open-password-dialog", "on-update-jwt", "on-password-error", "update-tokens"],
|
|
288
|
-
setup(
|
|
289
|
-
const t =
|
|
288
|
+
setup(l, { emit: s }) {
|
|
289
|
+
const t = l, n = s, f = B(() => t.language ?? "ru"), g = (e) => ie[f.value][e] || e, { openDialog: S } = de(), c = te({ firstName: "", lastName: "" }), i = E({ firstName: "", lastName: "" }), v = te({ firstName: !1, lastName: !1, email: !1, phone: !1 }), P = E(""), m = E(""), d = E(""), w = E(!1), o = te({
|
|
290
290
|
value: null,
|
|
291
291
|
loading: !1,
|
|
292
292
|
accept: ["image/png", "image/jpeg"],
|
|
@@ -294,146 +294,146 @@ const le = {
|
|
|
294
294
|
// 10 MB
|
|
295
295
|
imageBinary: null,
|
|
296
296
|
imageContent: ""
|
|
297
|
-
}),
|
|
297
|
+
}), x = E(""), z = E(!1), L = E(!0), _ = E(!0), q = E(void 0), u = E(""), y = B(() => R(c.firstName, v.firstName)), h = B(() => R(c.lastName, v.lastName)), A = B(() => v.email && !m.value.trim() ? "Введите e-mail" : ""), k = B(() => v.phone && !d.value.trim() ? "Введите номер телефона" : ""), F = (e) => t.fields.some((a) => a.key === e), M = (e) => e && e.trim() ? "edit" : "bind", U = () => setTimeout(() => {
|
|
298
298
|
var e;
|
|
299
299
|
return (e = document.activeElement) == null ? void 0 : e.blur();
|
|
300
|
-
}, 0),
|
|
300
|
+
}, 0), J = B(() => !!(m.value && m.value.trim() !== "")), W = B(() => o.imageContent ? g("Загрузить другое фото") : g("Загрузить фото")), R = (e, a) => {
|
|
301
301
|
if (!a) return "";
|
|
302
|
-
const
|
|
303
|
-
return
|
|
304
|
-
},
|
|
305
|
-
|
|
306
|
-
},
|
|
307
|
-
|
|
308
|
-
},
|
|
309
|
-
e === "email" &&
|
|
310
|
-
}, Ve = (e) => {
|
|
311
|
-
c.value = e;
|
|
302
|
+
const r = e.trim();
|
|
303
|
+
return r ? r.length < 2 ? "Поле должно содержать минимум 2 символа" : "" : "Введите значение";
|
|
304
|
+
}, Ie = (e) => S("email", { mode: e ? "edit" : "bind", initialEmail: e }), De = () => {
|
|
305
|
+
U(), v.email = !1, _.value = !1, n("open-email-dialog", m.value, M(m.value)), Ie(m.value);
|
|
306
|
+
}, Ue = () => {
|
|
307
|
+
U(), v.phone = !1, L.value = !1, n("open-phone-dialog", d.value, M(d.value));
|
|
308
|
+
}, Ve = async (e, a, r) => {
|
|
309
|
+
e === "email" && r && (m.value = r), e === "phone" && r && (d.value = r), n("on-update-jwt");
|
|
312
310
|
}, Ae = (e) => {
|
|
313
|
-
|
|
314
|
-
}, Fe = (e
|
|
315
|
-
|
|
316
|
-
}, Se = () => {
|
|
317
|
-
|
|
318
|
-
},
|
|
319
|
-
L.value = !
|
|
320
|
-
},
|
|
311
|
+
d.value = e;
|
|
312
|
+
}, Fe = (e) => {
|
|
313
|
+
m.value = e;
|
|
314
|
+
}, Se = (e, a) => {
|
|
315
|
+
z.value = !0, n("on-password-error", e, a);
|
|
316
|
+
}, xe = () => {
|
|
317
|
+
L.value = !1, _.value = !1;
|
|
318
|
+
}, Y = (e) => {
|
|
319
|
+
z.value = !0, q.value = e.color ?? "", u.value = e.text ?? "";
|
|
320
|
+
}, K = (e) => {
|
|
321
321
|
if (v[e] = !0, e === "firstName" || e === "lastName") {
|
|
322
|
-
const a =
|
|
323
|
-
a.length > 40 && (
|
|
322
|
+
const a = c[e];
|
|
323
|
+
a.length > 40 && (c[e] = a.slice(0, 40));
|
|
324
324
|
}
|
|
325
325
|
}, Me = (e) => {
|
|
326
|
-
var
|
|
327
|
-
if (
|
|
328
|
-
|
|
326
|
+
var X, H;
|
|
327
|
+
if (x.value = "", !e) {
|
|
328
|
+
me();
|
|
329
329
|
return;
|
|
330
330
|
}
|
|
331
|
-
const a = ((
|
|
332
|
-
if (I ||
|
|
333
|
-
|
|
331
|
+
const a = ((X = e.fileBinary) == null ? void 0 : X.type) ?? "", r = ((H = e.fileBinary) == null ? void 0 : H.size) ?? 0, I = !["image/png", "image/jpeg"].includes(a), T = r > o.uploadLimit;
|
|
332
|
+
if (I || T) {
|
|
333
|
+
x.value = "Файл не подходит. Пожалуйста, загрузите PNG или JPEG размером до 10 МБ", me();
|
|
334
334
|
return;
|
|
335
335
|
}
|
|
336
|
-
|
|
337
|
-
},
|
|
338
|
-
|
|
339
|
-
},
|
|
336
|
+
o.value = e, o.imageBinary = e.fileBinary ?? null, o.imageContent = e.fileContent ?? "", w.value = !0;
|
|
337
|
+
}, me = () => {
|
|
338
|
+
o.value = null, o.imageBinary = null, o.imageContent = "", w.value = !1;
|
|
339
|
+
}, $e = async () => {
|
|
340
340
|
try {
|
|
341
|
-
const a = (await
|
|
341
|
+
const a = (await ca("/users/profile/delete/avatar")).data;
|
|
342
342
|
return (a == null ? void 0 : a.success) === !0;
|
|
343
343
|
} catch (e) {
|
|
344
344
|
return console.error("Ошибка при удалении аватара:", e), !1;
|
|
345
345
|
}
|
|
346
|
-
},
|
|
347
|
-
|
|
348
|
-
},
|
|
346
|
+
}, ze = () => {
|
|
347
|
+
x.value = "Файл не подходит. Пожалуйста, загрузите PNG или JPEG размером до 10 МБ", o.value = null, o.imageBinary = null, o.imageContent = "", w.value = !1;
|
|
348
|
+
}, ce = async (e, a, r = "image/png") => {
|
|
349
349
|
if (!e) return null;
|
|
350
350
|
const I = await (await fetch(e)).blob();
|
|
351
|
-
return new File([I], a, { type:
|
|
352
|
-
},
|
|
353
|
-
|
|
354
|
-
},
|
|
351
|
+
return new File([I], a, { type: r });
|
|
352
|
+
}, Le = () => {
|
|
353
|
+
o.value = null, o.imageBinary = null, o.imageContent = "", w.value = !1;
|
|
354
|
+
}, _e = async (e) => {
|
|
355
355
|
w.value = !1;
|
|
356
|
-
const a =
|
|
357
|
-
if (
|
|
358
|
-
const
|
|
356
|
+
const a = o.imageContent;
|
|
357
|
+
if (o.imageContent = e, !o.imageBinary) return;
|
|
358
|
+
const r = await ce(
|
|
359
359
|
e,
|
|
360
|
-
|
|
361
|
-
|
|
360
|
+
o.imageBinary.name,
|
|
361
|
+
o.imageBinary.type || "image/png"
|
|
362
362
|
);
|
|
363
|
-
if (!
|
|
364
|
-
|
|
363
|
+
if (!r) {
|
|
364
|
+
o.imageContent = a;
|
|
365
365
|
return;
|
|
366
366
|
}
|
|
367
367
|
try {
|
|
368
|
-
|
|
369
|
-
const
|
|
370
|
-
|
|
371
|
-
} catch (
|
|
372
|
-
console.error(
|
|
368
|
+
o.loading = !0;
|
|
369
|
+
const C = new FormData();
|
|
370
|
+
C.append("file", r), await se(`/users/profile/avatar/${P.value}`, C, { headers: { "Content-Type": void 0 } });
|
|
371
|
+
} catch (C) {
|
|
372
|
+
console.error(C), Y({
|
|
373
373
|
color: "error",
|
|
374
374
|
text: g("Не удалось сохранить изменения. Попробуйте позже")
|
|
375
|
-
}),
|
|
375
|
+
}), o.imageContent = a;
|
|
376
376
|
} finally {
|
|
377
|
-
|
|
377
|
+
o.loading = !1;
|
|
378
378
|
}
|
|
379
|
-
},
|
|
380
|
-
|
|
379
|
+
}, Re = async (e) => {
|
|
380
|
+
o.imageContent = e ?? "", o.imageBinary && (o.imageBinary = await ce(
|
|
381
381
|
e ?? "",
|
|
382
|
-
|
|
383
|
-
|
|
382
|
+
o.imageBinary.name,
|
|
383
|
+
o.imageBinary.type || "image/png"
|
|
384
384
|
));
|
|
385
|
-
},
|
|
386
|
-
var
|
|
387
|
-
const a = (
|
|
385
|
+
}, pe = E(!1), fe = async (e) => {
|
|
386
|
+
var r, C;
|
|
387
|
+
const a = (r = c[e]) == null ? void 0 : r.trim();
|
|
388
388
|
if (a)
|
|
389
389
|
try {
|
|
390
|
-
|
|
391
|
-
const
|
|
392
|
-
|
|
393
|
-
firstName:
|
|
394
|
-
lastName:
|
|
390
|
+
pe.value = !0;
|
|
391
|
+
const T = (C = (await se("/users/profile/update-name", { [e]: a })).data) == null ? void 0 : C.data;
|
|
392
|
+
T != null && T.user && (c.firstName = T.user.firstName ?? c.firstName, c.lastName = T.user.lastName ?? c.lastName, i.value = {
|
|
393
|
+
firstName: c.firstName,
|
|
394
|
+
lastName: c.lastName
|
|
395
395
|
});
|
|
396
396
|
} catch (I) {
|
|
397
397
|
throw I;
|
|
398
398
|
} finally {
|
|
399
|
-
|
|
399
|
+
pe.value = !1;
|
|
400
400
|
}
|
|
401
|
-
},
|
|
401
|
+
}, Oe = async () => {
|
|
402
402
|
var e;
|
|
403
403
|
if (!t.accessToken)
|
|
404
404
|
throw console.error("Access token не передан в props"), new Error("Access token is required");
|
|
405
405
|
try {
|
|
406
|
-
const
|
|
406
|
+
const r = (e = (await pa({
|
|
407
407
|
accessToken: t.accessToken,
|
|
408
408
|
refreshToken: t.refreshToken ?? "",
|
|
409
409
|
excludeFields: []
|
|
410
410
|
})).data) == null ? void 0 : e.user;
|
|
411
|
-
if (!
|
|
411
|
+
if (!r)
|
|
412
412
|
throw console.error("Данные пользователя отсутствуют в ответе сервера"), new Error("User data is missing from the response");
|
|
413
413
|
const {
|
|
414
|
-
userId:
|
|
414
|
+
userId: C,
|
|
415
415
|
privateFirstName: I,
|
|
416
|
-
privateLastName:
|
|
417
|
-
email:
|
|
418
|
-
phoneNumber:
|
|
419
|
-
} =
|
|
420
|
-
|
|
416
|
+
privateLastName: T,
|
|
417
|
+
email: X,
|
|
418
|
+
phoneNumber: H
|
|
419
|
+
} = r;
|
|
420
|
+
P.value = C ?? "", c.firstName = I ?? "", c.lastName = T ?? "", m.value = X ?? "", d.value = H ?? "", o.imageContent = await Ge(), i.value = {
|
|
421
421
|
firstName: I ?? "",
|
|
422
|
-
lastName:
|
|
422
|
+
lastName: T ?? ""
|
|
423
423
|
};
|
|
424
424
|
} catch (a) {
|
|
425
425
|
console.error("Критическая ошибка при загрузке профиля:", a);
|
|
426
426
|
}
|
|
427
|
-
},
|
|
427
|
+
}, Ge = async () => {
|
|
428
428
|
var e;
|
|
429
429
|
try {
|
|
430
|
-
const
|
|
431
|
-
return
|
|
430
|
+
const r = (e = (await ma("/users/profile/avatar")).data) == null ? void 0 : e.data;
|
|
431
|
+
return r ? je(r) : "";
|
|
432
432
|
} catch (a) {
|
|
433
433
|
return console.error("Ошибка при загрузке метаданных аватара:", a), "";
|
|
434
434
|
}
|
|
435
435
|
};
|
|
436
|
-
function
|
|
436
|
+
function je(e) {
|
|
437
437
|
if (!e)
|
|
438
438
|
return "";
|
|
439
439
|
try {
|
|
@@ -442,186 +442,186 @@ const le = {
|
|
|
442
442
|
return console.error("Ошибка при составлении URL аватара:", a), "";
|
|
443
443
|
}
|
|
444
444
|
}
|
|
445
|
-
const
|
|
445
|
+
const ge = B(() => {
|
|
446
446
|
if (!i.value.firstName && !i.value.lastName)
|
|
447
447
|
return !1;
|
|
448
|
-
const e =
|
|
449
|
-
return I &&
|
|
450
|
-
}),
|
|
451
|
-
if (
|
|
448
|
+
const e = c.firstName.trim(), a = c.lastName.trim(), r = i.value.firstName.trim(), C = i.value.lastName.trim(), I = e !== r || a !== C, T = e.length >= 2 && a.length >= 2;
|
|
449
|
+
return I && T;
|
|
450
|
+
}), qe = async () => {
|
|
451
|
+
if (ge.value)
|
|
452
452
|
try {
|
|
453
|
-
await Promise.all([
|
|
453
|
+
await Promise.all([fe("firstName"), fe("lastName")]), n("on-update-jwt"), Y({ color: "success", text: "Изменения сохранены" });
|
|
454
454
|
} catch (e) {
|
|
455
|
-
console.error(e),
|
|
455
|
+
console.error(e), Y({
|
|
456
456
|
color: "error",
|
|
457
457
|
text: g("Не удалось сохранить изменения. Попробуйте позже")
|
|
458
458
|
});
|
|
459
459
|
}
|
|
460
|
-
},
|
|
461
|
-
|
|
460
|
+
}, Je = () => {
|
|
461
|
+
U(), n("open-password-dialog");
|
|
462
462
|
};
|
|
463
463
|
return Xe(async () => {
|
|
464
464
|
if (!t.accessToken) throw new Error("Access token не передан в props");
|
|
465
465
|
if (!t.requestUrl) throw new Error("auth-backend url не передан в props");
|
|
466
|
-
|
|
467
|
-
}), (e, a) => (N(),
|
|
468
|
-
|
|
466
|
+
da(t.accessToken, t.requestUrl, t.throttlerPrefix), await Oe();
|
|
467
|
+
}), (e, a) => (N(), V(Ce, null, [
|
|
468
|
+
b(fa, {
|
|
469
469
|
language: f.value,
|
|
470
470
|
provider: e.provider,
|
|
471
471
|
"disable-add-phone": e.disableAddPhone,
|
|
472
|
-
onCleanInputErrors:
|
|
473
|
-
onOnUpdateJwt:
|
|
474
|
-
onUpdatePhoneField:
|
|
475
|
-
onUpdateEmailField:
|
|
476
|
-
onOnPasswordError:
|
|
477
|
-
onOnToast:
|
|
472
|
+
onCleanInputErrors: xe,
|
|
473
|
+
onOnUpdateJwt: Ve,
|
|
474
|
+
onUpdatePhoneField: Ae,
|
|
475
|
+
onUpdateEmailField: Fe,
|
|
476
|
+
onOnPasswordError: Se,
|
|
477
|
+
onOnToast: Y
|
|
478
478
|
}, null, 8, ["language", "provider", "disable-add-phone"]),
|
|
479
|
-
|
|
480
|
-
|
|
479
|
+
ne("div", ga, [
|
|
480
|
+
F("avatar") ? (N(), $(p(aa), {
|
|
481
481
|
key: 0,
|
|
482
|
-
modelValue:
|
|
482
|
+
modelValue: o.value,
|
|
483
483
|
"onUpdate:modelValue": [
|
|
484
|
-
a[0] || (a[0] = (
|
|
485
|
-
a[1] || (a[1] = (
|
|
484
|
+
a[0] || (a[0] = (r) => o.value = r),
|
|
485
|
+
a[1] || (a[1] = (r) => Me(r))
|
|
486
486
|
],
|
|
487
487
|
type: "img",
|
|
488
488
|
class: "avatar-input",
|
|
489
|
-
src:
|
|
490
|
-
loading:
|
|
489
|
+
src: o.imageContent,
|
|
490
|
+
loading: o.loading,
|
|
491
491
|
label: g("Загрузить фото"),
|
|
492
|
-
"upload-limit":
|
|
492
|
+
"upload-limit": o.uploadLimit,
|
|
493
493
|
accept: "image/jpeg, image/png",
|
|
494
|
-
onDelete:
|
|
495
|
-
"onChange:error":
|
|
494
|
+
onDelete: $e,
|
|
495
|
+
"onChange:error": ze
|
|
496
496
|
}, {
|
|
497
497
|
afterLoadLabel: O(() => [
|
|
498
|
-
|
|
498
|
+
oe(G(W.value), 1)
|
|
499
499
|
]),
|
|
500
500
|
subtext: O(() => [
|
|
501
|
-
|
|
501
|
+
x.value ? (N(), V("span", va, G(x.value), 1)) : (N(), V("span", ha, G(`${g("Формат")} ${p(ua)(o.accept).join(", ")} ${g("до")} ${p(sa)(o.uploadLimit)}`), 1))
|
|
502
502
|
]),
|
|
503
503
|
_: 1
|
|
504
|
-
}, 8, ["modelValue", "src", "loading", "label", "upload-limit"])) :
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
modelValue:
|
|
508
|
-
"onUpdate:modelValue": a[2] || (a[2] = (
|
|
504
|
+
}, 8, ["modelValue", "src", "loading", "label", "upload-limit"])) : D("", !0),
|
|
505
|
+
F("firstName") ? (N(), V("div", ya, [
|
|
506
|
+
b(p(j), {
|
|
507
|
+
modelValue: c.firstName,
|
|
508
|
+
"onUpdate:modelValue": a[2] || (a[2] = (r) => c.firstName = r),
|
|
509
509
|
size: "large",
|
|
510
510
|
label: g("Имя"),
|
|
511
|
-
error:
|
|
512
|
-
onBlur: a[3] || (a[3] = (
|
|
513
|
-
onInput: a[4] || (a[4] = (
|
|
511
|
+
error: y.value,
|
|
512
|
+
onBlur: a[3] || (a[3] = (r) => v.firstName = !0),
|
|
513
|
+
onInput: a[4] || (a[4] = (r) => K("firstName"))
|
|
514
514
|
}, null, 8, ["modelValue", "label", "error"]),
|
|
515
|
-
|
|
516
|
-
])) :
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
modelValue:
|
|
520
|
-
"onUpdate:modelValue": a[5] || (a[5] = (
|
|
515
|
+
b(p(Z), { class: "icon-locked" })
|
|
516
|
+
])) : D("", !0),
|
|
517
|
+
F("lastName") ? (N(), V("div", wa, [
|
|
518
|
+
b(p(j), {
|
|
519
|
+
modelValue: c.lastName,
|
|
520
|
+
"onUpdate:modelValue": a[5] || (a[5] = (r) => c.lastName = r),
|
|
521
521
|
size: "large",
|
|
522
522
|
label: g("Фамилия"),
|
|
523
|
-
error:
|
|
524
|
-
onBlur: a[6] || (a[6] = (
|
|
525
|
-
onInput: a[7] || (a[7] = (
|
|
523
|
+
error: h.value,
|
|
524
|
+
onBlur: a[6] || (a[6] = (r) => v.lastName = !0),
|
|
525
|
+
onInput: a[7] || (a[7] = (r) => K("lastName"))
|
|
526
526
|
}, null, 8, ["modelValue", "label", "error"]),
|
|
527
|
-
|
|
528
|
-
])) :
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
modelValue:
|
|
532
|
-
"onUpdate:modelValue": a[8] || (a[8] = (
|
|
527
|
+
b(p(Z), { class: "icon-locked" })
|
|
528
|
+
])) : D("", !0),
|
|
529
|
+
F("email") ? (N(), V("div", Ea, [
|
|
530
|
+
b(p(j), {
|
|
531
|
+
modelValue: m.value,
|
|
532
|
+
"onUpdate:modelValue": a[8] || (a[8] = (r) => m.value = r),
|
|
533
533
|
size: "large",
|
|
534
534
|
"text-size": "medium",
|
|
535
535
|
label: "E-mail",
|
|
536
536
|
type: "email",
|
|
537
537
|
readonly: "",
|
|
538
538
|
style: { cursor: "pointer" },
|
|
539
|
-
error:
|
|
540
|
-
onBlur: a[9] || (a[9] = (
|
|
541
|
-
onInput: a[10] || (a[10] = (
|
|
539
|
+
error: A.value && _.value,
|
|
540
|
+
onBlur: a[9] || (a[9] = (r) => v.email = !0),
|
|
541
|
+
onInput: a[10] || (a[10] = (r) => K("email")),
|
|
542
542
|
onClick: De
|
|
543
543
|
}, null, 8, ["modelValue", "error"]),
|
|
544
|
-
|
|
545
|
-
])) :
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
modelValue:
|
|
549
|
-
"onUpdate:modelValue": a[11] || (a[11] = (
|
|
544
|
+
b(p(Z), { class: "icon-locked" })
|
|
545
|
+
])) : D("", !0),
|
|
546
|
+
F("phone") ? (N(), V("div", ba, [
|
|
547
|
+
b(p(j), {
|
|
548
|
+
modelValue: d.value,
|
|
549
|
+
"onUpdate:modelValue": a[11] || (a[11] = (r) => d.value = r),
|
|
550
550
|
size: "large",
|
|
551
551
|
"text-size": "medium",
|
|
552
552
|
label: g("Номер телефона"),
|
|
553
553
|
type: "tel",
|
|
554
554
|
readonly: "",
|
|
555
555
|
style: { cursor: "pointer" },
|
|
556
|
-
error:
|
|
557
|
-
onBlur: a[12] || (a[12] = (
|
|
558
|
-
onInput: a[13] || (a[13] = (
|
|
559
|
-
onClick:
|
|
556
|
+
error: k.value && L.value,
|
|
557
|
+
onBlur: a[12] || (a[12] = (r) => v.phone = !0),
|
|
558
|
+
onInput: a[13] || (a[13] = (r) => K("phone")),
|
|
559
|
+
onClick: Ue
|
|
560
560
|
}, null, 8, ["modelValue", "label", "error"]),
|
|
561
|
-
|
|
562
|
-
])) :
|
|
563
|
-
|
|
564
|
-
|
|
561
|
+
b(p(Z), { class: "icon-locked" })
|
|
562
|
+
])) : D("", !0),
|
|
563
|
+
ne("div", Pa, [
|
|
564
|
+
J.value ? (N(), $(p(he), {
|
|
565
565
|
key: 0,
|
|
566
566
|
color: "secondary",
|
|
567
|
-
onClick:
|
|
567
|
+
onClick: Je
|
|
568
568
|
}, {
|
|
569
569
|
default: O(() => [
|
|
570
|
-
|
|
570
|
+
oe(G(g("Сменить пароль")), 1)
|
|
571
571
|
]),
|
|
572
572
|
_: 1
|
|
573
|
-
})) :
|
|
574
|
-
|
|
575
|
-
disabled: !
|
|
576
|
-
onClick:
|
|
573
|
+
})) : D("", !0),
|
|
574
|
+
b(p(he), {
|
|
575
|
+
disabled: !ge.value,
|
|
576
|
+
onClick: qe
|
|
577
577
|
}, {
|
|
578
578
|
default: O(() => [
|
|
579
|
-
|
|
579
|
+
oe(G(g("Сохранить")), 1)
|
|
580
580
|
]),
|
|
581
581
|
_: 1
|
|
582
582
|
}, 8, ["disabled"])
|
|
583
583
|
])
|
|
584
584
|
]),
|
|
585
|
-
w.value ? (N(),
|
|
585
|
+
w.value ? (N(), $(ve, {
|
|
586
586
|
key: 0,
|
|
587
587
|
to: "body"
|
|
588
588
|
}, [
|
|
589
|
-
w.value ? (N(),
|
|
590
|
-
|
|
589
|
+
w.value ? (N(), V("div", Na, [
|
|
590
|
+
b(p(ta), {
|
|
591
591
|
"circle-mode": !0,
|
|
592
|
-
"model-value":
|
|
593
|
-
onClose:
|
|
594
|
-
onSave: a[14] || (a[14] = (
|
|
595
|
-
"onUpdate:modelValue": a[15] || (a[15] = (
|
|
592
|
+
"model-value": o.imageContent,
|
|
593
|
+
onClose: Le,
|
|
594
|
+
onSave: a[14] || (a[14] = (r) => _e(r)),
|
|
595
|
+
"onUpdate:modelValue": a[15] || (a[15] = (r) => Re(r))
|
|
596
596
|
}, null, 8, ["model-value"])
|
|
597
|
-
])) :
|
|
598
|
-
])) :
|
|
599
|
-
(N(),
|
|
600
|
-
|
|
601
|
-
|
|
597
|
+
])) : D("", !0)
|
|
598
|
+
])) : D("", !0),
|
|
599
|
+
(N(), $(ve, { to: "#toast-root" }, [
|
|
600
|
+
ne("div", Ca, [
|
|
601
|
+
b(He, { name: "list" }, {
|
|
602
602
|
default: O(() => [
|
|
603
|
-
Ze(
|
|
603
|
+
Ze(b(p(na), {
|
|
604
604
|
class: "toast",
|
|
605
|
-
color:
|
|
606
|
-
text:
|
|
607
|
-
onClose: a[16] || (a[16] = (
|
|
605
|
+
color: q.value,
|
|
606
|
+
text: u.value,
|
|
607
|
+
onClose: a[16] || (a[16] = (r) => z.value = !1)
|
|
608
608
|
}, null, 8, ["color", "text"]), [
|
|
609
|
-
[
|
|
609
|
+
[Qe, z.value]
|
|
610
610
|
])
|
|
611
611
|
]),
|
|
612
612
|
_: 1
|
|
613
613
|
})
|
|
614
614
|
])
|
|
615
615
|
])),
|
|
616
|
-
|
|
616
|
+
b(p(ke))
|
|
617
617
|
], 64));
|
|
618
618
|
}
|
|
619
|
-
}),
|
|
620
|
-
const t =
|
|
619
|
+
}), Te = (l, s) => {
|
|
620
|
+
const t = l.__vccOpts || l;
|
|
621
621
|
for (const [n, f] of s)
|
|
622
622
|
t[n] = f;
|
|
623
623
|
return t;
|
|
624
|
-
},
|
|
624
|
+
}, Ta = /* @__PURE__ */ Te(ka, [["__scopeId", "data-v-4e8a6f81"]]), _a = /* @__PURE__ */ ee({
|
|
625
625
|
__name: "index",
|
|
626
626
|
props: {
|
|
627
627
|
throttlerPrefix: {},
|
|
@@ -635,19 +635,19 @@ const le = {
|
|
|
635
635
|
disableAddPhone: { type: Boolean }
|
|
636
636
|
},
|
|
637
637
|
emits: ["on-update-jwt", "update-tokens"],
|
|
638
|
-
setup(
|
|
639
|
-
const t = s, { openDialog: n } =
|
|
638
|
+
setup(l, { emit: s }) {
|
|
639
|
+
const t = s, { openDialog: n } = de(), f = (i, v) => {
|
|
640
640
|
n("email", { initialEmail: i, mode: v });
|
|
641
641
|
}, g = (i, v) => {
|
|
642
642
|
n("phone", { initialPhone: i, mode: v });
|
|
643
|
-
},
|
|
643
|
+
}, S = () => {
|
|
644
644
|
n("password");
|
|
645
|
-
},
|
|
646
|
-
t("on-update-jwt", i, v,
|
|
645
|
+
}, c = (i, v, P) => {
|
|
646
|
+
t("on-update-jwt", i, v, P);
|
|
647
647
|
};
|
|
648
|
-
return (i, v) => (N(),
|
|
649
|
-
|
|
650
|
-
|
|
648
|
+
return (i, v) => (N(), V(Ce, null, [
|
|
649
|
+
b(p(oa)),
|
|
650
|
+
b(Ta, {
|
|
651
651
|
"throttler-prefix": i.throttlerPrefix,
|
|
652
652
|
provider: i.provider,
|
|
653
653
|
"request-url": i.requestUrl,
|
|
@@ -659,43 +659,44 @@ const le = {
|
|
|
659
659
|
"disable-add-phone": i.disableAddPhone,
|
|
660
660
|
onOpenEmailDialog: f,
|
|
661
661
|
onOpenPhoneDialog: g,
|
|
662
|
-
onOpenPasswordDialog:
|
|
663
|
-
onOnUpdateJwt:
|
|
662
|
+
onOpenPasswordDialog: S,
|
|
663
|
+
onOnUpdateJwt: c
|
|
664
664
|
}, null, 8, ["throttler-prefix", "provider", "request-url", "language", "fields", "access-token", "refresh-token", "aws-storage-url", "disable-add-phone"]),
|
|
665
|
-
|
|
665
|
+
b(p(ke))
|
|
666
666
|
], 64));
|
|
667
667
|
}
|
|
668
|
-
}),
|
|
669
|
-
function
|
|
670
|
-
let n =
|
|
668
|
+
}), Ba = 10, Ia = 10, Da = 15;
|
|
669
|
+
function ye(l, s, t) {
|
|
670
|
+
let n = l.replace(/[^\d+]/g, "").replace(/(?!^)\+/g, "");
|
|
671
671
|
return t != null && t.startsWith("ru") && n.startsWith("8") ? n = `+7${n.slice(1)}` : s && n && !n.startsWith("+") && (n = `+${n}`), n;
|
|
672
672
|
}
|
|
673
|
-
function
|
|
674
|
-
return
|
|
673
|
+
function we(l) {
|
|
674
|
+
return l.startsWith("+") ? l.slice(1).replace(/\D/g, "") : l.replace(/\D/g, "");
|
|
675
675
|
}
|
|
676
|
-
function
|
|
677
|
-
if (!
|
|
676
|
+
function Ee(l, s = Ba, t = Da) {
|
|
677
|
+
if (!l.startsWith("+"))
|
|
678
678
|
return !1;
|
|
679
|
-
const n =
|
|
679
|
+
const n = l.slice(1);
|
|
680
680
|
return !(!/^\d+$/.test(n) || n.length < s || n.length > t);
|
|
681
681
|
}
|
|
682
|
-
function be(
|
|
683
|
-
return !/^\+?\d*$/.test(
|
|
682
|
+
function be(l) {
|
|
683
|
+
return !/^\+?\d*$/.test(l);
|
|
684
684
|
}
|
|
685
|
-
function
|
|
685
|
+
function Ua(l, s) {
|
|
686
686
|
let t = 0, n = !1;
|
|
687
|
-
return
|
|
687
|
+
return l.split("").filter((f, g) => f === "+" ? g !== 0 || n ? !1 : (n = !0, !0) : /\d/.test(f) ? (t++, t <= s) : !1).join("");
|
|
688
688
|
}
|
|
689
|
-
const
|
|
690
|
-
function
|
|
691
|
-
return
|
|
689
|
+
const Va = /^[\w.%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i;
|
|
690
|
+
function Pe(l) {
|
|
691
|
+
return Va.test(l);
|
|
692
692
|
}
|
|
693
|
-
|
|
693
|
+
const Be = /^[\d\s()+]+$/;
|
|
694
|
+
function Aa(l, s) {
|
|
694
695
|
var n, f;
|
|
695
|
-
const t =
|
|
696
|
-
return (n = s.phone) != null && n.enabled && /\d/.test(t) && !t.includes("@") ? "phone" : (f = s.email) != null && f.enabled ? "email" : null;
|
|
696
|
+
const t = l.trim();
|
|
697
|
+
return (n = s.phone) != null && n.enabled && Be.test(t) && /\d/.test(t) && !t.includes("@") ? "phone" : (f = s.email) != null && f.enabled ? "email" : null;
|
|
697
698
|
}
|
|
698
|
-
const
|
|
699
|
+
const Fa = { class: "smart-input" }, Sa = /* @__PURE__ */ ee({
|
|
699
700
|
__name: "index",
|
|
700
701
|
props: {
|
|
701
702
|
modelValue: {},
|
|
@@ -708,156 +709,154 @@ const Aa = { class: "smart-input" }, Fa = /* @__PURE__ */ H({
|
|
|
708
709
|
errorMessages: {}
|
|
709
710
|
},
|
|
710
711
|
emits: ["update:modelValue", "validity-change", "type-change"],
|
|
711
|
-
setup(
|
|
712
|
-
const t =
|
|
713
|
-
function
|
|
714
|
-
return
|
|
712
|
+
setup(l, { emit: s }) {
|
|
713
|
+
const t = l, n = s, f = B(() => t.locale ?? "ru"), g = (u) => ie[f.value][u] || u, S = B(() => t.label ? g(t.label) : g("Email или телефон"));
|
|
714
|
+
function c(u, y) {
|
|
715
|
+
return y ? y in ie[f.value] ? g(y) : y : g(u);
|
|
715
716
|
}
|
|
716
|
-
const i =
|
|
717
|
-
var
|
|
717
|
+
const i = B(() => {
|
|
718
|
+
var u, y, h, A, k, F, M, U, J, W, R;
|
|
718
719
|
return {
|
|
719
|
-
mode: ((
|
|
720
|
+
mode: ((u = t.config) == null ? void 0 : u.mode) ?? "auto",
|
|
720
721
|
phone: {
|
|
721
|
-
enabled: ((
|
|
722
|
-
minDigits: ((
|
|
723
|
-
maxDigits: ((M = (
|
|
724
|
-
autoPlus: ((
|
|
722
|
+
enabled: ((h = (y = t.config) == null ? void 0 : y.phone) == null ? void 0 : h.enabled) ?? !0,
|
|
723
|
+
minDigits: ((k = (A = t.config) == null ? void 0 : A.phone) == null ? void 0 : k.minDigits) ?? 10,
|
|
724
|
+
maxDigits: ((M = (F = t.config) == null ? void 0 : F.phone) == null ? void 0 : M.maxDigits) ?? 15,
|
|
725
|
+
autoPlus: ((J = (U = t.config) == null ? void 0 : U.phone) == null ? void 0 : J.autoPlus) ?? !0
|
|
725
726
|
},
|
|
726
727
|
email: {
|
|
727
|
-
enabled: ((
|
|
728
|
+
enabled: ((R = (W = t.config) == null ? void 0 : W.email) == null ? void 0 : R.enabled) ?? !0
|
|
728
729
|
}
|
|
729
730
|
};
|
|
730
|
-
}), v = b(null), E = b(""), u = b(t.modelValue ?? ""), c = b(null), w = b("");
|
|
731
|
-
Pe(() => t.modelValue, (d) => {
|
|
732
|
-
d !== void 0 && (u.value = d, E.value = d);
|
|
733
731
|
});
|
|
734
|
-
function
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
732
|
+
function v(u) {
|
|
733
|
+
if (t.errorMessages)
|
|
734
|
+
switch (u) {
|
|
735
|
+
case "Допустимы только цифры и знак + в начале":
|
|
736
|
+
return t.errorMessages.invalidPhoneChars;
|
|
737
|
+
case "Это не похоже на номер телефона":
|
|
738
|
+
return t.errorMessages.invalidPhoneLength;
|
|
739
|
+
case "Это не похоже на email":
|
|
740
|
+
return t.errorMessages.invalidEmail;
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
const P = E(null), m = E(""), d = E(t.modelValue ?? ""), w = E(null), o = E(null), x = B(() => o.value ? c(
|
|
744
|
+
o.value,
|
|
745
|
+
v(o.value)
|
|
746
|
+
) : "");
|
|
747
|
+
Ne(() => t.modelValue, (u) => {
|
|
748
|
+
u !== void 0 && (d.value = u, m.value = u);
|
|
749
|
+
});
|
|
750
|
+
function z(u) {
|
|
751
|
+
o.value = null;
|
|
752
|
+
const h = u.target.value;
|
|
753
|
+
if (h.trim() === "") {
|
|
754
|
+
w.value = null, o.value = null, n("type-change", null), n("update:modelValue", ""), n("validity-change", !1);
|
|
740
755
|
return;
|
|
741
756
|
}
|
|
742
|
-
const
|
|
743
|
-
if (
|
|
744
|
-
const k =
|
|
745
|
-
|
|
757
|
+
const A = i.value.mode === "auto" ? Aa(h, i.value) : i.value.mode;
|
|
758
|
+
if (w.value = A, n("type-change", A), A === "email") {
|
|
759
|
+
const k = Pe(h);
|
|
760
|
+
d.value = h, m.value = h, n("update:modelValue", h), n("validity-change", k);
|
|
746
761
|
return;
|
|
747
762
|
}
|
|
748
|
-
if (
|
|
749
|
-
const k =
|
|
750
|
-
|
|
763
|
+
if (A === "phone") {
|
|
764
|
+
const k = ye(
|
|
765
|
+
h,
|
|
751
766
|
i.value.phone.autoPlus,
|
|
752
767
|
t.locale
|
|
753
768
|
);
|
|
754
|
-
if (
|
|
755
|
-
const
|
|
756
|
-
|
|
769
|
+
if (we(k).length > i.value.phone.maxDigits) {
|
|
770
|
+
const U = Ua(h, i.value.phone.maxDigits);
|
|
771
|
+
d.value = U, n("update:modelValue", U), q(U);
|
|
757
772
|
return;
|
|
758
773
|
}
|
|
759
|
-
if (
|
|
760
|
-
|
|
761
|
-
"Допустимы только цифры и знак + в начале",
|
|
762
|
-
(C = t.errorMessages) == null ? void 0 : C.invalidPhoneChars
|
|
763
|
-
), n("validity-change", !1);
|
|
774
|
+
if (d.value = h, be(h)) {
|
|
775
|
+
Be.test(h) && (o.value = "Допустимы только цифры и знак + в начале", n("validity-change", !1));
|
|
764
776
|
return;
|
|
765
777
|
}
|
|
766
|
-
|
|
767
|
-
const
|
|
778
|
+
d.value = k, n("update:modelValue", k), m.value = k;
|
|
779
|
+
const M = Ee(
|
|
768
780
|
k,
|
|
769
781
|
i.value.phone.minDigits,
|
|
770
782
|
i.value.phone.maxDigits
|
|
771
783
|
);
|
|
772
|
-
n("validity-change",
|
|
784
|
+
n("validity-change", M);
|
|
773
785
|
}
|
|
774
786
|
}
|
|
775
|
-
function
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
u.value,
|
|
787
|
+
function L() {
|
|
788
|
+
if (console.debug("✅[event] onBlur is working"), !!w.value) {
|
|
789
|
+
if (w.value === "phone") {
|
|
790
|
+
const u = ye(
|
|
791
|
+
d.value,
|
|
781
792
|
i.value.phone.autoPlus,
|
|
782
793
|
t.locale
|
|
783
|
-
),
|
|
784
|
-
if (be(
|
|
785
|
-
|
|
786
|
-
"Допустимы только цифры и знак + в начале",
|
|
787
|
-
(d = t.errorMessages) == null ? void 0 : d.invalidPhoneChars
|
|
788
|
-
), n("validity-change", !1);
|
|
794
|
+
), y = we(u);
|
|
795
|
+
if (be(d.value)) {
|
|
796
|
+
o.value = "Допустимы только цифры и знак + в начале", n("validity-change", !1);
|
|
789
797
|
return;
|
|
790
798
|
}
|
|
791
|
-
if (
|
|
792
|
-
|
|
793
|
-
"Это не похоже на номер телефона",
|
|
794
|
-
(h = t.errorMessages) == null ? void 0 : h.invalidPhoneLength
|
|
795
|
-
), n("validity-change", !1);
|
|
799
|
+
if (y.length < Ia) {
|
|
800
|
+
o.value = "Это не похоже на номер телефона", n("validity-change", !1);
|
|
796
801
|
return;
|
|
797
802
|
}
|
|
798
|
-
const
|
|
799
|
-
|
|
803
|
+
const h = Ee(
|
|
804
|
+
u,
|
|
800
805
|
i.value.phone.minDigits,
|
|
801
806
|
i.value.phone.maxDigits
|
|
802
807
|
);
|
|
803
|
-
|
|
804
|
-
"Это не похоже на номер телефона",
|
|
805
|
-
(y = t.errorMessages) == null ? void 0 : y.invalidPhoneLength
|
|
806
|
-
), n("validity-change", M);
|
|
808
|
+
o.value = h ? null : "Это не похоже на номер телефона", n("validity-change", h);
|
|
807
809
|
}
|
|
808
|
-
if (
|
|
809
|
-
const
|
|
810
|
-
|
|
811
|
-
"Это не похоже на email",
|
|
812
|
-
(B = t.errorMessages) == null ? void 0 : B.invalidEmail
|
|
813
|
-
), n("validity-change", C);
|
|
810
|
+
if (w.value === "email") {
|
|
811
|
+
const u = Pe(d.value);
|
|
812
|
+
o.value = u ? null : "Это не похоже на email", n("validity-change", u);
|
|
814
813
|
}
|
|
815
814
|
}
|
|
816
815
|
}
|
|
817
|
-
function
|
|
818
|
-
var
|
|
819
|
-
const
|
|
820
|
-
return
|
|
816
|
+
function _() {
|
|
817
|
+
var y;
|
|
818
|
+
const u = (y = P.value) == null ? void 0 : y.$el;
|
|
819
|
+
return u ? u.querySelector("input") : null;
|
|
821
820
|
}
|
|
822
|
-
function
|
|
823
|
-
const
|
|
824
|
-
if (!
|
|
825
|
-
const
|
|
826
|
-
|
|
827
|
-
|
|
821
|
+
function q(u) {
|
|
822
|
+
const y = _();
|
|
823
|
+
if (!y) return;
|
|
824
|
+
const h = y.selectionStart ?? u.length;
|
|
825
|
+
y.value = u, requestAnimationFrame(() => {
|
|
826
|
+
y.setSelectionRange(h, h);
|
|
828
827
|
});
|
|
829
828
|
}
|
|
830
|
-
return (
|
|
831
|
-
|
|
829
|
+
return (u, y) => (N(), V("div", Fa, [
|
|
830
|
+
b(p(j), {
|
|
832
831
|
ref_key: "inputRef",
|
|
833
|
-
ref:
|
|
834
|
-
"model-value":
|
|
835
|
-
readonly:
|
|
836
|
-
error:
|
|
837
|
-
type:
|
|
838
|
-
size:
|
|
839
|
-
label:
|
|
840
|
-
onInput:
|
|
841
|
-
onBlur:
|
|
832
|
+
ref: P,
|
|
833
|
+
"model-value": d.value,
|
|
834
|
+
readonly: u.disabled,
|
|
835
|
+
error: x.value,
|
|
836
|
+
type: u.type ?? "text",
|
|
837
|
+
size: u.size ?? "large",
|
|
838
|
+
label: S.value,
|
|
839
|
+
onInput: z,
|
|
840
|
+
onBlur: L
|
|
842
841
|
}, null, 8, ["model-value", "readonly", "error", "type", "size", "label"]),
|
|
843
|
-
|
|
842
|
+
w.value === "phone" ? (N(), $(p(ra), {
|
|
844
843
|
key: 0,
|
|
845
844
|
class: "smart-input__icon"
|
|
846
|
-
})) :
|
|
847
|
-
|
|
845
|
+
})) : D("", !0),
|
|
846
|
+
w.value === "email" ? (N(), $(p(la), {
|
|
848
847
|
key: 1,
|
|
849
848
|
class: "smart-input__icon"
|
|
850
|
-
})) :
|
|
849
|
+
})) : D("", !0)
|
|
851
850
|
]));
|
|
852
851
|
}
|
|
853
|
-
}),
|
|
852
|
+
}), Ra = /* @__PURE__ */ Te(Sa, [["__scopeId", "data-v-93ce3027"]]);
|
|
854
853
|
export {
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
854
|
+
La as B,
|
|
855
|
+
za as C,
|
|
856
|
+
Te as _,
|
|
857
|
+
_a as a,
|
|
858
|
+
ma as g,
|
|
859
|
+
Ra as i,
|
|
860
|
+
se as p,
|
|
861
|
+
ie as t
|
|
863
862
|
};
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".avatar-input[data-v-4e8a6f81] .p-input-file .overlay{visibility:hidden}.avatar-input[data-v-4e8a6f81] .p-input-file:hover .overlay{visibility:visible}.smart-input[data-v-
|
|
2
|
-
import { a as o, i as r } from "./index-
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".avatar-input[data-v-4e8a6f81] .p-input-file .overlay{visibility:hidden}.avatar-input[data-v-4e8a6f81] .p-input-file:hover .overlay{visibility:visible}.smart-input[data-v-93ce3027]{position:relative;width:100%}.smart-input__icon[data-v-93ce3027]{position:absolute;top:16px;right:16px;pointer-events:none;opacity:.5}.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:100%;min-height:94px;background:#e4606026;border-radius:8px}.finalLimitText{text-align:center;max-width:100%;word-wrap:break-word;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 { a as o, i as r } from "./index-BysRZGf4.js";
|
|
3
3
|
export {
|
|
4
4
|
o as PEditUserContact,
|
|
5
5
|
r as PEmailOrPhoneInput
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref as n, defineComponent as L, createElementBlock as p, openBlock as v, normalizeClass as c, createVNode as w, unref as _, computed as T, renderSlot as d, createCommentVNode as h, createElementVNode as i, toDisplayString as y, createTextVNode as f } from "vue";
|
|
2
2
|
import { PLoader as $ } from "@profeat/ui-kit";
|
|
3
|
-
import { _ as b, g as C, p as R } from "./index-
|
|
3
|
+
import { _ as b, g as C, p as R } from "./index-BysRZGf4.js";
|
|
4
4
|
function g(s) {
|
|
5
5
|
const e = Math.floor(s / 60), a = s % 60;
|
|
6
6
|
return `${String(e).padStart(2, "0")}:${String(a).padStart(2, "0")}`;
|