@ozdao/prometheus-framework 0.2.23 → 0.2.24
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/auth.server.js +9 -2
- package/dist/auth.server.mjs +9 -2
- package/dist/community.server.js +1 -1
- package/dist/community.server.mjs +1 -1
- package/dist/events.server.js +1 -1
- package/dist/events.server.mjs +1 -1
- package/dist/files.server.js +1 -1
- package/dist/files.server.mjs +1 -1
- package/dist/gallery.server.js +1 -1
- package/dist/gallery.server.mjs +1 -1
- package/dist/index-05aa7cae.js +213 -0
- package/dist/index-d5066b82.mjs +214 -0
- package/dist/middlewares.server.js +1 -1
- package/dist/middlewares.server.mjs +1 -1
- package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue.js +49 -2
- package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue2.js +2 -49
- package/dist/prometheus-framework/src/components/Popup/Popup.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Popup/Popup.vue.js +2 -72
- package/dist/prometheus-framework/src/components/Popup/Popup.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/components/Popup/Popup.vue2.js +72 -2
- package/dist/prometheus-framework/src/components/Select/Select.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Select/Select.vue.js +2 -78
- package/dist/prometheus-framework/src/components/Select/Select.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/components/Select/Select.vue2.js +78 -2
- package/dist/prometheus-framework/src/modules/auth/components/pages/EnterCode.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/EnterCode.vue.js +29 -25
- package/dist/prometheus-framework/src/modules/auth/store/twofa.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/store/twofa.js +12 -11
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue.cjs +1 -4
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue.js +2 -62
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue2.cjs +4 -1
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue2.js +62 -2
- package/dist/prometheus-framework/src/modules/constructor/components/sections/Constructor.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/layouts/layoutEvents.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/layouts/layoutEvents.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/sections/GalleryWithCategories.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/sections/GalleryWithCategories.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/globals/components/blocks/CardHeader.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/components/blocks/CardHeader.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/DepartmentMemberModify.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/DepartmentMemberModify.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.js +1 -1
- package/dist/reports.server.js +1 -1
- package/dist/reports.server.mjs +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/modules/auth/components/pages/EnterCode.vue +81 -62
- package/src/modules/auth/routes/twofa.routes.js +9 -1
- package/src/modules/auth/store/twofa.js +4 -1
- package/src/modules/middlewares/server/verifyUser.js +1 -0
@@ -1,51 +1,4 @@
|
|
1
|
-
|
2
|
-
import y from "../FieldPhone/click-outside.js";
|
3
|
-
import "./Dropdown.vue.js";
|
4
|
-
import O from "../../../../_virtual/_plugin-vue_export-helper.js";
|
5
|
-
const b = {
|
6
|
-
__name: "Dropdown",
|
7
|
-
props: {
|
8
|
-
label: {
|
9
|
-
type: String,
|
10
|
-
default: "Open"
|
11
|
-
},
|
12
|
-
align: {
|
13
|
-
type: String,
|
14
|
-
default: "left"
|
15
|
-
}
|
16
|
-
},
|
17
|
-
setup(t) {
|
18
|
-
let l = y;
|
19
|
-
const e = a(!1);
|
20
|
-
function n() {
|
21
|
-
e.value = !1;
|
22
|
-
}
|
23
|
-
return (r, o) => i((d(), s("div", {
|
24
|
-
class: "dropdown pos-relative",
|
25
|
-
onClick: o[0] || (o[0] = u((x) => e.value = !e.value, ["stop"]))
|
26
|
-
}, [
|
27
|
-
c(f(t.label) + " ", 1),
|
28
|
-
p(m, {
|
29
|
-
name: "TransitionTranslateY",
|
30
|
-
mode: "out-in"
|
31
|
-
}, {
|
32
|
-
default: v(() => [
|
33
|
-
i(g("div", {
|
34
|
-
style: w({ left: t.align === "left" ? "0" : "auto", right: t.align === "right" ? "0" : "auto" }),
|
35
|
-
class: "dropdown-content w-15r radius-big"
|
36
|
-
}, [
|
37
|
-
k(r.$slots, "default", {}, void 0, !0)
|
38
|
-
], 4), [
|
39
|
-
[S, e.value]
|
40
|
-
])
|
41
|
-
]),
|
42
|
-
_: 3
|
43
|
-
})
|
44
|
-
])), [
|
45
|
-
[h(l), n]
|
46
|
-
]);
|
47
|
-
}
|
48
|
-
}, N = /* @__PURE__ */ O(b, [["__scopeId", "data-v-2f59adb5"]]);
|
1
|
+
const _ = "";
|
49
2
|
export {
|
50
|
-
|
3
|
+
_ as default
|
51
4
|
};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="";exports.default=e;
|
@@ -1,74 +1,4 @@
|
|
1
|
-
|
2
|
-
import { useRoute as C, useRouter as O } from "vue-router";
|
3
|
-
import { useI18n as T } from "vue-i18n";
|
4
|
-
import g from "../../modules/icons/navigation/IconCross.vue.js";
|
5
|
-
import "./Popup.vue2.js";
|
6
|
-
const z = {
|
7
|
-
key: "popup-content",
|
8
|
-
class: "pd-small popup-wrapper"
|
9
|
-
}, I = {
|
10
|
-
__name: "Popup",
|
11
|
-
props: {
|
12
|
-
isPopupOpen: {
|
13
|
-
type: Boolean,
|
14
|
-
default: !1
|
15
|
-
},
|
16
|
-
style: String
|
17
|
-
},
|
18
|
-
emits: ["close-popup"],
|
19
|
-
setup(e, { emit: c }) {
|
20
|
-
const m = e, d = c;
|
21
|
-
function r() {
|
22
|
-
d("close-popup");
|
23
|
-
}
|
24
|
-
return v(() => m.isPopupOpen, (o) => {
|
25
|
-
o ? document.body.classList.add("no-scroll") : document.body.classList.remove("no-scroll");
|
26
|
-
}), C(), O(), T({
|
27
|
-
messages: {
|
28
|
-
en: {},
|
29
|
-
ru: {}
|
30
|
-
}
|
31
|
-
}), (o, t) => e.isPopupOpen ? (s(), y(P, {
|
32
|
-
key: 0,
|
33
|
-
to: "body"
|
34
|
-
}, [
|
35
|
-
n(l, {
|
36
|
-
name: "TransitionTranslateY",
|
37
|
-
appear: ""
|
38
|
-
}, {
|
39
|
-
default: a(() => [
|
40
|
-
e.isPopupOpen ? (s(), i("div", z, [
|
41
|
-
n(l, {
|
42
|
-
name: "TransitionTranslateY",
|
43
|
-
mode: "out-in"
|
44
|
-
}, {
|
45
|
-
default: a(() => [
|
46
|
-
e.isPopupOpen ? (s(), i("section", k({
|
47
|
-
key: 0,
|
48
|
-
class: "pos-relative z-index-4"
|
49
|
-
}, o.$attrs), [
|
50
|
-
u("button", {
|
51
|
-
onClick: t[0] || (t[0] = (f) => r()),
|
52
|
-
class: "pd-regular hover-scale-1 z-index-5 button-close-popup button"
|
53
|
-
}, [
|
54
|
-
n(g)
|
55
|
-
]),
|
56
|
-
b(o.$slots, "default")
|
57
|
-
], 16)) : p("", !0)
|
58
|
-
]),
|
59
|
-
_: 3
|
60
|
-
}),
|
61
|
-
u("div", {
|
62
|
-
onClick: t[1] || (t[1] = (f) => r()),
|
63
|
-
class: x([{ active: e.isPopupOpen === !0 }, "color-overlay z-index-3"])
|
64
|
-
}, null, 2)
|
65
|
-
])) : p("", !0)
|
66
|
-
]),
|
67
|
-
_: 3
|
68
|
-
})
|
69
|
-
])) : p("", !0);
|
70
|
-
}
|
71
|
-
};
|
1
|
+
const e = "";
|
72
2
|
export {
|
73
|
-
|
3
|
+
e as default
|
74
4
|
};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="";
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("vue-router"),c=require("vue-i18n"),d=require("../../modules/icons/navigation/IconCross.vue.cjs");require("./Popup.vue.cjs");const m={key:"popup-content",class:"pd-small popup-wrapper"},v={__name:"Popup",props:{isPopupOpen:{type:Boolean,default:!1},style:String},emits:["close-popup"],setup(t,{emit:l}){const u=t,a=l;function s(){a("close-popup")}e.watch(()=>u.isPopupOpen,o=>{o?document.body.classList.add("no-scroll"):document.body.classList.remove("no-scroll")}),r.useRoute(),r.useRouter();const p={messages:{en:{},ru:{}}};return c.useI18n(p),(o,n)=>t.isPopupOpen?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:"body"},[e.createVNode(e.Transition,{name:"TransitionTranslateY",appear:""},{default:e.withCtx(()=>[t.isPopupOpen?(e.openBlock(),e.createElementBlock("div",m,[e.createVNode(e.Transition,{name:"TransitionTranslateY",mode:"out-in"},{default:e.withCtx(()=>[t.isPopupOpen?(e.openBlock(),e.createElementBlock("section",e.mergeProps({key:0,class:"pos-relative z-index-4"},o.$attrs),[e.createElementVNode("button",{onClick:n[0]||(n[0]=i=>s()),class:"pd-regular hover-scale-1 z-index-5 button-close-popup button"},[e.createVNode(d.default)]),e.renderSlot(o.$slots,"default")],16)):e.createCommentVNode("",!0)]),_:3}),e.createElementVNode("div",{onClick:n[1]||(n[1]=i=>s()),class:e.normalizeClass([{active:t.isPopupOpen===!0},"color-overlay z-index-3"])},null,2)])):e.createCommentVNode("",!0)]),_:3})])):e.createCommentVNode("",!0)}};exports.default=v;
|
@@ -1,4 +1,74 @@
|
|
1
|
-
|
1
|
+
import { watch as v, openBlock as s, createBlock as y, Teleport as P, createVNode as n, Transition as l, withCtx as a, createElementBlock as i, mergeProps as k, createElementVNode as u, renderSlot as b, createCommentVNode as p, normalizeClass as x } from "vue";
|
2
|
+
import { useRoute as C, useRouter as O } from "vue-router";
|
3
|
+
import { useI18n as T } from "vue-i18n";
|
4
|
+
import g from "../../modules/icons/navigation/IconCross.vue.js";
|
5
|
+
import "./Popup.vue.js";
|
6
|
+
const z = {
|
7
|
+
key: "popup-content",
|
8
|
+
class: "pd-small popup-wrapper"
|
9
|
+
}, I = {
|
10
|
+
__name: "Popup",
|
11
|
+
props: {
|
12
|
+
isPopupOpen: {
|
13
|
+
type: Boolean,
|
14
|
+
default: !1
|
15
|
+
},
|
16
|
+
style: String
|
17
|
+
},
|
18
|
+
emits: ["close-popup"],
|
19
|
+
setup(e, { emit: c }) {
|
20
|
+
const m = e, d = c;
|
21
|
+
function r() {
|
22
|
+
d("close-popup");
|
23
|
+
}
|
24
|
+
return v(() => m.isPopupOpen, (o) => {
|
25
|
+
o ? document.body.classList.add("no-scroll") : document.body.classList.remove("no-scroll");
|
26
|
+
}), C(), O(), T({
|
27
|
+
messages: {
|
28
|
+
en: {},
|
29
|
+
ru: {}
|
30
|
+
}
|
31
|
+
}), (o, t) => e.isPopupOpen ? (s(), y(P, {
|
32
|
+
key: 0,
|
33
|
+
to: "body"
|
34
|
+
}, [
|
35
|
+
n(l, {
|
36
|
+
name: "TransitionTranslateY",
|
37
|
+
appear: ""
|
38
|
+
}, {
|
39
|
+
default: a(() => [
|
40
|
+
e.isPopupOpen ? (s(), i("div", z, [
|
41
|
+
n(l, {
|
42
|
+
name: "TransitionTranslateY",
|
43
|
+
mode: "out-in"
|
44
|
+
}, {
|
45
|
+
default: a(() => [
|
46
|
+
e.isPopupOpen ? (s(), i("section", k({
|
47
|
+
key: 0,
|
48
|
+
class: "pos-relative z-index-4"
|
49
|
+
}, o.$attrs), [
|
50
|
+
u("button", {
|
51
|
+
onClick: t[0] || (t[0] = (f) => r()),
|
52
|
+
class: "pd-regular hover-scale-1 z-index-5 button-close-popup button"
|
53
|
+
}, [
|
54
|
+
n(g)
|
55
|
+
]),
|
56
|
+
b(o.$slots, "default")
|
57
|
+
], 16)) : p("", !0)
|
58
|
+
]),
|
59
|
+
_: 3
|
60
|
+
}),
|
61
|
+
u("div", {
|
62
|
+
onClick: t[1] || (t[1] = (f) => r()),
|
63
|
+
class: x([{ active: e.isPopupOpen === !0 }, "color-overlay z-index-3"])
|
64
|
+
}, null, 2)
|
65
|
+
])) : p("", !0)
|
66
|
+
]),
|
67
|
+
_: 3
|
68
|
+
})
|
69
|
+
])) : p("", !0);
|
70
|
+
}
|
71
|
+
};
|
2
72
|
export {
|
3
|
-
|
73
|
+
I as default
|
4
74
|
};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="";exports.default=e;
|
@@ -1,80 +1,4 @@
|
|
1
|
-
|
2
|
-
import "./Select.vue2.js";
|
3
|
-
import M from "../../../../_virtual/_plugin-vue_export-helper.js";
|
4
|
-
const N = ["onClick"], O = {
|
5
|
-
key: 0,
|
6
|
-
class: "t-transp mn-r-small"
|
7
|
-
}, T = { class: "w-100" }, V = ["onClick"], $ = {
|
8
|
-
key: 0,
|
9
|
-
class: "w-100"
|
10
|
-
}, z = {
|
11
|
-
key: 0,
|
12
|
-
class: "mn-t-thin invalid-feedback"
|
13
|
-
}, E = {
|
14
|
-
__name: "Select",
|
15
|
-
props: {
|
16
|
-
label: String,
|
17
|
-
select: [String, Object],
|
18
|
-
placeholder: { type: String, default: "Please select an item" },
|
19
|
-
options: { type: Array, default: () => [] },
|
20
|
-
validation: Boolean
|
21
|
-
},
|
22
|
-
emits: ["update:select", "focus", "blur"],
|
23
|
-
setup(s, { emit: w }) {
|
24
|
-
const d = w, a = s, n = f(a.select), o = f(!1);
|
25
|
-
S(() => a.select, (e) => {
|
26
|
-
n.value = e;
|
27
|
-
});
|
28
|
-
const y = x(() => a.select ? a.options.filter((e) => e !== a.select) : a.options), m = () => {
|
29
|
-
o.value = !o.value, d(o.value ? "focus" : "blur");
|
30
|
-
}, C = (e) => {
|
31
|
-
n.value = e, m(), d("update:select", n.value);
|
32
|
-
};
|
33
|
-
return (e, L) => {
|
34
|
-
var p;
|
35
|
-
return t(), l(v, null, [
|
36
|
-
i("div", {
|
37
|
-
onClick: h(m, ["stop"]),
|
38
|
-
class: _([e.$attrs.class, "cursor-pointer flex-nowrap flex"])
|
39
|
-
}, [
|
40
|
-
s.label ? (t(), l("div", O, [
|
41
|
-
i("span", null, r(s.label), 1)
|
42
|
-
])) : u("", !0),
|
43
|
-
i("li", T, [
|
44
|
-
i("span", null, r(((p = n.value) == null ? void 0 : p.name) || n.value || s.placeholder), 1)
|
45
|
-
]),
|
46
|
-
k(b, {
|
47
|
-
mode: "out-in",
|
48
|
-
name: "TransitionTranslateY"
|
49
|
-
}, {
|
50
|
-
default: g(() => [
|
51
|
-
o.value ? (t(), l("ul", {
|
52
|
-
key: 0,
|
53
|
-
class: _([e.$attrs.class, "pos-absolute pos-t-100 pos-l-0 z-index-5 w-100 mn-t-thin"])
|
54
|
-
}, [
|
55
|
-
(t(!0), l(v, null, B(y.value, (c) => (t(), l("li", {
|
56
|
-
onClick: h((j) => C(c), ["stop"])
|
57
|
-
}, [
|
58
|
-
c ? (t(), l("span", $, r(c.name || c), 1)) : u("", !0)
|
59
|
-
], 8, V))), 256))
|
60
|
-
], 2)) : u("", !0)
|
61
|
-
]),
|
62
|
-
_: 1
|
63
|
-
})
|
64
|
-
], 10, N),
|
65
|
-
k(b, {
|
66
|
-
mode: "out-in",
|
67
|
-
name: "fade"
|
68
|
-
}, {
|
69
|
-
default: g(() => [
|
70
|
-
s.validation ? (t(), l("div", z, " * " + r(s.validation.message), 1)) : u("", !0)
|
71
|
-
]),
|
72
|
-
_: 1
|
73
|
-
})
|
74
|
-
], 64);
|
75
|
-
};
|
76
|
-
}
|
77
|
-
}, I = /* @__PURE__ */ M(E, [["__scopeId", "data-v-dfe03dc2"]]);
|
1
|
+
const e = "";
|
78
2
|
export {
|
79
|
-
|
3
|
+
e as default
|
80
4
|
};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="";
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("./Select.vue.cjs");const p=require("../../../../_virtual/_plugin-vue_export-helper.cjs"),k=["onClick"],v={key:0,class:"t-transp mn-r-small"},f={class:"w-100"},h=["onClick"],g={key:0,class:"w-100"},B={key:0,class:"mn-t-thin invalid-feedback"},_={__name:"Select",props:{label:String,select:[String,Object],placeholder:{type:String,default:"Please select an item"},options:{type:Array,default:()=>[]},validation:Boolean},emits:["update:select","focus","blur"],setup(l,{emit:u}){const c=u,o=l,n=e.ref(o.select),a=e.ref(!1);e.watch(()=>o.select,t=>{n.value=t});const d=e.computed(()=>o.select?o.options.filter(t=>t!==o.select):o.options),r=()=>{a.value=!a.value,c(a.value?"focus":"blur")},m=t=>{n.value=t,r(),c("update:select",n.value)};return(t,C)=>{var i;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{onClick:e.withModifiers(r,["stop"]),class:e.normalizeClass([t.$attrs.class,"cursor-pointer flex-nowrap flex"])},[l.label?(e.openBlock(),e.createElementBlock("div",v,[e.createElementVNode("span",null,e.toDisplayString(l.label),1)])):e.createCommentVNode("",!0),e.createElementVNode("li",f,[e.createElementVNode("span",null,e.toDisplayString(((i=n.value)==null?void 0:i.name)||n.value||l.placeholder),1)]),e.createVNode(e.Transition,{mode:"out-in",name:"TransitionTranslateY"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("ul",{key:0,class:e.normalizeClass([t.$attrs.class,"pos-absolute pos-t-100 pos-l-0 z-index-5 w-100 mn-t-thin"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,s=>(e.openBlock(),e.createElementBlock("li",{onClick:e.withModifiers(E=>m(s),["stop"])},[s?(e.openBlock(),e.createElementBlock("span",g,e.toDisplayString(s.name||s),1)):e.createCommentVNode("",!0)],8,h))),256))],2)):e.createCommentVNode("",!0)]),_:1})],10,k),e.createVNode(e.Transition,{mode:"out-in",name:"fade"},{default:e.withCtx(()=>[l.validation?(e.openBlock(),e.createElementBlock("div",B," * "+e.toDisplayString(l.validation.message),1)):e.createCommentVNode("",!0)]),_:1})],64)}}},y=p.default(_,[["__scopeId","data-v-dfe03dc2"]]);exports.default=y;
|
@@ -1,4 +1,80 @@
|
|
1
|
-
|
1
|
+
import { ref as f, watch as S, computed as x, openBlock as t, createElementBlock as l, Fragment as v, createElementVNode as i, withModifiers as h, normalizeClass as _, toDisplayString as r, createCommentVNode as u, createVNode as k, Transition as b, withCtx as g, renderList as B } from "vue";
|
2
|
+
import "./Select.vue.js";
|
3
|
+
import M from "../../../../_virtual/_plugin-vue_export-helper.js";
|
4
|
+
const N = ["onClick"], O = {
|
5
|
+
key: 0,
|
6
|
+
class: "t-transp mn-r-small"
|
7
|
+
}, T = { class: "w-100" }, V = ["onClick"], $ = {
|
8
|
+
key: 0,
|
9
|
+
class: "w-100"
|
10
|
+
}, z = {
|
11
|
+
key: 0,
|
12
|
+
class: "mn-t-thin invalid-feedback"
|
13
|
+
}, E = {
|
14
|
+
__name: "Select",
|
15
|
+
props: {
|
16
|
+
label: String,
|
17
|
+
select: [String, Object],
|
18
|
+
placeholder: { type: String, default: "Please select an item" },
|
19
|
+
options: { type: Array, default: () => [] },
|
20
|
+
validation: Boolean
|
21
|
+
},
|
22
|
+
emits: ["update:select", "focus", "blur"],
|
23
|
+
setup(s, { emit: w }) {
|
24
|
+
const d = w, a = s, n = f(a.select), o = f(!1);
|
25
|
+
S(() => a.select, (e) => {
|
26
|
+
n.value = e;
|
27
|
+
});
|
28
|
+
const y = x(() => a.select ? a.options.filter((e) => e !== a.select) : a.options), m = () => {
|
29
|
+
o.value = !o.value, d(o.value ? "focus" : "blur");
|
30
|
+
}, C = (e) => {
|
31
|
+
n.value = e, m(), d("update:select", n.value);
|
32
|
+
};
|
33
|
+
return (e, L) => {
|
34
|
+
var p;
|
35
|
+
return t(), l(v, null, [
|
36
|
+
i("div", {
|
37
|
+
onClick: h(m, ["stop"]),
|
38
|
+
class: _([e.$attrs.class, "cursor-pointer flex-nowrap flex"])
|
39
|
+
}, [
|
40
|
+
s.label ? (t(), l("div", O, [
|
41
|
+
i("span", null, r(s.label), 1)
|
42
|
+
])) : u("", !0),
|
43
|
+
i("li", T, [
|
44
|
+
i("span", null, r(((p = n.value) == null ? void 0 : p.name) || n.value || s.placeholder), 1)
|
45
|
+
]),
|
46
|
+
k(b, {
|
47
|
+
mode: "out-in",
|
48
|
+
name: "TransitionTranslateY"
|
49
|
+
}, {
|
50
|
+
default: g(() => [
|
51
|
+
o.value ? (t(), l("ul", {
|
52
|
+
key: 0,
|
53
|
+
class: _([e.$attrs.class, "pos-absolute pos-t-100 pos-l-0 z-index-5 w-100 mn-t-thin"])
|
54
|
+
}, [
|
55
|
+
(t(!0), l(v, null, B(y.value, (c) => (t(), l("li", {
|
56
|
+
onClick: h((j) => C(c), ["stop"])
|
57
|
+
}, [
|
58
|
+
c ? (t(), l("span", $, r(c.name || c), 1)) : u("", !0)
|
59
|
+
], 8, V))), 256))
|
60
|
+
], 2)) : u("", !0)
|
61
|
+
]),
|
62
|
+
_: 1
|
63
|
+
})
|
64
|
+
], 10, N),
|
65
|
+
k(b, {
|
66
|
+
mode: "out-in",
|
67
|
+
name: "fade"
|
68
|
+
}, {
|
69
|
+
default: g(() => [
|
70
|
+
s.validation ? (t(), l("div", z, " * " + r(s.validation.message), 1)) : u("", !0)
|
71
|
+
]),
|
72
|
+
_: 1
|
73
|
+
})
|
74
|
+
], 64);
|
75
|
+
};
|
76
|
+
}
|
77
|
+
}, I = /* @__PURE__ */ M(E, [["__scopeId", "data-v-dfe03dc2"]]);
|
2
78
|
export {
|
3
|
-
|
79
|
+
I as default
|
4
80
|
};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue");require("../../../../components/Field/Field.vue.cjs");const f=require("vue-router"),
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue");require("../../../../components/Field/Field.vue.cjs");const f=require("vue-router"),b=require("vue-i18n"),E=require("../../store/auth.cjs"),p=require("../../store/twofa.cjs"),y=require("../../../globals/store/globals.cjs"),q=require("../../localization/EnterCode.json.cjs"),D={class:"t-center pd-medium"},I={class:"mn-b-medium"},S={class:"mn-b-big t-transp"},k={class:"w-100 mn-b-big flex-nowrap flex"},C={key:1},N={__name:"EnterCode",setup(V){const g=f.useRoute(),c=f.useRouter(),{t:d}=b.useI18n(q.default),o=n.reactive({digits:["","","",""],error:null});n.watch(()=>o.digits[0],s=>{if(s&&String(s).length>1){let e=String(s).split("");console.log(e);let t=[...o.digits];e.forEach((l,r)=>{console.log(r),console.log(t[r]),console.log(l),t[r]=l}),o.digits=t,u(3)}});const m=n.ref(null),i=n.ref(0);async function v(){try{await p.sendCode(E.state.user,g.query.method,g.query.type),i.value=30;const s=setInterval(()=>{i.value>0?i.value-=1:clearInterval(s)},1e3)}catch{y.setError({response:{data:{errorCode:"CODE_NOT_SENT"}}})}}const a=(s,e)=>{if(s.key==="Backspace"&&(o.digits[e]===null||o.digits[e]===void 0||o.digits[e]==="")){s.preventDefault();const t=document.querySelectorAll("input"),l=e>0?t[e-1]:null;l&&(l.focus(),l.setSelectionRange(l.value.length,l.value.length))}},u=s=>{const e=document.querySelectorAll("input"),t=e[s+1],l=s>0?e[s-1]:null;if(o.digits[s]!==""&&o.digits[s]!==null&&o.digits[s]!==void 0&&s<4&&(s<3?t.focus():m.value.focus()),(o.digits[s]===null||o.digits[s]===void 0||o.digits[s]==="")&&s>0&&l.focus(),o.digits.every(r=>r!=="")){const r=o.digits.join(""),w=p.state.code.code.toString();r===w?(p.state.code.isValid=!0,c.push({path:"/auth/enter-password",query:{type:p.state.code.type,method:g.query.method}})):(y.setError({response:{data:{errorCode:"WRONG_CODE"}}}),m.value.focus(),o.digits=["","","",""])}};return(s,e)=>(n.openBlock(),n.createElementBlock("section",D,[n.createElementVNode("h3",I,n.toDisplayString(n.unref(d)("verifyNumberTitle")),1),n.createElementVNode("p",S,n.toDisplayString(n.unref(d)("instructions")),1),n.createElementVNode("div",k,[n.withDirectives(n.createElementVNode("input",{type:"number","onUpdate:modelValue":e[0]||(e[0]=t=>o.digits[0]=t),ref_key:"firstInput",ref:m,maxlength:"1",onInput:e[1]||(e[1]=t=>u(0)),onPaste:e[2]||(e[2]=t=>s.onPaste(t,0)),onKeydown:e[3]||(e[3]=t=>a(t,0)),class:"w-100 h1 pd-small t-center bg-grey radius-small mn-r-small"},null,544),[[n.vModelText,o.digits[0]]]),n.withDirectives(n.createElementVNode("input",{type:"number","onUpdate:modelValue":e[4]||(e[4]=t=>o.digits[1]=t),maxlength:"1",onInput:e[5]||(e[5]=t=>u(1)),onPaste:e[6]||(e[6]=t=>s.onPaste(t,1)),onKeydown:e[7]||(e[7]=t=>a(t,1)),class:"w-100 h1 pd-small t-center bg-grey radius-small mn-r-small"},null,544),[[n.vModelText,o.digits[1]]]),n.withDirectives(n.createElementVNode("input",{type:"number","onUpdate:modelValue":e[8]||(e[8]=t=>o.digits[2]=t),maxlength:"1",onInput:e[9]||(e[9]=t=>u(2)),onPaste:e[10]||(e[10]=t=>s.onPaste(t,2)),onKeydown:e[11]||(e[11]=t=>a(t,2)),class:"w-100 h1 pd-small t-center bg-grey radius-small mn-r-small"},null,544),[[n.vModelText,o.digits[2]]]),n.withDirectives(n.createElementVNode("input",{type:"number","onUpdate:modelValue":e[12]||(e[12]=t=>o.digits[3]=t),maxlength:"1",onInput:e[13]||(e[13]=t=>u(3)),onPaste:e[14]||(e[14]=t=>s.onPaste(t,3)),onKeydown:e[15]||(e[15]=t=>a(t,3)),class:"w-100 h1 pd-small t-center bg-grey radius-small"},null,544),[[n.vModelText,o.digits[3]]])]),i.value<1?(n.openBlock(),n.createElementBlock("a",{key:0,onClick:v,class:"t-blue"},n.toDisplayString(n.unref(d)("resendCode")),1)):(n.openBlock(),n.createElementBlock("span",C,n.toDisplayString(i.value)+" "+n.toDisplayString(n.unref(d)("secondsResend")),1))]))}};exports.default=N;
|
@@ -1,22 +1,22 @@
|
|
1
|
-
import { reactive as
|
1
|
+
import { reactive as S, watch as D, ref as c, openBlock as b, createElementBlock as w, createElementVNode as r, toDisplayString as d, unref as m, withDirectives as g, vModelText as f } from "vue";
|
2
2
|
import "../../../../components/Field/Field.vue.js";
|
3
|
-
import { useRoute as q, useRouter as
|
4
|
-
import { useI18n as
|
5
|
-
import { state as
|
6
|
-
import { state as
|
7
|
-
import { setError as
|
3
|
+
import { useRoute as q, useRouter as $ } from "vue-router";
|
4
|
+
import { useI18n as K } from "vue-i18n";
|
5
|
+
import { state as N } from "../../store/auth.js";
|
6
|
+
import { state as I, sendCode as R } from "../../store/twofa.js";
|
7
|
+
import { setError as C } from "../../../globals/store/globals.js";
|
8
8
|
import T from "../../localization/EnterCode.json.js";
|
9
|
-
const
|
9
|
+
const V = { class: "t-center pd-medium" }, A = { class: "mn-b-medium" }, O = { class: "mn-b-big t-transp" }, U = { class: "w-100 mn-b-big flex-nowrap flex" }, B = { key: 1 }, Q = {
|
10
10
|
__name: "EnterCode",
|
11
11
|
setup(j) {
|
12
|
-
const
|
12
|
+
const y = q(), k = $(), { t: p } = K(T), n = S({
|
13
13
|
digits: ["", "", "", ""],
|
14
14
|
error: null
|
15
15
|
});
|
16
|
-
|
16
|
+
D(
|
17
17
|
() => n.digits[0],
|
18
18
|
(s) => {
|
19
|
-
if (
|
19
|
+
if (s && String(s).length > 1) {
|
20
20
|
let t = String(s).split("");
|
21
21
|
console.log(t);
|
22
22
|
let e = [...n.digits];
|
@@ -26,15 +26,19 @@ const A = { class: "t-center pd-medium" }, O = { class: "mn-b-medium" }, U = { c
|
|
26
26
|
}
|
27
27
|
}
|
28
28
|
);
|
29
|
-
const
|
29
|
+
const v = c(null), i = c(0);
|
30
30
|
async function E() {
|
31
31
|
try {
|
32
|
-
await R(
|
32
|
+
await R(
|
33
|
+
N.user,
|
34
|
+
y.query.method,
|
35
|
+
y.query.type
|
36
|
+
), i.value = 30;
|
33
37
|
const s = setInterval(() => {
|
34
38
|
i.value > 0 ? i.value -= 1 : clearInterval(s);
|
35
39
|
}, 1e3);
|
36
40
|
} catch {
|
37
|
-
|
41
|
+
C({ response: { data: { errorCode: "CODE_NOT_SENT" } } });
|
38
42
|
}
|
39
43
|
}
|
40
44
|
const a = (s, t) => {
|
@@ -45,23 +49,23 @@ const A = { class: "t-center pd-medium" }, O = { class: "mn-b-medium" }, U = { c
|
|
45
49
|
}
|
46
50
|
}, u = (s) => {
|
47
51
|
const t = document.querySelectorAll("input"), e = t[s + 1], o = s > 0 ? t[s - 1] : null;
|
48
|
-
if (n.digits[s] !== "" && n.digits[s] !== null && n.digits[s] !== void 0 && s < 4 && (s < 3 ? e.focus() :
|
49
|
-
const l = n.digits.join(""), P =
|
50
|
-
l === P ? (
|
52
|
+
if (n.digits[s] !== "" && n.digits[s] !== null && n.digits[s] !== void 0 && s < 4 && (s < 3 ? e.focus() : v.value.focus()), (n.digits[s] === null || n.digits[s] === void 0 || n.digits[s] === "") && s > 0 && o.focus(), n.digits.every((l) => l !== "")) {
|
53
|
+
const l = n.digits.join(""), P = I.code.code.toString();
|
54
|
+
l === P ? (I.code.isValid = !0, k.push({
|
51
55
|
path: "/auth/enter-password",
|
52
|
-
query: { type:
|
53
|
-
})) : (
|
56
|
+
query: { type: I.code.type, method: y.query.method }
|
57
|
+
})) : (C({ response: { data: { errorCode: "WRONG_CODE" } } }), v.value.focus(), n.digits = ["", "", "", ""]);
|
54
58
|
}
|
55
59
|
};
|
56
|
-
return (s, t) => (
|
57
|
-
r("h3",
|
58
|
-
r("p",
|
59
|
-
r("div",
|
60
|
+
return (s, t) => (b(), w("section", V, [
|
61
|
+
r("h3", A, d(m(p)("verifyNumberTitle")), 1),
|
62
|
+
r("p", O, d(m(p)("instructions")), 1),
|
63
|
+
r("div", U, [
|
60
64
|
g(r("input", {
|
61
65
|
type: "number",
|
62
66
|
"onUpdate:modelValue": t[0] || (t[0] = (e) => n.digits[0] = e),
|
63
67
|
ref_key: "firstInput",
|
64
|
-
ref:
|
68
|
+
ref: v,
|
65
69
|
maxlength: "1",
|
66
70
|
onInput: t[1] || (t[1] = (e) => u(0)),
|
67
71
|
onPaste: t[2] || (t[2] = (e) => s.onPaste(e, 0)),
|
@@ -104,11 +108,11 @@ const A = { class: "t-center pd-medium" }, O = { class: "mn-b-medium" }, U = { c
|
|
104
108
|
[f, n.digits[3]]
|
105
109
|
])
|
106
110
|
]),
|
107
|
-
i.value < 1 ? (
|
111
|
+
i.value < 1 ? (b(), w("a", {
|
108
112
|
key: 0,
|
109
113
|
onClick: E,
|
110
114
|
class: "t-blue"
|
111
|
-
}, d(m(p)("resendCode")), 1)) : (
|
115
|
+
}, d(m(p)("resendCode")), 1)) : (b(), w("span", B, d(i.value) + " " + d(m(p)("secondsResend")), 1))
|
112
116
|
]));
|
113
117
|
}
|
114
118
|
};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../../node_modules/axios/lib/axios.cjs");require("../../../../../node_modules/js-cookie/src/js.cookie.cjs");const r=require("vue"),d=require("../../globals/store/globals.cjs"),c=n.default.create({baseURL:process.env.API_URL,withCredentials:!0}),t=r.reactive({code:{value:"",type:"",method:"",isSended:!1,isValid:!1}});async function l(a,o,i){let s="/api/twofa/sendcode";return o==="reset-password"&&(s="/api/twofa/sendcodereset"),await c.post(s,{phone:a.phone.number,email:a.email,method:o,type:i}).then(e=>(t.code=e.data,t.code.isSended=!0,Promise.resolve(e.data)),e=>(console.log(e),d.setError(e),Promise.reject(e)))}r.watch(t,(a,o)=>{});exports.sendCode=l;exports.state=t;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import r from "../../../../node_modules/axios/lib/axios.js";
|
2
2
|
import "../../../../../node_modules/js-cookie/src/js.cookie.js";
|
3
|
-
import { reactive as
|
4
|
-
import { setError as
|
5
|
-
const
|
3
|
+
import { reactive as d, watch as n } from "vue";
|
4
|
+
import { setError as c } from "../../globals/store/globals.js";
|
5
|
+
const p = r.create({ baseURL: process.env.API_URL, withCredentials: !0 }), a = d({
|
6
6
|
code: {
|
7
7
|
value: "",
|
8
8
|
type: "",
|
@@ -11,20 +11,21 @@ const c = r.create({ baseURL: process.env.API_URL, withCredentials: !0 }), o = s
|
|
11
11
|
isValid: !1
|
12
12
|
}
|
13
13
|
});
|
14
|
-
async function
|
15
|
-
|
14
|
+
async function w(t, o, i) {
|
15
|
+
let s = "/api/twofa/sendcode";
|
16
|
+
return o === "reset-password" && (s = "/api/twofa/sendcodereset"), await p.post(s, {
|
16
17
|
phone: t.phone.number,
|
17
18
|
email: t.email,
|
18
|
-
method:
|
19
|
+
method: o,
|
19
20
|
type: i
|
20
21
|
}).then(
|
21
|
-
(e) => (
|
22
|
-
(e) => (console.log(e),
|
22
|
+
(e) => (a.code = e.data, a.code.isSended = !0, Promise.resolve(e.data)),
|
23
|
+
(e) => (console.log(e), c(e), Promise.reject(e))
|
23
24
|
);
|
24
25
|
}
|
25
|
-
n(
|
26
|
+
n(a, (t, o) => {
|
26
27
|
});
|
27
28
|
export {
|
28
|
-
|
29
|
-
|
29
|
+
w as sendCode,
|
30
|
+
a as state
|
30
31
|
};
|
package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("vue-router"),u=require("../../../../components/Select/Select.
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("vue-router"),u=require("../../../../components/Select/Select.vue2.cjs"),a=require("../../store/blogposts.cjs"),c=require("../../../auth/store/auth.cjs"),m={class:"min-h-100vh pd-thin"},d={class:"mn-b-thin flex-v-center t-left flex-nowrap flex"},p={class:"flex-v-center flex-nowrap flex t-left"},f=e.createElementVNode("span",{class:""},"Topics for ",-1),g={class:"w-100 bg-grey pd-small radius-big mn-b-semi gap-thin flex-nowrap flex"},h={class:""},w={__name:"Community",setup(k){const l=n.useRoute(),r=n.useRouter();return(y,t)=>{const s=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",m,[e.createElementVNode("header",d,[e.createElementVNode("h2",p,[f,e.createVNode(u.default,{options:["today","week","month","year"],select:a.state.filter.period,"onUpdate:select":t[0]||(t[0]=o=>a.state.filter.period=o),placeholder:"Select type",class:"w-max mn-l-small bg-grey pd-thin radius-medium h2 t-center t-black"},null,8,["select"])])]),e.createElementVNode("ul",g,[e.createElementVNode("li",{class:e.normalizeClass([{"t-white bg-black":e.unref(l).params.category==="featured"},"t-medium pd-thin radius-small"]),onClick:t[1]||(t[1]=o=>e.unref(r).push({name:"Blog"}))},"👑 Featured",2),e.createElementVNode("li",{class:e.normalizeClass([{"t-white bg-black":e.unref(l).params.category==="popular"},"t-medium pd-thin radius-small"]),onClick:t[2]||(t[2]=o=>e.unref(r).push({name:"Blog",params:{category:"popular"}}))},"🔥 Popular",2),e.createElementVNode("li",{class:e.normalizeClass([{"t-white bg-black":e.unref(l).params.category==="new"},"t-medium pd-thin radius-small"]),onClick:t[3]||(t[3]=o=>e.unref(r).push({name:"Blog",params:{category:"new"}}))},"🆕 New",2),c.state.user._id?(e.openBlock(),e.createElementBlock("li",{key:0,class:e.normalizeClass([{"t-white bg-black":e.unref(l).params.category==="following"},"t-medium pd-thin radius-small"]),onClick:t[4]||(t[4]=o=>e.unref(r).push({name:"Blog",params:{category:"following"}}))},"👥 Following",2)):e.createCommentVNode("",!0)]),e.createElementVNode("section",h,[e.createVNode(s,null,{default:e.withCtx(({Component:o,route:i})=>[e.createVNode(e.Transition,{name:"scaleIn",mode:"out-in"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o),{ref:"page",key:i.query}))]),_:2},1024)]),_:1})])])}}};exports.default=w;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { resolveComponent as f, openBlock as n, createElementBlock as m, createElementVNode as o, createVNode as i, normalizeClass as r, unref as t, createCommentVNode as g, withCtx as p, Transition as h, createBlock as w, resolveDynamicComponent as y } from "vue";
|
2
2
|
import { useRoute as _, useRouter as k } from "vue-router";
|
3
|
-
import b from "../../../../components/Select/Select.
|
3
|
+
import b from "../../../../components/Select/Select.vue2.js";
|
4
4
|
import { state as c } from "../../store/blogposts.js";
|
5
5
|
import { state as v } from "../../../auth/store/auth.js";
|
6
6
|
const x = { class: "min-h-100vh pd-thin" }, C = { class: "mn-b-thin flex-v-center t-left flex-nowrap flex" }, B = { class: "flex-v-center flex-nowrap flex t-left" }, $ = /* @__PURE__ */ o("span", { class: "" }, "Topics for ", -1), N = { class: "w-100 bg-grey pd-small radius-big mn-b-semi gap-thin flex-nowrap flex" }, V = { class: "" }, D = {
|