@ozdao/martyrs 0.2.481 → 0.2.483
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/README.md +4 -13
- package/dist/{Media-CKk33U4A.js → Media-C57G7rnE.js} +1 -1
- package/dist/{Media-B1ZP3D7B.cjs → Media-DjnpKS62.cjs} +1 -1
- package/dist/_virtual/_commonjsHelpers.cjs +2 -0
- package/dist/_virtual/_commonjsHelpers.cjs.map +1 -1
- package/dist/_virtual/_commonjsHelpers.js +2 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/_virtual/index2.cjs +8 -0
- package/dist/_virtual/index2.cjs.map +1 -0
- package/dist/_virtual/index2.js +8 -0
- package/dist/_virtual/index2.js.map +1 -0
- package/dist/_virtual/index3.cjs +5 -0
- package/dist/_virtual/index3.cjs.map +1 -0
- package/dist/_virtual/index3.js +5 -0
- package/dist/_virtual/index3.js.map +1 -0
- package/dist/{abac-XF1JVCLI.cjs → abac-6LjoG9u-.cjs} +107 -26
- package/dist/{abac-BuL5pUZ4.js → abac-Cf_9lCSh.js} +107 -26
- package/dist/globals.server.cjs +1 -1
- package/dist/globals.server.js +1 -1
- package/dist/{main-BhAiwmnI.js → main-CXQqAVVb.js} +3036 -4278
- package/dist/main-De5X_RUk.cjs +11 -0
- package/dist/martyrs/src/components/Button/{Button.vue2.cjs → Button.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Button/{Button.vue2.js.map → Button.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +2 -2
- package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +28 -7
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +29 -8
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs +5 -8
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js +6 -9
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +84 -0
- package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Feed/Carousel.vue.js +84 -0
- package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +4 -4
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +4 -4
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs +2 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js +2 -1
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +141 -113
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +142 -114
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +203 -151
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +204 -152
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
- package/dist/martyrs/src/components/Radio/Radio.vue.cjs +2 -2
- package/dist/martyrs/src/components/Radio/Radio.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Radio/Radio.vue.js +2 -2
- package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +4 -3
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +4 -3
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
- package/dist/martyrs/src/components/Slider/{Slider.native.vue.cjs → Slider.vue.cjs} +22 -80
- package/dist/martyrs/src/components/Slider/Slider.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Slider/{Slider.native.vue.js → Slider.vue.js} +23 -81
- package/dist/martyrs/src/components/Slider/Slider.vue.js.map +1 -0
- package/dist/martyrs/src/components/Status/Status.vue.cjs +11 -5
- package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Status/Status.vue.js +13 -7
- package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs +4 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js +4 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +6 -4
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +6 -4
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +4 -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 +5 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +22 -149
- 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 +24 -151
- 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 +77 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +77 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +121 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +121 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +38 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +38 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
- 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/components/sections/SliderFeatures.vue.cjs +17 -39
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +18 -40
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterCode.json.js +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/EnterPassword.json.js +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/ResetPassword.json.js +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignIn.json.js +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/localization/SignUp.json.js +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.cjs +23 -16
- package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.js +23 -16
- package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +3 -3
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +6 -6
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +4 -3
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +4 -3
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +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/sections/Comment.vue.cjs +92 -62
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +93 -63
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs +82 -53
- package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +82 -53
- package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +2 -6
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +2 -6
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.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 +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +3 -9
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +3 -9
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +4 -4
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +9 -9
- package/dist/martyrs/src/modules/globals/globals.client.cjs +13 -0
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +13 -0
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/locales/en.cjs +24 -0
- package/dist/martyrs/src/modules/globals/locales/en.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/locales/en.js +24 -0
- package/dist/martyrs/src/modules/globals/locales/en.js.map +1 -0
- package/dist/martyrs/src/modules/globals/locales/ru.cjs +24 -0
- package/dist/martyrs/src/modules/globals/locales/ru.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/locales/ru.js +24 -0
- package/dist/martyrs/src/modules/globals/locales/ru.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +71 -0
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +71 -0
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +84 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +84 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js.map +1 -0
- 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 +50 -44
- 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 +50 -44
- 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/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/mixins/mixins.cjs +17 -0
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +17 -0
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs +70 -0
- package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js +70 -0
- package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/store/globals.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/store/globals.js.map +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs +35 -0
- package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconList.vue.js +35 -0
- package/dist/martyrs/src/modules/icons/entities/IconList.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs +21 -20
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +21 -20
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs +6 -13
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +6 -13
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +1 -3
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -3
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +41 -43
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +52 -58
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +52 -58
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs +8 -8
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +8 -8
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +50 -51
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +51 -52
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.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/DepartmentEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
- 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 +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +7 -4
- 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 +18 -15
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +7 -2
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +8 -3
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +11 -12
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +12 -13
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +32 -23
- 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 +35 -26
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +7 -5
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +7 -5
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +57 -40
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +59 -42
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +105 -85
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +107 -87
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +145 -0
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +145 -0
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +46 -31
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +50 -35
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +44 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +44 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +131 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +131 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/products/products.client.cjs +3 -3
- package/dist/martyrs/src/modules/products/products.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/products.client.js +3 -3
- package/dist/martyrs/src/modules/products/products.client.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/products.cjs +4 -0
- package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/products.js +4 -0
- package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.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/node_modules/lodash.merge/index.cjs +689 -0
- package/dist/node_modules/lodash.merge/index.cjs.map +1 -0
- package/dist/node_modules/lodash.merge/index.js +689 -0
- package/dist/node_modules/lodash.merge/index.js.map +1 -0
- package/dist/organizations.server.cjs +1 -1
- package/dist/organizations.server.js +1 -1
- package/dist/products.server.cjs +111 -34
- package/dist/products.server.js +111 -34
- package/dist/style.css +239 -235
- package/package.json +1 -1
- package/src/.martyrs/chunks.json +325 -0
- package/src/.martyrs/filemap.json +6802 -0
- package/src/.martyrs/semantic-analysis.json +307 -0
- package/src/.martyrs/toc.json +14 -0
- package/src/components/Button/Button.vue +2 -2
- package/src/components/Checkbox/Checkbox.vue +28 -16
- package/src/components/Chips/Chips.vue +4 -4
- package/src/components/Feed/Carousel.vue +72 -0
- package/src/components/Feed/Feed.vue +2 -2
- package/src/components/Field/Field.vue +1 -0
- package/src/components/FieldPhone/FieldPhone.vue +337 -238
- package/src/components/PhotoViewer/PhotoViewer.vue +307 -220
- package/src/components/Radio/Radio.vue +2 -10
- package/src/components/Skeleton/Skeleton.vue +9 -12
- package/src/components/Slider/Slider.vue +220 -100
- package/src/components/Status/Status.vue +10 -8
- package/src/components/Tooltip/Tooltip.vue +2 -2
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/pages/Profile.vue +1 -1
- package/src/modules/auth/views/components/pages/ProfileEdit.old.vue +189 -0
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +19 -182
- package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +72 -0
- package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +110 -0
- package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +28 -0
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +13 -79
- package/src/modules/auth/views/localization/EnterCode.json +2 -2
- package/src/modules/auth/views/localization/EnterPassword.json +2 -2
- package/src/modules/auth/views/localization/ResetPassword.json +2 -2
- package/src/modules/auth/views/localization/SignIn.json +2 -2
- package/src/modules/auth/views/localization/SignUp.json +2 -2
- package/src/modules/auth/views/router/users.js +23 -12
- package/src/modules/community/components/blocks/FooterBlogpost.vue +3 -3
- package/src/modules/community/components/pages/BlogPost.vue +2 -1
- package/src/modules/community/components/sections/Comment.vue +161 -57
- package/src/modules/community/components/sections/Comments.vue +120 -63
- package/src/modules/community/components/sections/HotPosts.vue +7 -7
- package/src/modules/events/components/sections/EventsHot.vue +26 -33
- package/src/modules/globals/controllers/classes/abac/abac.core.js +3 -1
- package/src/modules/globals/controllers/classes/abac/abac.fields.js +126 -42
- package/src/modules/globals/controllers/classes/abac/v2/abac-core-fixed.js +313 -0
- package/src/modules/globals/controllers/classes/abac/v2/abac-express-fixed.js +276 -0
- package/src/modules/globals/controllers/classes/abac/v2/abac-fields-fixed.js +422 -0
- package/src/modules/globals/controllers/classes/abac/v2/abac-main-fixed.js +295 -0
- package/src/modules/globals/controllers/classes/abac/v2/abac-policies-fixed.js +316 -0
- package/src/modules/globals/controllers/classes/abac/v2/abac-ws-fixed.js +237 -0
- package/src/modules/globals/globals.client.js +17 -1
- package/src/modules/globals/locales/en.js +21 -0
- package/src/modules/globals/locales/index.js +8 -0
- package/src/modules/globals/locales/ru.js +21 -0
- package/src/modules/globals/views/classes/globals.i18n.js +84 -0
- package/src/modules/globals/views/components/blocks/CardFooter.vue +3 -3
- package/src/modules/globals/views/components/blocks/CardHeader.vue +1 -1
- package/src/modules/globals/views/components/blocks/PopupAuth.vue +66 -0
- package/src/modules/globals/views/components/layouts/Client.vue +43 -40
- package/src/modules/globals/views/components/partials/Footer.vue +162 -162
- package/src/modules/globals/views/mixins/mixins.js +37 -17
- package/src/modules/globals/views/plugins/popup.auth.plugin.js +77 -0
- package/src/modules/globals/views/store/globals.js +0 -40
- package/src/modules/icons/entities/IconList.vue +14 -0
- package/src/modules/icons/navigation/IconCheck.vue +1 -3
- package/src/modules/icons/navigation/IconDoubleCheck.vue +1 -3
- package/src/modules/icons/navigation/IconLike.vue +1 -3
- package/src/modules/icons/navigation/IconMute.vue +1 -3
- package/src/modules/icons/navigation/IconPause.vue +1 -3
- package/src/modules/icons/navigation/IconPlay.vue +12 -15
- package/src/modules/icons/navigation/IconRefresh.vue +1 -3
- package/src/modules/icons/navigation/IconShuffle.vue +11 -26
- package/src/modules/icons/navigation/IconUnMute.vue +1 -3
- package/src/modules/icons/navigation/IconVolume.vue +1 -3
- package/src/modules/icons/pages/IconsPage.vue +0 -2
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +34 -38
- package/src/modules/music/components/pages/AlbumDetail.vue +2 -2
- package/src/modules/music/components/pages/PlaylistDetail.vue +2 -2
- package/src/modules/music/components/pages/TrackDetail.vue +1 -1
- package/src/modules/music/components/player/MusicPlayer.vue +2 -2
- package/src/modules/notifications/components/blocks/NotificationItem.vue +6 -51
- package/src/modules/notifications/components/elements/NotificationBadge.vue +53 -97
- package/src/modules/organizations/configs/navigation.organization.config.js +8 -4
- package/src/modules/products/components/blocks/CardProduct.vue +8 -2
- package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -4
- package/src/modules/products/components/blocks/ProductImages.vue +32 -23
- package/src/modules/products/components/blocks/ProductVariants.vue +6 -4
- package/src/modules/products/components/elements/Price.vue +3 -3
- package/src/modules/products/components/pages/Product.vue +32 -26
- package/src/modules/products/components/pages/ProductEdit.vue +95 -72
- package/src/modules/products/components/sections/EditRecommended.vue +131 -0
- package/src/modules/products/components/sections/ProductConfigurator.vue +35 -21
- package/src/modules/products/components/sections/ProductsPopular.vue +45 -0
- package/src/modules/products/components/sections/ProductsRecommended.vue +134 -0
- package/src/modules/products/controllers/configs/products.lookup.config.js +20 -15
- package/src/modules/products/controllers/products.controller.js +7 -22
- package/src/modules/products/models/category.model.js +28 -1
- package/src/modules/products/models/leftover.model.js +32 -0
- package/src/modules/products/models/product.model.js +37 -1
- package/src/modules/products/models/variant.model.js +35 -0
- package/src/modules/products/products.client.js +3 -3
- package/src/modules/products/routes/products.routes.js +1 -0
- package/src/modules/products/store/products.js +4 -0
- package/src/modules/wallet/views/localization/wallet.json +2 -2
- package/src/styles/base/all.scss +0 -38
- package/src/styles/base/shadow_transitions_hover_refactor.scss +20 -51
- package/src/styles/config.scss +51 -1
- package/dist/main-C75EcBpE.cjs +0 -11
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/Slider/Slider.native.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Slider/Slider.native.vue.js.map +0 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs +0 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs.map +0 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js +0 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js.map +0 -1
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +0 -34
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +0 -34
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +0 -124
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +0 -124
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.cjs +0 -194
- package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.cjs.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js +0 -194
- package/dist/node_modules/.pnpm/embla-carousel-autoplay@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs +0 -43
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js +0 -43
- package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs +0 -43
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js +0 -43
- package/dist/node_modules/.pnpm/embla-carousel-vue@8.6.0_vue@3.5.13_typescript@5.8.3_/node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs +0 -1630
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs.map +0 -1
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js +0 -1630
- package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js.map +0 -1
- package/src/components/Slider/Slider.native.vue +0 -313
- package/src/modules/products/components/sections/PopularProducts.vue +0 -156
|
@@ -16,18 +16,34 @@
|
|
|
16
16
|
:selectedVariant="selectedVariant"
|
|
17
17
|
:productVariants="productVariants"
|
|
18
18
|
@select-discount="handleDiscountSelected"
|
|
19
|
+
class="mn-b-medium"
|
|
19
20
|
/>
|
|
20
|
-
|
|
21
|
-
<!--
|
|
22
|
-
<div class="
|
|
23
|
-
<div class="
|
|
24
|
-
<p class="t-medium">
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
|
|
22
|
+
<!-- Показываем цену, если нет вариантов или не выбран ни один вариант -->
|
|
23
|
+
<div class="flex-nowrap flex gap-thin">
|
|
24
|
+
<div class="">
|
|
25
|
+
<p class="t-medium mn-b-thin">Price</p>
|
|
26
|
+
<Price
|
|
27
|
+
v-if="!selectedVariant"
|
|
28
|
+
:product="product"
|
|
29
|
+
:variants="productVariants"
|
|
30
|
+
size="big"
|
|
31
|
+
class="flex gap-micro flex-center pd-small bg-second t-white w-max mn-b-medium"
|
|
32
|
+
/>
|
|
28
33
|
</div>
|
|
34
|
+
|
|
29
35
|
|
|
30
|
-
|
|
36
|
+
<!-- Quantity Selection -->
|
|
37
|
+
<div class="w-100">
|
|
38
|
+
<div class="flex flex-nowrap flex-v-center mn-b-thin">
|
|
39
|
+
<p class="t-medium">Quantity</p>
|
|
40
|
+
<span v-if="selectedVariant" class="t-small t-transp mn-l-thin">
|
|
41
|
+
(Max: {{ maxQuantity }})
|
|
42
|
+
</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<QuantitySelector v-model="quantity" :maxValue="maxQuantity" />
|
|
46
|
+
</div>
|
|
31
47
|
</div>
|
|
32
48
|
|
|
33
49
|
<!-- Out of stock notice -->
|
|
@@ -38,25 +54,21 @@
|
|
|
38
54
|
</div>
|
|
39
55
|
|
|
40
56
|
<!-- Add to cart button -->
|
|
41
|
-
<div class="w-100 mn-b-
|
|
57
|
+
<div class="w-100 mn-b-medium">
|
|
42
58
|
<Button
|
|
43
|
-
|
|
44
|
-
:
|
|
59
|
+
:submit="isVariantAvailable ? addVariantToCart : undefined"
|
|
60
|
+
:disabled="!isVariantAvailable"
|
|
45
61
|
class="cursor-pointer pd-medium radius-big w-100 bg-main button h-3r"
|
|
46
62
|
>
|
|
47
|
-
<div class="gap-micro flex flex-center flex-nowrap">
|
|
63
|
+
<div v-if="isVariantAvailable" class="gap-micro flex flex-center flex-nowrap">
|
|
48
64
|
<IconShopcartAdd class="i-semi"/>
|
|
49
65
|
<span class="t-nowrap">{{ t('addtoorder') }}</span>
|
|
50
66
|
</div>
|
|
67
|
+
<template v-else>
|
|
68
|
+
<span v-if="!selectedVariant && productVariants.length > 1">Select variant</span>
|
|
69
|
+
<span v-else>Out of Stock</span>
|
|
70
|
+
</template>
|
|
51
71
|
</Button>
|
|
52
|
-
|
|
53
|
-
<div
|
|
54
|
-
v-else
|
|
55
|
-
class="flex-center flex uppercase radius-big t-black w-100 pd-medium t-medium bg-grey h-3r"
|
|
56
|
-
>
|
|
57
|
-
<span v-if="!selectedVariant && productVariants.length > 1">Select variant</span>
|
|
58
|
-
<span v-else>Out of Stock</span>
|
|
59
|
-
</div>
|
|
60
72
|
</div>
|
|
61
73
|
</div>
|
|
62
74
|
</template>
|
|
@@ -71,6 +83,8 @@ import ProductVariants from '../blocks/ProductVariants.vue';
|
|
|
71
83
|
import ProductDiscounts from '../blocks/ProductDiscounts.vue';
|
|
72
84
|
import QuantitySelector from '../elements/QuantitySelector.vue';
|
|
73
85
|
|
|
86
|
+
import Price from '@martyrs/src/modules/products/components/elements/Price.vue'
|
|
87
|
+
|
|
74
88
|
const props = defineProps({
|
|
75
89
|
productVariants: { type: Array, default: () => [] },
|
|
76
90
|
productId: { type: String, required: true },
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Carousel
|
|
3
|
+
:store="{
|
|
4
|
+
read: products.actions.read
|
|
5
|
+
}"
|
|
6
|
+
:options="{
|
|
7
|
+
limit: 10
|
|
8
|
+
}"
|
|
9
|
+
:text="{ title: 'No products available' }"
|
|
10
|
+
:showDots="true"
|
|
11
|
+
class="popupar_products"
|
|
12
|
+
>
|
|
13
|
+
<template #default="{ item }">
|
|
14
|
+
<router-link
|
|
15
|
+
:to="{ name: 'Organization_Product', params: { _id: item.owner.target, product: item._id } }"
|
|
16
|
+
class="h-100 pos-relative block"
|
|
17
|
+
>
|
|
18
|
+
<CardProduct
|
|
19
|
+
:product="item"
|
|
20
|
+
class="h-max-40r h-100 bg-light"
|
|
21
|
+
/>
|
|
22
|
+
</router-link>
|
|
23
|
+
</template>
|
|
24
|
+
</Carousel>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script setup>
|
|
28
|
+
import Carousel from '@martyrs/src/components/Feed/Carousel.vue'
|
|
29
|
+
import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'
|
|
30
|
+
|
|
31
|
+
import * as products from '@martyrs/src/modules/products/store/products.js'
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<style lang="scss">
|
|
35
|
+
.popupar_products .carousel__slide {
|
|
36
|
+
flex: 0 0 25%;
|
|
37
|
+
min-width: 0;
|
|
38
|
+
}
|
|
39
|
+
@media screen and (max-width: 1025px) {
|
|
40
|
+
.popupar_products .carousel__slide {
|
|
41
|
+
flex: 0 0 75%;
|
|
42
|
+
min-width: 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
</style>
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { ref, computed } from 'vue'
|
|
3
|
+
import { useRouter } from 'vue-router'
|
|
4
|
+
|
|
5
|
+
import Button from '@martyrs/src/components/Button/Button.vue'
|
|
6
|
+
import Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'
|
|
7
|
+
|
|
8
|
+
import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'
|
|
9
|
+
|
|
10
|
+
import IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';
|
|
11
|
+
import IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';
|
|
12
|
+
import IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'
|
|
13
|
+
|
|
14
|
+
import * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'
|
|
15
|
+
|
|
16
|
+
const router = useRouter()
|
|
17
|
+
|
|
18
|
+
// Props
|
|
19
|
+
const props = defineProps({
|
|
20
|
+
products: {
|
|
21
|
+
type: Array,
|
|
22
|
+
required: true,
|
|
23
|
+
default: () => []
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
// Состояние выбранных товаров - массив id товаров с вариантами
|
|
28
|
+
const selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))
|
|
29
|
+
|
|
30
|
+
// Вычисляемая общая цена
|
|
31
|
+
const totalPrice = computed(() => {
|
|
32
|
+
return props.products
|
|
33
|
+
.filter(p => selectedProducts.value.includes(p._id))
|
|
34
|
+
.reduce((sum, p) => {
|
|
35
|
+
const price = p.variants?.[0]?.price || 0
|
|
36
|
+
return sum + price
|
|
37
|
+
}, 0)
|
|
38
|
+
.toFixed(2)
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
// Проверка возможности добавления в корзину
|
|
42
|
+
const canAddToCart = computed(() => {
|
|
43
|
+
const selected = props.products.filter(p => selectedProducts.value.includes(p._id))
|
|
44
|
+
return selected.length > 0 && selected.some(p => p.variants?.length > 0)
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
const handleProductClick = (product) => {
|
|
48
|
+
if (product?._id && product?.owner?.target) {
|
|
49
|
+
router.push({
|
|
50
|
+
name: 'Organization_Product',
|
|
51
|
+
params: {
|
|
52
|
+
_id: product.owner.target,
|
|
53
|
+
product: product._id
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Добавление выбранных товаров в корзину
|
|
60
|
+
const addSelectedToCart = async () => {
|
|
61
|
+
const selected = props.products.filter(p => selectedProducts.value.includes(p._id))
|
|
62
|
+
|
|
63
|
+
if (selected.length === 0) return
|
|
64
|
+
|
|
65
|
+
try {
|
|
66
|
+
// Берем организацию первого товара
|
|
67
|
+
const firstProduct = selected[0]
|
|
68
|
+
const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target
|
|
69
|
+
|
|
70
|
+
// Проверяем, что в корзине товары той же организации
|
|
71
|
+
if (shopcart.state.organization && shopcart.state.organization !== organizationId) {
|
|
72
|
+
// Можно добавить подтверждение замены корзины
|
|
73
|
+
shopcart.state.positions = []
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
shopcart.state.organization = organizationId
|
|
77
|
+
|
|
78
|
+
// Добавляем каждый выбранный товар
|
|
79
|
+
for (const product of selected) {
|
|
80
|
+
// Проверяем наличие варианта
|
|
81
|
+
if (!product.variants || product.variants.length === 0) continue
|
|
82
|
+
|
|
83
|
+
await shopcart.actions.addProductToCart(
|
|
84
|
+
product,
|
|
85
|
+
organizationId,
|
|
86
|
+
null // selectedDates для rent листинга
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error('Error adding to cart:', error)
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
</script>
|
|
94
|
+
|
|
95
|
+
<template>
|
|
96
|
+
<div>
|
|
97
|
+
<h3 class="mn-b-small">Frequently Bought Together</h3>
|
|
98
|
+
<div class="recommended-products cols-4 mobile:cols-2 gap-thin">
|
|
99
|
+
|
|
100
|
+
<CardProduct
|
|
101
|
+
v-for="(product, index) in products"
|
|
102
|
+
:key="product?._id || index"
|
|
103
|
+
:product="product"
|
|
104
|
+
class="h-100 bg-light"
|
|
105
|
+
@click="handleProductClick(product)"
|
|
106
|
+
:showAddToCart="false"
|
|
107
|
+
>
|
|
108
|
+
<Checkbox
|
|
109
|
+
v-model:radio="selectedProducts"
|
|
110
|
+
:value="product._id"
|
|
111
|
+
mode="checkbox"
|
|
112
|
+
:validation="!product.variants || product.variants.length === 0"
|
|
113
|
+
class="pos-r-small pos-t-small pos-absolute"
|
|
114
|
+
@click.stop
|
|
115
|
+
/>
|
|
116
|
+
</CardProduct>
|
|
117
|
+
|
|
118
|
+
<div class="flex-center flex flex-column pd-small radius-small br-solid br-1px br-light">
|
|
119
|
+
<div class="mn-b-thin i-extra pd-small bg-light radius-extra">
|
|
120
|
+
<IconProducts class="i-big"/>
|
|
121
|
+
</div>
|
|
122
|
+
<p class="mn-b-small">Total price:</p>
|
|
123
|
+
<p class="mn-b-medium h3 t-medium">${{ totalPrice }}</p>
|
|
124
|
+
<Button
|
|
125
|
+
class="bg-main gap-micro"
|
|
126
|
+
:submit="canAddToCart ? addSelectedToCart : undefined"
|
|
127
|
+
>
|
|
128
|
+
<IconShopcartAdd class="i-semi"/>
|
|
129
|
+
<span>Add to Cart</span>
|
|
130
|
+
</Button>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
</template>
|
|
@@ -104,6 +104,14 @@ export default {
|
|
|
104
104
|
}
|
|
105
105
|
]
|
|
106
106
|
},
|
|
107
|
+
recommended: {
|
|
108
|
+
lookup: {
|
|
109
|
+
from: 'products',
|
|
110
|
+
localField: 'recommended',
|
|
111
|
+
foreignField: '_id',
|
|
112
|
+
as: 'recommended'
|
|
113
|
+
}
|
|
114
|
+
},
|
|
107
115
|
// Лукап для категорий продукта
|
|
108
116
|
categories: {
|
|
109
117
|
lookup: {
|
|
@@ -112,24 +120,21 @@ export default {
|
|
|
112
120
|
foreignField: '_id',
|
|
113
121
|
as: 'category'
|
|
114
122
|
},
|
|
115
|
-
additionalStages: [
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
description: '$$cat.description',
|
|
127
|
-
url: '$$cat.url'
|
|
128
|
-
}
|
|
123
|
+
additionalStages: [{
|
|
124
|
+
$addFields: {
|
|
125
|
+
category: {
|
|
126
|
+
$map: {
|
|
127
|
+
input: '$category',
|
|
128
|
+
as: 'cat',
|
|
129
|
+
in: {
|
|
130
|
+
_id: '$$cat._id',
|
|
131
|
+
name: '$$cat.name',
|
|
132
|
+
description: '$$cat.description',
|
|
133
|
+
url: '$$cat.url'
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
}
|
|
132
137
|
}
|
|
133
|
-
]
|
|
138
|
+
}]
|
|
134
139
|
}
|
|
135
140
|
};
|
|
@@ -72,7 +72,7 @@ const controllerFactory = db => {
|
|
|
72
72
|
const Update = async (req, res) => {
|
|
73
73
|
try {
|
|
74
74
|
const { _id } = req.params;
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
const updateData = {
|
|
77
77
|
name: req.body.name,
|
|
78
78
|
status: req.body.status,
|
|
@@ -81,8 +81,10 @@ const controllerFactory = db => {
|
|
|
81
81
|
category: req.body.category?.map(cat => cat._id) || [],
|
|
82
82
|
images: req.body.images,
|
|
83
83
|
attributes: req.body.attributes,
|
|
84
|
+
recommended: req.body.recommended,
|
|
84
85
|
localization: req.body.translations,
|
|
85
86
|
discounts: req.body.discounts,
|
|
87
|
+
included: req.body.included
|
|
86
88
|
};
|
|
87
89
|
|
|
88
90
|
const updatedProduct = await Product.findOneAndUpdate({ _id }, updateData, { new: true });
|
|
@@ -90,7 +92,9 @@ const controllerFactory = db => {
|
|
|
90
92
|
if (!updatedProduct) {
|
|
91
93
|
return res.status(404).send({ message: 'Something wrong when updating product.' });
|
|
92
94
|
}
|
|
95
|
+
|
|
93
96
|
res.status(200).send(updatedProduct);
|
|
97
|
+
|
|
94
98
|
} catch (err) {
|
|
95
99
|
res.status(500).send({ message: err.message });
|
|
96
100
|
}
|
|
@@ -108,6 +112,7 @@ const controllerFactory = db => {
|
|
|
108
112
|
res.status(500).send({ message: err.message });
|
|
109
113
|
}
|
|
110
114
|
};
|
|
115
|
+
|
|
111
116
|
const getProductRecommendation = async (req, res) => {
|
|
112
117
|
const { mood } = req.body;
|
|
113
118
|
try {
|
|
@@ -155,32 +160,12 @@ const controllerFactory = db => {
|
|
|
155
160
|
res.status(500).send({ message: err });
|
|
156
161
|
}
|
|
157
162
|
};
|
|
158
|
-
|
|
159
|
-
Product.find({
|
|
160
|
-
status: 'published',
|
|
161
|
-
views: { $gt: 10 },
|
|
162
|
-
})
|
|
163
|
-
// .populate('variants')
|
|
164
|
-
.limit(10)
|
|
165
|
-
.exec((err, products) => {
|
|
166
|
-
// If error
|
|
167
|
-
if (err) {
|
|
168
|
-
return res.status(500).send({ message: err });
|
|
169
|
-
}
|
|
170
|
-
// If not found
|
|
171
|
-
if (!products) {
|
|
172
|
-
return res.status(404).send({ message: 'Products not found.' });
|
|
173
|
-
}
|
|
174
|
-
// If succes
|
|
175
|
-
res.status(200).send(products);
|
|
176
|
-
});
|
|
177
|
-
};
|
|
163
|
+
|
|
178
164
|
return {
|
|
179
165
|
Create,
|
|
180
166
|
Read,
|
|
181
167
|
Update,
|
|
182
168
|
Delete,
|
|
183
|
-
getProductsPopular,
|
|
184
169
|
getProductRecommendation,
|
|
185
170
|
};
|
|
186
171
|
};
|
|
@@ -24,8 +24,35 @@ export default db => {
|
|
|
24
24
|
ownership(CategorySchema, db);
|
|
25
25
|
metadata(CategorySchema, db);
|
|
26
26
|
engagement(CategorySchema, db);
|
|
27
|
-
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// Текстовый индекс для поиска
|
|
28
30
|
CategorySchema.index({ name: 1 });
|
|
31
|
+
CategorySchema.index({ name: 'text', description: 'text' });
|
|
32
|
+
|
|
33
|
+
// Основные составные индексы (покрывают префиксные запросы)
|
|
34
|
+
CategorySchema.index({ 'owner.type': 1, 'owner.target': 1, status: 1, parent: 1 });
|
|
35
|
+
CategorySchema.index({ 'owner.type': 1, 'owner.target': 1, order: 1 });
|
|
36
|
+
CategorySchema.index({ parent: 1, status: 1, order: 1 });
|
|
37
|
+
CategorySchema.index({ parent: 1, status: 1, 'owner.type': 1 });
|
|
38
|
+
CategorySchema.index({ parent: 1, name: 1 });
|
|
39
|
+
CategorySchema.index({ parent: 1, createdAt: -1 });
|
|
40
|
+
CategorySchema.index({ parent: 1, updatedAt: -1 });
|
|
41
|
+
|
|
42
|
+
// Индексы для сортировки без parent
|
|
43
|
+
CategorySchema.index({ status: 1, order: 1 });
|
|
44
|
+
CategorySchema.index({ status: 1, name: 1 });
|
|
45
|
+
CategorySchema.index({ status: 1, createdAt: -1 });
|
|
46
|
+
CategorySchema.index({ status: 1, updatedAt: -1 });
|
|
47
|
+
|
|
48
|
+
// Специальный индекс для graphLookup
|
|
49
|
+
CategorySchema.index({ _id: 1, parent: 1 });
|
|
50
|
+
|
|
51
|
+
// Отдельные индексы для полей без префиксов в составных
|
|
52
|
+
CategorySchema.index({ order: 1 });
|
|
53
|
+
CategorySchema.index({ createdAt: -1 });
|
|
54
|
+
CategorySchema.index({ updatedAt: -1 });
|
|
55
|
+
|
|
29
56
|
const Category = db.mongoose.model('Category', CategorySchema, 'categories');
|
|
30
57
|
return Category;
|
|
31
58
|
};
|
|
@@ -65,7 +65,39 @@ export default db => {
|
|
|
65
65
|
|
|
66
66
|
applyOwnershipSchema(LeftoverSchema, db);
|
|
67
67
|
|
|
68
|
+
// Существующий составной индекс
|
|
68
69
|
LeftoverSchema.index({ storage: 1, order: 1, type: 1 });
|
|
70
|
+
|
|
71
|
+
// Текстовый индекс для поиска по позициям
|
|
72
|
+
LeftoverSchema.index({ 'positions.name': 'text', comment: 'text' });
|
|
73
|
+
|
|
74
|
+
// Основные составные индексы (покрывают префиксные запросы)
|
|
75
|
+
LeftoverSchema.index({ 'owner.type': 1, 'owner.target': 1, type: 1, storage: 1 });
|
|
76
|
+
LeftoverSchema.index({ 'owner.type': 1, 'owner.target': 1, createdAt: -1 });
|
|
77
|
+
LeftoverSchema.index({ 'owner.type': 1, 'owner.target': 1, updatedAt: -1 });
|
|
78
|
+
LeftoverSchema.index({ type: 1, 'owner.type': 1, 'owner.target': 1, createdAt: -1 });
|
|
79
|
+
LeftoverSchema.index({ type: 1, storage: 1 });
|
|
80
|
+
LeftoverSchema.index({ type: 1, order: 1 });
|
|
81
|
+
LeftoverSchema.index({ type: 1, createdAt: -1 });
|
|
82
|
+
LeftoverSchema.index({ type: 1, updatedAt: -1 });
|
|
83
|
+
LeftoverSchema.index({ type: 1, 'positions._id': 1 });
|
|
84
|
+
|
|
85
|
+
// Индексы для позиций с составными
|
|
86
|
+
LeftoverSchema.index({ 'positions._id': 1, type: 1, createdAt: -1 });
|
|
87
|
+
LeftoverSchema.index({ storage: 1, 'positions._id': 1, type: 1 });
|
|
88
|
+
LeftoverSchema.index({ storage: 1, createdAt: -1 });
|
|
89
|
+
LeftoverSchema.index({ order: 1, type: 1 });
|
|
90
|
+
LeftoverSchema.index({ order: 1, createdAt: -1 });
|
|
91
|
+
|
|
92
|
+
// Индексы для позиций
|
|
93
|
+
LeftoverSchema.index({ 'positions._id': 1 });
|
|
94
|
+
LeftoverSchema.index({ 'positions.product': 1 });
|
|
95
|
+
LeftoverSchema.index({ 'positions.variant._id': 1 });
|
|
96
|
+
LeftoverSchema.index({ 'positions.name': 1 });
|
|
97
|
+
|
|
98
|
+
// Отдельные индексы для полей без префиксов в составных
|
|
99
|
+
LeftoverSchema.index({ createdAt: -1 });
|
|
100
|
+
LeftoverSchema.index({ updatedAt: -1 });
|
|
69
101
|
|
|
70
102
|
const Leftover = db.mongoose.model('Leftover', LeftoverSchema);
|
|
71
103
|
|
|
@@ -28,10 +28,17 @@ export default db => {
|
|
|
28
28
|
description: {
|
|
29
29
|
type: String,
|
|
30
30
|
},
|
|
31
|
+
included: {
|
|
32
|
+
type: String
|
|
33
|
+
},
|
|
31
34
|
attributes: [{
|
|
32
35
|
name: { type: String },
|
|
33
36
|
value: { type: String },
|
|
34
37
|
}],
|
|
38
|
+
recommended: [{
|
|
39
|
+
type: db.mongoose.Schema.Types.ObjectId,
|
|
40
|
+
ref: 'Product'
|
|
41
|
+
}],
|
|
35
42
|
translations: {
|
|
36
43
|
type: Array,
|
|
37
44
|
},
|
|
@@ -45,9 +52,38 @@ export default db => {
|
|
|
45
52
|
applyCommonSchema(ProductSchema, db);
|
|
46
53
|
applyOwnershipSchema(ProductSchema, db);
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
// Текстовый индекс для поиска
|
|
49
56
|
ProductSchema.index({ name: 'text', description: 'text' });
|
|
50
57
|
|
|
58
|
+
// Основные составные индексы (покрывают префиксные запросы)
|
|
59
|
+
ProductSchema.index({ 'owner.type': 1, 'owner.target': 1, status: 1, category: 1 });
|
|
60
|
+
ProductSchema.index({ category: 1, status: 1, delivery: 1, price: 1 });
|
|
61
|
+
ProductSchema.index({ category: 1, status: 1, price: -1 });
|
|
62
|
+
ProductSchema.index({ category: 1, status: 1, views: -1 });
|
|
63
|
+
ProductSchema.index({ category: 1, status: 1, createdAt: -1 });
|
|
64
|
+
ProductSchema.index({ category: 1, status: 1, updatedAt: -1 });
|
|
65
|
+
ProductSchema.index({ category: 1, delivery: 1, price: 1 });
|
|
66
|
+
|
|
67
|
+
// Индексы для атрибутов
|
|
68
|
+
ProductSchema.index({ 'attributes.name': 1, 'attributes.value': 1 });
|
|
69
|
+
|
|
70
|
+
// Индексы для сортировки без категории
|
|
71
|
+
ProductSchema.index({ status: 1, delivery: 1, price: 1 });
|
|
72
|
+
ProductSchema.index({ status: 1, price: -1 });
|
|
73
|
+
ProductSchema.index({ status: 1, views: -1 });
|
|
74
|
+
ProductSchema.index({ status: 1, createdAt: -1 });
|
|
75
|
+
ProductSchema.index({ status: 1, updatedAt: -1 });
|
|
76
|
+
ProductSchema.index({ status: 1, name: 1 });
|
|
77
|
+
ProductSchema.index({ status: 1, 'attributes.name': 1, 'attributes.value': 1 });
|
|
78
|
+
|
|
79
|
+
// Отдельные индексы для полей без префиксов в составных
|
|
80
|
+
ProductSchema.index({ listing: 1 });
|
|
81
|
+
ProductSchema.index({ recommended: 1 });
|
|
82
|
+
ProductSchema.index({ price: 1 });
|
|
83
|
+
ProductSchema.index({ views: -1 });
|
|
84
|
+
ProductSchema.index({ createdAt: -1 });
|
|
85
|
+
ProductSchema.index({ updatedAt: -1 });
|
|
86
|
+
|
|
51
87
|
const Product = db.mongoose.model('Product', ProductSchema);
|
|
52
88
|
|
|
53
89
|
return Product;
|
|
@@ -58,7 +58,42 @@ export default db => {
|
|
|
58
58
|
applyCommonSchema(VariantSchema, db);
|
|
59
59
|
applyOwnershipSchema(VariantSchema, db);
|
|
60
60
|
|
|
61
|
+
// Существующий индекс
|
|
61
62
|
VariantSchema.index({ Variant: 1, name: 1 });
|
|
63
|
+
|
|
64
|
+
// Текстовый индекс для поиска
|
|
65
|
+
VariantSchema.index({ name: 'text', sku: 'text' });
|
|
66
|
+
|
|
67
|
+
// Основные составные индексы (покрывают префиксные запросы)
|
|
68
|
+
VariantSchema.index({ 'owner.type': 1, 'owner.target': 1, product: 1, status: 1 });
|
|
69
|
+
VariantSchema.index({ product: 1, status: 1, price: 1 });
|
|
70
|
+
VariantSchema.index({ product: 1, status: 1, quantity: 1 });
|
|
71
|
+
VariantSchema.index({ product: 1, sku: 1 });
|
|
72
|
+
VariantSchema.index({ product: 1, 'ingredients._id': 1 });
|
|
73
|
+
|
|
74
|
+
// Индексы для атрибутов
|
|
75
|
+
VariantSchema.index({ 'attributes.name': 1, 'attributes.value': 1 });
|
|
76
|
+
|
|
77
|
+
// Составные индексы для сортировки
|
|
78
|
+
VariantSchema.index({ status: 1, price: 1 });
|
|
79
|
+
VariantSchema.index({ status: 1, price: -1 });
|
|
80
|
+
VariantSchema.index({ status: 1, quantity: 1 });
|
|
81
|
+
VariantSchema.index({ status: 1, quantity: -1 });
|
|
82
|
+
VariantSchema.index({ status: 1, createdAt: -1 });
|
|
83
|
+
VariantSchema.index({ status: 1, updatedAt: -1 });
|
|
84
|
+
VariantSchema.index({ status: 1, quantity: 1, product: 1 });
|
|
85
|
+
|
|
86
|
+
// Индексы для ингредиентов
|
|
87
|
+
VariantSchema.index({ 'ingredients._id': 1 });
|
|
88
|
+
VariantSchema.index({ 'ingredients.quantity': 1 });
|
|
89
|
+
|
|
90
|
+
// Отдельные индексы для полей без префиксов в составных
|
|
91
|
+
VariantSchema.index({ sku: 1 });
|
|
92
|
+
VariantSchema.index({ name: 1 });
|
|
93
|
+
VariantSchema.index({ price: 1 });
|
|
94
|
+
VariantSchema.index({ quantity: 1 });
|
|
95
|
+
VariantSchema.index({ createdAt: -1 });
|
|
96
|
+
VariantSchema.index({ updatedAt: -1 });
|
|
62
97
|
|
|
63
98
|
const Variant = db.mongoose.model('Variant', VariantSchema);
|
|
64
99
|
|
|
@@ -20,7 +20,7 @@ import ProductImages from './components/blocks/ProductImages.vue';
|
|
|
20
20
|
import EditVariants from './components/sections/EditVariants.vue';
|
|
21
21
|
import FilterProducts from './components/sections/FilterProducts.vue';
|
|
22
22
|
import HeroRecommendation from './components/sections/HeroRecommendation.vue';
|
|
23
|
-
import
|
|
23
|
+
import ProductsPopular from './components/sections/ProductsPopular.vue';
|
|
24
24
|
import SectionProduct from './components/sections/SectionProduct.vue';
|
|
25
25
|
|
|
26
26
|
// Elements
|
|
@@ -72,7 +72,7 @@ const ModuleProducts = {
|
|
|
72
72
|
HeroRecommendation,
|
|
73
73
|
FilterProducts,
|
|
74
74
|
EditVariants,
|
|
75
|
-
|
|
75
|
+
ProductsPopular,
|
|
76
76
|
// Pages
|
|
77
77
|
Product,
|
|
78
78
|
ProductEdit,
|
|
@@ -98,7 +98,7 @@ export {
|
|
|
98
98
|
// Blocks
|
|
99
99
|
ProductImages,
|
|
100
100
|
Leftovers,
|
|
101
|
-
|
|
101
|
+
ProductsPopular,
|
|
102
102
|
// Elements
|
|
103
103
|
Price,
|
|
104
104
|
// Pages
|
|
@@ -9,5 +9,6 @@ export default (function (app, db, allowedOrigins) {
|
|
|
9
9
|
app.post('/api/products/:_id', controller.Update);
|
|
10
10
|
// (D) Delete product
|
|
11
11
|
app.delete('/api/products/:_id', controller.Delete);
|
|
12
|
+
|
|
12
13
|
app.post('/api/product/recommended', controller.getProductRecommendation);
|
|
13
14
|
});
|
|
@@ -25,8 +25,10 @@ const state = reactive({
|
|
|
25
25
|
price: 0,
|
|
26
26
|
price_cost: 0,
|
|
27
27
|
localization: [],
|
|
28
|
+
recommended: [],
|
|
28
29
|
variants: [],
|
|
29
30
|
discounts: [],
|
|
31
|
+
included: [],
|
|
30
32
|
ingredients: [],
|
|
31
33
|
description: '',
|
|
32
34
|
},
|
|
@@ -206,6 +208,7 @@ const actions = {
|
|
|
206
208
|
const mutations = {
|
|
207
209
|
resetProduct(product) {
|
|
208
210
|
state.current = {
|
|
211
|
+
included: [],
|
|
209
212
|
recommendation: false,
|
|
210
213
|
category: [],
|
|
211
214
|
status: 'unpublished',
|
|
@@ -220,6 +223,7 @@ const mutations = {
|
|
|
220
223
|
price_currency: '$',
|
|
221
224
|
localization: [],
|
|
222
225
|
variants: [],
|
|
226
|
+
recommended: [],
|
|
223
227
|
discounts: [],
|
|
224
228
|
ingredients: [],
|
|
225
229
|
description: '',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"messages": {
|
|
3
|
-
"en
|
|
3
|
+
"en": {
|
|
4
4
|
"wallet": {
|
|
5
5
|
"title": "Your Wallet",
|
|
6
6
|
"subtitle": "Earn WDT by purchasing our weed or contributing to the community.",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"depositWithCrypto": "deposit with crypto"
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
|
-
"ru
|
|
17
|
+
"ru": {
|
|
18
18
|
"wallet": {
|
|
19
19
|
"title": "Ваш Кошелек",
|
|
20
20
|
"subtitle": "Зарабатывайте WDT, покупая товары или внося вклад в сообщество.",
|