@ozdao/martyrs 0.2.581 → 0.2.583

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.
Files changed (86) hide show
  1. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  2. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +6 -12
  3. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  4. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  5. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  6. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +182 -89
  7. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  8. package/dist/martyrs/src/modules/auth/views/configs/navigation.user.config.js +11 -5
  9. package/dist/martyrs/src/modules/auth/views/configs/navigation.user.config.js.map +1 -1
  10. package/dist/martyrs/src/modules/auth/views/router/users.router.js +1 -2
  11. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  12. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
  13. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js +16 -1
  14. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js.map +1 -1
  15. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
  16. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  17. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +7 -0
  18. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  19. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  20. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  21. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  22. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  23. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +3 -3
  24. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  25. package/dist/martyrs/src/modules/notifications/components/layouts/NotificationsLayout.vue.js +11 -40
  26. package/dist/martyrs/src/modules/notifications/components/layouts/NotificationsLayout.vue.js.map +1 -1
  27. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +26 -21
  28. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js.map +1 -1
  29. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +54 -48
  30. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  31. package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js +37 -117
  32. package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js.map +1 -1
  33. package/dist/martyrs/src/modules/notifications/notifications.client.js +18 -15
  34. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  35. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +90 -175
  36. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  37. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +6 -6
  38. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  39. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +41 -28
  40. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  41. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  42. package/dist/martyrs/src/modules/orders/orders.client.js +14 -14
  43. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  44. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  45. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +88 -39
  46. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  47. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  48. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  49. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  50. package/dist/style.css +73 -265
  51. package/package.json +1 -1
  52. package/src/modules/TASKS.MD +26 -1
  53. package/src/modules/auth/views/components/pages/Profile.vue +9 -15
  54. package/src/modules/auth/views/components/pages/ProfileEdit.vue +1 -1
  55. package/src/modules/auth/views/components/pages/UserDashboard.vue +214 -125
  56. package/src/modules/auth/views/configs/navigation.user.config.js +17 -11
  57. package/src/modules/auth/views/router/users.router.js +0 -1
  58. package/src/modules/core/views/classes/ws.manager.js +20 -1
  59. package/src/modules/core/views/utils/vue-app-renderer.js +9 -3
  60. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  61. package/src/modules/notifications/components/layouts/NotificationsLayout.vue +9 -53
  62. package/src/modules/notifications/components/pages/Notifications.vue +21 -22
  63. package/src/modules/notifications/components/sections/NotificationPreferences.vue +41 -180
  64. package/src/modules/notifications/components/sections/NotificationsList.vue +39 -219
  65. package/src/modules/notifications/notifications.client.js +17 -16
  66. package/src/modules/orders/components/blocks/CardOrderUser.vue +88 -190
  67. package/src/modules/orders/components/pages/OrderBackoffice.vue +5 -5
  68. package/src/modules/orders/components/pages/Orders.vue +56 -50
  69. package/src/modules/organizations/components/pages/OrganizationEdit.vue +42 -11
  70. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js +0 -625
  71. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  72. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js +0 -44
  73. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js.map +0 -1
  74. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  75. package/dist/martyrs/src/modules/orders/components/icons/IconStatusCanceled.vue.js +0 -32
  76. package/dist/martyrs/src/modules/orders/components/icons/IconStatusCanceled.vue.js.map +0 -1
  77. package/dist/martyrs/src/modules/orders/components/icons/IconStatusConfirmed.vue.js +0 -32
  78. package/dist/martyrs/src/modules/orders/components/icons/IconStatusConfirmed.vue.js.map +0 -1
  79. package/dist/martyrs/src/modules/orders/components/icons/IconStatusCreated.vue.js +0 -32
  80. package/dist/martyrs/src/modules/orders/components/icons/IconStatusCreated.vue.js.map +0 -1
  81. package/dist/martyrs/src/modules/orders/components/icons/IconStatusDelay.vue.js +0 -32
  82. package/dist/martyrs/src/modules/orders/components/icons/IconStatusDelay.vue.js.map +0 -1
  83. package/dist/martyrs/src/modules/orders/components/icons/IconStatusFinished.vue.js +0 -32
  84. package/dist/martyrs/src/modules/orders/components/icons/IconStatusFinished.vue.js.map +0 -1
  85. package/dist/martyrs/src/modules/orders/components/icons/IconStatusInUse.vue.js +0 -32
  86. package/dist/martyrs/src/modules/orders/components/icons/IconStatusInUse.vue.js.map +0 -1
@@ -1,15 +1,14 @@
1
- import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createVNode, unref, withCtx, createElementVNode, toDisplayString, Fragment, renderList } from "vue";
2
- import { useRoute, useRouter } from "vue-router";
3
- import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
4
- /* empty css */
1
+ import { ref, computed, resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createVNode, unref, withCtx, createElementVNode, toDisplayString, normalizeClass, Fragment, renderList } from "vue";
2
+ import { useRoute } from "vue-router";
3
+ import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
5
4
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
5
+ import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
6
6
  import { state, actions, getters } from "../../store/orders.js";
7
7
  import { state as state$1 } from "../../../auth/views/store/auth.js";
8
- /* empty css */
9
- import CardOrderUser from "../blocks/CardOrderUser.vue.js";
10
- import _sfc_main$4 from "../blocks/CardOrderBackoffice.vue.js";
8
+ import _sfc_main$6 from "../blocks/CardOrderUser.vue.js";
9
+ import _sfc_main$5 from "../blocks/CardOrderBackoffice.vue.js";
11
10
  import _sfc_main$1 from "../../../core/views/components/sections/SectionPageTitle.vue.js";
12
- import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
11
+ import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
13
12
  const _hoisted_1 = { class: "mobile:pd-thin pd-medium" };
14
13
  const _hoisted_2 = { class: "gap-micro flex-nowrap flex" };
15
14
  const _hoisted_3 = { class: "w-100 bg-white radius-small pd-small" };
