@ozdao/martyrs 0.2.508 → 0.2.510
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/{main-Dq-UfO4G.js → main-DrpgUZcn.js} +2808 -2615
- package/dist/main-XJQJFmgj.cjs +11 -0
- package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
- package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +4 -3
- package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Carousel.vue.js +5 -4
- package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +3 -3
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +3 -3
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue2.cjs → Tab.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Tab/{Tab.vue2.js.map → Tab.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
- package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
- 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.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +17 -11
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +18 -12
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.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.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -0
- 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 +1 -0
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +15 -15
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +8 -3
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +8 -3
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs +121 -107
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +131 -117
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js.map +1 -1
- 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/NavigationBar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +112 -49
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +121 -58
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs +3 -3
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js +3 -3
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +136 -134
- 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 +136 -134
- 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 +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +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/PlaylistForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.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/Artist.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.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/SearchResults.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.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/components/pages/TrackCreate.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +2 -1
- package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.js +2 -1
- package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/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 +61 -9
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +61 -9
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.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/pages/OrderCreate.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.cjs +36 -44
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +36 -44
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs +7 -0
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.js +7 -0
- package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +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.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +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 +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +17 -28
- 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 +17 -28
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +9 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +9 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +3 -2
- 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 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +3 -3
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/pages/Product.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 +118 -135
- 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 +123 -140
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +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/EditRecommended.vue.cjs +3 -5
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +4 -6
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +10 -5
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +10 -5
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +6 -3
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +6 -3
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +2 -2
- package/dist/martyrs/src/modules/products/store/products.cjs +5 -5
- package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/products.js +5 -5
- package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
- package/dist/martyrs/src/modules/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/pages/Map.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- 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/pages/Wallet.vue.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/orders.server.cjs +58 -0
- package/dist/orders.server.js +58 -0
- package/dist/products.server.cjs +79 -45
- package/dist/products.server.js +79 -45
- package/dist/style.css +44 -52
- package/dist/{web-BXajFCU2.js → web-C5cmb1FH.js} +1 -1
- package/dist/{web-DaBwwCQ5.cjs → web-d40xcY_Y.cjs} +1 -1
- package/package.json +1 -1
- package/src/components/Checkbox/Checkbox.vue +1 -1
- package/src/components/Feed/Carousel.vue +3 -1
- package/src/components/Feed/Feed.vue +1 -1
- package/src/components/Field/Field.vue +5 -0
- package/src/components/FieldBig/FieldBig.vue +2 -2
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +17 -10
- package/src/modules/globals/views/components/layouts/Client.vue +12 -1
- package/src/modules/globals/views/components/partials/Footer.centered.vue +338 -0
- package/src/modules/globals/views/components/partials/Footer.vue +104 -99
- package/src/modules/globals/views/components/partials/Header.vue +1 -1
- package/src/modules/globals/views/components/sections/Filters.vue +73 -15
- package/src/modules/icons/logos/Logotype.vue +1 -1
- package/src/modules/inventory/components/pages/Inventory.vue +126 -119
- package/src/modules/orders/components/forms/FormCustomerDetails.vue +51 -0
- package/src/modules/orders/middlewares/customers.verifier.js +60 -0
- package/src/modules/orders/models/customer.model.js +18 -0
- package/src/modules/orders/orders.client.js +36 -44
- package/src/modules/orders/store/models/customer.js +7 -0
- package/src/modules/organizations/configs/navigation.organization.config.js +17 -26
- package/src/modules/products/TASKS.MD +1 -157
- package/src/modules/products/components/elements/QuantitySelector.vue +17 -9
- package/src/modules/products/components/pages/Product.vue +1 -1
- package/src/modules/products/components/pages/Products.vue +148 -175
- package/src/modules/products/components/sections/EditRecommended.vue +1 -3
- package/src/modules/products/components/sections/ProductsPopular.vue +9 -5
- package/src/modules/products/components/sections/ProductsRecommended.vue +4 -1
- package/src/modules/products/controllers/configs/products.lookup.config.js +31 -4
- package/src/modules/products/controllers/products.controller.js +14 -2
- package/src/modules/products/controllers/queries/products.queries.js +46 -43
- package/src/modules/products/models/product.model.js +4 -0
- package/src/modules/products/store/products.js +5 -5
- package/src/styles/base/all.scss +9 -4
- package/src/styles/config.scss +10 -0
- package/src/styles/responsive.scss +2 -1
- package/src/styles/typography.scss +0 -5
- package/dist/main-AWSb_d2P.cjs +0 -11
- package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +0 -1
|
@@ -57,11 +57,10 @@ const _sfc_main = {
|
|
|
57
57
|
key: product._id,
|
|
58
58
|
image: product.images?.[0] ? (_ctx.FILE_SERVER_URL || "") + product.images[0] : "",
|
|
59
59
|
name: product.name,
|
|
60
|
-
title: `${vue.unref(returnCurrency)()}${product.price}`,
|
|
61
60
|
showThumbnail: true,
|
|
62
61
|
actions: [
|
|
63
62
|
{
|
|
64
|
-
|
|
63
|
+
component: IconDelete.default,
|
|
65
64
|
class: "bg-red",
|
|
66
65
|
handler: () => {
|
|
67
66
|
globals.actions.delete(recommended.value, product, index);
|
|
@@ -69,7 +68,7 @@ const _sfc_main = {
|
|
|
69
68
|
}
|
|
70
69
|
],
|
|
71
70
|
class: "bg-white pd-thin radius-medium w-100 mn-b-thin"
|
|
72
|
-
}, null, 8, ["image", "name", "
|
|
71
|
+
}, null, 8, ["image", "name", "actions"]);
|
|
73
72
|
}), 128))
|
|
74
73
|
])) : vue.createCommentVNode("", true)
|
|
75
74
|
]),
|
|
@@ -108,14 +107,13 @@ const _sfc_main = {
|
|
|
108
107
|
key: product._id,
|
|
109
108
|
image: product.images?.[0] ? (_ctx.FILE_SERVER_URL || "") + product.images[0] : "",
|
|
110
109
|
name: product.name,
|
|
111
|
-
title: `${vue.unref(returnCurrency)()}${product.price}`,
|
|
112
110
|
showThumbnail: true,
|
|
113
111
|
onClick: ($event) => {
|
|
114
112
|
globals.actions.add(recommended.value, product);
|
|
115
113
|
closeRecommendedPopup();
|
|
116
114
|
},
|
|
117
115
|
class: "bg-white pd-thin radius-medium w-100 mn-b-thin cursor-pointer hover-scale-1"
|
|
118
|
-
}, null, 8, ["image", "name", "
|
|
116
|
+
}, null, 8, ["image", "name", "onClick"]);
|
|
119
117
|
}), 128))
|
|
120
118
|
]),
|
|
121
119
|
_: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRecommended.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/EditRecommended.vue"],"sourcesContent":["<template>\n <Block\n title=\"Recommended Products\"\n placeholder=\"No recommended products added yet. Add products that are frequently bought together.\"\n :actions=\"[{\n label: '+',\n function: () => openRecommendedPopup()\n }]\"\n >\n <div v-if=\"recommended?.length > 0\" class=\"rows-1 gap-thin\">\n <CardPosition \n v-for=\"(product, index) in recommended\" \n :key=\"product._id\" \n :image=\"product.images?.[0] ? (FILE_SERVER_URL || '') + product.images[0] : ''\"\n :name=\"product.name\"\n :
|
|
1
|
+
{"version":3,"file":"EditRecommended.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/EditRecommended.vue"],"sourcesContent":["<template>\n <Block\n title=\"Recommended Products\"\n placeholder=\"No recommended products added yet. Add products that are frequently bought together.\"\n :actions=\"[{\n label: '+',\n function: () => openRecommendedPopup()\n }]\"\n >\n <div v-if=\"recommended?.length > 0\" class=\"rows-1 gap-thin\">\n <CardPosition \n v-for=\"(product, index) in recommended\" \n :key=\"product._id\" \n :image=\"product.images?.[0] ? (FILE_SERVER_URL || '') + product.images[0] : ''\"\n :name=\"product.name\"\n :showThumbnail=\"true\"\n :actions=\"[\n {\n component: IconDelete,\n class: 'bg-red',\n handler: () => {\n globals.actions.delete(recommended, product, index);\n }\n }\n ]\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </div>\n </Block>\n\n <Popup \n title=\"Add Recommended Product\" \n @close-popup=\"closeRecommendedPopup\" \n :isPopupOpen=\"isRecommendedPopupOpen\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <div class=\"bg-light mn-b-thin h-min-20r h-max-20r o-scroll pd-medium radius-medium\">\n <Feed\n :search=\"{\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id,\n }\"\n v-slot=\"{ items }\"\n class=\"\"\n >\n <CardPosition\n v-for=\"(product, index) in items\" :key=\"product._id\"\n :image=\"product.images?.[0] ? (FILE_SERVER_URL || '') + product.images[0] : ''\"\n :name=\"product.name\"\n :showThumbnail=\"true\"\n @click=\"globals.actions.add(recommended, product); closeRecommendedPopup();\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin cursor-pointer hover-scale-1\"\n />\n </Feed>\n </div>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, defineModel } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Импорт компонентов\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\n\n// Импорт модулей и глобальных хранилищ\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\n\n// Импорт карточек\nimport CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\n// Получение route и router\nconst route = useRoute();\nconst router = useRouter();\nconst { returnCurrency } = useGlobalMixins();\n\n// Используем defineModel для работы с v-model в родительском компоненте\nconst recommended = defineModel('recommended');\n\n// Локальное состояние\nconst isRecommendedPopupOpen = ref(false);\n\n// При монтировании компонента инициализируем recommended\nonMounted(async () => {\n // Инициализируем recommended как пустой массив, если не определено или не массив\n if (!recommended.value || !Array.isArray(recommended.value)) {\n recommended.value = [];\n }\n});\n\n// Открытие попапа для добавления рекомендованного товара\nfunction openRecommendedPopup() {\n isRecommendedPopupOpen.value = true;\n}\n\n// Закрытие попапа\nfunction closeRecommendedPopup() {\n isRecommendedPopupOpen.value = false;\n}\n</script>"],"names":["useRoute","useRouter","useGlobalMixins","_useModel","ref","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA0FA,UAAM,QAAQA,UAAAA,SAAQ;AACPC,cAAAA,UAAS;AACxB,UAAM,EAAE,eAAc,IAAKC,uBAAe;AAG1C,UAAM,cAAcC,IAAAA,SAAW,SAAC,aAAa;AAG7C,UAAM,yBAAyBC,IAAAA,IAAI,KAAK;AAGxCC,QAAAA,UAAU,YAAY;AAEpB,UAAI,CAAC,YAAY,SAAS,CAAC,MAAM,QAAQ,YAAY,KAAK,GAAG;AAC3D,oBAAY,QAAQ,CAAA;AAAA,MACtB;AAAA,IACF,CAAC;AAGD,aAAS,uBAAuB;AAC9B,6BAAuB,QAAQ;AAAA,IACjC;AAGA,aAAS,wBAAwB;AAC/B,6BAAuB,QAAQ;AAAA,IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useModel, ref, onMounted, createElementBlock, openBlock, Fragment, createVNode, withCtx, createCommentVNode, renderList, createBlock,
|
|
1
|
+
import { useModel, ref, onMounted, createElementBlock, openBlock, Fragment, createVNode, withCtx, createCommentVNode, renderList, createBlock, createElementVNode, unref } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
3
|
import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
|
|
4
4
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
@@ -55,11 +55,10 @@ const _sfc_main = {
|
|
|
55
55
|
key: product._id,
|
|
56
56
|
image: product.images?.[0] ? (_ctx.FILE_SERVER_URL || "") + product.images[0] : "",
|
|
57
57
|
name: product.name,
|
|
58
|
-
title: `${unref(returnCurrency)()}${product.price}`,
|
|
59
58
|
showThumbnail: true,
|
|
60
59
|
actions: [
|
|
61
60
|
{
|
|
62
|
-
|
|
61
|
+
component: _sfc_main$3,
|
|
63
62
|
class: "bg-red",
|
|
64
63
|
handler: () => {
|
|
65
64
|
actions.delete(recommended.value, product, index);
|
|
@@ -67,7 +66,7 @@ const _sfc_main = {
|
|
|
67
66
|
}
|
|
68
67
|
],
|
|
69
68
|
class: "bg-white pd-thin radius-medium w-100 mn-b-thin"
|
|
70
|
-
}, null, 8, ["image", "name", "
|
|
69
|
+
}, null, 8, ["image", "name", "actions"]);
|
|
71
70
|
}), 128))
|
|
72
71
|
])) : createCommentVNode("", true)
|
|
73
72
|
]),
|
|
@@ -106,14 +105,13 @@ const _sfc_main = {
|
|
|
106
105
|
key: product._id,
|
|
107
106
|
image: product.images?.[0] ? (_ctx.FILE_SERVER_URL || "") + product.images[0] : "",
|
|
108
107
|
name: product.name,
|
|
109
|
-
title: `${unref(returnCurrency)()}${product.price}`,
|
|
110
108
|
showThumbnail: true,
|
|
111
109
|
onClick: ($event) => {
|
|
112
110
|
actions.add(recommended.value, product);
|
|
113
111
|
closeRecommendedPopup();
|
|
114
112
|
},
|
|
115
113
|
class: "bg-white pd-thin radius-medium w-100 mn-b-thin cursor-pointer hover-scale-1"
|
|
116
|
-
}, null, 8, ["image", "name", "
|
|
114
|
+
}, null, 8, ["image", "name", "onClick"]);
|
|
117
115
|
}), 128))
|
|
118
116
|
]),
|
|
119
117
|
_: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/EditRecommended.vue"],"sourcesContent":["<template>\n <Block\n title=\"Recommended Products\"\n placeholder=\"No recommended products added yet. Add products that are frequently bought together.\"\n :actions=\"[{\n label: '+',\n function: () => openRecommendedPopup()\n }]\"\n >\n <div v-if=\"recommended?.length > 0\" class=\"rows-1 gap-thin\">\n <CardPosition \n v-for=\"(product, index) in recommended\" \n :key=\"product._id\" \n :image=\"product.images?.[0] ? (FILE_SERVER_URL || '') + product.images[0] : ''\"\n :name=\"product.name\"\n :
|
|
1
|
+
{"version":3,"file":"EditRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/EditRecommended.vue"],"sourcesContent":["<template>\n <Block\n title=\"Recommended Products\"\n placeholder=\"No recommended products added yet. Add products that are frequently bought together.\"\n :actions=\"[{\n label: '+',\n function: () => openRecommendedPopup()\n }]\"\n >\n <div v-if=\"recommended?.length > 0\" class=\"rows-1 gap-thin\">\n <CardPosition \n v-for=\"(product, index) in recommended\" \n :key=\"product._id\" \n :image=\"product.images?.[0] ? (FILE_SERVER_URL || '') + product.images[0] : ''\"\n :name=\"product.name\"\n :showThumbnail=\"true\"\n :actions=\"[\n {\n component: IconDelete,\n class: 'bg-red',\n handler: () => {\n globals.actions.delete(recommended, product, index);\n }\n }\n ]\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </div>\n </Block>\n\n <Popup \n title=\"Add Recommended Product\" \n @close-popup=\"closeRecommendedPopup\" \n :isPopupOpen=\"isRecommendedPopupOpen\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <div class=\"bg-light mn-b-thin h-min-20r h-max-20r o-scroll pd-medium radius-medium\">\n <Feed\n :search=\"{\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id,\n }\"\n v-slot=\"{ items }\"\n class=\"\"\n >\n <CardPosition\n v-for=\"(product, index) in items\" :key=\"product._id\"\n :image=\"product.images?.[0] ? (FILE_SERVER_URL || '') + product.images[0] : ''\"\n :name=\"product.name\"\n :showThumbnail=\"true\"\n @click=\"globals.actions.add(recommended, product); closeRecommendedPopup();\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin cursor-pointer hover-scale-1\"\n />\n </Feed>\n </div>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, defineModel } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Импорт компонентов\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\n\n// Импорт модулей и глобальных хранилищ\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\n\n// Импорт карточек\nimport CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\n// Получение route и router\nconst route = useRoute();\nconst router = useRouter();\nconst { returnCurrency } = useGlobalMixins();\n\n// Используем defineModel для работы с v-model в родительском компоненте\nconst recommended = defineModel('recommended');\n\n// Локальное состояние\nconst isRecommendedPopupOpen = ref(false);\n\n// При монтировании компонента инициализируем recommended\nonMounted(async () => {\n // Инициализируем recommended как пустой массив, если не определено или не массив\n if (!recommended.value || !Array.isArray(recommended.value)) {\n recommended.value = [];\n }\n});\n\n// Открытие попапа для добавления рекомендованного товара\nfunction openRecommendedPopup() {\n isRecommendedPopupOpen.value = true;\n}\n\n// Закрытие попапа\nfunction closeRecommendedPopup() {\n isRecommendedPopupOpen.value = false;\n}\n</script>"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA0FA,UAAM,QAAQ,SAAQ;AACP,cAAS;AACxB,UAAM,EAAE,eAAc,IAAK,gBAAe;AAG1C,UAAM,cAAcA,SAAW,SAAC,aAAa;AAG7C,UAAM,yBAAyB,IAAI,KAAK;AAGxC,cAAU,YAAY;AAEpB,UAAI,CAAC,YAAY,SAAS,CAAC,MAAM,QAAQ,YAAY,KAAK,GAAG;AAC3D,oBAAY,QAAQ,CAAA;AAAA,MACtB;AAAA,IACF,CAAC;AAGD,aAAS,uBAAuB;AAC9B,6BAAuB,QAAQ;AAAA,IACjC;AAGA,aAAS,wBAAwB;AAC/B,6BAAuB,QAAQ;AAAA,IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,7 +7,7 @@ const variants_store = require("../../store/variants.store.cjs");
|
|
|
7
7
|
const products = require("../../store/products.cjs");
|
|
8
8
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
9
9
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
10
|
-
const Button = require("../../../../components/Button/Button.
|
|
10
|
+
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
11
11
|
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
12
12
|
const Select = require("../../../../components/Select/Select.vue.cjs");
|
|
13
13
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
@@ -5,7 +5,7 @@ import variantsStore from "../../store/variants.store.js";
|
|
|
5
5
|
import { state } from "../../store/products.js";
|
|
6
6
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
7
7
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
8
|
-
import _sfc_main$3 from "../../../../components/Button/Button.
|
|
8
|
+
import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
|
|
9
9
|
import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
|
|
10
10
|
import Select from "../../../../components/Select/Select.vue.js";
|
|
11
11
|
import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueI18n = require("vue-i18n");
|
|
5
5
|
const IconShopcartAdd = require("../../../icons/actions/IconShopcartAdd.vue.cjs");
|
|
6
|
-
const Button = require("../../../../components/Button/Button.
|
|
6
|
+
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
7
7
|
const ProductVariants = require("../blocks/ProductVariants.vue.cjs");
|
|
8
8
|
const ProductDiscounts = require("../blocks/ProductDiscounts.vue.cjs");
|
|
9
9
|
const QuantitySelector = require("../elements/QuantitySelector.vue.cjs");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, computed, createElementBlock, createCommentVNode, openBlock, createVNode, createElementVNode, toDisplayString, withCtx, unref, Fragment } from "vue";
|
|
2
2
|
import { useI18n } from "vue-i18n";
|
|
3
3
|
import _sfc_main$5 from "../../../icons/actions/IconShopcartAdd.vue.js";
|
|
4
|
-
import _sfc_main$4 from "../../../../components/Button/Button.
|
|
4
|
+
import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
|
|
5
5
|
import _sfc_main$1 from "../blocks/ProductVariants.vue.js";
|
|
6
6
|
import ProductDiscounts from "../blocks/ProductDiscounts.vue.js";
|
|
7
7
|
import _sfc_main$3 from "../elements/QuantitySelector.vue.js";
|
|
@@ -12,18 +12,23 @@ const _sfc_main = {
|
|
|
12
12
|
const _component_router_link = vue.resolveComponent("router-link");
|
|
13
13
|
return vue.openBlock(), vue.createBlock(Carousel.default, {
|
|
14
14
|
store: {
|
|
15
|
-
read: products.actions.read
|
|
15
|
+
read: (options) => products.actions.read(options)
|
|
16
16
|
},
|
|
17
17
|
options: {
|
|
18
|
-
limit:
|
|
18
|
+
limit: 16,
|
|
19
|
+
sortParam: "views",
|
|
20
|
+
owner: _ctx.$route.name?.includes("Organization") ? _ctx.$route.params._id : null,
|
|
21
|
+
lookup: ["variants"]
|
|
19
22
|
},
|
|
20
23
|
text: { title: "No products available" },
|
|
21
24
|
showDots: true,
|
|
22
25
|
class: "popupar_products"
|
|
23
26
|
}, {
|
|
24
|
-
default: vue.withCtx(({
|
|
27
|
+
default: vue.withCtx(({
|
|
28
|
+
item
|
|
29
|
+
}) => [
|
|
25
30
|
vue.createVNode(_component_router_link, {
|
|
26
|
-
to: { name: "Organization_Product", params: { _id: item.owner.target, product: item._id } },
|
|
31
|
+
to: { name: "Organization_Product", params: { _id: item.owner.target._id || item.owner.target, product: item._id } },
|
|
27
32
|
class: "h-100 pos-relative block"
|
|
28
33
|
}, {
|
|
29
34
|
default: vue.withCtx(() => [
|
|
@@ -36,7 +41,7 @@ const _sfc_main = {
|
|
|
36
41
|
}, 1032, ["to"])
|
|
37
42
|
]),
|
|
38
43
|
_: 1
|
|
39
|
-
}, 8, ["store"]);
|
|
44
|
+
}, 8, ["store", "options"]);
|
|
40
45
|
};
|
|
41
46
|
}
|
|
42
47
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsPopular.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProductsPopular.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -10,18 +10,23 @@ const _sfc_main = {
|
|
|
10
10
|
const _component_router_link = resolveComponent("router-link");
|
|
11
11
|
return openBlock(), createBlock(Carousel, {
|
|
12
12
|
store: {
|
|
13
|
-
read: actions.read
|
|
13
|
+
read: (options) => actions.read(options)
|
|
14
14
|
},
|
|
15
15
|
options: {
|
|
16
|
-
limit:
|
|
16
|
+
limit: 16,
|
|
17
|
+
sortParam: "views",
|
|
18
|
+
owner: _ctx.$route.name?.includes("Organization") ? _ctx.$route.params._id : null,
|
|
19
|
+
lookup: ["variants"]
|
|
17
20
|
},
|
|
18
21
|
text: { title: "No products available" },
|
|
19
22
|
showDots: true,
|
|
20
23
|
class: "popupar_products"
|
|
21
24
|
}, {
|
|
22
|
-
default: withCtx(({
|
|
25
|
+
default: withCtx(({
|
|
26
|
+
item
|
|
27
|
+
}) => [
|
|
23
28
|
createVNode(_component_router_link, {
|
|
24
|
-
to: { name: "Organization_Product", params: { _id: item.owner.target, product: item._id } },
|
|
29
|
+
to: { name: "Organization_Product", params: { _id: item.owner.target._id || item.owner.target, product: item._id } },
|
|
25
30
|
class: "h-100 pos-relative block"
|
|
26
31
|
}, {
|
|
27
32
|
default: withCtx(() => [
|
|
@@ -34,7 +39,7 @@ const _sfc_main = {
|
|
|
34
39
|
}, 1032, ["to"])
|
|
35
40
|
]),
|
|
36
41
|
_: 1
|
|
37
|
-
}, 8, ["store"]);
|
|
42
|
+
}, 8, ["store", "options"]);
|
|
38
43
|
};
|
|
39
44
|
}
|
|
40
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsPopular.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProductsPopular.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
|
-
const Button = require("../../../../components/Button/Button.
|
|
5
|
+
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
6
6
|
const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
|
|
7
7
|
const CardProduct = require("../blocks/CardProduct.vue.cjs");
|
|
8
8
|
const IconProducts = require("../../../icons/entities/IconProducts.vue.cjs");
|
|
9
9
|
const IconShopcartAdd = require("../../../icons/actions/IconShopcartAdd.vue.cjs");
|
|
10
10
|
const shopcart = require("../../../orders/store/shopcart.cjs");
|
|
11
|
-
const _hoisted_1 = { class: "recommended-products cols-4 mobile:cols-2 gap-thin" };
|
|
11
|
+
const _hoisted_1 = { class: "recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin" };
|
|
12
12
|
const _hoisted_2 = { class: "flex-center flex flex-column pd-small radius-small br-solid br-1px br-light" };
|
|
13
13
|
const _hoisted_3 = { class: "mn-b-thin i-extra pd-small bg-light radius-extra" };
|
|
14
14
|
const _hoisted_4 = { class: "mn-b-medium h3 t-medium" };
|
|
@@ -133,7 +133,10 @@ const _sfc_main = {
|
|
|
133
133
|
_cache[3] || (_cache[3] = vue.createElementVNode("p", { class: "mn-b-small" }, "Total price:", -1)),
|
|
134
134
|
vue.createElementVNode("p", _hoisted_4, "$" + vue.toDisplayString(totalPrice.value), 1),
|
|
135
135
|
vue.createVNode(Button.default, {
|
|
136
|
+
disabled: selectedProducts.value.length < 1,
|
|
136
137
|
class: "bg-main gap-micro",
|
|
138
|
+
showSuccess: false,
|
|
139
|
+
showLoader: false,
|
|
137
140
|
submit: canAddToCart.value ? addSelectedToCart : void 0
|
|
138
141
|
}, {
|
|
139
142
|
default: vue.withCtx(() => [
|
|
@@ -141,7 +144,7 @@ const _sfc_main = {
|
|
|
141
144
|
_cache[2] || (_cache[2] = vue.createElementVNode("span", null, "Add to Cart", -1))
|
|
142
145
|
]),
|
|
143
146
|
_: 1
|
|
144
|
-
}, 8, ["submit"])
|
|
147
|
+
}, 8, ["disabled", "submit"])
|
|
145
148
|
])
|
|
146
149
|
])
|
|
147
150
|
]);
|
package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsRecommended.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push({\n name: 'Organization_Product', \n params: { \n _id: product.owner.target, \n product: product._id \n } \n })\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-solid br-1px br-light\">\n <div class=\"mn-b-thin i-extra pd-small bg-light radius-extra\">\n <IconProducts class=\"i-big\"/>\n </div>\n <p class=\"mn-b-small\">Total price:</p>\n <p class=\"mn-b-medium h3 t-medium\">${{ totalPrice }}</p>\n <Button \n class=\"bg-main gap-micro\"\n :submit=\"canAddToCart ? addSelectedToCart : undefined\"\n >\n <IconShopcartAdd class=\"i-semi\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["useRouter","getCurrentInstance","ref","computed","shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAeA,UAAM,SAASA,UAAAA,UAAS;AACxB,UAAM,EAAE,MAAK,IAAKC,IAAAA,mBAAkB;AAGpC,UAAM,QAAQ;AASd,UAAM,mBAAmBC,IAAAA,IAAI,MAAM,SAAS,OAAO,OAAK,EAAE,UAAU,SAAS,CAAC,EAAE,IAAI,OAAK,EAAE,GAAG,CAAC;AAGzEA,QAAAA,IAAI,IAAI;AAG9B,UAAM,aAAaC,IAAAA,SAAS,MAAM;AAChC,aAAO,MAAM,SACV,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC,EAClD,OAAO,CAAC,KAAK,MAAM;AAClB,cAAM,QAAQ,EAAE,WAAW,CAAC,GAAG,SAAS;AACxC,eAAO,MAAM;AAAA,MACf,GAAG,CAAC,EACH,QAAQ,CAAC;AAAA,IACd,CAAC;AAGD,UAAM,eAAeA,IAAAA,SAAS,MAAM;AAClC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAClF,aAAO,SAAS,SAAS,KAAK,SAAS,KAAK,OAAK,EAAE,UAAU,SAAS,CAAC;AAAA,IACzE,CAAC;AAED,UAAM,qBAAqB,CAAC,YAAY;AACtC,UAAI,SAAS,OAAO,SAAS,OAAO,QAAQ;AAC1C,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,QAAQ;AAAA,YACN,KAAK,QAAQ,MAAM;AAAA,YACnB,SAAS,QAAQ;AAAA,UACzB;AAAA,QACA,CAAK;AAAA,MACH;AAAA,IACF;AAGA,UAAM,oBAAoB,YAAY;AACpC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAElF,UAAI,SAAS,WAAW,EAAG;AAE3B,UAAI;AAEF,cAAM,eAAe,SAAS,CAAC;AAC/B,cAAM,iBAAiB,aAAa,OAAO,QAAQ,OAAO,aAAa,OAAO;AAG9E,YAAIC,SAAAA,MAAe,gBAAgBA,eAAe,iBAAiB,gBAAgB;AAEjF,gBAAM,SAAS,MAAM,MAAM,OAAO;AAAA,YAChC,OAAO;AAAA,YACP,SAAS;AAAA,YACT,SAAS;AAAA,cACP,EAAE,OAAO,UAAU,OAAO,MAAK;AAAA,cAC/B,EAAE,OAAO,WAAW,OAAO,KAAI;AAAA,YACzC;AAAA,UACA,CAAO;AAED,cAAI,CAAC,OAAQ;AAEbA,mBAAAA,MAAe,YAAY,CAAA;AAAA,QAC7B;AAEAA,iBAAAA,MAAe,eAAe;AAG9B,cAAM,eAAe,SAAS,OAAO,OAAK,EAAE,YAAY,MAAM;AAC9D,YAAI,cAAc;AAGlB,YAAI,aAAa,SAAS,GAAG;AAC3B,gBAAM,mBAAmB,aAAa,CAAC;AACvC,gBAAM,eAAe,iBAAiB,WAAW,CAAC;AAElD,cAAI,cAAc;AAChB,0BAAc,MAAM,MAAM;AAAA,cACxB,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb;AAAA,cACA,aAAa,SAAS,iBAAiB;AAAA,YACjD;AAEQ,gBAAI,CAAC,YAAa;AAAA,UACpB;AAAA,QACF;AAGA,mBAAW,WAAW,UAAU;AAE9B,cAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,EAAG;AAGxD,gBAAM,UAAU,QAAQ,SAAS,CAAC;AAGlC,gBAAM,aAAa,QAAQ,YAAY,SAAS,cAAc;AAE9D,gBAAMC,SAAAA,QAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UACR;AAAA,QACI;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAAA,MAC9C;AAAA,IACF
|
|
1
|
+
{"version":3,"file":"ProductsRecommended.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push({\n name: 'Organization_Product', \n params: { \n _id: product.owner.target, \n product: product._id \n } \n })\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-solid br-1px br-light\">\n <div class=\"mn-b-thin i-extra pd-small bg-light radius-extra\">\n <IconProducts class=\"i-big\"/>\n </div>\n <p class=\"mn-b-small\">Total price:</p>\n <p class=\"mn-b-medium h3 t-medium\">${{ totalPrice }}</p>\n <Button \n :disabled=\"selectedProducts.length < 1\"\n class=\"bg-main gap-micro\"\n :showSuccess=\"false\"\n :showLoader=\"false\"\n :submit=\"canAddToCart ? addSelectedToCart : undefined\"\n >\n <IconShopcartAdd class=\"i-semi\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["useRouter","getCurrentInstance","ref","computed","shopcart.state","shopcart.actions"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { getCurrentInstance, ref, computed, createElementBlock, openBlock, createElementVNode, Fragment, renderList, createBlock, withCtx, createVNode, withModifiers, toDisplayString } from "vue";
|
|
2
2
|
import { useRouter } from "vue-router";
|
|
3
|
-
import _sfc_main$4 from "../../../../components/Button/Button.
|
|
3
|
+
import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
|
|
4
4
|
import _sfc_main$2 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../blocks/CardProduct.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../icons/entities/IconProducts.vue.js";
|
|
7
7
|
import _sfc_main$5 from "../../../icons/actions/IconShopcartAdd.vue.js";
|
|
8
8
|
import { state, actions } from "../../../orders/store/shopcart.js";
|
|
9
|
-
const _hoisted_1 = { class: "recommended-products cols-4 mobile:cols-2 gap-thin" };
|
|
9
|
+
const _hoisted_1 = { class: "recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin" };
|
|
10
10
|
const _hoisted_2 = { class: "flex-center flex flex-column pd-small radius-small br-solid br-1px br-light" };
|
|
11
11
|
const _hoisted_3 = { class: "mn-b-thin i-extra pd-small bg-light radius-extra" };
|
|
12
12
|
const _hoisted_4 = { class: "mn-b-medium h3 t-medium" };
|
|
@@ -131,7 +131,10 @@ const _sfc_main = {
|
|
|
131
131
|
_cache[3] || (_cache[3] = createElementVNode("p", { class: "mn-b-small" }, "Total price:", -1)),
|
|
132
132
|
createElementVNode("p", _hoisted_4, "$" + toDisplayString(totalPrice.value), 1),
|
|
133
133
|
createVNode(_sfc_main$4, {
|
|
134
|
+
disabled: selectedProducts.value.length < 1,
|
|
134
135
|
class: "bg-main gap-micro",
|
|
136
|
+
showSuccess: false,
|
|
137
|
+
showLoader: false,
|
|
135
138
|
submit: canAddToCart.value ? addSelectedToCart : void 0
|
|
136
139
|
}, {
|
|
137
140
|
default: withCtx(() => [
|
|
@@ -139,7 +142,7 @@ const _sfc_main = {
|
|
|
139
142
|
_cache[2] || (_cache[2] = createElementVNode("span", null, "Add to Cart", -1))
|
|
140
143
|
]),
|
|
141
144
|
_: 1
|
|
142
|
-
}, 8, ["submit"])
|
|
145
|
+
}, 8, ["disabled", "submit"])
|
|
143
146
|
])
|
|
144
147
|
])
|
|
145
148
|
]);
|
package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push({\n name: 'Organization_Product', \n params: { \n _id: product.owner.target, \n product: product._id \n } \n })\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-solid br-1px br-light\">\n <div class=\"mn-b-thin i-extra pd-small bg-light radius-extra\">\n <IconProducts class=\"i-big\"/>\n </div>\n <p class=\"mn-b-small\">Total price:</p>\n <p class=\"mn-b-medium h3 t-medium\">${{ totalPrice }}</p>\n <Button \n class=\"bg-main gap-micro\"\n :submit=\"canAddToCart ? addSelectedToCart : undefined\"\n >\n <IconShopcartAdd class=\"i-semi\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAeA,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,MAAK,IAAK,mBAAkB;AAGpC,UAAM,QAAQ;AASd,UAAM,mBAAmB,IAAI,MAAM,SAAS,OAAO,OAAK,EAAE,UAAU,SAAS,CAAC,EAAE,IAAI,OAAK,EAAE,GAAG,CAAC;AAGzE,QAAI,IAAI;AAG9B,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,SACV,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC,EAClD,OAAO,CAAC,KAAK,MAAM;AAClB,cAAM,QAAQ,EAAE,WAAW,CAAC,GAAG,SAAS;AACxC,eAAO,MAAM;AAAA,MACf,GAAG,CAAC,EACH,QAAQ,CAAC;AAAA,IACd,CAAC;AAGD,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAClF,aAAO,SAAS,SAAS,KAAK,SAAS,KAAK,OAAK,EAAE,UAAU,SAAS,CAAC;AAAA,IACzE,CAAC;AAED,UAAM,qBAAqB,CAAC,YAAY;AACtC,UAAI,SAAS,OAAO,SAAS,OAAO,QAAQ;AAC1C,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,QAAQ;AAAA,YACN,KAAK,QAAQ,MAAM;AAAA,YACnB,SAAS,QAAQ;AAAA,UACzB;AAAA,QACA,CAAK;AAAA,MACH;AAAA,IACF;AAGA,UAAM,oBAAoB,YAAY;AACpC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAElF,UAAI,SAAS,WAAW,EAAG;AAE3B,UAAI;AAEF,cAAM,eAAe,SAAS,CAAC;AAC/B,cAAM,iBAAiB,aAAa,OAAO,QAAQ,OAAO,aAAa,OAAO;AAG9E,YAAIA,MAAe,gBAAgBA,MAAe,iBAAiB,gBAAgB;AAEjF,gBAAM,SAAS,MAAM,MAAM,OAAO;AAAA,YAChC,OAAO;AAAA,YACP,SAAS;AAAA,YACT,SAAS;AAAA,cACP,EAAE,OAAO,UAAU,OAAO,MAAK;AAAA,cAC/B,EAAE,OAAO,WAAW,OAAO,KAAI;AAAA,YACzC;AAAA,UACA,CAAO;AAED,cAAI,CAAC,OAAQ;AAEbA,gBAAe,YAAY,CAAA;AAAA,QAC7B;AAEAA,cAAe,eAAe;AAG9B,cAAM,eAAe,SAAS,OAAO,OAAK,EAAE,YAAY,MAAM;AAC9D,YAAI,cAAc;AAGlB,YAAI,aAAa,SAAS,GAAG;AAC3B,gBAAM,mBAAmB,aAAa,CAAC;AACvC,gBAAM,eAAe,iBAAiB,WAAW,CAAC;AAElD,cAAI,cAAc;AAChB,0BAAc,MAAM,MAAM;AAAA,cACxB,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb;AAAA,cACA,aAAa,SAAS,iBAAiB;AAAA,YACjD;AAEQ,gBAAI,CAAC,YAAa;AAAA,UACpB;AAAA,QACF;AAGA,mBAAW,WAAW,UAAU;AAE9B,cAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,EAAG;AAGxD,gBAAM,UAAU,QAAQ,SAAS,CAAC;AAGlC,gBAAM,aAAa,QAAQ,YAAY,SAAS,cAAc;AAE9D,gBAAMC,QAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UACR;AAAA,QACI;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAAA,MAC9C;AAAA,IACF
|
|
1
|
+
{"version":3,"file":"ProductsRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push({\n name: 'Organization_Product', \n params: { \n _id: product.owner.target, \n product: product._id \n } \n })\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-solid br-1px br-light\">\n <div class=\"mn-b-thin i-extra pd-small bg-light radius-extra\">\n <IconProducts class=\"i-big\"/>\n </div>\n <p class=\"mn-b-small\">Total price:</p>\n <p class=\"mn-b-medium h3 t-medium\">${{ totalPrice }}</p>\n <Button \n :disabled=\"selectedProducts.length < 1\"\n class=\"bg-main gap-micro\"\n :showSuccess=\"false\"\n :showLoader=\"false\"\n :submit=\"canAddToCart ? addSelectedToCart : undefined\"\n >\n <IconShopcartAdd class=\"i-semi\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAeA,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,MAAK,IAAK,mBAAkB;AAGpC,UAAM,QAAQ;AASd,UAAM,mBAAmB,IAAI,MAAM,SAAS,OAAO,OAAK,EAAE,UAAU,SAAS,CAAC,EAAE,IAAI,OAAK,EAAE,GAAG,CAAC;AAGzE,QAAI,IAAI;AAG9B,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,SACV,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC,EAClD,OAAO,CAAC,KAAK,MAAM;AAClB,cAAM,QAAQ,EAAE,WAAW,CAAC,GAAG,SAAS;AACxC,eAAO,MAAM;AAAA,MACf,GAAG,CAAC,EACH,QAAQ,CAAC;AAAA,IACd,CAAC;AAGD,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAClF,aAAO,SAAS,SAAS,KAAK,SAAS,KAAK,OAAK,EAAE,UAAU,SAAS,CAAC;AAAA,IACzE,CAAC;AAED,UAAM,qBAAqB,CAAC,YAAY;AACtC,UAAI,SAAS,OAAO,SAAS,OAAO,QAAQ;AAC1C,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,QAAQ;AAAA,YACN,KAAK,QAAQ,MAAM;AAAA,YACnB,SAAS,QAAQ;AAAA,UACzB;AAAA,QACA,CAAK;AAAA,MACH;AAAA,IACF;AAGA,UAAM,oBAAoB,YAAY;AACpC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAElF,UAAI,SAAS,WAAW,EAAG;AAE3B,UAAI;AAEF,cAAM,eAAe,SAAS,CAAC;AAC/B,cAAM,iBAAiB,aAAa,OAAO,QAAQ,OAAO,aAAa,OAAO;AAG9E,YAAIA,MAAe,gBAAgBA,MAAe,iBAAiB,gBAAgB;AAEjF,gBAAM,SAAS,MAAM,MAAM,OAAO;AAAA,YAChC,OAAO;AAAA,YACP,SAAS;AAAA,YACT,SAAS;AAAA,cACP,EAAE,OAAO,UAAU,OAAO,MAAK;AAAA,cAC/B,EAAE,OAAO,WAAW,OAAO,KAAI;AAAA,YACzC;AAAA,UACA,CAAO;AAED,cAAI,CAAC,OAAQ;AAEbA,gBAAe,YAAY,CAAA;AAAA,QAC7B;AAEAA,cAAe,eAAe;AAG9B,cAAM,eAAe,SAAS,OAAO,OAAK,EAAE,YAAY,MAAM;AAC9D,YAAI,cAAc;AAGlB,YAAI,aAAa,SAAS,GAAG;AAC3B,gBAAM,mBAAmB,aAAa,CAAC;AACvC,gBAAM,eAAe,iBAAiB,WAAW,CAAC;AAElD,cAAI,cAAc;AAChB,0BAAc,MAAM,MAAM;AAAA,cACxB,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb;AAAA,cACA,aAAa,SAAS,iBAAiB;AAAA,YACjD;AAEQ,gBAAI,CAAC,YAAa;AAAA,UACpB;AAAA,QACF;AAGA,mBAAW,WAAW,UAAU;AAE9B,cAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,EAAG;AAGxD,gBAAM,UAAU,QAAQ,SAAS,CAAC;AAGlC,gBAAM,aAAa,QAAQ,YAAY,SAAS,cAAc;AAE9D,gBAAMC,QAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UACR;AAAA,QACI;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAAA,MAC9C;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
const Button = require("../../../../components/Button/Button.
|
|
5
|
-
const Tab = require("../../../../components/Tab/Tab.
|
|
4
|
+
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
5
|
+
const Tab = require("../../../../components/Tab/Tab.vue.cjs");
|
|
6
6
|
const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
|
|
7
7
|
const PlaceholderImage = require("../../../icons/placeholders/PlaceholderImage.vue.cjs");
|
|
8
8
|
const Image360 = require("../elements/Image360.vue.cjs");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed, ref, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createVNode, unref, toDisplayString, Transition, withCtx, Fragment, renderList, createTextVNode } from "vue";
|
|
2
|
-
import _sfc_main$4 from "../../../../components/Button/Button.
|
|
3
|
-
import _sfc_main$3 from "../../../../components/Tab/Tab.
|
|
2
|
+
import _sfc_main$4 from "../../../../components/Button/Button.vue2.js";
|
|
3
|
+
import _sfc_main$3 from "../../../../components/Tab/Tab.vue.js";
|
|
4
4
|
import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
|
|
5
5
|
import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
|
|
6
6
|
import Image360 from "../elements/Image360.vue.js";
|
|
@@ -43,20 +43,20 @@ const state = vue.reactive({
|
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
sort: {
|
|
46
|
-
param: "
|
|
46
|
+
param: "popularity",
|
|
47
47
|
order: "asc",
|
|
48
48
|
options: [
|
|
49
49
|
{
|
|
50
|
-
label: "
|
|
51
|
-
value: "
|
|
50
|
+
label: "Price",
|
|
51
|
+
value: "variants.price"
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
label: "Popularity",
|
|
55
55
|
value: "views"
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
|
-
label: "
|
|
59
|
-
value: "
|
|
58
|
+
label: "New",
|
|
59
|
+
value: "createdAt"
|
|
60
60
|
}
|
|
61
61
|
]
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"products.cjs","sources":["../../../../../../src/modules/products/store/products.js"],"sourcesContent":["/////////////////////////////\n// DEPENDENCIES\n/////////////////////////////\nimport { reactive, watch } from 'vue';\n// Globals\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals.js';\n// Setup Axios\nimport $axios from '@martyrs/src/modules/globals/views/utils/axios-instance.js';\n/////////////////////////////\n// STATE\n/////////////////////////////\nconst state = reactive({\n all: [],\n current: {\n recommendation: false,\n category: [],\n status: 'draft',\n listing: 'sale',\n attributes: [],\n images: [],\n files: [],\n image3d: false,\n name: '',\n sale: 0,\n price: 0,\n price_cost: 0,\n localization: [],\n recommended: [],\n variants: [],\n discounts: [],\n included: null,\n ingredients: [],\n description: '',\n },\n filter: {\n active: false,\n class: 'mobile-only',\n selected: {},\n options: [\n {\n title: 'Price',\n value: 'price',\n options: [\n { label: 'Pickup', value: 'pickup' },\n { label: 'Courier', value: 'courier' },\n { label: 'Post', value: 'post' },\n ],\n },\n ],\n },\n sort: {\n param: 'distance',\n order: 'asc',\n options: [\n {\n label: 'Distance',\n value: 'distance',\n },\n {\n label: 'Popularity',\n value: 'views',\n },\n {\n label: 'Products',\n value: 'numberOfProducts',\n },\n ],\n },\n});\n\n/////////////////////////////\n// ACTIONS\n/////////////////////////////\nconst actions = {\n async create(product) {\n return await $axios.post('/api/products/create', product).then(\n response => {\n set(response.data, 'current');\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async read(options = {}) {\n\n try {\n const response = await $axios.get('/api/products/read', { params: options });\n\n if (options._id) {\n state.current = { ...response.data[0] };\n return Promise.resolve(response.data[0]);\n } else {\n return Promise.resolve(response.data);\n }\n return Promise.resolve(response.data);\n } catch (error) {\n setError(error);\n return Promise.reject(error);\n }\n },\n\n async update(_id, product) {\n return await $axios.post('/api/products/' + _id, product).then(\n response => {\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async deleteProduct(_id) {\n return await $axios.delete('/api/products/' + _id).then(\n response => {\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async submitMood(presetMood = null) {\n return $axios.post('/api/product/recommended', { mood: presetMood }).then(\n response => {\n state.current = response.data.product;\n state.current.recommendation = response.data.recommendationText;\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProducts() {\n return await $axios.get(`/api/products/read`).then(\n products => {\n state.all = products.data;\n return Promise.resolve(products.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProductsPopular() {\n return await $axios.get(`/api/products/popular`).then(\n products => {\n state.popular = products.data;\n return Promise.resolve(products.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProductsPublished() {\n return await $axios.get(`/api/products`).then(\n products => {\n let publishedProduct = products.data.filter(function (product, index) {\n return product.status !== 'unpublished';\n });\n\n state.all = publishedProduct;\n state.filtered = publishedProduct.slice();\n state.filteredPrice = state.filtered;\n\n state.filteredPrice.sort(function (l, r) {\n return l[state.sort.current] > r[state.sort.current] ? (state.sort.ascending ? 1 : -1) : l[state.sort.current] < r[state.sort.current] ? (state.sort.ascending ? -1 : 1) : 0;\n });\n\n return Promise.resolve(products.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProductPopular() {\n return await $axios.get(`/api/products`).then(\n products => {\n state.all = products.data.slice(1, 5);\n return Promise.resolve(products.data.slice(1, 5));\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n};\n\nconst mutations = {\n resetProduct(product) {\n state.current = {\n included: null,\n recommendation: false,\n category: [],\n status: 'draft',\n attributes: [],\n images: [],\n files: [],\n image3d: false,\n name: '',\n sale: 0,\n price: 0,\n price_cost: 0,\n price_currency: '$',\n localization: [],\n variants: [],\n recommended: [],\n discounts: [],\n ingredients: [],\n description: '',\n };\n },\n};\n\nfunction set(product, property) {\n state[property] = product;\n}\n\n/////////////////////////////\n// GETTERS\n/////////////////////////////\nconst getters = {};\n\n/////////////////////////////\n// UTILS\n/////////////////////////////\n\n/////////////////////////////\n// HISTORY\n/////////////////////////////\nconst history = [];\nhistory.push(state);\n\n/////////////////////////////\n// WATCH\n/////////////////////////////\nwatch(state, (newState, oldState) => {\n history.push(newState);\n});\n\n/////////////////////////////\n// Module Export\n/////////////////////////////\nexport { actions, getters, mutations, state };\n"],"names":["reactive","$axios","setError","watch"],"mappings":";;;;;AAWK,MAAC,QAAQA,IAAAA,SAAS;AAAA,EACrB,KAAK,CAAA;AAAA,EACL,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,UAAU,CAAA;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY,CAAA;AAAA,IACZ,QAAQ,CAAA;AAAA,IACR,OAAO,CAAA;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,cAAc,CAAA;AAAA,IACd,aAAa,CAAA;AAAA,IACb,UAAU,CAAA;AAAA,IACV,WAAW,CAAA;AAAA,IACX,UAAU;AAAA,IACV,aAAa,CAAA;AAAA,IACb,aAAa;AAAA,EACjB;AAAA,EACE,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU,CAAA;AAAA,IACV,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,UACP,EAAE,OAAO,UAAU,OAAO,SAAQ;AAAA,UAClC,EAAE,OAAO,WAAW,OAAO,UAAS;AAAA,UACpC,EAAE,OAAO,QAAQ,OAAO,OAAM;AAAA,QACxC;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,MACf;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,MACf;AAAA,MACM;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,MACf;AAAA,IACA;AAAA,EACA;AACA,CAAC;AAKI,MAAC,UAAU;AAAA,EACd,MAAM,OAAO,SAAS;AACpB,WAAO,MAAMC,cAAAA,QAAO,KAAK,wBAAwB,OAAO,EAAE;AAAA,MACxD,cAAY;AACV,YAAI,SAAS,MAAM,SAAS;AAC5B,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AAAA,EAEA,MAAM,KAAK,UAAU,IAAI;AAEvB,QAAI;AACF,YAAM,WAAW,MAAMD,sBAAO,IAAI,sBAAsB,EAAE,QAAQ,SAAS;AAE3E,UAAI,QAAQ,KAAK;AACf,cAAM,UAAU,EAAE,GAAG,SAAS,KAAK,CAAC,EAAC;AACrC,eAAO,QAAQ,QAAQ,SAAS,KAAK,CAAC,CAAC;AAAA,MACzC,OAAO;AACL,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AACA,aAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,IACtC,SAAS,OAAO;AACdC,cAAAA,SAAS,KAAK;AACd,aAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,KAAK,SAAS;AACzB,WAAO,MAAMD,cAAAA,QAAO,KAAK,mBAAmB,KAAK,OAAO,EAAE;AAAA,MACxD,cAAY;AACV,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AAAA,EAEA,MAAM,cAAc,KAAK;AACvB,WAAO,MAAMD,cAAAA,QAAO,OAAO,mBAAmB,GAAG,EAAE;AAAA,MACjD,cAAY;AACV,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AAAA,EAEA,MAAM,WAAW,aAAa,MAAM;AAClC,WAAOD,cAAAA,QAAO,KAAK,4BAA4B,EAAE,MAAM,WAAU,CAAE,EAAE;AAAA,MACnE,cAAY;AACV,cAAM,UAAU,SAAS,KAAK;AAC9B,cAAM,QAAQ,iBAAiB,SAAS,KAAK;AAC7C,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AAAA,EAEA,MAAM,gBAAgB;AACpB,WAAO,MAAMD,cAAAA,QAAO,IAAI,oBAAoB,EAAE;AAAA,MAC5C,cAAY;AACV,cAAM,MAAM,SAAS;AACrB,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AAAA,EAEA,MAAM,uBAAuB;AAC3B,WAAO,MAAMD,cAAAA,QAAO,IAAI,uBAAuB,EAAE;AAAA,MAC/C,cAAY;AACV,cAAM,UAAU,SAAS;AACzB,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AAAA,EAEA,MAAM,yBAAyB;AAC7B,WAAO,MAAMD,cAAAA,QAAO,IAAI,eAAe,EAAE;AAAA,MACvC,cAAY;AACV,YAAI,mBAAmB,SAAS,KAAK,OAAO,SAAU,SAAS,OAAO;AACpE,iBAAO,QAAQ,WAAW;AAAA,QAC5B,CAAC;AAED,cAAM,MAAM;AACZ,cAAM,WAAW,iBAAiB,MAAK;AACvC,cAAM,gBAAgB,MAAM;AAE5B,cAAM,cAAc,KAAK,SAAU,GAAG,GAAG;AACvC,iBAAO,EAAE,MAAM,KAAK,OAAO,IAAI,EAAE,MAAM,KAAK,OAAO,IAAK,MAAM,KAAK,YAAY,IAAI,KAAM,EAAE,MAAM,KAAK,OAAO,IAAI,EAAE,MAAM,KAAK,OAAO,IAAK,MAAM,KAAK,YAAY,KAAK,IAAK;AAAA,QAC7K,CAAC;AAED,eAAO,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AAAA,EAEA,MAAM,sBAAsB;AAC1B,WAAO,MAAMD,cAAAA,QAAO,IAAI,eAAe,EAAE;AAAA,MACvC,cAAY;AACV,cAAM,MAAM,SAAS,KAAK,MAAM,GAAG,CAAC;AACpC,eAAO,QAAQ,QAAQ,SAAS,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,MAClD;AAAA,MACA,WAAS;AACPC,gBAAAA,SAAS,KAAK;AACd,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACN;AAAA,EACE;AACF;AAEK,MAAC,YAAY;AAAA,EAChB,aAAa,SAAS;AACpB,UAAM,UAAU;AAAA,MACd,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,UAAU,CAAA;AAAA,MACV,QAAQ;AAAA,MACR,YAAY,CAAA;AAAA,MACZ,QAAQ,CAAA;AAAA,MACR,OAAO,CAAA;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,cAAc,CAAA;AAAA,MACd,UAAU,CAAA;AAAA,MACV,aAAa,CAAA;AAAA,MACb,WAAW,CAAA;AAAA,MACX,aAAa,CAAA;AAAA,MACb,aAAa;AAAA,IACnB;AAAA,EACE;AACF;AAEA,SAAS,IAAI,SAAS,UAAU;AAC9B,QAAM,QAAQ,IAAI;AACpB;AAKK,MAAC,UAAU,CAAA;AAehBC,IAAAA,MAAM,OAAO,CAAC,UAAU,aAAa;AAErC,CAAC;;;;;"}
|
|
1
|
+
{"version":3,"file":"products.cjs","sources":["../../../../../../src/modules/products/store/products.js"],"sourcesContent":["/////////////////////////////\n// DEPENDENCIES\n/////////////////////////////\nimport { reactive, watch } from 'vue';\n// Globals\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals.js';\n// Setup Axios\nimport $axios from '@martyrs/src/modules/globals/views/utils/axios-instance.js';\n/////////////////////////////\n// STATE\n/////////////////////////////\nconst state = reactive({\n all: [],\n current: {\n recommendation: false,\n category: [],\n status: 'draft',\n listing: 'sale',\n attributes: [],\n images: [],\n files: [],\n image3d: false,\n name: '',\n sale: 0,\n price: 0,\n price_cost: 0,\n localization: [],\n recommended: [],\n variants: [],\n discounts: [],\n included: null,\n ingredients: [],\n description: '',\n },\n filter: {\n active: false,\n class: 'mobile-only',\n selected: {},\n options: [\n {\n title: 'Price',\n value: 'price',\n options: [\n { label: 'Pickup', value: 'pickup' },\n { label: 'Courier', value: 'courier' },\n { label: 'Post', value: 'post' },\n ],\n },\n ],\n },\n sort: {\n param: 'popularity',\n order: 'asc',\n options: [\n {\n label: 'Price',\n value: 'variants.price',\n },\n {\n label: 'Popularity',\n value: 'views',\n },\n {\n label: 'New',\n value: 'createdAt',\n },\n ],\n },\n});\n\n/////////////////////////////\n// ACTIONS\n/////////////////////////////\nconst actions = {\n async create(product) {\n return await $axios.post('/api/products/create', product).then(\n response => {\n set(response.data, 'current');\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async read(options = {}) {\n\n try {\n const response = await $axios.get('/api/products/read', { params: options });\n\n if (options._id) {\n state.current = { ...response.data[0] };\n return Promise.resolve(response.data[0]);\n } else {\n return Promise.resolve(response.data);\n }\n return Promise.resolve(response.data);\n } catch (error) {\n setError(error);\n return Promise.reject(error);\n }\n },\n\n async update(_id, product) {\n return await $axios.post('/api/products/' + _id, product).then(\n response => {\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async deleteProduct(_id) {\n return await $axios.delete('/api/products/' + _id).then(\n response => {\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async submitMood(presetMood = null) {\n return $axios.post('/api/product/recommended', { mood: presetMood }).then(\n response => {\n state.current = response.data.product;\n state.current.recommendation = response.data.recommendationText;\n return Promise.resolve(response.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProducts() {\n return await $axios.get(`/api/products/read`).then(\n products => {\n state.all = products.data;\n return Promise.resolve(products.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProductsPopular() {\n return await $axios.get(`/api/products/popular`).then(\n products => {\n state.popular = products.data;\n return Promise.resolve(products.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProductsPublished() {\n return await $axios.get(`/api/products`).then(\n products => {\n let publishedProduct = products.data.filter(function (product, index) {\n return product.status !== 'unpublished';\n });\n\n state.all = publishedProduct;\n state.filtered = publishedProduct.slice();\n state.filteredPrice = state.filtered;\n\n state.filteredPrice.sort(function (l, r) {\n return l[state.sort.current] > r[state.sort.current] ? (state.sort.ascending ? 1 : -1) : l[state.sort.current] < r[state.sort.current] ? (state.sort.ascending ? -1 : 1) : 0;\n });\n\n return Promise.resolve(products.data);\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n\n async fetchProductPopular() {\n return await $axios.get(`/api/products`).then(\n products => {\n state.all = products.data.slice(1, 5);\n return Promise.resolve(products.data.slice(1, 5));\n },\n error => {\n setError(error);\n return Promise.reject(error);\n }\n );\n },\n};\n\nconst mutations = {\n resetProduct(product) {\n state.current = {\n included: null,\n recommendation: false,\n category: [],\n status: 'draft',\n attributes: [],\n images: [],\n files: [],\n image3d: false,\n name: '',\n sale: 0,\n price: 0,\n price_cost: 0,\n price_currency: '$',\n localization: [],\n variants: [],\n recommended: [],\n discounts: [],\n ingredients: [],\n description: '',\n };\n },\n};\n\nfunction set(product, property) {\n state[property] = product;\n}\n\n/////////////////////////////\n// GETTERS\n/////////////////////////////\nconst getters = {};\n\n/////////////////////////////\n// UTILS\n/////////////////////////////\n\n/////////////////////////////\n// HISTORY\n/////////////////////////////\nconst history = [];\nhistory.push(state);\n\n/////////////////////////////\n// WATCH\n/////////////////////////////\nwatch(state, (newState, oldState) => {\n history.push(newState);\n});\n\n/////////////////////////////\n// Module Export\n/////////////////////////////\nexport { actions, getters, mutations, state };\n"],"names":["reactive","$axios","setError","watch"],"mappings":"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"}
|
|
@@ -41,20 +41,20 @@ const state = reactive({
|
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
43
|
sort: {
|
|
44
|
-
param: "
|
|
44
|
+
param: "popularity",
|
|
45
45
|
order: "asc",
|
|
46
46
|
options: [
|
|
47
47
|
{
|
|
48
|
-
label: "
|
|
49
|
-
value: "
|
|
48
|
+
label: "Price",
|
|
49
|
+
value: "variants.price"
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
label: "Popularity",
|
|
53
53
|
value: "views"
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
|
-
label: "
|
|
57
|
-
value: "
|
|
56
|
+
label: "New",
|
|
57
|
+
value: "createdAt"
|
|
58
58
|
}
|
|
59
59
|
]
|
|
60
60
|
}
|