@ozdao/martyrs 0.2.481 → 0.2.482
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-JBERcJWj.js} +1 -1
- package/dist/{Media-B1ZP3D7B.cjs → Media-p7Q8ZAQM.cjs} +1 -1
- 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-AtCVQKF9.js} +2855 -4162
- package/dist/main-B-we7C0w.cjs +11 -0
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
- 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 → Chips.vue2.cjs} +7 -10
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +8 -11
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
- 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/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/Popup/{Popup.vue.cjs → Popup.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Popup/{Popup.vue.js → Popup.vue2.js} +2 -2
- package/dist/martyrs/src/components/Popup/{Popup.vue.cjs.map → Popup.vue2.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.map +1 -1
- 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/pages/Profile.vue.cjs +3 -1
- 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 +4 -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/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/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/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/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 +5 -4
- 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 +5 -4
- 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/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.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.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +5 -5
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +11 -11
- package/dist/martyrs/src/modules/globals/globals.client.cjs +2 -0
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +2 -0
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js +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.cjs.map +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/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 +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.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/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/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/OrderCreateBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/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 +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
- 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/DetailsTabSection.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.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/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/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 +12 -13
- 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 +13 -14
- 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 +33 -24
- 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 +36 -27
- 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/CategoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
- 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 +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +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 +104 -84
- 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 +106 -86
- 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/EditIngredients.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.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 +45 -30
- 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 +43 -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 +43 -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/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/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.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 +2 -2
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- 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 +196 -170
- 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/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 +0 -1
- package/src/components/Tooltip/Tooltip.vue +2 -2
- 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/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 +2 -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/mixins/mixins.js +37 -17
- package/src/modules/globals/views/plugins/popup.auth.plugin.js +77 -0
- 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/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 +44 -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/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/Chips/Chips.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js.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/Popup/Popup.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/src/components/Slider/Slider.native.vue +0 -313
- package/src/modules/products/components/sections/PopularProducts.vue +0 -156
|
@@ -8,11 +8,12 @@ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
|
|
|
8
8
|
import _sfc_main$4 from "../../../../components/EditImages/EditImages.vue2.js";
|
|
9
9
|
import BlockMultiselect from "../../../globals/views/components/blocks/BlockMultiselect.vue.js";
|
|
10
10
|
import _sfc_main$5 from "../../../icons/navigation/IconCross.vue.js";
|
|
11
|
-
import _sfc_main$
|
|
11
|
+
import _sfc_main$a from "../../../icons/navigation/IconDelete.vue.js";
|
|
12
12
|
import _sfc_main$7 from "../sections/EditVariants.vue.js";
|
|
13
13
|
import _sfc_main$6 from "../sections/EditAttributes.vue.js";
|
|
14
14
|
import _sfc_main$8 from "../sections/EditDiscounts.vue.js";
|
|
15
15
|
/* empty css */
|
|
16
|
+
import _sfc_main$9 from "../sections/EditRecommended.vue.js";
|
|
16
17
|
import { setError } from "../../../globals/views/store/globals.js";
|
|
17
18
|
import { state as state$2 } from "../../../auth/views/store/auth.js";
|
|
18
19
|
import { mutations, actions, state } from "../../store/products.js";
|
|
@@ -26,18 +27,18 @@ const _hoisted_3 = {
|
|
|
26
27
|
key: 2,
|
|
27
28
|
class: "cols-1 gap-thin"
|
|
28
29
|
};
|
|
29
|
-
const _hoisted_4 = { class: "
|
|
30
|
-
const _hoisted_5 = { class: "
|
|
31
|
-
const _hoisted_6 =
|
|
32
|
-
const _hoisted_7 =
|
|
33
|
-
const _hoisted_8 =
|
|
34
|
-
const _hoisted_9 =
|
|
35
|
-
const _hoisted_10 = { class: "
|
|
36
|
-
const _hoisted_11 = {
|
|
37
|
-
const _hoisted_12 = {
|
|
30
|
+
const _hoisted_4 = { class: "flex-nowrap flex-v-center flex gap-thin" };
|
|
31
|
+
const _hoisted_5 = { class: "t-medium" };
|
|
32
|
+
const _hoisted_6 = ["onClick"];
|
|
33
|
+
const _hoisted_7 = { class: "flex-nowrap flex-v-center flex" };
|
|
34
|
+
const _hoisted_8 = ["src"];
|
|
35
|
+
const _hoisted_9 = { class: "w-100" };
|
|
36
|
+
const _hoisted_10 = { class: "t-medium" };
|
|
37
|
+
const _hoisted_11 = {
|
|
38
38
|
key: 0,
|
|
39
39
|
class: "t-small t-transp"
|
|
40
40
|
};
|
|
41
|
+
const _hoisted_12 = { class: "mn-b-thin flex-nowrap flex gap-thin" };
|
|
41
42
|
const _hoisted_13 = { class: "radius-small pd-small flex-center flex aspect-1x1 bg-red cursor-pointer hover-scale-1" };
|
|
42
43
|
const _hoisted_14 = { class: "flex-nowrap flex gap-thin" };
|
|
43
44
|
const _sfc_main = {
|
|
@@ -53,7 +54,7 @@ const _sfc_main = {
|
|
|
53
54
|
emits("page-loading");
|
|
54
55
|
mutations.resetProduct();
|
|
55
56
|
if (route.params.product) {
|
|
56
|
-
await actions.read({ _id: route.params.product, lookup: ["variants", "categories"] });
|
|
57
|
+
await actions.read({ _id: route.params.product, lookup: ["variants", "categories", "recommended"] });
|
|
57
58
|
} else {
|
|
58
59
|
if (!state.current.variants || state.current.variants.length === 0) {
|
|
59
60
|
state.current.variants = [{
|
|
@@ -73,6 +74,9 @@ const _sfc_main = {
|
|
|
73
74
|
if (!state.current.translations) {
|
|
74
75
|
state.current.translations = [];
|
|
75
76
|
}
|
|
77
|
+
if (!state.current.recommended) {
|
|
78
|
+
state.current.recommended = [];
|
|
79
|
+
}
|
|
76
80
|
if (!state.current.discounts) {
|
|
77
81
|
state.current.discounts = [];
|
|
78
82
|
}
|
|
@@ -91,10 +95,7 @@ const _sfc_main = {
|
|
|
91
95
|
});
|
|
92
96
|
async function onSubmit() {
|
|
93
97
|
try {
|
|
94
|
-
|
|
95
|
-
setError({ response: { data: { errorCode: "PRODUCT_MUST_HAVE_VARIANT" } } });
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
+
console.log("product is", state.current);
|
|
98
99
|
if (route.params.product) {
|
|
99
100
|
await actions.update(route.params.product, state.current);
|
|
100
101
|
} else {
|
|
@@ -138,7 +139,7 @@ const _sfc_main = {
|
|
|
138
139
|
callback: redirectTo,
|
|
139
140
|
class: "w-10 w-max-20r w-min-8r bg-red"
|
|
140
141
|
}, {
|
|
141
|
-
default: withCtx(() => _cache[
|
|
142
|
+
default: withCtx(() => _cache[12] || (_cache[12] = [
|
|
142
143
|
createTextVNode(" Delete ")
|
|
143
144
|
])),
|
|
144
145
|
_: 1
|
|
@@ -148,7 +149,7 @@ const _sfc_main = {
|
|
|
148
149
|
callback: redirectTo,
|
|
149
150
|
class: "w-10 w-max-20r w-min-8r bg-main"
|
|
150
151
|
}, {
|
|
151
|
-
default: withCtx(() => _cache[
|
|
152
|
+
default: withCtx(() => _cache[13] || (_cache[13] = [
|
|
152
153
|
createTextVNode(" Save ")
|
|
153
154
|
])),
|
|
154
155
|
_: 1
|
|
@@ -164,6 +165,7 @@ const _sfc_main = {
|
|
|
164
165
|
{ label: "Details", value: "details" },
|
|
165
166
|
{ label: "Variants", value: "variants" },
|
|
166
167
|
{ label: "Discounts", value: "discounts" },
|
|
168
|
+
{ label: "Recommended", value: "recommended" },
|
|
167
169
|
{ label: "Localization", value: "localization" }
|
|
168
170
|
],
|
|
169
171
|
class: "flex-child-default bg-light radius-medium h-max pd-thin o-x-scroll"
|
|
@@ -184,56 +186,11 @@ const _sfc_main = {
|
|
|
184
186
|
]),
|
|
185
187
|
_: 1
|
|
186
188
|
}),
|
|
187
|
-
createVNode(_sfc_main$1, { title: "Profile" }, {
|
|
188
|
-
default: withCtx(() => [
|
|
189
|
-
createElementVNode("div", _hoisted_4, [
|
|
190
|
-
createVNode(Select, {
|
|
191
|
-
select: state.current.status,
|
|
192
|
-
"onUpdate:select": _cache[2] || (_cache[2] = ($event) => state.current.status = $event),
|
|
193
|
-
label: "Status",
|
|
194
|
-
options: [
|
|
195
|
-
"draft",
|
|
196
|
-
"published",
|
|
197
|
-
"featured",
|
|
198
|
-
"archived",
|
|
199
|
-
"removed"
|
|
200
|
-
],
|
|
201
|
-
placeholder: "Display product",
|
|
202
|
-
class: "pos-relative w-100 bg-white radius-small pd-medium"
|
|
203
|
-
}, null, 8, ["select"]),
|
|
204
|
-
createVNode(Select, {
|
|
205
|
-
select: state.current.listing,
|
|
206
|
-
"onUpdate:select": _cache[3] || (_cache[3] = ($event) => state.current.listing = $event),
|
|
207
|
-
label: "Type",
|
|
208
|
-
options: [
|
|
209
|
-
"sale",
|
|
210
|
-
"rent"
|
|
211
|
-
],
|
|
212
|
-
placeholder: "Type of listing",
|
|
213
|
-
class: "pos-relative w-100 bg-white radius-small pd-medium"
|
|
214
|
-
}, null, 8, ["select"])
|
|
215
|
-
]),
|
|
216
|
-
createVNode(Field, {
|
|
217
|
-
field: state.current.name,
|
|
218
|
-
"onUpdate:field": _cache[4] || (_cache[4] = ($event) => state.current.name = $event),
|
|
219
|
-
placeholder: "Enter product name",
|
|
220
|
-
class: "w-100 mn-b-thin bg-white radius-small pd-medium"
|
|
221
|
-
}, null, 8, ["field"]),
|
|
222
|
-
createVNode(Field, {
|
|
223
|
-
field: state.current.description,
|
|
224
|
-
"onUpdate:field": _cache[5] || (_cache[5] = ($event) => state.current.description = $event),
|
|
225
|
-
placeholder: "Enter product description",
|
|
226
|
-
class: "w-100 bg-white radius-small pd-medium",
|
|
227
|
-
type: "textarea"
|
|
228
|
-
}, null, 8, ["field"])
|
|
229
|
-
]),
|
|
230
|
-
_: 1
|
|
231
|
-
}),
|
|
232
189
|
createVNode(_sfc_main$1, { title: "Categories" }, {
|
|
233
190
|
default: withCtx(() => [
|
|
234
191
|
createVNode(BlockMultiselect, {
|
|
235
192
|
modelValue: state.current.category,
|
|
236
|
-
"onUpdate:modelValue": _cache[
|
|
193
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => state.current.category = $event),
|
|
237
194
|
placeholder: "Search categories...",
|
|
238
195
|
multiple: true,
|
|
239
196
|
transform: (item) => ({ _id: item._id, name: item.name }),
|
|
@@ -249,45 +206,48 @@ const _sfc_main = {
|
|
|
249
206
|
skeleton: {
|
|
250
207
|
hide: false,
|
|
251
208
|
horizontal: true,
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
209
|
+
class: "radius-small",
|
|
210
|
+
structure: [{
|
|
211
|
+
block: "text",
|
|
212
|
+
size: "large"
|
|
213
|
+
}]
|
|
255
214
|
},
|
|
256
215
|
states: {
|
|
257
216
|
empty: {
|
|
258
217
|
title: "No categories found",
|
|
259
|
-
description: "Try different search terms or create a new category"
|
|
218
|
+
description: "Try different search terms or create a new category",
|
|
219
|
+
class: "radius-small"
|
|
260
220
|
}
|
|
261
221
|
},
|
|
262
222
|
key: "_id",
|
|
263
223
|
label: (item) => item.name,
|
|
264
224
|
classSearch: "bg-white radius-small",
|
|
265
|
-
classSelected: "bg-white pd-small radius-small
|
|
266
|
-
classDropdown: "bg-white pd-small radius-medium bs-
|
|
267
|
-
classItem: "pd-small radius-small hover-bg-light cursor-pointer
|
|
268
|
-
classFeed: "h-max-30r o-scroll"
|
|
225
|
+
classSelected: "bg-white pd-small radius-small",
|
|
226
|
+
classDropdown: "bg-white pd-small radius-medium bs-small",
|
|
227
|
+
classItem: "pd-small radius-small hover-bg-light cursor-pointer",
|
|
228
|
+
classFeed: "h-max-30r gap-thin flex-column flex o-scroll"
|
|
269
229
|
}, {
|
|
270
230
|
selected: withCtx(({ item, clear }) => [
|
|
271
|
-
createElementVNode("div",
|
|
272
|
-
createElementVNode("span",
|
|
231
|
+
createElementVNode("div", _hoisted_4, [
|
|
232
|
+
createElementVNode("span", _hoisted_5, toDisplayString((item == null ? void 0 : item.name) || item), 1),
|
|
273
233
|
createElementVNode("button", {
|
|
274
234
|
onClick: withModifiers(clear, ["stop"]),
|
|
275
235
|
class: "i-small pd-micro bg-red radius-extra flex-center flex aspect-1x1 hover-scale-1"
|
|
276
236
|
}, [
|
|
277
237
|
createVNode(_sfc_main$5, { class: "i-micro fill-white" })
|
|
278
|
-
], 8,
|
|
238
|
+
], 8, _hoisted_6)
|
|
279
239
|
])
|
|
280
240
|
]),
|
|
281
241
|
item: withCtx(({ item }) => [
|
|
282
|
-
createElementVNode("div",
|
|
242
|
+
createElementVNode("div", _hoisted_7, [
|
|
283
243
|
item.photo ? (openBlock(), createElementBlock("img", {
|
|
284
244
|
key: 0,
|
|
285
245
|
src: (_ctx.FILE_SERVER_URL || "") + item.photo,
|
|
286
246
|
class: "i-medium radius-small object-fit-cover mn-r-thin"
|
|
287
|
-
}, null, 8,
|
|
288
|
-
createElementVNode("div",
|
|
289
|
-
createElementVNode("p",
|
|
290
|
-
item.description ? (openBlock(), createElementBlock("p",
|
|
247
|
+
}, null, 8, _hoisted_8)) : createCommentVNode("", true),
|
|
248
|
+
createElementVNode("div", _hoisted_9, [
|
|
249
|
+
createElementVNode("p", _hoisted_10, toDisplayString(item.name), 1),
|
|
250
|
+
item.description ? (openBlock(), createElementBlock("p", _hoisted_11, toDisplayString(item.description), 1)) : createCommentVNode("", true)
|
|
291
251
|
])
|
|
292
252
|
])
|
|
293
253
|
]),
|
|
@@ -296,23 +256,83 @@ const _sfc_main = {
|
|
|
296
256
|
]),
|
|
297
257
|
_: 1
|
|
298
258
|
}),
|
|
259
|
+
createVNode(_sfc_main$1, { title: "Profile" }, {
|
|
260
|
+
default: withCtx(() => [
|
|
261
|
+
createElementVNode("div", _hoisted_12, [
|
|
262
|
+
createVNode(Select, {
|
|
263
|
+
select: state.current.status,
|
|
264
|
+
"onUpdate:select": _cache[3] || (_cache[3] = ($event) => state.current.status = $event),
|
|
265
|
+
label: "Status",
|
|
266
|
+
options: [
|
|
267
|
+
"draft",
|
|
268
|
+
"published",
|
|
269
|
+
"featured",
|
|
270
|
+
"archived",
|
|
271
|
+
"removed"
|
|
272
|
+
],
|
|
273
|
+
placeholder: "Display product",
|
|
274
|
+
class: "pos-relative w-100 bg-white radius-small pd-medium"
|
|
275
|
+
}, null, 8, ["select"]),
|
|
276
|
+
createVNode(Select, {
|
|
277
|
+
select: state.current.listing,
|
|
278
|
+
"onUpdate:select": _cache[4] || (_cache[4] = ($event) => state.current.listing = $event),
|
|
279
|
+
label: "Type",
|
|
280
|
+
options: [
|
|
281
|
+
"sale",
|
|
282
|
+
"rent"
|
|
283
|
+
],
|
|
284
|
+
placeholder: "Type of listing",
|
|
285
|
+
class: "pos-relative w-100 bg-white radius-small pd-medium"
|
|
286
|
+
}, null, 8, ["select"])
|
|
287
|
+
]),
|
|
288
|
+
createVNode(Field, {
|
|
289
|
+
field: state.current.name,
|
|
290
|
+
"onUpdate:field": _cache[5] || (_cache[5] = ($event) => state.current.name = $event),
|
|
291
|
+
placeholder: "Enter product name",
|
|
292
|
+
class: "w-100 mn-b-thin bg-white radius-small pd-medium"
|
|
293
|
+
}, null, 8, ["field"]),
|
|
294
|
+
createVNode(Field, {
|
|
295
|
+
field: state.current.description,
|
|
296
|
+
"onUpdate:field": _cache[6] || (_cache[6] = ($event) => state.current.description = $event),
|
|
297
|
+
placeholder: "Enter product description",
|
|
298
|
+
class: "w-100 bg-white radius-small mn-b-thin pd-medium",
|
|
299
|
+
style: { "resize": "vertical" },
|
|
300
|
+
type: "textarea"
|
|
301
|
+
}, null, 8, ["field"]),
|
|
302
|
+
createVNode(Field, {
|
|
303
|
+
field: state.current.included,
|
|
304
|
+
"onUpdate:field": _cache[7] || (_cache[7] = ($event) => state.current.included = $event),
|
|
305
|
+
placeholder: "Enter what's inside",
|
|
306
|
+
class: "w-100 bg-white radius-small pd-medium",
|
|
307
|
+
style: { "resize": "vertical" },
|
|
308
|
+
type: "textarea"
|
|
309
|
+
}, null, 8, ["field"])
|
|
310
|
+
]),
|
|
311
|
+
_: 1
|
|
312
|
+
}),
|
|
299
313
|
createVNode(_sfc_main$6, {
|
|
300
314
|
attributes: state.current.attributes,
|
|
301
|
-
"onUpdate:attributes": _cache[
|
|
315
|
+
"onUpdate:attributes": _cache[8] || (_cache[8] = ($event) => state.current.attributes = $event)
|
|
302
316
|
}, null, 8, ["attributes"])
|
|
303
317
|
])) : createCommentVNode("", true),
|
|
304
318
|
unref(activeTab) === "variants" ? (openBlock(), createBlock(_sfc_main$7, {
|
|
305
319
|
key: 3,
|
|
306
320
|
variants: state.current.variants,
|
|
307
|
-
"onUpdate:variants": _cache[
|
|
321
|
+
"onUpdate:variants": _cache[9] || (_cache[9] = ($event) => state.current.variants = $event)
|
|
308
322
|
}, null, 8, ["variants"])) : createCommentVNode("", true),
|
|
309
323
|
unref(activeTab) === "discounts" ? (openBlock(), createBlock(_sfc_main$8, {
|
|
310
324
|
key: 4,
|
|
311
325
|
discounts: state.current.discounts,
|
|
312
|
-
"onUpdate:discounts": _cache[
|
|
326
|
+
"onUpdate:discounts": _cache[10] || (_cache[10] = ($event) => state.current.discounts = $event)
|
|
313
327
|
}, null, 8, ["discounts"])) : createCommentVNode("", true),
|
|
314
|
-
unref(activeTab) === "
|
|
328
|
+
unref(activeTab) === "recommended" ? (openBlock(), createBlock(_sfc_main$9, {
|
|
315
329
|
key: 5,
|
|
330
|
+
recommended: state.current.recommended,
|
|
331
|
+
"onUpdate:recommended": _cache[11] || (_cache[11] = ($event) => state.current.recommended = $event),
|
|
332
|
+
class: "cols-1 gap-thin"
|
|
333
|
+
}, null, 8, ["recommended"])) : createCommentVNode("", true),
|
|
334
|
+
unref(activeTab) === "localization" ? (openBlock(), createBlock(_sfc_main$1, {
|
|
335
|
+
key: 6,
|
|
316
336
|
title: "Localization",
|
|
317
337
|
placeholder: "No localizations added yet",
|
|
318
338
|
actions: [{
|
|
@@ -345,7 +365,7 @@ const _sfc_main = {
|
|
|
345
365
|
class: "w-100 bg-white radius-small pd-medium"
|
|
346
366
|
}, null, 8, ["field", "onUpdate:field"]),
|
|
347
367
|
createElementVNode("div", _hoisted_13, [
|
|
348
|
-
createVNode(_sfc_main$
|
|
368
|
+
createVNode(_sfc_main$a, {
|
|
349
369
|
onClick: () => state.current.translations.splice(index, 1),
|
|
350
370
|
class: "i-medium"
|
|
351
371
|
}, null, 8, ["onClick"])
|
|
@@ -362,7 +382,7 @@ const _sfc_main = {
|
|
|
362
382
|
callback: redirectTo,
|
|
363
383
|
class: "bg-red t-white w-100"
|
|
364
384
|
}, {
|
|
365
|
-
default: withCtx(() => _cache[
|
|
385
|
+
default: withCtx(() => _cache[14] || (_cache[14] = [
|
|
366
386
|
createTextVNode(" Delete ")
|
|
367
387
|
])),
|
|
368
388
|
_: 1
|
|
@@ -372,7 +392,7 @@ const _sfc_main = {
|
|
|
372
392
|
callback: redirectTo,
|
|
373
393
|
class: "w-100 bg-main"
|
|
374
394
|
}, {
|
|
375
|
-
default: withCtx(() => _cache[
|
|
395
|
+
default: withCtx(() => _cache[15] || (_cache[15] = [
|
|
376
396
|
createTextVNode(" Save ")
|
|
377
397
|
])),
|
|
378
398
|
_: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductEdit.vue.js","sources":["../../../../../../../src/modules/products/components/pages/ProductEdit.vue"],"sourcesContent":["<template>\n <div v-if=\"isPageLoaded\" class=\"w-100 bg-white pd-thin gap-thin\">\n \n <Block v-if=\"!MOBILE_APP\" class=\"flex-nowrap gap-thin flex-v-center flex\">\n <h2 class=\"t-truncate mn-r-auto\">\n {{ route.params.product ? products.state.current.name : 'Create Product' }}\n </h2>\n\n <Button \n v-if=\"route.params.product\"\n :submit=\"onDelete\" \n :callback=\"redirectTo\"\n class=\"w-10 w-max-20r w-min-8r bg-red\"\n >\n Delete \n </Button>\n\n <Button \n :submit=\"onSubmit\" \n :callback=\"redirectTo\"\n class=\"w-10 w-max-20r w-min-8r bg-main\"\n >\n Save\n </Button>\n </Block>\n\n <!-- Tab Navigation -->\n <Tab\n v-model:selected=\"activeTab\"\n v-if=\"route.params.product\"\n :tabs=\"[\n { label: 'Details', value: 'details' },\n { label: 'Variants', value: 'variants' },\n { label: 'Discounts', value: 'discounts' },\n { label: 'Localization', value: 'localization' }\n ]\"\n class=\"flex-child-default bg-light radius-medium h-max pd-thin o-x-scroll\"\n />\n\n <!-- Tab Content -->\n <div v-if=\"activeTab === 'details'\" class=\"cols-1 gap-thin\">\n <!-- Product Images -->\n <Block\n placeholder=\"The product doesn't have any images yet.\"\n class=\"h-min\"\n >\n <EditImages \n :images=\"products.state.current.images\"\n :uploadPath=\"'photos'\" \n @update:images=\"(imagesNew) => { products.state.current.images = imagesNew }\" \n />\n </Block>\n\n <!-- Product Profile -->\n <Block title=\"Profile\">\n <div class=\"mn-b-thin flex-nowrap flex gap-thin\">\n <Select \n v-model:select=\"products.state.current.status\"\n label=\"Status\"\n :options=\"[\n 'draft', \n 'published',\n 'featured',\n 'archived',\n 'removed'\n ]\"\n placeholder=\"Display product\"\n class=\"pos-relative w-100 bg-white radius-small pd-medium\"\n />\n <Select \n v-model:select=\"products.state.current.listing\"\n label=\"Type\"\n :options=\"[\n 'sale', \n 'rent',\n ]\"\n placeholder=\"Type of listing\"\n class=\"pos-relative w-100 bg-white radius-small pd-medium\"\n />\n </div>\n\n <Field \n v-model:field=\"products.state.current.name\" \n placeholder=\"Enter product name\"\n class=\"w-100 mn-b-thin bg-white radius-small pd-medium\"\n />\n <Field\n v-model:field=\"products.state.current.description\" \n placeholder=\"Enter product description\" \n class=\"w-100 bg-white radius-small pd-medium\"\n type=\"textarea\"\n />\n </Block>\n <!-- Categories -->\n <Block title=\"Categories\">\n <BlockMultiselect\n v-model=\"products.state.current.category\"\n placeholder=\"Search categories...\"\n :multiple=\"true\"\n :transform=\"(item) => ({ _id: item._id, name: item.name })\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n rootOnly: false,\n excludeChildren: false,\n limit: 50\n }\"\n :skeleton=\"{\n\t\t\t\t hide: false,\n\t\t\t\t horizontal: true,\n\t\t\t\t structure: [\n\t\t\t\t { block: 'text', size: 'large' }\n\t\t\t\t ]\n\t\t\t\t }\"\n :states=\"{\n empty: {\n title: 'No categories found',\n description: 'Try different search terms or create a new category'\n }\n }\"\n key=\"_id\"\n :label=\"item => item.name\"\n classSearch=\"bg-white radius-small\"\n classSelected=\"bg-white pd-small radius-small mn-b-thin\"\n classDropdown=\"bg-white pd-small radius-medium bs-light\"\n classItem=\"pd-small radius-small hover-bg-light cursor-pointer mn-b-thin\"\n \tclassFeed=\"h-max-30r o-scroll\"\n >\n <!-- Слот для выбранных категорий -->\n <template #selected=\"{ item, clear }\">\n\t\t\t\t\t <div class=\"flex-nowrap flex-v-center flex gap-thin\">\n\t\t\t\t\t <span class=\"t-medium\">{{ item?.name || item }}</span>\n\t\t\t\t\t <button \n\t\t\t\t\t @click.stop=\"clear\"\n\t\t\t\t\t class=\"i-small pd-micro bg-red radius-extra flex-center flex aspect-1x1 hover-scale-1\"\n\t\t\t\t\t >\n\t\t\t\t\t <IconCross class=\"i-micro fill-white\" />\n\t\t\t\t\t </button>\n\t\t\t\t\t </div>\n\t\t\t\t\t</template>\n \n <!-- Слот для элементов в списке -->\n <template #item=\"{ item }\">\n <div class=\"flex-nowrap flex-v-center flex\">\n <img \n v-if=\"item.photo\" \n :src=\"(FILE_SERVER_URL || '') + item.photo\"\n class=\"i-medium radius-small object-fit-cover mn-r-thin\"\n />\n <div class=\"w-100\">\n <p class=\"t-medium\">{{ item.name }}</p>\n <p v-if=\"item.description\" class=\"t-small t-transp\">{{ item.description }}</p>\n </div>\n </div>\n </template>\n </BlockMultiselect>\n </Block>\n\n\n <!-- Attributes -->\n <EditAttributes \n v-model:attributes=\"products.state.current.attributes\" \n />\n </div>\n\n <!-- Variants Tab -->\n <EditVariants\n\t\t\tv-if=\"activeTab === 'variants'\"\n v-model:variants=\"products.state.current.variants\" \n />\n\n <!-- Discounts Tab -->\n <EditDiscounts\n\t\t\tv-if=\"activeTab === 'discounts'\"\n v-model:discounts=\"products.state.current.discounts\"\n />\n\n <!-- Localization Tab -->\n <Block\n\t\t v-if=\"activeTab === 'localization'\"\n title=\"Localization\"\n placeholder=\"No localizations added yet\"\n :actions=\"[{\n label: '+',\n function: () => products.state.current.translations.push({locale: '', name: '', description: ''})\n }]\"\n >\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in products.state.current.translations\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.locale\"\n placeholder=\"Locale (en, ru, etc.)\"\n class=\"w-30 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Product name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <Field\n v-model:field=\"item.description\"\n placeholder=\"Product description\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red cursor-pointer hover-scale-1\">\n <IconDelete \n @click=\"() => products.state.current.translations.splice(index, 1)\" \n class=\"i-medium\"\n />\n </div>\n </div>\n </Block>\n\n <!-- Bottom Action Buttons -->\n <div class=\"flex-nowrap flex gap-thin\">\n <Button \n v-if=\"route.params.product\"\n :submit=\"onDelete\" \n :callback=\"redirectTo\"\n class=\"bg-red t-white w-100\"\n >\n Delete \n </Button>\n\n <Button \n :submit=\"onSubmit\" \n :callback=\"redirectTo\"\n class=\"w-100 bg-main\"\n >\n Save\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\n// Import libs\nimport { reactive, computed, onMounted, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import components\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Tab from \"@martyrs/src/components/Tab/Tab.vue\";\nimport Field from \"@martyrs/src/components/Field/Field.vue\";\nimport Select from '@martyrs/src/components/Select/Select.vue';\nimport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\";\nimport Button from \"@martyrs/src/components/Button/Button.vue\";\nimport Tree from \"@martyrs/src/components/Tree/Tree.vue\";\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\n\nimport BlockMultiselect from '@martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue';\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport EditVariants from '@martyrs/src/modules/products/components/sections/EditVariants.vue';\nimport EditAttributes from '@martyrs/src/modules/products/components/sections/EditAttributes.vue';\nimport EditDiscounts from '@martyrs/src/modules/products/components/sections/EditDiscounts.vue';\nimport EditCategories from '@martyrs/src/modules/products/components/sections/EditCategories.vue';\n\n\n// Accessing router and store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\nimport * as categories from '@martyrs/src/modules/products/store/categories.js';\n\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals.js'\n\nconst route = useRoute()\nconst router = useRouter()\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\nlet isPageLoaded = ref(false)\nlet activeTab = ref('details')\n\nonMounted(async() => { \n emits('page-loading');\n\n products.mutations.resetProduct();\n\n if (route.params.product) {\n await products.actions.read({ _id: route.params.product, lookup: ['variants','categories'] });\n } else {\n // Создаем дефолтный вариант для нового товара\n if (!products.state.current.variants || products.state.current.variants.length === 0) {\n products.state.current.variants = [{\n name: 'Default',\n sku: '',\n images: [],\n price: 0,\n cost: 0,\n quantity: 1,\n unit: 'pcs',\n available: 0,\n ingredients: [],\n attributes: []\n }];\n }\n }\n\n // Убедимся, что массивы инициализированы\n if (!products.state.current.translations) {\n products.state.current.translations = []\n }\n if (!products.state.current.discounts) {\n products.state.current.discounts = []\n }\n\n try {\n // Data prefetching\n categories.state.all = await categories.actions.read({\n user: auth.state.user._id,\n rootOnly: true,\n excludeChildren: false,\n limit: 100\n })\n } catch (error) {\n console.error('error loading categories:', error);\n }\n\n emits('page-loaded');\n isPageLoaded.value = true\n})\n\nasync function onSubmit() {\n try {\n // Проверка на наличие хотя бы одного варианта\n if (!products.state.current.variants || products.state.current.variants.length === 0) {\n setError({ response: { data: { errorCode: \"PRODUCT_MUST_HAVE_VARIANT\" }} })\n return;\n }\n\n if (route.params.product) {\n await products.actions.update(route.params.product, products.state.current)\n } else {\n products.state.current.owner = {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n }\n \n products.state.current.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n await products.actions.create(products.state.current)\n }\n \n redirectTo()\n } catch (error) {\n setError({ response: { data: { errorCode: \"PRODUCT_NOT_CREATED\" }} })\n console.error('Product creation error:', error)\n }\n}\n\nfunction onDelete() {\n products.actions.deleteProduct(products.state.current._id)\n}\n\nfunction redirectTo() {\n router.push({\n name: route.params._id ? 'Organization' : 'Products', \n params: route.params._id ? { _id: route.params._id } : {}\n })\n}\n</script>"],"names":["products.mutations","products.actions","products.state","categories.state","categories.actions","auth.state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProductEdit.vue.js","sources":["../../../../../../../src/modules/products/components/pages/ProductEdit.vue"],"sourcesContent":["<template>\n <div v-if=\"isPageLoaded\" class=\"w-100 bg-white pd-thin gap-thin\">\n \n <Block v-if=\"!MOBILE_APP\" class=\"flex-nowrap gap-thin flex-v-center flex\">\n <h2 class=\"t-truncate mn-r-auto\">\n {{ route.params.product ? products.state.current.name : 'Create Product' }}\n </h2>\n\n <Button \n v-if=\"route.params.product\"\n :submit=\"onDelete\" \n :callback=\"redirectTo\"\n class=\"w-10 w-max-20r w-min-8r bg-red\"\n >\n Delete \n </Button>\n\n <Button \n :submit=\"onSubmit\" \n :callback=\"redirectTo\"\n class=\"w-10 w-max-20r w-min-8r bg-main\"\n >\n Save\n </Button>\n </Block>\n\n <!-- Tab Navigation -->\n <Tab\n v-model:selected=\"activeTab\"\n v-if=\"route.params.product\"\n :tabs=\"[\n { label: 'Details', value: 'details' },\n { label: 'Variants', value: 'variants' },\n { label: 'Discounts', value: 'discounts' },\n { label: 'Recommended', value: 'recommended' },\n { label: 'Localization', value: 'localization' }\n ]\"\n class=\"flex-child-default bg-light radius-medium h-max pd-thin o-x-scroll\"\n />\n\n <!-- Tab Content -->\n <div v-if=\"activeTab === 'details'\" class=\"cols-1 gap-thin\">\n <!-- Product Images -->\n <Block\n placeholder=\"The product doesn't have any images yet.\"\n class=\"h-min\"\n >\n <EditImages \n :images=\"products.state.current.images\"\n :uploadPath=\"'photos'\" \n @update:images=\"(imagesNew) => { products.state.current.images = imagesNew }\" \n />\n </Block>\n\n <Block title=\"Categories\">\n <BlockMultiselect\n v-model=\"products.state.current.category\"\n placeholder=\"Search categories...\"\n :multiple=\"true\"\n :transform=\"(item) => ({ _id: item._id, name: item.name })\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n rootOnly: false,\n excludeChildren: false,\n limit: 50\n }\"\n :skeleton=\"{\n hide: false,\n horizontal: true,\n class: 'radius-small',\n structure: [{ \n block: 'text', size: 'large'\n }]\n }\"\n :states=\"{\n empty: {\n title: 'No categories found',\n description: 'Try different search terms or create a new category',\n class: 'radius-small'\n }\n }\"\n key=\"_id\"\n :label=\"item => item.name\"\n classSearch=\"bg-white radius-small\"\n classSelected=\"bg-white pd-small radius-small\"\n classDropdown=\"bg-white pd-small radius-medium bs-small\"\n classItem=\"pd-small radius-small hover-bg-light cursor-pointer\"\n classFeed=\"h-max-30r gap-thin flex-column flex o-scroll\"\n >\n <!-- Слот для выбранных категорий -->\n <template #selected=\"{ item, clear }\">\n <div class=\"flex-nowrap flex-v-center flex gap-thin\">\n <span class=\"t-medium\">{{ item?.name || item }}</span>\n <button \n @click.stop=\"clear\"\n class=\"i-small pd-micro bg-red radius-extra flex-center flex aspect-1x1 hover-scale-1\"\n >\n <IconCross class=\"i-micro fill-white\" />\n </button>\n </div>\n </template>\n \n <!-- Слот для элементов в списке -->\n <template #item=\"{ item }\">\n <div class=\"flex-nowrap flex-v-center flex\">\n <img \n v-if=\"item.photo\" \n :src=\"(FILE_SERVER_URL || '') + item.photo\"\n class=\"i-medium radius-small object-fit-cover mn-r-thin\"\n />\n <div class=\"w-100\">\n <p class=\"t-medium\">{{ item.name }}</p>\n <p v-if=\"item.description\" class=\"t-small t-transp\">{{ item.description }}</p>\n </div>\n </div>\n </template>\n </BlockMultiselect>\n </Block>\n\n <!-- Product Profile -->\n <Block title=\"Profile\">\n <div class=\"mn-b-thin flex-nowrap flex gap-thin\">\n <Select \n v-model:select=\"products.state.current.status\"\n label=\"Status\"\n :options=\"[\n 'draft', \n 'published',\n 'featured',\n 'archived',\n 'removed'\n ]\"\n placeholder=\"Display product\"\n class=\"pos-relative w-100 bg-white radius-small pd-medium\"\n />\n <Select \n v-model:select=\"products.state.current.listing\"\n label=\"Type\"\n :options=\"[\n 'sale', \n 'rent',\n ]\"\n placeholder=\"Type of listing\"\n class=\"pos-relative w-100 bg-white radius-small pd-medium\"\n />\n </div>\n\n <Field \n v-model:field=\"products.state.current.name\" \n placeholder=\"Enter product name\"\n class=\"w-100 mn-b-thin bg-white radius-small pd-medium\"\n />\n <Field\n v-model:field=\"products.state.current.description\" \n placeholder=\"Enter product description\" \n class=\"w-100 bg-white radius-small mn-b-thin pd-medium\"\n style=\"resize: vertical\"\n type=\"textarea\"\n />\n <Field\n v-model:field=\"products.state.current.included\" \n placeholder=\"Enter what's inside\" \n class=\"w-100 bg-white radius-small pd-medium\"\n style=\"resize: vertical\"\n type=\"textarea\"\n />\n </Block>\n <!-- Categories -->\n \n\n\n <!-- Attributes -->\n <EditAttributes \n v-model:attributes=\"products.state.current.attributes\" \n />\n </div>\n\n <!-- Variants Tab -->\n <EditVariants\n\t\t\tv-if=\"activeTab === 'variants'\"\n v-model:variants=\"products.state.current.variants\" \n />\n\n <!-- Discounts Tab -->\n <EditDiscounts\n\t\t\tv-if=\"activeTab === 'discounts'\"\n v-model:discounts=\"products.state.current.discounts\"\n />\n <EditRecommended \n v-if=\"activeTab === 'recommended'\" \n v-model:recommended=\"products.state.current.recommended\"\n class=\"cols-1 gap-thin\"\n />\n\n <!-- Localization Tab -->\n <Block\n\t\t v-if=\"activeTab === 'localization'\"\n title=\"Localization\"\n placeholder=\"No localizations added yet\"\n :actions=\"[{\n label: '+',\n function: () => products.state.current.translations.push({locale: '', name: '', description: ''})\n }]\"\n >\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in products.state.current.translations\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.locale\"\n placeholder=\"Locale (en, ru, etc.)\"\n class=\"w-30 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Product name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <Field\n v-model:field=\"item.description\"\n placeholder=\"Product description\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red cursor-pointer hover-scale-1\">\n <IconDelete \n @click=\"() => products.state.current.translations.splice(index, 1)\" \n class=\"i-medium\"\n />\n </div>\n </div>\n </Block>\n\n <!-- Bottom Action Buttons -->\n <div class=\"flex-nowrap flex gap-thin\">\n <Button \n v-if=\"route.params.product\"\n :submit=\"onDelete\" \n :callback=\"redirectTo\"\n class=\"bg-red t-white w-100\"\n >\n Delete \n </Button>\n\n <Button \n :submit=\"onSubmit\" \n :callback=\"redirectTo\"\n class=\"w-100 bg-main\"\n >\n Save\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\n// Import libs\nimport { reactive, computed, onMounted, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import components\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Tab from \"@martyrs/src/components/Tab/Tab.vue\";\nimport Field from \"@martyrs/src/components/Field/Field.vue\";\nimport Select from '@martyrs/src/components/Select/Select.vue';\nimport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\";\nimport Button from \"@martyrs/src/components/Button/Button.vue\";\nimport Tree from \"@martyrs/src/components/Tree/Tree.vue\";\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\n\nimport BlockMultiselect from '@martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue';\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport EditVariants from '@martyrs/src/modules/products/components/sections/EditVariants.vue';\nimport EditAttributes from '@martyrs/src/modules/products/components/sections/EditAttributes.vue';\nimport EditDiscounts from '@martyrs/src/modules/products/components/sections/EditDiscounts.vue';\nimport EditCategories from '@martyrs/src/modules/products/components/sections/EditCategories.vue';\nimport EditRecommended from '@martyrs/src/modules/products/components/sections/EditRecommended.vue';\n\n// Accessing router and store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\nimport * as categories from '@martyrs/src/modules/products/store/categories.js';\n\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals.js'\n\nconst route = useRoute()\nconst router = useRouter()\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\nlet isPageLoaded = ref(false)\nlet activeTab = ref('details')\n\nonMounted(async() => { \n emits('page-loading');\n\n products.mutations.resetProduct();\n\n if (route.params.product) {\n await products.actions.read({ _id: route.params.product, lookup: ['variants','categories','recommended'] });\n } else {\n // Создаем дефолтный вариант для нового товара\n if (!products.state.current.variants || products.state.current.variants.length === 0) {\n products.state.current.variants = [{\n name: 'Default',\n sku: '',\n images: [],\n price: 0,\n cost: 0,\n quantity: 1,\n unit: 'pcs',\n available: 0,\n ingredients: [],\n attributes: []\n }];\n }\n }\n\n // Убедимся, что массивы инициализированы\n if (!products.state.current.translations) {\n products.state.current.translations = []\n }\n // Убедимся, что массивы инициализированы\n if (!products.state.current.recommended) {\n products.state.current.recommended = []\n }\n if (!products.state.current.discounts) {\n products.state.current.discounts = []\n }\n\n try {\n // Data prefetching\n categories.state.all = await categories.actions.read({\n user: auth.state.user._id,\n rootOnly: true,\n excludeChildren: false,\n limit: 100\n })\n } catch (error) {\n console.error('error loading categories:', error);\n }\n\n emits('page-loaded');\n isPageLoaded.value = true\n})\n\nasync function onSubmit() {\n try {\n // // Проверка на наличие хотя бы одного варианта\n // if (!products.state.current.variants || products.state.current.variants.length === 0) {\n // setError({ response: { data: { errorCode: \"PRODUCT_MUST_HAVE_VARIANT\" }} })\n // return;\n // }\n console.log('product is',products.state.current)\n if (route.params.product) {\n await products.actions.update(route.params.product, products.state.current)\n } else {\n products.state.current.owner = {\n target: route.params._id || auth.state.user._id,\n type: route.params._id ? 'organization' : 'user'\n }\n \n products.state.current.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n await products.actions.create(products.state.current)\n }\n \n redirectTo()\n } catch (error) {\n setError({ response: { data: { errorCode: \"PRODUCT_NOT_CREATED\" }} })\n console.error('Product creation error:', error)\n }\n}\n\nfunction onDelete() {\n products.actions.deleteProduct(products.state.current._id)\n}\n\nfunction redirectTo() {\n router.push({\n name: route.params._id ? 'Organization' : 'Products', \n params: route.params._id ? { _id: route.params._id } : {}\n })\n}\n</script>"],"names":["products.mutations","products.actions","products.state","categories.state","categories.actions","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmSA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ;AAEd,QAAI,eAAe,IAAI,KAAK;AAC5B,QAAI,YAAY,IAAI,SAAS;AAE7B,cAAU,YAAW;AACnB,YAAM,cAAc;AAEpBA,gBAAmB,aAAc;AAEjC,UAAI,MAAM,OAAO,SAAS;AACxB,cAAMC,QAAiB,KAAK,EAAE,KAAK,MAAM,OAAO,SAAS,QAAQ,CAAC,YAAW,cAAa,aAAa,EAAC,CAAE;AAAA,MAC9G,OAAS;AAEL,YAAI,CAACC,MAAe,QAAQ,YAAYA,MAAe,QAAQ,SAAS,WAAW,GAAG;AACpFA,gBAAe,QAAQ,WAAW,CAAC;AAAA,YACjC,MAAM;AAAA,YACN,KAAK;AAAA,YACL,QAAQ,CAAE;AAAA,YACV,OAAO;AAAA,YACP,MAAM;AAAA,YACN,UAAU;AAAA,YACV,MAAM;AAAA,YACN,WAAW;AAAA,YACX,aAAa,CAAE;AAAA,YACf,YAAY,CAAA;AAAA,UACpB,CAAO;AAAA,QACP;AAAA,MACA;AAGE,UAAI,CAACA,MAAe,QAAQ,cAAc;AACxCA,cAAe,QAAQ,eAAe,CAAA;AAAA,MAC1C;AAEE,UAAI,CAACA,MAAe,QAAQ,aAAa;AACvCA,cAAe,QAAQ,cAAc,CAAA;AAAA,MACzC;AACE,UAAI,CAACA,MAAe,QAAQ,WAAW;AACrCA,cAAe,QAAQ,YAAY,CAAA;AAAA,MACvC;AAEE,UAAI;AAEFC,gBAAiB,MAAM,MAAMC,UAAmB,KAAK;AAAA,UACnD,MAAMC,QAAW,KAAK;AAAA,UACtB,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,OAAO;AAAA,QACR,CAAA;AAAA,MACF,SAAQ,OAAO;AACd,gBAAQ,MAAM,6BAA6B,KAAK;AAAA,MACpD;AAEE,YAAM,aAAa;AACnB,mBAAa,QAAQ;AAAA,IACvB,CAAC;AAED,mBAAe,WAAW;AACxB,UAAI;AAMA,gBAAQ,IAAI,cAAaH,MAAe,OAAO;AACjD,YAAI,MAAM,OAAO,SAAS;AACxB,gBAAMD,QAAiB,OAAO,MAAM,OAAO,SAASC,MAAe,OAAO;AAAA,QAChF,OAAW;AACLA,gBAAe,QAAQ,QAAQ;AAAA,YAC7B,QAAQ,MAAM,OAAO,OAAOG,QAAW,KAAK;AAAA,YAC5C,MAAM,MAAM,OAAO,MAAM,iBAAiB;AAAA,UAClD;AAEMH,gBAAe,QAAQ,UAAU;AAAA,YAC/B,QAAQG,QAAW,KAAK;AAAA,YACxB,MAAM;AAAA,YACN,QAAQ;AAAA,UAChB;AAEM,gBAAMJ,QAAiB,OAAOC,MAAe,OAAO;AAAA,QAC1D;AAEI,mBAAU;AAAA,MACX,SAAQ,OAAO;AACd,iBAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,sBAAqB,EAAE,EAAG,CAAA;AACpE,gBAAQ,MAAM,2BAA2B,KAAK;AAAA,MAClD;AAAA,IACA;AAEA,aAAS,WAAW;AAClBD,cAAiB,cAAcC,MAAe,QAAQ,GAAG;AAAA,IAC3D;AAEA,aAAS,aAAa;AACpB,aAAO,KAAK;AAAA,QACV,MAAM,MAAM,OAAO,MAAM,iBAAiB;AAAA,QAC1C,QAAQ,MAAM,OAAO,MAAM,EAAE,KAAK,MAAM,OAAO,QAAQ,CAAA;AAAA,MACxD,CAAA;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
5
5
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
6
6
|
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
7
|
-
const Popup = require("../../../../components/Popup/Popup.
|
|
7
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
8
8
|
const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
|
|
9
9
|
const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
|
|
10
10
|
const _hoisted_1 = {
|
|
@@ -2,7 +2,7 @@ import { useModel, ref, reactive, createElementBlock, openBlock, Fragment, creat
|
|
|
2
2
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$5 from "../../../../components/Button/Button.vue2.js";
|
|
5
|
-
import _sfc_main$4 from "../../../../components/Popup/Popup.
|
|
5
|
+
import _sfc_main$4 from "../../../../components/Popup/Popup.vue2.js";
|
|
6
6
|
import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
|
|
7
7
|
import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
|
|
8
8
|
const _hoisted_1 = {
|
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
5
5
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
6
6
|
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
7
|
-
const Popup = require("../../../../components/Popup/Popup.
|
|
7
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
8
8
|
const Select = require("../../../../components/Select/Select.vue.cjs");
|
|
9
9
|
const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
|
|
10
10
|
const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
|
|
@@ -2,7 +2,7 @@ import { useModel, ref, reactive, createElementBlock, openBlock, Fragment, creat
|
|
|
2
2
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$5 from "../../../../components/Button/Button.vue2.js";
|
|
5
|
-
import _sfc_main$4 from "../../../../components/Popup/Popup.
|
|
5
|
+
import _sfc_main$4 from "../../../../components/Popup/Popup.vue2.js";
|
|
6
6
|
import Select from "../../../../components/Select/Select.vue.js";
|
|
7
7
|
import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
|
|
8
8
|
import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
6
|
-
const Popup = require("../../../../components/Popup/Popup.
|
|
6
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
7
7
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
8
8
|
const globals = require("../../../globals/views/store/globals.cjs");
|
|
9
9
|
require("../../../auth/views/store/auth.cjs");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useModel, ref, onMounted, createElementBlock, openBlock, Fragment, createVNode, withCtx, createCommentVNode, renderList, createBlock, createElementVNode, unref } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
3
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
4
|
-
import _sfc_main$3 from "../../../../components/Popup/Popup.
|
|
4
|
+
import _sfc_main$3 from "../../../../components/Popup/Popup.vue2.js";
|
|
5
5
|
import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
|
|
6
6
|
import { actions as actions$1 } from "../../../globals/views/store/globals.js";
|
|
7
7
|
import "../../../auth/views/store/auth.js";
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const vueRouter = require("vue-router");
|
|
5
|
+
const mixins = require("../../../globals/views/mixins/mixins.cjs");
|
|
6
|
+
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
7
|
+
const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
|
|
8
|
+
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
9
|
+
const globals = require("../../../globals/views/store/globals.cjs");
|
|
10
|
+
require("../../../auth/views/store/auth.cjs");
|
|
11
|
+
const products = require("../../store/products.cjs");
|
|
12
|
+
const CardPosition = require("../blocks/CardPosition.vue.cjs");
|
|
13
|
+
const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
|
|
14
|
+
const _hoisted_1 = {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "rows-1 gap-thin"
|
|
17
|
+
};
|
|
18
|
+
const _hoisted_2 = { class: "bg-light mn-b-thin h-min-20r h-max-20r o-scroll pd-medium radius-medium" };
|
|
19
|
+
const _sfc_main = {
|
|
20
|
+
__name: "EditRecommended",
|
|
21
|
+
props: {
|
|
22
|
+
"recommended": {},
|
|
23
|
+
"recommendedModifiers": {}
|
|
24
|
+
},
|
|
25
|
+
emits: ["update:recommended"],
|
|
26
|
+
setup(__props) {
|
|
27
|
+
const route = vueRouter.useRoute();
|
|
28
|
+
vueRouter.useRouter();
|
|
29
|
+
const { returnCurrency } = mixins.useGlobalMixins();
|
|
30
|
+
const recommended = vue.useModel(__props, "recommended");
|
|
31
|
+
const isRecommendedPopupOpen = vue.ref(false);
|
|
32
|
+
vue.onMounted(async () => {
|
|
33
|
+
if (!recommended.value || !Array.isArray(recommended.value)) {
|
|
34
|
+
recommended.value = [];
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
function openRecommendedPopup() {
|
|
38
|
+
isRecommendedPopupOpen.value = true;
|
|
39
|
+
}
|
|
40
|
+
function closeRecommendedPopup() {
|
|
41
|
+
isRecommendedPopupOpen.value = false;
|
|
42
|
+
}
|
|
43
|
+
return (_ctx, _cache) => {
|
|
44
|
+
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
|
|
45
|
+
vue.createVNode(Block.default, {
|
|
46
|
+
title: "Recommended Products",
|
|
47
|
+
placeholder: "No recommended products added yet. Add products that are frequently bought together.",
|
|
48
|
+
actions: [{
|
|
49
|
+
label: "+",
|
|
50
|
+
function: () => openRecommendedPopup()
|
|
51
|
+
}]
|
|
52
|
+
}, {
|
|
53
|
+
default: vue.withCtx(() => {
|
|
54
|
+
var _a;
|
|
55
|
+
return [
|
|
56
|
+
((_a = recommended.value) == null ? void 0 : _a.length) > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
57
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(recommended.value, (product, index) => {
|
|
58
|
+
var _a2;
|
|
59
|
+
return vue.openBlock(), vue.createBlock(CardPosition.default, {
|
|
60
|
+
key: product._id,
|
|
61
|
+
image: ((_a2 = product.images) == null ? void 0 : _a2[0]) ? (_ctx.FILE_SERVER_URL || "") + product.images[0] : "",
|
|
62
|
+
name: product.name,
|
|
63
|
+
title: product.name,
|
|
64
|
+
subtitle: `${vue.unref(returnCurrency)()}${product.price}`,
|
|
65
|
+
showThumbnail: true,
|
|
66
|
+
actions: [
|
|
67
|
+
{
|
|
68
|
+
icon: IconDelete.default,
|
|
69
|
+
class: "bg-red",
|
|
70
|
+
handler: () => {
|
|
71
|
+
globals.actions.delete(recommended.value, product, index);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
class: "bg-white pd-thin radius-medium w-100 mn-b-thin"
|
|
76
|
+
}, null, 8, ["image", "name", "title", "subtitle", "actions"]);
|
|
77
|
+
}), 128))
|
|
78
|
+
])) : vue.createCommentVNode("", true)
|
|
79
|
+
];
|
|
80
|
+
}),
|
|
81
|
+
_: 1
|
|
82
|
+
}, 8, ["actions"]),
|
|
83
|
+
vue.createVNode(Popup.default, {
|
|
84
|
+
title: "Add Recommended Product",
|
|
85
|
+
onClosePopup: closeRecommendedPopup,
|
|
86
|
+
isPopupOpen: isRecommendedPopupOpen.value,
|
|
87
|
+
class: "bg-white w-min-30r w-max-30r radius-medium pd-medium"
|
|
88
|
+
}, {
|
|
89
|
+
default: vue.withCtx(() => [
|
|
90
|
+
vue.createElementVNode("div", _hoisted_2, [
|
|
91
|
+
vue.createVNode(Feed.default, {
|
|
92
|
+
search: {
|
|
93
|
+
class: "bg-white mn-b-thin"
|
|
94
|
+
},
|
|
95
|
+
states: {
|
|
96
|
+
empty: {
|
|
97
|
+
title: "No Products Found",
|
|
98
|
+
description: "Currently, there are no such products available."
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
store: {
|
|
102
|
+
read: (options) => products.actions.read(options),
|
|
103
|
+
state: null
|
|
104
|
+
},
|
|
105
|
+
options: {
|
|
106
|
+
owner: vue.unref(route).params._id
|
|
107
|
+
},
|
|
108
|
+
class: ""
|
|
109
|
+
}, {
|
|
110
|
+
default: vue.withCtx(({ items }) => [
|
|
111
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(items, (product, index) => {
|
|
112
|
+
var _a;
|
|
113
|
+
return vue.openBlock(), vue.createBlock(CardPosition.default, {
|
|
114
|
+
key: product._id,
|
|
115
|
+
image: ((_a = product.images) == null ? void 0 : _a[0]) ? (_ctx.FILE_SERVER_URL || "") + product.images[0] : "",
|
|
116
|
+
name: product.name,
|
|
117
|
+
title: product.name,
|
|
118
|
+
subtitle: `${vue.unref(returnCurrency)()}${product.price}`,
|
|
119
|
+
showThumbnail: true,
|
|
120
|
+
actions: [
|
|
121
|
+
{
|
|
122
|
+
label: "Add",
|
|
123
|
+
class: "bg-main t-white",
|
|
124
|
+
handler: () => {
|
|
125
|
+
globals.actions.add(recommended.value, product);
|
|
126
|
+
closeRecommendedPopup();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
class: "bg-white pd-thin radius-medium w-100 mn-b-thin cursor-pointer hover-scale-1"
|
|
131
|
+
}, null, 8, ["image", "name", "title", "subtitle", "actions"]);
|
|
132
|
+
}), 128))
|
|
133
|
+
]),
|
|
134
|
+
_: 1
|
|
135
|
+
}, 8, ["store", "options"])
|
|
136
|
+
])
|
|
137
|
+
]),
|
|
138
|
+
_: 1
|
|
139
|
+
}, 8, ["isPopupOpen"])
|
|
140
|
+
], 64);
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
exports.default = _sfc_main;
|
|
145
|
+
//# sourceMappingURL=EditRecommended.vue.cjs.map
|