@ozdao/martyrs 0.2.518 → 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/_virtual/index.cjs +4 -4
- package/dist/_virtual/index.js +4 -4
- package/dist/_virtual/index2.cjs +4 -4
- package/dist/_virtual/index2.js +4 -4
- package/dist/{abac-Cf_9lCSh.js → abac-CnJsrv8S.js} +3 -3
- package/dist/{abac-6LjoG9u-.cjs → abac-DOyUjhee.cjs} +3 -3
- package/dist/builder.cjs +27 -25
- package/dist/builder.js +27 -25
- package/dist/chats.server.cjs +198 -1
- package/dist/chats.server.js +198 -1
- package/dist/{crud-sE7GLPbj.js → crud-BIFl1W1i.js} +6 -6
- package/dist/{crud-JN_LFj01.cjs → crud-CC6k6yY5.cjs} +6 -6
- package/dist/{globals.logger-CZMgIMlM.cjs → globals.logger-BuW7JHMY.cjs} +63 -53
- package/dist/{globals.logger-Bf6rRU7j.js → globals.logger-VRHh-WUW.js} +63 -53
- package/dist/{globals.observer-CV2wCzzh.cjs → globals.observer-C_FYclgV.cjs} +36 -1
- package/dist/{globals.observer-CDqUjVU5.js → globals.observer-MZsqaE6F.js} +36 -1
- package/dist/globals.server.cjs +1 -1
- package/dist/globals.server.js +1 -1
- package/dist/inventory.server.cjs +276 -376
- package/dist/inventory.server.js +276 -376
- package/dist/main-BM3GslOO.cjs +11 -0
- package/dist/{main-wmEhGVvD.js → main-Qcn7YlTx.js} +1834 -1830
- 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/Button/Button.vue.cjs +1 -1
- package/dist/martyrs/src/components/Button/Button.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Button/Button.vue.js +1 -1
- package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -1
- package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs.map → Dropdown.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
- package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -3
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -3
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
- package/dist/martyrs/src/components/Loader/Loader.vue2.cjs +1 -1
- package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Loader/Loader.vue2.js +1 -1
- package/dist/martyrs/src/components/Loader/Loader.vue2.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 +41 -51
- 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 +10 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +10 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +6 -0
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +6 -0
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.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/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +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 +2 -2
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.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/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +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 +2 -3
- 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 +2 -3
- 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 +3 -3
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +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/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs +16 -3
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js +17 -4
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -1
- 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 +67 -43
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +68 -44
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.cjs +22 -7
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +23 -8
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.cjs +47 -32
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +48 -33
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +47 -26
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +48 -27
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +42 -52
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +43 -53
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +18 -18
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/store/{ inventory.store.cjs → inventory.store.cjs} +46 -2
- package/dist/martyrs/src/modules/inventory/store/inventory.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/inventory/store/{ inventory.store.js → inventory.store.js} +46 -2
- package/dist/martyrs/src/modules/inventory/store/inventory.store.js.map +1 -0
- 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/components/pages/Album.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +1 -2
- package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.js +1 -2
- 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 +3 -4
- 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 +3 -4
- 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/orders/orders.client.cjs +2 -2
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +2 -2
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/router/customers.router.cjs +1 -1
- package/dist/martyrs/src/modules/orders/router/customers.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/router/customers.router.js +1 -1
- package/dist/martyrs/src/modules/orders/router/customers.router.js.map +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/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +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 +7 -7
- 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 +7 -7
- 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/blocks/ProductDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +3 -4
- 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 +3 -4
- 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 +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- 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 +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
- package/dist/martyrs/src/modules/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 +3 -3
- 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 +3 -3
- 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/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/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 +4 -4
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +4 -4
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/music.server.cjs +9 -9
- package/dist/music.server.js +9 -9
- package/dist/notifications.server.cjs +0 -24
- package/dist/notifications.server.js +0 -24
- package/dist/orders.server.cjs +3 -6
- package/dist/orders.server.js +3 -6
- package/dist/organizations.server.cjs +119 -43
- package/dist/organizations.server.js +119 -43
- package/dist/products.server.cjs +5 -5
- package/dist/products.server.js +5 -5
- package/dist/rents.server.cjs +3 -3
- package/dist/rents.server.js +3 -3
- package/dist/style.css +16 -17
- package/dist/wallet.server.cjs +2 -2
- package/dist/wallet.server.js +2 -2
- package/dist/{web-B5wZTKbK.cjs → web-B0cfxzgu.cjs} +1 -1
- package/dist/{web-520xCgXy.js → web-DVR8m2fm.js} +1 -1
- package/package.json +1 -1
- package/src/builder/modes/ssr.rspack.dev.js +20 -12
- package/src/builder/rspack/rspack.config.base.js +16 -15
- package/src/components/Button/Button.vue +1 -1
- package/src/components/Feed/Feed.old.vue +0 -1
- package/src/components/Feed/Feed.vue +1 -31
- package/src/components/Loader/Loader.vue +1 -1
- package/src/modules/auth/FIXES.md +61 -0
- package/src/modules/auth/PROMT.md +33 -0
- package/src/modules/auth/auth.server.js +1 -0
- 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 +16 -1
- package/src/modules/auth//320/220/320/240/320/245/320/230/320/242/320/225/320/232/320/242/320/243/320/240/320/220.md +445 -0
- package/src/modules/backoffice/components/partials/Sidebar.vue +6 -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/controllers/classes/globals.cache.js +64 -55
- package/src/modules/globals/controllers/classes/globals.logger.js +40 -4
- package/src/modules/globals/controllers/classes/globals.observer.js +54 -4
- package/src/modules/globals/views/components/partials/Header.vue +1 -1
- package/src/modules/globals/views/components/partials/Sidebar.vue +17 -13
- package/src/modules/globals/views/mixins/mixins.js +7 -0
- package/src/modules/inventory/CLAUDE.md +330 -0
- package/src/modules/inventory/PROMT.md +25 -0
- package/src/modules/inventory/components/forms/AdjustmentForm.vue +53 -36
- package/src/modules/inventory/components/forms/ColumnSettingsMenu.vue +11 -6
- package/src/modules/inventory/components/forms/HistoryView.vue +21 -9
- package/src/modules/inventory/components/forms/StockAlertsForm.vue +33 -22
- package/src/modules/inventory/components/pages/Inventory.vue +40 -40
- package/src/modules/inventory/components/pages/InventoryEdit.vue +1 -1
- package/src/modules/inventory/docs/01-intro.md +126 -0
- package/src/modules/inventory/docs/02-architecture.md +266 -0
- package/src/modules/inventory/docs/03-components-and-relationships.md +338 -0
- package/src/modules/inventory/docs/04-business-logic-and-algorithms.md +376 -0
- package/src/modules/inventory/docs/05-api-specification.md +356 -0
- package/src/modules/inventory/docs/06-access-control.md +320 -0
- package/src/modules/inventory/inventory.server.js +6 -2
- package/src/modules/inventory/{services → middlewares}/inventory.verifier.js +5 -16
- package/src/modules/inventory/models/stock.availability.model.js +20 -7
- package/src/modules/inventory/routes/inventory.routes.js +14 -17
- package/src/modules/inventory/services/adjustment.service.js +137 -0
- package/src/modules/inventory/services/audit.service.js +160 -0
- package/src/modules/inventory/services/availability.service.js +323 -0
- package/src/modules/inventory/services/inventory.helpers.old.js +217 -0
- package/src/modules/inventory/store/{ inventory.store.js → inventory.store.js} +0 -14
- package/src/modules/inventory/workers/inventory.availability.worker.js +29 -30
- 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/orders/orders.client.js +2 -2
- package/src/modules/orders/router/customers.router.js +1 -1
- 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/routes/organizations.routes.js +1 -1
- 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/responsive.scss +1 -31
- package/src/styles/typography.scss +20 -5
- package/dist/main-CSzPfQYR.cjs +0 -11
- package/dist/martyrs/src/components/Address/Address.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.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/inventory/store/ inventory.store.cjs.map +0 -1
- package/dist/martyrs/src/modules/inventory/store/ inventory.store.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/modules/globals/controllers/classes/globals.websocket.ws.js +0 -102
- package/src/modules/globals/views/components/blocks/BlockFilter.vue +0 -60
- package/src/modules/inventory/docs/README.md +0 -291
- package/src/modules/inventory/models/stock.balance.model.js +0 -43
- package/src/modules/inventory/services/inventory.crud.js +0 -710
- package/src/modules/inventory/tests/inventory.test.js +0 -281
- 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
|
@@ -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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"}
|
|
@@ -1,16 +1,36 @@
|
|
|
1
|
-
import { ref, onMounted, watch, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode,
|
|
1
|
+
import { ref, onMounted, watch, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, Fragment, renderList, withCtx, createBlock, normalizeClass, createTextVNode, resolveDynamicComponent } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
3
|
import { useI18n } from "vue-i18n";
|
|
4
|
-
import _sfc_main$1 from "
|
|
4
|
+
import _sfc_main$1 from "../../../../../components/Spoiler/Spoiler.vue2.js";
|
|
5
|
+
import Field from "../../../../../components/Field/Field.vue.js";
|
|
6
|
+
import _sfc_main$2 from "../../../../../components/Checkbox/Checkbox.vue.js";
|
|
7
|
+
import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
|
|
5
8
|
import { state as state$1 } from "../../../../globals/views/store/globals.js";
|
|
6
9
|
import { actions } from "../../../../products/store/categories.js";
|
|
7
10
|
import { state } from "../../store/marketplace.js";
|
|
8
11
|
const _hoisted_1 = { class: "cols-2-1_3 z-index-3 pos-relative radius-big" };
|
|
9
|
-
const _hoisted_2 = { class: "o-y-scroll br-r br-solid br-light z-index-2 desktop-only h-100 pos-relative" };
|
|
10
|
-
const _hoisted_3 = { class: "
|
|
11
|
-
const _hoisted_4 = {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const _hoisted_2 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
|
|
13
|
+
const _hoisted_3 = { class: "w-100 o-y-scroll h-100" };
|
|
14
|
+
const _hoisted_4 = {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "mn-b-medium"
|
|
17
|
+
};
|
|
18
|
+
const _hoisted_5 = { class: "mn-b-small" };
|
|
19
|
+
const _hoisted_6 = { class: "gap-micro" };
|
|
20
|
+
const _hoisted_7 = ["onClick"];
|
|
21
|
+
const _hoisted_8 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
22
|
+
const _hoisted_9 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
23
|
+
const _hoisted_10 = { class: "mn-t-small" };
|
|
24
|
+
const _hoisted_11 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
25
|
+
const _hoisted_12 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
26
|
+
const _hoisted_13 = { class: "mn-t-small" };
|
|
27
|
+
const _hoisted_14 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
28
|
+
const _hoisted_15 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
29
|
+
const _hoisted_16 = { class: "mn-t-small" };
|
|
30
|
+
const _hoisted_17 = { class: "pd-thin" };
|
|
31
|
+
const _hoisted_18 = { class: "pd-medium radius-medium bg-light mn-b-thin" };
|
|
32
|
+
const _hoisted_19 = { class: "" };
|
|
33
|
+
const _hoisted_20 = { class: "rows-1" };
|
|
14
34
|
const _sfc_main = {
|
|
15
35
|
__name: "Marketplace",
|
|
16
36
|
setup(__props) {
|
|
@@ -22,6 +42,32 @@ const _sfc_main = {
|
|
|
22
42
|
country: null
|
|
23
43
|
});
|
|
24
44
|
ref(null);
|
|
45
|
+
const currentCategories = ref([]);
|
|
46
|
+
const searchLocation = ref("");
|
|
47
|
+
const selectedLocation = ref("All");
|
|
48
|
+
const locationOptions = ref(["All", "Phuket", "Bangkok", "Chiang Mai", "Pattaya"]);
|
|
49
|
+
const deliveryOptions = ref([
|
|
50
|
+
{ label: "Pickup", value: "pickup" },
|
|
51
|
+
{ label: "Delivery", value: "delivery" },
|
|
52
|
+
{ label: "Dine-in", value: "dinein" }
|
|
53
|
+
]);
|
|
54
|
+
const selectedDeliveryOptions = ref([]);
|
|
55
|
+
const paymentOptions = ref([
|
|
56
|
+
{ label: "Cash", value: "cash" },
|
|
57
|
+
{ label: "Card", value: "card" },
|
|
58
|
+
{ label: "Crypto", value: "crypto" },
|
|
59
|
+
{ label: "Bank Transfer", value: "transfer" }
|
|
60
|
+
]);
|
|
61
|
+
const selectedPaymentOptions = ref([]);
|
|
62
|
+
const selectCategory = (category) => {
|
|
63
|
+
console.log("Category selected:", category);
|
|
64
|
+
};
|
|
65
|
+
const clearFilters = () => {
|
|
66
|
+
selectedLocation.value = "All";
|
|
67
|
+
selectedDeliveryOptions.value = [];
|
|
68
|
+
selectedPaymentOptions.value = [];
|
|
69
|
+
searchLocation.value = "";
|
|
70
|
+
};
|
|
25
71
|
function denormalizeUrlParam(param) {
|
|
26
72
|
return param.replace(/-/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
|
|
27
73
|
}
|
|
@@ -105,20 +151,135 @@ const _sfc_main = {
|
|
|
105
151
|
const _component_router_view = resolveComponent("router-view");
|
|
106
152
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
107
153
|
createElementVNode("div", _hoisted_2, [
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
154
|
+
createElementVNode("div", _hoisted_3, [
|
|
155
|
+
currentCategories.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
156
|
+
createElementVNode("h4", _hoisted_5, toDisplayString(unref(route).params.categoryPath ? "Subcategories" : "Categories"), 1),
|
|
157
|
+
createElementVNode("div", _hoisted_6, [
|
|
158
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(currentCategories.value, (category) => {
|
|
159
|
+
return openBlock(), createElementBlock("div", {
|
|
160
|
+
key: category._id,
|
|
161
|
+
onClick: ($event) => selectCategory(category),
|
|
162
|
+
class: "pd-small radius-small cursor-pointer hover-bg-light transition-all"
|
|
163
|
+
}, toDisplayString(category.name), 9, _hoisted_7);
|
|
164
|
+
}), 128))
|
|
165
|
+
])
|
|
166
|
+
])) : createCommentVNode("", true),
|
|
167
|
+
createVNode(_sfc_main$1, {
|
|
168
|
+
class: "o-hidden mn-b-medium",
|
|
169
|
+
status: true
|
|
170
|
+
}, {
|
|
171
|
+
header: withCtx(({ isOpen }) => [
|
|
172
|
+
createElementVNode("div", _hoisted_8, [
|
|
173
|
+
_cache[6] || (_cache[6] = createElementVNode("h4", { class: "w-100" }, "Location", -1)),
|
|
174
|
+
createElementVNode("div", _hoisted_9, [
|
|
175
|
+
createVNode(IconChevronBottom, {
|
|
176
|
+
class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
177
|
+
fill: "rgb(var(--black))"
|
|
178
|
+
}, null, 8, ["class"])
|
|
179
|
+
])
|
|
180
|
+
])
|
|
181
|
+
]),
|
|
182
|
+
content: withCtx(() => [
|
|
183
|
+
createElementVNode("div", _hoisted_10, [
|
|
184
|
+
createVNode(Field, {
|
|
185
|
+
modelValue: searchLocation.value,
|
|
186
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchLocation.value = $event),
|
|
187
|
+
placeholder: "Search location...",
|
|
188
|
+
type: "text",
|
|
189
|
+
class: "w-100 bg-light pd-small radius-small mn-b-small"
|
|
190
|
+
}, null, 8, ["modelValue"]),
|
|
191
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(locationOptions.value, (location) => {
|
|
192
|
+
return openBlock(), createBlock(_sfc_main$2, {
|
|
193
|
+
key: location,
|
|
194
|
+
radio: selectedLocation.value,
|
|
195
|
+
"onUpdate:radio": _cache[1] || (_cache[1] = ($event) => selectedLocation.value = $event),
|
|
196
|
+
label: location,
|
|
197
|
+
value: location,
|
|
198
|
+
mode: "radio",
|
|
199
|
+
class: "mn-b-micro"
|
|
200
|
+
}, null, 8, ["radio", "label", "value"]);
|
|
201
|
+
}), 128))
|
|
202
|
+
])
|
|
203
|
+
]),
|
|
204
|
+
_: 1
|
|
205
|
+
}),
|
|
206
|
+
createVNode(_sfc_main$1, {
|
|
207
|
+
class: "o-hidden mn-b-medium",
|
|
208
|
+
status: true
|
|
209
|
+
}, {
|
|
210
|
+
header: withCtx(({ isOpen }) => [
|
|
211
|
+
createElementVNode("div", _hoisted_11, [
|
|
212
|
+
_cache[7] || (_cache[7] = createElementVNode("h4", { class: "w-100" }, "Delivery Options", -1)),
|
|
213
|
+
createElementVNode("div", _hoisted_12, [
|
|
214
|
+
createVNode(IconChevronBottom, {
|
|
215
|
+
class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
216
|
+
fill: "rgb(var(--black))"
|
|
217
|
+
}, null, 8, ["class"])
|
|
218
|
+
])
|
|
219
|
+
])
|
|
220
|
+
]),
|
|
221
|
+
content: withCtx(() => [
|
|
222
|
+
createElementVNode("div", _hoisted_13, [
|
|
223
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(deliveryOptions.value, (option) => {
|
|
224
|
+
return openBlock(), createBlock(_sfc_main$2, {
|
|
225
|
+
key: option.value,
|
|
226
|
+
checkbox: selectedDeliveryOptions.value,
|
|
227
|
+
"onUpdate:checkbox": _cache[2] || (_cache[2] = ($event) => selectedDeliveryOptions.value = $event),
|
|
228
|
+
label: option.label,
|
|
229
|
+
value: option.value,
|
|
230
|
+
mode: "checkbox",
|
|
231
|
+
class: "mn-b-micro"
|
|
232
|
+
}, null, 8, ["checkbox", "label", "value"]);
|
|
233
|
+
}), 128))
|
|
234
|
+
])
|
|
235
|
+
]),
|
|
236
|
+
_: 1
|
|
237
|
+
}),
|
|
238
|
+
createVNode(_sfc_main$1, {
|
|
239
|
+
class: "o-hidden mn-b-medium",
|
|
240
|
+
status: true
|
|
241
|
+
}, {
|
|
242
|
+
header: withCtx(({ isOpen }) => [
|
|
243
|
+
createElementVNode("div", _hoisted_14, [
|
|
244
|
+
_cache[8] || (_cache[8] = createElementVNode("h4", { class: "w-100" }, "Payment Options", -1)),
|
|
245
|
+
createElementVNode("div", _hoisted_15, [
|
|
246
|
+
createVNode(IconChevronBottom, {
|
|
247
|
+
class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
248
|
+
fill: "rgb(var(--black))"
|
|
249
|
+
}, null, 8, ["class"])
|
|
250
|
+
])
|
|
251
|
+
])
|
|
252
|
+
]),
|
|
253
|
+
content: withCtx(() => [
|
|
254
|
+
createElementVNode("div", _hoisted_16, [
|
|
255
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(paymentOptions.value, (option) => {
|
|
256
|
+
return openBlock(), createBlock(_sfc_main$2, {
|
|
257
|
+
key: option.value,
|
|
258
|
+
checkbox: selectedPaymentOptions.value,
|
|
259
|
+
"onUpdate:checkbox": _cache[3] || (_cache[3] = ($event) => selectedPaymentOptions.value = $event),
|
|
260
|
+
label: option.label,
|
|
261
|
+
value: option.value,
|
|
262
|
+
mode: "checkbox",
|
|
263
|
+
class: "mn-b-micro"
|
|
264
|
+
}, null, 8, ["checkbox", "label", "value"]);
|
|
265
|
+
}), 128))
|
|
266
|
+
])
|
|
267
|
+
]),
|
|
268
|
+
_: 1
|
|
269
|
+
}),
|
|
270
|
+
createElementVNode("button", {
|
|
271
|
+
onClick: clearFilters,
|
|
272
|
+
class: "bg-main w-100 button mn-t-medium"
|
|
273
|
+
}, " Clear Filters ")
|
|
274
|
+
])
|
|
114
275
|
]),
|
|
115
|
-
createElementVNode("div",
|
|
116
|
-
createElementVNode("header",
|
|
117
|
-
createElementVNode("h2",
|
|
118
|
-
_cache[
|
|
276
|
+
createElementVNode("div", _hoisted_17, [
|
|
277
|
+
createElementVNode("header", _hoisted_18, [
|
|
278
|
+
createElementVNode("h2", _hoisted_19, [
|
|
279
|
+
_cache[9] || (_cache[9] = createElementVNode("span", { class: "" }, "Weed Deliveries in ", -1)),
|
|
119
280
|
localPosition.value.city || localPosition.value.state || localPosition.value.country ? (openBlock(), createElementBlock("span", {
|
|
120
281
|
key: 0,
|
|
121
|
-
onClick: _cache[
|
|
282
|
+
onClick: _cache[4] || (_cache[4] = (a) => {
|
|
122
283
|
state$1.isOpenLocationPopup = true;
|
|
123
284
|
}),
|
|
124
285
|
class: "t-main t-semi cursor-pointer"
|
|
@@ -134,14 +295,14 @@ const _sfc_main = {
|
|
|
134
295
|
], 64)) : createCommentVNode("", true)
|
|
135
296
|
])) : (openBlock(), createElementBlock("span", {
|
|
136
297
|
key: 1,
|
|
137
|
-
onClick: _cache[
|
|
298
|
+
onClick: _cache[5] || (_cache[5] = (a) => {
|
|
138
299
|
state$1.isOpenLocationPopup = true;
|
|
139
300
|
}),
|
|
140
301
|
class: "t-main t-semi cursor-pointer"
|
|
141
302
|
}, "The World"))
|
|
142
303
|
])
|
|
143
304
|
]),
|
|
144
|
-
createElementVNode("div",
|
|
305
|
+
createElementVNode("div", _hoisted_20, [
|
|
145
306
|
createVNode(_component_router_view, null, {
|
|
146
307
|
default: withCtx(({ Component, route: route2 }) => [
|
|
147
308
|
(openBlock(), createBlock(resolveDynamicComponent(Component), {
|
package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Marketplace.vue.js","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":["marketplace.state","categories.actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Marketplace.vue.js","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":["marketplace.state","categories.actions"],"mappings":"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"}
|