@ozdao/martyrs 0.2.512 → 0.2.514
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/{main-u7zgfMGL.js → main-DEfnF9NO.js} +263 -264
- package/dist/{main-B1XN9Zjg.cjs → main-lmgIPvKk.cjs} +7 -7
- package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs +2 -2
- package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs +0 -2
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +0 -2
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +3 -5
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +3 -5
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs +6 -0
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +8 -2
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +46 -48
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +49 -51
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +13 -15
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +13 -15
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs +19 -18
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +19 -18
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +82 -61
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +83 -62
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +3 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +5 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +5 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.cjs +1 -0
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +2 -0
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +2 -17
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +3 -18
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +37 -43
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +48 -54
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +18 -11
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +18 -11
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/style.css +60 -53
- package/dist/{web--8-wgr6b.js → web-DEpona8R.js} +1 -1
- package/dist/{web-BS6utuAZ.cjs → web-sRZmqDoN.cjs} +1 -1
- package/package.json +1 -1
- package/src/components/Menu/MenuItem.vue +11 -6
- package/src/modules/auth/views/components/pages/Profile.vue +2 -2
- package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
- package/src/modules/events/components/pages/EventsBackoffice.vue +0 -1
- package/src/modules/globals/globals.client.js +13 -0
- package/src/modules/globals/views/components/sections/Filters.vue +4 -4
- package/src/modules/inventory/components/pages/Inventory.vue +0 -1
- package/src/modules/orders/components/blocks/CardOrderItem.vue +1 -1
- package/src/modules/orders/components/forms/FormCustomerDetails.vue +52 -35
- package/src/modules/orders/components/pages/OrderBackoffice.vue +2 -2
- package/src/modules/orders/components/pages/OrderCreate.vue +4 -2
- package/src/modules/orders/components/sections/FormDelivery.vue +2 -2
- package/src/modules/orders/orders.client.js +2 -0
- package/src/modules/organizations/components/pages/Organization.vue +6 -2
- package/src/modules/organizations/configs/navigation.organization.config.js +36 -36
- package/src/modules/products/components/pages/Products.vue +16 -11
- package/src/styles/base/scrolling.scss +5 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const IconChevronRight = require("../../modules/icons/navigation/IconChevronRight.vue.cjs");
|
|
5
|
+
;/* empty css */
|
|
5
6
|
const _sfc_main = vue.defineComponent({
|
|
6
7
|
props: {},
|
|
7
8
|
setup(props, { slots }) {
|
|
@@ -26,8 +27,7 @@ const _sfc_main = vue.defineComponent({
|
|
|
26
27
|
"flex-nowrap",
|
|
27
28
|
"flex-v-center",
|
|
28
29
|
"flex",
|
|
29
|
-
|
|
30
|
-
{ "br-b br-black-transp-10 br-solid": true }
|
|
30
|
+
"border-bottom-except-last"
|
|
31
31
|
]
|
|
32
32
|
},
|
|
33
33
|
[
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.vue.cjs","sources":["../../../../../src/components/Menu/MenuItem.vue"],"sourcesContent":["<script>\n import { h, ref, inject, defineComponent } from 'vue';\n \n import IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue'; \n
|
|
1
|
+
{"version":3,"file":"MenuItem.vue.cjs","sources":["../../../../../src/components/Menu/MenuItem.vue"],"sourcesContent":["<script>\n import { h, ref, inject, defineComponent } from 'vue';\n \n import IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue'; \n export default defineComponent({\n props: {\n },\n setup(props, { slots }) {\n return () => {\n const defaultSlotContent = slots.default ? slots.default() : [];\n const iconSlot = [];\n const textSlot = [];\n // Changing the logic to place slots based on whether the type starts with 'Icon' or not\n defaultSlotContent.forEach((vnode) => {\n let compType = vnode.toString()\n if (vnode.props && vnode.props.icon) { // Check if the type starts with 'Icon'\n iconSlot.push(vnode);\n } else {\n textSlot.push(vnode);\n }\n });\n return h(\n 'div',\n {\n class: [\n 'w-100',\n 't-left',\n 'flex-nowrap',\n 'flex-v-center',\n 'flex',\n 'border-bottom-except-last'\n ]\n },\n [\n // Conditionally include the div for iconSlot\n ...iconSlot.length ? [\n h(\n 'div',\n {\n class: ['mn-b-thin', 'mn-t-thin', 'flex-center', 'flex', 'mn-r-small','flex-child','flex-child-shrink-0', 'i-big', 'bg-main', 'radius-thin']\n },\n iconSlot\n )\n ] : [],\n h(\n 'div',\n {\n class: ['w-100', 'mn-b-thin', 'mn-t-thin', 'mn-r-small', 'i-big', 'flex-v-center', 'flex']\n },\n [\n h(\n 'span',\n {\n class: ['p-semi', 't-medium', 'mn-r-auto']\n },\n textSlot\n )\n ]\n ),\n h(IconChevronRight, { class: \"i-medium mn-r-medium\", type: \"chevron\"})\n ]\n );\n };\n }\n });\n</script>\n\n<style>\n.border-bottom-except-last {\n border-bottom: 1px solid rgba(var(--black) 0.1);\n}\n\n.border-bottom-except-last:last-child {\n border-bottom: none;\n}\n</style>"],"names":["defineComponent","h","IconChevronRight"],"mappings":";;;;;AAIO,MAAA,YAAaA,IAAAA,gBAAa;AAAA,EAC7B,OAAO;EAEP,MAAM,OAAO,EAAE,SAAS;AACtB,WAAO,MAAM;AACX,YAAM,qBAAqB,MAAM,UAAU,MAAM,QAAO,IAAK,CAAA;AAC7D,YAAM,WAAW,CAAA;AACjB,YAAM,WAAW,CAAA;AAEjB,yBAAmB,QAAQ,CAAC,UAAU;AACrB,cAAM,SAAQ;AAC7B,YAAI,MAAM,SAAS,MAAM,MAAM,MAAM;AACnC,mBAAS,KAAK,KAAK;AAAA,QACrB,OAAO;AACL,mBAAS,KAAK,KAAK;AAAA,QACrB;AAAA,MACF,CAAC;AACD,aAAOC,IAAAA;AAAAA,QACL;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;QAEF;AAAA;AAAA,UAEE,GAAG,SAAS,SAAS;AAAA,YACnBA,IAAAA;AAAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO,CAAC,aAAa,aAAa,eAAe,QAAQ,cAAa,cAAa,uBAAuB,SAAS,WAAW,aAAa;AAAA;cAE7I;AAAA,YACF;AAAA,cACE,CAAA;AAAA,UACJA,IAAAA;AAAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO,CAAC,SAAS,aAAa,aAAa,cAAc,SAAS,iBAAiB,MAAM;AAAA;YAE3F;AAAA,cACEA,IAAAA;AAAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO,CAAC,UAAU,YAAY,WAAW;AAAA;gBAE3C;AAAA,cACF;AAAA,YACF;AAAA;UAEFA,IAAAA,EAAEC,iBAAAA,SAAkB,EAAE,OAAO,wBAAwB,MAAM,UAAS,CAAC;AAAA,QACvE;AAAA;IAEJ;AAAA,EACF;AACF,CAAC;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { defineComponent, h } from "vue";
|
|
2
2
|
import IconNext from "../../modules/icons/navigation/IconChevronRight.vue.js";
|
|
3
|
+
/* empty css */
|
|
3
4
|
const _sfc_main = defineComponent({
|
|
4
5
|
props: {},
|
|
5
6
|
setup(props, { slots }) {
|
|
@@ -24,8 +25,7 @@ const _sfc_main = defineComponent({
|
|
|
24
25
|
"flex-nowrap",
|
|
25
26
|
"flex-v-center",
|
|
26
27
|
"flex",
|
|
27
|
-
|
|
28
|
-
{ "br-b br-black-transp-10 br-solid": true }
|
|
28
|
+
"border-bottom-except-last"
|
|
29
29
|
]
|
|
30
30
|
},
|
|
31
31
|
[
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.vue.js","sources":["../../../../../src/components/Menu/MenuItem.vue"],"sourcesContent":["<script>\n import { h, ref, inject, defineComponent } from 'vue';\n \n import IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue'; \n
|
|
1
|
+
{"version":3,"file":"MenuItem.vue.js","sources":["../../../../../src/components/Menu/MenuItem.vue"],"sourcesContent":["<script>\n import { h, ref, inject, defineComponent } from 'vue';\n \n import IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue'; \n export default defineComponent({\n props: {\n },\n setup(props, { slots }) {\n return () => {\n const defaultSlotContent = slots.default ? slots.default() : [];\n const iconSlot = [];\n const textSlot = [];\n // Changing the logic to place slots based on whether the type starts with 'Icon' or not\n defaultSlotContent.forEach((vnode) => {\n let compType = vnode.toString()\n if (vnode.props && vnode.props.icon) { // Check if the type starts with 'Icon'\n iconSlot.push(vnode);\n } else {\n textSlot.push(vnode);\n }\n });\n return h(\n 'div',\n {\n class: [\n 'w-100',\n 't-left',\n 'flex-nowrap',\n 'flex-v-center',\n 'flex',\n 'border-bottom-except-last'\n ]\n },\n [\n // Conditionally include the div for iconSlot\n ...iconSlot.length ? [\n h(\n 'div',\n {\n class: ['mn-b-thin', 'mn-t-thin', 'flex-center', 'flex', 'mn-r-small','flex-child','flex-child-shrink-0', 'i-big', 'bg-main', 'radius-thin']\n },\n iconSlot\n )\n ] : [],\n h(\n 'div',\n {\n class: ['w-100', 'mn-b-thin', 'mn-t-thin', 'mn-r-small', 'i-big', 'flex-v-center', 'flex']\n },\n [\n h(\n 'span',\n {\n class: ['p-semi', 't-medium', 'mn-r-auto']\n },\n textSlot\n )\n ]\n ),\n h(IconChevronRight, { class: \"i-medium mn-r-medium\", type: \"chevron\"})\n ]\n );\n };\n }\n });\n</script>\n\n<style>\n.border-bottom-except-last {\n border-bottom: 1px solid rgba(var(--black) 0.1);\n}\n\n.border-bottom-except-last:last-child {\n border-bottom: none;\n}\n</style>"],"names":["IconChevronRight"],"mappings":";;;AAIO,MAAA,YAAa,gBAAa;AAAA,EAC7B,OAAO;EAEP,MAAM,OAAO,EAAE,SAAS;AACtB,WAAO,MAAM;AACX,YAAM,qBAAqB,MAAM,UAAU,MAAM,QAAO,IAAK,CAAA;AAC7D,YAAM,WAAW,CAAA;AACjB,YAAM,WAAW,CAAA;AAEjB,yBAAmB,QAAQ,CAAC,UAAU;AACrB,cAAM,SAAQ;AAC7B,YAAI,MAAM,SAAS,MAAM,MAAM,MAAM;AACnC,mBAAS,KAAK,KAAK;AAAA,QACrB,OAAO;AACL,mBAAS,KAAK,KAAK;AAAA,QACrB;AAAA,MACF,CAAC;AACD,aAAO;AAAA,QACL;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;QAEF;AAAA;AAAA,UAEE,GAAG,SAAS,SAAS;AAAA,YACnB;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO,CAAC,aAAa,aAAa,eAAe,QAAQ,cAAa,cAAa,uBAAuB,SAAS,WAAW,aAAa;AAAA;cAE7I;AAAA,YACF;AAAA,cACE,CAAA;AAAA,UACJ;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO,CAAC,SAAS,aAAa,aAAa,cAAc,SAAS,iBAAiB,MAAM;AAAA;YAE3F;AAAA,cACE;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO,CAAC,UAAU,YAAY,WAAW;AAAA;gBAE3C;AAAA,cACF;AAAA,YACF;AAAA;UAEF,EAAEA,UAAkB,EAAE,OAAO,wBAAwB,MAAM,UAAS,CAAC;AAAA,QACvE;AAAA;IAEJ;AAAA,EACF;AACF,CAAC;"}
|
|
@@ -147,7 +147,7 @@ const _sfc_main = {
|
|
|
147
147
|
vue.unref(route).params._id === auth.state.user._id ? (vue.openBlock(), vue.createBlock(IconEdit.default, {
|
|
148
148
|
key: 1,
|
|
149
149
|
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$router.push({
|
|
150
|
-
name: "
|
|
150
|
+
name: "Profile Edit Profile",
|
|
151
151
|
params: {
|
|
152
152
|
_id: auth.state.user._id
|
|
153
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Profile.vue.cjs","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tv-if=\"show\"\n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current?.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase t-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'User Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '')+ users.state.current.profile.photo\" \n\t\t\t\t\tclass=\"radius-extra bg-white mn-b-small object-fit-cover i-extra\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<PlaceholderUserpic \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t\t/>\n\n\t\t\t\t<h3 \n\t\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t\t>\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main t-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-medium\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small t-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"t-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- 👍 3 212 likes · -->\n\t\t\t\t\t<!-- 💬 342 comments · -->\n\t\t\t\t\t👨👨👧👧 {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t<RouterView />\n\n\t\t\t<Menu v-if=\"filteredModules.length > 0\" class=\"mn-b-regular bg-light\">\n\t <MenuItem \n\t v-for=\"module in filteredModules\" \n\t :key=\"module.name\"\n\t @click=\"router.push({\n\t name: `${module.route}`, \n\t params: {\n\t _id: route.params._id,\n\t user: route.params._id\n\t }\n\t })\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-semi\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n \t</MenuItem>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t\t<MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Notifications', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tNotifications\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Profile Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@martyrs/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@martyrs/src/components/Menu/Menu.vue'\nimport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@martyrs/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@martyrs/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n// Import libs\nimport { computed, watch, onMounted, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\nimport * as memberships from '@martyrs/src/modules/organizations/store/memberships.js'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = inject('store')\n\nconst moduleMapping = {\n events: {\n displayName: 'Events',\n route: 'User Events',\n icon: IconEvents\n },\n organizations: {\n displayName: 'Groups',\n route: 'User Organizations',\n icon: IconGroups\n },\n blogposts: {\n displayName: 'Posts',\n route: 'User Posts',\n icon: IconCommunity\n },\n orders: {\n displayName: 'Orders',\n route: 'UserOrdersList',\n icon: IconOrders,\n visible: (auth) => auth.state.user && (\n auth.state.user._id === route.params._id || \n (auth.state.access && auth.state.access.roles && \n (auth.state.access.roles.includes('ROLE_MODERATOR') || \n auth.state.access.roles.includes('ROLE_ADMIN'))\n )\n )\n }\n}\n\nconst filteredModules = computed(() => {\n return store.modules\n .map(moduleName => {\n return {\n name: moduleName,\n ...moduleMapping[moduleName]\n }\n })\n .filter(module => {\n // Проверяем существование маппинга для модуля\n if (!moduleMapping[module.name]) return false;\n \n // Проверяем видимость модуля, если есть условие visible\n if (module.visible && typeof module.visible === 'function') {\n return module.visible(auth);\n }\n \n // По умолчанию показываем модуль, если есть маппинг\n return true;\n })\n})\n\nonMounted(async () => {\n \tawait users.actions.read({ _id: route.params._id, user: auth.state.user._id });\n \tshow.value = true\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["useRoute","useRouter","ref","inject","IconEvents","IconGroups","IconCommunity","IconOrders","auth","computed","module","onMounted","users.actions","auth.state","memberships.mutations","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkRA,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,UAAM,OAAOC,IAAAA,IAAI,KAAK;AAEtB,UAAM,QAAQC,IAAAA,OAAO,OAAO;AAE5B,UAAM,gBAAgB;AAAA,MACpB,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAAA;AAAAA,MACV;AAAA,MACE,eAAe;AAAA,QACb,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAAA;AAAAA,MACV;AAAA,MACE,WAAW;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,cAAAA;AAAAA,MACV;AAAA,MACE,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAAA;AAAAA,QACN,SAAS,CAACC,UAASA,MAAK,MAAM,SAC5BA,MAAK,MAAM,KAAK,QAAQ,MAAM,OAAO,OACpCA,MAAK,MAAM,UAAUA,MAAK,MAAM,OAAO,UACrCA,MAAK,MAAM,OAAO,MAAM,SAAS,gBAAgB,KACjDA,MAAK,MAAM,OAAO,MAAM,SAAS,YAAY;AAAA,MAGtD;AAAA,IACA;AAEA,UAAM,kBAAkBC,IAAAA,SAAS,MAAM;AACrC,aAAO,MAAM,QACV,IAAI,gBAAc;AACjB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,GAAG,cAAc,UAAU;AAAA,QACnC;AAAA,MACI,CAAC,EACA,OAAO,CAAAC,YAAU;AAEhB,YAAI,CAAC,cAAcA,QAAO,IAAI,EAAG,QAAO;AAGxC,YAAIA,QAAO,WAAW,OAAOA,QAAO,YAAY,YAAY;AAC1D,iBAAOA,QAAO,QAAQ,IAAI;AAAA,QAC5B;AAGA,eAAO;AAAA,MACT,CAAC;AAAA,IACL,CAAC;AAEDC,QAAAA,UAAU,YAAY;AACpB,YAAMC,cAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,KAAAA,MAAW,KAAK,IAAG,CAAE;AAC7E,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,4BAAsB,uBAAuBC,MAAAA,MAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACxH;AAEA,aAAS,SAAU;AACjBC,WAAAA,QAAa,OAAM;AAEnB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Profile.vue.cjs","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tv-if=\"show\"\n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current?.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase t-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'Profile Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + users.state.current.profile.photo\" \n\t\t\t\t\tclass=\"radius-extra bg-white mn-b-small object-fit-cover i-extra\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<PlaceholderUserpic \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t\t/>\n\n\t\t\t\t<h3 \n\t\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t\t>\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main t-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-medium\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small t-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"t-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- 👍 3 212 likes · -->\n\t\t\t\t\t<!-- 💬 342 comments · -->\n\t\t\t\t\t👨👨👧👧 {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t<RouterView />\n\n\t\t\t<Menu v-if=\"filteredModules.length > 0\" class=\"mn-b-regular bg-light\">\n\t <MenuItem \n\t v-for=\"module in filteredModules\" \n\t :key=\"module.name\"\n\t @click=\"router.push({\n\t name: `${module.route}`, \n\t params: {\n\t _id: route.params._id,\n\t user: route.params._id\n\t }\n\t })\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-semi\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n \t</MenuItem>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t\t<MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Notifications', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tNotifications\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Profile Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@martyrs/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@martyrs/src/components/Menu/Menu.vue'\nimport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@martyrs/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@martyrs/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n// Import libs\nimport { computed, watch, onMounted, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\nimport * as memberships from '@martyrs/src/modules/organizations/store/memberships.js'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = inject('store')\n\nconst moduleMapping = {\n events: {\n displayName: 'Events',\n route: 'User Events',\n icon: IconEvents\n },\n organizations: {\n displayName: 'Groups',\n route: 'User Organizations',\n icon: IconGroups\n },\n blogposts: {\n displayName: 'Posts',\n route: 'User Posts',\n icon: IconCommunity\n },\n orders: {\n displayName: 'Orders',\n route: 'UserOrdersList',\n icon: IconOrders,\n visible: (auth) => auth.state.user && (\n auth.state.user._id === route.params._id || \n (auth.state.access && auth.state.access.roles && \n (auth.state.access.roles.includes('ROLE_MODERATOR') || \n auth.state.access.roles.includes('ROLE_ADMIN'))\n )\n )\n }\n}\n\nconst filteredModules = computed(() => {\n return store.modules\n .map(moduleName => {\n return {\n name: moduleName,\n ...moduleMapping[moduleName]\n }\n })\n .filter(module => {\n // Проверяем существование маппинга для модуля\n if (!moduleMapping[module.name]) return false;\n \n // Проверяем видимость модуля, если есть условие visible\n if (module.visible && typeof module.visible === 'function') {\n return module.visible(auth);\n }\n \n // По умолчанию показываем модуль, если есть маппинг\n return true;\n })\n})\n\nonMounted(async () => {\n \tawait users.actions.read({ _id: route.params._id, user: auth.state.user._id });\n \tshow.value = true\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["useRoute","useRouter","ref","inject","IconEvents","IconGroups","IconCommunity","IconOrders","auth","computed","module","onMounted","users.actions","auth.state","memberships.mutations","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkRA,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,UAAM,OAAOC,IAAAA,IAAI,KAAK;AAEtB,UAAM,QAAQC,IAAAA,OAAO,OAAO;AAE5B,UAAM,gBAAgB;AAAA,MACpB,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAAA;AAAAA,MACV;AAAA,MACE,eAAe;AAAA,QACb,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAAA;AAAAA,MACV;AAAA,MACE,WAAW;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,cAAAA;AAAAA,MACV;AAAA,MACE,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAAA;AAAAA,QACN,SAAS,CAACC,UAASA,MAAK,MAAM,SAC5BA,MAAK,MAAM,KAAK,QAAQ,MAAM,OAAO,OACpCA,MAAK,MAAM,UAAUA,MAAK,MAAM,OAAO,UACrCA,MAAK,MAAM,OAAO,MAAM,SAAS,gBAAgB,KACjDA,MAAK,MAAM,OAAO,MAAM,SAAS,YAAY;AAAA,MAGtD;AAAA,IACA;AAEA,UAAM,kBAAkBC,IAAAA,SAAS,MAAM;AACrC,aAAO,MAAM,QACV,IAAI,gBAAc;AACjB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,GAAG,cAAc,UAAU;AAAA,QACnC;AAAA,MACI,CAAC,EACA,OAAO,CAAAC,YAAU;AAEhB,YAAI,CAAC,cAAcA,QAAO,IAAI,EAAG,QAAO;AAGxC,YAAIA,QAAO,WAAW,OAAOA,QAAO,YAAY,YAAY;AAC1D,iBAAOA,QAAO,QAAQ,IAAI;AAAA,QAC5B;AAGA,eAAO;AAAA,MACT,CAAC;AAAA,IACL,CAAC;AAEDC,QAAAA,UAAU,YAAY;AACpB,YAAMC,cAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,KAAAA,MAAW,KAAK,IAAG,CAAE;AAC7E,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,4BAAsB,uBAAuBC,MAAAA,MAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACxH;AAEA,aAAS,SAAU;AACjBC,WAAAA,QAAa,OAAM;AAEnB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -146,7 +146,7 @@ const _sfc_main = {
|
|
|
146
146
|
unref(route).params._id === state.user._id ? (openBlock(), createBlock(_sfc_main$8, {
|
|
147
147
|
key: 1,
|
|
148
148
|
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$router.push({
|
|
149
|
-
name: "
|
|
149
|
+
name: "Profile Edit Profile",
|
|
150
150
|
params: {
|
|
151
151
|
_id: state.user._id
|
|
152
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Profile.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tv-if=\"show\"\n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current?.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase t-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'User Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '')+ users.state.current.profile.photo\" \n\t\t\t\t\tclass=\"radius-extra bg-white mn-b-small object-fit-cover i-extra\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<PlaceholderUserpic \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t\t/>\n\n\t\t\t\t<h3 \n\t\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t\t>\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main t-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-medium\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small t-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"t-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- 👍 3 212 likes · -->\n\t\t\t\t\t<!-- 💬 342 comments · -->\n\t\t\t\t\t👨👨👧👧 {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t<RouterView />\n\n\t\t\t<Menu v-if=\"filteredModules.length > 0\" class=\"mn-b-regular bg-light\">\n\t <MenuItem \n\t v-for=\"module in filteredModules\" \n\t :key=\"module.name\"\n\t @click=\"router.push({\n\t name: `${module.route}`, \n\t params: {\n\t _id: route.params._id,\n\t user: route.params._id\n\t }\n\t })\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-semi\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n \t</MenuItem>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t\t<MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Notifications', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tNotifications\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Profile Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@martyrs/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@martyrs/src/components/Menu/Menu.vue'\nimport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@martyrs/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@martyrs/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n// Import libs\nimport { computed, watch, onMounted, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\nimport * as memberships from '@martyrs/src/modules/organizations/store/memberships.js'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = inject('store')\n\nconst moduleMapping = {\n events: {\n displayName: 'Events',\n route: 'User Events',\n icon: IconEvents\n },\n organizations: {\n displayName: 'Groups',\n route: 'User Organizations',\n icon: IconGroups\n },\n blogposts: {\n displayName: 'Posts',\n route: 'User Posts',\n icon: IconCommunity\n },\n orders: {\n displayName: 'Orders',\n route: 'UserOrdersList',\n icon: IconOrders,\n visible: (auth) => auth.state.user && (\n auth.state.user._id === route.params._id || \n (auth.state.access && auth.state.access.roles && \n (auth.state.access.roles.includes('ROLE_MODERATOR') || \n auth.state.access.roles.includes('ROLE_ADMIN'))\n )\n )\n }\n}\n\nconst filteredModules = computed(() => {\n return store.modules\n .map(moduleName => {\n return {\n name: moduleName,\n ...moduleMapping[moduleName]\n }\n })\n .filter(module => {\n // Проверяем существование маппинга для модуля\n if (!moduleMapping[module.name]) return false;\n \n // Проверяем видимость модуля, если есть условие visible\n if (module.visible && typeof module.visible === 'function') {\n return module.visible(auth);\n }\n \n // По умолчанию показываем модуль, если есть маппинг\n return true;\n })\n})\n\nonMounted(async () => {\n \tawait users.actions.read({ _id: route.params._id, user: auth.state.user._id });\n \tshow.value = true\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["IconEvents","IconGroups","IconCommunity","IconOrders","auth","users.actions","auth.state","memberships.mutations","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkRA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,OAAO,IAAI,KAAK;AAEtB,UAAM,QAAQ,OAAO,OAAO;AAE5B,UAAM,gBAAgB;AAAA,MACpB,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMA;AAAAA,MACV;AAAA,MACE,eAAe;AAAA,QACb,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC;AAAAA,MACV;AAAA,MACE,WAAW;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC;AAAAA,MACV;AAAA,MACE,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC;AAAAA,QACN,SAAS,CAACC,UAASA,MAAK,MAAM,SAC5BA,MAAK,MAAM,KAAK,QAAQ,MAAM,OAAO,OACpCA,MAAK,MAAM,UAAUA,MAAK,MAAM,OAAO,UACrCA,MAAK,MAAM,OAAO,MAAM,SAAS,gBAAgB,KACjDA,MAAK,MAAM,OAAO,MAAM,SAAS,YAAY;AAAA,MAGtD;AAAA,IACA;AAEA,UAAM,kBAAkB,SAAS,MAAM;AACrC,aAAO,MAAM,QACV,IAAI,gBAAc;AACjB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,GAAG,cAAc,UAAU;AAAA,QACnC;AAAA,MACI,CAAC,EACA,OAAO,YAAU;AAEhB,YAAI,CAAC,cAAc,OAAO,IAAI,EAAG,QAAO;AAGxC,YAAI,OAAO,WAAW,OAAO,OAAO,YAAY,YAAY;AAC1D,iBAAO,OAAO,QAAQ,IAAI;AAAA,QAC5B;AAGA,eAAO;AAAA,MACT,CAAC;AAAA,IACL,CAAC;AAED,cAAU,YAAY;AACpB,YAAMC,QAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,MAAW,KAAK,IAAG,CAAE;AAC7E,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,gBAAsB,uBAAuBC,QAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACxH;AAEA,aAAS,SAAU;AACjBC,gBAAa,OAAM;AAEnB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Profile.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tv-if=\"show\"\n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current?.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase t-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'Profile Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + users.state.current.profile.photo\" \n\t\t\t\t\tclass=\"radius-extra bg-white mn-b-small object-fit-cover i-extra\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<PlaceholderUserpic \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t\t/>\n\n\t\t\t\t<h3 \n\t\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t\t>\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main t-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-medium\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small t-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"t-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- 👍 3 212 likes · -->\n\t\t\t\t\t<!-- 💬 342 comments · -->\n\t\t\t\t\t👨👨👧👧 {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t<RouterView />\n\n\t\t\t<Menu v-if=\"filteredModules.length > 0\" class=\"mn-b-regular bg-light\">\n\t <MenuItem \n\t v-for=\"module in filteredModules\" \n\t :key=\"module.name\"\n\t @click=\"router.push({\n\t name: `${module.route}`, \n\t params: {\n\t _id: route.params._id,\n\t user: route.params._id\n\t }\n\t })\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-semi\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n \t</MenuItem>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t\t<MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Notifications', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tNotifications\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Profile Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@martyrs/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@martyrs/src/components/Menu/Menu.vue'\nimport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@martyrs/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@martyrs/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n// Import libs\nimport { computed, watch, onMounted, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\nimport * as memberships from '@martyrs/src/modules/organizations/store/memberships.js'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = inject('store')\n\nconst moduleMapping = {\n events: {\n displayName: 'Events',\n route: 'User Events',\n icon: IconEvents\n },\n organizations: {\n displayName: 'Groups',\n route: 'User Organizations',\n icon: IconGroups\n },\n blogposts: {\n displayName: 'Posts',\n route: 'User Posts',\n icon: IconCommunity\n },\n orders: {\n displayName: 'Orders',\n route: 'UserOrdersList',\n icon: IconOrders,\n visible: (auth) => auth.state.user && (\n auth.state.user._id === route.params._id || \n (auth.state.access && auth.state.access.roles && \n (auth.state.access.roles.includes('ROLE_MODERATOR') || \n auth.state.access.roles.includes('ROLE_ADMIN'))\n )\n )\n }\n}\n\nconst filteredModules = computed(() => {\n return store.modules\n .map(moduleName => {\n return {\n name: moduleName,\n ...moduleMapping[moduleName]\n }\n })\n .filter(module => {\n // Проверяем существование маппинга для модуля\n if (!moduleMapping[module.name]) return false;\n \n // Проверяем видимость модуля, если есть условие visible\n if (module.visible && typeof module.visible === 'function') {\n return module.visible(auth);\n }\n \n // По умолчанию показываем модуль, если есть маппинг\n return true;\n })\n})\n\nonMounted(async () => {\n \tawait users.actions.read({ _id: route.params._id, user: auth.state.user._id });\n \tshow.value = true\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["IconEvents","IconGroups","IconCommunity","IconOrders","auth","users.actions","auth.state","memberships.mutations","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkRA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,OAAO,IAAI,KAAK;AAEtB,UAAM,QAAQ,OAAO,OAAO;AAE5B,UAAM,gBAAgB;AAAA,MACpB,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMA;AAAAA,MACV;AAAA,MACE,eAAe;AAAA,QACb,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC;AAAAA,MACV;AAAA,MACE,WAAW;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC;AAAAA,MACV;AAAA,MACE,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC;AAAAA,QACN,SAAS,CAACC,UAASA,MAAK,MAAM,SAC5BA,MAAK,MAAM,KAAK,QAAQ,MAAM,OAAO,OACpCA,MAAK,MAAM,UAAUA,MAAK,MAAM,OAAO,UACrCA,MAAK,MAAM,OAAO,MAAM,SAAS,gBAAgB,KACjDA,MAAK,MAAM,OAAO,MAAM,SAAS,YAAY;AAAA,MAGtD;AAAA,IACA;AAEA,UAAM,kBAAkB,SAAS,MAAM;AACrC,aAAO,MAAM,QACV,IAAI,gBAAc;AACjB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,GAAG,cAAc,UAAU;AAAA,QACnC;AAAA,MACI,CAAC,EACA,OAAO,YAAU;AAEhB,YAAI,CAAC,cAAc,OAAO,IAAI,EAAG,QAAO;AAGxC,YAAI,OAAO,WAAW,OAAO,OAAO,YAAY,YAAY;AAC1D,iBAAO,OAAO,QAAQ,IAAI;AAAA,QAC5B;AAGA,eAAO;AAAA,MACT,CAAC;AAAA,IACL,CAAC;AAED,cAAU,YAAY;AACpB,YAAMC,QAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,MAAW,KAAK,IAAG,CAAE;AAC7E,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,gBAAsB,uBAAuBC,QAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACxH;AAEA,aAAS,SAAU;AACjBC,gBAAa,OAAM;AAEnB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
const IconAdd = require("../../../icons/navigation/IconAdd.vue.cjs");
|
|
5
4
|
const PlaceholderChat = require("../../../icons/placeholders/PlaceholderChat.vue.cjs");
|
|
6
5
|
const ChatMessage = require("../blocks/ChatMessage.vue.cjs");
|
|
7
6
|
const chat_store = require("../../store/chat.store.cjs");
|
|
@@ -93,7 +92,6 @@ const _sfc_main = {
|
|
|
93
92
|
])
|
|
94
93
|
], 512),
|
|
95
94
|
vue.createElementVNode("div", _hoisted_4, [
|
|
96
|
-
vue.createVNode(IconAdd.default, { class: "mn-r-thin t-transp i-regular" }),
|
|
97
95
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
98
96
|
class: "",
|
|
99
97
|
placeholder: "Enter your message",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatWindow.vue.cjs","sources":["../../../../../../../src/modules/chats/components/sections/ChatWindow.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-semi bg-white o-hidden pos-relative\">\n <div ref=\"allMessages\" class=\"chat-messages o-scroll h-max-20r\">\n <div class=\"pos-relative h-min-20r flex-justify-end flex flex-column br-b br-solid br-black-transp-10\">\n <transition name=\"scaleIn\" mode=\"out-in\">\n <div v-if=\"messages.length < 1\" class=\"flex-center pd-small t-center w-100 h-100 flex-column flex pos-absolute\">\n <PlaceholderChat class=\"radius-100 mn-b-thin\"/>\n <h4 class='mn-b-thin'>Here you can view your chat history</h4>\n <p>Feel free to ask if you have any questions.</p>\n </div>\n\n <TransitionGroup v-else name=\"list\" tag=\"ul\" class=\"w-100 o-hidden\" @after-enter=\"scrollToBottom\">\n <ChatMessage\n v-for=\"message in messages\"\n :key=\"message._id\"\n :message=\"message\"\n />\n </TransitionGroup>\n </transition>\n </div>\n </div>\n\n <div class=\"flex-nowrap flex-v-center flex bg-white w-100 radius-big pd-small\">\n <IconAdd class=\"mn-r-thin t-transp i-regular\"
|
|
1
|
+
{"version":3,"file":"ChatWindow.vue.cjs","sources":["../../../../../../../src/modules/chats/components/sections/ChatWindow.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-semi bg-white o-hidden pos-relative\">\n <div ref=\"allMessages\" class=\"chat-messages o-scroll h-max-20r\">\n <div class=\"pos-relative h-min-20r flex-justify-end flex flex-column br-b br-solid br-black-transp-10\">\n <transition name=\"scaleIn\" mode=\"out-in\">\n <div v-if=\"messages.length < 1\" class=\"flex-center pd-small t-center w-100 h-100 flex-column flex pos-absolute\">\n <PlaceholderChat class=\"radius-100 mn-b-thin\"/>\n <h4 class='mn-b-thin'>Here you can view your chat history</h4>\n <p>Feel free to ask if you have any questions.</p>\n </div>\n\n <TransitionGroup v-else name=\"list\" tag=\"ul\" class=\"w-100 o-hidden\" @after-enter=\"scrollToBottom\">\n <ChatMessage\n v-for=\"message in messages\"\n :key=\"message._id\"\n :message=\"message\"\n />\n </TransitionGroup>\n </transition>\n </div>\n </div>\n\n <div class=\"flex-nowrap flex-v-center flex bg-white w-100 radius-big pd-small\">\n <!-- <IconAdd class=\"mn-r-thin t-transp i-regular\" /> -->\n <input class=\"\" placeholder=\"Enter your message\" type=\"text\" v-model=\"newMessage\" @keyup.enter=\"sendMessage\" />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted, nextTick } from 'vue';\n\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport PlaceholderChat from '@martyrs/src/modules/icons/placeholders/PlaceholderChat.vue'\n\nimport ChatMessage from '../blocks/ChatMessage.vue';\nimport chatStore from '../../store/chat.store.js';\n\nconst newMessage = ref('');\nconst allMessages = ref(null);\n\n// Вычисляемые свойства\nconst messages = computed(() => chatStore.state.messages);\n\n// Функция прокрутки вниз\nconst scrollToBottom = () => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n};\n\n// Функция для отправки сообщения\nconst sendMessage = async () => {\n if (newMessage.value) {\n const message = {\n text: newMessage.value,\n module: 'chat',\n username: chatStore.state.username,\n chatId: chatStore.state.currentChatId\n };\n\n chatStore.methods.addMessage(message);\n newMessage.value = '';\n\n // Ждем, пока все анимации и рендеринг завершатся\n await nextTick();\n await new Promise(resolve => setTimeout(resolve, 100)); // Небольшая задержка для анимаций\n scrollToBottom();\n }\n};\n\n// Прокрутка вниз при монтировании\nonMounted(() => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n });\n});\n\n// Прокрутка вниз при изменении сообщений\nwatch(messages, () => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n });\n}, { deep: true });\n\n// Обработчик после завершения анимации входа нового элемента\n</script>\n\n<style>\n.list-enter-active,\n.list-leave-active {\n transition: all 0.5s ease;\n}\n.list-enter-from,\n.list-leave-to {\n opacity: 0;\n transform: translateX(30px);\n}\n</style>"],"names":["ref","computed","chatStore","nextTick","onMounted","watch"],"mappings":";;;;;;;;;;;;;;;;;AAsCA,UAAM,aAAaA,IAAAA,IAAI,EAAE;AACzB,UAAM,cAAcA,IAAAA,IAAI,IAAI;AAG5B,UAAM,WAAWC,IAAAA,SAAS,MAAMC,mBAAU,MAAM,QAAQ;AAGxD,UAAM,iBAAiB,MAAM;AAC3B,UAAI,YAAY,OAAO;AACrB,oBAAY,MAAM,YAAY,YAAY,MAAM;AAAA,MAClD;AAAA,IACF;AAGA,UAAM,cAAc,YAAY;AAC9B,UAAI,WAAW,OAAO;AACpB,cAAM,UAAU;AAAA,UACd,MAAM,WAAW;AAAA,UACjB,QAAQ;AAAA,UACR,UAAUA,WAAAA,QAAU,MAAM;AAAA,UAC1B,QAAQA,WAAAA,QAAU,MAAM;AAAA,QAC9B;AAEIA,2BAAU,QAAQ,WAAW,OAAO;AACpC,mBAAW,QAAQ;AAGnB,cAAMC,aAAQ;AACd,cAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,GAAG,CAAC;AACrD,uBAAc;AAAA,MAChB;AAAA,IACF;AAGAC,QAAAA,UAAU,MAAM;AACdD,UAAAA,SAAS,MAAM;AACb,YAAI,YAAY,OAAO;AACrB,sBAAY,MAAM,YAAY,YAAY,MAAM;AAAA,QAClD;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAGDE,QAAAA,MAAM,UAAU,MAAM;AACpBF,UAAAA,SAAS,MAAM;AACb,YAAI,YAAY,OAAO;AACrB,sBAAY,MAAM,YAAY,YAAY,MAAM;AAAA,QAClD;AAAA,MACF,CAAC;AAAA,IACH,GAAG,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ref, computed, onMounted, nextTick, watch, createElementBlock, openBlock, createElementVNode, createVNode, Transition, withCtx, createBlock, TransitionGroup, Fragment, renderList, withDirectives, withKeys, vModelText } from "vue";
|
|
2
|
-
import _sfc_main$1 from "../../../icons/navigation/IconAdd.vue.js";
|
|
3
2
|
import PlaceholderChat from "../../../icons/placeholders/PlaceholderChat.vue.js";
|
|
4
3
|
import ChatMessage from "../blocks/ChatMessage.vue.js";
|
|
5
4
|
import chatStore from "../../store/chat.store.js";
|
|
@@ -91,7 +90,6 @@ const _sfc_main = {
|
|
|
91
90
|
])
|
|
92
91
|
], 512),
|
|
93
92
|
createElementVNode("div", _hoisted_4, [
|
|
94
|
-
createVNode(_sfc_main$1, { class: "mn-r-thin t-transp i-regular" }),
|
|
95
93
|
withDirectives(createElementVNode("input", {
|
|
96
94
|
class: "",
|
|
97
95
|
placeholder: "Enter your message",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatWindow.vue.js","sources":["../../../../../../../src/modules/chats/components/sections/ChatWindow.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-semi bg-white o-hidden pos-relative\">\n <div ref=\"allMessages\" class=\"chat-messages o-scroll h-max-20r\">\n <div class=\"pos-relative h-min-20r flex-justify-end flex flex-column br-b br-solid br-black-transp-10\">\n <transition name=\"scaleIn\" mode=\"out-in\">\n <div v-if=\"messages.length < 1\" class=\"flex-center pd-small t-center w-100 h-100 flex-column flex pos-absolute\">\n <PlaceholderChat class=\"radius-100 mn-b-thin\"/>\n <h4 class='mn-b-thin'>Here you can view your chat history</h4>\n <p>Feel free to ask if you have any questions.</p>\n </div>\n\n <TransitionGroup v-else name=\"list\" tag=\"ul\" class=\"w-100 o-hidden\" @after-enter=\"scrollToBottom\">\n <ChatMessage\n v-for=\"message in messages\"\n :key=\"message._id\"\n :message=\"message\"\n />\n </TransitionGroup>\n </transition>\n </div>\n </div>\n\n <div class=\"flex-nowrap flex-v-center flex bg-white w-100 radius-big pd-small\">\n <IconAdd class=\"mn-r-thin t-transp i-regular\"
|
|
1
|
+
{"version":3,"file":"ChatWindow.vue.js","sources":["../../../../../../../src/modules/chats/components/sections/ChatWindow.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-semi bg-white o-hidden pos-relative\">\n <div ref=\"allMessages\" class=\"chat-messages o-scroll h-max-20r\">\n <div class=\"pos-relative h-min-20r flex-justify-end flex flex-column br-b br-solid br-black-transp-10\">\n <transition name=\"scaleIn\" mode=\"out-in\">\n <div v-if=\"messages.length < 1\" class=\"flex-center pd-small t-center w-100 h-100 flex-column flex pos-absolute\">\n <PlaceholderChat class=\"radius-100 mn-b-thin\"/>\n <h4 class='mn-b-thin'>Here you can view your chat history</h4>\n <p>Feel free to ask if you have any questions.</p>\n </div>\n\n <TransitionGroup v-else name=\"list\" tag=\"ul\" class=\"w-100 o-hidden\" @after-enter=\"scrollToBottom\">\n <ChatMessage\n v-for=\"message in messages\"\n :key=\"message._id\"\n :message=\"message\"\n />\n </TransitionGroup>\n </transition>\n </div>\n </div>\n\n <div class=\"flex-nowrap flex-v-center flex bg-white w-100 radius-big pd-small\">\n <!-- <IconAdd class=\"mn-r-thin t-transp i-regular\" /> -->\n <input class=\"\" placeholder=\"Enter your message\" type=\"text\" v-model=\"newMessage\" @keyup.enter=\"sendMessage\" />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted, nextTick } from 'vue';\n\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport PlaceholderChat from '@martyrs/src/modules/icons/placeholders/PlaceholderChat.vue'\n\nimport ChatMessage from '../blocks/ChatMessage.vue';\nimport chatStore from '../../store/chat.store.js';\n\nconst newMessage = ref('');\nconst allMessages = ref(null);\n\n// Вычисляемые свойства\nconst messages = computed(() => chatStore.state.messages);\n\n// Функция прокрутки вниз\nconst scrollToBottom = () => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n};\n\n// Функция для отправки сообщения\nconst sendMessage = async () => {\n if (newMessage.value) {\n const message = {\n text: newMessage.value,\n module: 'chat',\n username: chatStore.state.username,\n chatId: chatStore.state.currentChatId\n };\n\n chatStore.methods.addMessage(message);\n newMessage.value = '';\n\n // Ждем, пока все анимации и рендеринг завершатся\n await nextTick();\n await new Promise(resolve => setTimeout(resolve, 100)); // Небольшая задержка для анимаций\n scrollToBottom();\n }\n};\n\n// Прокрутка вниз при монтировании\nonMounted(() => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n });\n});\n\n// Прокрутка вниз при изменении сообщений\nwatch(messages, () => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n });\n}, { deep: true });\n\n// Обработчик после завершения анимации входа нового элемента\n</script>\n\n<style>\n.list-enter-active,\n.list-leave-active {\n transition: all 0.5s ease;\n}\n.list-enter-from,\n.list-leave-to {\n opacity: 0;\n transform: translateX(30px);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsCA,UAAM,aAAa,IAAI,EAAE;AACzB,UAAM,cAAc,IAAI,IAAI;AAG5B,UAAM,WAAW,SAAS,MAAM,UAAU,MAAM,QAAQ;AAGxD,UAAM,iBAAiB,MAAM;AAC3B,UAAI,YAAY,OAAO;AACrB,oBAAY,MAAM,YAAY,YAAY,MAAM;AAAA,MAClD;AAAA,IACF;AAGA,UAAM,cAAc,YAAY;AAC9B,UAAI,WAAW,OAAO;AACpB,cAAM,UAAU;AAAA,UACd,MAAM,WAAW;AAAA,UACjB,QAAQ;AAAA,UACR,UAAU,UAAU,MAAM;AAAA,UAC1B,QAAQ,UAAU,MAAM;AAAA,QAC9B;AAEI,kBAAU,QAAQ,WAAW,OAAO;AACpC,mBAAW,QAAQ;AAGnB,cAAM,SAAQ;AACd,cAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,GAAG,CAAC;AACrD,uBAAc;AAAA,MAChB;AAAA,IACF;AAGA,cAAU,MAAM;AACd,eAAS,MAAM;AACb,YAAI,YAAY,OAAO;AACrB,sBAAY,MAAM,YAAY,YAAY,MAAM;AAAA,QAClD;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAGD,UAAM,UAAU,MAAM;AACpB,eAAS,MAAM;AACb,YAAI,YAAY,OAAO;AACrB,sBAAY,MAAM,YAAY,YAAY,MAAM;AAAA,QAClD;AAAA,MACF,CAAC;AAAA,IACH,GAAG,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -20,7 +20,7 @@ const _sfc_main = {
|
|
|
20
20
|
let tab = route.query.tab ? route.query.tab : "owner";
|
|
21
21
|
const tabEventOwner = vue.ref(tab);
|
|
22
22
|
route.query.tab = tabEventOwner.value;
|
|
23
|
-
|
|
23
|
+
vue.ref({
|
|
24
24
|
active: false,
|
|
25
25
|
class: "",
|
|
26
26
|
selected: {},
|
|
@@ -63,7 +63,7 @@ const _sfc_main = {
|
|
|
63
63
|
return (_ctx, _cache) => {
|
|
64
64
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
65
65
|
vue.createElementVNode("header", _hoisted_2, [
|
|
66
|
-
_cache[
|
|
66
|
+
_cache[3] || (_cache[3] = vue.createElementVNode("h2", { class: "mn-r-medium" }, " Events ", -1)),
|
|
67
67
|
auth.state.user._id === vue.unref(route).params.user || vue.unref(route).params._id ? (vue.openBlock(), vue.createElementBlock("button", {
|
|
68
68
|
key: 0,
|
|
69
69
|
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(router).push({ name: "Create Event" })),
|
|
@@ -86,8 +86,6 @@ const _sfc_main = {
|
|
|
86
86
|
search: true,
|
|
87
87
|
sort: vue.unref(sort),
|
|
88
88
|
"onUpdate:sort": _cache[2] || (_cache[2] = ($event) => vue.isRef(sort) ? sort.value = $event : sort = $event),
|
|
89
|
-
filter: vue.unref(filter),
|
|
90
|
-
"onUpdate:filter": _cache[3] || (_cache[3] = ($event) => vue.isRef(filter) ? filter.value = $event : filter = $event),
|
|
91
89
|
states: {
|
|
92
90
|
empty: {
|
|
93
91
|
title: "No Events Found",
|
|
@@ -135,7 +133,7 @@ const _sfc_main = {
|
|
|
135
133
|
}), 128))
|
|
136
134
|
]),
|
|
137
135
|
_: 1
|
|
138
|
-
}, 8, ["sort", "
|
|
136
|
+
}, 8, ["sort", "store", "options"])
|
|
139
137
|
])
|
|
140
138
|
]);
|
|
141
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsBackoffice.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/EventsBackoffice.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"\"\n\t>\n\t\t<header \n\t\t\tclass=\"mn-b-medium pd-thin flex-v-center flex-nowrap flex\"\n\t\t>\n \t<h2\n \t\tclass=\"mn-r-medium\"\n \t>\n \t\tEvents\n \t</h2>\n \t\n \t<button \n \t\tv-if=\"auth.state.user._id === route.params.user || route.params._id\"\n \t\t@click=\"router.push({name: 'Create Event'})\" \n \t\tclass=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\"\n \t>\n \t\t+\n \t</button>\n\t\t</header>\n\n\t\t<section class=\"pd-thin rows-1 bg-white\">\n\n\t\t\t<Tab \n\t\t\t\tv-if=\"auth.state.user._id === route.params.user\"\n\t\t\t\tv-model:selected=\"tabEventOwner\"\n\t\t\t\t:tabs=\"[\n\t\t\t\t\t{ name: 'Organizer', \tvalue: 'owner' },\n\t\t\t\t\t{ name: 'Participant', \tvalue: 'participant' },\t\n\t\t\t\t]\"\n\t\t\t\tclass=\"\n\t\t\t\t\tmn-b-thin\n\t\t\t\t\tflex-child-default\n\t\t\t\t\th-max\n\t\t\t\t\to-hidden \n\t\t\t\t\th5 \n\t\t\t\t\tbg-white\n\t\t\t\t\tgap-micro pd-t-thin pd-b-thin\n\t\t\t\t\tbr-b br-solid br-black-transp-10\n\t\t\t\t\"\n\t\t\t\tclassTab=\"bg-light pd-small radius-small w-100\"\n\t\t\t/>\n\n\t\t\t<Feed\n\t\t\t\t:search=\"true\"\n\t\t\t\tv-model:sort=\"sort\"\n\t
|
|
1
|
+
{"version":3,"file":"EventsBackoffice.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/EventsBackoffice.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"\"\n\t>\n\t\t<header \n\t\t\tclass=\"mn-b-medium pd-thin flex-v-center flex-nowrap flex\"\n\t\t>\n \t<h2\n \t\tclass=\"mn-r-medium\"\n \t>\n \t\tEvents\n \t</h2>\n \t\n \t<button \n \t\tv-if=\"auth.state.user._id === route.params.user || route.params._id\"\n \t\t@click=\"router.push({name: 'Create Event'})\" \n \t\tclass=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\"\n \t>\n \t\t+\n \t</button>\n\t\t</header>\n\n\t\t<section class=\"pd-thin rows-1 bg-white\">\n\n\t\t\t<Tab \n\t\t\t\tv-if=\"auth.state.user._id === route.params.user\"\n\t\t\t\tv-model:selected=\"tabEventOwner\"\n\t\t\t\t:tabs=\"[\n\t\t\t\t\t{ name: 'Organizer', \tvalue: 'owner' },\n\t\t\t\t\t{ name: 'Participant', \tvalue: 'participant' },\t\n\t\t\t\t]\"\n\t\t\t\tclass=\"\n\t\t\t\t\tmn-b-thin\n\t\t\t\t\tflex-child-default\n\t\t\t\t\th-max\n\t\t\t\t\to-hidden \n\t\t\t\t\th5 \n\t\t\t\t\tbg-white\n\t\t\t\t\tgap-micro pd-t-thin pd-b-thin\n\t\t\t\t\tbr-b br-solid br-black-transp-10\n\t\t\t\t\"\n\t\t\t\tclassTab=\"bg-light pd-small radius-small w-100\"\n\t\t\t/>\n\n\t\t\t<Feed\n\t\t\t\t:search=\"true\"\n\t\t\t\tv-model:sort=\"sort\"\n\t :states=\"{\n\t empty: {\n\t title: 'No Events Found',\n\t description: 'Currently, there are no events available.'\n\t }\n\t }\"\n\t :store=\"{\n\t read: (options) => events.read(options),\n\t }\"\n\t :options=\"{\n\t user: auth.state.user._id,\n\t owner: route.params._id,\n\t creator: route.params.user,\n\t sortParam: 'date.start',\n\t sortOrder: 'desc'\n\t }\"\n\t v-slot=\"{ \n\t items \n\t }\"\n\t class=\"cols-1 gap-thin\"\n\t >\n\t \t<!-- <Table \n\t\t\t\t\t\tclass=\"radius-semi bg-white\"\n\t\t\t\t\t\t:items=\"items\"\n\t\t\t\t\t\t:columns=\"[{ \n\t\t\t\t\t key: '_id', \n\t\t\t\t\t label: 'ID',\n\t\t\t\t\t\t\tformatter: (value) => `#${value.slice(0, 4)}...${value.slice(-4)}` \n\t\t\t\t\t },\n\t\t\t\t\t { \n\t\t\t\t\t key: 'name', \n\t\t\t\t\t label: 'Name',\n\t\t\t\t\t formatter: (value) => `${value}`\n\t\t\t\t\t },\n\t\t\t\t\t { \n\t\t\t\t\t key: 'tickets', \n\t\t\t\t\t label: 'Tickets',\n\t\t\t\t\t formatter: (value) => value?.length || 0\n\t\t\t\t\t },\n\t\t\t\t\t {\n\t\t\t\t\t key: 'status',\n\t\t\t\t\t label: 'Status',\n\t\t\t\t\t component: StatusBadge\n\t\t\t\t\t },\n\t\t\t\t\t {\n\t\t\t\t\t key: 'date.start',\n\t\t\t\t\t label: 'Date',\n\t\t\t\t\t formatter: (value) => new Date(value).toLocaleDateString()\n\t\t\t\t\t }]\" \n\t\t\t\t\t/> -->\n\t <CardEvent \n\t @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n\t v-for=\"(event,index) in items\" \n\t :key=\"event._id\" \n\t :event=\"event\" \n\t :user=\"auth.state.user._id\" \n\t :type=\"'normal'\"\n\t class=\"bg-light radius-big\"\n\t >\n\n\t\t\t <div \n\t\t\t v-if=\"route.params._id || route.params.user && hasAccess(route.params._id, 'events', 'read', auth.state.accesses, auth.state.access.roles)\"\n\t\t\t class=\"mn-b-semi w-100 bg-second button t-white uppercase\"\n\t\t\t @click.stop=\"router.push({\n\t\t\t name: 'Edit Event Tickets',\n\t\t\t params: {\n\t\t\t url: event.url\n\t\t\t }\n\t\t\t })\"\n\t\t\t >\n\t\t\t Manage Tickets\n\t\t\t </div>\n\t </CardEvent>\n\t </Feed>\n\t </section>\n\n <!-- <Feed \n\t\t\tv-if=\"tabEventOwner ==='owner'\"\n\t \t:user=\"auth.state.user._id\"\n\t\t\t:creator=\"route.params.user\"\n\t\t\t:owner=\"route.params._id\"\n\t\t\t:sortOrder=\"'asc'\"\n\t\t/> -->\n\n\n\t\t<!-- <Feed \n\t\t\tv-if=\"tabEventOwner ==='participant'\"\n \t\t:user=\"auth.state.user._id\"\n \t\t:participant=\"route.params.user\"\n \t\t:owner=\"route.params._id\"\n\t\t\t:sortOrder=\"'desc'\"\n\t\t/> -->\n\t</div>\n</template>\n\n<script setup>\n\timport { watch, ref } from 'vue'\n\timport { useRoute, useRouter } from 'vue-router'\n\t// Components\n\timport Tab \t\tfrom '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport Table from '@martyrs/src/components/Table/Table.vue'\n\n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\timport * as events from '@martyrs/src/modules/events/store/events.js'; \n\t// Accessing router\n\tconst route = useRoute()\n\tconst router = useRouter()\n\t// State\n\tlet tab = route.query.tab ? route.query.tab : 'owner';\n\n\tconst tabEventOwner = ref(tab)\n\n\troute.query.tab = tabEventOwner.value\n\n\tlet filter = ref({\n active: false,\n class: '',\n selected: {},\n options: [{\n title: 'Delivery',\n value: 'delivery',\n options: [\n { label: 'Pickup', value: 'pickup' },\n { label: 'Courier', value: 'courier' },\n { label: 'Post', value: 'post' }\n ]\n },{\n title: 'Prices', \n value: 'prices',\n options: [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n }],\n })\n\n let sort = ref({\n param: 'distance',\n order: 'asc',\n options: [{\n label: 'Distance',\n value: 'distance'\n },{\n label: 'Popularity',\n value: 'views'\n },{\n label: 'Products',\n value: 'numberOfProducts'\n }]\n })\n\n\twatch(tabEventOwner, (newValue) => {\n\t router.replace({ query: { ...route.query, tab: newValue } });\n\t});\n</script>"],"names":["useRoute","useRouter","ref","watch"],"mappings":";;;;;;;;;;;;;;;;;AA4JC,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,QAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM;AAE9C,UAAM,gBAAgBC,IAAAA,IAAI,GAAG;AAE7B,UAAM,MAAM,MAAM,cAAc;AAEnBA,YAAI;AAAA,MACd,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU,CAAA;AAAA,MACV,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,UACP,EAAE,OAAO,UAAU,OAAO,SAAQ;AAAA,UAClC,EAAE,OAAO,WAAW,OAAO,UAAS;AAAA,UACpC,EAAE,OAAO,QAAQ,OAAO,OAAM;AAAA,QACtC;AAAA,MACA,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,UACP,EAAE,OAAO,cAAqB,OAAO,OAAM;AAAA,UAC3C,EAAE,OAAO,gBAAqB,OAAO,UAAS;AAAA,UAC9C,EAAE,OAAO,iBAAqB,OAAO,WAAU;AAAA,UAC/C,EAAE,OAAO,mBAAqB,OAAO,QAAO;AAAA,QACpD;AAAA,MACA,CAAK;AAAA,IACL,CAAG;AAED,QAAI,OAAOA,IAAAA,IAAI;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,CAAK;AAAA,IACL,CAAG;AAEFC,cAAM,eAAe,CAAC,aAAa;AACjC,aAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,KAAK,SAAQ,GAAI;AAAA,IAC7D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -18,7 +18,7 @@ const _sfc_main = {
|
|
|
18
18
|
let tab = route.query.tab ? route.query.tab : "owner";
|
|
19
19
|
const tabEventOwner = ref(tab);
|
|
20
20
|
route.query.tab = tabEventOwner.value;
|
|
21
|
-
|
|
21
|
+
ref({
|
|
22
22
|
active: false,
|
|
23
23
|
class: "",
|
|
24
24
|
selected: {},
|
|
@@ -61,7 +61,7 @@ const _sfc_main = {
|
|
|
61
61
|
return (_ctx, _cache) => {
|
|
62
62
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
63
63
|
createElementVNode("header", _hoisted_2, [
|
|
64
|
-
_cache[
|
|
64
|
+
_cache[3] || (_cache[3] = createElementVNode("h2", { class: "mn-r-medium" }, " Events ", -1)),
|
|
65
65
|
state.user._id === unref(route).params.user || unref(route).params._id ? (openBlock(), createElementBlock("button", {
|
|
66
66
|
key: 0,
|
|
67
67
|
onClick: _cache[0] || (_cache[0] = ($event) => unref(router).push({ name: "Create Event" })),
|
|
@@ -84,8 +84,6 @@ const _sfc_main = {
|
|
|
84
84
|
search: true,
|
|
85
85
|
sort: unref(sort),
|
|
86
86
|
"onUpdate:sort": _cache[2] || (_cache[2] = ($event) => isRef(sort) ? sort.value = $event : sort = $event),
|
|
87
|
-
filter: unref(filter),
|
|
88
|
-
"onUpdate:filter": _cache[3] || (_cache[3] = ($event) => isRef(filter) ? filter.value = $event : filter = $event),
|
|
89
87
|
states: {
|
|
90
88
|
empty: {
|
|
91
89
|
title: "No Events Found",
|
|
@@ -133,7 +131,7 @@ const _sfc_main = {
|
|
|
133
131
|
}), 128))
|
|
134
132
|
]),
|
|
135
133
|
_: 1
|
|
136
|
-
}, 8, ["sort", "
|
|
134
|
+
}, 8, ["sort", "store", "options"])
|
|
137
135
|
])
|
|
138
136
|
]);
|
|
139
137
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventsBackoffice.vue.js","sources":["../../../../../../../src/modules/events/components/pages/EventsBackoffice.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"\"\n\t>\n\t\t<header \n\t\t\tclass=\"mn-b-medium pd-thin flex-v-center flex-nowrap flex\"\n\t\t>\n \t<h2\n \t\tclass=\"mn-r-medium\"\n \t>\n \t\tEvents\n \t</h2>\n \t\n \t<button \n \t\tv-if=\"auth.state.user._id === route.params.user || route.params._id\"\n \t\t@click=\"router.push({name: 'Create Event'})\" \n \t\tclass=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\"\n \t>\n \t\t+\n \t</button>\n\t\t</header>\n\n\t\t<section class=\"pd-thin rows-1 bg-white\">\n\n\t\t\t<Tab \n\t\t\t\tv-if=\"auth.state.user._id === route.params.user\"\n\t\t\t\tv-model:selected=\"tabEventOwner\"\n\t\t\t\t:tabs=\"[\n\t\t\t\t\t{ name: 'Organizer', \tvalue: 'owner' },\n\t\t\t\t\t{ name: 'Participant', \tvalue: 'participant' },\t\n\t\t\t\t]\"\n\t\t\t\tclass=\"\n\t\t\t\t\tmn-b-thin\n\t\t\t\t\tflex-child-default\n\t\t\t\t\th-max\n\t\t\t\t\to-hidden \n\t\t\t\t\th5 \n\t\t\t\t\tbg-white\n\t\t\t\t\tgap-micro pd-t-thin pd-b-thin\n\t\t\t\t\tbr-b br-solid br-black-transp-10\n\t\t\t\t\"\n\t\t\t\tclassTab=\"bg-light pd-small radius-small w-100\"\n\t\t\t/>\n\n\t\t\t<Feed\n\t\t\t\t:search=\"true\"\n\t\t\t\tv-model:sort=\"sort\"\n\t
|
|
1
|
+
{"version":3,"file":"EventsBackoffice.vue.js","sources":["../../../../../../../src/modules/events/components/pages/EventsBackoffice.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"\"\n\t>\n\t\t<header \n\t\t\tclass=\"mn-b-medium pd-thin flex-v-center flex-nowrap flex\"\n\t\t>\n \t<h2\n \t\tclass=\"mn-r-medium\"\n \t>\n \t\tEvents\n \t</h2>\n \t\n \t<button \n \t\tv-if=\"auth.state.user._id === route.params.user || route.params._id\"\n \t\t@click=\"router.push({name: 'Create Event'})\" \n \t\tclass=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\"\n \t>\n \t\t+\n \t</button>\n\t\t</header>\n\n\t\t<section class=\"pd-thin rows-1 bg-white\">\n\n\t\t\t<Tab \n\t\t\t\tv-if=\"auth.state.user._id === route.params.user\"\n\t\t\t\tv-model:selected=\"tabEventOwner\"\n\t\t\t\t:tabs=\"[\n\t\t\t\t\t{ name: 'Organizer', \tvalue: 'owner' },\n\t\t\t\t\t{ name: 'Participant', \tvalue: 'participant' },\t\n\t\t\t\t]\"\n\t\t\t\tclass=\"\n\t\t\t\t\tmn-b-thin\n\t\t\t\t\tflex-child-default\n\t\t\t\t\th-max\n\t\t\t\t\to-hidden \n\t\t\t\t\th5 \n\t\t\t\t\tbg-white\n\t\t\t\t\tgap-micro pd-t-thin pd-b-thin\n\t\t\t\t\tbr-b br-solid br-black-transp-10\n\t\t\t\t\"\n\t\t\t\tclassTab=\"bg-light pd-small radius-small w-100\"\n\t\t\t/>\n\n\t\t\t<Feed\n\t\t\t\t:search=\"true\"\n\t\t\t\tv-model:sort=\"sort\"\n\t :states=\"{\n\t empty: {\n\t title: 'No Events Found',\n\t description: 'Currently, there are no events available.'\n\t }\n\t }\"\n\t :store=\"{\n\t read: (options) => events.read(options),\n\t }\"\n\t :options=\"{\n\t user: auth.state.user._id,\n\t owner: route.params._id,\n\t creator: route.params.user,\n\t sortParam: 'date.start',\n\t sortOrder: 'desc'\n\t }\"\n\t v-slot=\"{ \n\t items \n\t }\"\n\t class=\"cols-1 gap-thin\"\n\t >\n\t \t<!-- <Table \n\t\t\t\t\t\tclass=\"radius-semi bg-white\"\n\t\t\t\t\t\t:items=\"items\"\n\t\t\t\t\t\t:columns=\"[{ \n\t\t\t\t\t key: '_id', \n\t\t\t\t\t label: 'ID',\n\t\t\t\t\t\t\tformatter: (value) => `#${value.slice(0, 4)}...${value.slice(-4)}` \n\t\t\t\t\t },\n\t\t\t\t\t { \n\t\t\t\t\t key: 'name', \n\t\t\t\t\t label: 'Name',\n\t\t\t\t\t formatter: (value) => `${value}`\n\t\t\t\t\t },\n\t\t\t\t\t { \n\t\t\t\t\t key: 'tickets', \n\t\t\t\t\t label: 'Tickets',\n\t\t\t\t\t formatter: (value) => value?.length || 0\n\t\t\t\t\t },\n\t\t\t\t\t {\n\t\t\t\t\t key: 'status',\n\t\t\t\t\t label: 'Status',\n\t\t\t\t\t component: StatusBadge\n\t\t\t\t\t },\n\t\t\t\t\t {\n\t\t\t\t\t key: 'date.start',\n\t\t\t\t\t label: 'Date',\n\t\t\t\t\t formatter: (value) => new Date(value).toLocaleDateString()\n\t\t\t\t\t }]\" \n\t\t\t\t\t/> -->\n\t <CardEvent \n\t @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n\t v-for=\"(event,index) in items\" \n\t :key=\"event._id\" \n\t :event=\"event\" \n\t :user=\"auth.state.user._id\" \n\t :type=\"'normal'\"\n\t class=\"bg-light radius-big\"\n\t >\n\n\t\t\t <div \n\t\t\t v-if=\"route.params._id || route.params.user && hasAccess(route.params._id, 'events', 'read', auth.state.accesses, auth.state.access.roles)\"\n\t\t\t class=\"mn-b-semi w-100 bg-second button t-white uppercase\"\n\t\t\t @click.stop=\"router.push({\n\t\t\t name: 'Edit Event Tickets',\n\t\t\t params: {\n\t\t\t url: event.url\n\t\t\t }\n\t\t\t })\"\n\t\t\t >\n\t\t\t Manage Tickets\n\t\t\t </div>\n\t </CardEvent>\n\t </Feed>\n\t </section>\n\n <!-- <Feed \n\t\t\tv-if=\"tabEventOwner ==='owner'\"\n\t \t:user=\"auth.state.user._id\"\n\t\t\t:creator=\"route.params.user\"\n\t\t\t:owner=\"route.params._id\"\n\t\t\t:sortOrder=\"'asc'\"\n\t\t/> -->\n\n\n\t\t<!-- <Feed \n\t\t\tv-if=\"tabEventOwner ==='participant'\"\n \t\t:user=\"auth.state.user._id\"\n \t\t:participant=\"route.params.user\"\n \t\t:owner=\"route.params._id\"\n\t\t\t:sortOrder=\"'desc'\"\n\t\t/> -->\n\t</div>\n</template>\n\n<script setup>\n\timport { watch, ref } from 'vue'\n\timport { useRoute, useRouter } from 'vue-router'\n\t// Components\n\timport Tab \t\tfrom '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport Table from '@martyrs/src/components/Table/Table.vue'\n\n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\timport * as events from '@martyrs/src/modules/events/store/events.js'; \n\t// Accessing router\n\tconst route = useRoute()\n\tconst router = useRouter()\n\t// State\n\tlet tab = route.query.tab ? route.query.tab : 'owner';\n\n\tconst tabEventOwner = ref(tab)\n\n\troute.query.tab = tabEventOwner.value\n\n\tlet filter = ref({\n active: false,\n class: '',\n selected: {},\n options: [{\n title: 'Delivery',\n value: 'delivery',\n options: [\n { label: 'Pickup', value: 'pickup' },\n { label: 'Courier', value: 'courier' },\n { label: 'Post', value: 'post' }\n ]\n },{\n title: 'Prices', \n value: 'prices',\n options: [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n }],\n })\n\n let sort = ref({\n param: 'distance',\n order: 'asc',\n options: [{\n label: 'Distance',\n value: 'distance'\n },{\n label: 'Popularity',\n value: 'views'\n },{\n label: 'Products',\n value: 'numberOfProducts'\n }]\n })\n\n\twatch(tabEventOwner, (newValue) => {\n\t router.replace({ query: { ...route.query, tab: newValue } });\n\t});\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;AA4JC,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM;AAE9C,UAAM,gBAAgB,IAAI,GAAG;AAE7B,UAAM,MAAM,MAAM,cAAc;AAEnB,QAAI;AAAA,MACd,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU,CAAA;AAAA,MACV,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,UACP,EAAE,OAAO,UAAU,OAAO,SAAQ;AAAA,UAClC,EAAE,OAAO,WAAW,OAAO,UAAS;AAAA,UACpC,EAAE,OAAO,QAAQ,OAAO,OAAM;AAAA,QACtC;AAAA,MACA,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,UACP,EAAE,OAAO,cAAqB,OAAO,OAAM;AAAA,UAC3C,EAAE,OAAO,gBAAqB,OAAO,UAAS;AAAA,UAC9C,EAAE,OAAO,iBAAqB,OAAO,WAAU;AAAA,UAC/C,EAAE,OAAO,mBAAqB,OAAO,QAAO;AAAA,QACpD;AAAA,MACA,CAAK;AAAA,IACL,CAAG;AAED,QAAI,OAAO,IAAI;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,CAAK;AAAA,IACL,CAAG;AAEF,UAAM,eAAe,CAAC,aAAa;AACjC,aAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,KAAK,SAAQ,GAAI;AAAA,IAC7D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -44,6 +44,12 @@ function initializeGlobals(app, store2, router, config, options = {}) {
|
|
|
44
44
|
app.use(alert_plugin.default);
|
|
45
45
|
app.use(popup_auth_plugin.default);
|
|
46
46
|
app.use(datePicker_plugin.default);
|
|
47
|
+
console.log("Connecting to websockets via globals");
|
|
48
|
+
globals_websocket.default.initialize({
|
|
49
|
+
maxReconnectAttempts: 10,
|
|
50
|
+
reconnectDelay: 2e3
|
|
51
|
+
});
|
|
52
|
+
globals_websocket.default.connect();
|
|
47
53
|
router.beforeEach((to, from, next) => {
|
|
48
54
|
const locale = to.params.locale;
|
|
49
55
|
if (locale) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globals.client.cjs","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Components\n// import Client from \"./components/layouts/Client.vue\"\n\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport layoutApp from './views/components/layouts/App.vue';\nimport layoutClient from './views/components/layouts/Client.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\n\nimport BottomNavigationBar from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nimport Header from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nimport Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nimport NavigationBar from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nimport Sidebar from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nimport Footer from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\n\nimport Walkthrough from '@martyrs/src/modules/globals/views/components/sections/Walkthrough.vue';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n components: {\n // Pages\n BlockSearch,\n layoutClient,\n layoutApp,\n Header,\n Navigation,\n Footer,\n Sidebar,\n BottomNavigationBar,\n NavigationBar,\n Walkthrough\n },\n },\n};\n\nexport {\n BlockSearch,\n Header,\n Footer,\n Navigation,\n NavigationBar,\n Sidebar,\n Walkthrough,\n appRenderer,\n getBrowserLocale,\n layoutApp,\n // Components\n layoutClient,\n // Client,\n mixins,\n scrollBehavior,\n store,\n i18nManager,\n // Store\n storeGlobals,\n websockets,\n};\n\nexport default ModuleGlobals;\n"],"names":["store","en","ru","i18nManager","mixins.globalMixins","alertPlugin","popupAuthPlugin","datePickerPlugin","storeGlobals.state","storeGlobals","BlockSearch","layoutClient","layoutApp","Header","Navigation","Footer","Sidebar","BottomNavigationBar","NavigationBar","Walkthrough"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAS,kBAAkB,KAAKA,QAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd,IAAIC,GAAAA;AAAAA,IACJ,IAAIC,GAAAA;AAAAA,IACJ,IAAI,CAAA;AAAA;AAAA,EACR;AAEEC,2BAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMC,mBAAmB;AAE7B,MAAI,IAAIC,oBAAW;AACnB,MAAI,IAAIC,yBAAe;AACvB,MAAI,IAAIC,yBAAgB;
|
|
1
|
+
{"version":3,"file":"globals.client.cjs","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Components\n// import Client from \"./components/layouts/Client.vue\"\n\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport layoutApp from './views/components/layouts/App.vue';\nimport layoutClient from './views/components/layouts/Client.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\n\nimport BottomNavigationBar from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nimport Header from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nimport Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nimport NavigationBar from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nimport Sidebar from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nimport Footer from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\n\nimport Walkthrough from '@martyrs/src/modules/globals/views/components/sections/Walkthrough.vue';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n\n \n // Connect WebSocket only for authenticated users\n \n // const userId = this.store.auth.state.user?._id;\n console.log('Connecting to websockets via globals');\n websockets.initialize({\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n websockets.connect();\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n components: {\n // Pages\n BlockSearch,\n layoutClient,\n layoutApp,\n Header,\n Navigation,\n Footer,\n Sidebar,\n BottomNavigationBar,\n NavigationBar,\n Walkthrough\n },\n },\n};\n\nexport {\n BlockSearch,\n Header,\n Footer,\n Navigation,\n NavigationBar,\n Sidebar,\n Walkthrough,\n appRenderer,\n getBrowserLocale,\n layoutApp,\n // Components\n layoutClient,\n // Client,\n mixins,\n scrollBehavior,\n store,\n i18nManager,\n // Store\n storeGlobals,\n websockets,\n};\n\nexport default ModuleGlobals;\n"],"names":["store","en","ru","i18nManager","mixins.globalMixins","alertPlugin","popupAuthPlugin","datePickerPlugin","websockets","storeGlobals.state","storeGlobals","BlockSearch","layoutClient","layoutApp","Header","Navigation","Footer","Sidebar","BottomNavigationBar","NavigationBar","Walkthrough"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAS,kBAAkB,KAAKA,QAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd,IAAIC,GAAAA;AAAAA,IACJ,IAAIC,GAAAA;AAAAA,IACJ,IAAI,CAAA;AAAA;AAAA,EACR;AAEEC,2BAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMC,mBAAmB;AAE7B,MAAI,IAAIC,oBAAW;AACnB,MAAI,IAAIC,yBAAe;AACvB,MAAI,IAAIC,yBAAgB;AAQxB,UAAQ,IAAI,sCAAsC;AAClDC,oBAAAA,QAAW,WAAW;AAAA,IACpB,sBAAsB;AAAA,IACtB,gBAAgB;AAAA,EACpB,CAAG;AAEDA,oBAAAA,QAAW,QAAO;AAGlB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,SAAAA,MAAmB,UAAU,OAAO;AAElE,EAAAT,OAAM,SAAS,WAAWU,OAAY;AAEtC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,aAAMC,YAAAA;AAAAA,MACN,cAAMC,OAAAA;AAAAA,MACN,WAAMC,IAAAA;AAAAA,MACN,QAAMC,OAAAA;AAAAA,MACN,YAAMC,WAAAA;AAAAA,MACN,QAAMC,OAAAA;AAAAA,MACN,SAAMC,QAAAA;AAAAA,MACN,qBAAMC,oBAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA,MACN,aAAMC,YAAAA;AAAAA,IACN;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -21,7 +21,7 @@ import datePickerPlugin from "./views/plugins/date-picker.plugin.js";
|
|
|
21
21
|
import "vue";
|
|
22
22
|
import "./views/plugins/store-debugger/StoreDebugger.vue.js";
|
|
23
23
|
import { default as default4 } from "./views/classes/store.js";
|
|
24
|
-
import
|
|
24
|
+
import globalWebSocket from "./views/classes/globals.websocket.js";
|
|
25
25
|
import { i18nManager } from "./views/classes/globals.i18n.js";
|
|
26
26
|
import en from "./locales/en.js";
|
|
27
27
|
import ru from "./locales/ru.js";
|
|
@@ -44,6 +44,12 @@ function initializeGlobals(app, store, router, config, options = {}) {
|
|
|
44
44
|
app.use(alertPlugin);
|
|
45
45
|
app.use(popupAuthPlugin);
|
|
46
46
|
app.use(datePickerPlugin);
|
|
47
|
+
console.log("Connecting to websockets via globals");
|
|
48
|
+
globalWebSocket.initialize({
|
|
49
|
+
maxReconnectAttempts: 10,
|
|
50
|
+
reconnectDelay: 2e3
|
|
51
|
+
});
|
|
52
|
+
globalWebSocket.connect();
|
|
47
53
|
router.beforeEach((to, from, next) => {
|
|
48
54
|
const locale = to.params.locale;
|
|
49
55
|
if (locale) {
|
|
@@ -116,6 +122,6 @@ export {
|
|
|
116
122
|
default3 as scrollBehavior,
|
|
117
123
|
default4 as store,
|
|
118
124
|
globals as storeGlobals,
|
|
119
|
-
|
|
125
|
+
globalWebSocket as websockets
|
|
120
126
|
};
|
|
121
127
|
//# sourceMappingURL=globals.client.js.map
|