@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
|
@@ -1,157 +1 @@
|
|
|
1
|
-
|
|
2
|
-
добавить rents и добавить в product.query фильтрацию по доступности с учетом quantityЖ Для фильтрации доступных товаров при агрегации на основе аренд, вам нужно использовать $lookup для
|
|
3
|
-
проверки пересечений с активными арендами. Вот пример агрегации:
|
|
4
|
-
|
|
5
|
-
javascript
|
|
6
|
-
const checkAvailability = async (startDate, endDate) => {
|
|
7
|
-
const pipeline = [
|
|
8
|
-
// Фильтр по нужным критериям товаров
|
|
9
|
-
{
|
|
10
|
-
$match: {
|
|
11
|
-
listing: 'rent',
|
|
12
|
-
status: 'active' // или другие условия
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
|
|
16
|
-
// Присоединяем аренды для каждого товара
|
|
17
|
-
{
|
|
18
|
-
$lookup: {
|
|
19
|
-
from: 'rents',
|
|
20
|
-
let: { productId: '$_id' },
|
|
21
|
-
pipeline: [
|
|
22
|
-
{
|
|
23
|
-
$match: {
|
|
24
|
-
$expr: {
|
|
25
|
-
$and: [
|
|
26
|
-
{ $eq: ['$product', '$productId'] },
|
|
27
|
-
// Только активные аренды
|
|
28
|
-
{ $in: ['$status', ['confirmed', 'active']] },
|
|
29
|
-
// Проверка пересечения дат
|
|
30
|
-
{
|
|
31
|
-
$or: [
|
|
32
|
-
// Аренда начинается в запрашиваемый период
|
|
33
|
-
{
|
|
34
|
-
$and: [
|
|
35
|
-
{ $gte: ['$startDate', new Date(startDate)] },
|
|
36
|
-
{ $lte: ['$startDate', new Date(endDate)] }
|
|
37
|
-
]
|
|
38
|
-
},
|
|
39
|
-
// Аренда заканчивается в запрашиваемый период
|
|
40
|
-
{
|
|
41
|
-
$and: [
|
|
42
|
-
{ $gte: ['$endDate', new Date(startDate)] },
|
|
43
|
-
{ $lte: ['$endDate', new Date(endDate)] }
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
|
-
// Аренда полностью покрывает запрашиваемый период
|
|
47
|
-
{
|
|
48
|
-
$and: [
|
|
49
|
-
{ $lte: ['$startDate', new Date(startDate)] },
|
|
50
|
-
{ $gte: ['$endDate', new Date(endDate)] }
|
|
51
|
-
]
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
}
|
|
55
|
-
]
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
as: 'activeRents'
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
// Фильтруем только доступные товары
|
|
65
|
-
{
|
|
66
|
-
$match: {
|
|
67
|
-
activeRents: { $size: 0 } // Нет активных аренд в этот период
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
// Убираем поле activeRents из результата
|
|
72
|
-
{
|
|
73
|
-
$project: {
|
|
74
|
-
activeRents: 0
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
];
|
|
78
|
-
|
|
79
|
-
return await Product.aggregate(pipeline);
|
|
80
|
-
};
|
|
81
|
-
Если у вас товары могут иметь количество (например, несколько единиц одного товара), то нужно модифицировать логику:
|
|
82
|
-
|
|
83
|
-
javascript
|
|
84
|
-
const checkAvailabilityWithQuantity = async (startDate, endDate, requestedQuantity = 1) => {
|
|
85
|
-
const pipeline = [
|
|
86
|
-
{
|
|
87
|
-
$match: {
|
|
88
|
-
listing: 'rent',
|
|
89
|
-
status: 'active'
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
{
|
|
94
|
-
$lookup: {
|
|
95
|
-
from: 'rents',
|
|
96
|
-
let: { productId: '$_id' },
|
|
97
|
-
pipeline: [
|
|
98
|
-
{
|
|
99
|
-
$match: {
|
|
100
|
-
$expr: {
|
|
101
|
-
$and: [
|
|
102
|
-
{ $eq: ['$product', '$productId'] },
|
|
103
|
-
{ $in: ['$status', ['confirmed', 'active']] },
|
|
104
|
-
// Проверка пересечения дат (та же логика)
|
|
105
|
-
]
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
// Суммируем количество в активных арендах
|
|
110
|
-
{
|
|
111
|
-
$group: {
|
|
112
|
-
_id: null,
|
|
113
|
-
totalRented: { $sum: '$quantity' }
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
],
|
|
117
|
-
as: 'rentInfo'
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
// Добавляем поле с доступным количеством
|
|
122
|
-
{
|
|
123
|
-
$addFields: {
|
|
124
|
-
rentedQuantity: {
|
|
125
|
-
$ifNull: [{ $arrayElemAt: ['$rentInfo.totalRented', 0] }, 0]
|
|
126
|
-
},
|
|
127
|
-
availableQuantity: {
|
|
128
|
-
$subtract: [
|
|
129
|
-
{ $ifNull: ['$quantity', 1] }, // quantity товара или 1 по умолчанию
|
|
130
|
-
{ $ifNull: [{ $arrayElemAt: ['$rentInfo.totalRented', 0] }, 0] }
|
|
131
|
-
]
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
// Фильтруем товары с достаточным количеством
|
|
137
|
-
{
|
|
138
|
-
$match: {
|
|
139
|
-
availableQuantity: { $gte: requestedQuantity }
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
// Убираем временные поля
|
|
144
|
-
{
|
|
145
|
-
$project: {
|
|
146
|
-
rentInfo: 0,
|
|
147
|
-
rentedQuantity: 0
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
];
|
|
151
|
-
|
|
152
|
-
return await Product.aggregate(pipeline);
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
сделать нужно минималистично и ничего кроме этого
|
|
1
|
+
ПРОВЕРИТЬ РАБОТУ ИНГРЕДИЕНТОВ НА БЕКЕНДЕ И ФРОНТЕНДЕ
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
>
|
|
9
9
|
<span class="i-regular">-</span>
|
|
10
10
|
</button>
|
|
11
|
-
|
|
12
11
|
<div class="radius-small br-solid br-1px br-light w-3r pd-small">
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
<input
|
|
13
|
+
type="number"
|
|
14
|
+
v-model.number="modelValue"
|
|
15
|
+
@input="validateInput"
|
|
16
|
+
class="w-100 h-1r t-center"
|
|
17
|
+
:min="1"
|
|
18
|
+
:max="maxValue"
|
|
19
|
+
/>
|
|
20
20
|
</div>
|
|
21
21
|
<button
|
|
22
22
|
@click="incrementQuantity"
|
|
@@ -38,6 +38,14 @@ const props = defineProps({
|
|
|
38
38
|
|
|
39
39
|
const modelValue = defineModel();
|
|
40
40
|
|
|
41
|
+
function validateInput() {
|
|
42
|
+
if (modelValue.value < 1) {
|
|
43
|
+
modelValue.value = 1;
|
|
44
|
+
} else if (modelValue.value > props.maxValue) {
|
|
45
|
+
modelValue.value = props.maxValue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
41
49
|
function incrementQuantity() {
|
|
42
50
|
if (modelValue.value < props.maxValue) {
|
|
43
51
|
modelValue.value++;
|
|
@@ -49,4 +57,4 @@ function decrementQuantity() {
|
|
|
49
57
|
modelValue.value--;
|
|
50
58
|
}
|
|
51
59
|
}
|
|
52
|
-
</script>
|
|
60
|
+
</script>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
<div class="w-100 o-y-scroll h-100">
|
|
22
22
|
<!-- Категории -->
|
|
23
23
|
<div class="mn-b-medium" v-if="currentCategories.length > 0">
|
|
24
|
-
<h4 class="mn-b-
|
|
24
|
+
<h4 class="mn-b-medium">
|
|
25
25
|
{{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}
|
|
26
26
|
</h4>
|
|
27
27
|
<div class="gap-micro">
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
v-for="category in currentCategories"
|
|
30
30
|
:key="category._id"
|
|
31
31
|
@click="selectCategory(category)"
|
|
32
|
-
class="
|
|
32
|
+
class="cursor-pointer hover-t-underline mn-b-regular transition-all"
|
|
33
33
|
>
|
|
34
34
|
{{ category.name }}
|
|
35
35
|
<br>
|
|
@@ -69,7 +69,6 @@
|
|
|
69
69
|
</template>
|
|
70
70
|
</Spoiler>
|
|
71
71
|
|
|
72
|
-
|
|
73
72
|
<!-- Цена за сутки -->
|
|
74
73
|
<Spoiler
|
|
75
74
|
class="o-hidden mn-b-medium"
|
|
@@ -87,15 +86,17 @@
|
|
|
87
86
|
<template #content>
|
|
88
87
|
<div class="mn-t-small flex gap-thin">
|
|
89
88
|
<Field
|
|
90
|
-
v-model="
|
|
89
|
+
v-model:field="selectedFilters.price.min"
|
|
91
90
|
placeholder="From"
|
|
92
91
|
type="number"
|
|
92
|
+
:label="returnCurrency()"
|
|
93
93
|
class="w-50 bg-light pd-small radius-small"
|
|
94
94
|
/>
|
|
95
95
|
<Field
|
|
96
|
-
v-model="
|
|
96
|
+
v-model:field="selectedFilters.price.max"
|
|
97
97
|
placeholder="To"
|
|
98
98
|
type="number"
|
|
99
|
+
:label="returnCurrency()"
|
|
99
100
|
class="w-50 bg-light pd-small radius-small"
|
|
100
101
|
/>
|
|
101
102
|
</div>
|
|
@@ -119,21 +120,12 @@
|
|
|
119
120
|
<template #content>
|
|
120
121
|
<div class="mn-t-small">
|
|
121
122
|
<div
|
|
122
|
-
|
|
123
|
-
:
|
|
124
|
-
|
|
125
|
-
:class="{ 'bg-light': selectedAvailability === option.value }"
|
|
126
|
-
class="pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"
|
|
127
|
-
>
|
|
128
|
-
{{ option.label }}
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
<div
|
|
132
|
-
@click="() => { tempSelectedDates = selectedDates; showDatePickerPopup = true; }"
|
|
133
|
-
:class="{ 'bg-light': selectedAvailability === 'custom' }"
|
|
134
|
-
class="pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"
|
|
123
|
+
@click="() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }"
|
|
124
|
+
:class="{ 'bg-light': selectedFilters?.availability }"
|
|
125
|
+
class="pd-small field-wrapper radius-small bg-light cursor-pointer hover-bg-light transition-all flex-v-center flex gap-thin"
|
|
135
126
|
>
|
|
136
|
-
|
|
127
|
+
<IconCalendar class="i-regular" />
|
|
128
|
+
<span class="h-1r">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>
|
|
137
129
|
</div>
|
|
138
130
|
</div>
|
|
139
131
|
</template>
|
|
@@ -141,6 +133,7 @@
|
|
|
141
133
|
|
|
142
134
|
<!-- Кнопка очистки фильтров -->
|
|
143
135
|
<button
|
|
136
|
+
@click="clearAllFilters"
|
|
144
137
|
class="bg-main w-100 button mn-t-medium"
|
|
145
138
|
>
|
|
146
139
|
Clear Filters
|
|
@@ -148,72 +141,67 @@
|
|
|
148
141
|
</div>
|
|
149
142
|
</div>
|
|
150
143
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
@
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
</div> -->
|
|
165
|
-
|
|
166
|
-
<div class="mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular">
|
|
167
|
-
<div class="gap-thin flex-nowrap flex">
|
|
168
|
-
<div
|
|
169
|
-
v-for="category in currentCategories"
|
|
170
|
-
:key="category._id"
|
|
171
|
-
@click="selectCategory(category)"
|
|
172
|
-
class=" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all"
|
|
173
|
-
>
|
|
174
|
-
{{ category.name }}
|
|
175
|
-
</div>
|
|
144
|
+
<div class="w-100 rows-1 pd-thin pos-relative o-hidden">
|
|
145
|
+
|
|
146
|
+
<slot></slot>
|
|
147
|
+
|
|
148
|
+
<div class="mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular">
|
|
149
|
+
<div class="gap-thin flex-nowrap flex">
|
|
150
|
+
<div
|
|
151
|
+
v-for="category in currentCategories"
|
|
152
|
+
:key="category._id"
|
|
153
|
+
@click="selectCategory(category)"
|
|
154
|
+
class=" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all"
|
|
155
|
+
>
|
|
156
|
+
{{ category.name }}
|
|
176
157
|
</div>
|
|
177
158
|
</div>
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
:
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
:
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
:
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
>
|
|
159
|
+
</div>
|
|
160
|
+
<Feed
|
|
161
|
+
:search="true"
|
|
162
|
+
v-model:sort="products.state.sort"
|
|
163
|
+
:showLoadMore="false"
|
|
164
|
+
:states="{
|
|
165
|
+
empty: {
|
|
166
|
+
title: 'No Products Found',
|
|
167
|
+
description: 'Currently, there are no products available.'
|
|
168
|
+
}
|
|
169
|
+
}"
|
|
170
|
+
:store="{
|
|
171
|
+
read: (options) => products.actions.read(options),
|
|
172
|
+
state: products.state
|
|
173
|
+
}"
|
|
174
|
+
:options="{
|
|
175
|
+
limit: 16,
|
|
176
|
+
owner: route.name?.includes('Organization') ? route.params._id : null,
|
|
177
|
+
search: route.query.search,
|
|
178
|
+
lookup: ['variants','rents'],
|
|
179
|
+
categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,
|
|
180
|
+
filters: processedFilters,
|
|
181
|
+
priceMin: selectedFilters.price?.min,
|
|
182
|
+
priceMax: selectedFilters.price?.max,
|
|
183
|
+
dateStart: selectedFilters.availability?.start,
|
|
184
|
+
dateEnd: selectedFilters.availability?.end
|
|
185
|
+
}"
|
|
186
|
+
v-slot="{
|
|
187
|
+
items
|
|
188
|
+
}"
|
|
189
|
+
class=""
|
|
190
|
+
|
|
191
|
+
>
|
|
192
|
+
<div class="mn-b-thin mobile-only">
|
|
193
|
+
<Filters
|
|
194
|
+
v-model:filters="availableFilters"
|
|
195
|
+
v-model:selected="selectedFilters"
|
|
196
|
+
class=""
|
|
197
|
+
/>
|
|
198
|
+
</div>
|
|
199
|
+
<div class="cols-4 pos-relative w-100 rows-1 gap-thin">
|
|
212
200
|
<router-link
|
|
213
201
|
v-for="product in items"
|
|
214
202
|
:to="route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }"
|
|
215
|
-
|
|
216
|
-
|
|
203
|
+
class="pos-relative h-100 w-100"
|
|
204
|
+
>
|
|
217
205
|
<CardProduct
|
|
218
206
|
:key="product._id"
|
|
219
207
|
:product="product"
|
|
@@ -223,9 +211,10 @@
|
|
|
223
211
|
class="pos-relative h-100 w-100 bg-light"
|
|
224
212
|
/>
|
|
225
213
|
</router-link>
|
|
226
|
-
</
|
|
214
|
+
</div>
|
|
215
|
+
</Feed>
|
|
227
216
|
|
|
228
|
-
|
|
217
|
+
</div>
|
|
229
218
|
</div>
|
|
230
219
|
|
|
231
220
|
<!-- Date Picker Popup -->
|
|
@@ -241,7 +230,7 @@
|
|
|
241
230
|
v-model:date="tempSelectedDates"
|
|
242
231
|
:allowRange="true"
|
|
243
232
|
:disablePastDates="true"
|
|
244
|
-
class="mn-b-medium"
|
|
233
|
+
class="mn-b-medium bg-light"
|
|
245
234
|
/>
|
|
246
235
|
|
|
247
236
|
<div class="flex gap-small">
|
|
@@ -287,6 +276,8 @@
|
|
|
287
276
|
|
|
288
277
|
import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'
|
|
289
278
|
import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'
|
|
279
|
+
import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'
|
|
280
|
+
|
|
290
281
|
|
|
291
282
|
// Accessing router and store
|
|
292
283
|
import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';
|
|
@@ -305,74 +296,61 @@
|
|
|
305
296
|
const categoryFilters = ref([]);
|
|
306
297
|
// const selectedFilters = ref({});
|
|
307
298
|
|
|
308
|
-
const availableFilters = ref([
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
title: 'Status',
|
|
328
|
-
value: 'status',
|
|
329
|
-
type: 'radio',
|
|
330
|
-
options: [
|
|
331
|
-
{ label: 'Available', value: 'available' },
|
|
332
|
-
{ label: 'Out of Stock', value: 'out_of_stock' },
|
|
333
|
-
{ label: 'Coming Soon', value: 'coming_soon' }
|
|
334
|
-
]
|
|
335
|
-
}
|
|
336
|
-
])
|
|
337
|
-
|
|
338
|
-
const selectedFilters = ref({
|
|
339
|
-
price: { min: '', max: '' },
|
|
340
|
-
delivery: [],
|
|
341
|
-
status: null
|
|
342
|
-
})
|
|
299
|
+
const availableFilters = ref([
|
|
300
|
+
{
|
|
301
|
+
title: 'Price',
|
|
302
|
+
value: 'price',
|
|
303
|
+
type: 'range',
|
|
304
|
+
minPlaceholder: 'From',
|
|
305
|
+
maxPlaceholder: 'To'
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
title: 'Availability',
|
|
309
|
+
value: 'availability',
|
|
310
|
+
type: 'date'
|
|
311
|
+
}
|
|
312
|
+
])
|
|
313
|
+
|
|
314
|
+
const selectedFilters = ref({
|
|
315
|
+
price: { min: '', max: '' },
|
|
316
|
+
availability: null
|
|
317
|
+
})
|
|
343
318
|
|
|
344
|
-
|
|
345
|
-
// Переменные фильтров
|
|
346
|
-
const availabilityOptions = ref([
|
|
347
|
-
{ label: 'Available today', value: 'today' },
|
|
348
|
-
{ label: 'This week', value: 'week' },
|
|
349
|
-
{ label: 'This month', value: 'month' }
|
|
350
|
-
]);
|
|
351
|
-
|
|
352
|
-
const selectedAvailability = ref('all');
|
|
353
319
|
const showDatePickerPopup = ref(false);
|
|
354
|
-
const selectedPeriod = ref(null);
|
|
355
|
-
const selectedDates = ref(null);
|
|
356
320
|
const tempSelectedDates = ref(null);
|
|
357
|
-
|
|
358
|
-
const priceRange = ref({
|
|
359
|
-
min: '',
|
|
360
|
-
max: ''
|
|
361
|
-
});
|
|
362
321
|
|
|
363
322
|
// Computed property for processed filters
|
|
364
323
|
const processedFilters = computed(() => {
|
|
365
|
-
|
|
324
|
+
const filters = [];
|
|
325
|
+
|
|
326
|
+
// Обрабатываем фильтры категорий
|
|
327
|
+
Object.entries(selectedFilters.value).forEach(([key, value]) => {
|
|
328
|
+
if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно
|
|
329
|
+
|
|
330
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
331
|
+
filters.push({
|
|
332
|
+
parameter: key,
|
|
333
|
+
values: value,
|
|
334
|
+
caseSensitive: false
|
|
335
|
+
});
|
|
336
|
+
} else if (value && typeof value === 'string' && value.trim() !== '') {
|
|
337
|
+
filters.push({
|
|
338
|
+
parameter: key,
|
|
339
|
+
values: [value],
|
|
340
|
+
caseSensitive: false
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
return filters.length > 0 ? JSON.stringify(filters) : '';
|
|
366
346
|
});
|
|
367
347
|
|
|
368
|
-
|
|
369
|
-
return priceRange.value.min || priceRange.value.max ? `${priceRange.value.min || 0}-${priceRange.value.max || 999999}` : null;
|
|
370
|
-
});
|
|
348
|
+
|
|
371
349
|
|
|
372
350
|
|
|
373
351
|
const processedLookups = computed(() => {
|
|
374
352
|
const lookups = ['variants'];
|
|
375
|
-
if (
|
|
353
|
+
if (selectedFilters.value.availability) {
|
|
376
354
|
lookups.push('rents');
|
|
377
355
|
}
|
|
378
356
|
return lookups;
|
|
@@ -381,6 +359,9 @@ const selectedFilters = ref({
|
|
|
381
359
|
const loadCategoryData = async () => {
|
|
382
360
|
const categoryPath = route.params.categoryPath;
|
|
383
361
|
|
|
362
|
+
// Очищаем фильтры категории из предыдущей загрузки
|
|
363
|
+
availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');
|
|
364
|
+
|
|
384
365
|
try {
|
|
385
366
|
if (categoryPath) {
|
|
386
367
|
// Загружаем категорию и её прямых детей
|
|
@@ -395,12 +376,22 @@ const selectedFilters = ref({
|
|
|
395
376
|
currentCategories.value = result[0].children || [];
|
|
396
377
|
categoryFilters.value = result[0].filters || [];
|
|
397
378
|
|
|
398
|
-
//
|
|
399
|
-
const filtersObj = {};
|
|
379
|
+
// Добавляем фильтры категории в availableFilters
|
|
400
380
|
(result[0].filters || []).forEach(filter => {
|
|
401
|
-
|
|
381
|
+
availableFilters.value.push({
|
|
382
|
+
title: filter.name,
|
|
383
|
+
value: filter.name,
|
|
384
|
+
type: 'checkbox',
|
|
385
|
+
options: (filter.options || []).map(option => ({
|
|
386
|
+
label: typeof option === 'string' ? option : option.text,
|
|
387
|
+
value: typeof option === 'string' ? option : option.text
|
|
388
|
+
}))
|
|
389
|
+
});
|
|
390
|
+
// Инициализируем массив для фильтра
|
|
391
|
+
if (!selectedFilters.value[filter.name]) {
|
|
392
|
+
selectedFilters.value[filter.name] = [];
|
|
393
|
+
}
|
|
402
394
|
});
|
|
403
|
-
selectedFilters.value = filtersObj;
|
|
404
395
|
}
|
|
405
396
|
} else {
|
|
406
397
|
// Загружаем только корневые категории
|
|
@@ -410,10 +401,12 @@ const selectedFilters = ref({
|
|
|
410
401
|
});
|
|
411
402
|
|
|
412
403
|
currentCategories.value = result;
|
|
404
|
+
categoryFilters.value = [];
|
|
413
405
|
}
|
|
414
406
|
} catch (error) {
|
|
415
407
|
console.error('Error loading categories:', error);
|
|
416
408
|
currentCategories.value = [];
|
|
409
|
+
categoryFilters.value = [];
|
|
417
410
|
}
|
|
418
411
|
};
|
|
419
412
|
|
|
@@ -434,43 +427,23 @@ const selectedFilters = ref({
|
|
|
434
427
|
}
|
|
435
428
|
};
|
|
436
429
|
|
|
437
|
-
// Функция выбора опции доступности
|
|
438
|
-
const selectAvailabilityOption = (value) => {
|
|
439
|
-
selectedAvailability.value = value;
|
|
440
|
-
const today = new Date();
|
|
441
|
-
|
|
442
|
-
switch(value) {
|
|
443
|
-
case 'today':
|
|
444
|
-
selectedDates.value = {
|
|
445
|
-
start: today,
|
|
446
|
-
end: today
|
|
447
|
-
};
|
|
448
|
-
break;
|
|
449
|
-
case 'week':
|
|
450
|
-
const weekEnd = new Date(today);
|
|
451
|
-
weekEnd.setDate(today.getDate() + 7);
|
|
452
|
-
selectedDates.value = {
|
|
453
|
-
start: today,
|
|
454
|
-
end: weekEnd
|
|
455
|
-
};
|
|
456
|
-
break;
|
|
457
|
-
case 'month':
|
|
458
|
-
const monthEnd = new Date(today);
|
|
459
|
-
monthEnd.setMonth(today.getMonth() + 1);
|
|
460
|
-
selectedDates.value = {
|
|
461
|
-
start: today,
|
|
462
|
-
end: monthEnd
|
|
463
|
-
};
|
|
464
|
-
break;
|
|
465
|
-
}
|
|
466
|
-
};
|
|
467
430
|
|
|
468
431
|
// Функция применения фильтра дат
|
|
469
432
|
const applyDateFilter = () => {
|
|
470
|
-
|
|
471
|
-
selectedAvailability.value = 'custom';
|
|
433
|
+
selectedFilters.value.availability = tempSelectedDates.value;
|
|
472
434
|
showDatePickerPopup.value = false;
|
|
473
435
|
};
|
|
436
|
+
|
|
437
|
+
// Функция очистки всех фильтров
|
|
438
|
+
const clearAllFilters = () => {
|
|
439
|
+
selectedFilters.value.price = { min: '', max: '' };
|
|
440
|
+
selectedFilters.value.availability = null;
|
|
441
|
+
|
|
442
|
+
// Очищаем фильтры категорий
|
|
443
|
+
categoryFilters.value.forEach(filter => {
|
|
444
|
+
selectedFilters.value[filter.name] = [];
|
|
445
|
+
});
|
|
446
|
+
};
|
|
474
447
|
|
|
475
448
|
globals.state.navigation_bar.actions = [{
|
|
476
449
|
component: IconPlus,
|