@ozdao/martyrs 0.2.506 → 0.2.507
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/auth.server.cjs +1 -1
- package/dist/auth.server.js +1 -1
- package/dist/builder.cjs +52 -60
- package/dist/builder.js +52 -60
- package/dist/chats.server.cjs +1 -1
- package/dist/chats.server.js +1 -1
- package/dist/events.server.cjs +1 -1
- package/dist/events.server.js +1 -1
- package/dist/{mailing-q7sR8gCV.cjs → mailing-Bs9ThyVZ.cjs} +1 -24
- package/dist/{mailing-C11EYWm-.js → mailing-DzlhsxCC.js} +1 -24
- package/dist/main-AWSb_d2P.cjs +11 -0
- package/dist/{main-DC__VS5b.js → main-Dq-UfO4G.js} +2562 -2477
- 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 +3 -3
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +3 -3
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
- package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +14 -45
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +21 -52
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs +14 -6
- package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js +14 -6
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +58 -11
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +60 -13
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +2 -2
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
- package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
- package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
- package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
- 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 +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +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 +42 -10
- 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 +44 -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 +12 -16
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +22 -26
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +13 -17
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +34 -38
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +13 -9
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +13 -9
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +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/auth/views/router/users.cjs +0 -4
- package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.js +0 -4
- package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +431 -0
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +431 -0
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -0
- package/dist/martyrs/src/modules/community/router/blogposts.cjs +17 -0
- package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/router/blogposts.js +17 -0
- package/dist/martyrs/src/modules/community/router/blogposts.js.map +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 +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- 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 -3
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -3
- 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 +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs +4 -6
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js +4 -6
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +5 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +6 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.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 +2 -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 +2 -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/Header.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/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 +324 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +324 -0
- package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
- 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/entities/IconLock.vue.cjs +32 -0
- package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js +32 -0
- package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/icons.client.cjs +2 -0
- package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/icons.client.js +116 -114
- package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +5 -3
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +117 -115
- package/dist/martyrs/src/modules/icons/pages/IconsPage.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/landing/components/sections/SectionGuide.vue.cjs +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +11 -36
- package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +11 -36
- package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/landing.client.cjs +3 -0
- package/dist/martyrs/src/modules/landing/landing.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/landing/landing.client.js +3 -0
- package/dist/martyrs/src/modules/landing/landing.client.js.map +1 -1
- package/dist/martyrs/src/modules/landing/locales/en.cjs +12 -0
- package/dist/martyrs/src/modules/landing/locales/en.cjs.map +1 -0
- package/dist/martyrs/src/modules/landing/locales/en.js +12 -0
- package/dist/martyrs/src/modules/landing/locales/en.js.map +1 -0
- package/dist/martyrs/src/modules/landing/locales/index.cjs +10 -0
- package/dist/martyrs/src/modules/landing/locales/index.cjs.map +1 -0
- package/dist/martyrs/src/modules/landing/locales/index.js +10 -0
- package/dist/martyrs/src/modules/landing/locales/index.js.map +1 -0
- package/dist/martyrs/src/modules/landing/locales/ru.cjs +12 -0
- package/dist/martyrs/src/modules/landing/locales/ru.cjs.map +1 -0
- package/dist/martyrs/src/modules/landing/locales/ru.js +12 -0
- package/dist/martyrs/src/modules/landing/locales/ru.js.map +1 -0
- 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 +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +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 +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +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 +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +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 -4
- package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.js +2 -4
- 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/blocks/CardApplication.vue.cjs +86 -0
- package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +86 -0
- package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs +103 -0
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +103 -0
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +194 -0
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +194 -0
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +138 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +138 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +189 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +189 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +173 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +173 -0
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +233 -0
- package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +233 -0
- package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +234 -0
- package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +234 -0
- package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -0
- 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 +10 -9
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +10 -9
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +9 -83
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +10 -84
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
- 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 +119 -0
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +119 -0
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +139 -0
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +139 -0
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -0
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -3
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -3
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/locales/en.cjs +38 -0
- package/dist/martyrs/src/modules/orders/locales/en.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/locales/en.js +38 -0
- package/dist/martyrs/src/modules/orders/locales/en.js.map +1 -0
- package/dist/martyrs/src/modules/orders/locales/index.cjs +10 -0
- package/dist/martyrs/src/modules/orders/locales/index.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/locales/index.js +10 -0
- package/dist/martyrs/src/modules/orders/locales/index.js.map +1 -0
- package/dist/martyrs/src/modules/orders/locales/ru.cjs +38 -0
- package/dist/martyrs/src/modules/orders/locales/ru.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/locales/ru.js +38 -0
- package/dist/martyrs/src/modules/orders/locales/ru.js.map +1 -0
- package/dist/martyrs/src/modules/orders/orders.client.cjs +78 -3
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +80 -5
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/router/applications.router.cjs +17 -0
- package/dist/martyrs/src/modules/orders/router/applications.router.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/router/applications.router.js +17 -0
- package/dist/martyrs/src/modules/orders/router/applications.router.js.map +1 -0
- package/dist/martyrs/src/modules/orders/router/customers.router.cjs +18 -0
- package/dist/martyrs/src/modules/orders/router/customers.router.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/router/customers.router.js +18 -0
- package/dist/martyrs/src/modules/orders/router/customers.router.js.map +1 -0
- package/dist/martyrs/src/modules/orders/store/applications.cjs +4 -42
- package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/applications.js +3 -41
- package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/application.cjs +20 -0
- package/dist/martyrs/src/modules/orders/store/models/application.cjs.map +1 -0
- package/dist/martyrs/src/modules/orders/store/models/application.js +20 -0
- package/dist/martyrs/src/modules/orders/store/models/application.js.map +1 -0
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs +13 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.js +13 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +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/Department.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.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/Organization.vue.cjs +16 -192
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +17 -193
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.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/DetailsTabSection.vue.cjs +2 -11
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +6 -15
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +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 +85 -89
- 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 +92 -96
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +4 -0
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +4 -0
- package/dist/martyrs/src/modules/organizations/router/organizations.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/Page.vue.cjs +3 -6
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +3 -6
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +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/blocks/CardCategory.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +22 -19
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +22 -19
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +28 -19
- 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 +28 -19
- 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 +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +360 -105
- 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 +378 -123
- 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/EditVariants.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.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/ProductsRecommended.vue.cjs +33 -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 +34 -4
- 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/router/products.router.cjs +15 -0
- package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/router/products.router.js +15 -0
- package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.cjs +25 -7
- package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.js +25 -7
- package/dist/martyrs/src/modules/products/store/categories.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/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/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/Spot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spot.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/pages/Spots.vue.cjs +345 -0
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +345 -0
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -0
- 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/spots/router/spots.cjs +17 -0
- package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/router/spots.js +17 -0
- package/dist/martyrs/src/modules/spots/router/spots.js.map +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/notifications.server.cjs +1 -1
- package/dist/notifications.server.js +1 -1
- package/dist/orders.server.cjs +459 -201
- package/dist/orders.server.js +459 -201
- package/dist/organizations.server.cjs +1 -1
- package/dist/organizations.server.js +1 -1
- package/dist/products.server.cjs +428 -255
- package/dist/products.server.js +428 -255
- package/dist/style.css +115 -139
- package/dist/{tickets.controller-DQQcjyui.js → tickets.controller-C56OvH6v.js} +1 -1
- package/dist/{tickets.controller-D0V0gJCA.cjs → tickets.controller-DdnndM6c.cjs} +1 -1
- package/dist/wallet.server.cjs +1 -1
- package/dist/wallet.server.js +1 -1
- package/dist/{web-B1bEJ1W9.js → web-BXajFCU2.js} +1 -1
- package/dist/{web-D5i9k2Vv.cjs → web-DaBwwCQ5.cjs} +1 -1
- package/package.json +1 -1
- package/src/builder/modes/ssr.dev.js +10 -10
- package/src/builder/rspack/rspack.config.ssr.client.js +50 -50
- package/src/components/Checkbox/Checkbox.vue +3 -4
- package/src/components/Feed/Feed.old.vue +522 -0
- package/src/components/Feed/Feed.vue +4 -4
- package/src/components/Field/Field.vue +7 -1
- package/src/components/FieldBig/FieldBig.vue +62 -8
- package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
- package/src/modules/STYLES.MD +198 -0
- package/src/modules/auth/views/components/pages/Profile.vue +1 -1
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +42 -8
- package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +9 -11
- package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +9 -11
- package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +7 -4
- package/src/modules/auth/views/router/users.js +0 -4
- package/src/modules/community/components/pages/Posts.vue +444 -0
- package/src/modules/community/router/blogposts.js +15 -0
- package/src/modules/globals/views/classes/globals.websocket.js +7 -8
- package/src/modules/globals/views/components/blocks/Card.vue +2 -1
- package/src/modules/globals/views/components/layouts/Client.vue +1 -2
- package/src/modules/globals/views/components/partials/FooterAlt.vue +161 -188
- package/src/modules/globals/views/components/sections/Filters.vue +261 -121
- package/src/modules/globals/views/components/sections/filters/FilterCheckbox.vue +78 -0
- package/src/modules/globals/views/components/sections/filters/FilterDateRange.vue +177 -0
- package/src/modules/globals/views/components/sections/filters/FilterRange.vue +51 -50
- package/src/modules/icons/entities/IconLock.vue +14 -0
- package/src/modules/icons/icons.client.js +2 -1
- package/src/modules/icons/pages/IconsPage.vue +4 -2
- package/src/modules/landing/components/sections/SubscribeNewsletter.vue +11 -61
- package/src/modules/landing/landing.client.js +6 -0
- package/src/modules/landing/locales/en.js +9 -0
- package/src/modules/landing/locales/index.js +7 -0
- package/src/modules/landing/locales/ru.js +9 -0
- package/src/modules/music/components/pages/Album.vue +1 -1
- package/src/modules/music/components/pages/Playlist.vue +1 -1
- package/src/modules/music/components/pages/Track.vue +1 -1
- package/src/modules/orders/components/blocks/CardApplication.vue +74 -0
- package/src/modules/orders/components/blocks/CardCustomer.vue +90 -0
- package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +199 -0
- package/src/modules/orders/components/forms/FormApplicationDetails.vue +117 -0
- package/src/modules/orders/components/forms/FormCustomerDetails.vue +165 -0
- package/src/modules/orders/components/forms/FormSelectCustomer.vue +172 -0
- package/src/modules/orders/components/pages/Applications.vue +240 -0
- package/src/modules/orders/components/pages/Customers.vue +239 -0
- package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
- package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -75
- package/src/modules/orders/components/sections/ApplicationDetails.vue +91 -0
- package/src/modules/orders/components/sections/CustomerDetails.vue +107 -0
- package/src/modules/orders/locales/en.js +35 -0
- package/src/modules/orders/locales/index.js +7 -0
- package/src/modules/orders/locales/ru.js +35 -0
- package/src/modules/orders/middlewares/applications.verifier.js +189 -0
- package/src/modules/orders/middlewares/customers.verifier.js +251 -0
- package/src/modules/orders/models/application.model.js +21 -0
- package/src/modules/orders/models/customer.model.js +26 -0
- package/src/modules/orders/orders.client.js +86 -1
- package/src/modules/orders/orders.server.js +3 -1
- package/src/modules/orders/router/applications.router.js +15 -0
- package/src/modules/orders/router/customers.router.js +17 -0
- package/src/modules/orders/routes/applications.routes.js +124 -12
- package/src/modules/orders/routes/customers.routes.js +43 -0
- package/src/modules/orders/store/applications.js +3 -159
- package/src/modules/orders/store/models/application.js +18 -0
- package/src/modules/orders/store/models/customer.js +12 -0
- package/src/modules/organizations/components/pages/Organization.new.vue +593 -0
- package/src/modules/organizations/components/pages/Organization.vue +10 -201
- package/src/modules/organizations/components/sections/DetailsTabSection.vue +2 -2
- package/src/modules/organizations/configs/navigation.organization.config.js +69 -85
- package/src/modules/organizations/router/organizations.js +5 -0
- package/src/modules/pages/views/components/pages/Page.vue +1 -1
- package/src/modules/products/TASKS.MD +157 -0
- package/src/modules/products/components/blocks/CardCategory.vue +1 -1
- package/src/modules/products/components/blocks/ProductImages.vue +1 -1
- package/src/modules/products/components/pages/Categories.vue +27 -22
- package/src/modules/products/components/pages/CategoryEdit.vue +24 -13
- package/src/modules/products/components/pages/Products.vue +414 -173
- package/src/modules/products/components/sections/ProductsRecommended.vue +46 -2
- package/src/modules/products/controllers/categories.controller.js +321 -282
- package/src/modules/products/controllers/configs/products.lookup.config.js +9 -0
- package/src/modules/products/controllers/products.controller.js +2 -1
- package/src/modules/products/controllers/queries/products.queries.js +183 -11
- package/src/modules/products/middlewares/categories.verifier.js +58 -15
- package/src/modules/products/migrations/categories-to-materialized-path.js +433 -0
- package/src/modules/products/migrations/path-to-url.js +27 -0
- package/src/modules/products/models/category.model.js +8 -23
- package/src/modules/products/router/products.router.js +12 -0
- package/src/modules/products/store/categories.js +26 -7
- package/src/modules/rents/TASK.MD +161 -0
- package/src/modules/spots/components/pages/Spots.vue +342 -0
- package/src/modules/spots/router/spots.js +15 -0
- package/src/styles/base/all.scss +2 -3
- package/src/styles/layout.scss +16 -0
- package/dist/main-w3rPUBVh.cjs +0 -11
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs +0 -96
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +0 -96
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +0 -1
- package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
- package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +0 -155
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +0 -155
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +0 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +0 -81
- package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js +0 -81
- package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js.map +0 -1
- package/src/modules/orders/components/sections/FormAddCustomer.vue +0 -152
- package/src/modules/orders/components/sections/FormCustomerDetails.vue +0 -67
- package/src/modules/orders/controllers/applications.controller.js +0 -122
|
@@ -2,46 +2,202 @@
|
|
|
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
|
-
|
|
5
|
+
;/* empty css */
|
|
6
6
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
7
|
-
|
|
7
|
+
const Spoiler = require("../../../../components/Spoiler/Spoiler.vue2.cjs");
|
|
8
|
+
const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
|
|
8
9
|
require("vue-i18n");
|
|
9
10
|
const categories = require("../../store/categories.cjs");
|
|
10
11
|
require("../../../marketplace/views/store/marketplace.cjs");
|
|
11
12
|
;/* empty css */
|
|
12
|
-
const
|
|
13
|
-
const
|
|
13
|
+
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
14
|
+
const IconChevronBottom = require("../../../icons/navigation/IconChevronBottom.vue.cjs");
|
|
15
|
+
const Filters = require("../../../globals/views/components/sections/Filters.vue2.cjs");
|
|
16
|
+
const Calendar = require("../../../../components/Calendar/Calendar.vue2.cjs");
|
|
17
|
+
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
14
18
|
const CardProduct = require("../blocks/CardProduct.vue.cjs");
|
|
15
19
|
const IconPlus = require("../../../icons/navigation/IconPlus.vue.cjs");
|
|
16
20
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
17
21
|
const globals = require("../../../globals/views/store/globals.cjs");
|
|
18
22
|
const products = require("../../store/products.cjs");
|
|
23
|
+
const mixins = require("../../../globals/views/mixins/mixins.cjs");
|
|
19
24
|
const _hoisted_1 = { class: "pos-relative" };
|
|
20
25
|
const _hoisted_2 = {
|
|
21
26
|
key: 0,
|
|
22
27
|
class: "pd-medium flex-v-center flex-nowrap flex"
|
|
23
28
|
};
|
|
24
|
-
const _hoisted_3 = { class: "cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative
|
|
29
|
+
const _hoisted_3 = { class: "cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative" };
|
|
25
30
|
const _hoisted_4 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
|
|
26
|
-
const _hoisted_5 = { class: "w-100
|
|
27
|
-
const _hoisted_6 = {
|
|
31
|
+
const _hoisted_5 = { class: "w-100 o-y-scroll h-100" };
|
|
32
|
+
const _hoisted_6 = {
|
|
33
|
+
key: 0,
|
|
34
|
+
class: "mn-b-medium"
|
|
35
|
+
};
|
|
36
|
+
const _hoisted_7 = { class: "mn-b-small" };
|
|
37
|
+
const _hoisted_8 = { class: "gap-micro" };
|
|
38
|
+
const _hoisted_9 = ["onClick"];
|
|
39
|
+
const _hoisted_10 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
40
|
+
const _hoisted_11 = { class: "w-100" };
|
|
41
|
+
const _hoisted_12 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
42
|
+
const _hoisted_13 = { class: "mn-t-small" };
|
|
43
|
+
const _hoisted_14 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
44
|
+
const _hoisted_15 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
45
|
+
const _hoisted_16 = { class: "mn-t-small flex gap-thin" };
|
|
46
|
+
const _hoisted_17 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
47
|
+
const _hoisted_18 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
48
|
+
const _hoisted_19 = { class: "mn-t-small" };
|
|
49
|
+
const _hoisted_20 = ["onClick"];
|
|
50
|
+
const _hoisted_21 = { class: "w-100 rows-1 pd-thin pos-relative o-hidden" };
|
|
51
|
+
const _hoisted_22 = { class: "mn-b-thin w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular" };
|
|
52
|
+
const _hoisted_23 = { class: "gap-thin flex-nowrap flex" };
|
|
53
|
+
const _hoisted_24 = ["onClick"];
|
|
54
|
+
const _hoisted_25 = { class: "flex gap-small" };
|
|
28
55
|
const _sfc_main = {
|
|
29
56
|
__name: "Products",
|
|
30
57
|
setup(__props) {
|
|
31
58
|
const route = vueRouter.useRoute();
|
|
32
59
|
const router = vueRouter.useRouter();
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
const { generateFilters, formatDate } = mixins.useGlobalMixins();
|
|
61
|
+
const currentCategories = vue.ref([]);
|
|
62
|
+
const currentCategory = vue.ref(null);
|
|
63
|
+
const categoryFilters = vue.ref([]);
|
|
64
|
+
const availableFilters = vue.ref([
|
|
65
|
+
{
|
|
66
|
+
title: "Price",
|
|
67
|
+
value: "price",
|
|
68
|
+
type: "range",
|
|
69
|
+
minPlaceholder: "From",
|
|
70
|
+
maxPlaceholder: "To"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
title: "Delivery",
|
|
74
|
+
value: "delivery",
|
|
75
|
+
type: "checkbox",
|
|
76
|
+
options: [
|
|
77
|
+
{ label: "Pickup", value: "pickup" },
|
|
78
|
+
{ label: "Courier", value: "courier" },
|
|
79
|
+
{ label: "Post", value: "post" }
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
title: "Status",
|
|
84
|
+
value: "status",
|
|
85
|
+
type: "radio",
|
|
86
|
+
options: [
|
|
87
|
+
{ label: "Available", value: "available" },
|
|
88
|
+
{ label: "Out of Stock", value: "out_of_stock" },
|
|
89
|
+
{ label: "Coming Soon", value: "coming_soon" }
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
]);
|
|
93
|
+
const selectedFilters = vue.ref({
|
|
94
|
+
price: { min: "", max: "" },
|
|
95
|
+
delivery: [],
|
|
96
|
+
status: null
|
|
97
|
+
});
|
|
98
|
+
const availabilityOptions = vue.ref([
|
|
99
|
+
{ label: "Available today", value: "today" },
|
|
100
|
+
{ label: "This week", value: "week" },
|
|
101
|
+
{ label: "This month", value: "month" }
|
|
102
|
+
]);
|
|
103
|
+
const selectedAvailability = vue.ref("all");
|
|
104
|
+
const showDatePickerPopup = vue.ref(false);
|
|
105
|
+
vue.ref(null);
|
|
106
|
+
const selectedDates = vue.ref(null);
|
|
107
|
+
const tempSelectedDates = vue.ref(null);
|
|
108
|
+
const priceRange = vue.ref({
|
|
109
|
+
min: "",
|
|
110
|
+
max: ""
|
|
111
|
+
});
|
|
112
|
+
const processedFilters = vue.computed(() => {
|
|
113
|
+
return generateFilters(selectedFilters.value);
|
|
44
114
|
});
|
|
115
|
+
const processedPrices = vue.computed(() => {
|
|
116
|
+
return priceRange.value.min || priceRange.value.max ? `${priceRange.value.min || 0}-${priceRange.value.max || 999999}` : null;
|
|
117
|
+
});
|
|
118
|
+
vue.computed(() => {
|
|
119
|
+
const lookups = ["variants"];
|
|
120
|
+
if (processedDates.value) {
|
|
121
|
+
lookups.push("rents");
|
|
122
|
+
}
|
|
123
|
+
return lookups;
|
|
124
|
+
});
|
|
125
|
+
const loadCategoryData = async () => {
|
|
126
|
+
const categoryPath = route.params.categoryPath;
|
|
127
|
+
try {
|
|
128
|
+
if (categoryPath) {
|
|
129
|
+
const result = await categories.actions.read({
|
|
130
|
+
url: `/${categoryPath}`,
|
|
131
|
+
depth: 1,
|
|
132
|
+
tree: false
|
|
133
|
+
});
|
|
134
|
+
if (result.length > 0) {
|
|
135
|
+
currentCategory.value = result[0];
|
|
136
|
+
currentCategories.value = result[0].children || [];
|
|
137
|
+
categoryFilters.value = result[0].filters || [];
|
|
138
|
+
const filtersObj = {};
|
|
139
|
+
(result[0].filters || []).forEach((filter) => {
|
|
140
|
+
filtersObj[filter.name] = [];
|
|
141
|
+
});
|
|
142
|
+
selectedFilters.value = filtersObj;
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
const result = await categories.actions.read({
|
|
146
|
+
root: true,
|
|
147
|
+
tree: false
|
|
148
|
+
});
|
|
149
|
+
currentCategories.value = result;
|
|
150
|
+
}
|
|
151
|
+
} catch (error) {
|
|
152
|
+
console.error("Error loading categories:", error);
|
|
153
|
+
currentCategories.value = [];
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
const selectCategory = (category) => {
|
|
157
|
+
const categoryPath = category.url ? category.url.substring(1) : "";
|
|
158
|
+
if (!categoryPath) {
|
|
159
|
+
console.warn("No URL found for category:", category);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (route.params._id) {
|
|
163
|
+
router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);
|
|
164
|
+
} else {
|
|
165
|
+
router.push(`/products/categories/${categoryPath}`);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const selectAvailabilityOption = (value) => {
|
|
169
|
+
selectedAvailability.value = value;
|
|
170
|
+
const today = /* @__PURE__ */ new Date();
|
|
171
|
+
switch (value) {
|
|
172
|
+
case "today":
|
|
173
|
+
selectedDates.value = {
|
|
174
|
+
start: today,
|
|
175
|
+
end: today
|
|
176
|
+
};
|
|
177
|
+
break;
|
|
178
|
+
case "week":
|
|
179
|
+
const weekEnd = new Date(today);
|
|
180
|
+
weekEnd.setDate(today.getDate() + 7);
|
|
181
|
+
selectedDates.value = {
|
|
182
|
+
start: today,
|
|
183
|
+
end: weekEnd
|
|
184
|
+
};
|
|
185
|
+
break;
|
|
186
|
+
case "month":
|
|
187
|
+
const monthEnd = new Date(today);
|
|
188
|
+
monthEnd.setMonth(today.getMonth() + 1);
|
|
189
|
+
selectedDates.value = {
|
|
190
|
+
start: today,
|
|
191
|
+
end: monthEnd
|
|
192
|
+
};
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const applyDateFilter = () => {
|
|
197
|
+
selectedDates.value = tempSelectedDates.value;
|
|
198
|
+
selectedAvailability.value = "custom";
|
|
199
|
+
showDatePickerPopup.value = false;
|
|
200
|
+
};
|
|
45
201
|
globals.state.navigation_bar.actions = [{
|
|
46
202
|
component: IconPlus.default,
|
|
47
203
|
props: {
|
|
@@ -50,63 +206,16 @@ const _sfc_main = {
|
|
|
50
206
|
condition: () => auth.state.user && auth.state.user._id,
|
|
51
207
|
action: () => route.params._id ? router.push({ name: "Organization_ProductAdd", params: { _id: route.params._id } }) : router.push({ name: "ProductAdd" })
|
|
52
208
|
}], vue.onMounted(async () => {
|
|
53
|
-
|
|
54
|
-
categoriesFilter = categoriesFilter.map((category) => ({
|
|
55
|
-
value: category._id,
|
|
56
|
-
label: category.name
|
|
57
|
-
}));
|
|
58
|
-
const index = products.state.filter.options.findIndex((option) => option.value === "categories");
|
|
59
|
-
const categoryOption = {
|
|
60
|
-
title: "Categories",
|
|
61
|
-
value: "categories",
|
|
62
|
-
options: categoriesFilter
|
|
63
|
-
};
|
|
64
|
-
if (index !== -1) {
|
|
65
|
-
products.state.filter.options[index] = categoryOption;
|
|
66
|
-
} else {
|
|
67
|
-
products.state.filter.options.unshift(categoryOption);
|
|
68
|
-
}
|
|
209
|
+
await loadCategoryData();
|
|
69
210
|
});
|
|
70
211
|
vue.onUnmounted(() => {
|
|
71
212
|
globals.state.navigation_bar.actions = [];
|
|
72
213
|
});
|
|
73
|
-
vue.watch(() => products.state.sort, (newSortValue, oldSortValue) => {
|
|
74
|
-
let query = { ...route.query };
|
|
75
|
-
query.sortParam = newSortValue.param;
|
|
76
|
-
query.sortOrder = newSortValue.order;
|
|
77
|
-
router.replace({ query });
|
|
78
|
-
}, { deep: true });
|
|
79
|
-
vue.watch(() => products.state.filter.selected, (newFilterValue, oldFilterValue) => {
|
|
80
|
-
const query = { ...route.query };
|
|
81
|
-
Object.keys(oldFilterValue).forEach((key) => {
|
|
82
|
-
if (query[key]) {
|
|
83
|
-
delete query[key];
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
const newQueryValues = Object.fromEntries(
|
|
87
|
-
Object.entries(newFilterValue).filter(([key, value]) => Array.isArray(value) && value.length > 0).map(([key, value]) => [key, value.join(",")])
|
|
88
|
-
);
|
|
89
|
-
delete query.options;
|
|
90
|
-
Object.assign(query, newQueryValues);
|
|
91
|
-
router.replace({ query });
|
|
92
|
-
}, { deep: true });
|
|
93
|
-
function debounce(fn, delay) {
|
|
94
|
-
let timeoutId = null;
|
|
95
|
-
return (...args) => {
|
|
96
|
-
clearTimeout(timeoutId);
|
|
97
|
-
timeoutId = setTimeout(() => fn(...args), delay);
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
const debouncedSearch = debounce((search) => {
|
|
101
|
-
let query = { ...route.query };
|
|
102
|
-
query.search = search;
|
|
103
|
-
router.replace({ query });
|
|
104
|
-
}, 500);
|
|
105
214
|
return (_ctx, _cache) => {
|
|
106
215
|
const _component_router_link = vue.resolveComponent("router-link");
|
|
107
216
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
108
217
|
vue.unref(route).name !== "Organization" && !_ctx.MOBILE_APP ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2, [
|
|
109
|
-
_cache[
|
|
218
|
+
_cache[11] || (_cache[11] = vue.createElementVNode("h2", { class: "mn-r-medium" }, "Products", -1)),
|
|
110
219
|
_ctx.hasAccess(vue.unref(route).params._id, "products", "create", auth.state.accesses, auth.state.access.roles) ? (vue.openBlock(), vue.createElementBlock("button", {
|
|
111
220
|
key: 0,
|
|
112
221
|
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({
|
|
@@ -115,41 +224,160 @@ const _sfc_main = {
|
|
|
115
224
|
class: "radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second"
|
|
116
225
|
}, " + ")) : vue.createCommentVNode("", true)
|
|
117
226
|
])) : vue.createCommentVNode("", true),
|
|
118
|
-
vue.unref(route).name !== "Organization" && _ctx.isAdmin ? (vue.openBlock(), vue.createBlock(Tab.default, {
|
|
119
|
-
key: 1,
|
|
120
|
-
selected: tabProducts.value,
|
|
121
|
-
"onUpdate:selected": _cache[1] || (_cache[1] = ($event) => tabProducts.value = $event),
|
|
122
|
-
tabs: [
|
|
123
|
-
{ name: "All", value: "all" },
|
|
124
|
-
{ name: "Published", value: "published" },
|
|
125
|
-
{ name: "Unpublished", value: "unpublished" },
|
|
126
|
-
{ name: "Archivied", value: "archivied" }
|
|
127
|
-
],
|
|
128
|
-
style: { "flex": "0 0 auto" },
|
|
129
|
-
class: "p-medium br-t br-solid br-light bg-white gap-micro pd-medium pd-t-thin pd-b-thin z-index-1",
|
|
130
|
-
classTab: "bg-light uppercase pd-small radius-small w-100"
|
|
131
|
-
}, null, 8, ["selected"])) : vue.createCommentVNode("", true),
|
|
132
227
|
vue.createElementVNode("div", _hoisted_3, [
|
|
133
228
|
vue.createElementVNode("div", _hoisted_4, [
|
|
134
|
-
vue.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
229
|
+
vue.createElementVNode("div", _hoisted_5, [
|
|
230
|
+
currentCategories.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
|
|
231
|
+
vue.createElementVNode("h4", _hoisted_7, vue.toDisplayString(vue.unref(route).params.categoryPath ? "Subcategories" : "Categories"), 1),
|
|
232
|
+
vue.createElementVNode("div", _hoisted_8, [
|
|
233
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(currentCategories.value, (category) => {
|
|
234
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
235
|
+
key: category._id,
|
|
236
|
+
onClick: ($event) => selectCategory(category),
|
|
237
|
+
class: "pd-small radius-small cursor-pointer hover-bg-light transition-all"
|
|
238
|
+
}, [
|
|
239
|
+
vue.createTextVNode(vue.toDisplayString(category.name) + " ", 1),
|
|
240
|
+
_cache[12] || (_cache[12] = vue.createElementVNode("br", null, null, -1)),
|
|
241
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(category.children, (subcategory) => {
|
|
242
|
+
return vue.openBlock(), vue.createElementBlock("span", null, vue.toDisplayString(subcategory.name), 1);
|
|
243
|
+
}), 256))
|
|
244
|
+
], 8, _hoisted_9);
|
|
245
|
+
}), 128))
|
|
246
|
+
])
|
|
247
|
+
])) : vue.createCommentVNode("", true),
|
|
248
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(categoryFilters.value, (filter) => {
|
|
249
|
+
return vue.openBlock(), vue.createBlock(Spoiler.default, {
|
|
250
|
+
key: filter.name,
|
|
251
|
+
class: "o-hidden mn-b-medium",
|
|
252
|
+
status: true
|
|
253
|
+
}, {
|
|
254
|
+
header: vue.withCtx(({ isOpen }) => [
|
|
255
|
+
vue.createElementVNode("div", _hoisted_10, [
|
|
256
|
+
vue.createElementVNode("h4", _hoisted_11, vue.toDisplayString(filter.name), 1),
|
|
257
|
+
vue.createElementVNode("div", _hoisted_12, [
|
|
258
|
+
vue.createVNode(IconChevronBottom.default, {
|
|
259
|
+
class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
260
|
+
fill: "rgb(var(--black))"
|
|
261
|
+
}, null, 8, ["class"])
|
|
262
|
+
])
|
|
263
|
+
])
|
|
264
|
+
]),
|
|
265
|
+
content: vue.withCtx(() => [
|
|
266
|
+
vue.createElementVNode("div", _hoisted_13, [
|
|
267
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filter.options, (option) => {
|
|
268
|
+
return vue.openBlock(), vue.createBlock(Checkbox.default, {
|
|
269
|
+
key: option.text || option,
|
|
270
|
+
radio: selectedFilters.value[filter.name],
|
|
271
|
+
"onUpdate:radio": ($event) => selectedFilters.value[filter.name] = $event,
|
|
272
|
+
label: option.text || option,
|
|
273
|
+
value: option.text || option,
|
|
274
|
+
mode: "checkbox",
|
|
275
|
+
class: "mn-b-micro"
|
|
276
|
+
}, null, 8, ["radio", "onUpdate:radio", "label", "value"]);
|
|
277
|
+
}), 128))
|
|
278
|
+
])
|
|
279
|
+
]),
|
|
280
|
+
_: 2
|
|
281
|
+
}, 1024);
|
|
282
|
+
}), 128)),
|
|
283
|
+
vue.createVNode(Spoiler.default, {
|
|
284
|
+
class: "o-hidden mn-b-medium",
|
|
285
|
+
status: true
|
|
286
|
+
}, {
|
|
287
|
+
header: vue.withCtx(({ isOpen }) => [
|
|
288
|
+
vue.createElementVNode("div", _hoisted_14, [
|
|
289
|
+
_cache[13] || (_cache[13] = vue.createElementVNode("h4", { class: "w-100" }, " Price", -1)),
|
|
290
|
+
vue.createElementVNode("div", _hoisted_15, [
|
|
291
|
+
vue.createVNode(IconChevronBottom.default, {
|
|
292
|
+
class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
293
|
+
fill: "rgb(var(--black))"
|
|
294
|
+
}, null, 8, ["class"])
|
|
295
|
+
])
|
|
296
|
+
])
|
|
297
|
+
]),
|
|
298
|
+
content: vue.withCtx(() => [
|
|
299
|
+
vue.createElementVNode("div", _hoisted_16, [
|
|
300
|
+
vue.createVNode(Field.default, {
|
|
301
|
+
modelValue: priceRange.value.min,
|
|
302
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => priceRange.value.min = $event),
|
|
303
|
+
placeholder: "From",
|
|
304
|
+
type: "number",
|
|
305
|
+
class: "w-50 bg-light pd-small radius-small"
|
|
306
|
+
}, null, 8, ["modelValue"]),
|
|
307
|
+
vue.createVNode(Field.default, {
|
|
308
|
+
modelValue: priceRange.value.max,
|
|
309
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => priceRange.value.max = $event),
|
|
310
|
+
placeholder: "To",
|
|
311
|
+
type: "number",
|
|
312
|
+
class: "w-50 bg-light pd-small radius-small"
|
|
313
|
+
}, null, 8, ["modelValue"])
|
|
314
|
+
])
|
|
315
|
+
]),
|
|
316
|
+
_: 1
|
|
317
|
+
}),
|
|
318
|
+
vue.createVNode(Spoiler.default, {
|
|
319
|
+
class: "o-hidden mn-b-medium",
|
|
320
|
+
status: true
|
|
321
|
+
}, {
|
|
322
|
+
header: vue.withCtx(({ isOpen }) => [
|
|
323
|
+
vue.createElementVNode("div", _hoisted_17, [
|
|
324
|
+
_cache[14] || (_cache[14] = vue.createElementVNode("h4", { class: "w-100" }, "Availability", -1)),
|
|
325
|
+
vue.createElementVNode("div", _hoisted_18, [
|
|
326
|
+
vue.createVNode(IconChevronBottom.default, {
|
|
327
|
+
class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
|
|
328
|
+
fill: "rgb(var(--black))"
|
|
329
|
+
}, null, 8, ["class"])
|
|
330
|
+
])
|
|
331
|
+
])
|
|
332
|
+
]),
|
|
333
|
+
content: vue.withCtx(() => [
|
|
334
|
+
vue.createElementVNode("div", _hoisted_19, [
|
|
335
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(availabilityOptions.value, (option) => {
|
|
336
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
337
|
+
key: option.value,
|
|
338
|
+
onClick: ($event) => selectAvailabilityOption(option.value),
|
|
339
|
+
class: vue.normalizeClass([{ "bg-light": selectedAvailability.value === option.value }, "pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"])
|
|
340
|
+
}, vue.toDisplayString(option.label), 11, _hoisted_20);
|
|
341
|
+
}), 128)),
|
|
342
|
+
vue.createElementVNode("div", {
|
|
343
|
+
onClick: _cache[3] || (_cache[3] = () => {
|
|
344
|
+
tempSelectedDates.value = selectedDates.value;
|
|
345
|
+
showDatePickerPopup.value = true;
|
|
346
|
+
}),
|
|
347
|
+
class: vue.normalizeClass([{ "bg-light": selectedAvailability.value === "custom" }, "pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"])
|
|
348
|
+
}, vue.toDisplayString(selectedDates.value ? `${vue.unref(formatDate)(selectedDates.value.start, { dayMonth: true, language: "en" })} - ${vue.unref(formatDate)(selectedDates.value.end, { dayMonth: true, language: "en" })}` : "Select dates"), 3)
|
|
349
|
+
])
|
|
350
|
+
]),
|
|
351
|
+
_: 1
|
|
352
|
+
}),
|
|
353
|
+
_cache[15] || (_cache[15] = vue.createElementVNode("button", { class: "bg-main w-100 button mn-t-medium" }, " Clear Filters ", -1))
|
|
354
|
+
])
|
|
140
355
|
]),
|
|
141
|
-
vue.createElementVNode("div",
|
|
356
|
+
vue.createElementVNode("div", _hoisted_21, [
|
|
357
|
+
vue.createVNode(Filters.default, {
|
|
358
|
+
filters: availableFilters.value,
|
|
359
|
+
"onUpdate:filters": _cache[4] || (_cache[4] = ($event) => availableFilters.value = $event),
|
|
360
|
+
selected: selectedFilters.value,
|
|
361
|
+
"onUpdate:selected": _cache[5] || (_cache[5] = ($event) => selectedFilters.value = $event)
|
|
362
|
+
}, null, 8, ["filters", "selected"]),
|
|
142
363
|
vue.renderSlot(_ctx.$slots, "default"),
|
|
143
|
-
vue.createElementVNode("div",
|
|
144
|
-
vue.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
364
|
+
vue.createElementVNode("div", _hoisted_22, [
|
|
365
|
+
vue.createElementVNode("div", _hoisted_23, [
|
|
366
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(currentCategories.value, (category) => {
|
|
367
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
368
|
+
key: category._id,
|
|
369
|
+
onClick: ($event) => selectCategory(category),
|
|
370
|
+
class: "flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all"
|
|
371
|
+
}, vue.toDisplayString(category.name), 9, _hoisted_24);
|
|
372
|
+
}), 128))
|
|
373
|
+
])
|
|
149
374
|
]),
|
|
150
375
|
vue.createVNode(Feed.default, {
|
|
376
|
+
search: true,
|
|
151
377
|
filter: products.state.filter,
|
|
152
|
-
"onUpdate:filter": _cache[
|
|
378
|
+
"onUpdate:filter": _cache[6] || (_cache[6] = ($event) => products.state.filter = $event),
|
|
379
|
+
sort: products.state.sort,
|
|
380
|
+
"onUpdate:sort": _cache[7] || (_cache[7] = ($event) => products.state.sort = $event),
|
|
153
381
|
showLoadMore: false,
|
|
154
382
|
states: {
|
|
155
383
|
empty: {
|
|
@@ -163,15 +391,14 @@ const _sfc_main = {
|
|
|
163
391
|
},
|
|
164
392
|
options: {
|
|
165
393
|
limit: 16,
|
|
166
|
-
owner: vue.unref(route).params._id,
|
|
167
|
-
categories: vue.unref(route).query.categories,
|
|
168
|
-
filters: _ctx.generateFilters(products.state.filter.selected),
|
|
169
|
-
prices: vue.unref(route).query.prices,
|
|
170
|
-
delivery: vue.unref(route).query.delivery,
|
|
394
|
+
owner: vue.unref(route).name?.includes("Organization") ? vue.unref(route).params._id : null,
|
|
171
395
|
search: vue.unref(route).query.search,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
396
|
+
lookup: ["variants", "rents"],
|
|
397
|
+
categories: vue.unref(route).params.categoryPath ? `/${vue.unref(route).params.categoryPath}` : null,
|
|
398
|
+
filters: processedFilters.value,
|
|
399
|
+
prices: processedPrices.value,
|
|
400
|
+
dateStart: selectedDates.value?.start,
|
|
401
|
+
dateEnd: selectedDates.value?.end
|
|
175
402
|
},
|
|
176
403
|
class: "cols-4 pos-relative w-100 rows-1 gap-thin"
|
|
177
404
|
}, {
|
|
@@ -198,9 +425,37 @@ const _sfc_main = {
|
|
|
198
425
|
}), 256))
|
|
199
426
|
]),
|
|
200
427
|
_: 1
|
|
201
|
-
}, 8, ["filter", "store", "options"])
|
|
428
|
+
}, 8, ["filter", "sort", "store", "options"])
|
|
202
429
|
])
|
|
203
|
-
])
|
|
430
|
+
]),
|
|
431
|
+
vue.createVNode(Popup.default, {
|
|
432
|
+
isPopupOpen: showDatePickerPopup.value,
|
|
433
|
+
onClosePopup: _cache[10] || (_cache[10] = ($event) => showDatePickerPopup.value = false),
|
|
434
|
+
class: "pd-medium bg-white radius-medium",
|
|
435
|
+
style: { "min-width": "350px" }
|
|
436
|
+
}, {
|
|
437
|
+
default: vue.withCtx(() => [
|
|
438
|
+
_cache[16] || (_cache[16] = vue.createElementVNode("h3", { class: "mn-b-medium" }, "Select Date Range", -1)),
|
|
439
|
+
vue.createVNode(Calendar.default, {
|
|
440
|
+
date: tempSelectedDates.value,
|
|
441
|
+
"onUpdate:date": _cache[8] || (_cache[8] = ($event) => tempSelectedDates.value = $event),
|
|
442
|
+
allowRange: true,
|
|
443
|
+
disablePastDates: true,
|
|
444
|
+
class: "mn-b-medium"
|
|
445
|
+
}, null, 8, ["date"]),
|
|
446
|
+
vue.createElementVNode("div", _hoisted_25, [
|
|
447
|
+
vue.createElementVNode("button", {
|
|
448
|
+
onClick: applyDateFilter,
|
|
449
|
+
class: "bg-main button flex-child-full"
|
|
450
|
+
}, " Apply "),
|
|
451
|
+
vue.createElementVNode("button", {
|
|
452
|
+
onClick: _cache[9] || (_cache[9] = ($event) => showDatePickerPopup.value = false),
|
|
453
|
+
class: "bg-light button flex-child-full"
|
|
454
|
+
}, " Cancel ")
|
|
455
|
+
])
|
|
456
|
+
]),
|
|
457
|
+
_: 1
|
|
458
|
+
}, 8, ["isPopupOpen"])
|
|
204
459
|
]);
|
|
205
460
|
};
|
|
206
461
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <Tab \n v-if=\"route.name !== 'Organization' && isAdmin\"\n v-model:selected=\"tabProducts\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Published', value: 'published' },\n { name: 'Unpublished', value: 'unpublished' }, \n { name: 'Archivied', value: 'archivied' } \n ]\"\n style=\"flex: 0 0 auto\"\n class=\"\n\n p-medium\n br-t br-solid br-light \n bg-white\n gap-micro pd-medium pd-t-thin pd-b-thin\n z-index-1\n\n \"\n classTab=\"bg-light uppercase pd-small radius-small w-100\"\n />\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative radius-medium\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <BlockFilter\n v-model:filter=\"products.state.filter\"\n :options=\"products.state.filter.options\"\n class=\"h-100 w-100\"\n />\n </div>\n\n <div class=\"w-100 pd-thin h-max pos-relative o-hidden\">\n <slot></slot>\n <div class=\"pos-relative w-100 z-index-3 radius-tl-big radius-tr-big\">\n <BlockSearch \n @search=\"debouncedSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-light mn-b-thin h-4r\"\n />\n </div>\n <Feed\n v-model:filter=\"products.state.filter\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.params._id,\n categories: route.query.categories,\n filters: generateFilters(products.state.filter.selected),\n prices: route.query.prices,\n delivery: route.query.delivery,\n search: route.query.search,\n ...(tabProducts !== 'all' && { status: tabProducts }),\n lookup: ['variants']\n // user: user\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 pos-relative w-100 rows-1 gap-thin\"\n \n >\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </Feed>\n\n </div>\n </div>\n</div>\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as marketplace from '@martyrs/src/modules/marketplace/views/store/marketplace.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n const route = useRoute()\n const router = useRouter()\n\n // Tab logic\n const tabProducts = ref(route.query.tabProducts ? route.query.tabProducts : 'all')\n\n if (route.name !== 'Organization') route.query.tabProducts = tabProducts.value\n \n if (route.query) {\n const query = route.query;\n\n products.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n products.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n products.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n products.state.filter.selected.brand = query.brand ? query.brand.split(',') : [];\n }\n\n\n watch(tabProducts, (newValue) => {\n if (route.name !== 'Organization') router.replace({ query: { ...route.query, tabProducts: newValue } });\n });\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }],\n\n onMounted(async () => {\n let categoriesFilter = await categories.actions.read({rootOnly:true});\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category._id,\n label: category.name\n }));\n\n const index = products.state.filter.options.findIndex(option => option.value === 'categories');\n\n const categoryOption = {\n title: 'Categories',\n value: 'categories',\n options: categoriesFilter\n };\n\n if (index !== -1) {\n products.state.filter.options[index] = categoryOption;\n } else {\n products.state.filter.options.unshift(categoryOption);\n }\n })\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n watch(() => products.state.sort, (newSortValue, oldSortValue) => {\n let query = { ...route.query}\n \n query.sortParam = newSortValue.param\n query.sortOrder = newSortValue.order\n \n // replace the current route\n router.replace({ query });\n }, { deep: true });\n\n\n watch(() => products.state.filter.selected, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n\n delete query.options;\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((search) => {\n let query = { ...route.query}\n \n query.search = search\n \n router.replace({ query });\n}, 500);\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","ref","products.state","watch","globals.state","IconPlus","auth.state","onMounted","categories.actions","onUnmounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-small\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"pd-small radius-small cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n\n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model=\"priceRange.min\"\n placeholder=\"From\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model=\"priceRange.max\"\n placeholder=\"To\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n v-for=\"option in availabilityOptions\"\n :key=\"option.value\"\n @click=\"selectAvailabilityOption(option.value)\"\n :class=\"{ 'bg-light': selectedAvailability === option.value }\"\n class=\"pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro\"\n >\n {{ option.label }}\n </div>\n \n <div \n @click=\"() => { tempSelectedDates = selectedDates; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedAvailability === 'custom' }\"\n class=\"pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro\"\n >\n {{ selectedDates ? `${formatDate(selectedDates.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedDates.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}} \n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n />\n <slot></slot>\n <!-- <div class=\"pos-relative w-100 z-index-3 radius-tl-big radius-tr-big\">\n <BlockSearch \n @search=\"debouncedSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-light mn-b-thin h-4r\"\n />\n </div> -->\n <div class=\"mn-b-thin w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n <Feed\n :search=\"true\"\n v-model:filter=\"products.state.filter\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n search: route.query.search,\n lookup: ['variants','rents'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n prices: processedPrices,\n dateStart: selectedDates?.start,\n dateEnd: selectedDates?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 pos-relative w-100 rows-1 gap-thin\"\n \n >\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button flex-child-full\"\n >\n Apply\n </button>\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue'\n import Filters from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\n const route = useRoute()\n const router = useRouter()\n const { generateFilters, formatDate } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\nconst availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Delivery',\n value: 'delivery',\n type: 'checkbox',\n options: [\n { label: 'Pickup', value: 'pickup' },\n { label: 'Courier', value: 'courier' },\n { label: 'Post', value: 'post' }\n ]\n },\n {\n title: 'Status',\n value: 'status',\n type: 'radio',\n options: [\n { label: 'Available', value: 'available' },\n { label: 'Out of Stock', value: 'out_of_stock' },\n { label: 'Coming Soon', value: 'coming_soon' }\n ]\n }\n])\n\nconst selectedFilters = ref({\n price: { min: '', max: '' },\n delivery: [],\n status: null\n})\n\n \n // Переменные фильтров\n const availabilityOptions = ref([\n { label: 'Available today', value: 'today' },\n { label: 'This week', value: 'week' },\n { label: 'This month', value: 'month' }\n ]);\n \n const selectedAvailability = ref('all');\n const showDatePickerPopup = ref(false);\n const selectedPeriod = ref(null);\n const selectedDates = ref(null);\n const tempSelectedDates = ref(null);\n \n const priceRange = ref({\n min: '',\n max: ''\n });\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n return generateFilters(selectedFilters.value);\n });\n\n const processedPrices = computed(() => {\n return priceRange.value.min || priceRange.value.max ? `${priceRange.value.min || 0}-${priceRange.value.max || 999999}` : null;\n });\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (processedDates.value) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Initialize selected filters object\n const filtersObj = {};\n (result[0].filters || []).forEach(filter => {\n filtersObj[filter.name] = [];\n });\n selectedFilters.value = filtersObj;\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n // Функция выбора опции доступности\n const selectAvailabilityOption = (value) => {\n selectedAvailability.value = value;\n const today = new Date();\n \n switch(value) {\n case 'today':\n selectedDates.value = {\n start: today,\n end: today\n };\n break;\n case 'week':\n const weekEnd = new Date(today);\n weekEnd.setDate(today.getDate() + 7);\n selectedDates.value = {\n start: today,\n end: weekEnd\n };\n break;\n case 'month':\n const monthEnd = new Date(today);\n monthEnd.setMonth(today.getMonth() + 1);\n selectedDates.value = {\n start: today,\n end: monthEnd\n };\n break;\n }\n };\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedDates.value = tempSelectedDates.value;\n selectedAvailability.value = 'custom';\n showDatePickerPopup.value = false;\n };\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }],\n\n onMounted(async () => {\n await loadCategoryData();\n })\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","useGlobalMixins","ref","computed","categories.actions","globals.state","IconPlus","auth.state","onMounted","onUnmounted"],"mappings":"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"}
|