@ozdao/martyrs 0.2.519 → 0.2.520
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/chats.server.cjs +198 -1
- package/dist/chats.server.js +198 -1
- package/dist/{main-Wr1_4rwl.cjs → main-BM3GslOO.cjs} +6 -6
- package/dist/{main-DgGUrhjT.js → main-Qcn7YlTx.js} +1832 -1828
- package/dist/martyrs/src/components/Address/{Address.vue2.cjs → Address.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Address/{Address.vue2.js.map → Address.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Address/{Address.vue2.js → Address.vue.js} +2 -2
- package/dist/martyrs/src/components/Address/Address.vue.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +0 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +0 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.cjs → LocationMarker.vue.cjs} +2 -2
- package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js.map → LocationMarker.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js → LocationMarker.vue.js} +2 -2
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +1 -0
- package/dist/martyrs/src/components/Select/{Select.vue2.cjs → Select.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Select/{Select.vue2.js.map → Select.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +4 -4
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +40 -50
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +59 -69
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +11 -13
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +11 -13
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs +9 -0
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +9 -0
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs +27 -11
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +28 -12
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs +62 -0
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +63 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs +60 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.js +60 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +3 -3
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +50 -368
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +53 -371
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +0 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +0 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +7 -0
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +7 -0
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +180 -19
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +181 -20
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +0 -1
- package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.js +0 -1
- package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -3
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -3
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +2 -24
- 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 +5 -27
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs +4 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +4 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +195 -0
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +195 -0
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +402 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +402 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +86 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +86 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +10 -10
- 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 +11 -11
- 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 +279 -191
- 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 +285 -197
- 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 +5 -5
- 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 +5 -5
- 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 +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs +4 -4
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +42 -41
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +53 -52
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs +23 -16
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/organizations.client.js +35 -28
- package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs +0 -18
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.js +0 -18
- package/dist/martyrs/src/modules/organizations/router/departments.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/departments.store.cjs +6 -0
- package/dist/martyrs/src/modules/organizations/store/departments.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/departments.store.js +6 -0
- package/dist/martyrs/src/modules/organizations/store/departments.store.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.cjs +6 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.js +6 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs +20 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.js +20 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -3
- 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 +2 -3
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +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 +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +60 -272
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +62 -274
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/notifications.server.cjs +0 -24
- package/dist/notifications.server.js +0 -24
- package/dist/orders.server.cjs +1 -4
- package/dist/orders.server.js +1 -4
- package/dist/organizations.server.cjs +115 -39
- package/dist/organizations.server.js +115 -39
- package/dist/style.css +9 -9
- package/dist/{web-42I-Howt.cjs → web-B0cfxzgu.cjs} +1 -1
- package/dist/{web-ByhZ_fIu.js → web-DVR8m2fm.js} +1 -1
- package/package.json +1 -1
- package/src/components/Feed/Feed.old.vue +0 -1
- package/src/components/Feed/Feed.vue +0 -30
- package/src/modules/auth/FIXES.md +2 -26
- package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/pages/Invite.vue +2 -2
- package/src/modules/auth/views/components/pages/Profile.vue +33 -48
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +5 -7
- package/src/modules/auth/views/store/auth.js +15 -0
- package/src/modules/chats/CLAUDE.md +137 -0
- package/src/modules/chats/components/blocks/ChatMessage.vue +12 -0
- package/src/modules/chats/components/sections/ChatWindow.vue +84 -2
- package/src/modules/chats/controllers/chats.controller.js +187 -0
- package/src/modules/chats/models/chat.model.js +21 -0
- package/src/modules/chats/routes/chats.routes.js +46 -0
- package/src/modules/chats/store/chat.store.js +67 -0
- package/src/modules/community/components/layouts/Community.vue +2 -2
- package/src/modules/community/components/pages/Posts.vue +3 -328
- package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
- package/src/modules/events/components/pages/Events.vue +2 -2
- package/src/modules/globals/views/mixins/mixins.js +7 -0
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +160 -8
- package/src/modules/notifications/controllers/notifications.controller.js +0 -6
- package/src/modules/notifications/services/notification.service.js +1 -17
- package/src/modules/notifications/services/web-push.service.js +0 -2
- package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +2 -2
- package/src/modules/orders/components/blocks/CardOrderVar1.vue +1 -1
- package/src/modules/orders/controllers/orders.controller.js +2 -4
- package/src/modules/organizations/CLAUDE.md +259 -0
- package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -22
- package/src/modules/organizations/components/blocks/Socials.vue +1 -1
- package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +3 -3
- package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +191 -0
- package/src/modules/organizations/components/forms/DepartmentForm.vue +390 -0
- package/src/modules/organizations/components/forms/InviteForm.vue +81 -0
- package/src/modules/organizations/components/pages/Department.vue +10 -10
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +8 -8
- package/src/modules/organizations/components/pages/Members.vue +265 -171
- package/src/modules/organizations/components/pages/Organization.new.vue +172 -183
- package/src/modules/organizations/components/pages/Organization.vue +6 -6
- package/src/modules/organizations/components/pages/OrganizationEdit.vue +1 -1
- package/src/modules/organizations/components/pages/Organizations.vue +1 -1
- package/src/modules/organizations/components/sections/Organizations.vue +2 -2
- package/src/modules/organizations/components/sections/Publics.vue +4 -4
- package/src/modules/organizations/configs/navigation.organization.config.js +40 -39
- package/src/modules/organizations/controllers/departments.controller.js +53 -34
- package/src/modules/organizations/controllers/invites.controller.js +44 -5
- package/src/modules/organizations/controllers/memberships.controller.js +43 -4
- package/src/modules/organizations/organizations.client.js +24 -15
- package/src/modules/organizations/router/departments.router.js +0 -18
- package/src/modules/organizations/routes/departments.routes.js +6 -8
- package/src/modules/organizations/routes/invites.routes.js +6 -4
- package/src/modules/organizations/routes/memberships.routes.js +6 -5
- package/src/modules/organizations/store/departments.store.js +5 -0
- package/src/modules/organizations/store/invites.store.js +5 -0
- package/src/modules/organizations/store/memberships.store.js +23 -0
- package/src/modules/products/components/pages/Products.vue +0 -1
- package/src/modules/spots/components/blocks/CardSpot.vue +1 -1
- package/src/modules/spots/components/pages/Spots.vue +3 -203
- package/src/styles/base/all.scss +0 -15
- package/src/styles/typography.scss +20 -5
- package/dist/martyrs/src/components/Address/Address.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +0 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +0 -76
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +0 -76
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +0 -280
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +0 -280
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/departments.cjs +0 -121
- package/dist/martyrs/src/modules/organizations/store/departments.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/departments.js +0 -121
- package/dist/martyrs/src/modules/organizations/store/departments.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/invites.cjs +0 -64
- package/dist/martyrs/src/modules/organizations/store/invites.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/invites.js +0 -64
- package/dist/martyrs/src/modules/organizations/store/invites.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.cjs +0 -87
- package/dist/martyrs/src/modules/organizations/store/memberships.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.js +0 -87
- package/dist/martyrs/src/modules/organizations/store/memberships.js.map +0 -1
- package/src/CLAUDE.MD +0 -15
- package/src/modules/globals/controllers/classes/globals.websocket.ws.js +0 -102
- package/src/modules/globals/views/components/blocks/BlockFilter.vue +0 -60
- package/src/modules/organizations/store/departments.js +0 -137
- package/src/modules/organizations/store/invites.js +0 -76
- package/src/modules/organizations/store/memberships.js +0 -110
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditEventTickets.vue.js","sources":["../../../../../../../src/modules/events/components/pages/EditEventTickets.vue"],"sourcesContent":["<template>\n <article v-if=\"event\" class=\"h-100 pd-thin\">\n <header \n class=\"mn-b-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Tickets</h2>\n <button \n @click=\"openTicketsPopup()\" \n class=\"radius-extra uppercase button-small flex-child flex-child-shrink-0 hover-scale-1 cursor-pointer t-white bg-second\">\n Add Tickets\n </button>\n <ButtonCheck @qrcodecheck=\"fetchTickets = !fetchTickets \" class=\"w-100 pd-medium mn-auto\" />\n </header>\n \n <Popup \n @close-popup=\"closeTicketsPopup\" \n :isPopupOpen=\"isOpenTicketsPopup\"\n class=\"w-max-40r\"\n >\n <Block\n title=\"Add tickets\"\n placeholder=\"No parameters added yet\"\n class=\"cols-1 mn-b-thin gap-thin\"\n >\n <div \n class=\"gap-thin flex-nowrap flex\" \n v-for=\"(item, index) in newTickets\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Name\"\n class=\"w-50 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.seat\"\n placeholder=\"Seat\"\n class=\"w-50 bg-white radius-small pd-medium\"\n />\n <Field\n v-model:field=\"item.email\"\n placeholder=\"Email\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n \n <Field\n v-model:field=\"item.quantity\"\n placeholder=\"Quantity\"\n type=\"number\"\n class=\"w-25 bg-white radius-small pd-medium\"\n />\n \n <div v-if=\"index < 1\" @click=\"() => newTickets.push({name: '', value: '', target: event._id, type: 'event', quantity: 1})\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-green\">\n <IconAdd \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n <div v-else @click=\"() => newTickets.splice(index, 1)\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\">\n <IconDelete \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n </div>\n\n <Button \n :submit=\"onSubmit\" \n :callback=\"closeTicketsPopup\" \n class=\"w-100 bg-black t-white\"\n >\n Create Tickets\n </Button>\n </Block>\n </Popup>\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Tickets Found',\n description: 'Currently, there are no tickets.'\n }\n }\"\n :store=\"{\n read: (options) => tickets.actions.read(options),\n state: null\n }\"\n :options=\"{\n target: event._id\n }\"\n :external=\"fetchTickets\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(ticket, index) in items\" \n class=\"radius-big bg-light gap-small pd-medium flex-v-center flex-nowrap flex pos-relative mn-b-thin\"\n >\n <a :href=\"ticket.image\" target=\"_blank\"><img loading=\"lazy\" :src=\"ticket.qrcode\" class=\"radius-small h-5r w-5r\"></a>\n\n <div class=\"mn-r-auto \">\n <p class=\"h4\">\n {{ticket.client_refactor?.name || 'No name'}}, {{ticket.seat}}\n </p>\n <p class=\"h5 t-transp mn-b-thin\">\n {{ticket.client_refactor?.email || 'No email'}}\n </p>\n\n <span class=\"pd-
|
|
1
|
+
{"version":3,"file":"EditEventTickets.vue.js","sources":["../../../../../../../src/modules/events/components/pages/EditEventTickets.vue"],"sourcesContent":["<template>\n <article v-if=\"event\" class=\"h-100 pd-thin\">\n <header \n class=\"mn-b-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Tickets</h2>\n <button \n @click=\"openTicketsPopup()\" \n class=\"radius-extra uppercase button-small flex-child flex-child-shrink-0 hover-scale-1 cursor-pointer t-white bg-second\">\n Add Tickets\n </button>\n <ButtonCheck @qrcodecheck=\"fetchTickets = !fetchTickets \" class=\"w-100 pd-medium mn-auto\" />\n </header>\n \n <Popup \n @close-popup=\"closeTicketsPopup\" \n :isPopupOpen=\"isOpenTicketsPopup\"\n class=\"w-max-40r\"\n >\n <Block\n title=\"Add tickets\"\n placeholder=\"No parameters added yet\"\n class=\"cols-1 mn-b-thin gap-thin\"\n >\n <div \n class=\"gap-thin flex-nowrap flex\" \n v-for=\"(item, index) in newTickets\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Name\"\n class=\"w-50 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.seat\"\n placeholder=\"Seat\"\n class=\"w-50 bg-white radius-small pd-medium\"\n />\n <Field\n v-model:field=\"item.email\"\n placeholder=\"Email\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n \n <Field\n v-model:field=\"item.quantity\"\n placeholder=\"Quantity\"\n type=\"number\"\n class=\"w-25 bg-white radius-small pd-medium\"\n />\n \n <div v-if=\"index < 1\" @click=\"() => newTickets.push({name: '', value: '', target: event._id, type: 'event', quantity: 1})\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-green\">\n <IconAdd \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n <div v-else @click=\"() => newTickets.splice(index, 1)\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\">\n <IconDelete \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n </div>\n\n <Button \n :submit=\"onSubmit\" \n :callback=\"closeTicketsPopup\" \n class=\"w-100 bg-black t-white\"\n >\n Create Tickets\n </Button>\n </Block>\n </Popup>\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Tickets Found',\n description: 'Currently, there are no tickets.'\n }\n }\"\n :store=\"{\n read: (options) => tickets.actions.read(options),\n state: null\n }\"\n :options=\"{\n target: event._id\n }\"\n :external=\"fetchTickets\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(ticket, index) in items\" \n class=\"radius-big bg-light gap-small pd-medium flex-v-center flex-nowrap flex pos-relative mn-b-thin\"\n >\n <a :href=\"ticket.image\" target=\"_blank\"><img loading=\"lazy\" :src=\"ticket.qrcode\" class=\"radius-small h-5r w-5r\"></a>\n\n <div class=\"mn-r-auto \">\n <p class=\"h4\">\n {{ticket.client_refactor?.name || 'No name'}}, {{ticket.seat}}\n </p>\n <p class=\"h5 t-transp mn-b-thin\">\n {{ticket.client_refactor?.email || 'No email'}}\n </p>\n\n <span class=\"pd-thin ]bg-second radius-extra t-white t-medium d-block w-max uppercase\">\n {{ticket.status}}\n </span>\n </div>\n\n <Button \n v-if=\"ticket.status !== 'deactivated'\"\n :submit=\"() => changeStatus(ticket, 'deactivated')\" \n :callback=\"redirectTo\" \n class=\"w-min h-min pd-small bg-black t-white\"\n >\n Deactivate\n </Button>\n\n <Button \n v-if=\"ticket.status === 'deactivated' || ticket.status === 'used' \"\n :submit=\"() => changeStatus(ticket, 'unused')\" \n :callback=\"redirectTo\" \n class=\"w-min h-min pd-small bg-green t-white\"\n >\n Activate\n </Button>\n \n </div>\n </Feed>\n \n </article>\n</template>\n\n<script setup>\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Popup from \"@martyrs/src/components/Popup/Popup.vue\";\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \n\nimport ButtonCheck from '@martyrs/src/modules/events/components/elements/ButtonCheck.vue'\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';\n\nimport { ref, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\n\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nconst { hasAccess } = useGlobalMixins()\n\nconst route = useRoute();\nconst router = useRouter();\n\nlet event = ref(null);\n\nconst newTickets = ref([{\n name: '',\n email: '',\n target: event.value?._id, \n type: 'event',\n seat: '',\n quantity: 1,\n}])\n\nconst isOpenTicketsPopup = ref(false);\n\nfunction openTicketsPopup(department) {\n isOpenTicketsPopup.value = true;\n \n newTickets.value = [{\n name: '',\n email: '',\n target: event.value?._id, \n type: 'event',\n seat: '',\n quantity: 1,\n }]\n}\n\nfunction closeTicketsPopup() {\n isOpenTicketsPopup.value = false;\n}\n\nconst fetchTickets = ref(false)\n\n\nonMounted(async () =>{\n const data = await events.read({ user: auth.state.user._id, url: route.params.url });\n\n event.value = data.pop();\n\n if (!event.value) {\n router.push({name: 'notfound'})\n }\n\n if (event.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(event.value.owner.target._id, 'events', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n } else {\n // Если пост не принадлежит организации, проверяем авторство\n if (event.value.creator.target._id !== userId) {\n router.push({name: 'unauthorized'})\n }\n }\n})\n\nasync function onSubmit() {\n try {\n const response = await tickets.actions.create(newTickets.value);\n fetchTickets.value = !fetchTickets.value\n } catch (error) {\n console.log(error);\n }\n}\n\nasync function changeStatus(ticket, status) {\n if (confirm('Are you sure you want to deactivate this event?')) {\n try {\n const response = await tickets.actions.update({ ...ticket, status: status});\n fetchTickets.value = !fetchTickets.value\n } catch (error) {\n console.error(error);\n }\n }\n}\n\n</script>\n\n<style lang=\"scss\">\n .dp__input {\n border: 0;\n padding: var(--medium);\n padding-left: 3rem;\n background: rgb(var(--grey))\n }\n</style>"],"names":["events.read","auth.state","tickets.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkKA,UAAM,EAAE,UAAS,IAAK,gBAAe;AAErC,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,QAAQ,IAAI,IAAI;AAEpB,UAAM,aAAa,IAAI,CAAC;AAAA,MACtB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,MAAM,OAAO;AAAA,MACrB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,IACZ,CAAC,CAAC;AAEF,UAAM,qBAAqB,IAAI,KAAK;AAEpC,aAAS,iBAAiB,YAAY;AACpC,yBAAmB,QAAQ;AAE3B,iBAAW,QAAQ,CAAC;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ,MAAM,OAAO;AAAA,QACrB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,MACd,CAAG;AAAA,IACH;AAEA,aAAS,oBAAoB;AAC3B,yBAAmB,QAAQ;AAAA,IAC7B;AAEA,UAAM,eAAe,IAAI,KAAK;AAG9B,cAAU,YAAW;AACnB,YAAM,OAAO,MAAMA,KAAY,EAAE,MAAMC,MAAW,KAAK,KAAK,KAAK,MAAM,OAAO,IAAG,CAAE;AAEnF,YAAM,QAAQ,KAAK,IAAG;AAEtB,UAAI,CAAC,MAAM,OAAO;AACjB,eAAO,KAAK,EAAC,MAAM,WAAU,CAAC;AAAA,MAC/B;AAEA,UAAI,MAAM,MAAM,MAAM,SAAS,gBAAgB;AAE7C,cAAM,WAAW,UAAU,MAAM,MAAM,MAAM,OAAO,KAAK,UAAU,QAAQA,MAAW,UAAUA,MAAW,OAAO,KAAK;AAEvH,YAAI,CAAC,UAAU;AACb,iBAAO,KAAK,EAAC,MAAM,eAAc,CAAC;AAAA,QACpC;AAAA,MACF,OAAO;AAEL,YAAI,MAAM,MAAM,QAAQ,OAAO,QAAQ,QAAQ;AAC7C,iBAAO,KAAK,EAAC,MAAM,eAAc,CAAC;AAAA,QACpC;AAAA,MACF;AAAA,IACF,CAAC;AAED,mBAAe,WAAW;AACxB,UAAI;AACF,cAAM,WAAW,MAAMC,QAAgB,OAAO,WAAW,KAAK;AAC9D,qBAAa,QAAQ,CAAC,aAAa;AAAA,MACrC,SAAS,OAAO;AACd,gBAAQ,IAAI,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,mBAAe,aAAa,QAAQ,QAAQ;AAC1C,UAAI,QAAQ,iDAAiD,GAAG;AAC9D,YAAI;AACF,gBAAM,WAAW,MAAMA,QAAgB,OAAO,EAAE,GAAG,QAAQ,OAAc,CAAC;AAC1E,uBAAa,QAAQ,CAAC,aAAa;AAAA,QACrC,SAAS,OAAO;AACd,kBAAQ,MAAM,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Event.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["useRoute","ref","tickets.mutations","onMounted","events.read","auth.state"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Event.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["useRoute","ref","tickets.mutations","onMounted","events.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,IAAAA,IAAI,IAAI;AAEvB,UAAM,qBAAqB,CAAC,EAAE,QAAQ,WAAW,SAAQ,MAAO;AAC9DC,cAAAA,UAAkB,mBAAmB,MAAM,OAAO,QAAQ,WAAW,QAAQ;AAC7E,cAAQ,IAAI,wBAAwB,QAAQ,MAAM,KAAK;AACvD,aAAO,QAAQ,OAAO;AAAA,IACxB;AASA,UAAM,QAAQD,IAAAA,IAAI,IAAI;AACtB,UAAM,YAAYA,IAAAA,IAAI,IAAI;AAE1BE,QAAAA,UAAU,YAAY;AACnB,gBAAU,QAAQ;AAElB,YAAM,OAAO,MAAMC,YAAY;AAAA,QAC5B,MAAMC,KAAAA,MAAW,KAAK;AAAA,QACtB,KAAK,MAAM,OAAO;AAAA,MACxB,CAAI;AAED,YAAM,QAAQ,KAAK,CAAC;AACpB,gBAAU,QAAQ;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Event.vue.js","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["tickets.mutations","events.read","auth.state"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Event.vue.js","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["tickets.mutations","events.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,IAAI,IAAI;AAEvB,UAAM,qBAAqB,CAAC,EAAE,QAAQ,WAAW,SAAQ,MAAO;AAC9DA,gBAAkB,mBAAmB,MAAM,OAAO,QAAQ,WAAW,QAAQ;AAC7E,cAAQ,IAAI,wBAAwB,QAAQ,MAAM,KAAK;AACvD,aAAO,QAAQ,OAAO;AAAA,IACxB;AASA,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,YAAY,IAAI,IAAI;AAE1B,cAAU,YAAY;AACnB,gBAAU,QAAQ;AAElB,YAAM,OAAO,MAAMC,KAAY;AAAA,QAC5B,MAAMC,MAAW,KAAK;AAAA,QACtB,KAAK,MAAM,OAAO;AAAA,MACxB,CAAI;AAED,YAAM,QAAQ,KAAK,CAAC;AACpB,gBAAU,QAAQ;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -15,7 +15,7 @@ const CardEvent = require("../blocks/CardEvent.vue.cjs");
|
|
|
15
15
|
const CardOrganization = require("../../../organizations/components/blocks/CardOrganization.vue.cjs");
|
|
16
16
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
17
17
|
const organizations = require("../../../organizations/store/organizations.cjs");
|
|
18
|
-
const
|
|
18
|
+
const memberships_store = require("../../../organizations/store/memberships.store.cjs");
|
|
19
19
|
const events = require("../../store/events.cjs");
|
|
20
20
|
const _hoisted_1 = { class: "bg-white" };
|
|
21
21
|
const _hoisted_2 = { class: "gap-medium pos-t-0 pos-sticky z-index-3 radius-medium" };
|
|
@@ -27,7 +27,7 @@ const _sfc_main = {
|
|
|
27
27
|
__name: "Events",
|
|
28
28
|
setup(__props) {
|
|
29
29
|
const handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {
|
|
30
|
-
|
|
30
|
+
memberships_store.default.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber);
|
|
31
31
|
};
|
|
32
32
|
vueRouter.useRoute();
|
|
33
33
|
const router = vueRouter.useRouter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/Events.vue"],"sourcesContent":["<template>\n <section class=\"bg-white\"> \n <div class=\"gap-medium pos-t-0 pos-sticky z-index-3 radius-medium \">\n <DatePicker\n @update:date=\"handleDatePickerChange\"\n :locale=\"$i18n.locale\"\n :options=\"{\n dateStart: 0,\n dateEnd: 30\n }\"\n class=\"bs-black-small br-b br-solid br-black-transp-10 o-hidden bg-white pd-l-zero pd-r-zero pd-thin\"\n />\n </div>\n\n <section class=\"pd-medium mobile:pd-thin radius-tr-medium radius-tl-medium bg-white\"> \n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n <h2\n class=\"mn-b-small\"\n >\n Events in <p @click=\"openCitySelectionPopup\" class=\"d-inline-block hover-bg-second hover-t-white cursor-pointer transition-elastic transition-timing-1 h2 pd-micro pd-t-thin pd-r-small pd-l-small br-solid br-1px br-black-transp-10 radius-extra\">Phuket</p>\n </h2>\n\n <Popup \n @close-popup=\"closeCitySelectionPopup\" \n :isPopupOpen=\"isCitySelectionPopup\"\n class=\"w-m-33r t-left pd-medium bg-white radius-semi\"\n\n >\n <CitySelection/>\n </Popup>\n\n <EventsHot \n :options=\"{\n }\"\n />\n </div>\n\n\n <FeaturedEvents class=\"mn-b-semi\"/>\n <SelectDate \n class=\"mn-b-semi\"\n @date-selected=\"handleDateSelection\" \n />\n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n\n <h3\n class=\"mn-b-small\"\n >\n Most Happening Organizers\n </h3>\n <Feed\n :showLoadMore=\"false\"\n :LoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Organization Found',\n description: 'Currently, there are no organization available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: organizations.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n sort: 'numberOfMemberships',\n contain: ['blogposts'],\n lookup: ['blogposts'],\n limit: 6\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-2 gap-thin\"\n >\n <CardOrganization \n v-for=\"organization in items\"\n :key=\"organization._id\" \n :organization=\"organization\"\n :user=\"auth.state.user\"\n :showProducts=\"false\"\n :showRating=\"false\"\n :showFeatured=\"false\"\n :showFollowers=\"false\"\n @updateMembership=\"handleMembershipUpdate\"\n class=\"pd-small w-100 pd-0 bg-light radius-semi o-hidden\"\n />\n </Feed>\n\n </div>\n \n <div class=\"gap-medium radius-medium\">\n\n <h3\n class=\"mn-b-small\"\n >\n All Events\n </h3>\n\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Events Today',\n description: 'Currently, there are no events available.'\n }\n }\"\n :store=\"{\n read: (options) => events.read(options),\n state: events.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n limit: 9\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-3 mobile:cols-1 gap-thin\"\n >\n <CardEvent \n @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n v-for=\"(event,index) in items\" \n :key=\"event._id\" \n :event=\"event\" \n :user=\"auth.state.user._id\" \n :type=\"'normal'\"\n class=\"bg-light radius-medium\"\n >\n </CardEvent>\n </Feed>\n\n </div>\n\n </section>\n </section>\n</template>\n\n<script setup=\"props\">\n import { computed, onMounted, watch, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue'\n import DatePicker from '@martyrs/src/components/DatePicker/DatePicker.vue'\n\n import CitySelection from '@martyrs/src/modules/globals/views/components/partials/CitySelection.vue';\n\n import FeaturedEvents from '@martyrs/src/modules/events/components/sections/FeaturedEvents.vue'; \n import SelectDate from '@martyrs/src/modules/events/components/sections/SelectDate.vue'; \n\n import EventsHot from '@martyrs/src/modules/events/components/sections/EventsHot.vue'; \n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n // Import state\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n import
|
|
1
|
+
{"version":3,"file":"Events.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/Events.vue"],"sourcesContent":["<template>\n <section class=\"bg-white\"> \n <div class=\"gap-medium pos-t-0 pos-sticky z-index-3 radius-medium \">\n <DatePicker\n @update:date=\"handleDatePickerChange\"\n :locale=\"$i18n.locale\"\n :options=\"{\n dateStart: 0,\n dateEnd: 30\n }\"\n class=\"bs-black-small br-b br-solid br-black-transp-10 o-hidden bg-white pd-l-zero pd-r-zero pd-thin\"\n />\n </div>\n\n <section class=\"pd-medium mobile:pd-thin radius-tr-medium radius-tl-medium bg-white\"> \n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n <h2\n class=\"mn-b-small\"\n >\n Events in <p @click=\"openCitySelectionPopup\" class=\"d-inline-block hover-bg-second hover-t-white cursor-pointer transition-elastic transition-timing-1 h2 pd-micro pd-t-thin pd-r-small pd-l-small br-solid br-1px br-black-transp-10 radius-extra\">Phuket</p>\n </h2>\n\n <Popup \n @close-popup=\"closeCitySelectionPopup\" \n :isPopupOpen=\"isCitySelectionPopup\"\n class=\"w-m-33r t-left pd-medium bg-white radius-semi\"\n\n >\n <CitySelection/>\n </Popup>\n\n <EventsHot \n :options=\"{\n }\"\n />\n </div>\n\n\n <FeaturedEvents class=\"mn-b-semi\"/>\n <SelectDate \n class=\"mn-b-semi\"\n @date-selected=\"handleDateSelection\" \n />\n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n\n <h3\n class=\"mn-b-small\"\n >\n Most Happening Organizers\n </h3>\n <Feed\n :showLoadMore=\"false\"\n :LoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Organization Found',\n description: 'Currently, there are no organization available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: organizations.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n sort: 'numberOfMemberships',\n contain: ['blogposts'],\n lookup: ['blogposts'],\n limit: 6\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-2 gap-thin\"\n >\n <CardOrganization \n v-for=\"organization in items\"\n :key=\"organization._id\" \n :organization=\"organization\"\n :user=\"auth.state.user\"\n :showProducts=\"false\"\n :showRating=\"false\"\n :showFeatured=\"false\"\n :showFollowers=\"false\"\n @updateMembership=\"handleMembershipUpdate\"\n class=\"pd-small w-100 pd-0 bg-light radius-semi o-hidden\"\n />\n </Feed>\n\n </div>\n \n <div class=\"gap-medium radius-medium\">\n\n <h3\n class=\"mn-b-small\"\n >\n All Events\n </h3>\n\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Events Today',\n description: 'Currently, there are no events available.'\n }\n }\"\n :store=\"{\n read: (options) => events.read(options),\n state: events.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n limit: 9\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-3 mobile:cols-1 gap-thin\"\n >\n <CardEvent \n @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n v-for=\"(event,index) in items\" \n :key=\"event._id\" \n :event=\"event\" \n :user=\"auth.state.user._id\" \n :type=\"'normal'\"\n class=\"bg-light radius-medium\"\n >\n </CardEvent>\n </Feed>\n\n </div>\n\n </section>\n </section>\n</template>\n\n<script setup=\"props\">\n import { computed, onMounted, watch, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue'\n import DatePicker from '@martyrs/src/components/DatePicker/DatePicker.vue'\n\n import CitySelection from '@martyrs/src/modules/globals/views/components/partials/CitySelection.vue';\n\n import FeaturedEvents from '@martyrs/src/modules/events/components/sections/FeaturedEvents.vue'; \n import SelectDate from '@martyrs/src/modules/events/components/sections/SelectDate.vue'; \n\n import EventsHot from '@martyrs/src/modules/events/components/sections/EventsHot.vue'; \n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n // Import state\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n import membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n\n import * as events from '@martyrs/src/modules/events/store/events.js'; \n\n const handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n };\n // State\n const route = useRoute();\n const router = useRouter();\n\n // let baseDate = new Date();\n // const formattedDate = formatDateForRouter(baseDate);\n \n // function formatDateForRouter(date) {\n // return `${date.getDate().toString().padStart(2, '0')}${(date.getMonth() + 1).toString().padStart(2, '0')}${date.getFullYear()}`;\n // }\n\n // if (route.query) {\n // const query = route.query;\n \n // const newFilterValue = {\n // tags: query.tags ? query.tags.split(',') : null,\n // date: query.date ? query.date : null,\n // };\n\n // events.state.filter = newFilterValue; // <-- Modified\n // } else {\n // const newFilterValue = {\n // date: formattedDate,\n // };\n\n // events.state.filter = newFilterValue;\n // }\n\n // watch(() => events.state.filter, (newFilterValue, oldFilterValue) => { // <-- Modified\n // const query = { ...route.query };\n\n // Object.keys(oldFilterValue).forEach(key => {\n // if (query[key]) {\n // delete query[key];\n // }\n // });\n\n // const newQueryValues = Object.fromEntries(\n // Object.entries(newFilterValue)\n // .filter(([key, value]) => (Array.isArray(value) && value.length > 0) || (typeof value === 'string' && value))\n // .map(([key, value]) => [key, Array.isArray(value) ? value.join(',') : value])\n // );\n // Object.assign(query, newQueryValues);\n\n // router.push({ query });\n // }, { deep: true })\n\n const isCitySelectionPopup = ref(false)\n\n function openCitySelectionPopup() {\n isCitySelectionPopup.value = true;\n }\n function closeCitySelectionPopup() {\n isCitySelectionPopup.value = false;\n }\n \n const handleDatePickerChange = (date) => {\n if (date) {\n // Убедимся, что у нас действительно объект даты\n const selectedDate = new Date(date);\n \n // Создаем начало дня в локальной временной зоне\n const startOfDay = new Date(selectedDate);\n startOfDay.setHours(0, 0, 0, 0);\n \n // Создаем конец дня в локальной временной зоне\n const endOfDay = new Date(selectedDate);\n endOfDay.setHours(23, 59, 59, 999);\n \n router.push({\n name: 'Events Search',\n query: {\n period: 'day',\n periodStart: startOfDay.toISOString(),\n periodEnd: endOfDay.toISOString()\n }\n });\n }\n };\n\n // Update the existing handleDateSelection method\n const handleDateSelection = (dateData) => {\n console.log('Selected date data:', dateData);\n router.push({\n name: 'Events Search',\n query: {\n periodStart: dateData.startDate.toISOString(),\n periodEnd: dateData.endDate.toISOString()\n }\n });\n };\n</script>\n\n<style lang=\"scss\">\n \n</style>\n"],"names":["membershipsStore","organizations.state","useRoute","useRouter","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuKE,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FA,gCAAiB,uBAAuBC,cAAAA,MAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;AAEcC,cAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AA6CxB,UAAM,uBAAuBC,IAAAA,IAAI,KAAK;AAEtC,aAAS,yBAAyB;AAChC,2BAAqB,QAAQ;AAAA,IAC/B;AACA,aAAS,0BAA0B;AACjC,2BAAqB,QAAQ;AAAA,IAC/B;AAEA,UAAM,yBAAyB,CAAC,SAAS;AACvC,UAAI,MAAM;AAER,cAAM,eAAe,IAAI,KAAK,IAAI;AAGlC,cAAM,aAAa,IAAI,KAAK,YAAY;AACxC,mBAAW,SAAS,GAAG,GAAG,GAAG,CAAC;AAG9B,cAAM,WAAW,IAAI,KAAK,YAAY;AACtC,iBAAS,SAAS,IAAI,IAAI,IAAI,GAAG;AAEjC,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,aAAa,WAAW,YAAW;AAAA,YACnC,WAAW,SAAS,YAAW;AAAA,UACzC;AAAA,QACA,CAAO;AAAA,MACH;AAAA,IACF;AAGA,UAAM,sBAAsB,CAAC,aAAa;AACxC,cAAQ,IAAI,uBAAuB,QAAQ;AAC3C,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa,SAAS,UAAU,YAAW;AAAA,UAC3C,WAAW,SAAS,QAAQ,YAAW;AAAA,QAC/C;AAAA,MACA,CAAK;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -13,7 +13,7 @@ import _sfc_main$8 from "../blocks/CardEvent.vue.js";
|
|
|
13
13
|
import _sfc_main$7 from "../../../organizations/components/blocks/CardOrganization.vue.js";
|
|
14
14
|
import { state } from "../../../auth/views/store/auth.js";
|
|
15
15
|
import { state as state$1, actions } from "../../../organizations/store/organizations.js";
|
|
16
|
-
import
|
|
16
|
+
import membershipsStore from "../../../organizations/store/memberships.store.js";
|
|
17
17
|
import { state as state$2, read } from "../../store/events.js";
|
|
18
18
|
const _hoisted_1 = { class: "bg-white" };
|
|
19
19
|
const _hoisted_2 = { class: "gap-medium pos-t-0 pos-sticky z-index-3 radius-medium" };
|
|
@@ -25,7 +25,7 @@ const _sfc_main = {
|
|
|
25
25
|
__name: "Events",
|
|
26
26
|
setup(__props) {
|
|
27
27
|
const handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {
|
|
28
|
-
|
|
28
|
+
membershipsStore.handleMembershipUpdate(state$1.current, membership, status, target, statusName, statusNumber);
|
|
29
29
|
};
|
|
30
30
|
useRoute();
|
|
31
31
|
const router = useRouter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.vue.js","sources":["../../../../../../../src/modules/events/components/pages/Events.vue"],"sourcesContent":["<template>\n <section class=\"bg-white\"> \n <div class=\"gap-medium pos-t-0 pos-sticky z-index-3 radius-medium \">\n <DatePicker\n @update:date=\"handleDatePickerChange\"\n :locale=\"$i18n.locale\"\n :options=\"{\n dateStart: 0,\n dateEnd: 30\n }\"\n class=\"bs-black-small br-b br-solid br-black-transp-10 o-hidden bg-white pd-l-zero pd-r-zero pd-thin\"\n />\n </div>\n\n <section class=\"pd-medium mobile:pd-thin radius-tr-medium radius-tl-medium bg-white\"> \n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n <h2\n class=\"mn-b-small\"\n >\n Events in <p @click=\"openCitySelectionPopup\" class=\"d-inline-block hover-bg-second hover-t-white cursor-pointer transition-elastic transition-timing-1 h2 pd-micro pd-t-thin pd-r-small pd-l-small br-solid br-1px br-black-transp-10 radius-extra\">Phuket</p>\n </h2>\n\n <Popup \n @close-popup=\"closeCitySelectionPopup\" \n :isPopupOpen=\"isCitySelectionPopup\"\n class=\"w-m-33r t-left pd-medium bg-white radius-semi\"\n\n >\n <CitySelection/>\n </Popup>\n\n <EventsHot \n :options=\"{\n }\"\n />\n </div>\n\n\n <FeaturedEvents class=\"mn-b-semi\"/>\n <SelectDate \n class=\"mn-b-semi\"\n @date-selected=\"handleDateSelection\" \n />\n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n\n <h3\n class=\"mn-b-small\"\n >\n Most Happening Organizers\n </h3>\n <Feed\n :showLoadMore=\"false\"\n :LoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Organization Found',\n description: 'Currently, there are no organization available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: organizations.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n sort: 'numberOfMemberships',\n contain: ['blogposts'],\n lookup: ['blogposts'],\n limit: 6\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-2 gap-thin\"\n >\n <CardOrganization \n v-for=\"organization in items\"\n :key=\"organization._id\" \n :organization=\"organization\"\n :user=\"auth.state.user\"\n :showProducts=\"false\"\n :showRating=\"false\"\n :showFeatured=\"false\"\n :showFollowers=\"false\"\n @updateMembership=\"handleMembershipUpdate\"\n class=\"pd-small w-100 pd-0 bg-light radius-semi o-hidden\"\n />\n </Feed>\n\n </div>\n \n <div class=\"gap-medium radius-medium\">\n\n <h3\n class=\"mn-b-small\"\n >\n All Events\n </h3>\n\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Events Today',\n description: 'Currently, there are no events available.'\n }\n }\"\n :store=\"{\n read: (options) => events.read(options),\n state: events.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n limit: 9\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-3 mobile:cols-1 gap-thin\"\n >\n <CardEvent \n @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n v-for=\"(event,index) in items\" \n :key=\"event._id\" \n :event=\"event\" \n :user=\"auth.state.user._id\" \n :type=\"'normal'\"\n class=\"bg-light radius-medium\"\n >\n </CardEvent>\n </Feed>\n\n </div>\n\n </section>\n </section>\n</template>\n\n<script setup=\"props\">\n import { computed, onMounted, watch, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue'\n import DatePicker from '@martyrs/src/components/DatePicker/DatePicker.vue'\n\n import CitySelection from '@martyrs/src/modules/globals/views/components/partials/CitySelection.vue';\n\n import FeaturedEvents from '@martyrs/src/modules/events/components/sections/FeaturedEvents.vue'; \n import SelectDate from '@martyrs/src/modules/events/components/sections/SelectDate.vue'; \n\n import EventsHot from '@martyrs/src/modules/events/components/sections/EventsHot.vue'; \n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n // Import state\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n import
|
|
1
|
+
{"version":3,"file":"Events.vue.js","sources":["../../../../../../../src/modules/events/components/pages/Events.vue"],"sourcesContent":["<template>\n <section class=\"bg-white\"> \n <div class=\"gap-medium pos-t-0 pos-sticky z-index-3 radius-medium \">\n <DatePicker\n @update:date=\"handleDatePickerChange\"\n :locale=\"$i18n.locale\"\n :options=\"{\n dateStart: 0,\n dateEnd: 30\n }\"\n class=\"bs-black-small br-b br-solid br-black-transp-10 o-hidden bg-white pd-l-zero pd-r-zero pd-thin\"\n />\n </div>\n\n <section class=\"pd-medium mobile:pd-thin radius-tr-medium radius-tl-medium bg-white\"> \n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n <h2\n class=\"mn-b-small\"\n >\n Events in <p @click=\"openCitySelectionPopup\" class=\"d-inline-block hover-bg-second hover-t-white cursor-pointer transition-elastic transition-timing-1 h2 pd-micro pd-t-thin pd-r-small pd-l-small br-solid br-1px br-black-transp-10 radius-extra\">Phuket</p>\n </h2>\n\n <Popup \n @close-popup=\"closeCitySelectionPopup\" \n :isPopupOpen=\"isCitySelectionPopup\"\n class=\"w-m-33r t-left pd-medium bg-white radius-semi\"\n\n >\n <CitySelection/>\n </Popup>\n\n <EventsHot \n :options=\"{\n }\"\n />\n </div>\n\n\n <FeaturedEvents class=\"mn-b-semi\"/>\n <SelectDate \n class=\"mn-b-semi\"\n @date-selected=\"handleDateSelection\" \n />\n\n <div class=\"gap-medium radius-medium mn-b-semi\">\n\n <h3\n class=\"mn-b-small\"\n >\n Most Happening Organizers\n </h3>\n <Feed\n :showLoadMore=\"false\"\n :LoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Organization Found',\n description: 'Currently, there are no organization available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: organizations.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n sort: 'numberOfMemberships',\n contain: ['blogposts'],\n lookup: ['blogposts'],\n limit: 6\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-2 gap-thin\"\n >\n <CardOrganization \n v-for=\"organization in items\"\n :key=\"organization._id\" \n :organization=\"organization\"\n :user=\"auth.state.user\"\n :showProducts=\"false\"\n :showRating=\"false\"\n :showFeatured=\"false\"\n :showFollowers=\"false\"\n @updateMembership=\"handleMembershipUpdate\"\n class=\"pd-small w-100 pd-0 bg-light radius-semi o-hidden\"\n />\n </Feed>\n\n </div>\n \n <div class=\"gap-medium radius-medium\">\n\n <h3\n class=\"mn-b-small\"\n >\n All Events\n </h3>\n\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Events Today',\n description: 'Currently, there are no events available.'\n }\n }\"\n :store=\"{\n read: (options) => events.read(options),\n state: events.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n limit: 9\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-3 mobile:cols-1 gap-thin\"\n >\n <CardEvent \n @click=\"$router.push({name: 'Event', params: {url: event.url}})\" \n v-for=\"(event,index) in items\" \n :key=\"event._id\" \n :event=\"event\" \n :user=\"auth.state.user._id\" \n :type=\"'normal'\"\n class=\"bg-light radius-medium\"\n >\n </CardEvent>\n </Feed>\n\n </div>\n\n </section>\n </section>\n</template>\n\n<script setup=\"props\">\n import { computed, onMounted, watch, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue'\n import DatePicker from '@martyrs/src/components/DatePicker/DatePicker.vue'\n\n import CitySelection from '@martyrs/src/modules/globals/views/components/partials/CitySelection.vue';\n\n import FeaturedEvents from '@martyrs/src/modules/events/components/sections/FeaturedEvents.vue'; \n import SelectDate from '@martyrs/src/modules/events/components/sections/SelectDate.vue'; \n\n import EventsHot from '@martyrs/src/modules/events/components/sections/EventsHot.vue'; \n import CardEvent from '@martyrs/src/modules/events/components/blocks/CardEvent.vue';\n import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n // Import state\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n import membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n\n import * as events from '@martyrs/src/modules/events/store/events.js'; \n\n const handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n };\n // State\n const route = useRoute();\n const router = useRouter();\n\n // let baseDate = new Date();\n // const formattedDate = formatDateForRouter(baseDate);\n \n // function formatDateForRouter(date) {\n // return `${date.getDate().toString().padStart(2, '0')}${(date.getMonth() + 1).toString().padStart(2, '0')}${date.getFullYear()}`;\n // }\n\n // if (route.query) {\n // const query = route.query;\n \n // const newFilterValue = {\n // tags: query.tags ? query.tags.split(',') : null,\n // date: query.date ? query.date : null,\n // };\n\n // events.state.filter = newFilterValue; // <-- Modified\n // } else {\n // const newFilterValue = {\n // date: formattedDate,\n // };\n\n // events.state.filter = newFilterValue;\n // }\n\n // watch(() => events.state.filter, (newFilterValue, oldFilterValue) => { // <-- Modified\n // const query = { ...route.query };\n\n // Object.keys(oldFilterValue).forEach(key => {\n // if (query[key]) {\n // delete query[key];\n // }\n // });\n\n // const newQueryValues = Object.fromEntries(\n // Object.entries(newFilterValue)\n // .filter(([key, value]) => (Array.isArray(value) && value.length > 0) || (typeof value === 'string' && value))\n // .map(([key, value]) => [key, Array.isArray(value) ? value.join(',') : value])\n // );\n // Object.assign(query, newQueryValues);\n\n // router.push({ query });\n // }, { deep: true })\n\n const isCitySelectionPopup = ref(false)\n\n function openCitySelectionPopup() {\n isCitySelectionPopup.value = true;\n }\n function closeCitySelectionPopup() {\n isCitySelectionPopup.value = false;\n }\n \n const handleDatePickerChange = (date) => {\n if (date) {\n // Убедимся, что у нас действительно объект даты\n const selectedDate = new Date(date);\n \n // Создаем начало дня в локальной временной зоне\n const startOfDay = new Date(selectedDate);\n startOfDay.setHours(0, 0, 0, 0);\n \n // Создаем конец дня в локальной временной зоне\n const endOfDay = new Date(selectedDate);\n endOfDay.setHours(23, 59, 59, 999);\n \n router.push({\n name: 'Events Search',\n query: {\n period: 'day',\n periodStart: startOfDay.toISOString(),\n periodEnd: endOfDay.toISOString()\n }\n });\n }\n };\n\n // Update the existing handleDateSelection method\n const handleDateSelection = (dateData) => {\n console.log('Selected date data:', dateData);\n router.push({\n name: 'Events Search',\n query: {\n periodStart: dateData.startDate.toISOString(),\n periodEnd: dateData.endDate.toISOString()\n }\n });\n };\n</script>\n\n<style lang=\"scss\">\n \n</style>\n"],"names":["organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuKE,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBA,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;AAEc,aAAQ;AACtB,UAAM,SAAS,UAAS;AA6CxB,UAAM,uBAAuB,IAAI,KAAK;AAEtC,aAAS,yBAAyB;AAChC,2BAAqB,QAAQ;AAAA,IAC/B;AACA,aAAS,0BAA0B;AACjC,2BAAqB,QAAQ;AAAA,IAC/B;AAEA,UAAM,yBAAyB,CAAC,SAAS;AACvC,UAAI,MAAM;AAER,cAAM,eAAe,IAAI,KAAK,IAAI;AAGlC,cAAM,aAAa,IAAI,KAAK,YAAY;AACxC,mBAAW,SAAS,GAAG,GAAG,GAAG,CAAC;AAG9B,cAAM,WAAW,IAAI,KAAK,YAAY;AACtC,iBAAS,SAAS,IAAI,IAAI,IAAI,GAAG;AAEjC,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,aAAa,WAAW,YAAW;AAAA,YACnC,WAAW,SAAS,YAAW;AAAA,UACzC;AAAA,QACA,CAAO;AAAA,MACH;AAAA,IACF;AAGA,UAAM,sBAAsB,CAAC,aAAa;AACxC,cAAQ,IAAI,uBAAuB,QAAQ;AAC3C,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa,SAAS,UAAU,YAAW;AAAA,UAC3C,WAAW,SAAS,QAAQ,YAAW;AAAA,QAC/C;AAAA,MACA,CAAK;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
;/* empty css */
|
|
6
6
|
const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
7
|
-
;/* empty css
|
|
7
|
+
;/* empty css */
|
|
8
8
|
const Chips = require("../../../../components/Chips/Chips.vue2.cjs");
|
|
9
9
|
;/* empty css */
|
|
10
10
|
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
@@ -2,7 +2,7 @@ import { ref, createElementBlock, openBlock, createVNode, unref, isRef, withCtx,
|
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import _sfc_main$8 from "../../../../components/Button/Button.vue.js";
|
|
5
|
-
/* empty css
|
|
5
|
+
/* empty css */
|
|
6
6
|
import _sfc_main$4 from "../../../../components/Chips/Chips.vue2.js";
|
|
7
7
|
/* empty css */
|
|
8
8
|
import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
|
|
@@ -11,7 +11,7 @@ const FormReport = require("../../../../reports/components/sections/FormReport.v
|
|
|
11
11
|
;/* empty css */
|
|
12
12
|
;/* empty css */
|
|
13
13
|
require("../../../../auth/views/store/auth.cjs");
|
|
14
|
-
require("../../../../organizations/store/memberships.cjs");
|
|
14
|
+
require("../../../../organizations/store/memberships.store.cjs");
|
|
15
15
|
const PhotoStack = require("../elements/PhotoStack.vue.cjs");
|
|
16
16
|
const _hoisted_1 = {
|
|
17
17
|
key: 0,
|
|
@@ -9,7 +9,7 @@ import _sfc_main$5 from "../../../../reports/components/sections/FormReport.vue.
|
|
|
9
9
|
/* empty css */
|
|
10
10
|
/* empty css */
|
|
11
11
|
import "../../../../auth/views/store/auth.js";
|
|
12
|
-
import "../../../../organizations/store/memberships.js";
|
|
12
|
+
import "../../../../organizations/store/memberships.store.js";
|
|
13
13
|
import _sfc_main$2 from "../elements/PhotoStack.vue.js";
|
|
14
14
|
const _hoisted_1 = {
|
|
15
15
|
key: 0,
|
|
@@ -8,7 +8,7 @@ const shopcart = require("../../../../orders/store/shopcart.cjs");
|
|
|
8
8
|
const auth = require("../../../../auth/views/store/auth.cjs");
|
|
9
9
|
const NotificationBadge = require("../../../../notifications/components/elements/NotificationBadge.vue.cjs");
|
|
10
10
|
const Button = require("../../../../../components/Button/Button.vue.cjs");
|
|
11
|
-
const Select = require("../../../../../components/Select/Select.
|
|
11
|
+
const Select = require("../../../../../components/Select/Select.vue.cjs");
|
|
12
12
|
const IconShopcart = require("../../../../icons/entities/IconShopcart.vue.cjs");
|
|
13
13
|
const IconProfile = require("../../../../icons/entities/IconProfile.vue.cjs");
|
|
14
14
|
const IconSearch = require("../../../../icons/navigation/IconSearch.vue.cjs");
|
|
@@ -6,7 +6,7 @@ import { actions, getters } from "../../../../orders/store/shopcart.js";
|
|
|
6
6
|
import { state as state$1 } from "../../../../auth/views/store/auth.js";
|
|
7
7
|
import NotificationBadge from "../../../../notifications/components/elements/NotificationBadge.vue.js";
|
|
8
8
|
import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
|
|
9
|
-
import Select from "../../../../../components/Select/Select.
|
|
9
|
+
import Select from "../../../../../components/Select/Select.vue.js";
|
|
10
10
|
import _sfc_main$3 from "../../../../icons/entities/IconShopcart.vue.js";
|
|
11
11
|
import _sfc_main$4 from "../../../../icons/entities/IconProfile.vue.js";
|
|
12
12
|
import _sfc_main$2 from "../../../../icons/navigation/IconSearch.vue.js";
|
package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
const Address = require("../../../../../components/Address/Address.
|
|
5
|
-
const LocationMarker = require("../../../../../components/LocationMarker/LocationMarker.
|
|
4
|
+
const Address = require("../../../../../components/Address/Address.vue.cjs");
|
|
5
|
+
const LocationMarker = require("../../../../../components/LocationMarker/LocationMarker.vue.cjs");
|
|
6
6
|
const vueRouter = require("vue-router");
|
|
7
7
|
const vueI18n = require("vue-i18n");
|
|
8
8
|
const globals = require("../../store/globals.cjs");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createBlock, toDisplayString, unref } from "vue";
|
|
2
|
-
import _sfc_main$1 from "../../../../../components/Address/Address.
|
|
3
|
-
import _sfc_main$2 from "../../../../../components/LocationMarker/LocationMarker.
|
|
2
|
+
import _sfc_main$1 from "../../../../../components/Address/Address.vue.js";
|
|
3
|
+
import _sfc_main$2 from "../../../../../components/LocationMarker/LocationMarker.vue.js";
|
|
4
4
|
import { useRoute, useRouter } from "vue-router";
|
|
5
5
|
import { useI18n } from "vue-i18n";
|
|
6
6
|
import { state } from "../../store/globals.js";
|
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const emblaCarouselVue_esm = require("../../../../../../../node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs");
|
|
6
6
|
const IconBell = require("../../../../icons/entities/IconBell.vue.cjs");
|
|
7
|
-
const IconAddress =
|
|
7
|
+
const IconAddress = require("../../../../icons/entities/IconAddress.vue.cjs");
|
|
8
8
|
const index = require("../../../../../../../node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.2.0/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.cjs");
|
|
9
9
|
;/* empty css */
|
|
10
10
|
;/* empty css */
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const globals = require("../store/globals.cjs");
|
|
4
|
+
const vue = require("vue");
|
|
4
5
|
function useGlobalMixins() {
|
|
6
|
+
const isModuleInstalled = (moduleName) => {
|
|
7
|
+
const store = vue.inject("store");
|
|
8
|
+
if (!store || !store.modules) return false;
|
|
9
|
+
return store.modules.includes(moduleName);
|
|
10
|
+
};
|
|
5
11
|
const isAdmin = (roles) => {
|
|
6
12
|
if (roles) {
|
|
7
13
|
const isAdmin2 = roles.includes("ROLE_ADMIN") ? roles.includes("ROLE_ADMIN") : false;
|
|
@@ -218,6 +224,7 @@ function useGlobalMixins() {
|
|
|
218
224
|
};
|
|
219
225
|
const isXXLDesktop = () => isMediaMin("--xxl-desktop-min");
|
|
220
226
|
return {
|
|
227
|
+
isModuleInstalled,
|
|
221
228
|
isAdmin,
|
|
222
229
|
hasAccess,
|
|
223
230
|
returnCurrency,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixins.cjs","sources":["../../../../../../../src/modules/globals/views/mixins/mixins.js"],"sourcesContent":["import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n\n// useGlobalMixins.js\nexport function useGlobalMixins() {\n const isAdmin = roles => {\n if (roles) {\n const isAdmin = roles.includes('ROLE_ADMIN') ? roles.includes('ROLE_ADMIN') : false;\n\n if (isAdmin !== true) {\n return false;\n }\n\n return true;\n } else {\n return false;\n }\n };\n\n const hasAccess = (organizationId, rightCategory = null, rightType = null, accesses, roles) => {\n // Если пользователь админ, то сразу даем доступ\n if (isAdmin(roles)) {\n return true;\n }\n\n const accessArray = accesses;\n\n // Проверяем существование записи для организации\n const organizationAccess = accessArray.find(access => access.organization === organizationId);\n\n // Если переданы только organizationId и accesses - проверяем только членство\n if (rightCategory === null && rightType === null) {\n return Boolean(organizationAccess); // если организация найдена - значит член\n }\n\n // Для проверки прав сначала проверяем существование организации\n if (!organizationAccess) {\n return false;\n }\n\n const categoryAccess = organizationAccess.rights[rightCategory];\n if (!categoryAccess) {\n return false;\n }\n return categoryAccess[rightType] === true;\n };\n\n const returnCurrency = () => {\n const currency = globals.state.options.currency || '$';\n return currency;\n };\n\n const formatPrice = number => {\n try {\n if (number == null) {\n throw new TypeError('formatPrice: ожидается число, но получено null или undefined');\n }\n\n const currency = returnCurrency();\n const absNumber = Math.abs(number)\n .toFixed(2)\n .replace('.', ',')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n const sign = number < 0 ? '-' : '';\n return `${sign} ${currency}${absNumber}`;\n } catch (err) {\n console.error(err);\n return 'null';\n }\n };\n \n const replaceClasses = (original = '', map = null) => {\n if (map == null && typeof original !== 'string') return '';\n if (typeof map === 'string') {\n const orig = typeof original === 'string' ? original.trim().split(/\\s+/) : [];\n const next = map.trim().split(/\\s+/);\n const replaceSet = new Set(next);\n const replaced = orig.map(cls => (replaceSet.has(cls) ? next.find(c => c !== cls) || cls : cls));\n const extra = next.filter(c => !orig.includes(c));\n return [...new Set([...replaced, ...extra])].join(' ');\n }\n\n if (typeof map === 'object' && map !== null) {\n const orig = typeof original === 'string' ? original.trim().split(/\\s+/) : [];\n return orig.map(cls => map[cls] ?? cls).join(' ');\n }\n\n return typeof original === 'string' ? original.trim() : '';\n };\n \n\n const formatDate = (d, options = {}) => {\n var fixedDate = new Date(d);\n\n // Определяем параметры локализации\n const formatOptions = {\n year: 'numeric',\n month: 'long', // название месяца\n day: '2-digit', // день с ведущим нулем\n hour: '2-digit', // часы с ведущим нулем\n minute: '2-digit', // минуты с ведущим нулем\n hour12: false, // 24-часовой формат времени\n ...options, // дополнительные настройки\n };\n\n // Язык, по умолчанию \"ru\" (русский)\n const locale = options.language || 'ru';\n\n // Используем Intl.DateTimeFormat для локализации\n const dateFormatter = new Intl.DateTimeFormat(locale, formatOptions);\n\n var format = {\n dateOnly: options.dateOnly || false,\n timeOnly: options.timeOnly || false,\n dayMonth: options.dayMonth || false,\n dayTime: options.dayTime || false,\n monthYear: options.monthYear || false,\n yearOnly: options.yearOnly || false,\n custom: options.custom || '',\n monthName: options.monthName || false, // Новый параметр для вывода названия месяца\n language: options.language || 'ru', // Язык, по умолчанию русский\n };\n\n if (format.dateOnly) {\n return dateFormatter.format(fixedDate).split(',')[0]; // Выводим только дату\n } else if (format.timeOnly) {\n return new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(fixedDate); // Выводим только время\n } else if (format.dayMonth) {\n return new Intl.DateTimeFormat(locale, { day: '2-digit', month: 'short' }).format(fixedDate); // день и месяц\n } else if (format.dayTime) {\n return new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(fixedDate); // день и время\n } else if (format.monthYear) {\n return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(fixedDate); // месяц и год\n } else if (format.yearOnly) {\n return new Intl.DateTimeFormat(locale, { year: 'numeric' }).format(fixedDate); // только год\n } else if (format.custom) {\n // Для пользовательского формата с подстановкой\n return format.custom\n .replace('yyyy', fixedDate.getFullYear())\n .replace('mm', ('0' + (fixedDate.getMonth() + 1)).slice(-2)) // добавление ведущего нуля\n .replace('dd', ('0' + fixedDate.getDate()).slice(-2)) // добавление ведущего нуля\n .replace('hh', ('0' + fixedDate.getHours()).slice(-2)) // добавление ведущего нуля\n .replace('min', ('0' + fixedDate.getMinutes()).slice(-2)); // добавление ведущего нуля\n }\n\n // Вернуть полную дату в стандартном формате\n return dateFormatter.format(fixedDate);\n };\n\n const formateText = (text, maxLength = 16) => {\n // Return empty string if text is undefined or null\n if (!text) return '';\n\n // If text is shorter than or equal to maxLength, return it as is\n if (text.length <= maxLength) {\n return text;\n }\n\n // Otherwise truncate and add ellipsis\n return text.substring(0, maxLength) + '...';\n };\n\n const normalizeUrlParam = param => {\n if (!param) param = '';\n\n return param\n .toLowerCase()\n .replace(/ /g, '-')\n .replace(/[^a-z0-9-]/g, '');\n };\n\n const joinArrayToUrl = arr => {\n return arr.join('/');\n };\n\n function generateFilters(selectedFilters) {\n const filters = [];\n\n // Process all selected filters\n for (const [key, values] of Object.entries(selectedFilters)) {\n if (values && values.length > 0) {\n // Skip special filters (these are handled separately)\n if (key !== 'prices' && key !== 'delivery' && key !== 'categories') {\n filters.push({\n parameter: key,\n caseSensitive: false,\n values: Array.isArray(values) ? values : [values],\n });\n }\n }\n }\n\n return filters.length > 0 ? JSON.stringify(filters) : undefined;\n }\n\n const getMarketplaceLink = (categories, country, state, city) => {\n let country_normalized = country ? normalizeUrlParam(country) : '';\n let state_normalized = state ? normalizeUrlParam(state) : '';\n let city_normalized = city ? normalizeUrlParam(city) : '';\n\n let base = '/marketplace';\n base += country_normalized ? `/${country_normalized}` : '';\n base += country_normalized && state_normalized ? `/${state_normalized}` : '';\n base += country_normalized && state_normalized && city_normalized ? `/${city_normalized}` : '';\n\n if (categories && categories.length) {\n base += `?categories=${categories.join(',')}`;\n }\n\n return base;\n };\n\n const getSpotsLink = (country, state, city) => {\n let country_normalized = country ? normalizeUrlParam(country) : '';\n let state_normalized = state ? normalizeUrlParam(state) : '';\n let city_normalized = city ? normalizeUrlParam(city) : '';\n\n let base = '/spots';\n base += country_normalized ? `/${country_normalized}` : '';\n base += country_normalized && state_normalized ? `/${state_normalized}` : '';\n base += country_normalized && state_normalized && city_normalized ? `/${city_normalized}` : '';\n\n return base;\n };\n\n const isClientSide = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n const getCssVar = name => {\n if (!isClientSide) return ''; // SSR fallback\n return getComputedStyle(document.documentElement).getPropertyValue(name).trim();\n };\n\n const matchMediaSafe = query => {\n if (!isClientSide) return { matches: false };\n return window.matchMedia(query);\n };\n\n const isMediaMax = varName => {\n const maxWidth = getCssVar(varName);\n return matchMediaSafe(`(max-width: ${maxWidth})`).matches;\n };\n\n const isMediaMin = varName => {\n const minWidth = getCssVar(varName);\n return matchMediaSafe(`(min-width: ${minWidth})`).matches;\n };\n\n const isFlipPhone = () => isMediaMax('--flip-phone-max');\n const isPhone = () => isMediaMax('--phone-landscape-max');\n\n const isTabletPortrait = () => {\n const min = getCssVar('--tablet-portrait-min');\n const max = getCssVar('--tablet-portrait-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isTabletLandscape = () => {\n const min = getCssVar('--tablet-landscape-min');\n const max = getCssVar('--tablet-landscape-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isTablet = () => isTabletPortrait() || isTabletLandscape();\n\n const isDesktop = () => {\n const min = getCssVar('--desktop-min');\n const max = getCssVar('--desktop-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isXLDesktop = () => {\n const min = getCssVar('--xl-desktop-min');\n const max = getCssVar('--xl-desktop-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isXXLDesktop = () => isMediaMin('--xxl-desktop-min');\n\n return {\n isAdmin,\n hasAccess,\n returnCurrency,\n formatPrice,\n formatDate,\n formateText,\n replaceClasses,\n normalizeUrlParam,\n joinArrayToUrl,\n getMarketplaceLink,\n getSpotsLink,\n generateFilters,\n // Брейкпоинты\n getCssVar,\n isMediaMax,\n isMediaMin,\n isFlipPhone,\n isPhone,\n isTabletPortrait,\n isTabletLandscape,\n isTablet,\n isDesktop,\n isXLDesktop,\n isXXLDesktop,\n };\n}\n\n// Экспорт для глобальной регистрации\nexport const globalMixins = {\n methods: useGlobalMixins(),\n};\n"],"names":["isAdmin","globals.state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mixins.cjs","sources":["../../../../../../../src/modules/globals/views/mixins/mixins.js"],"sourcesContent":["import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport { inject } from 'vue';\n\n// useGlobalMixins.js\nexport function useGlobalMixins() {\n const isModuleInstalled = (moduleName) => {\n const store = inject('store');\n if (!store || !store.modules) return false;\n return store.modules.includes(moduleName);\n };\n const isAdmin = roles => {\n if (roles) {\n const isAdmin = roles.includes('ROLE_ADMIN') ? roles.includes('ROLE_ADMIN') : false;\n\n if (isAdmin !== true) {\n return false;\n }\n\n return true;\n } else {\n return false;\n }\n };\n\n const hasAccess = (organizationId, rightCategory = null, rightType = null, accesses, roles) => {\n // Если пользователь админ, то сразу даем доступ\n if (isAdmin(roles)) {\n return true;\n }\n\n const accessArray = accesses;\n\n // Проверяем существование записи для организации\n const organizationAccess = accessArray.find(access => access.organization === organizationId);\n\n // Если переданы только organizationId и accesses - проверяем только членство\n if (rightCategory === null && rightType === null) {\n return Boolean(organizationAccess); // если организация найдена - значит член\n }\n\n // Для проверки прав сначала проверяем существование организации\n if (!organizationAccess) {\n return false;\n }\n\n const categoryAccess = organizationAccess.rights[rightCategory];\n if (!categoryAccess) {\n return false;\n }\n return categoryAccess[rightType] === true;\n };\n\n const returnCurrency = () => {\n const currency = globals.state.options.currency || '$';\n return currency;\n };\n\n const formatPrice = number => {\n try {\n if (number == null) {\n throw new TypeError('formatPrice: ожидается число, но получено null или undefined');\n }\n\n const currency = returnCurrency();\n const absNumber = Math.abs(number)\n .toFixed(2)\n .replace('.', ',')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n const sign = number < 0 ? '-' : '';\n return `${sign} ${currency}${absNumber}`;\n } catch (err) {\n console.error(err);\n return 'null';\n }\n };\n \n const replaceClasses = (original = '', map = null) => {\n if (map == null && typeof original !== 'string') return '';\n if (typeof map === 'string') {\n const orig = typeof original === 'string' ? original.trim().split(/\\s+/) : [];\n const next = map.trim().split(/\\s+/);\n const replaceSet = new Set(next);\n const replaced = orig.map(cls => (replaceSet.has(cls) ? next.find(c => c !== cls) || cls : cls));\n const extra = next.filter(c => !orig.includes(c));\n return [...new Set([...replaced, ...extra])].join(' ');\n }\n\n if (typeof map === 'object' && map !== null) {\n const orig = typeof original === 'string' ? original.trim().split(/\\s+/) : [];\n return orig.map(cls => map[cls] ?? cls).join(' ');\n }\n\n return typeof original === 'string' ? original.trim() : '';\n };\n \n\n const formatDate = (d, options = {}) => {\n var fixedDate = new Date(d);\n\n // Определяем параметры локализации\n const formatOptions = {\n year: 'numeric',\n month: 'long', // название месяца\n day: '2-digit', // день с ведущим нулем\n hour: '2-digit', // часы с ведущим нулем\n minute: '2-digit', // минуты с ведущим нулем\n hour12: false, // 24-часовой формат времени\n ...options, // дополнительные настройки\n };\n\n // Язык, по умолчанию \"ru\" (русский)\n const locale = options.language || 'ru';\n\n // Используем Intl.DateTimeFormat для локализации\n const dateFormatter = new Intl.DateTimeFormat(locale, formatOptions);\n\n var format = {\n dateOnly: options.dateOnly || false,\n timeOnly: options.timeOnly || false,\n dayMonth: options.dayMonth || false,\n dayTime: options.dayTime || false,\n monthYear: options.monthYear || false,\n yearOnly: options.yearOnly || false,\n custom: options.custom || '',\n monthName: options.monthName || false, // Новый параметр для вывода названия месяца\n language: options.language || 'ru', // Язык, по умолчанию русский\n };\n\n if (format.dateOnly) {\n return dateFormatter.format(fixedDate).split(',')[0]; // Выводим только дату\n } else if (format.timeOnly) {\n return new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(fixedDate); // Выводим только время\n } else if (format.dayMonth) {\n return new Intl.DateTimeFormat(locale, { day: '2-digit', month: 'short' }).format(fixedDate); // день и месяц\n } else if (format.dayTime) {\n return new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(fixedDate); // день и время\n } else if (format.monthYear) {\n return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(fixedDate); // месяц и год\n } else if (format.yearOnly) {\n return new Intl.DateTimeFormat(locale, { year: 'numeric' }).format(fixedDate); // только год\n } else if (format.custom) {\n // Для пользовательского формата с подстановкой\n return format.custom\n .replace('yyyy', fixedDate.getFullYear())\n .replace('mm', ('0' + (fixedDate.getMonth() + 1)).slice(-2)) // добавление ведущего нуля\n .replace('dd', ('0' + fixedDate.getDate()).slice(-2)) // добавление ведущего нуля\n .replace('hh', ('0' + fixedDate.getHours()).slice(-2)) // добавление ведущего нуля\n .replace('min', ('0' + fixedDate.getMinutes()).slice(-2)); // добавление ведущего нуля\n }\n\n // Вернуть полную дату в стандартном формате\n return dateFormatter.format(fixedDate);\n };\n\n const formateText = (text, maxLength = 16) => {\n // Return empty string if text is undefined or null\n if (!text) return '';\n\n // If text is shorter than or equal to maxLength, return it as is\n if (text.length <= maxLength) {\n return text;\n }\n\n // Otherwise truncate and add ellipsis\n return text.substring(0, maxLength) + '...';\n };\n\n const normalizeUrlParam = param => {\n if (!param) param = '';\n\n return param\n .toLowerCase()\n .replace(/ /g, '-')\n .replace(/[^a-z0-9-]/g, '');\n };\n\n const joinArrayToUrl = arr => {\n return arr.join('/');\n };\n\n function generateFilters(selectedFilters) {\n const filters = [];\n\n // Process all selected filters\n for (const [key, values] of Object.entries(selectedFilters)) {\n if (values && values.length > 0) {\n // Skip special filters (these are handled separately)\n if (key !== 'prices' && key !== 'delivery' && key !== 'categories') {\n filters.push({\n parameter: key,\n caseSensitive: false,\n values: Array.isArray(values) ? values : [values],\n });\n }\n }\n }\n\n return filters.length > 0 ? JSON.stringify(filters) : undefined;\n }\n\n const getMarketplaceLink = (categories, country, state, city) => {\n let country_normalized = country ? normalizeUrlParam(country) : '';\n let state_normalized = state ? normalizeUrlParam(state) : '';\n let city_normalized = city ? normalizeUrlParam(city) : '';\n\n let base = '/marketplace';\n base += country_normalized ? `/${country_normalized}` : '';\n base += country_normalized && state_normalized ? `/${state_normalized}` : '';\n base += country_normalized && state_normalized && city_normalized ? `/${city_normalized}` : '';\n\n if (categories && categories.length) {\n base += `?categories=${categories.join(',')}`;\n }\n\n return base;\n };\n\n const getSpotsLink = (country, state, city) => {\n let country_normalized = country ? normalizeUrlParam(country) : '';\n let state_normalized = state ? normalizeUrlParam(state) : '';\n let city_normalized = city ? normalizeUrlParam(city) : '';\n\n let base = '/spots';\n base += country_normalized ? `/${country_normalized}` : '';\n base += country_normalized && state_normalized ? `/${state_normalized}` : '';\n base += country_normalized && state_normalized && city_normalized ? `/${city_normalized}` : '';\n\n return base;\n };\n\n const isClientSide = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n const getCssVar = name => {\n if (!isClientSide) return ''; // SSR fallback\n return getComputedStyle(document.documentElement).getPropertyValue(name).trim();\n };\n\n const matchMediaSafe = query => {\n if (!isClientSide) return { matches: false };\n return window.matchMedia(query);\n };\n\n const isMediaMax = varName => {\n const maxWidth = getCssVar(varName);\n return matchMediaSafe(`(max-width: ${maxWidth})`).matches;\n };\n\n const isMediaMin = varName => {\n const minWidth = getCssVar(varName);\n return matchMediaSafe(`(min-width: ${minWidth})`).matches;\n };\n\n const isFlipPhone = () => isMediaMax('--flip-phone-max');\n const isPhone = () => isMediaMax('--phone-landscape-max');\n\n const isTabletPortrait = () => {\n const min = getCssVar('--tablet-portrait-min');\n const max = getCssVar('--tablet-portrait-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isTabletLandscape = () => {\n const min = getCssVar('--tablet-landscape-min');\n const max = getCssVar('--tablet-landscape-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isTablet = () => isTabletPortrait() || isTabletLandscape();\n\n const isDesktop = () => {\n const min = getCssVar('--desktop-min');\n const max = getCssVar('--desktop-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isXLDesktop = () => {\n const min = getCssVar('--xl-desktop-min');\n const max = getCssVar('--xl-desktop-max');\n return matchMediaSafe(`(min-width: ${min}) and (max-width: ${max})`).matches;\n };\n\n const isXXLDesktop = () => isMediaMin('--xxl-desktop-min');\n\n return {\n isModuleInstalled,\n isAdmin,\n hasAccess,\n returnCurrency,\n formatPrice,\n formatDate,\n formateText,\n replaceClasses,\n normalizeUrlParam,\n joinArrayToUrl,\n getMarketplaceLink,\n getSpotsLink,\n generateFilters,\n // Брейкпоинты\n getCssVar,\n isMediaMax,\n isMediaMin,\n isFlipPhone,\n isPhone,\n isTabletPortrait,\n isTabletLandscape,\n isTablet,\n isDesktop,\n isXLDesktop,\n isXXLDesktop,\n };\n}\n\n// Экспорт для глобальной регистрации\nexport const globalMixins = {\n methods: useGlobalMixins(),\n};\n"],"names":["inject","isAdmin","globals.state"],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { state } from "../store/globals.js";
|
|
2
|
+
import { inject } from "vue";
|
|
2
3
|
function useGlobalMixins() {
|
|
4
|
+
const isModuleInstalled = (moduleName) => {
|
|
5
|
+
const store = inject("store");
|
|
6
|
+
if (!store || !store.modules) return false;
|
|
7
|
+
return store.modules.includes(moduleName);
|
|
8
|
+
};
|
|
3
9
|
const isAdmin = (roles) => {
|
|
4
10
|
if (roles) {
|
|
5
11
|
const isAdmin2 = roles.includes("ROLE_ADMIN") ? roles.includes("ROLE_ADMIN") : false;
|
|
@@ -216,6 +222,7 @@ function useGlobalMixins() {
|
|
|
216
222
|
};
|
|
217
223
|
const isXXLDesktop = () => isMediaMin("--xxl-desktop-min");
|
|
218
224
|
return {
|
|
225
|
+
isModuleInstalled,
|
|
219
226
|
isAdmin,
|
|
220
227
|
hasAccess,
|
|
221
228
|
returnCurrency,
|