@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":"mixins.js","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","state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mixins.js","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":["isAdmin","globals.state","state"],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ const IconOrders = require("../entities/IconOrders.vue.cjs");
|
|
|
60
60
|
const IconMusic = require("../entities/IconMusic.vue.cjs");
|
|
61
61
|
const IconPhone = require("../entities/IconPhone.vue.cjs");
|
|
62
62
|
const IconEmail = require("../entities/IconEmail.vue.cjs");
|
|
63
|
-
const IconAddress =
|
|
63
|
+
const IconAddress = require("../entities/IconAddress.vue.cjs");
|
|
64
64
|
const IconProfile = require("../entities/IconProfile.vue.cjs");
|
|
65
65
|
const IconGroups = require("../entities/IconGroups.vue.cjs");
|
|
66
66
|
const IconLock = require("../entities/IconLock.vue.cjs");
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
6
|
-
const Select = require("../../../../components/Select/Select.
|
|
6
|
+
const Select = require("../../../../components/Select/Select.vue.cjs");
|
|
7
7
|
const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
8
8
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
9
9
|
const spots = require("../../../spots/store/spots.cjs");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, Fragment, renderList, normalizeClass, createBlock, resolveDynamicComponent, toDisplayString, withCtx, createTextVNode } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
|
-
import Select from "../../../../components/Select/Select.
|
|
4
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
6
6
|
import { state } from "../../../auth/views/store/auth.js";
|
|
7
7
|
import { actions } from "../../../spots/store/spots.js";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
6
|
-
const Select = require("../../../../components/Select/Select.
|
|
6
|
+
const Select = require("../../../../components/Select/Select.vue.cjs");
|
|
7
7
|
const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
8
8
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
9
9
|
const spots = require("../../../spots/store/spots.cjs");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
|
-
import Select from "../../../../components/Select/Select.
|
|
4
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
|
|
6
6
|
import { state } from "../../../auth/views/store/auth.js";
|
|
7
7
|
import { actions } from "../../../spots/store/spots.js";
|
|
@@ -5,7 +5,7 @@ const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
|
5
5
|
const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
6
6
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
7
7
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
8
|
-
;/* empty css
|
|
8
|
+
;/* empty css */
|
|
9
9
|
;/* empty css */
|
|
10
10
|
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
11
11
|
const CardOrderItem = require("../../../orders/components/blocks/CardOrderItem.vue.cjs");
|
|
@@ -3,7 +3,7 @@ import _sfc_main$4 from "../../../../components/Block/Block.vue.js";
|
|
|
3
3
|
import _sfc_main$7 from "../../../../components/Button/Button.vue.js";
|
|
4
4
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
6
|
-
/* empty css
|
|
6
|
+
/* empty css */
|
|
7
7
|
/* empty css */
|
|
8
8
|
import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
|
|
9
9
|
import _sfc_main$3 from "../../../orders/components/blocks/CardOrderItem.vue.js";
|
|
@@ -3,16 +3,36 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const vueI18n = require("vue-i18n");
|
|
6
|
-
const
|
|
6
|
+
const Spoiler = require("../../../../../components/Spoiler/Spoiler.vue2.cjs");
|
|
7
|
+
const Field = require("../../../../../components/Field/Field.vue.cjs");
|
|
8
|
+
const Checkbox = require("../../../../../components/Checkbox/Checkbox.vue.cjs");
|
|
9
|
+
const IconChevronBottom = require("../../../../icons/navigation/IconChevronBottom.vue.cjs");
|
|
7
10
|
const globals = require("../../../../globals/views/store/globals.cjs");
|
|
8
11
|
const categories = require("../../../../products/store/categories.cjs");
|
|
9
12
|
const marketplace = require("../../store/marketplace.cjs");
|
|
10
13
|
const _hoisted_1 = { class: "cols-2-1_3 z-index-3 pos-relative radius-big" };
|
|
11
|
-
const _hoisted_2 = { class: "o-y-scroll br-r br-solid br-light z-index-2 desktop-only h-100 pos-relative" };
|
|
12
|
-
const _hoisted_3 = { class: "
|
|
13
|
-
const _hoisted_4 = {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const _hoisted_2 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
|
|
15
|
+
const _hoisted_3 = { class: "w-100 o-y-scroll h-100" };
|
|
16
|
+
const _hoisted_4 = {
|
|
17
|
+
key: 0,
|
|
18
|
+
class: "mn-b-medium"
|
|
19
|
+
};
|
|
20
|
+
const _hoisted_5 = { class: "mn-b-small" };
|
|
21
|
+
const _hoisted_6 = { class: "gap-micro" };
|
|
22
|
+
const _hoisted_7 = ["onClick"];
|
|
23
|
+
const _hoisted_8 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
24
|
+
const _hoisted_9 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
25
|
+
const _hoisted_10 = { class: "mn-t-small" };
|
|
26
|
+
const _hoisted_11 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
27
|
+
const _hoisted_12 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
28
|
+
const _hoisted_13 = { class: "mn-t-small" };
|
|
29
|
+
const _hoisted_14 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
30
|
+
const _hoisted_15 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
31
|
+
const _hoisted_16 = { class: "mn-t-small" };
|
|
32
|
+
const _hoisted_17 = { class: "pd-thin" };
|
|
33
|
+
const _hoisted_18 = { class: "pd-medium radius-medium bg-light mn-b-thin" };
|
|
34
|
+
const _hoisted_19 = { class: "" };
|
|
35
|
+
const _hoisted_20 = { class: "rows-1" };
|
|
16
36
|
const _sfc_main = {
|
|
17
37
|
__name: "Marketplace",
|
|
18
38
|
setup(__props) {
|
|
@@ -24,6 +44,32 @@ const _sfc_main = {
|
|
|
24
44
|
country: null
|
|
25
45
|
});
|
|
26
46
|
vue.ref(null);
|
|
47
|
+
const currentCategories = vue.ref([]);
|
|
48
|
+
const searchLocation = vue.ref("");
|
|
49
|
+
const selectedLocation = vue.ref("All");
|
|
50
|
+
const locationOptions = vue.ref(["All", "Phuket", "Bangkok", "Chiang Mai", "Pattaya"]);
|
|
51
|
+
const deliveryOptions = vue.ref([
|
|
52
|
+
{ label: "Pickup", value: "pickup" },
|
|
53
|
+
{ label: "Delivery", value: "delivery" },
|
|
54
|
+
{ label: "Dine-in", value: "dinein" }
|
|
55
|
+
]);
|
|
56
|
+
const selectedDeliveryOptions = vue.ref([]);
|
|
57
|
+
const paymentOptions = vue.ref([
|
|
58
|
+
{ label: "Cash", value: "cash" },
|
|
59
|
+
{ label: "Card", value: "card" },
|
|
60
|
+
{ label: "Crypto", value: "crypto" },
|
|
61
|
+
{ label: "Bank Transfer", value: "transfer" }
|
|
62
|
+
]);
|
|
63
|
+
const selectedPaymentOptions = vue.ref([]);
|
|
64
|
+
const selectCategory = (category) => {
|
|
65
|
+
console.log("Category selected:", category);
|
|
66
|
+
};
|
|
67
|
+
const clearFilters = () => {
|
|
68
|
+
selectedLocation.value = "All";
|
|
69
|
+
selectedDeliveryOptions.value = [];
|
|
70
|
+
selectedPaymentOptions.value = [];
|
|
71
|
+
searchLocation.value = "";
|
|
72
|
+
};
|
|
27
73
|
function denormalizeUrlParam(param) {
|
|
28
74
|
return param.replace(/-/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
|
|
29
75
|
}
|
|
@@ -107,20 +153,135 @@ const _sfc_main = {
|
|
|
107
153
|
const _component_router_view = vue.resolveComponent("router-view");
|
|
108
154
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
109
155
|
vue.createElementVNode("div", _hoisted_2, [
|
|
110
|
-
vue.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
156
|
+
vue.createElementVNode("div", _hoisted_3, [
|
|
157
|
+
currentCategories.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
|
|
158
|
+
vue.createElementVNode("h4", _hoisted_5, vue.toDisplayString(vue.unref(route).params.categoryPath ? "Subcategories" : "Categories"), 1),
|
|
159
|
+
vue.createElementVNode("div", _hoisted_6, [
|
|
160
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(currentCategories.value, (category) => {
|
|
161
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
162
|
+
key: category._id,
|
|
163
|
+
onClick: ($event) => selectCategory(category),
|
|
164
|
+
class: "pd-small radius-small cursor-pointer hover-bg-light transition-all"
|
|
165
|
+
}, vue.toDisplayString(category.name), 9, _hoisted_7);
|
|
166
|
+
}), 128))
|
|
167
|
+
])
|
|
168
|
+
])) : vue.createCommentVNode("", true),
|
|
169
|
+
vue.createVNode(Spoiler.default, {
|
|
170
|
+
class: "o-hidden mn-b-medium",
|
|
171
|
+
status: true
|
|
172
|
+
}, {
|
|
173
|
+
header: vue.withCtx(({ isOpen }) => [
|
|
174
|
+
vue.createElementVNode("div", _hoisted_8, [
|
|
175
|
+
_cache[6] || (_cache[6] = vue.createElementVNode("h4", { class: "w-100" }, "Location", -1)),
|
|
176
|
+
vue.createElementVNode("div", _hoisted_9, [
|
|
177
|
+
vue.createVNode(IconChevronBottom.default, {
|
|
178
|
+
class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
179
|
+
fill: "rgb(var(--black))"
|
|
180
|
+
}, null, 8, ["class"])
|
|
181
|
+
])
|
|
182
|
+
])
|
|
183
|
+
]),
|
|
184
|
+
content: vue.withCtx(() => [
|
|
185
|
+
vue.createElementVNode("div", _hoisted_10, [
|
|
186
|
+
vue.createVNode(Field.default, {
|
|
187
|
+
modelValue: searchLocation.value,
|
|
188
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchLocation.value = $event),
|
|
189
|
+
placeholder: "Search location...",
|
|
190
|
+
type: "text",
|
|
191
|
+
class: "w-100 bg-light pd-small radius-small mn-b-small"
|
|
192
|
+
}, null, 8, ["modelValue"]),
|
|
193
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(locationOptions.value, (location) => {
|
|
194
|
+
return vue.openBlock(), vue.createBlock(Checkbox.default, {
|
|
195
|
+
key: location,
|
|
196
|
+
radio: selectedLocation.value,
|
|
197
|
+
"onUpdate:radio": _cache[1] || (_cache[1] = ($event) => selectedLocation.value = $event),
|
|
198
|
+
label: location,
|
|
199
|
+
value: location,
|
|
200
|
+
mode: "radio",
|
|
201
|
+
class: "mn-b-micro"
|
|
202
|
+
}, null, 8, ["radio", "label", "value"]);
|
|
203
|
+
}), 128))
|
|
204
|
+
])
|
|
205
|
+
]),
|
|
206
|
+
_: 1
|
|
207
|
+
}),
|
|
208
|
+
vue.createVNode(Spoiler.default, {
|
|
209
|
+
class: "o-hidden mn-b-medium",
|
|
210
|
+
status: true
|
|
211
|
+
}, {
|
|
212
|
+
header: vue.withCtx(({ isOpen }) => [
|
|
213
|
+
vue.createElementVNode("div", _hoisted_11, [
|
|
214
|
+
_cache[7] || (_cache[7] = vue.createElementVNode("h4", { class: "w-100" }, "Delivery Options", -1)),
|
|
215
|
+
vue.createElementVNode("div", _hoisted_12, [
|
|
216
|
+
vue.createVNode(IconChevronBottom.default, {
|
|
217
|
+
class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
218
|
+
fill: "rgb(var(--black))"
|
|
219
|
+
}, null, 8, ["class"])
|
|
220
|
+
])
|
|
221
|
+
])
|
|
222
|
+
]),
|
|
223
|
+
content: vue.withCtx(() => [
|
|
224
|
+
vue.createElementVNode("div", _hoisted_13, [
|
|
225
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(deliveryOptions.value, (option) => {
|
|
226
|
+
return vue.openBlock(), vue.createBlock(Checkbox.default, {
|
|
227
|
+
key: option.value,
|
|
228
|
+
checkbox: selectedDeliveryOptions.value,
|
|
229
|
+
"onUpdate:checkbox": _cache[2] || (_cache[2] = ($event) => selectedDeliveryOptions.value = $event),
|
|
230
|
+
label: option.label,
|
|
231
|
+
value: option.value,
|
|
232
|
+
mode: "checkbox",
|
|
233
|
+
class: "mn-b-micro"
|
|
234
|
+
}, null, 8, ["checkbox", "label", "value"]);
|
|
235
|
+
}), 128))
|
|
236
|
+
])
|
|
237
|
+
]),
|
|
238
|
+
_: 1
|
|
239
|
+
}),
|
|
240
|
+
vue.createVNode(Spoiler.default, {
|
|
241
|
+
class: "o-hidden mn-b-medium",
|
|
242
|
+
status: true
|
|
243
|
+
}, {
|
|
244
|
+
header: vue.withCtx(({ isOpen }) => [
|
|
245
|
+
vue.createElementVNode("div", _hoisted_14, [
|
|
246
|
+
_cache[8] || (_cache[8] = vue.createElementVNode("h4", { class: "w-100" }, "Payment Options", -1)),
|
|
247
|
+
vue.createElementVNode("div", _hoisted_15, [
|
|
248
|
+
vue.createVNode(IconChevronBottom.default, {
|
|
249
|
+
class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
250
|
+
fill: "rgb(var(--black))"
|
|
251
|
+
}, null, 8, ["class"])
|
|
252
|
+
])
|
|
253
|
+
])
|
|
254
|
+
]),
|
|
255
|
+
content: vue.withCtx(() => [
|
|
256
|
+
vue.createElementVNode("div", _hoisted_16, [
|
|
257
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(paymentOptions.value, (option) => {
|
|
258
|
+
return vue.openBlock(), vue.createBlock(Checkbox.default, {
|
|
259
|
+
key: option.value,
|
|
260
|
+
checkbox: selectedPaymentOptions.value,
|
|
261
|
+
"onUpdate:checkbox": _cache[3] || (_cache[3] = ($event) => selectedPaymentOptions.value = $event),
|
|
262
|
+
label: option.label,
|
|
263
|
+
value: option.value,
|
|
264
|
+
mode: "checkbox",
|
|
265
|
+
class: "mn-b-micro"
|
|
266
|
+
}, null, 8, ["checkbox", "label", "value"]);
|
|
267
|
+
}), 128))
|
|
268
|
+
])
|
|
269
|
+
]),
|
|
270
|
+
_: 1
|
|
271
|
+
}),
|
|
272
|
+
vue.createElementVNode("button", {
|
|
273
|
+
onClick: clearFilters,
|
|
274
|
+
class: "bg-main w-100 button mn-t-medium"
|
|
275
|
+
}, " Clear Filters ")
|
|
276
|
+
])
|
|
116
277
|
]),
|
|
117
|
-
vue.createElementVNode("div",
|
|
118
|
-
vue.createElementVNode("header",
|
|
119
|
-
vue.createElementVNode("h2",
|
|
120
|
-
_cache[
|
|
278
|
+
vue.createElementVNode("div", _hoisted_17, [
|
|
279
|
+
vue.createElementVNode("header", _hoisted_18, [
|
|
280
|
+
vue.createElementVNode("h2", _hoisted_19, [
|
|
281
|
+
_cache[9] || (_cache[9] = vue.createElementVNode("span", { class: "" }, "Weed Deliveries in ", -1)),
|
|
121
282
|
localPosition.value.city || localPosition.value.state || localPosition.value.country ? (vue.openBlock(), vue.createElementBlock("span", {
|
|
122
283
|
key: 0,
|
|
123
|
-
onClick: _cache[
|
|
284
|
+
onClick: _cache[4] || (_cache[4] = (a) => {
|
|
124
285
|
globals.state.isOpenLocationPopup = true;
|
|
125
286
|
}),
|
|
126
287
|
class: "t-main t-semi cursor-pointer"
|
|
@@ -136,14 +297,14 @@ const _sfc_main = {
|
|
|
136
297
|
], 64)) : vue.createCommentVNode("", true)
|
|
137
298
|
])) : (vue.openBlock(), vue.createElementBlock("span", {
|
|
138
299
|
key: 1,
|
|
139
|
-
onClick: _cache[
|
|
300
|
+
onClick: _cache[5] || (_cache[5] = (a) => {
|
|
140
301
|
globals.state.isOpenLocationPopup = true;
|
|
141
302
|
}),
|
|
142
303
|
class: "t-main t-semi cursor-pointer"
|
|
143
304
|
}, "The World"))
|
|
144
305
|
])
|
|
145
306
|
]),
|
|
146
|
-
vue.createElementVNode("div",
|
|
307
|
+
vue.createElementVNode("div", _hoisted_20, [
|
|
147
308
|
vue.createVNode(_component_router_view, null, {
|
|
148
309
|
default: vue.withCtx(({ Component, route: route2 }) => [
|
|
149
310
|
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(Component), {
|
package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Marketplace.vue.cjs","sources":["../../../../../../../../src/modules/marketplace/views/components/layouts/Marketplace.vue"],"sourcesContent":["<template>\n\t <div class=\"cols-2-1_3 z-index-3 pos-relative radius-big\">\n\n\t\t<div class=\"o-y-scroll br-r br-solid br-light z-index-2 desktop-only h-100 pos-relative\">\n \t<BlockFilter\n v-model:filter=\"marketplace.state.filter\"\n :options=\"marketplace.state.filter.options\"\n class=\"h-100 w-100 pd-medium\"\n\t />\n\t </div>\n\n\t\t<!-- Catalog wrapper -->\n\t\t<div class=\"pd-thin\">\n\t\t\t<header class=\"pd-medium radius-medium bg-light mn-b-thin\">\n\t \t<h2 class=\"\">\n\t \t\t<span class=\"\">Weed Deliveries in </span>\n\n\t \t\t<span \n\t \t\t\tv-if=\"localPosition.city || localPosition.state || localPosition.country\"\n\t \t\t\t@click=\"a => { globals.state.isOpenLocationPopup = true }\" \n\t \t\t\tclass=\"t-main t-semi cursor-pointer \"\n\t \t\t>\n\t \t\t\t\t<template v-if=\"localPosition.city\">{{localPosition.city}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.state\">{{localPosition.state}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.country\">{{localPosition.country}}</template>\n\t \t\t</span>\n\n\t \t\t<span v-else @click=\"a => { globals.state.isOpenLocationPopup = true }\" class=\"t-main t-semi cursor-pointer\">The World</span>\n\t \t</h2>\n\t\t\t</header>\n\n\t\t\t<div class=\"rows-1\">\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<component ref=\"page\" :key=\"route\" :localPosition=\"localPosition\" :is=\"Component\" />\n\t\t\t\t</router-view>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\t// Import libs\n\timport { computed, onMounted, watch, ref } from 'vue'\n\timport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\n\timport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n\n\timport * as marketplace from '../../store/marketplace';\n\n\t// Accessing router and store\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n\tconst localPosition = ref({\n\t\tcity: null,\n\t\tstate: null,\n\t\tcountry: null\n\t});\n\n\tconst desktopFilters = ref(null)\n\n\tfunction denormalizeUrlParam(param) {\n\t return param\n\t .replace(/-/g, ' ') // Замена дефисов на пробелы\n\t .replace(/\\b\\w/g, l => l.toUpperCase()); // Преобразование первой буквы каждого слова в заглавную\n\t}\n\n\tfunction normalizeUrlParam(param) {\n\t return param\n\t .toLowerCase()\n\t .replace(/ /g, '-')\n\t .replace(/[^a-z0-9-]/g, '');\n\t}\n\n\tif (route.params) {\n // Загружаем новые значения из параметров маршрута в состояние\n let newState = {\n country: denormalizeUrlParam(route.params.country),\n state: denormalizeUrlParam(route.params.state),\n city: denormalizeUrlParam(route.params.city),\n };\n\n\t // Обновляем глобальное состояние\n\t localPosition.value = newState;\n\t}\n\n\tif (route.query) {\n\t \tconst query = route.query;\n\n\t\tmarketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n\t\tmarketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n\t\tmarketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n\t}\n\n\tif (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam\n\tif (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder\n\n\tonMounted(async () => {\n\t let options = {\n status: 'published',\n rootOnly: true\n }\n\n let categoriesFilter = await categories.actions.read(options);\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category._id,\n label: category.name\n }));\n\n const index = marketplace.state.filter.options.findIndex(option => option.value === 'categories');\n\n const categoryOption = {\n title: 'Categories',\n value: 'categories',\n options: categoriesFilter\n };\n\n if (index !== -1) {\n marketplace.state.filter.options[index] = categoryOption;\n } else {\n marketplace.state.filter.options.unshift(categoryOption);\n }\n\t})\n\n\twatch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n\t\tlet query = { ...route.query}\n\t\t\n\t\tquery.sortParam = newSortValue.param\n\t\tquery.sortOrder = newSortValue.order\n\t \n\t // replace the current route\n\t router.replace({ query });\n\t}, { deep: true });\n\n\n\twatch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {\n\t // Переводим фильтр в формат query\n\t const query = { ...route.query };\n\n\t // Удаляем старые значения фильтра из query\n\t Object.keys(oldFilterValue).forEach(key => {\n\t if (query[key]) {\n\t delete query[key];\n\t }\n\t });\n\n\t // Добавляем новые значения фильтра в query\n\t const newQueryValues = Object.fromEntries(\n\t Object.entries(newFilterValue)\n\t .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n\t .map(([key, value]) => [key, value.join(',')])\n\t );\n\n\t delete query.options;\n\t Object.assign(query, newQueryValues);\n\n\t // Обновляем маршрут с новым query\n\t router.replace({ query });\n\t}, { deep: true })\n\n\t// watch(() => globals.state.position, (newPosition) => {\n\t// // get the current route\n\t// const currentRoute = { ...router.currentRoute.value };\n\t \n\t// // create new parameters based on globals state position\n\t// let newParams = {\n\t// country: normalizeUrlParam(newPosition.country),\n\t// state: normalizeUrlParam(newPosition.state),\n\t// city: normalizeUrlParam(newPosition.city),\n\t// };\n\t \n\t// // update route params\n\t// currentRoute.params = newParams;\n\t \n\t// // replace the current route\n\t// router.replace(currentRoute);\n\t// }, { deep: true });\n\n const text = {\n locale: 'en',\n messages: {\n en: {\n\t \tmeta: {\n title: \"Marketplace – Shop Our Wide Selection of Quality Weed for Delivery\",\n description: \"Browse our marketplace of top-grade weed strains and choose from a variety of delivery options. Order now and have your favorite strains delivered straight to your door. Safe, fast, and reliable.\",\n }\n },\n ru: {\n\t meta: {\n title: \"Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки\",\n description: \"Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.\",\n }\n }\n }\n }\n\n \tconst { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","ref","marketplace.state","onMounted","categories.actions","watch","useI18n"],"mappings":";;;;;;;;;;;;;;;;;;AAwDC,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,UAAM,gBAAgBC,IAAAA,IAAI;AAAA,MACzB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IACX,CAAE;AAEsBA,QAAAA,IAAI,IAAI;AAE/B,aAAS,oBAAoB,OAAO;AAClC,aAAO,MACJ,QAAQ,MAAM,GAAG,EACjB,QAAQ,SAAS,OAAK,EAAE,YAAW,CAAE;AAAA,IAC1C;AASA,QAAI,MAAM,QAAQ;AAEf,UAAI,WAAW;AAAA,QACb,SAAS,oBAAoB,MAAM,OAAO,OAAO;AAAA,QACjD,OAAO,oBAAoB,MAAM,OAAO,KAAK;AAAA,QAC7C,MAAM,oBAAoB,MAAM,OAAO,IAAI;AAAA,MACjD;AAGG,oBAAc,QAAQ;AAAA,IACxB;AAEA,QAAI,MAAM,OAAO;AACf,YAAM,QAAQ,MAAM;AAErBC,kBAAAA,MAAkB,OAAO,SAAS,aAAa,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAA;AAChGA,kBAAAA,MAAkB,OAAO,SAAS,SAAS,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAA;AACpFA,kBAAAA,MAAkB,OAAO,SAAS,WAAW,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAA;AAAA,IAC3F;AAEA,QAAI,MAAM,MAAM,UAAWA,aAAAA,MAAkB,KAAK,QAAQ,MAAM,MAAM;AACtE,QAAI,MAAM,MAAM,UAAWA,aAAAA,MAAkB,KAAK,QAAQ,MAAM,MAAM;AAEtEC,QAAAA,UAAU,YAAY;AACpB,UAAI,UAAU;AAAA,QACX,QAAQ;AAAA,QACR,UAAU;AAAA,MAChB;AAEI,UAAI,mBAAmB,MAAMC,mBAAmB,KAAK,OAAO;AAE5D,yBAAmB,iBAAiB,IAAI,eAAa;AAAA,QACnD,OAAO,SAAS;AAAA,QAChB,OAAO,SAAS;AAAA,MACtB,EAAM;AAEF,YAAM,QAAQF,kBAAkB,OAAO,QAAQ,UAAU,YAAU,OAAO,UAAU,YAAY;AAEhG,YAAM,iBAAiB;AAAA,QACrB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,MACf;AAEI,UAAI,UAAU,IAAI;AACdA,oBAAAA,MAAkB,OAAO,QAAQ,KAAK,IAAI;AAAA,MAC9C,OAAO;AACHA,oBAAAA,MAAkB,OAAO,QAAQ,QAAQ,cAAc;AAAA,MAC3D;AAAA,IACH,CAAC;AAEDG,QAAAA,MAAM,MAAMH,YAAAA,MAAkB,MAAM,CAAC,cAAc,iBAAiB;AACnE,UAAI,QAAQ,EAAE,GAAG,MAAM,MAAK;AAE5B,YAAM,YAAY,aAAa;AAC/B,YAAM,YAAY,aAAa;AAG9B,aAAO,QAAQ,EAAE,OAAO;AAAA,IAC1B,GAAG,EAAE,MAAM,MAAM;AAGjBG,QAAAA,MAAM,MAAMH,YAAAA,MAAkB,OAAO,UAAU,CAAC,gBAAgB,mBAAmB;AAEjF,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF,CAAC;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACpD;AAEG,aAAO,MAAM;AACb,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,OAAO;AAAA,IAC1B,GAAG,EAAE,MAAM,KAAI,CAAE;AAoBhB,UAAM,OAAO;AAAA,MACX,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACH,MAAM;AAAA,YACH,OAAO;AAAA,YACP,aAAa;AAAA,UACvB;AAAA,QACA;AAAA,QACM,IAAI;AAAA,UACH,MAAM;AAAA,YACH,OAAO;AAAA,YACP,aAAa;AAAA,UACvB;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAEE,UAAM,EAAE,MAAMI,QAAAA,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Marketplace.vue.cjs","sources":["../../../../../../../../src/modules/marketplace/views/components/layouts/Marketplace.vue"],"sourcesContent":["<template>\n\t <div class=\"cols-2-1_3 z-index-3 pos-relative radius-big\">\n\n\t\t<div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n\t\t\t<div class=\"w-100 o-y-scroll h-100\">\n\t\t\t\t<!-- Categories -->\n\t\t\t\t<div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n\t\t\t\t\t<h4 class=\"mn-b-small\">\n\t\t\t\t\t\t{{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"gap-micro\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"category in currentCategories\"\n\t\t\t\t\t\t\t:key=\"category._id\"\n\t\t\t\t\t\t\t@click=\"selectCategory(category)\"\n\t\t\t\t\t\t\tclass=\"pd-small radius-small cursor-pointer hover-bg-light transition-all\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ category.name }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Location Filter -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Location</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Field\n\t\t\t\t\t\t\t\tv-model=\"searchLocation\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search location...\"\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"w-100 bg-light pd-small radius-small mn-b-small\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"location in locationOptions\"\n\t\t\t\t\t\t\t\t:key=\"location\"\n\t\t\t\t\t\t\t\tv-model:radio=\"selectedLocation\"\n\t\t\t\t\t\t\t\t:label=\"location\"\n\t\t\t\t\t\t\t\t:value=\"location\"\n\t\t\t\t\t\t\t\tmode=\"radio\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Delivery Options -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Delivery Options</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"option in deliveryOptions\"\n\t\t\t\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t\t\t\tv-model:checkbox=\"selectedDeliveryOptions\"\n\t\t\t\t\t\t\t\t:label=\"option.label\"\n\t\t\t\t\t\t\t\t:value=\"option.value\"\n\t\t\t\t\t\t\t\tmode=\"checkbox\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Payment Options -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Payment Options</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"option in paymentOptions\"\n\t\t\t\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t\t\t\tv-model:checkbox=\"selectedPaymentOptions\"\n\t\t\t\t\t\t\t\t:label=\"option.label\"\n\t\t\t\t\t\t\t\t:value=\"option.value\"\n\t\t\t\t\t\t\t\tmode=\"checkbox\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Clear Filters Button -->\n\t\t\t\t<button \n\t\t\t\t\t@click=\"clearFilters\"\n\t\t\t\t\tclass=\"bg-main w-100 button mn-t-medium\"\n\t\t\t\t>\n\t\t\t\t\tClear Filters\n\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Catalog wrapper -->\n\t\t<div class=\"pd-thin\">\n\t\t\t<header class=\"pd-medium radius-medium bg-light mn-b-thin\">\n\t \t<h2 class=\"\">\n\t \t\t<span class=\"\">Weed Deliveries in </span>\n\n\t \t\t<span \n\t \t\t\tv-if=\"localPosition.city || localPosition.state || localPosition.country\"\n\t \t\t\t@click=\"a => { globals.state.isOpenLocationPopup = true }\" \n\t \t\t\tclass=\"t-main t-semi cursor-pointer \"\n\t \t\t>\n\t \t\t\t\t<template v-if=\"localPosition.city\">{{localPosition.city}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.state\">{{localPosition.state}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.country\">{{localPosition.country}}</template>\n\t \t\t</span>\n\n\t \t\t<span v-else @click=\"a => { globals.state.isOpenLocationPopup = true }\" class=\"t-main t-semi cursor-pointer\">The World</span>\n\t \t</h2>\n\t\t\t</header>\n\n\t\t\t<div class=\"rows-1\">\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<component ref=\"page\" :key=\"route\" :localPosition=\"localPosition\" :is=\"Component\" />\n\t\t\t\t</router-view>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\t// Import libs\n\timport { computed, onMounted, watch, ref } from 'vue'\n\timport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n\timport Field from \"@martyrs/src/components/Field/Field.vue\"\n\timport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\timport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\n\timport * as globals from '@martyrs/src/modules/globals/views/store/globals.js'\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n\n\timport * as marketplace from '../../store/marketplace';\n\n\t// Accessing router and store\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n\tconst localPosition = ref({\n\t\tcity: null,\n\t\tstate: null,\n\t\tcountry: null\n\t});\n\n\tconst desktopFilters = ref(null)\n\n\t// Categories\n\tconst currentCategories = ref([]);\n\tconst searchLocation = ref('');\n\tconst selectedLocation = ref('All');\n\tconst locationOptions = ref(['All', 'Phuket', 'Bangkok', 'Chiang Mai', 'Pattaya']);\n\n\t// Delivery options\n\tconst deliveryOptions = ref([\n\t\t{ label: 'Pickup', value: 'pickup' },\n\t\t{ label: 'Delivery', value: 'delivery' },\n\t\t{ label: 'Dine-in', value: 'dinein' }\n\t]);\n\tconst selectedDeliveryOptions = ref([]);\n\n\t// Payment options\n\tconst paymentOptions = ref([\n\t\t{ label: 'Cash', value: 'cash' },\n\t\t{ label: 'Card', value: 'card' },\n\t\t{ label: 'Crypto', value: 'crypto' },\n\t\t{ label: 'Bank Transfer', value: 'transfer' }\n\t]);\n\tconst selectedPaymentOptions = ref([]);\n\n\tconst selectCategory = (category) => {\n\t\t// Implementation for category selection\n\t\tconsole.log('Category selected:', category);\n\t};\n\n\tconst clearFilters = () => {\n\t\tselectedLocation.value = 'All';\n\t\tselectedDeliveryOptions.value = [];\n\t\tselectedPaymentOptions.value = [];\n\t\tsearchLocation.value = '';\n\t};\n\n\tfunction denormalizeUrlParam(param) {\n\t return param\n\t .replace(/-/g, ' ') // Замена дефисов на пробелы\n\t .replace(/\\b\\w/g, l => l.toUpperCase()); // Преобразование первой буквы каждого слова в заглавную\n\t}\n\n\tfunction normalizeUrlParam(param) {\n\t return param\n\t .toLowerCase()\n\t .replace(/ /g, '-')\n\t .replace(/[^a-z0-9-]/g, '');\n\t}\n\n\tif (route.params) {\n // Загружаем новые значения из параметров маршрута в состояние\n let newState = {\n country: denormalizeUrlParam(route.params.country),\n state: denormalizeUrlParam(route.params.state),\n city: denormalizeUrlParam(route.params.city),\n };\n\n\t // Обновляем глобальное состояние\n\t localPosition.value = newState;\n\t}\n\n\tif (route.query) {\n\t \tconst query = route.query;\n\n\t\tmarketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n\t\tmarketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n\t\tmarketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n\t}\n\n\tif (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam\n\tif (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder\n\n\tonMounted(async () => {\n\t let options = {\n status: 'published',\n rootOnly: true\n }\n\n let categoriesFilter = await categories.actions.read(options);\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category._id,\n label: category.name\n }));\n\n const index = marketplace.state.filter.options.findIndex(option => option.value === 'categories');\n\n const categoryOption = {\n title: 'Categories',\n value: 'categories',\n options: categoriesFilter\n };\n\n if (index !== -1) {\n marketplace.state.filter.options[index] = categoryOption;\n } else {\n marketplace.state.filter.options.unshift(categoryOption);\n }\n\t})\n\n\twatch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n\t\tlet query = { ...route.query}\n\t\t\n\t\tquery.sortParam = newSortValue.param\n\t\tquery.sortOrder = newSortValue.order\n\t \n\t // replace the current route\n\t router.replace({ query });\n\t}, { deep: true });\n\n\n\twatch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {\n\t // Переводим фильтр в формат query\n\t const query = { ...route.query };\n\n\t // Удаляем старые значения фильтра из query\n\t Object.keys(oldFilterValue).forEach(key => {\n\t if (query[key]) {\n\t delete query[key];\n\t }\n\t });\n\n\t // Добавляем новые значения фильтра в query\n\t const newQueryValues = Object.fromEntries(\n\t Object.entries(newFilterValue)\n\t .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n\t .map(([key, value]) => [key, value.join(',')])\n\t );\n\n\t delete query.options;\n\t Object.assign(query, newQueryValues);\n\n\t // Обновляем маршрут с новым query\n\t router.replace({ query });\n\t}, { deep: true })\n\n\t// watch(() => globals.state.position, (newPosition) => {\n\t// // get the current route\n\t// const currentRoute = { ...router.currentRoute.value };\n\t \n\t// // create new parameters based on globals state position\n\t// let newParams = {\n\t// country: normalizeUrlParam(newPosition.country),\n\t// state: normalizeUrlParam(newPosition.state),\n\t// city: normalizeUrlParam(newPosition.city),\n\t// };\n\t \n\t// // update route params\n\t// currentRoute.params = newParams;\n\t \n\t// // replace the current route\n\t// router.replace(currentRoute);\n\t// }, { deep: true });\n\n const text = {\n locale: 'en',\n messages: {\n en: {\n\t \tmeta: {\n title: \"Marketplace – Shop Our Wide Selection of Quality Weed for Delivery\",\n description: \"Browse our marketplace of top-grade weed strains and choose from a variety of delivery options. Order now and have your favorite strains delivered straight to your door. Safe, fast, and reliable.\",\n }\n },\n ru: {\n\t meta: {\n title: \"Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки\",\n description: \"Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.\",\n }\n }\n }\n }\n\n \tconst { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","ref","marketplace.state","onMounted","categories.actions","watch","useI18n"],"mappings":"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"}
|