@@ -19,10 +18,23 @@ const _sfc_main = {
19
18
  __name: "Orders",
20
19
  setup(__props) {
21
20
  const route = useRoute();
22
- useRouter();
23
21
  const { returnCurrency, formatPrice, formatDate } = useGlobalMixins();
24
- ref(false);
25
22
  const tab = ref("all");
23
+ const tabs = [
24
+ { label: "All Orders", value: "all" },
25
+ { label: "In Progress", value: "in_progress" },
26
+ { label: "Returns & Cancellations", value: "returns" }
27
+ ];
28
+ const tabStatusFilter = computed(() => {
29
+ switch (tab.value) {
30
+ case "in_progress":
31
+ return ["created", "confirmed", "processing", "preparing", "shipped"];
32
+ case "returns":
33
+ return ["cancelled", "canceled", "returned"];
34
+ default:
35
+ return null;
36
+ }
37
+ });
26
38
  const totalPrice = computed(() => {
27
39
  return calculateTotalSum(state.all);
28
40
  });
@@ -36,14 +48,12 @@ const _sfc_main = {
36
48
  }
37
49
  function calculateSum(orders, status) {
38
50
  return orders.reduce((totalSum, item) => {
39
- if (item.payment.status === status) {
51
+ if (item.payment?.status === status) {
40
52
  return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);
41
53
  }
42
54
  return totalSum;
43
55
  }, 0);
44
56
  }
45
- onMounted(async () => {
46
- });
47
57
  return (_ctx, _cache) => {
48
58
  const _component_router_link = resolveComponent("router-link");
49
59
  return openBlock(), createElementBlock("div", _hoisted_1, [
@@ -64,22 +74,30 @@ const _sfc_main = {
64
74
  default: withCtx(() => [
65
75
  createElementVNode("div", _hoisted_2, [
66
76
  createElementVNode("div", _hoisted_3, [
67
- _cache[0] || (_cache[0] = createElementVNode("p", { class: "mn-b-thin" }, "Total", -1)),
77
+ _cache[1] || (_cache[1] = createElementVNode("p", { class: "mn-b-thin" }, "Total", -1)),
68
78
  createElementVNode("h3", null, toDisplayString(unref(formatPrice)(totalPrice.value)), 1)
69
79
  ]),
70
80
  createElementVNode("div", _hoisted_4, [
71
- _cache[1] || (_cache[1] = createElementVNode("p", { class: "mn-b-thin" }, "Paid", -1)),
81
+ _cache[2] || (_cache[2] = createElementVNode("p", { class: "mn-b-thin" }, "Paid", -1)),
72
82
  createElementVNode("h3", null, toDisplayString(unref(formatPrice)(totalPriceUnpaid.value)), 1)
73
83
  ]),
74
84
  createElementVNode("div", _hoisted_5, [
75
- _cache[2] || (_cache[2] = createElementVNode("p", { class: "mn-b-thin" }, "Unpaid", -1)),
85
+ _cache[3] || (_cache[3] = createElementVNode("p", { class: "mn-b-thin" }, "Unpaid", -1)),
76
86
  createElementVNode("h3", null, toDisplayString(unref(formatPrice)(totalPrice.value)), 1)
77
87
  ])
78
88
  ])
79
89
  ]),
80
90
  _: 1
81
91
  })) : createCommentVNode("", true),
82
- createVNode(_sfc_main$3, {
92
+ unref(route).meta.context === "user" ? (openBlock(), createBlock(_sfc_main$3, {
93
+ key: 2,
94
+ tabs,
95
+ selected: tab.value,
96
+ "onUpdate:selected": _cache[0] || (_cache[0] = ($event) => tab.value = $event),
97
+ classTab: "bg-light",
98
+ class: "mn-b-small"
99
+ }, null, 8, ["selected"])) : createCommentVNode("", true),
100
+ createVNode(_sfc_main$4, {
83
101
  search: true,
84
102
  states: {
85
103
  empty: {
@@ -94,9 +112,9 @@ const _sfc_main = {
94
112
  limit: 15,
95
113
  ...unref(route).meta.context === "organization" && { owner: unref(route).params._id },
96
114
  ...unref(route).meta.context === "user" && { customer: unref(route).params._id },
97
- ...tab.value !== "all" && { status: tab.value }
115
+ ...tab.value !== "all" && { status: tabStatusFilter.value }
98
116
  },
99
- class: "gap-thin cols-3 mobile:cols-1"
117
+ class: normalizeClass(unref(route).meta.context === "user" ? "gap-small cols-1" : "gap-thin cols-3 mobile:cols-1")
100
118
  }, {
101
119
  default: withCtx(({
102
120
  items
@@ -109,7 +127,7 @@ const _sfc_main = {
109
127
  }
110
128
  }, {
111
129
  default: withCtx(() => [
112
- createVNode(_sfc_main$4, {
130
+ createVNode(_sfc_main$5, {
113
131
  order,
114
132
  user: state$1.user,
115
133
  formatDate: unref(formatDate),
@@ -122,15 +140,10 @@ const _sfc_main = {
122
140
  }), 256)) : createCommentVNode("", true),
123
141
  unref(route).meta.context === "user" ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(items, (order) => {
124
142
  return openBlock(), createBlock(_component_router_link, {
125
- to: {
126
- name: "UserOrder",
127
- params: {
128
- order: order._id
129
- }
130
- }
143
+ to: `/users/${unref(route).params._id}/orders/${order._id}`
131
144
  }, {
132
145
  default: withCtx(() => [
133
- createVNode(CardOrderUser, {
146
+ createVNode(_sfc_main$6, {
134
147
  orderId: order._id,
135
148
  status: order.status,
136
149
  createdAt: order.createdAt,
@@ -144,7 +157,7 @@ const _sfc_main = {
144
157
  }), 256)) : createCommentVNode("", true)
145
158
  ]),
146
159
  _: 1
147
- }, 8, ["store", "options"])
160
+ }, 8, ["store", "options", "class"])
148
161
  ]);
149
162
  };
150
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Orders.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/Orders.vue"],"sourcesContent":["<template>\n <div class=\"mobile:pd-thin pd-medium\"> \n <SectionPageTitle\n v-if=\"!MOBILE_APP\"\n title=\"Orders\"\n :actions=\"[\n route.meta.context === 'backoffice' && { to: { name: 'BackofficeAdminCreateOrder' }, label: 'Create Order' },\n route.meta.context === 'organization' && { to: { name: 'OrganizationAdminCreateOrder', params: { _id: route.params._id}}, label: 'Create Order' }\n ].filter(Boolean)\"\n class=\"mn-b-small\"\n />\n\n <Block\n v-if=\"route.meta.context !== 'user'\"\n title=\"Balance\"\n class=\"mn-b-small\"\n >\n <div class=\"gap-micro flex-nowrap flex\">\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Total</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Paid</p>\n <h3>{{formatPrice(totalPriceUnpaid)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Unpaid</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n </div>\n\n </Block>\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Orders Found',\n description: 'Currently, there are no orders.'\n }\n }\"\n :store=\"{\n read: (options) => orders.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n ...(route.meta.context === 'organization' && { owner: route.params._id }),\n ...(route.meta.context === 'user' && { customer: route.params._id }),\n ...(tab !== 'all' && { status: tab })\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-3 mobile:cols-1\"\n >\n <router-link \n v-if=\"route.meta.context !== 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit', \n params: route.meta.context === 'backoffice' \n ? { order: order._id } \n : { order: order._id, organization: order.owner.target || order.owner._id }\n }\" \n >\n <CardOrderBackoffice \n :order=\"order\"\n :user=\"auth.state.user\"\n :formatDate=\"formatDate\"\n :getTotal=\"orders.getters.getTotal\"\n :currency=\"returnCurrency()\"\n />\n </router-link>\n\n <router-link \n v-if=\"route.meta.context === 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: 'UserOrder', \n params: { \n order: order._id \n }\n }\" \n >\n <CardOrderUser\n :orderId=\"order._id\"\n :status=\"order.status\"\n :createdAt=\"order.createdAt\"\n :updatedAt=\"order.updatedAt\"\n :positions=\"order.positions\"\n :total=\"orders.getters.getTotal(order.positions)\"\n />\n </router-link>\n </Feed>\n </div>\n</template>\n\n<script setup>\n import { computed, onMounted, reactive, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n import CardOrder from '@martyrs/src/modules/orders/components/blocks/CardOrder.vue'\n\n import CardOrderUser from '@martyrs/src/modules/orders/components/blocks/CardOrderUser.vue'\n import CardOrderBackoffice from '@martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue'\n\n import SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\n\n const route = useRoute();\n const router = useRouter();\n const { returnCurrency, formatPrice, formatDate } = useGlobalMixins()\n\n const spoiler = ref(false)\n\n // Tab logic\n const tab = ref('all')\n\n const totalPrice = computed(() => {\n return calculateTotalSum(orders.state.all)\n });\n\n const totalPriceUnpaid = computed(() => {\n return calculateSum(orders.state.all,'unpaid')\n });\n\n \n function calculateTotalSum(orders) {\n return orders.reduce((totalSum, item) => {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }, 0);\n }\n\n function calculateSum(orders, status) {\n return orders.reduce((totalSum, item) => {\n if (item.payment.status === status) {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }\n return totalSum;\n }, 0);\n }\n\n\n onMounted(async () => {\n \n });\n</script>\n"],"names":["orders.state"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwHE,UAAM,QAAQ,SAAQ;AACP,cAAS;AACxB,UAAM,EAAE,gBAAgB,aAAa,WAAU,IAAK,gBAAe;AAEnD,QAAI,KAAK;AAGzB,UAAM,MAAM,IAAI,KAAK;AAErB,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,kBAAkBA,MAAa,GAAG;AAAA,IAC3C,CAAC;AAEA,UAAM,mBAAmB,SAAS,MAAM;AACvC,aAAO,aAAaA,MAAa,KAAI,QAAQ;AAAA,IAC/C,CAAC;AAGD,aAAS,kBAAkB,QAAQ;AACjC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,eAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,MACpF,GAAG,CAAC;AAAA,IACN;AAEA,aAAS,aAAa,QAAQ,QAAQ;AACpC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,YAAI,KAAK,QAAQ,WAAW,QAAQ;AAClC,iBAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,QACpF;AACA,eAAO;AAAA,MACT,GAAG,CAAC;AAAA,IACN;AAGA,cAAU,YAAY;AAAA,IAEtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Orders.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/Orders.vue"],"sourcesContent":["<template>\n <div class=\"mobile:pd-thin pd-medium\">\n <SectionPageTitle\n v-if=\"!MOBILE_APP\"\n title=\"Orders\"\n :actions=\"[\n route.meta.context === 'backoffice' && { to: { name: 'BackofficeAdminCreateOrder' }, label: 'Create Order' },\n route.meta.context === 'organization' && { to: { name: 'OrganizationAdminCreateOrder', params: { _id: route.params._id}}, label: 'Create Order' }\n ].filter(Boolean)\"\n class=\"mn-b-small\"\n />\n\n <Block\n v-if=\"route.meta.context !== 'user'\"\n title=\"Balance\"\n class=\"mn-b-small\"\n >\n <div class=\"gap-micro flex-nowrap flex\">\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Total</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Paid</p>\n <h3>{{formatPrice(totalPriceUnpaid)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Unpaid</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n </div>\n </Block>\n\n <!-- Tabs for user context -->\n <Tab\n v-if=\"route.meta.context === 'user'\"\n :tabs=\"tabs\"\n v-model:selected=\"tab\"\n classTab=\"bg-light\"\n class=\"mn-b-small\"\n />\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Orders Found',\n description: 'Currently, there are no orders.'\n }\n }\"\n :store=\"{\n read: (options) => orders.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n ...(route.meta.context === 'organization' && { owner: route.params._id }),\n ...(route.meta.context === 'user' && { customer: route.params._id }),\n ...(tab !== 'all' && { status: tabStatusFilter })\n }\"\n v-slot=\"{\n items\n }\"\n :class=\"route.meta.context === 'user' ? 'gap-small cols-1' : 'gap-thin cols-3 mobile:cols-1'\"\n >\n <router-link\n v-if=\"route.meta.context !== 'user'\"\n v-for=\"order in items\"\n :to=\"{\n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit',\n params: route.meta.context === 'backoffice'\n ? { order: order._id }\n : { order: order._id, organization: order.owner.target || order.owner._id }\n }\"\n >\n <CardOrderBackoffice\n :order=\"order\"\n :user=\"auth.state.user\"\n :formatDate=\"formatDate\"\n :getTotal=\"orders.getters.getTotal\"\n :currency=\"returnCurrency()\"\n />\n </router-link>\n\n <router-link\n v-if=\"route.meta.context === 'user'\"\n v-for=\"order in items\"\n :to=\"`/users/${route.params._id}/orders/${order._id}`\"\n >\n <CardOrderUser\n :orderId=\"order._id\"\n :status=\"order.status\"\n :createdAt=\"order.createdAt\"\n :updatedAt=\"order.updatedAt\"\n :positions=\"order.positions\"\n :total=\"orders.getters.getTotal(order.positions)\"\n />\n </router-link>\n </Feed>\n </div>\n</template>\n\n<script setup>\n import { computed, ref } from 'vue';\n import { useRoute } from 'vue-router';\n\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n import CardOrderUser from '@martyrs/src/modules/orders/components/blocks/CardOrderUser.vue'\n import CardOrderBackoffice from '@martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue'\n import SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue'\n\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\n\n const route = useRoute();\n const { returnCurrency, formatPrice, formatDate } = useGlobalMixins()\n\n // Tab logic\n const tab = ref('all')\n\n const tabs = [\n { label: 'All Orders', value: 'all' },\n { label: 'In Progress', value: 'in_progress' },\n { label: 'Returns & Cancellations', value: 'returns' }\n ]\n\n const tabStatusFilter = computed(() => {\n switch (tab.value) {\n case 'in_progress':\n return ['created', 'confirmed', 'processing', 'preparing', 'shipped']\n case 'returns':\n return ['cancelled', 'canceled', 'returned']\n default:\n return null\n }\n })\n\n const totalPrice = computed(() => {\n return calculateTotalSum(orders.state.all)\n });\n\n const totalPriceUnpaid = computed(() => {\n return calculateSum(orders.state.all,'unpaid')\n });\n\n function calculateTotalSum(orders) {\n return orders.reduce((totalSum, item) => {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }, 0);\n }\n\n function calculateSum(orders, status) {\n return orders.reduce((totalSum, item) => {\n if (item.payment?.status === status) {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }\n return totalSum;\n }, 0);\n }\n</script>\n"],"names":["orders.state"],"mappings":";;;;;;;;;;;;;;;;;;;AAsHE,UAAM,QAAQ,SAAQ;AACtB,UAAM,EAAE,gBAAgB,aAAa,WAAU,IAAK,gBAAe;AAGnE,UAAM,MAAM,IAAI,KAAK;AAErB,UAAM,OAAO;AAAA,MACX,EAAE,OAAO,cAAc,OAAO,MAAK;AAAA,MACnC,EAAE,OAAO,eAAe,OAAO,cAAa;AAAA,MAC5C,EAAE,OAAO,2BAA2B,OAAO,UAAS;AAAA,IACxD;AAEE,UAAM,kBAAkB,SAAS,MAAM;AACrC,cAAQ,IAAI,OAAK;AAAA,QACf,KAAK;AACH,iBAAO,CAAC,WAAW,aAAa,cAAc,aAAa,SAAS;AAAA,QACtE,KAAK;AACH,iBAAO,CAAC,aAAa,YAAY,UAAU;AAAA,QAC7C;AACE,iBAAO;AAAA,MACf;AAAA,IACE,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,kBAAkBA,MAAa,GAAG;AAAA,IAC3C,CAAC;AAED,UAAM,mBAAmB,SAAS,MAAM;AACtC,aAAO,aAAaA,MAAa,KAAI,QAAQ;AAAA,IAC/C,CAAC;AAED,aAAS,kBAAkB,QAAQ;AACjC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,eAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,MACpF,GAAG,CAAC;AAAA,IACN;AAEA,aAAS,aAAa,QAAQ,QAAQ;AACpC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,YAAI,KAAK,SAAS,WAAW,QAAQ;AACnC,iBAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,QACpF;AACA,eAAO;AAAA,MACT,GAAG,CAAC;AAAA,IACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,7 +10,7 @@ import _sfc_main$2 from "../../../../components/Radio/Radio.vue.js";
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
- /* empty css */
13
+ /* empty css */
14
14
  /* empty css */
15
15
  import CardSpot from "../../../spots/components/blocks/CardSpot.vue.js";
16
16
  import { useStore } from "../../../core/views/store/core.store.js";
@@ -8,14 +8,14 @@ import addRoutes from "../core/views/router/addRoutes.js";
8
8
  import ordersRoutes from "./router/orders.router.js";
9
9
  import customersRoutes from "./router/customers.router.js";
10
10
  import applicationsRoutes from "./router/applications.router.js";
11
- import _sfc_main$a from "./components/pages/OrderCreate.vue.js";
12
- import _sfc_main$9 from "./components/pages/OrderCreateBackoffice.vue.js";
13
- import _sfc_main$d from "./components/pages/Orders.vue.js";
14
- import _sfc_main$c from "./components/pages/Customers.vue.js";
15
- import _sfc_main$b from "./components/pages/Applications.vue.js";
11
+ import _sfc_main$b from "./components/pages/OrderCreate.vue.js";
12
+ import _sfc_main$a from "./components/pages/OrderCreateBackoffice.vue.js";
13
+ import _sfc_main$e from "./components/pages/Orders.vue.js";
14
+ import _sfc_main$d from "./components/pages/Customers.vue.js";
15
+ import _sfc_main$c from "./components/pages/Applications.vue.js";
16
16
  import CardOrder from "./components/blocks/CardOrder.vue.js";
17
- import _sfc_main$8 from "./components/blocks/CardOrderItem.vue.js";
18
- import CardOrderUser from "./components/blocks/CardOrderUser.vue.js";
17
+ import _sfc_main$9 from "./components/blocks/CardOrderItem.vue.js";
18
+ import _sfc_main$8 from "./components/blocks/CardOrderUser.vue.js";
19
19
  import CardCustomer from "./components/blocks/CardCustomer.vue.js";
20
20
  import _sfc_main$7 from "./components/blocks/StatusHistory.vue.js";
21
21
  import _sfc_main$5 from "./components/sections/AskToLogin.vue.js";
@@ -173,17 +173,17 @@ const ModuleOrder = {
173
173
  },
174
174
  components: {
175
175
  // Pages
176
- Orders: _sfc_main$d,
177
- Customers: _sfc_main$c,
178
- Applications: _sfc_main$b,
176
+ Orders: _sfc_main$e,
177
+ Customers: _sfc_main$d,
178
+ Applications: _sfc_main$c,
179
179
  // Order,
180
- OrderCreate: _sfc_main$a,
181
- OrderCreateBackoffice: _sfc_main$9,
180
+ OrderCreate: _sfc_main$b,
181
+ OrderCreateBackoffice: _sfc_main$a,
182
182
  // Favorites,
183
183
  // Blocks
184
- CardOrderItem: _sfc_main$8,
184
+ CardOrderItem: _sfc_main$9,
185
185
  CardOrder,
186
- CardOrderUser,
186
+ CardOrderUser: _sfc_main$8,
187
187
  CardCustomer,
188
188
  StatusHistory: _sfc_main$7,
189
189
  // Sections
@@ -1 +1 @@
1
- {"version":3,"file":"orders.client.js","sources":["../../../../../src/modules/orders/orders.client.js"],"sourcesContent":["// Store\nimport * as storeOrders from './store/orders.js';\nimport * as storeShopcart from './store/shopcart.js';\nimport * as storeTestimonials from './store/testimonials.js';\nimport storeCustomers from './store/customers.store.js';\nimport storeApplications from './store/applications.js';\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport routerOrders from './router/orders.router.js';\nimport routerCustomers from './router/customers.router.js';\nimport routerApplications from './router/applications.router.js';\n// Views\nimport OrderCreate from './components/pages/OrderCreate.vue';\nimport OrderCreateBackoffice from './components/pages/OrderCreateBackoffice.vue';\nimport Orders from './components/pages/Orders.vue';\nimport Customers from './components/pages/Customers.vue';\nimport Applications from './components/pages/Applications.vue';\n// import Favorites from './components/pages/Favorites.vue';\n// Importing blocks components\nimport CardOrder from './components/blocks/CardOrder.vue';\nimport CardOrderItem from './components/blocks/CardOrderItem.vue';\nimport CardOrderUser from './components/blocks/CardOrderUser.vue';\nimport CardCustomer from './components/blocks/CardCustomer.vue';\nimport StatusHistory from './components/blocks/StatusHistory.vue';\n// Importing sections components\nimport AskToLogin from './components/sections/AskToLogin.vue';\nimport EmptyState from './components/sections/EmptyState.vue';\nimport FormCustomerDetails from './components/forms/FormCustomerDetails.vue';\nimport FormDelivery from './components/sections/FormDelivery.vue';\nimport FormPayment from './components/sections/FormPayment.vue';\nimport Succes from './components/sections/Succes.vue';\n// Importing partials components\nimport ShopCart from './components/partials/ShopCart.vue';\n\nimport { i18nManager } from '@martyrs/src/modules/core/views/classes/i18n.manager.js';\nimport locales from './locales/index.js';\n\n// Пример функции инициализации для модуля заказов\nfunction initializeOrders(app, store, router, options = {}) {\n // Регистрируем локализацию для модуля orders\n i18nManager.register('orders', locales);\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n const routeUsers = options.routeUsers || 'User Profile Root';\n\n if (typeof window !== 'undefined') storeShopcart.actions.setShopcart()\n\n addRoutes(router, {\n parentName: route,\n basePath: 'orders',\n routes: routerOrders,\n routeNamePrefix: '',\n filterConfig: {\n include: ['CreateOrder', 'Order'], // Только создание заказа на корневом уровне\n },\n meta: {\n context: 'root',\n },\n });\n\n // Backoffice routes\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'orders', // Промежуточный маршрут /backoffice/orders\n routes: routerOrders,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['OrdersList', 'AdminCreateOrder', 'Order', 'OrderEdit'], // Специфичные для бэкофиса маршруты\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // User routes\n if (!options.withUserRoutes) {\n addRoutes(router, {\n parentName: routeUsers,\n basePath: 'orders', // Промежуточный маршрут /user/orders\n routes: routerOrders,\n routeNamePrefix: 'User',\n filterConfig: {\n include: ['OrdersList', 'Order'], // Специфичные для пользователя маршруты\n },\n meta: {\n context: 'user',\n },\n });\n }\n\n // Organization routes\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'orders', // Промежуточный маршрут /organization/orders\n routes: routerOrders,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['OrdersList', 'Order', 'AdminCreateOrder', 'OrderEdit'], // Специфичные для организации маршруты\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Customer routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Customers'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Customer routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Customers'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Application routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Application routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n store.addStore('orders', storeOrders);\n store.addStore('shopcart', storeShopcart);\n store.addStore('testimonials', storeTestimonials);\n store.addStore('customers', storeCustomers);\n store.addStore('applications', storeApplications);\n}\n\nconst ModuleOrder = {\n initialize: initializeOrders,\n store: {\n storeOrders,\n storeShopcart,\n storeTestimonials,\n storeCustomers,\n storeApplications,\n },\n router: {\n routerOrders,\n routerCustomers,\n routerApplications,\n },\n components: {\n // Pages\n Orders,\n Customers,\n Applications,\n // Order,\n OrderCreate,\n OrderCreateBackoffice,\n // Favorites,\n // Blocks\n CardOrderItem,\n CardOrder,\n CardOrderUser,\n CardCustomer,\n StatusHistory,\n // Sections\n FormCustomerDetails,\n AskToLogin,\n FormDelivery,\n EmptyState,\n Succes,\n FormPayment,\n // Partials\n ShopCart,\n },\n};\n\nexport default ModuleOrder;\n"],"names":["storeShopcart.actions","routerOrders","routerCustomers","routerApplications","storeOrders","storeShopcart","storeTestimonials","storeCustomers","storeApplications","Orders","Customers","Applications","OrderCreate","OrderCreateBackoffice","CardOrderItem","StatusHistory","FormCustomerDetails","AskToLogin","FormDelivery","EmptyState","Succes","FormPayment","ShopCart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAS,iBAAiB,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;AAE1D,cAAY,SAAS,UAAU,OAAO;AACtC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,kBAAkB,QAAQ,mBAAmB;AACnD,QAAM,qBAAqB,QAAQ,sBAAsB;AACzD,QAAM,aAAa,QAAQ,cAAc;AAEzC,MAAI,OAAO,WAAW,YAAaA,SAAsB,YAAW;AAEpE,YAAU,QAAQ;AAAA,IAChB,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQC;AAAAA,IACR,iBAAiB;AAAA,IACjB,cAAc;AAAA,MACZ,SAAS,CAAC,eAAe,OAAO;AAAA;AAAA,IACtC;AAAA,IACI,MAAM;AAAA,MACJ,SAAS;AAAA,IACf;AAAA,EACA,CAAG;AAGD,MAAI,CAAC,QAAQ,gBAAgB;AAC3B,cAAU,QAAQ;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA;AAAA,MACV,QAAQA;AAAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,SAAS,CAAC,cAAc,oBAAoB,SAAS,WAAW;AAAA;AAAA,MACxE;AAAA,MACM,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,IACA,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,gBAAgB;AAC3B,cAAU,QAAQ;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA;AAAA,MACV,QAAQA;AAAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,SAAS,CAAC,cAAc,OAAO;AAAA;AAAA,MACvC;AAAA,MACM,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,IACA,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,wBAAwB;AACnC,cAAU,QAAQ;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA;AAAA,MACV,QAAQA;AAAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,SAAS,CAAC,cAAc,SAAS,oBAAoB,WAAW;AAAA;AAAA,MACxE;AAAA,MACM,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,IACA,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,gBAAgB;AAC3B,cAAU,QAAQ;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQC;AAAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,SAAS,CAAC,WAAW;AAAA,MAC7B;AAAA,MACM,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,IACA,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,wBAAwB;AACnC,cAAU,QAAQ;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQA;AAAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,SAAS,CAAC,WAAW;AAAA,MAC7B;AAAA,MACM,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,IACA,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,gBAAgB;AAC3B,cAAU,QAAQ;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQC;AAAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,SAAS,CAAC,cAAc;AAAA,MAChC;AAAA,MACM,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,IACA,CAAK;AAAA,EACH;AAGA,MAAI,CAAC,QAAQ,wBAAwB;AACnC,cAAU,QAAQ;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQA;AAAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,SAAS,CAAC,cAAc;AAAA,MAChC;AAAA,MACM,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,IACA,CAAK;AAAA,EACH;AAEA,QAAM,SAAS,UAAUC,MAAW;AACpC,QAAM,SAAS,YAAYC,QAAa;AACxC,QAAM,SAAS,gBAAgBC,YAAiB;AAChD,QAAM,SAAS,aAAaC,SAAc;AAC1C,QAAM,SAAS,gBAAgBC,YAAiB;AAClD;AAEK,MAAC,cAAc;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,IACT,aAAIJ;AAAAA,IACJ,eAAIC;AAAAA,IACJ,mBAAIC;AAAAA,IACJ,gBAAIC;AAAAA,IACJ,mBAAIC;AAAAA,EACJ;AAAA,EACE,QAAQ;AAAA,IACV,cAAIP;AAAAA,IACJ,iBAAIC;AAAAA,IACJ,oBAAIC;AAAAA,EACJ;AAAA,EACE,YAAY;AAAA;AAAA,IAEd,QAAIM;AAAAA,IACJ,WAAIC;AAAAA,IACJ,cAAIC;AAAAA;AAAAA,IAEJ,aAAIC;AAAAA,IACJ,uBAAIC;AAAAA;AAAAA;AAAAA,IAGJ,eAAIC;AAAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACJ,eAAIC;AAAAA;AAAAA,IAEJ,qBAAIC;AAAAA,IACJ,YAAIC;AAAAA,IACJ,cAAIC;AAAAA,IACJ,YAAIC;AAAAA,IACJ,QAAIC;AAAAA,IACJ,aAAIC;AAAAA;AAAAA,IAEJ,UAAIC;AAAAA,EACJ;AACA;"}
1
+ {"version":3,"file":"orders.client.js","sources":["../../../../../src/modules/orders/orders.client.js"],"sourcesContent":["// Store\nimport * as storeOrders from './store/orders.js';\nimport * as storeShopcart from './store/shopcart.js';\nimport * as storeTestimonials from './store/testimonials.js';\nimport storeCustomers from './store/customers.store.js';\nimport storeApplications from './store/applications.js';\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport routerOrders from './router/orders.router.js';\nimport routerCustomers from './router/customers.router.js';\nimport routerApplications from './router/applications.router.js';\n// Views\nimport OrderCreate from './components/pages/OrderCreate.vue';\nimport OrderCreateBackoffice from './components/pages/OrderCreateBackoffice.vue';\nimport Orders from './components/pages/Orders.vue';\nimport Customers from './components/pages/Customers.vue';\nimport Applications from './components/pages/Applications.vue';\n// import Favorites from './components/pages/Favorites.vue';\n// Importing blocks components\nimport CardOrder from './components/blocks/CardOrder.vue';\nimport CardOrderItem from './components/blocks/CardOrderItem.vue';\nimport CardOrderUser from './components/blocks/CardOrderUser.vue';\nimport CardCustomer from './components/blocks/CardCustomer.vue';\nimport StatusHistory from './components/blocks/StatusHistory.vue';\n// Importing sections components\nimport AskToLogin from './components/sections/AskToLogin.vue';\nimport EmptyState from './components/sections/EmptyState.vue';\nimport FormCustomerDetails from './components/forms/FormCustomerDetails.vue';\nimport FormDelivery from './components/sections/FormDelivery.vue';\nimport FormPayment from './components/sections/FormPayment.vue';\nimport Succes from './components/sections/Succes.vue';\n// Importing partials components\nimport ShopCart from './components/partials/ShopCart.vue';\n\nimport { i18nManager } from '@martyrs/src/modules/core/views/classes/i18n.manager.js';\nimport locales from './locales/index.js';\n\n// Пример функции инициализации для модуля заказов\nfunction initializeOrders(app, store, router, options = {}) {\n // Регистрируем локализацию для модуля orders\n i18nManager.register('orders', locales);\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n const routeUsers = options.routeUsers || 'User Profile Root';\n\n if (typeof window !== 'undefined') storeShopcart.actions.setShopcart()\n\n addRoutes(router, {\n parentName: route,\n basePath: 'orders',\n routes: routerOrders,\n routeNamePrefix: '',\n filterConfig: {\n include: ['CreateOrder', 'Order'], // Только создание заказа на корневом уровне\n },\n meta: {\n context: 'root',\n },\n });\n\n // Backoffice routes\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'orders', // Промежуточный маршрут /backoffice/orders\n routes: routerOrders,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['OrdersList', 'AdminCreateOrder', 'Order', 'OrderEdit'], // Специфичные для бэкофиса маршруты\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // User routes\n if (!options.withUserRoutes) {\n addRoutes(router, {\n parentName: routeUsers,\n basePath: 'orders', // Промежуточный маршрут /user/orders\n routes: routerOrders,\n routeNamePrefix: 'User',\n filterConfig: {\n include: ['OrdersList', 'Order'], // Специфичные для пользователя маршруты\n },\n meta: {\n context: 'user',\n },\n });\n }\n\n // Organization routes\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'orders', // Промежуточный маршрут /organization/orders\n routes: routerOrders,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['OrdersList', 'Order', 'AdminCreateOrder', 'OrderEdit'], // Специфичные для организации маршруты\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Customer routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Customers'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Customer routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'customers',\n routes: routerCustomers,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Customers'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n // Application routes for backoffice\n if (!options.withBackoffice) {\n addRoutes(router, {\n parentName: routeBackoffice,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Backoffice',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'backoffice',\n },\n });\n }\n\n // Application routes for organizations\n if (!options.withOrganizationRoutes) {\n addRoutes(router, {\n parentName: routeOrganizations,\n basePath: 'applications',\n routes: routerApplications,\n routeNamePrefix: 'Organization',\n filterConfig: {\n include: ['Applications'],\n },\n meta: {\n context: 'organization',\n },\n });\n }\n\n store.addStore('orders', storeOrders);\n store.addStore('shopcart', storeShopcart);\n store.addStore('testimonials', storeTestimonials);\n store.addStore('customers', storeCustomers);\n store.addStore('applications', storeApplications);\n}\n\nconst ModuleOrder = {\n initialize: initializeOrders,\n store: {\n storeOrders,\n storeShopcart,\n storeTestimonials,\n storeCustomers,\n storeApplications,\n },\n router: {\n routerOrders,\n routerCustomers,\n routerApplications,\n },\n components: {\n // Pages\n Orders,\n Customers,\n Applications,\n // Order,\n OrderCreate,\n OrderCreateBackoffice,\n // Favorites,\n // Blocks\n CardOrderItem,\n CardOrder,\n CardOrderUser,\n CardCustomer,\n StatusHistory,\n // Sections\n FormCustomerDetails,\n AskToLogin,\n FormDelivery,\n EmptyState,\n Succes,\n FormPayment,\n // Partials\n ShopCart,\n },\n};\n\nexport default ModuleOrder;\n"],"names":["storeShopcart.actions","routerOrders","routerCustomers","routerApplications","storeOrders","storeShopcart","storeTestimonials","storeCustomers","storeApplications","Orders","Customers","Applications","OrderCreate","OrderCreateBackoffice","CardOrderItem","CardOrderUser","StatusHistory","FormCustomerDetails","AskToLogin","FormDelivery","EmptyState","Succes","FormPayment","ShopCart"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, withCtx, createBlock, createCommentVNode, unref, createElementVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Menu/Menu.vue2.js";
3
3
  import _sfc_main$2 from "../../../../components/Menu/MenuItem.vue.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$4 from "../../../icons/entities/IconProducts.vue.js";
6
6
  import _sfc_main$8 from "../../../icons/entities/IconEvents.vue.js";
7
7
  import _sfc_main$3 from "../../../icons/entities/IconGroups.vue.js";
@@ -1,25 +1,56 @@
1
- import { onMounted, computed, createElementBlock, openBlock, createElementVNode, createVNode, withCtx, createTextVNode } from "vue";
1
+ import { onMounted, computed, createElementBlock, openBlock, createElementVNode, createVNode, Fragment, renderList, normalizeClass, createBlock, resolveDynamicComponent, createTextVNode, createCommentVNode, toDisplayString, withCtx } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
+ /* empty css */
4
+ import _sfc_main$1 from "../../../icons/entities/IconGroups.vue.js";
5
+ import _sfc_main$2 from "../../../icons/entities/IconLock.vue.js";
6
+ import _sfc_main$3 from "../../../icons/actions/IconShow.vue.js";
7
+ /* empty css */
8
+ /* empty css */
9
+ /* empty css */
10
+ /* empty css */
11
+ /* empty css */
12
+ import Field from "../../../../components/Field/Field.vue.js";
13
+ /* empty css */
14
+ /* empty css */
15
+ /* empty css */
16
+ /* empty css */
17
+ /* empty css */
18
+ /* empty css */
19
+ /* empty css */
3
20
  import "vue-i18n";
4
21
  /* empty css */
5
- import _sfc_main$2 from "../../../../components/FieldTags/BlockTags.vue.js";
22
+ import _sfc_main$4 from "../../../../components/FieldTags/BlockTags.vue.js";
6
23
  /* empty css */
7
- import Field from "../../../../components/Field/Field.vue.js";
8
24
  /* empty css */
9
- import _sfc_main$1 from "../../../../components/SelectMulti/SelectMulti.vue.js";
25
+ /* empty css */
10
26
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
11
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
12
- /* empty css */
27
+ import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
13
28
  import { state as state$1 } from "../../../auth/views/store/auth.js";
14
29
  import { actions, state } from "../../store/organizations.js";
15
30
  const _hoisted_1 = { class: "for-transition pd-thin" };
16
- const _hoisted_2 = { class: "mn-b-thin radius-small w-100 h-10r bg-light flex-center flex-column flex" };
31
+ const _hoisted_2 = { class: "d-grid cols-1 tablet:cols-3 gap-regular mn-b-semi" };
32
+ const _hoisted_3 = ["onClick"];
33
+ const _hoisted_4 = { class: "fw-semi t-black dark:t-white d-flex items-center gap-thin" };
34
+ const _hoisted_5 = {
35
+ key: 0,
36
+ class: "w-[0.5rem] h-[0.5rem] radius-[50%] bg-main"
37
+ };
38
+ const _hoisted_6 = { class: "p-small t-grey dark:t-grey-thin mn-t-micro" };
39
+ const _hoisted_7 = { class: "mn-b-thin radius-small w-100 h-10r bg-light flex-center flex-column flex" };
17
40
  const _sfc_main = {
18
41
  __name: "OrganizationEdit",
19
42
  setup(__props) {
20
43
  const route = useRoute();
21
44
  const router = useRouter();
22
45
  actions.reset();
46
+ const typeOptions = [
47
+ { value: "public", label: "Public", icon: _sfc_main$1, desc: "Visible to everyone. Anyone can join." },
48
+ { value: "exclusive", label: "Exclusive", icon: _sfc_main$2, desc: "Visible, but membership requires approval." },
49
+ { value: "hidden", label: "Hidden", icon: _sfc_main$3, desc: "Invite only. Hidden from search." }
50
+ ];
51
+ function isTypeSelected(type) {
52
+ return state.current.types?.includes(type);
53
+ }
23
54
  onMounted(async () => {
24
55
  if (route.params._id) {
25
56
  await actions.read({ _id: route.params._id });
@@ -38,116 +69,134 @@ const _sfc_main = {
38
69
  }
39
70
  return (_ctx, _cache) => {
40
71
  return openBlock(), createElementBlock("div", _hoisted_1, [
41
- _cache[16] || (_cache[16] = createElementVNode("h3", { class: "mn-b-small" }, "Type of group", -1)),
42
- _cache[17] || (_cache[17] = createElementVNode("p", { class: "mn-b-thin" }, "Public groups are open to everyone, whereas in exclusive groups only members can post. If you wish to make a group private, select 'hidden'.", -1)),
43
- createVNode(_sfc_main$1, {
44
- modelValue: state.current.types,
45
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => state.current.types = $event),
46
- options: ["public", "exclusive", "hidden"],
47
- multiple: false,
48
- taggable: false,
49
- placeholder: "Type to search or add type of organization",
50
- class: "mn-b-semi bg-light pd-medium radius-small"
51
- }, null, 8, ["modelValue"]),
52
- _cache[18] || (_cache[18] = createElementVNode("h3", { class: "mn-b-small" }, "Profile", -1)),
72
+ _cache[15] || (_cache[15] = createElementVNode("h3", { class: "mn-b-small" }, "Access & Privacy", -1)),
53
73
  createElementVNode("div", _hoisted_2, [
74
+ (openBlock(), createElementBlock(Fragment, null, renderList(typeOptions, (option) => {
75
+ return createElementVNode("button", {
76
+ key: option.value,
77
+ onClick: ($event) => state.current.types = [option.value],
78
+ class: normalizeClass([
79
+ "d-flex items-start gap-regular pd-regular radius-semi br-1px t-left transition-timing-2",
80
+ isTypeSelected(option.value) ? "br-main bg-main-transp-10" : "br-light dark:br-dark-thin hover:br-grey bg-white dark:bg-dark"
81
+ ])
82
+ }, [
83
+ createElementVNode("div", {
84
+ class: normalizeClass([
85
+ "pd-thin radius-[50%]",
86
+ isTypeSelected(option.value) ? "bg-main t-white" : "bg-light dark:bg-dark-thin t-grey"
87
+ ])
88
+ }, [
89
+ (openBlock(), createBlock(resolveDynamicComponent(option.icon), { class: "i-medium" }))
90
+ ], 2),
91
+ createElementVNode("div", null, [
92
+ createElementVNode("div", _hoisted_4, [
93
+ createTextVNode(toDisplayString(option.label) + " ", 1),
94
+ isTypeSelected(option.value) ? (openBlock(), createElementBlock("span", _hoisted_5)) : createCommentVNode("", true)
95
+ ]),
96
+ createElementVNode("p", _hoisted_6, toDisplayString(option.desc), 1)
97
+ ])
98
+ ], 10, _hoisted_3);
99
+ }), 64))
100
+ ]),
101
+ _cache[16] || (_cache[16] = createElementVNode("h3", { class: "mn-b-small" }, "Profile", -1)),
102
+ createElementVNode("div", _hoisted_7, [
54
103
  createVNode(UploadImage, {
55
104
  photo: state.current.profile.photo,
56
- "onUpdate:photo": _cache[1] || (_cache[1] = ($event) => state.current.profile.photo = $event),
105
+ "onUpdate:photo": _cache[0] || (_cache[0] = ($event) => state.current.profile.photo = $event),
57
106
  uploadPath: "organizations/" + state.current._id + "/avatars",
58
107
  class: "h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra"
59
108
  }, null, 8, ["photo", "uploadPath"]),
60
- _cache[14] || (_cache[14] = createElementVNode("h4", null, "Upload photo", -1))
109
+ _cache[13] || (_cache[13] = createElementVNode("h4", null, "Upload photo", -1))
61
110
  ]),
62
111
  createVNode(Field, {
63
112
  field: state.current.profile.name,
64
- "onUpdate:field": _cache[2] || (_cache[2] = ($event) => state.current.profile.name = $event),
113
+ "onUpdate:field": _cache[1] || (_cache[1] = ($event) => state.current.profile.name = $event),
65
114
  placeholder: "Name of organization",
66
115
  class: "mn-b-thin bg-light pd-medium radius-small"
67
116
  }, null, 8, ["field"]),
68
117
  createVNode(Field, {
69
118
  field: state.current.profile.description,
70
- "onUpdate:field": _cache[3] || (_cache[3] = ($event) => state.current.profile.description = $event),
119
+ "onUpdate:field": _cache[2] || (_cache[2] = ($event) => state.current.profile.description = $event),
71
120
  placeholder: "Brief description of your group",
72
121
  class: "mn-b-thin bg-light pd-medium radius-small"
73
122
  }, null, 8, ["field"]),
74
- createVNode(_sfc_main$2, {
75
- onTagsChanged: _cache[4] || (_cache[4] = (newTags) => state.current.profile.tags = newTags),
123
+ createVNode(_sfc_main$4, {
124
+ onTagsChanged: _cache[3] || (_cache[3] = (newTags) => state.current.profile.tags = newTags),
76
125
  tags: state.current.profile.tags,
77
126
  class: "mn-b-small"
78
127
  }, null, 8, ["tags"]),
79
- _cache[19] || (_cache[19] = createElementVNode("h3", { class: "mn-b-small" }, "Contacts", -1)),
128
+ _cache[17] || (_cache[17] = createElementVNode("h3", { class: "mn-b-small" }, "Contacts", -1)),
80
129
  createVNode(Field, {
81
130
  field: state.current.contacts.email,
82
- "onUpdate:field": _cache[5] || (_cache[5] = ($event) => state.current.contacts.email = $event),
131
+ "onUpdate:field": _cache[4] || (_cache[4] = ($event) => state.current.contacts.email = $event),
83
132
  label: "Email",
84
133
  placeholder: "",
85
134
  class: "mn-b-thin bg-light pd-medium radius-small"
86
135
  }, null, 8, ["field"]),
87
136
  createVNode(Field, {
88
137
  field: state.current.contacts.website,
89
- "onUpdate:field": _cache[6] || (_cache[6] = ($event) => state.current.contacts.website = $event),
138
+ "onUpdate:field": _cache[5] || (_cache[5] = ($event) => state.current.contacts.website = $event),
90
139
  label: "Website",
91
140
  placeholder: "",
92
141
  class: "mn-b-thin bg-light pd-medium radius-small"
93
142
  }, null, 8, ["field"]),
94
143
  createVNode(Field, {
95
144
  field: state.current.contacts.phone,
96
- "onUpdate:field": _cache[7] || (_cache[7] = ($event) => state.current.contacts.phone = $event),
145
+ "onUpdate:field": _cache[6] || (_cache[6] = ($event) => state.current.contacts.phone = $event),
97
146
  label: "Phone",
98
147
  placeholder: "",
99
148
  class: "mn-b-thin bg-light pd-medium radius-small"
100
149
  }, null, 8, ["field"]),
101
150
  createVNode(Field, {
102
151
  field: state.current.contacts.address,
103
- "onUpdate:field": _cache[8] || (_cache[8] = ($event) => state.current.contacts.address = $event),
152
+ "onUpdate:field": _cache[7] || (_cache[7] = ($event) => state.current.contacts.address = $event),
104
153
  label: "Address",
105
154
  placeholder: "",
106
155
  class: "mn-b-thin bg-light pd-medium radius-small"
107
156
  }, null, 8, ["field"]),
108
- _cache[20] || (_cache[20] = createElementVNode("h3", { class: "mn-b-small" }, "Socials", -1)),
109
- _cache[21] || (_cache[21] = createElementVNode("p", { class: "mn-b-thin" }, "Please provide only the username for social media profiles, without full links.", -1)),
157
+ _cache[18] || (_cache[18] = createElementVNode("h3", { class: "mn-b-small" }, "Socials", -1)),
158
+ _cache[19] || (_cache[19] = createElementVNode("p", { class: "mn-b-thin" }, "Please provide only the username for social media profiles, without full links.", -1)),
110
159
  createVNode(Field, {
111
160
  field: state.current.socials.instagram,
112
- "onUpdate:field": _cache[9] || (_cache[9] = ($event) => state.current.socials.instagram = $event),
161
+ "onUpdate:field": _cache[8] || (_cache[8] = ($event) => state.current.socials.instagram = $event),
113
162
  label: "Instagram",
114
163
  placeholder: "",
115
164
  class: "mn-b-thin bg-light pd-medium radius-small"
116
165
  }, null, 8, ["field"]),
117
166
  createVNode(Field, {
118
167
  field: state.current.socials.twitter,
119
- "onUpdate:field": _cache[10] || (_cache[10] = ($event) => state.current.socials.twitter = $event),
168
+ "onUpdate:field": _cache[9] || (_cache[9] = ($event) => state.current.socials.twitter = $event),
120
169
  label: "Twitter",
121
170
  placeholder: "",
122
171
  class: "mn-b-thin bg-light pd-medium radius-small"
123
172
  }, null, 8, ["field"]),
124
173
  createVNode(Field, {
125
174
  field: state.current.socials.facebook,
126
- "onUpdate:field": _cache[11] || (_cache[11] = ($event) => state.current.socials.facebook = $event),
175
+ "onUpdate:field": _cache[10] || (_cache[10] = ($event) => state.current.socials.facebook = $event),
127
176
  label: "Facebook",
128
177
  placeholder: "",
129
178
  class: "mn-b-thin bg-light pd-medium radius-small"
130
179
  }, null, 8, ["field"]),
131
180
  createVNode(Field, {
132
181
  field: state.current.socials.telegram,
133
- "onUpdate:field": _cache[12] || (_cache[12] = ($event) => state.current.socials.telegram = $event),
182
+ "onUpdate:field": _cache[11] || (_cache[11] = ($event) => state.current.socials.telegram = $event),
134
183
  label: "Telegram",
135
184
  placeholder: "",
136
185
  class: "mn-b-thin bg-light pd-medium radius-small"
137
186
  }, null, 8, ["field"]),
138
187
  createVNode(Field, {
139
188
  field: state.current.socials.youtube,
140
- "onUpdate:field": _cache[13] || (_cache[13] = ($event) => state.current.socials.youtube = $event),
189
+ "onUpdate:field": _cache[12] || (_cache[12] = ($event) => state.current.socials.youtube = $event),
141
190
  label: "Youtube",
142
191
  placeholder: "",
143
192
  class: "mn-b-thin bg-light pd-medium radius-small"
144
193
  }, null, 8, ["field"]),
145
- createVNode(_sfc_main$3, {
194
+ createVNode(_sfc_main$5, {
146
195
  submit: onSubmit,
147
196
  callback: redirectTo,
148
197
  class: "bg-main w-100 mn-b-thin"
149
198
  }, {
150
- default: withCtx(() => _cache[15] || (_cache[15] = [
199
+ default: withCtx(() => _cache[14] || (_cache[14] = [
151
200
  createTextVNode("Save")
152
201
  ])),
153
202
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationEdit.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/OrganizationEdit.vue"],"sourcesContent":["<template>\n<div class=\"for-transition pd-thin\">\n \n <h3 class=\"mn-b-small\">Type of group</h3>\n <p class=\"mn-b-thin\">Public groups are open to everyone, whereas in exclusive groups only members can post. If you wish to make a group private, select 'hidden'.</p>\n \n <SelectMulti\n v-model=\"organization.state.current.types\"\n :options=\"['public','exclusive','hidden']\"\n :multiple=\"false\"\n :taggable=\"false\"\n placeholder=\"Type to search or add type of organization\"\n class=\"mn-b-semi bg-light pd-medium radius-small\" \n />\n\n\n <h3 class=\"mn-b-small\">Profile</h3>\n\n <div class=\"mn-b-thin radius-small w-100 h-10r bg-light flex-center flex-column flex\">\n <UploadImage \n v-model:photo=\"organization.state.current.profile.photo\"\n :uploadPath=\"'organizations/' + organization.state.current._id + '/avatars'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload photo</h4>\n </div>\n\n <Field \n v-model:field=\"organization.state.current.profile.name\" \n placeholder=\"Name of organization\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <Field \n v-model:field=\"organization.state.current.profile.description\" \n placeholder=\"Brief description of your group\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <BlockTags\n @tags-changed=\"newTags => organization.state.current.profile.tags = newTags\"\n :tags=\"organization.state.current.profile.tags\"\n class=\"mn-b-small\"\n />\n\n <h3 class=\"mn-b-small\">Contacts</h3>\n <Field \n v-model:field=\"organization.state.current.contacts.email\"\n label=\"Email\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.website\"\n label=\"Website\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.phone\"\n label=\"Phone\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.address\"\n label=\"Address\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <h3 class=\"mn-b-small\">Socials</h3>\n <p class=\"mn-b-thin\">Please provide only the username for social media profiles, without full links.</p>\n\n <Field \n v-model:field=\"organization.state.current.socials.instagram\"\n label=\"Instagram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.twitter\"\n label=\"Twitter\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.facebook\"\n label=\"Facebook\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.telegram\"\n label=\"Telegram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.youtube\"\n label=\"Youtube\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n \n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"bg-main w-100 mn-b-thin\">Save</Button>\n <!-- <Button :submit=\"onDelete\" :callback=\"redirectDash\" class=\"mn-b-thin bg-fourth\">Delete</Button> -->\n\n</div>\n\n</template>\n\n<script setup>\n import { onMounted, computed } from 'vue';\n\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n import BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\n import Tab from '@martyrs/src/components/Tab/Tab.vue';\n import Field from '@martyrs/src/components/Field/Field.vue';\n import Select from '@martyrs/src/components/Select/Select.vue';\n import SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue'\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Button from '@martyrs/src/components/Button/Button.vue';\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n import membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\n const route = useRoute()\n const router = useRouter()\n\n organization.actions.reset();\n\n onMounted(async()=>{\n if (route.params._id) {\n await organization.actions.read({ _id: route.params._id });\n } \n })\n \n const organizationData = computed(() => organization.state.current)\n\n async function onSubmit() {\n if (route.params._id) {\n await organization.actions.update(route.params._id, organizationData.value)\n } else {\n await organization.actions.create(organization.state.current, auth.state.user._id)\n }\n }\n\n async function onDelete() {\n if (route.params._id) {\n await organization.actions.remove(route.params._id)\n router.push('/organizations/' + route.params._id)\n }\n }\n\n function redirectTo () {\n router.replace('/organizations/' + organization.state.current._id);\n }\n</script>"],"names":["organization.actions","organization.state","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;AAmIE,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExBA,YAAqB,MAAK;AAE1B,cAAU,YAAS;AACjB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMA,QAAqB,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,MAC3D;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,SAAS,MAAMC,MAAmB,OAAO;AAElE,mBAAe,WAAW;AACxB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMD,QAAqB,OAAO,MAAM,OAAO,KAAK,iBAAiB,KAAK;AAAA,MAC5E,OAAO;AACL,cAAMA,QAAqB,OAAOC,MAAmB,SAASC,QAAW,KAAK,GAAG;AAAA,MACnF;AAAA,IACF;AASA,aAAS,aAAc;AACrB,aAAO,QAAQ,oBAAoBD,MAAmB,QAAQ,GAAG;AAAA,IACnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"OrganizationEdit.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/OrganizationEdit.vue"],"sourcesContent":["<template>\n<div class=\"for-transition pd-thin\">\n \n <h3 class=\"mn-b-small\">Access & Privacy</h3>\n\n <div class=\"d-grid cols-1 tablet:cols-3 gap-regular mn-b-semi\">\n <button\n v-for=\"option in typeOptions\"\n :key=\"option.value\"\n @click=\"organization.state.current.types = [option.value]\"\n :class=\"[\n 'd-flex items-start gap-regular pd-regular radius-semi br-1px t-left transition-timing-2',\n isTypeSelected(option.value)\n ? 'br-main bg-main-transp-10'\n : 'br-light dark:br-dark-thin hover:br-grey bg-white dark:bg-dark'\n ]\"\n >\n <div :class=\"[\n 'pd-thin radius-[50%]',\n isTypeSelected(option.value)\n ? 'bg-main t-white'\n : 'bg-light dark:bg-dark-thin t-grey'\n ]\">\n <component :is=\"option.icon\" class=\"i-medium\" />\n </div>\n <div>\n <div class=\"fw-semi t-black dark:t-white d-flex items-center gap-thin\">\n {{ option.label }}\n <span v-if=\"isTypeSelected(option.value)\" class=\"w-[0.5rem] h-[0.5rem] radius-[50%] bg-main\"></span>\n </div>\n <p class=\"p-small t-grey dark:t-grey-thin mn-t-micro\">{{ option.desc }}</p>\n </div>\n </button>\n </div>\n\n\n <h3 class=\"mn-b-small\">Profile</h3>\n\n <div class=\"mn-b-thin radius-small w-100 h-10r bg-light flex-center flex-column flex\">\n <UploadImage \n v-model:photo=\"organization.state.current.profile.photo\"\n :uploadPath=\"'organizations/' + organization.state.current._id + '/avatars'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload photo</h4>\n </div>\n\n <Field \n v-model:field=\"organization.state.current.profile.name\" \n placeholder=\"Name of organization\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <Field \n v-model:field=\"organization.state.current.profile.description\" \n placeholder=\"Brief description of your group\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <BlockTags\n @tags-changed=\"newTags => organization.state.current.profile.tags = newTags\"\n :tags=\"organization.state.current.profile.tags\"\n class=\"mn-b-small\"\n />\n\n <h3 class=\"mn-b-small\">Contacts</h3>\n <Field \n v-model:field=\"organization.state.current.contacts.email\"\n label=\"Email\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.website\"\n label=\"Website\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.phone\"\n label=\"Phone\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.address\"\n label=\"Address\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <h3 class=\"mn-b-small\">Socials</h3>\n <p class=\"mn-b-thin\">Please provide only the username for social media profiles, without full links.</p>\n\n <Field \n v-model:field=\"organization.state.current.socials.instagram\"\n label=\"Instagram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.twitter\"\n label=\"Twitter\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.facebook\"\n label=\"Facebook\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.telegram\"\n label=\"Telegram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.youtube\"\n label=\"Youtube\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n \n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"bg-main w-100 mn-b-thin\">Save</Button>\n <!-- <Button :submit=\"onDelete\" :callback=\"redirectDash\" class=\"mn-b-thin bg-fourth\">Delete</Button> -->\n\n</div>\n\n</template>\n\n<script setup>\n import { onMounted, computed } from 'vue';\n\n import { useRoute, useRouter } from 'vue-router';\n\n import { IconGroups, IconLock, IconShow } from '@martyrs/src/modules/icons/icons.client.js'\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n import BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\n import Tab from '@martyrs/src/components/Tab/Tab.vue';\n import Field from '@martyrs/src/components/Field/Field.vue';\n import Select from '@martyrs/src/components/Select/Select.vue';\n import SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue'\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Button from '@martyrs/src/components/Button/Button.vue';\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n import membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\n const route = useRoute()\n const router = useRouter()\n\n organization.actions.reset();\n\n const typeOptions = [\n { value: 'public', label: 'Public', icon: IconGroups, desc: 'Visible to everyone. Anyone can join.' },\n { value: 'exclusive', label: 'Exclusive', icon: IconLock, desc: 'Visible, but membership requires approval.' },\n { value: 'hidden', label: 'Hidden', icon: IconShow, desc: 'Invite only. Hidden from search.' }\n ];\n\n function isTypeSelected(type) {\n return organization.state.current.types?.includes(type);\n }\n\n onMounted(async()=>{\n if (route.params._id) {\n await organization.actions.read({ _id: route.params._id });\n } \n })\n \n const organizationData = computed(() => organization.state.current)\n\n async function onSubmit() {\n if (route.params._id) {\n await organization.actions.update(route.params._id, organizationData.value)\n } else {\n await organization.actions.create(organization.state.current, auth.state.user._id)\n }\n }\n\n async function onDelete() {\n if (route.params._id) {\n await organization.actions.remove(route.params._id)\n router.push('/organizations/' + route.params._id)\n }\n }\n\n function redirectTo () {\n router.replace('/organizations/' + organization.state.current._id);\n }\n</script>"],"names":["organization.actions","IconGroups","IconLock","IconShow","organization.state","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwJE,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExBA,YAAqB,MAAK;AAE1B,UAAM,cAAc;AAAA,MAClB,EAAE,OAAO,UAAU,OAAO,UAAU,MAAMC,aAAY,MAAM,wCAAuC;AAAA,MACnG,EAAE,OAAO,aAAa,OAAO,aAAa,MAAMC,aAAU,MAAM,6CAA4C;AAAA,MAC5G,EAAE,OAAO,UAAU,OAAO,UAAU,MAAMC,aAAU,MAAM,mCAAkC;AAAA,IAChG;AAEE,aAAS,eAAe,MAAM;AAC5B,aAAOC,MAAmB,QAAQ,OAAO,SAAS,IAAI;AAAA,IACxD;AAEA,cAAU,YAAS;AACjB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMJ,QAAqB,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,MAC3D;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,SAAS,MAAMI,MAAmB,OAAO;AAElE,mBAAe,WAAW;AACxB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMJ,QAAqB,OAAO,MAAM,OAAO,KAAK,iBAAiB,KAAK;AAAA,MAC5E,OAAO;AACL,cAAMA,QAAqB,OAAOI,MAAmB,SAASC,QAAW,KAAK,GAAG;AAAA,MACnF;AAAA,IACF;AASA,aAAS,aAAc;AACrB,aAAO,QAAQ,oBAAoBD,MAAmB,QAAQ,GAAG;AAAA,IACnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -15,7 +15,7 @@ import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
- /* empty css */
18
+ /* empty css */
19
19
  /* empty css */
20
20
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
21
21
  import { useStore } from "../../../core/views/store/core.store.js";
@@ -12,7 +12,7 @@ import _sfc_main$a from "../../../icons/navigation/IconDelete.vue.js";
12
12
  import _sfc_main$7 from "../sections/EditVariants.vue.js";
13
13
  import _sfc_main$6 from "../sections/EditAttributes.vue.js";
14
14
  import _sfc_main$8 from "../sections/EditDiscounts.vue.js";
15
- /* empty css */
15
+ /* empty css */
16
16
  import _sfc_main$9 from "../sections/EditRecommended.vue.js";
17
17
  import { useStore, setError } from "../../../core/views/store/core.store.js";
18
18
  import { state as state$2 } from "../../../auth/views/store/auth.js";