@ozdao/martyrs 0.2.541 → 0.2.542
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/_virtual/index.cjs +4 -4
- package/dist/_virtual/index.js +4 -4
- package/dist/_virtual/index2.cjs +3 -6
- package/dist/_virtual/index2.cjs.map +1 -1
- package/dist/_virtual/index2.js +2 -5
- package/dist/_virtual/index2.js.map +1 -1
- package/dist/{main-BpBtIUcJ.js → main-ByKkD9qa.js} +2724 -3143
- package/dist/main-Czyu-VcC.cjs +11 -0
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.cjs +30 -21
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +32 -23
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.cjs +235 -0
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.js +235 -0
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Marquee/Marquee.vue.cjs +17 -8
- package/dist/martyrs/src/components/Marquee/Marquee.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Marquee/Marquee.vue.js +17 -8
- package/dist/martyrs/src/components/Marquee/Marquee.vue.js.map +1 -1
- package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
- package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
- package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs +161 -42
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +162 -43
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +4 -4
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +0 -3
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +0 -3
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +21 -21
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +11 -11
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +12 -12
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +16 -16
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +16 -16
- package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +3 -4
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +3 -4
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +20 -20
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +3 -4
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +3 -4
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +4 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +4 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +3 -4
- 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 -4
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +7 -7
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +46 -38
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +52 -44
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +11 -11
- 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/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs +1 -1
- package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js +1 -1
- package/dist/style.css +129 -129
- package/dist/{web-DsdyXC8n.js → web-BklgIiYr.js} +1 -1
- package/dist/{web-C9bVm6Nw.cjs → web-CQBm7C6L.cjs} +1 -1
- package/package.json +1 -1
- package/src/components/FieldTags/BlockTags.vue +28 -16
- package/src/components/FieldTags/FieldTags.vue +327 -508
- package/src/components/Marquee/Marquee.vue +25 -14
- package/src/components/UploadImage/UploadImage.vue +192 -18
- package/src/modules/community/components/pages/CreateBlogPost.vue +0 -1
- package/src/modules/products/components/pages/CategoryEdit.vue +53 -39
- package/dist/_virtual/index3.cjs +0 -5
- package/dist/_virtual/index3.cjs.map +0 -1
- package/dist/_virtual/index3.js +0 -5
- package/dist/_virtual/index3.js.map +0 -1
- package/dist/main-7IA3UHca.cjs +0 -11
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +0 -480
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +0 -480
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js.map +0 -1
- package/dist/martyrs/src/components/FieldTags/create-tags.cjs +0 -52
- package/dist/martyrs/src/components/FieldTags/create-tags.cjs.map +0 -1
- package/dist/martyrs/src/components/FieldTags/create-tags.js +0 -52
- package/dist/martyrs/src/components/FieldTags/create-tags.js.map +0 -1
- package/dist/martyrs/src/components/FieldTags/tag-input.vue2.cjs +0 -32
- package/dist/martyrs/src/components/FieldTags/tag-input.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/FieldTags/tag-input.vue2.js +0 -32
- package/dist/martyrs/src/components/FieldTags/tag-input.vue2.js.map +0 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs +0 -329
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs.map +0 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js +0 -329
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js.map +0 -1
- package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs +0 -39
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs.map +0 -1
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +0 -39
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +0 -1
- package/src/components/FieldTags/FieldTagsNew.vue +0 -366
- package/src/components/FieldTags/README.md +0 -513
- package/src/components/FieldTags/create-tags.js +0 -97
- package/src/components/FieldTags/tag-input.vue +0 -55
- package/src/components/FieldTags/vue-tags-input.props.js +0 -342
- package/src/components/FieldTags/vue-tags-input.scss +0 -149
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { computed, ref, reactive, createElementBlock, openBlock, createVNode, createElementVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, toDisplayString, createCommentVNode, unref, normalizeClass } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
|
-
import
|
|
3
|
+
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
4
4
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
5
|
-
import _sfc_main$
|
|
6
|
-
import _sfc_main$
|
|
7
|
-
import _sfc_main$
|
|
5
|
+
import _sfc_main$4 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
6
|
+
import _sfc_main$6 from "../../../../components/Button/Button.vue.js";
|
|
7
|
+
import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
|
|
8
8
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
9
|
-
import _sfc_main$
|
|
10
|
-
import _sfc_main$
|
|
11
|
-
import _sfc_main$
|
|
12
|
-
import _sfc_main$
|
|
9
|
+
import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
|
|
10
|
+
import _sfc_main$5 from "../../../../components/Spoiler/Spoiler.vue2.js";
|
|
11
|
+
import _sfc_main$2 from "../../../auth/views/components/blocks/CardUser.vue.js";
|
|
12
|
+
import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
|
|
13
13
|
import { actions } from "../../../globals/views/store/globals.js";
|
|
14
14
|
import membershipsStore from "../../store/memberships.store.js";
|
|
15
15
|
import departmentsStore from "../../store/departments.store.js";
|
|
@@ -205,7 +205,7 @@ const _sfc_main = {
|
|
|
205
205
|
}, {
|
|
206
206
|
default: withCtx(() => [
|
|
207
207
|
createElementVNode("div", _hoisted_2, [
|
|
208
|
-
createVNode(
|
|
208
|
+
createVNode(UploadImage, {
|
|
209
209
|
photo: currentDepartment.profile.photo,
|
|
210
210
|
"onUpdate:photo": _cache[0] || (_cache[0] = ($event) => currentDepartment.profile.photo = $event),
|
|
211
211
|
uploadPath: "organizations/" + currentDepartment.profile.name + "/departments",
|
|
@@ -242,7 +242,7 @@ const _sfc_main = {
|
|
|
242
242
|
}, {
|
|
243
243
|
default: withCtx(() => [
|
|
244
244
|
(openBlock(true), createElementBlock(Fragment, null, renderList(currentDepartment.members, (member, index) => {
|
|
245
|
-
return openBlock(), createBlock(_sfc_main$
|
|
245
|
+
return openBlock(), createBlock(_sfc_main$2, {
|
|
246
246
|
class: "h-4r bg-white pd-thin radius-medium w-100",
|
|
247
247
|
key: member._id || index,
|
|
248
248
|
user: member.user,
|
|
@@ -251,7 +251,7 @@ const _sfc_main = {
|
|
|
251
251
|
position: member.position,
|
|
252
252
|
action: {
|
|
253
253
|
label: {
|
|
254
|
-
is: _sfc_main$
|
|
254
|
+
is: _sfc_main$3,
|
|
255
255
|
props: { class: "i-medium", fill: "rgb(var(--white)" }
|
|
256
256
|
},
|
|
257
257
|
method: () => removeMember(member)
|
|
@@ -265,7 +265,7 @@ const _sfc_main = {
|
|
|
265
265
|
_cache[5] || (_cache[5] = createElementVNode("h3", { class: "mn-b-semi" }, "Department Settings", -1)),
|
|
266
266
|
_cache[6] || (_cache[6] = createElementVNode("p", { class: "p-medium mn-b-small" }, "Please settings for your department:", -1)),
|
|
267
267
|
createElementVNode("div", _hoisted_5, [
|
|
268
|
-
createVNode(_sfc_main$
|
|
268
|
+
createVNode(_sfc_main$4, {
|
|
269
269
|
label: "Hidden department",
|
|
270
270
|
name: "hidden",
|
|
271
271
|
class: "w-100 mn-r-small bg-white radius-small pd-small",
|
|
@@ -283,7 +283,7 @@ const _sfc_main = {
|
|
|
283
283
|
key: category,
|
|
284
284
|
class: "mn-b-small"
|
|
285
285
|
}, [
|
|
286
|
-
createVNode(_sfc_main$
|
|
286
|
+
createVNode(_sfc_main$5, { status: false }, {
|
|
287
287
|
header: withCtx(({ isOpen }) => [
|
|
288
288
|
createElementVNode("h4", _hoisted_8, [
|
|
289
289
|
createTextVNode(toDisplayString(category.charAt(0).toUpperCase() + category.slice(1)) + " ", 1),
|
|
@@ -293,7 +293,7 @@ const _sfc_main = {
|
|
|
293
293
|
content: withCtx(() => [
|
|
294
294
|
createElementVNode("div", _hoisted_10, [
|
|
295
295
|
(openBlock(true), createElementBlock(Fragment, null, renderList(actions2, (value, action) => {
|
|
296
|
-
return openBlock(), createBlock(_sfc_main$
|
|
296
|
+
return openBlock(), createBlock(_sfc_main$4, {
|
|
297
297
|
key: action,
|
|
298
298
|
label: action,
|
|
299
299
|
name: action,
|
|
@@ -311,7 +311,7 @@ const _sfc_main = {
|
|
|
311
311
|
])
|
|
312
312
|
]),
|
|
313
313
|
createElementVNode("div", _hoisted_11, [
|
|
314
|
-
editingDepartment.value ? (openBlock(), createBlock(_sfc_main$
|
|
314
|
+
editingDepartment.value ? (openBlock(), createBlock(_sfc_main$6, {
|
|
315
315
|
key: 0,
|
|
316
316
|
submit: onDelete,
|
|
317
317
|
showSuccess: true,
|
|
@@ -323,7 +323,7 @@ const _sfc_main = {
|
|
|
323
323
|
])),
|
|
324
324
|
_: 1
|
|
325
325
|
})) : createCommentVNode("", true),
|
|
326
|
-
createVNode(_sfc_main$
|
|
326
|
+
createVNode(_sfc_main$6, {
|
|
327
327
|
showSuccess: false,
|
|
328
328
|
showLoader: false,
|
|
329
329
|
class: "bg-grey t-white w-100",
|
|
@@ -334,7 +334,7 @@ const _sfc_main = {
|
|
|
334
334
|
])),
|
|
335
335
|
_: 1
|
|
336
336
|
}),
|
|
337
|
-
createVNode(_sfc_main$
|
|
337
|
+
createVNode(_sfc_main$6, {
|
|
338
338
|
class: "bg-main w-100",
|
|
339
339
|
submit: saveDepartment
|
|
340
340
|
}, {
|
|
@@ -344,14 +344,14 @@ const _sfc_main = {
|
|
|
344
344
|
_: 1
|
|
345
345
|
})
|
|
346
346
|
]),
|
|
347
|
-
createVNode(_sfc_main$
|
|
347
|
+
createVNode(_sfc_main$7, {
|
|
348
348
|
title: "Add member",
|
|
349
349
|
onClosePopup: closeMemberPopup,
|
|
350
350
|
isPopupOpen: isOpenAddMemberPopup.value,
|
|
351
351
|
class: "bg-white w-max-30r radius-medium pd-big"
|
|
352
352
|
}, {
|
|
353
353
|
default: withCtx(() => [
|
|
354
|
-
createVNode(_sfc_main$
|
|
354
|
+
createVNode(_sfc_main$8, {
|
|
355
355
|
search: {
|
|
356
356
|
placeholder: "Search member...",
|
|
357
357
|
class: "bg-light mn-b-thin"
|
|
@@ -376,7 +376,7 @@ const _sfc_main = {
|
|
|
376
376
|
items
|
|
377
377
|
}) => [
|
|
378
378
|
(openBlock(true), createElementBlock(Fragment, null, renderList(items, (user, index) => {
|
|
379
|
-
return openBlock(), createBlock(_sfc_main$
|
|
379
|
+
return openBlock(), createBlock(_sfc_main$2, {
|
|
380
380
|
key: user._id,
|
|
381
381
|
user: user.user,
|
|
382
382
|
photo: user.user.profile?.photo,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
|
-
;/* empty css
|
|
5
|
+
;/* empty css */
|
|
6
6
|
const departments_store = require("../../store/departments.store.cjs");
|
|
7
7
|
;/* empty css */
|
|
8
8
|
;/* empty css */
|
|
@@ -13,7 +13,7 @@ const departments_store = require("../../store/departments.store.cjs");
|
|
|
13
13
|
;/* empty css */
|
|
14
14
|
;/* empty css */
|
|
15
15
|
;/* empty css */
|
|
16
|
-
;/* empty css
|
|
16
|
+
;/* empty css */
|
|
17
17
|
const CardUser = require("../../../auth/views/components/blocks/CardUser.vue.cjs");
|
|
18
18
|
require("vue-i18n");
|
|
19
19
|
;/* empty css */
|
|
@@ -27,12 +27,11 @@ const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
|
|
|
27
27
|
;/* empty css */
|
|
28
28
|
;/* empty css */
|
|
29
29
|
;/* empty css */
|
|
30
|
-
require("../../../../../../_virtual/index.cjs");
|
|
31
30
|
;/* empty css */
|
|
32
|
-
;/* empty css */
|
|
33
31
|
;/* empty css */
|
|
34
32
|
;/* empty css */
|
|
35
33
|
require("axios");
|
|
34
|
+
;/* empty css */
|
|
36
35
|
;/* empty css */
|
|
37
36
|
const DepartmentSub = require("../blocks/DepartmentSub.vue.cjs");
|
|
38
37
|
;/* empty css */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Department.vue.cjs","sources":["../../../../../../../src/modules/organizations/components/pages/Department.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n \n <div v-if=\"departmentsStore.state.items.length > 0\" id=\"dash\" class=\"pd-medium bg-light\">\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <div class=\"flex-nowrap flex mn-b-small\">\n\n <h2 class=\"w-100\">{{ departmentsStore.state.items[0].profile.name }}</h2>\n\n <router-link \n :to=\"{\n name: 'Department Edit', \n params: {\n _id: route.params._id,\n department: route.params.department\n }\n }\" \n class=\"\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n </div>\n <p class=\"t-transp p-semi\" v-html=\"departmentsStore.state.items[0].description\"></p>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Команда</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.members?.length < 1\">В отделе еще нет участников</li>\n <User \n class=\"br-b br-solid br-grey-transp-25\" \n v-for=\"(member, index) in departmentsStore.state.items[0]?.members || []\" \n :key=\"index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n />\n </ul>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Подотделы</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.subdepartments?.length < 1\">В отделе еще нет подотделов</li>\n <DepartmentSub v-for=\"(subdepartment, index) in departmentsStore.state.items[0]?.subdepartments || []\" @click=\"$router.push(`/app/organization/departments/${subdepartment._id}`)\" :key=\"index\" class=\"br-b br-solid br-grey-transp-25\" :department=\"subdepartment\" />\n </ul> \n </section>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\nimport { DepartmentSub, departmentsStore } from '@martyrs/src/modules/organizations/organizations.client.js';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nconst router = useRouter();\nconst route = useRoute();\n\nawait departmentsStore.read({ _id: route.params.department });\n</script>\n\n<style scoped>\n</style>\n"],"names":["useRouter","useRoute","_withAsyncContext","departmentsStore"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Department.vue.cjs","sources":["../../../../../../../src/modules/organizations/components/pages/Department.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n \n <div v-if=\"departmentsStore.state.items.length > 0\" id=\"dash\" class=\"pd-medium bg-light\">\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <div class=\"flex-nowrap flex mn-b-small\">\n\n <h2 class=\"w-100\">{{ departmentsStore.state.items[0].profile.name }}</h2>\n\n <router-link \n :to=\"{\n name: 'Department Edit', \n params: {\n _id: route.params._id,\n department: route.params.department\n }\n }\" \n class=\"\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n </div>\n <p class=\"t-transp p-semi\" v-html=\"departmentsStore.state.items[0].description\"></p>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Команда</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.members?.length < 1\">В отделе еще нет участников</li>\n <User \n class=\"br-b br-solid br-grey-transp-25\" \n v-for=\"(member, index) in departmentsStore.state.items[0]?.members || []\" \n :key=\"index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n />\n </ul>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Подотделы</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.subdepartments?.length < 1\">В отделе еще нет подотделов</li>\n <DepartmentSub v-for=\"(subdepartment, index) in departmentsStore.state.items[0]?.subdepartments || []\" @click=\"$router.push(`/app/organization/departments/${subdepartment._id}`)\" :key=\"index\" class=\"br-b br-solid br-grey-transp-25\" :department=\"subdepartment\" />\n </ul> \n </section>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\nimport { DepartmentSub, departmentsStore } from '@martyrs/src/modules/organizations/organizations.client.js';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nconst router = useRouter();\nconst route = useRoute();\n\nawait departmentsStore.read({ _id: route.params.department });\n</script>\n\n<style scoped>\n</style>\n"],"names":["useRouter","useRoute","_withAsyncContext","departmentsStore"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEeA,cAAAA,UAAS;AACxB,UAAM,QAAQC,UAAAA,SAAQ;AAEtB,IAAA,CAAA,QAAA,SAAA,IAAAC,IAAAA,iBAAA,MAAMC,kBAAAA,QAAiB,KAAK,EAAE,KAAK,MAAM,OAAO,WAAU,CAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { withAsyncContext, resolveComponent, createElementBlock, openBlock, createCommentVNode, unref, createElementVNode, createVNode, toDisplayString, withCtx, Fragment, renderList, createBlock } from "vue";
|
|
2
2
|
import { useRouter, useRoute } from "vue-router";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
import departmentsStore from "../../store/departments.store.js";
|
|
5
5
|
/* empty css */
|
|
6
6
|
/* empty css */
|
|
@@ -11,7 +11,7 @@ import departmentsStore from "../../store/departments.store.js";
|
|
|
11
11
|
/* empty css */
|
|
12
12
|
/* empty css */
|
|
13
13
|
/* empty css */
|
|
14
|
-
/* empty css
|
|
14
|
+
/* empty css */
|
|
15
15
|
import _sfc_main$2 from "../../../auth/views/components/blocks/CardUser.vue.js";
|
|
16
16
|
import "vue-i18n";
|
|
17
17
|
/* empty css */
|
|
@@ -25,12 +25,11 @@ import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
|
|
|
25
25
|
/* empty css */
|
|
26
26
|
/* empty css */
|
|
27
27
|
/* empty css */
|
|
28
|
-
import "../../../../../../_virtual/index.js";
|
|
29
28
|
/* empty css */
|
|
30
|
-
/* empty css */
|
|
31
29
|
/* empty css */
|
|
32
30
|
/* empty css */
|
|
33
31
|
import "axios";
|
|
32
|
+
/* empty css */
|
|
34
33
|
/* empty css */
|
|
35
34
|
import DepartmentSub from "../blocks/DepartmentSub.vue.js";
|
|
36
35
|
/* empty css */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Department.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Department.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n \n <div v-if=\"departmentsStore.state.items.length > 0\" id=\"dash\" class=\"pd-medium bg-light\">\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <div class=\"flex-nowrap flex mn-b-small\">\n\n <h2 class=\"w-100\">{{ departmentsStore.state.items[0].profile.name }}</h2>\n\n <router-link \n :to=\"{\n name: 'Department Edit', \n params: {\n _id: route.params._id,\n department: route.params.department\n }\n }\" \n class=\"\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n </div>\n <p class=\"t-transp p-semi\" v-html=\"departmentsStore.state.items[0].description\"></p>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Команда</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.members?.length < 1\">В отделе еще нет участников</li>\n <User \n class=\"br-b br-solid br-grey-transp-25\" \n v-for=\"(member, index) in departmentsStore.state.items[0]?.members || []\" \n :key=\"index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n />\n </ul>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Подотделы</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.subdepartments?.length < 1\">В отделе еще нет подотделов</li>\n <DepartmentSub v-for=\"(subdepartment, index) in departmentsStore.state.items[0]?.subdepartments || []\" @click=\"$router.push(`/app/organization/departments/${subdepartment._id}`)\" :key=\"index\" class=\"br-b br-solid br-grey-transp-25\" :department=\"subdepartment\" />\n </ul> \n </section>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\nimport { DepartmentSub, departmentsStore } from '@martyrs/src/modules/organizations/organizations.client.js';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nconst router = useRouter();\nconst route = useRoute();\n\nawait departmentsStore.read({ _id: route.params.department });\n</script>\n\n<style scoped>\n</style>\n"],"names":["_withAsyncContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Department.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Department.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n \n <div v-if=\"departmentsStore.state.items.length > 0\" id=\"dash\" class=\"pd-medium bg-light\">\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <div class=\"flex-nowrap flex mn-b-small\">\n\n <h2 class=\"w-100\">{{ departmentsStore.state.items[0].profile.name }}</h2>\n\n <router-link \n :to=\"{\n name: 'Department Edit', \n params: {\n _id: route.params._id,\n department: route.params.department\n }\n }\" \n class=\"\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-regular\"\n classes=\"fill-white\"\n />\n </router-link>\n\n </div>\n <p class=\"t-transp p-semi\" v-html=\"departmentsStore.state.items[0].description\"></p>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Команда</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.members?.length < 1\">В отделе еще нет участников</li>\n <User \n class=\"br-b br-solid br-grey-transp-25\" \n v-for=\"(member, index) in departmentsStore.state.items[0]?.members || []\" \n :key=\"index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n />\n </ul>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Подотделы</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.subdepartments?.length < 1\">В отделе еще нет подотделов</li>\n <DepartmentSub v-for=\"(subdepartment, index) in departmentsStore.state.items[0]?.subdepartments || []\" @click=\"$router.push(`/app/organization/departments/${subdepartment._id}`)\" :key=\"index\" class=\"br-b br-solid br-grey-transp-25\" :department=\"subdepartment\" />\n </ul> \n </section>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\nimport { DepartmentSub, departmentsStore } from '@martyrs/src/modules/organizations/organizations.client.js';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nconst router = useRouter();\nconst route = useRoute();\n\nawait departmentsStore.read({ _id: route.params.department });\n</script>\n\n<style scoped>\n</style>\n"],"names":["_withAsyncContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEe,cAAS;AACxB,UAAM,QAAQ,SAAQ;AAEtB,IAAA,CAAA,QAAA,SAAA,IAAAA,iBAAA,MAAM,iBAAiB,KAAK,EAAE,KAAK,MAAM,OAAO,WAAU,CAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -9,7 +9,7 @@ const departments_store = require("../../store/departments.store.cjs");
|
|
|
9
9
|
const invites_store = require("../../store/invites.store.cjs");
|
|
10
10
|
const memberships_store = require("../../store/memberships.store.cjs");
|
|
11
11
|
const organizations = require("../../store/organizations.cjs");
|
|
12
|
-
;/* empty css
|
|
12
|
+
;/* empty css */
|
|
13
13
|
const CardUser = require("../../../auth/views/components/blocks/CardUser.vue.cjs");
|
|
14
14
|
require("vue-i18n");
|
|
15
15
|
;/* empty css */
|
|
@@ -21,7 +21,7 @@ require("../../../../components/Menu/MenuItem.vue.cjs");
|
|
|
21
21
|
;/* empty css */
|
|
22
22
|
;/* empty css */
|
|
23
23
|
;/* empty css */
|
|
24
|
-
;/* empty css
|
|
24
|
+
;/* empty css */
|
|
25
25
|
;/* empty css */
|
|
26
26
|
;/* empty css */
|
|
27
27
|
;/* empty css */
|
|
@@ -30,14 +30,13 @@ require("../../../../components/Menu/MenuItem.vue.cjs");
|
|
|
30
30
|
;/* empty css */
|
|
31
31
|
;/* empty css */
|
|
32
32
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
33
|
-
require("../../../../../../_virtual/index.cjs");
|
|
34
33
|
;/* empty css */
|
|
35
|
-
;/* empty css */
|
|
36
34
|
;/* empty css */
|
|
37
35
|
;/* empty css */
|
|
38
36
|
require("axios");
|
|
39
|
-
;/* empty css */
|
|
40
37
|
const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
|
|
38
|
+
;/* empty css */
|
|
39
|
+
;/* empty css */
|
|
41
40
|
const DepartmentForm = require("../forms/DepartmentForm.vue.cjs");
|
|
42
41
|
const InviteForm = require("../forms/InviteForm.vue.cjs");
|
|
43
42
|
const AddExistingMembersForm = require("../forms/AddExistingMembersForm.vue.cjs");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Members.vue.cjs","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"t-transp\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: 'Add user to organization' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: 'Add department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover-scale-1\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: 'Invite members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-min-40r w-max-50r radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n } \n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>"],"names":["useRoute","useRouter","ref","onMounted","organization.actions","auth.state","invitesStore","membershipsStore","departmentsStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Members.vue.cjs","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"t-transp\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: 'Add user to organization' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: 'Add department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover-scale-1\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: 'Invite members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-min-40r w-max-50r radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n } \n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>"],"names":["useRoute","useRouter","ref","onMounted","organization.actions","auth.state","invitesStore","membershipsStore","departmentsStore"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import departmentsStore from "../../store/departments.store.js";
|
|
|
7
7
|
import invitesStore from "../../store/invites.store.js";
|
|
8
8
|
import membershipsStore from "../../store/memberships.store.js";
|
|
9
9
|
import { actions } from "../../store/organizations.js";
|
|
10
|
-
/* empty css
|
|
10
|
+
/* empty css */
|
|
11
11
|
import _sfc_main$3 from "../../../auth/views/components/blocks/CardUser.vue.js";
|
|
12
12
|
import "vue-i18n";
|
|
13
13
|
/* empty css */
|
|
@@ -19,7 +19,7 @@ import "../../../../components/Menu/MenuItem.vue.js";
|
|
|
19
19
|
/* empty css */
|
|
20
20
|
/* empty css */
|
|
21
21
|
/* empty css */
|
|
22
|
-
/* empty css
|
|
22
|
+
/* empty css */
|
|
23
23
|
/* empty css */
|
|
24
24
|
/* empty css */
|
|
25
25
|
/* empty css */
|
|
@@ -28,14 +28,13 @@ import "../../../../components/Menu/MenuItem.vue.js";
|
|
|
28
28
|
/* empty css */
|
|
29
29
|
/* empty css */
|
|
30
30
|
import { state } from "../../../auth/views/store/auth.js";
|
|
31
|
-
import "../../../../../../_virtual/index.js";
|
|
32
31
|
/* empty css */
|
|
33
|
-
/* empty css */
|
|
34
32
|
/* empty css */
|
|
35
33
|
/* empty css */
|
|
36
34
|
import "axios";
|
|
37
|
-
/* empty css */
|
|
38
35
|
import _sfc_main$4 from "../../../icons/navigation/IconDelete.vue.js";
|
|
36
|
+
/* empty css */
|
|
37
|
+
/* empty css */
|
|
39
38
|
import _sfc_main$8 from "../forms/DepartmentForm.vue.js";
|
|
40
39
|
import _sfc_main$6 from "../forms/InviteForm.vue.js";
|
|
41
40
|
import _sfc_main$7 from "../forms/AddExistingMembersForm.vue.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Members.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"t-transp\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: 'Add user to organization' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: 'Add department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover-scale-1\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: 'Invite members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-min-40r w-max-50r radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n } \n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>"],"names":["organization.actions","auth.state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Members.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"t-transp\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: 'Add user to organization' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: 'Add department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover-scale-1\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: 'Invite members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-min-40r w-max-50r radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n } \n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>"],"names":["organization.actions","auth.state"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const IconEllipsis = require("../../../icons/navigation/IconEllipsis.vue.cjs");
|
|
|
15
15
|
const PlaceholderOrganizationPic = require("../../../icons/placeholders/PlaceholderOrganizationPic.vue.cjs");
|
|
16
16
|
const memberships_store = require("../../store/memberships.store.cjs");
|
|
17
17
|
const organizations = require("../../store/organizations.cjs");
|
|
18
|
-
;/* empty css
|
|
18
|
+
;/* empty css */
|
|
19
19
|
;/* empty css */
|
|
20
20
|
;/* empty css */
|
|
21
21
|
;/* empty css */
|
|
@@ -24,16 +24,15 @@ const organizations = require("../../store/organizations.cjs");
|
|
|
24
24
|
;/* empty css */
|
|
25
25
|
;/* empty css */
|
|
26
26
|
;/* empty css */
|
|
27
|
-
;/* empty css
|
|
27
|
+
;/* empty css */
|
|
28
28
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
29
29
|
const globals = require("../../../globals/views/store/globals.cjs");
|
|
30
|
-
require("../../../../../../_virtual/index.cjs");
|
|
31
30
|
;/* empty css */
|
|
32
|
-
;/* empty css */
|
|
33
31
|
;/* empty css */
|
|
34
32
|
;/* empty css */
|
|
35
33
|
;/* empty css */
|
|
36
34
|
require("axios");
|
|
35
|
+
;/* empty css */
|
|
37
36
|
;/* empty css */
|
|
38
37
|
const ButtonToggleMembership = require("../elements/ButtonToggleMembership.vue.cjs");
|
|
39
38
|
;/* empty css */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Organization.vue.cjs","sources":["../../../../../../../src/modules/organizations/components/pages/Organization.vue"],"sourcesContent":["<template>\n\t<div v-if=\"organizationData\" class=\"pd-thin for-transition w-100\">\n\n\t\t<!-- <Breadcrumbs class=\"mn-b-thin pd-medium bg-light radius-medium\"/> -->\n\t\t<!-- <pre>{{organization.state.current}}</pre> -->\n\n\t\t<section class=\"flex-center flex flex-column t-center pd-medium radius-medium bg-light mn-b-thin\">\n\n\t\t\t<Dropdown \n\t\t\t\tv-if=\"auth.state.user._id !== organization.state.current.owner\"\n\t\t\t\t:label=\"{ component: IconEllipsis, class: 'i-regular t-transp' }\"\n\t\t\t\t:align=\"'right'\"\n\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-regular pos-t-regular pd-thin radius-extra \"\n\t\t\t>\n\t\t\t\t<section \n\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t>\n\t\t\t\t\t<FormReport \n\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t:type=\"'organization'\" \n\t\t\t\t\t\t:target=\"organization.state.current._id\" \n\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<button \n\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>\n\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\tv-if=\"auth.state.user._id && auth.state.user._id !== organization.state.current.owner\"\n\t\t\t :user=\"auth.state.user._id\"\n\t\t\t :type=\"'organization'\" \n\t \t:role=\"'blocked'\" \n\t\t\t :target=\"organization.state.current._id\" \n\t\t\t :status=\"organization.state.current.isBlocked\" \n\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t class=\"t-white w-100 mn-t-thin bg-red\" \n\t \t/>\n\t\t\t\t</section>\n\t </Dropdown>\n\n\t <router-link\n\t\t\t\tv-if=\"auth.state.user._id === organization.state.current.owner\"\n\t :to=\"{\n\t\t\t\t\tname: 'Organization Edit', \n\t\t\t\t\tparams: {\n\t\t\t\t\t\t_id: organization.state.current._id\n\t\t\t\t\t}\n\t\t\t\t}\" \n\t class=\"\n\t \tz-index-2\n\t cursor-pointer \n\t pos-absolute pos-t-regular pos-r-regular\n\t radius-extra pd-thin bg-second\n\t \"\n\t >\n\t <IconEdit\n\t class=\"i-regular\"\n\t classes=\"fill-white\"\n\t />\n\t </router-link>\n\n\n\t\t\t<img loading=\"lazy\" \n\t\t\t\tv-if=\"organization.state.current.profile.photo\" \n\t\t\t\t:src=\"(FILE_SERVER_URL || '') + organization.state.current.profile.photo\" \n\t\t\t\tclass=\"radius-medium bg-light flex-center flex mn-b-small w-8r\" \n\t\t\t/>\n\n\t\t\t<PlaceholderOrganizationPic\n\t\t\t\tv-else\n\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t/>\n\n\t <h1\n\t \tclass=\"mn-b-thin\"\n\t >\n\t \t\t{{ organization.state.current.profile.name }}\n\t \t</h1>\n\n\t \t<div class=\"flex-center pd-r-thin pd-l-thin flex-nowrap flex mn-t-thin bg-white radius-extra w-max\">\n\t \t\t<IconFollowing class=\"i-medium mn-r-micro t-transp\"/>\n\n\t <p class=\"mn-t-thin p-medium t-medium uppercase mn-b-thin\">{{organization.state.current.numberOfSubscribers}} followers</p>\n\n\t <ButtonToggleMembership\n\t v-if=\"\n\t\t \tauth.state.user._id \n\t\t \t&& route.params._id \n\t\t \t&& route.params._id !== auth.state.user._id\n\t\t \t&& organization.state.current.owner !== auth.state.user._id\n\t\t \"\n\t :user=\"auth.state.user._id\"\n\t :type=\"'organization'\" \n\t :role=\"'subscriber'\" \n\t :target=\"organization.state.current._id\" \n\t :status=\"organization.state.current.isSubscriber\" \n\t :text=\"{create: '+', remove: '-'}\"\n\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t class=\" mn-l-thin p-medium t-medium radius-extra i-semi\" \n\t />\n\t </div>\n\n\t <!-- <p class=\"w-max-50r mn-t-regular mn-b-medium p-semi\">\n\t \t\t<Text :text=\"organization.profile.description || ''\" :showToggleText=\"true\" :maxLen=\"320\" />\n\t \t</p> -->\n\n\t \t<Chips \n\t \tv-if=\"organization.state.current.profile?.tags?.length > 0\" \n\t \t:chips=\"organization.state.current.profile.tags\"\n\t \tclass=\"p-medium\"\n\t \t/>\n\n\n\t <h4 \n\t \tv-if=\"Object.values(organization.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind us in socials\n\t \t</h4>\n\t \t\n\t \t<Socials \n\t \t\t:telegram=\"organization.state.current.socials.telegram\"\n\t \t\t:facebook=\"organization.state.current.socials.facebook\"\n\t \t\t:instagram=\"organization.state.current.socials.instagram\"\n\t \t\t:twitter=\"organization.state.current.socials.twitter\"\n\t \t\t:youtube=\"organization.state.current.socials.youtube\"\n\t \t/>\n\t\t</section>\n\t\t\n\t\t<!-- Backoffice -->\n\t\t<div v-if=\"MOBILE_APP\" @click=\"() => globals.state.isOpenSidebar = !globals.state.isOpenSidebar\" class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<p class=\"t-medium t-black-transp-60\">\n\t\t\t\t\tShow Menu\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Organization Info Section -->\n\t\t<!-- <div class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<h3 class=\"mn-b-small\">About {{ organization.state.current?.profile?.name }}</h3>\n\t\t\t\t<p v-if=\"organization.state.current?.profile?.description\" class=\"t-medium\">\n\t\t\t\t\t{{ organization.state.current.profile.description }}\n\t\t\t\t</p>\n\t\t\t\t<p v-else class=\"t-medium t-black-transp-60\">\n\t\t\t\t\tNo description available.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div> -->\n\n\t\t<Products/>\n\t</div>\n</template>\n\n<script setup>\n\timport { computed, reactive, ref, onMounted, watch } from 'vue'\n\timport { useRoute, useRouter } from 'vue-router'\n\t// Import components\n\timport Breadcrumbs \tfrom '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n\timport Block \t\tfrom '@martyrs/src/components/Block/Block.vue'\n\timport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\n\timport Text \t\tfrom '@martyrs/src/components/Text/Text.vue'\n\timport Chips from '@martyrs/src/components/Chips/Chips.vue'\n\t// Mobile Module\n\timport Menu from '@martyrs/src/components/Menu/Menu.vue'\n\timport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n\t// Icons\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\timport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\timport PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\t// Organizations\n\timport { \n\t\tDepartmentSub, \n\t\tButtonToggleMembership, \n\t\tContacts, \n\t\tRating, \n\t\tSocials \n\t} from '@martyrs/src/modules/organizations/organizations.client.js'\n\timport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\t// Report Module\n\timport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue'\n\t// Products modu;e\n\timport Products from '@martyrs/src//modules/products/components/pages/Products.vue'\n\t// Import state\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\timport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\n\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n\timport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\timport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\t// Init router\n\tconst router \t= useRouter()\n\tconst route \t= useRoute()\n\n\tconst organizationData = ref(null)\n\n\tonMounted(async () => {\n\t\t\n\t\torganizationData.value = await organization.actions.read({\n\t\t\t_id: route.params._id, \n\t\t\tuser: auth.state.user._id,\n\t\t\tlookup: ['memberships']\n\t\t})\n\n \t\tawait membershipsStore.read({target: route.params._id})\n\n \t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_organization', {\n\t\t\t\torganization_id: route.params._id,\n\t\t\t\torganization_name: organizationData.value?.profile?.name || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tuser_id: auth.state.user._id || 'anonymous',\n\t\t\t\ttimestamp: new Date().toISOString()\n\t\t\t});\n\t\t}\n\t})\n\n\t// Methods\n\tconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n\t membershipsStore.handleMembershipUpdate(organization.state.current, membership, status, target, statusName, statusNumber)\n\t};\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":["useRouter","useRoute","ref","onMounted","organization.actions","auth.state","membershipsStore","organization.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsMiBA,cAAAA,UAAS;AACzB,UAAM,QAASC,UAAAA,SAAQ;AAEvB,UAAM,mBAAmBC,IAAAA,IAAI,IAAI;AAEjCC,QAAAA,UAAU,YAAY;AAErB,uBAAiB,QAAQ,MAAMC,cAAAA,QAAqB,KAAK;AAAA,QACxD,KAAK,MAAM,OAAO;AAAA,QAClB,MAAMC,KAAAA,MAAW,KAAK;AAAA,QACtB,QAAQ,CAAC,aAAa;AAAA,MACzB,CAAG;AAEA,YAAMC,kBAAAA,QAAiB,KAAK,EAAC,QAAQ,MAAM,OAAO,IAAG,CAAC;AAEtD,UAAI,OAAO,SAAS,YAAY;AAChC,aAAK,SAAS,qBAAqB;AAAA,UAClC,iBAAiB,MAAM,OAAO;AAAA,UAC9B,mBAAmB,iBAAiB,OAAO,SAAS,QAAQ;AAAA,UAC5D,WAAW,OAAO,SAAS;AAAA,UAC3B,SAASD,KAAAA,MAAW,KAAK,OAAO;AAAA,UAChC,YAAW,oBAAI,KAAI,GAAG,YAAW;AAAA,QACrC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;AAGD,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,gCAAiB,uBAAuBC,cAAAA,MAAmB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC1H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Organization.vue.cjs","sources":["../../../../../../../src/modules/organizations/components/pages/Organization.vue"],"sourcesContent":["<template>\n\t<div v-if=\"organizationData\" class=\"pd-thin for-transition w-100\">\n\n\t\t<!-- <Breadcrumbs class=\"mn-b-thin pd-medium bg-light radius-medium\"/> -->\n\t\t<!-- <pre>{{organization.state.current}}</pre> -->\n\n\t\t<section class=\"flex-center flex flex-column t-center pd-medium radius-medium bg-light mn-b-thin\">\n\n\t\t\t<Dropdown \n\t\t\t\tv-if=\"auth.state.user._id !== organization.state.current.owner\"\n\t\t\t\t:label=\"{ component: IconEllipsis, class: 'i-regular t-transp' }\"\n\t\t\t\t:align=\"'right'\"\n\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-regular pos-t-regular pd-thin radius-extra \"\n\t\t\t>\n\t\t\t\t<section \n\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t>\n\t\t\t\t\t<FormReport \n\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t:type=\"'organization'\" \n\t\t\t\t\t\t:target=\"organization.state.current._id\" \n\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<button \n\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>\n\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\tv-if=\"auth.state.user._id && auth.state.user._id !== organization.state.current.owner\"\n\t\t\t :user=\"auth.state.user._id\"\n\t\t\t :type=\"'organization'\" \n\t \t:role=\"'blocked'\" \n\t\t\t :target=\"organization.state.current._id\" \n\t\t\t :status=\"organization.state.current.isBlocked\" \n\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t class=\"t-white w-100 mn-t-thin bg-red\" \n\t \t/>\n\t\t\t\t</section>\n\t </Dropdown>\n\n\t <router-link\n\t\t\t\tv-if=\"auth.state.user._id === organization.state.current.owner\"\n\t :to=\"{\n\t\t\t\t\tname: 'Organization Edit', \n\t\t\t\t\tparams: {\n\t\t\t\t\t\t_id: organization.state.current._id\n\t\t\t\t\t}\n\t\t\t\t}\" \n\t class=\"\n\t \tz-index-2\n\t cursor-pointer \n\t pos-absolute pos-t-regular pos-r-regular\n\t radius-extra pd-thin bg-second\n\t \"\n\t >\n\t <IconEdit\n\t class=\"i-regular\"\n\t classes=\"fill-white\"\n\t />\n\t </router-link>\n\n\n\t\t\t<img loading=\"lazy\" \n\t\t\t\tv-if=\"organization.state.current.profile.photo\" \n\t\t\t\t:src=\"(FILE_SERVER_URL || '') + organization.state.current.profile.photo\" \n\t\t\t\tclass=\"radius-medium bg-light flex-center flex mn-b-small w-8r\" \n\t\t\t/>\n\n\t\t\t<PlaceholderOrganizationPic\n\t\t\t\tv-else\n\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t/>\n\n\t <h1\n\t \tclass=\"mn-b-thin\"\n\t >\n\t \t\t{{ organization.state.current.profile.name }}\n\t \t</h1>\n\n\t \t<div class=\"flex-center pd-r-thin pd-l-thin flex-nowrap flex mn-t-thin bg-white radius-extra w-max\">\n\t \t\t<IconFollowing class=\"i-medium mn-r-micro t-transp\"/>\n\n\t <p class=\"mn-t-thin p-medium t-medium uppercase mn-b-thin\">{{organization.state.current.numberOfSubscribers}} followers</p>\n\n\t <ButtonToggleMembership\n\t v-if=\"\n\t\t \tauth.state.user._id \n\t\t \t&& route.params._id \n\t\t \t&& route.params._id !== auth.state.user._id\n\t\t \t&& organization.state.current.owner !== auth.state.user._id\n\t\t \"\n\t :user=\"auth.state.user._id\"\n\t :type=\"'organization'\" \n\t :role=\"'subscriber'\" \n\t :target=\"organization.state.current._id\" \n\t :status=\"organization.state.current.isSubscriber\" \n\t :text=\"{create: '+', remove: '-'}\"\n\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t class=\" mn-l-thin p-medium t-medium radius-extra i-semi\" \n\t />\n\t </div>\n\n\t <!-- <p class=\"w-max-50r mn-t-regular mn-b-medium p-semi\">\n\t \t\t<Text :text=\"organization.profile.description || ''\" :showToggleText=\"true\" :maxLen=\"320\" />\n\t \t</p> -->\n\n\t \t<Chips \n\t \tv-if=\"organization.state.current.profile?.tags?.length > 0\" \n\t \t:chips=\"organization.state.current.profile.tags\"\n\t \tclass=\"p-medium\"\n\t \t/>\n\n\n\t <h4 \n\t \tv-if=\"Object.values(organization.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind us in socials\n\t \t</h4>\n\t \t\n\t \t<Socials \n\t \t\t:telegram=\"organization.state.current.socials.telegram\"\n\t \t\t:facebook=\"organization.state.current.socials.facebook\"\n\t \t\t:instagram=\"organization.state.current.socials.instagram\"\n\t \t\t:twitter=\"organization.state.current.socials.twitter\"\n\t \t\t:youtube=\"organization.state.current.socials.youtube\"\n\t \t/>\n\t\t</section>\n\t\t\n\t\t<!-- Backoffice -->\n\t\t<div v-if=\"MOBILE_APP\" @click=\"() => globals.state.isOpenSidebar = !globals.state.isOpenSidebar\" class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<p class=\"t-medium t-black-transp-60\">\n\t\t\t\t\tShow Menu\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Organization Info Section -->\n\t\t<!-- <div class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<h3 class=\"mn-b-small\">About {{ organization.state.current?.profile?.name }}</h3>\n\t\t\t\t<p v-if=\"organization.state.current?.profile?.description\" class=\"t-medium\">\n\t\t\t\t\t{{ organization.state.current.profile.description }}\n\t\t\t\t</p>\n\t\t\t\t<p v-else class=\"t-medium t-black-transp-60\">\n\t\t\t\t\tNo description available.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div> -->\n\n\t\t<Products/>\n\t</div>\n</template>\n\n<script setup>\n\timport { computed, reactive, ref, onMounted, watch } from 'vue'\n\timport { useRoute, useRouter } from 'vue-router'\n\t// Import components\n\timport Breadcrumbs \tfrom '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n\timport Block \t\tfrom '@martyrs/src/components/Block/Block.vue'\n\timport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\n\timport Text \t\tfrom '@martyrs/src/components/Text/Text.vue'\n\timport Chips from '@martyrs/src/components/Chips/Chips.vue'\n\t// Mobile Module\n\timport Menu from '@martyrs/src/components/Menu/Menu.vue'\n\timport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n\t// Icons\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\timport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\timport PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\t// Organizations\n\timport { \n\t\tDepartmentSub, \n\t\tButtonToggleMembership, \n\t\tContacts, \n\t\tRating, \n\t\tSocials \n\t} from '@martyrs/src/modules/organizations/organizations.client.js'\n\timport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\t// Report Module\n\timport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue'\n\t// Products modu;e\n\timport Products from '@martyrs/src//modules/products/components/pages/Products.vue'\n\t// Import state\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\timport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\n\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n\timport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\timport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\t// Init router\n\tconst router \t= useRouter()\n\tconst route \t= useRoute()\n\n\tconst organizationData = ref(null)\n\n\tonMounted(async () => {\n\t\t\n\t\torganizationData.value = await organization.actions.read({\n\t\t\t_id: route.params._id, \n\t\t\tuser: auth.state.user._id,\n\t\t\tlookup: ['memberships']\n\t\t})\n\n \t\tawait membershipsStore.read({target: route.params._id})\n\n \t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_organization', {\n\t\t\t\torganization_id: route.params._id,\n\t\t\t\torganization_name: organizationData.value?.profile?.name || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tuser_id: auth.state.user._id || 'anonymous',\n\t\t\t\ttimestamp: new Date().toISOString()\n\t\t\t});\n\t\t}\n\t})\n\n\t// Methods\n\tconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n\t membershipsStore.handleMembershipUpdate(organization.state.current, membership, status, target, statusName, statusNumber)\n\t};\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":["useRouter","useRoute","ref","onMounted","organization.actions","auth.state","membershipsStore","organization.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsMiBA,cAAAA,UAAS;AACzB,UAAM,QAASC,UAAAA,SAAQ;AAEvB,UAAM,mBAAmBC,IAAAA,IAAI,IAAI;AAEjCC,QAAAA,UAAU,YAAY;AAErB,uBAAiB,QAAQ,MAAMC,cAAAA,QAAqB,KAAK;AAAA,QACxD,KAAK,MAAM,OAAO;AAAA,QAClB,MAAMC,KAAAA,MAAW,KAAK;AAAA,QACtB,QAAQ,CAAC,aAAa;AAAA,MACzB,CAAG;AAEA,YAAMC,kBAAAA,QAAiB,KAAK,EAAC,QAAQ,MAAM,OAAO,IAAG,CAAC;AAEtD,UAAI,OAAO,SAAS,YAAY;AAChC,aAAK,SAAS,qBAAqB;AAAA,UAClC,iBAAiB,MAAM,OAAO;AAAA,UAC9B,mBAAmB,iBAAiB,OAAO,SAAS,QAAQ;AAAA,UAC5D,WAAW,OAAO,SAAS;AAAA,UAC3B,SAASD,KAAAA,MAAW,KAAK,OAAO;AAAA,UAChC,YAAW,oBAAI,KAAI,GAAG,YAAW;AAAA,QACrC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;AAGD,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,gCAAiB,uBAAuBC,cAAAA,MAAmB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC1H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -13,7 +13,7 @@ import _sfc_main$2 from "../../../icons/navigation/IconEllipsis.vue.js";
|
|
|
13
13
|
import PlaceholderOrganizationPic from "../../../icons/placeholders/PlaceholderOrganizationPic.vue.js";
|
|
14
14
|
import membershipsStore from "../../store/memberships.store.js";
|
|
15
15
|
import { actions, state as state$1 } from "../../store/organizations.js";
|
|
16
|
-
/* empty css
|
|
16
|
+
/* empty css */
|
|
17
17
|
/* empty css */
|
|
18
18
|
/* empty css */
|
|
19
19
|
/* empty css */
|
|
@@ -22,16 +22,15 @@ import { actions, state as state$1 } from "../../store/organizations.js";
|
|
|
22
22
|
/* empty css */
|
|
23
23
|
/* empty css */
|
|
24
24
|
/* empty css */
|
|
25
|
-
/* empty css
|
|
25
|
+
/* empty css */
|
|
26
26
|
import { state } from "../../../auth/views/store/auth.js";
|
|
27
27
|
import { state as state$2 } from "../../../globals/views/store/globals.js";
|
|
28
|
-
import "../../../../../../_virtual/index.js";
|
|
29
28
|
/* empty css */
|
|
30
|
-
/* empty css */
|
|
31
29
|
/* empty css */
|
|
32
30
|
/* empty css */
|
|
33
31
|
/* empty css */
|
|
34
32
|
import "axios";
|
|
33
|
+
/* empty css */
|
|
35
34
|
/* empty css */
|
|
36
35
|
import _sfc_main$4 from "../elements/ButtonToggleMembership.vue.js";
|
|
37
36
|
/* empty css */
|