@ozdao/martyrs 0.2.571 → 0.2.572
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/dayjs.min.js +1 -1
- package/dist/_virtual/weekOfYear.js +1 -1
- package/dist/builder.js +1194 -45
- package/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +1173 -1191
- package/dist/martyrs/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +94 -112
- package/dist/martyrs/dist/main-BfEQkhXS.js.map +1 -0
- package/dist/martyrs/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +3 -3
- package/dist/martyrs/dist/{web-CH5wzMHy.js.map → web-BqTV9va1.js.map} +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
- package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js.map +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js.map +1 -1
- package/dist/{node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → martyrs}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js +1 -1
- package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
- package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/dayjs.min.js +1 -1
- package/dist/martyrs/node_modules/dayjs/dayjs.min.js.map +1 -0
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
- package/dist/martyrs/node_modules/dayjs/plugin/weekOfYear.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
- package/dist/martyrs/src/components/Block/Block.vue.js +2 -2
- package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +1 -1
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +6 -6
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +2 -2
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js +2 -2
- package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
- package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +4 -4
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
- package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +3 -3
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Carousel.vue.js +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/FieldBig/FieldBig.vue.js +2 -2
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +1 -1
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
- package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +3 -3
- package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
- package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
- 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/Menu/MenuItem.vue.js +2 -2
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
- package/dist/martyrs/src/components/Radio/Radio.vue.js +1 -1
- package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.js +2 -2
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
- package/dist/martyrs/src/components/Table/Table.vue.js +3 -3
- package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
- package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
- package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.js → Tooltip.vue2.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -0
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +4 -4
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +4 -4
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js +4 -4
- package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
- 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.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +8 -8
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +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/ResetPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +7 -7
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +4 -4
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +5 -5
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +2 -2
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/Activity.vue.js +7 -7
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +4 -4
- 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 +10 -10
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/classes/core.app.js +2 -1
- package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +10 -10
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/PhotoStack.vue.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +25 -5
- package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +4 -4
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +11 -11
- package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +16 -16
- package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +7 -7
- package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +24 -24
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +7 -7
- package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/store/core.store.js +29 -47
- package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +21 -2
- package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +5 -5
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js +3 -3
- package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +19 -19
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +8 -8
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +5 -5
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +4 -4
- package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconSort.vue.js +4 -4
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +7 -7
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +11 -11
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +6 -6
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +5 -5
- package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
- package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +3 -3
- package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +6 -6
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +4 -4
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +3 -3
- package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +4 -4
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +3 -3
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +8 -8
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +7 -7
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +13 -13
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +24 -24
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +8 -8
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +10 -13
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +9 -9
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +27 -27
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +17 -17
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +27 -27
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +8 -8
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/music.client.js +6 -6
- package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +5 -5
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +9 -9
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +5 -5
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +17 -17
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +4 -4
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js +8 -8
- package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +7 -7
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +3 -3
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +5 -5
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +3 -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.js +5 -5
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +5 -5
- package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +7 -7
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +7 -7
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +12 -12
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +6 -6
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +9 -9
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +6 -6
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/DateLabel.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +8 -8
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +6 -6
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
- package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +3 -3
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +6 -6
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +3 -3
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +5 -5
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +5 -5
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +5 -5
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +2 -2
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +4 -4
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +12 -12
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +4 -4
- package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +24 -24
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +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.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/style.css +194 -202
- package/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +1 -1
- package/package.json +6 -8
- package/src/builder/modes/ssr.prod.js +1 -0
- package/src/builder/modes/ssr.rspack.dev.js +13 -6
- package/src/builder/rspack/rspack.config.base.js +7 -0
- package/src/builder/rspack/rspack.config.ssr.client.js +19 -44
- package/src/builder/templates/page.js +21 -0
- package/src/components/Block/Block.vue +1 -1
- package/src/components/BottomSheet/BottomSheet.vue +1 -1
- package/src/components/Calendar/Calendar.vue +5 -5
- package/src/components/Checkbox/Checkbox.vue +2 -2
- package/src/components/Chips/Chips.vue +2 -2
- package/src/components/Completion/Completion.vue +2 -2
- package/src/components/Countdown/Countdown.vue +5 -5
- package/src/components/DatePicker/DatePicker.vue +4 -4
- package/src/components/EditImages/EditImages.vue +1 -1
- package/src/components/Feed/Feed.old.vue +1 -1
- package/src/components/Feed/Feed.vue +1 -1
- package/src/components/FieldBig/FieldBig.vue +2 -2
- package/src/components/FieldPhone/FieldPhone.vue +1 -1
- package/src/components/FieldTags/BlockTags.vue +1 -1
- package/src/components/Loader/Loader.vue +1 -1
- package/src/components/Menu/MenuItem.vue +2 -2
- package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
- package/src/components/Radio/Radio.vue +1 -1
- package/src/components/Select/Select.vue +1 -1
- package/src/components/Table/Table.vue +2 -2
- package/src/components/Text/Text.vue +1 -1
- package/src/components/UploadImage/UploadImage.vue +2 -2
- package/src/components/UploadImageMultiple/UploadImageMultiple.vue +3 -3
- package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
- package/src/configurator/components/pages/Styles.vue +2 -2
- package/src/jit/.claude/settings.local.json +10 -0
- package/src/jit/CLAUDE.md +387 -0
- package/src/jit/core.js +274 -0
- package/src/jit/extractor.js +140 -0
- package/src/jit/index.js +19 -0
- package/src/jit/loader.js +46 -0
- package/src/jit/plugin.js +209 -0
- package/src/jit/rules.js +474 -0
- package/src/jit/variants.js +128 -0
- package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
- package/src/modules/auth/views/components/blocks/ProfileCard.vue +4 -4
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/pages/EnterPassword.vue +2 -2
- package/src/modules/auth/views/components/pages/Profile.vue +5 -5
- package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +1 -1
- package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +2 -2
- package/src/modules/auth/views/components/pages/ResetPassword.vue +1 -1
- package/src/modules/auth/views/components/pages/SignIn.vue +3 -3
- package/src/modules/auth/views/components/pages/SignUp.vue +1 -1
- package/src/modules/auth/views/components/pages/UserDashboard.vue +3 -3
- package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
- package/src/modules/auth/views/components/sections/ProfileCompletion.vue +2 -2
- package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +7 -7
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
- package/src/modules/backoffice/components/admin/Backcalls.vue +1 -1
- package/src/modules/backoffice/components/admin/FastOrders.vue +1 -1
- package/src/modules/backoffice/components/admin/ProductEdit.vue +2 -2
- package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
- package/src/modules/backoffice/components/admin/Users.vue +2 -2
- package/src/modules/backoffice/components/pages/Dashboard.vue +4 -4
- package/src/modules/backoffice/components/partials/Sidebar.vue +5 -5
- package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
- package/src/modules/chats/components/sections/ChatWindow.vue +2 -2
- package/src/modules/community/components/blocks/Activity.vue +7 -7
- package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
- package/src/modules/community/components/blocks/FooterBlogpost.vue +4 -4
- package/src/modules/community/components/layouts/Community.vue +10 -10
- package/src/modules/community/components/pages/CreateBlogPost.vue +1 -1
- package/src/modules/community/components/pages/Posts.vue +2 -2
- package/src/modules/community/components/sections/Comment.vue +2 -2
- package/src/modules/constructor/components/elements/Audio.vue +1 -1
- package/src/modules/constructor/components/elements/Caption.vue +1 -1
- package/src/modules/constructor/components/elements/Embed.vue +1 -1
- package/src/modules/constructor/components/elements/Textarea.vue +1 -1
- package/src/modules/constructor/components/elements/Video.vue +1 -1
- package/src/modules/core/views/classes/core.app.js +2 -1
- package/src/modules/core/views/components/blocks/BlockSorting.vue +2 -2
- package/src/modules/core/views/components/blocks/CardFooter.vue +4 -4
- package/src/modules/core/views/components/blocks/CardHeader.vue +7 -7
- package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
- package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
- package/src/modules/core/views/components/elements/ButtonDate.vue +1 -1
- package/src/modules/core/views/components/elements/PhotoStack.vue +3 -3
- package/src/modules/core/views/components/layouts/App.vue +28 -4
- package/src/modules/core/views/components/layouts/Client.vue +4 -4
- package/src/modules/core/views/components/partials/BottomNavigationBar.vue +15 -15
- package/src/modules/core/views/components/partials/CitySelection.vue +1 -1
- package/src/modules/core/views/components/partials/Footer.centered.vue +17 -17
- package/src/modules/core/views/components/partials/Footer.vue +18 -18
- package/src/modules/core/views/components/partials/Header.vue +10 -11
- package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
- package/src/modules/core/views/components/partials/Navigation.vue +20 -19
- package/src/modules/core/views/components/partials/NavigationBar.vue +3 -3
- package/src/modules/core/views/components/partials/Sidebar.vue +6 -6
- package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
- package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +1 -1
- package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +2 -2
- package/src/modules/core/views/components/sections/filters/FilterPrice.vue +2 -2
- package/src/modules/core/views/components/sections/filters/FilterRange.vue +2 -2
- package/src/modules/core/views/store/core.store.js +36 -60
- package/src/modules/core/views/utils/vue-app-renderer.js +31 -1
- package/src/modules/events/components/blocks/CardEvent.vue +6 -6
- package/src/modules/events/components/blocks/CardEventShort.vue +3 -3
- package/src/modules/events/components/pages/EditEvent.vue +1 -1
- package/src/modules/events/components/pages/EditEventTickets.vue +18 -18
- package/src/modules/events/components/pages/Event.vue +5 -5
- package/src/modules/events/components/pages/Events.vue +2 -2
- package/src/modules/events/components/pages/EventsBackoffice.vue +2 -2
- package/src/modules/events/components/sections/EditTickets.vue +5 -5
- package/src/modules/events/components/sections/EventsHot.vue +2 -2
- package/src/modules/events/components/sections/List.vue +1 -1
- package/src/modules/events/components/sections/SelectDate.vue +1 -1
- package/src/modules/gallery/components/pages/Gallery.vue +1 -1
- package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
- package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +14 -14
- package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +13 -13
- package/src/modules/governance/reactcode/src/components/EmptyState.tsx +2 -2
- package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +2 -2
- package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +6 -6
- package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +18 -18
- package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +7 -7
- package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +9 -9
- package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +4 -4
- package/src/modules/governance/reactcode/src/components/TaskCard.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/VoteForm.tsx +6 -6
- package/src/modules/governance/reactcode/src/components/VotingCard.tsx +2 -2
- package/src/modules/governance/reactcode/src/components/VotingResults.tsx +15 -15
- package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +41 -41
- package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +8 -8
- package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +6 -6
- package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +9 -9
- package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +14 -14
- package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +44 -44
- package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +8 -8
- package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +3 -3
- package/src/modules/governance/reactcode-2/App.tsx +28 -0
- package/src/modules/governance/reactcode-2/README.md +20 -0
- package/src/modules/governance/reactcode-2/components/Charts.tsx +58 -0
- package/src/modules/governance/reactcode-2/components/Layout.tsx +457 -0
- package/src/modules/governance/reactcode-2/components/TaskPage.tsx +325 -0
- package/src/modules/governance/reactcode-2/components/VoteBadge.tsx +27 -0
- package/src/modules/governance/reactcode-2/components/VotingsFeedPage.tsx +328 -0
- package/src/modules/governance/reactcode-2/constants.ts +154 -0
- package/src/modules/governance/reactcode-2/index.html +70 -0
- package/src/modules/governance/reactcode-2/index.tsx +15 -0
- package/src/modules/governance/reactcode-2/metadata.json +5 -0
- package/src/modules/governance/reactcode-2/package.json +23 -0
- package/src/modules/governance/reactcode-2/pnpm-lock.yaml +1410 -0
- package/src/modules/governance/reactcode-2/tsconfig.json +29 -0
- package/src/modules/governance/reactcode-2/types.ts +48 -0
- package/src/modules/governance/reactcode-2/vite.config.ts +23 -0
- package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +10 -10
- package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +15 -15
- package/src/modules/governance/views/components/blocks/CardTaskItem.vue +9 -9
- package/src/modules/governance/views/components/blocks/CardVotingItem.vue +11 -11
- package/src/modules/governance/views/components/layouts/Governance.vue +1 -1
- package/src/modules/governance/views/components/pages/Governance.vue +3 -3
- package/src/modules/governance/views/components/pages/Initiative.vue +112 -112
- package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +31 -31
- package/src/modules/governance/views/components/pages/Initiatives.vue +20 -22
- package/src/modules/governance/views/components/pages/Milestone.vue +25 -25
- package/src/modules/governance/views/components/pages/Roadmap.vue +47 -47
- package/src/modules/governance/views/components/pages/Task.vue +106 -106
- package/src/modules/governance/views/components/pages/Tasks.vue +16 -16
- package/src/modules/governance/views/components/pages/Voting.vue +23 -23
- package/src/modules/governance/views/components/pages/Votings.vue +7 -7
- package/src/modules/governance/views/components/partials/EmptyState.vue +3 -3
- package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +11 -11
- package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +4 -4
- package/src/modules/governance/views/components/partials/VoteForm.vue +14 -14
- package/src/modules/governance/views/components/partials/VotingResults.vue +22 -22
- package/src/modules/icons/components/IconSearchPopup.vue +3 -3
- package/src/modules/icons/entities/IconCash.vue +23 -0
- package/src/modules/icons/navigation/IconSort.vue +4 -4
- package/src/modules/icons/pages/IconsPage.vue +7 -7
- package/src/modules/inventory/components/forms/AdjustmentForm.vue +3 -3
- package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
- package/src/modules/inventory/components/forms/StockAlertsForm.vue +1 -1
- package/src/modules/inventory/components/pages/Inventory.vue +10 -10
- package/src/modules/inventory/components/pages/InventoryEdit.vue +6 -6
- package/src/modules/landing/components/blocks/MapBlock.vue +2 -2
- package/src/modules/landing/components/sections/Examples.vue +1 -1
- package/src/modules/landing/components/sections/InstagramSection.vue +1 -1
- package/src/modules/landing/components/sections/SectionEarn.vue +4 -4
- package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
- package/src/modules/landing/components/sections/SectionFocus.vue +2 -2
- package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
- package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
- package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
- package/src/modules/landing/components/sections/SectionJoinUs.vue +2 -2
- package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
- package/src/modules/landing/components/sections/SectionOverview.vue +2 -2
- package/src/modules/landing/components/sections/SectionRoadmap.vue +2 -2
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +8 -8
- package/src/modules/marketplace/views/components/pages/Marketplace.vue +5 -5
- package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
- package/src/modules/music/components/SidebarMusic.vue +11 -11
- package/src/modules/music/components/blocks/ActionButtons.vue +2 -2
- package/src/modules/music/components/cards/AlbumCard.vue +4 -4
- package/src/modules/music/components/cards/ArtistCard.vue +3 -8
- package/src/modules/music/components/cards/ArtistCardSmall.vue +2 -2
- package/src/modules/music/components/cards/PlaylistCard.vue +4 -4
- package/src/modules/music/components/cards/TrackListCard.vue +5 -5
- package/src/modules/music/components/forms/AlbumForm.vue +8 -8
- package/src/modules/music/components/forms/ArtistForm.vue +4 -4
- package/src/modules/music/components/forms/PlaylistForm.vue +7 -7
- package/src/modules/music/components/forms/SearchForm.vue +1 -1
- package/src/modules/music/components/forms/TrackForm.vue +13 -13
- package/src/modules/music/components/pages/Album.vue +22 -22
- package/src/modules/music/components/pages/Artist.vue +7 -7
- package/src/modules/music/components/pages/MusicHome.vue +13 -18
- package/src/modules/music/components/pages/MusicLibrary.vue +9 -9
- package/src/modules/music/components/pages/Playlist.vue +25 -25
- package/src/modules/music/components/pages/SearchResults.vue +15 -15
- package/src/modules/music/components/pages/Track.vue +25 -25
- package/src/modules/music/components/player/FullscreenPlayer.vue +5 -5
- package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
- package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
- package/src/modules/orders/components/blocks/CardApplication.vue +1 -1
- package/src/modules/orders/components/blocks/CardCustomer.vue +1 -1
- package/src/modules/orders/components/blocks/CardOrder.vue +9 -9
- package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +5 -5
- package/src/modules/orders/components/blocks/CardOrderItem.vue +9 -9
- package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
- package/src/modules/orders/components/blocks/CardOrderVar1.vue +4 -4
- package/src/modules/orders/components/blocks/StatusHistory.vue +3 -3
- package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
- package/src/modules/orders/components/elements/PriceTotal.vue +3 -3
- package/src/modules/orders/components/forms/FormApplicationDetails.vue +2 -2
- package/src/modules/orders/components/forms/FormCustomerDetails.vue +3 -3
- package/src/modules/orders/components/pages/Favorites.vue +1 -1
- package/src/modules/orders/components/pages/OrderBackoffice.vue +15 -15
- package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
- package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -4
- package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
- package/src/modules/orders/components/partials/ShopCart.vue +2 -2
- package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
- package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
- package/src/modules/orders/components/sections/CustomerDetails.vue +2 -2
- package/src/modules/orders/components/sections/Succes.vue +4 -4
- package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
- package/src/modules/organizations/components/blocks/CardOrganization.vue +4 -4
- package/src/modules/organizations/components/blocks/Contacts.vue +8 -8
- package/src/modules/organizations/components/blocks/Rating.vue +1 -1
- package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
- package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
- package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
- package/src/modules/organizations/components/pages/Department.vue +2 -2
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
- package/src/modules/organizations/components/pages/Members.vue +1 -1
- package/src/modules/organizations/components/pages/Organization.new.vue +8 -8
- package/src/modules/organizations/components/pages/Organization.vue +6 -6
- package/src/modules/organizations/components/pages/OrganizationDocuments.vue +2 -2
- package/src/modules/organizations/components/pages/Organizations.vue +3 -3
- package/src/modules/organizations/components/sections/Documents.vue +2 -2
- package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
- package/src/modules/organizations/components/sections/Unit.vue +1 -1
- package/src/modules/pages/views/components/blocks/CardPage.vue +2 -2
- package/src/modules/pages/views/components/pages/Page.vue +5 -5
- package/src/modules/products/components/blocks/CardCategory.vue +1 -1
- package/src/modules/products/components/blocks/CardPosition.vue +4 -4
- package/src/modules/products/components/blocks/CardProduct.vue +3 -3
- package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -3
- package/src/modules/products/components/blocks/ProductImages.vue +2 -2
- package/src/modules/products/components/blocks/ProductVariants.vue +2 -2
- package/src/modules/products/components/elements/Image360.vue +2 -2
- package/src/modules/products/components/elements/Price.vue +2 -2
- package/src/modules/products/components/elements/QuantitySelector.vue +3 -3
- package/src/modules/products/components/elements/THC.vue +1 -1
- package/src/modules/products/components/forms/ReorderSettingsForm.vue +1 -1
- package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
- package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
- package/src/modules/products/components/pages/Categories.vue +1 -1
- package/src/modules/products/components/pages/CategoryEdit.vue +2 -2
- package/src/modules/products/components/pages/Product.vue +6 -6
- package/src/modules/products/components/pages/ProductEdit.vue +6 -6
- package/src/modules/products/components/pages/Products.vue +11 -11
- package/src/modules/products/components/sections/EditAttributes.vue +4 -4
- package/src/modules/products/components/sections/EditCategories.vue +1 -1
- package/src/modules/products/components/sections/EditDiscounts.vue +6 -6
- package/src/modules/products/components/sections/EditRecommended.vue +1 -1
- package/src/modules/products/components/sections/EditVariants.vue +8 -8
- package/src/modules/products/components/sections/FilterProducts.vue +3 -3
- package/src/modules/products/components/sections/ProductConfigurator.vue +2 -2
- package/src/modules/products/components/sections/ProductInformationSection.vue +10 -10
- package/src/modules/products/components/sections/ProductsRecommended.vue +2 -2
- package/src/modules/products/components/sections/SectionProduct.vue +7 -7
- package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +3 -3
- package/src/modules/rents/views/components/blocks/CardRent.vue +1 -1
- package/src/modules/rents/views/components/pages/Gant/DateLabel.vue +1 -1
- package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +2 -2
- package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +8 -8
- package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +1 -1
- package/src/modules/rents/views/components/pages/Rents.vue +1 -1
- package/src/modules/rents/views/components/pages/RentsEdit.vue +6 -6
- package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
- package/src/modules/reports/components/sections/FormReport.vue +1 -1
- package/src/modules/spots/components/blocks/CardSpot.vue +4 -4
- package/src/modules/spots/components/blocks/SpotMemberModify.vue +1 -1
- package/src/modules/spots/components/layouts/Spots.vue +2 -2
- package/src/modules/spots/components/pages/Spot.vue +5 -5
- package/src/modules/spots/components/pages/SpotEdit.vue +2 -2
- package/src/modules/spots/components/pages/Spots.vue +3 -3
- package/src/modules/spots/components/sections/MapSection.vue +1 -1
- package/src/modules/spots/components/sections/WorktimeEdit.vue +4 -4
- package/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue +5 -5
- package/src/modules/wallet/views/components/blocks/CardDeposit.vue +5 -5
- package/src/modules/wallet/views/components/blocks/CashDeposit.vue +2 -2
- package/src/modules/wallet/views/components/blocks/CryptoDeposit.vue +4 -4
- package/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue +11 -11
- package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +4 -4
- package/src/modules/wallet/views/components/pages/Wallet.vue +22 -22
- package/src/styles/config.scss +193 -507
- package/src/styles/layout.scss +81 -1
- package/src/styles/reset.scss +2 -0
- package/src/styles/theme.scss +1 -8
- package/dist/martyrs/dist/main-BFvlam0J.js.map +0 -1
- package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
- package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +0 -1
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
- package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +0 -1
- package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/weekOfYear.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -20
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
- package/src/modules/LAYOUT.MD +0 -767
- package/src/modules/STYLES.MD +0 -298
- package/src/modules/inventory/inventory.router.js +0 -72
- package/src/modules/products/products.router.js +0 -299
- package/src/styles/base/all.scss +0 -233
- package/src/styles/base/backgrounds.scss +0 -70
- package/src/styles/base/borders.scss +0 -407
- package/src/styles/base/scrolling.scss +0 -137
- package/src/styles/base/shadow_transitions_hover_refactor.scss +0 -158
- package/src/styles/base/transitions.scss +0 -109
- package/src/styles/responsive.scss +0 -152
- package/src/styles/typography.scss +0 -161
- /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterProducts.vue.js","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-medium\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto
|
|
1
|
+
{"version":3,"file":"FilterProducts.vue.js","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-medium\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto fw-medium p-medium\">{{ t('categoriesTitle') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(category, index) in categories.state.all\"\n :key=\"index\"\n :label=\"category.name\"\n :value=\"category.url\"\n class=\"w-100 mn-t-small mn-b-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.categories\"\n @update:radio=\"event => marketplace.state.filter.categories = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small t-transp\">\n\n <!-- Prices Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto fw-medium p-medium\">{{ t('filters.price.title') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(price, index) in prices\"\n :key=\"index\"\n :label=\"price.label\"\n :value=\"price.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.prices\"\n @update:radio=\"event => marketplace.state.filter.prices = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small\">\n\n <!-- Delivery Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto fw-medium p-medium\">Delivery</p>\n </template>\n <template #content>\n <Checkbox \n v-for=\"(deliveryOption, index) in deliveryOptions\"\n :key=\"index\"\n :label=\"deliveryOption.label\"\n :value=\"deliveryOption.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.delivery\"\n @update:radio=\"event => marketplace.state.filter.delivery = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-semi\">\n\n <!-- Reset filter -->\n <button @click=\"resetFilters\" class=\"bg-main w-100 button\">{{ t('filters.reset') }}</button>\n </div>\n </template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue'\n\nimport Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\nimport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\nconst route = useRoute()\nconst router = useRouter()\n\nimport * as categories from '@martyrs/src/modules/products/store/categories.js';\nimport * as marketplace from '@martyrs/src/modules/marketplace/views/store/marketplace.js';\n\nlet options = {\n status: 'published'\n}\n\nlet selectedFilters = ref({\n categories: [],\n prices: [],\n delivery: [],\n extra: []\n})\n\n// Пропсы и данные, которые вы передаёте в компонент\nconst props = defineProps({\n selectedFilters: Object,\n prices: {\n type: Array,\n default: () => [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n },\n deliveryOptions: {\n type: Array,\n default: () => [\n { label: 'Pickup', value: { min: 0, max: 25 } },\n { label: 'Courier', value: { min: 25, max: 50 } },\n { label: 'Post', value: { min: 50, max: 100 } }\n ]\n }\n})\n\nwatch(() => marketplace.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.repalce({ query });\n}, { deep: true })\n\nonMounted(async () => {\n await categories.actions.read(options)\n \n if (route.query) {\n const query = route.query;\n const newFilterValue = {\n categories: query.categories ? query.categories.split(',') : [],\n prices: query.prices ? query.prices.split(',') : [],\n delivery: query.delivery ? query.delivery.split(',') : [],\n // Продолжайте этот паттерн для остальных полей фильтра\n };\n marketplace.state.filter.innerHTML = newFilterValue;\n }\n})\n\nconst emit = defineEmits(['updateFilters', 'resetFilters'])\n\nconst emitFilterChange = (filterType, value) => {\n emit('updateFilters', { filterType, value })\n}\n\nconst resetFilters = () => {\n emit('resetFilters')\n}\nconst text = {\n locale: 'en',\n messages: {\n en: {\n categoriesTitle: 'Category',\n categories: [],\n filters: {\n title: 'Filters',\n price: {\n title: 'Price',\n from: 'From',\n to: 'To'\n },\n filters: [],\n reset: 'Reset Filters'\n }\n },\n ru: {\n categoriesTitle: 'Категория',\n categories: [],\n filters: {\n title: 'Фильтры',\n price: {\n title: 'Цена',\n from: 'От',\n to: 'До'\n },\n filters: [],\n reset: 'Сбросить фильтры',\n }\n }\n }\n }\n\n categories.state.all.forEach( category => {\n category.translations.forEach( localization => {\n text.messages[localization.locale].categories.push(localization.text)\n })\n })\n\n const { t } = useI18n(text)\n \n\n\n// Добавьте свою локализацию и методы t, если они нужны\n</script>\n\n<style>\n/* Ваши стили */\n</style>\n"],"names":["marketplace.state","categories.actions","categories.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAKxB,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsB,QAAI;AAAA,MACxB,YAAY,CAAA;AAAA,MACZ,QAAQ,CAAA;AAAA,MACR,UAAU,CAAA;AAAA,MACV,OAAO,CAAA;AAAA,IACT,CAAC;AAwBD,UAAM,MAAMA,MAAkB,QAAQ,CAAC,gBAAgB,mBAAmB;AAExE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF,CAAC;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACnD;AACE,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,OAAO;AAAA,IAC1B,GAAG,EAAE,MAAM,KAAI,CAAE;AAEjB,cAAU,YAAY;AACpB,YAAMC,QAAmB,KAAK,OAAO;AAErC,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AACpB,cAAM,iBAAiB;AAAA,UACrB,YAAY,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAA;AAAA,UAC7D,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAA;AAAA,UACjD,UAAU,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAA;AAAA;AAAA,QAE7D;AACID,cAAkB,OAAO,YAAY;AAAA,MACvC;AAAA,IACF,CAAC;AAED,UAAM,OAAO;AAMb,UAAM,eAAe,MAAM;AACzB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAA;AAAA,UACZ,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YAChB;AAAA,YACU,SAAS,CAAA;AAAA,YACT,OAAO;AAAA,UACjB;AAAA,QACA;AAAA,QACM,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAA;AAAA,UACZ,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YAChB;AAAA,YACU,SAAS,CAAA;AAAA,YACT,OAAO;AAAA,UACjB;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAEEE,YAAiB,IAAI,QAAS,cAAY;AACxC,eAAS,aAAa,QAAS,kBAAgB;AAC7C,aAAK,SAAS,aAAa,MAAM,EAAE,WAAW,KAAK,aAAa,IAAI;AAAA,MACtE,CAAC;AAAA,IACH,CAAC;AAED,UAAM,EAAE,MAAM,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -90,7 +90,7 @@ const _sfc_main = {
|
|
|
90
90
|
}, null, 8, ["discounts", "regularPrice", "selectedVariant", "productVariants"]),
|
|
91
91
|
createElementVNode("div", _hoisted_2, [
|
|
92
92
|
createElementVNode("div", _hoisted_3, [
|
|
93
|
-
_cache[2] || (_cache[2] = createElementVNode("p", { class: "
|
|
93
|
+
_cache[2] || (_cache[2] = createElementVNode("p", { class: "fw-medium mn-b-thin" }, "Price", -1)),
|
|
94
94
|
createVNode(_sfc_main$2, {
|
|
95
95
|
product: selectedVariant.value || __props.productVariants[0],
|
|
96
96
|
variants: __props.productVariants,
|
|
@@ -100,7 +100,7 @@ const _sfc_main = {
|
|
|
100
100
|
]),
|
|
101
101
|
createElementVNode("div", _hoisted_4, [
|
|
102
102
|
createElementVNode("div", _hoisted_5, [
|
|
103
|
-
_cache[3] || (_cache[3] = createElementVNode("p", { class: "
|
|
103
|
+
_cache[3] || (_cache[3] = createElementVNode("p", { class: "fw-medium" }, "Quantity", -1)),
|
|
104
104
|
selectedVariant.value ? (openBlock(), createElementBlock("span", _hoisted_6, " (Max: " + toDisplayString(maxQuantity.value) + ") ", 1)) : createCommentVNode("", true)
|
|
105
105
|
]),
|
|
106
106
|
createVNode(_sfc_main$3, {
|
package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductConfigurator.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductConfigurator.vue"],"sourcesContent":["<template>\n <div v-if=\"productVariants?.length\" class=\"w-100\">\n <!-- Variants Selection Component -->\n <ProductVariants\n :productVariants=\"productVariants\"\n :productId=\"productId\"\n :productName=\"productName\"\n @variant-selected=\"handleVariantSelected\"\n @update-images=\"$emit('update-images', $event)\"\n />\n \n <!-- Discounts Component -->\n <ProductDiscounts\n :discounts=\"discounts\"\n :regularPrice=\"regularPrice\"\n :selectedVariant=\"selectedVariant\"\n :productVariants=\"productVariants\"\n @select-discount=\"handleDiscountSelected\"\n class=\"mn-b-medium\"\n />\n \n <!-- Показываем цену, если нет вариантов или не выбран ни один вариант -->\n <div class=\"flex-nowrap flex gap-thin\">\n <div class=\"\">\n <p class=\"
|
|
1
|
+
{"version":3,"file":"ProductConfigurator.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductConfigurator.vue"],"sourcesContent":["<template>\n <div v-if=\"productVariants?.length\" class=\"w-100\">\n <!-- Variants Selection Component -->\n <ProductVariants\n :productVariants=\"productVariants\"\n :productId=\"productId\"\n :productName=\"productName\"\n @variant-selected=\"handleVariantSelected\"\n @update-images=\"$emit('update-images', $event)\"\n />\n \n <!-- Discounts Component -->\n <ProductDiscounts\n :discounts=\"discounts\"\n :regularPrice=\"regularPrice\"\n :selectedVariant=\"selectedVariant\"\n :productVariants=\"productVariants\"\n @select-discount=\"handleDiscountSelected\"\n class=\"mn-b-medium\"\n />\n \n <!-- Показываем цену, если нет вариантов или не выбран ни один вариант -->\n <div class=\"flex-nowrap flex gap-thin\">\n <div class=\"\">\n <p class=\"fw-medium mn-b-thin\">Price</p>\n <Price \n :product=\"selectedVariant || productVariants[0]\"\n :variants=\"productVariants\" \n size=\"big\" \n class=\"flex gap-micro flex-center pd-small bg-second t-white w-max mn-b-medium\" \n />\n </div>\n \n \n <!-- Quantity Selection -->\n <div class=\"w-100\">\n <div class=\"flex flex-nowrap flex-v-center mn-b-thin\">\n <p class=\"fw-medium\">Quantity</p>\n <span v-if=\"selectedVariant\" class=\"t-small t-transp mn-l-thin\">\n (Max: {{ maxQuantity }})\n </span>\n </div>\n \n <QuantitySelector v-model=\"quantity\" :maxValue=\"maxQuantity\" />\n </div>\n </div>\n\n <!-- Out of stock notice -->\n <div v-if=\"selectedVariant && !selectedVariant.available\" class=\"mn-b-medium\">\n <div class=\"flex flex-nowrap gap-small pd-small bg-error-light radius-small t-error\">\n <span>Out of stock</span>\n </div>\n </div>\n\n <!-- Add to cart button -->\n <div class=\"w-100 mn-b-medium\">\n <Button\n :submit=\"isVariantAvailable ? addProductToCart : undefined\"\n :disabled=\"!isVariantAvailable\"\n class=\"cursor-pointer pd-medium radius-big w-100 bg-main button h-3r\"\n >\n <div v-if=\"isVariantAvailable\" class=\"gap-micro flex flex-center flex-nowrap\">\n <IconShopcartAdd class=\"i-medium\"/>\n <span class=\"t-nowrap\">{{ t('addtoorder') }}</span>\n </div>\n <template v-else>\n <span v-if=\"!selectedVariant && productVariants.length > 1\">Select variant</span>\n <span v-else>Out of Stock</span>\n </template>\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\n\nimport ProductVariants from '../blocks/ProductVariants.vue';\nimport ProductDiscounts from '../blocks/ProductDiscounts.vue';\nimport QuantitySelector from '../elements/QuantitySelector.vue';\n\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n\nconst props = defineProps({\n productVariants: { type: Array, default: () => [] },\n productId: { type: String, required: true },\n productName: { type: String, required: true },\n discounts: { type: Array, default: () => [] },\n regularPrice: { type: String, required: true }\n});\n\nconst emits = defineEmits(['variant-selected', 'add-to-cart', 'update-images']);\nconst { t } = useI18n({ messages: { en: { addtoorder: 'Add to Cart' }, ru: { addtoorder: 'Добавить в корзину' } } });\n\nconst selectedVariant = ref(null);\nconst quantity = ref(1);\n\n// Computed properties\nconst isVariantAvailable = computed(() => \n selectedVariant.value ? selectedVariant.value.available :\n props.productVariants.length === 1 ? props.productVariants[0].available : false\n);\n\nconst maxQuantity = computed(() => \n selectedVariant.value ? selectedVariant.value.available : \n props.productVariants.length === 1 ? props.productVariants[0].available || 1 : 1\n);\n\n// Methods\nfunction handleVariantSelected(variant) {\n selectedVariant.value = variant;\n if (quantity.value > variant.available) quantity.value = variant.available;\n emits('variant-selected', variant);\n}\n\nfunction handleDiscountSelected(discount) {\n // Update quantity based on discount requirements\n if (discount.quantity && discount.quantity > quantity.value) {\n quantity.value = discount.quantity;\n }\n}\n\nfunction addProductToCart() {\n const variant = selectedVariant.value || \n (props.productVariants.length === 1 ? props.productVariants[0] : null);\n \n if (!variant || !variant.available || quantity.value > variant.available) return false;\n \n emits('add-to-cart', {\n variant: variant,\n quantity: quantity.value\n });\n \n return true;\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AACd,UAAM,EAAE,EAAC,IAAK,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,cAAa,GAAI,IAAI,EAAE,YAAY,qBAAoB,EAAE,EAAE,CAAE;AAEnH,UAAM,kBAAkB,IAAI,IAAI;AAChC,UAAM,WAAW,IAAI,CAAC;AAGtB,UAAM,qBAAqB;AAAA,MAAS,MAClC,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,YAAY;AAAA,IAC5E;AAEA,UAAM,cAAc;AAAA,MAAS,MAC3B,gBAAgB,QAAQ,gBAAgB,MAAM,YAC9C,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,EAAE,aAAa,IAAI;AAAA,IACjF;AAGA,aAAS,sBAAsB,SAAS;AACtC,sBAAgB,QAAQ;AACxB,UAAI,SAAS,QAAQ,QAAQ,UAAW,UAAS,QAAQ,QAAQ;AACjE,YAAM,oBAAoB,OAAO;AAAA,IACnC;AAEA,aAAS,uBAAuB,UAAU;AAExC,UAAI,SAAS,YAAY,SAAS,WAAW,SAAS,OAAO;AAC3D,iBAAS,QAAQ,SAAS;AAAA,MAC5B;AAAA,IACF;AAEA,aAAS,mBAAmB;AAC1B,YAAM,UAAU,gBAAgB,UAC7B,MAAM,gBAAgB,WAAW,IAAI,MAAM,gBAAgB,CAAC,IAAI;AAEnE,UAAI,CAAC,WAAW,CAAC,QAAQ,aAAa,SAAS,QAAQ,QAAQ,UAAW,QAAO;AAEjF,YAAM,eAAe;AAAA,QACnB;AAAA,QACA,UAAU,SAAS;AAAA,MACvB,CAAG;AAED,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,9 +7,9 @@ import _sfc_main$3 from "../../../icons/entities/IconProducts.vue.js";
|
|
|
7
7
|
import _sfc_main$5 from "../../../icons/actions/IconShopcartAdd.vue.js";
|
|
8
8
|
import { state, actions } from "../../../orders/store/shopcart.js";
|
|
9
9
|
const _hoisted_1 = { class: "recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin" };
|
|
10
|
-
const _hoisted_2 = { class: "flex-center flex flex-column pd-small radius-small br-
|
|
10
|
+
const _hoisted_2 = { class: "flex-center flex flex-column pd-small radius-small br-1px br-light" };
|
|
11
11
|
const _hoisted_3 = { class: "mn-b-thin i-extra pd-small bg-light radius-extra" };
|
|
12
|
-
const _hoisted_4 = { class: "mn-b-medium h3
|
|
12
|
+
const _hoisted_4 = { class: "mn-b-medium h3 fw-medium" };
|
|
13
13
|
const _sfc_main = {
|
|
14
14
|
__name: "ProductsRecommended",
|
|
15
15
|
props: {
|
package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push(`/organizations/${product.owner.target}/products/${product._id}`)\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-
|
|
1
|
+
{"version":3,"file":"ProductsRecommended.vue.js","sources":["../../../../../../../src/modules/products/components/sections/ProductsRecommended.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n\nimport CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\nimport IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue';\nimport IconProducts from '@martyrs/src/modules/icons/entities/IconProducts.vue';\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js'\n\nconst router = useRouter()\nconst { proxy } = getCurrentInstance()\n\n// Props\nconst props = defineProps({\n products: {\n type: Array,\n required: true,\n default: () => []\n }\n})\n\n// Состояние выбранных товаров - массив id товаров с вариантами\nconst selectedProducts = ref(props.products.filter(p => p.variants?.length > 0).map(p => p._id))\n\n// Состояние для хранения выбранных дат для товаров типа rent\nconst selectedDates = ref(null)\n\n// Вычисляемая общая цена\nconst totalPrice = computed(() => {\n return props.products\n .filter(p => selectedProducts.value.includes(p._id))\n .reduce((sum, p) => {\n const price = p.variants?.[0]?.price || 0\n return sum + price\n }, 0)\n .toFixed(2)\n})\n\n// Проверка возможности добавления в корзину\nconst canAddToCart = computed(() => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n return selected.length > 0 && selected.some(p => p.variants?.length > 0)\n})\n\nconst handleProductClick = (product) => {\n if (product?._id && product?.owner?.target) {\n router.push(`/organizations/${product.owner.target}/products/${product._id}`)\n }\n}\n\n// Добавление выбранных товаров в корзину\nconst addSelectedToCart = async () => {\n const selected = props.products.filter(p => selectedProducts.value.includes(p._id))\n \n if (selected.length === 0) return\n \n try {\n // Берем организацию первого товара\n const firstProduct = selected[0]\n const organizationId = firstProduct.owner?.target?._id || firstProduct.owner?.target\n \n // Проверяем, что в корзине товары той же организации\n if (shopcart.state.organization && shopcart.state.organization !== organizationId) {\n // Можно добавить подтверждение замены корзины\n const result = await proxy.$alert({\n title: 'Replace items in your cart?',\n message: `Your cart has items from another vendor. If you continue, we'll clear it so you can order from this one instead.`,\n actions: [\n { label: 'Cancel', value: false },\n { label: 'Replace', value: true }\n ]\n })\n\n if (!result) return\n \n shopcart.state.positions = []\n }\n \n shopcart.state.organization = organizationId\n \n // Проверяем, есть ли товары типа rent среди выбранных\n const rentProducts = selected.filter(p => p.listing === 'rent')\n let rentalDates = null\n \n // Если есть товары типа rent, получаем даты для первого товара\n if (rentProducts.length > 0) {\n const firstRentProduct = rentProducts[0]\n const firstVariant = firstRentProduct.variants?.[0]\n \n if (firstVariant) {\n rentalDates = await proxy.$dateSelector(\n firstRentProduct._id,\n firstVariant._id,\n 1,\n firstVariant.price || firstRentProduct.price\n )\n \n if (!rentalDates) return // Пользователь отменил выбор дат\n }\n }\n \n // Добавляем каждый выбранный товар\n for (const product of selected) {\n // Проверяем наличие варианта\n if (!product.variants || product.variants.length === 0) continue\n \n // Используем первый вариант по умолчанию\n const variant = product.variants[0]\n \n // Для товаров типа rent используем полученные даты\n const datesToUse = product.listing === 'rent' ? rentalDates : null\n \n await shopcart.actions.addProductToCart(\n product, \n variant,\n organizationId,\n datesToUse,\n 1 // quantity\n )\n }\n } catch (error) {\n console.error('Error adding to cart:', error)\n }\n}\n</script>\n\n<template>\n <div>\n <h3 class=\"mn-b-small\">Frequently Bought Together</h3>\n <div class=\"recommended-products cols-4 rows-auto-1fr mobile:cols-2 gap-thin\">\n \n <CardProduct \n v-for=\"(product, index) in products\" \n :key=\"product?._id || index\"\n :product=\"product\"\n class=\"h-100 bg-light\"\n @click=\"handleProductClick(product)\"\n :showAddToCart=\"false\"\n >\n <Checkbox\n v-model:radio=\"selectedProducts\"\n :value=\"product._id\"\n mode=\"checkbox\"\n :validation=\"!product.variants || product.variants.length === 0\"\n class=\"pos-r-small pos-t-small pos-absolute\"\n @click.stop\n />\n </CardProduct>\n\n <div class=\"flex-center flex flex-column pd-small radius-small br-1px br-light\">\n <div class=\"mn-b-thin i-extra pd-small bg-light radius-extra\">\n <IconProducts class=\"i-big\"/>\n </div>\n <p class=\"mn-b-small\">Total price:</p>\n <p class=\"mn-b-medium h3 fw-medium\">${{ totalPrice }}</p>\n <Button \n :disabled=\"selectedProducts.length < 1\"\n class=\"bg-main gap-micro\"\n :showSuccess=\"false\"\n :showLoader=\"false\"\n :submit=\"canAddToCart ? addSelectedToCart : undefined\"\n >\n <IconShopcartAdd class=\"i-medium\"/>\n <span>Add to Cart</span>\n </Button>\n </div>\n </div>\n </div>\n</template>"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAeA,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,MAAK,IAAK,mBAAkB;AAGpC,UAAM,QAAQ;AASd,UAAM,mBAAmB,IAAI,MAAM,SAAS,OAAO,OAAK,EAAE,UAAU,SAAS,CAAC,EAAE,IAAI,OAAK,EAAE,GAAG,CAAC;AAGzE,QAAI,IAAI;AAG9B,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,SACV,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC,EAClD,OAAO,CAAC,KAAK,MAAM;AAClB,cAAM,QAAQ,EAAE,WAAW,CAAC,GAAG,SAAS;AACxC,eAAO,MAAM;AAAA,MACf,GAAG,CAAC,EACH,QAAQ,CAAC;AAAA,IACd,CAAC;AAGD,UAAM,eAAe,SAAS,MAAM;AAClC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAClF,aAAO,SAAS,SAAS,KAAK,SAAS,KAAK,OAAK,EAAE,UAAU,SAAS,CAAC;AAAA,IACzE,CAAC;AAED,UAAM,qBAAqB,CAAC,YAAY;AACtC,UAAI,SAAS,OAAO,SAAS,OAAO,QAAQ;AAC1C,eAAO,KAAK,kBAAkB,QAAQ,MAAM,MAAM,aAAa,QAAQ,GAAG,EAAE;AAAA,MAC9E;AAAA,IACF;AAGA,UAAM,oBAAoB,YAAY;AACpC,YAAM,WAAW,MAAM,SAAS,OAAO,OAAK,iBAAiB,MAAM,SAAS,EAAE,GAAG,CAAC;AAElF,UAAI,SAAS,WAAW,EAAG;AAE3B,UAAI;AAEF,cAAM,eAAe,SAAS,CAAC;AAC/B,cAAM,iBAAiB,aAAa,OAAO,QAAQ,OAAO,aAAa,OAAO;AAG9E,YAAIA,MAAe,gBAAgBA,MAAe,iBAAiB,gBAAgB;AAEjF,gBAAM,SAAS,MAAM,MAAM,OAAO;AAAA,YAChC,OAAO;AAAA,YACP,SAAS;AAAA,YACT,SAAS;AAAA,cACP,EAAE,OAAO,UAAU,OAAO,MAAK;AAAA,cAC/B,EAAE,OAAO,WAAW,OAAO,KAAI;AAAA,YACzC;AAAA,UACA,CAAO;AAED,cAAI,CAAC,OAAQ;AAEbA,gBAAe,YAAY,CAAA;AAAA,QAC7B;AAEAA,cAAe,eAAe;AAG9B,cAAM,eAAe,SAAS,OAAO,OAAK,EAAE,YAAY,MAAM;AAC9D,YAAI,cAAc;AAGlB,YAAI,aAAa,SAAS,GAAG;AAC3B,gBAAM,mBAAmB,aAAa,CAAC;AACvC,gBAAM,eAAe,iBAAiB,WAAW,CAAC;AAElD,cAAI,cAAc;AAChB,0BAAc,MAAM,MAAM;AAAA,cACxB,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb;AAAA,cACA,aAAa,SAAS,iBAAiB;AAAA,YACjD;AAEQ,gBAAI,CAAC,YAAa;AAAA,UACpB;AAAA,QACF;AAGA,mBAAW,WAAW,UAAU;AAE9B,cAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,EAAG;AAGxD,gBAAM,UAAU,QAAQ,SAAS,CAAC;AAGlC,gBAAM,aAAa,QAAQ,YAAY,SAAS,cAAc;AAE9D,gBAAMC,QAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UACR;AAAA,QACI;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAAA,MAC9C;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -10,7 +10,7 @@ import _sfc_main$2 from "../elements/Price.vue.js";
|
|
|
10
10
|
import { useRoute, useRouter } from "vue-router";
|
|
11
11
|
import { useI18n } from "vue-i18n";
|
|
12
12
|
import { state, actions } from "../../../orders/store/shopcart.js";
|
|
13
|
-
const _hoisted_1 = { class: "cols-
|
|
13
|
+
const _hoisted_1 = { class: "cols-[1fr_2fr] mobile:cols-1 pd-small w-100 gap-thin" };
|
|
14
14
|
const _hoisted_2 = { class: "pd-small bg-light radius-medium flex-nowrap flex-column flex pos-relative" };
|
|
15
15
|
const _hoisted_3 = { class: "w-100 bg-light radius-semi o-hidden" };
|
|
16
16
|
const _hoisted_4 = ["src"];
|
|
@@ -31,21 +31,21 @@ const _hoisted_10 = {
|
|
|
31
31
|
};
|
|
32
32
|
const _hoisted_11 = {
|
|
33
33
|
key: 1,
|
|
34
|
-
class: "cols-2 w-100 bg-light radius-medium pd-medium gap-small"
|
|
34
|
+
class: "cols-2 mobile:cols-1 w-100 bg-light radius-medium pd-medium gap-small"
|
|
35
35
|
};
|
|
36
36
|
const _hoisted_12 = { class: "w-100 pd-small radius-small bg-white product-attributes" };
|
|
37
|
-
const _hoisted_13 = { class: "
|
|
37
|
+
const _hoisted_13 = { class: "fw-demi" };
|
|
38
38
|
const _hoisted_14 = {
|
|
39
39
|
key: 2,
|
|
40
|
-
class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2"
|
|
40
|
+
class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1"
|
|
41
41
|
};
|
|
42
42
|
const _hoisted_15 = {
|
|
43
43
|
key: 3,
|
|
44
|
-
class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2"
|
|
44
|
+
class: "mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1"
|
|
45
45
|
};
|
|
46
46
|
const _hoisted_16 = {
|
|
47
47
|
key: 1,
|
|
48
|
-
class: "flex-center flex uppercase radius-medium t-black w-max pd-small
|
|
48
|
+
class: "flex-center flex uppercase radius-medium t-black w-max pd-small fw-medium bg-grey h-3r w-100 mn-r-smallbutton"
|
|
49
49
|
};
|
|
50
50
|
const _sfc_main = {
|
|
51
51
|
__name: "SectionProduct",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionProduct.vue.js","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-
|
|
1
|
+
{"version":3,"file":"SectionProduct.vue.js","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-[1fr_2fr] mobile:cols-1 pd-small w-100 gap-thin\">\n\t\t\n\t\t<div class=\"pd-small bg-light radius-medium flex-nowrap flex-column flex pos-relative\">\n\t\t\t<div class=\"w-100 bg-light radius-semi o-hidden\">\n\t\t\t\t<!-- PRODUCT IMAGE -->\n\t\t\t\t<Image360\n\t\t\t\t\tv-if=\"product && product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\t:imagePath=\"`/assets/images/products/${product.image3d}`\"\n\t\t\t\t\t:imageCount=\"36\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-max bg-light w-100\"\n\t\t\t\t\tstyle=\"object-fit: contain;\"\n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + images[0]\"\n\t\t\t\t/>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-if=\"!images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-max-20r h-100 w-100\"\n\t\t\t\t\tstyle=\"object-fit: cover;\"\n\t\t\t\t/>\n\n\t\t\t</div>\n\n\t\t\t<ProductImages\n\t\t\t\tv-if=\"images.length > 1\"\n\t\t\t\t:images=\"images\"\n\t\t\t\tclass=\"mn-t-thin\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div class=\"radius-medium pos-relative w-100 h-100 flex-column flex-justify flex col\">\n\n\t\t\t<IconEdit\n\t\t\t\tv-if=\"accesses && hasAccess(route.params._id, 'products', 'edit', accesses)\"\n\t\t\t\t@click=\"$router.push(editPath)\"\n\t\t\t\tclass=\"pos-absolute pos-t-regular pos-r-regular i-medium t-transp\"\n\t\t\t/>\n\n\t\t\t<!-- Name -->\n\t\t\t<h1 class=\"w-100 h1-product mn-b-small\">{{ product.name }}</h1>\n\t\t\t<!-- Price -->\n\t\t\t<Price v-if=\"product.listing !== 'rent'\" :product=\"product\" size=\"big\" class=\"mn-b-semi\" />\n\t\t\t<!-- Variants -->\n\t\t\t<!-- <div v-if=\"product.variants.length > 0\" class=\"flex-justify-start flex\">\n\t\t\t\t<SelectElement v-if=\"sizes2.length > 0\" :elements=\"sizes2\" :selected=\"product.selectedSize\" class=\"mn-r-medium\" />\n\t\t\t</div> -->\n\t\t\t<!-- Description -->\n\n\t\t\t<Tab \n\t\t\t\tv-model:selected=\"tabProduct\"\n\t\t\t\t:tabs=\"[\n\t\t\t\t\t{name: 'Description', value: 'description'},\n\t\t\t\t\t{name: 'Specifications', value: 'specifications'}\n\t\t\t\t]\"\n\t\t\t\tclassTab=\"pd-small pd-r-medium pd-l-medium w-100 pd-small radius-small\"\n\t\t\t\tclass=\"bg-light mn-b-small\"\n\t\t\t/>\n\n\t\t\t<div class=\"h-min-5r pos-relative\">\n\t\t\t\t<transition name=\"slide-fade\">\n\n\t\t\t\t\t<div v-if=\"tabProduct === 'description'\" class=\"pd-medium radius-medium bg-light \">\n\t\t\t\t\t\t<p v-if=\"product.description && !product.translations < 1\" class=\"w-100 t-transp\">\n\t\t\t\t\t\t\t{{ product.description }}\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<p v-if=\"product.translations && product.translations.length > 1\" class=\"w-100 t-transp\">\n\t\t\t\t\t\t\t{{ t('description') }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div \n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"cols-2 mobile:cols-1 w-100 bg-light radius-medium pd-medium gap-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div \n\t\t\t\t\t\t\tv-if=\"product.attributes.length > 0\" \n\t\t\t\t\t\t\tv-for=\"attributes in product.attributes\" \n\t\t\t\t\t\t\tclass=\"w-100 pd-small radius-small bg-white product-attributes\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<p class=\"fw-demi\">{{ attributes.name }}</p>\n\t\t\t\t\t\t\t<p>{{ attributes.value }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</transition>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"product.listing === 'rent'\" class=\"mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1\">\n\t\t\t\t<Button\n\t\t\t\t\t:submit=\"() => { addToCart(product) } \" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t<!-- Actions -->\n\t\t\t<div v-else class=\"mn-t-small max-w-33rem mobile-w-100 t-white gap-small cols-2 mobile:cols-1\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"product.quantity > 0\"\n\t\t\t\t\t:submit=\"a => addToCart(product)\" \n\t\t\t\t\t:disabled=\"validateToCard(product)\" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t\t<div v-else class=\"flex-center flex uppercase radius-medium t-black w-max pd-small fw-medium bg-grey h-3r w-100 mn-r-smallbutton\">\n\t\t\t\t\tOut of Stock\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\n\nimport Image360 \tfrom '@martyrs/src/modules/products/components/elements/Image360.vue'\nimport ProductImages from \"@martyrs/src/modules/products/components/blocks/ProductImages.vue\";\n\nimport THC from '@martyrs/src/modules/products/components/elements/THC.vue'\nimport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n// import SelectElement \tfrom '@/components/elements/SelectElement.vue'\n\nimport { computed, ref } from 'vue'\n\n\timport { useRoute,useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\n\n// Props\nconst props = defineProps({\n product: {\n type: Object,\n required: true\n },\n user: {\n type: String,\n },\n accesses: {\n type: Object,\n\t default: null\n }\n})\n\n\n\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n// Computed properties\nconst images = computed(() => {\n return props.product.images\n})\n\nconst editPath = computed(() => {\n\tif (route.meta.context === 'backoffice') {\n\t\treturn `/backoffice/products/${props.product._id}/edit`\n\t}\n\tif (route.meta.context === 'organization') {\n\t\treturn `/organizations/${props.product.owner.target}/products/${props.product._id}/edit`\n\t}\n\treturn `/products/${props.product._id}/edit`\n})\n\nconst tabProduct = ref('description')\n\nconst text = {\n\tmessages: {\n\t en: {\n\t \tairecommend: 'AI Recommends You',\n\t \tdescription: '',\n\t \taddtoorder: 'Add to order',\n\t fastorder: 'Fast Order'\n\t },\n\t ru: {\n\t \tairecommend: 'AI Рекомендует вам',\n\t \tdescription: '',\n\t \taddtoorder: 'Добавить в корзину',\n\t fastorder: 'Быстрый заказ'\n\t }\n\t}\n}\n\nconst { t } = useI18n(text)\n\n// Methods\nfunction validateToCard(product) {\n if (product.quantity > 0) {\n return false\n }\n return true\n}\nasync function addToCart(product) {\n\tconsole.log(product)\n try {\n if (shopcart.state.organization !== product.owner.target) {\n shopcart.state.organization = product.owner.target\n shopcart.state.positions = []\n }\n await shopcart.actions.addProductToCart(product, product.owner.target)\n return true // Make sure we return something\n } catch (error) {\n console.error('Ошибка при добавлении товара в корзину:', error)\n throw error\n }\n}\n</script>\n"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJA,UAAM,QAAQ;AAgBb,UAAM,QAAQ,SAAQ;AACP,cAAS;AAGzB,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO,MAAM,QAAQ;AAAA,IACvB,CAAC;AAED,UAAM,WAAW,SAAS,MAAM;AAC/B,UAAI,MAAM,KAAK,YAAY,cAAc;AACxC,eAAO,wBAAwB,MAAM,QAAQ,GAAG;AAAA,MACjD;AACA,UAAI,MAAM,KAAK,YAAY,gBAAgB;AAC1C,eAAO,kBAAkB,MAAM,QAAQ,MAAM,MAAM,aAAa,MAAM,QAAQ,GAAG;AAAA,MAClF;AACA,aAAO,aAAa,MAAM,QAAQ,GAAG;AAAA,IACtC,CAAC;AAED,UAAM,aAAa,IAAI,aAAa;AAEpC,UAAM,OAAO;AAAA,MACZ,UAAU;AAAA,QACR,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QAChB;AAAA,QACG,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAEA,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;AAG1B,aAAS,eAAe,SAAS;AAC/B,UAAI,QAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,mBAAe,UAAU,SAAS;AACjC,cAAQ,IAAI,OAAO;AAChB,UAAI;AACA,YAAIA,MAAe,iBAAiB,QAAQ,MAAM,QAAQ;AACtDA,gBAAe,eAAe,QAAQ,MAAM;AAC5CA,gBAAe,YAAY,CAAA;AAAA,QAC/B;AACA,cAAMC,QAAiB,iBAAiB,SAAS,QAAQ,MAAM,MAAM;AACrE,eAAO;AAAA,MACX,SAAS,OAAO;AACZ,gBAAQ,MAAM,2CAA2C,KAAK;AAC9D,cAAM;AAAA,MACV;AAAA,IACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { computed, createElementBlock, openBlock, createElementVNode, toDisplayString, createCommentVNode, createTextVNode } from "vue";
|
|
2
2
|
/* empty css */
|
|
3
3
|
const _hoisted_1 = { class: "order-card" };
|
|
4
|
-
const _hoisted_2 = { class: "order-status flex-v-center flex-
|
|
4
|
+
const _hoisted_2 = { class: "order-status flex-v-center flex-justify-start flex" };
|
|
5
5
|
const _hoisted_3 = { class: "mn-l-auto" };
|
|
6
6
|
const _hoisted_4 = { class: "pd-small" };
|
|
7
7
|
const _hoisted_5 = { key: 0 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardRent.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/blocks/CardRent.vue"],"sourcesContent":["<template>\n <div class=\"order-card\">\n <div class=\"order-status flex-v-center flex-
|
|
1
|
+
{"version":3,"file":"CardRent.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/blocks/CardRent.vue"],"sourcesContent":["<template>\n <div class=\"order-card\">\n <div class=\"order-status flex-v-center flex-justify-start flex\">\n <span>{{ rent.status }}</span>\n <span class=\"mn-l-auto\">{{ totalDays }} days</span>\n </div>\n <div class=\"pd-small\">\n <p><strong>Start:</strong> {{ formatDate(rent.startDate) }}</p>\n <p><strong>End:</strong> {{ formatDate(rent.endDate) }}</p>\n <p v-if=\"rent.comment\"><strong>Comment:</strong> {{ rent.comment }}</p>\n <button \n @click=\"$router.push({ name: 'Edit Rent', params: { _id: rent._id } })\"\n class=\"bg-main t-white button mn-t-small\"\n >\n Edit\n </button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\n\nconst props = defineProps({\n rent: { type: Object, required: true },\n});\n\nconst totalDays = computed(() => {\n const start = new Date(props.rent.startDate);\n const end = new Date(props.rent.endDate);\n const diffTime = Math.abs(end - start);\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n});\n\n\n\nfunction formatDate(date) {\n return new Date(date).toLocaleDateString();\n}\n</script>\n\n<style lang=\"scss\">\n.order-card {\n border-radius: 0.25rem;\n overflow: hidden;\n box-shadow: 0 8px 8px -8px rgb(36 36 36 / 10%);\n .order-status {\n color: black;\n background: #EEF2F6;\n width: 100%;\n padding: 0.75rem 1.5rem;\n margin: 0;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;AAuBA,UAAM,QAAQ;AAId,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,QAAQ,IAAI,KAAK,MAAM,KAAK,SAAS;AAC3C,YAAM,MAAM,IAAI,KAAK,MAAM,KAAK,OAAO;AACvC,YAAM,WAAW,KAAK,IAAI,MAAM,KAAK;AACrC,aAAO,KAAK,KAAK,YAAY,MAAO,KAAK,KAAK,GAAG;AAAA,IACnD,CAAC;AAID,aAAS,WAAW,MAAM;AACxB,aAAO,IAAI,KAAK,IAAI,EAAE,mBAAkB;AAAA,IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, createVNode, createElementVNode, toDisplayString } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../../../../icons/entities/IconCalendar.vue.js";
|
|
3
3
|
const _hoisted_1 = { class: "flex flex-v-center gap-thin" };
|
|
4
|
-
const _hoisted_2 = { class: "
|
|
4
|
+
const _hoisted_2 = { class: "fw-medium" };
|
|
5
5
|
const _sfc_main = {
|
|
6
6
|
__name: "DateLabel",
|
|
7
7
|
props: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed, createElementBlock, openBlock, normalizeStyle, normalizeClass, createElementVNode, toDisplayString } from "vue";
|
|
2
2
|
/* empty css */
|
|
3
|
-
const _hoisted_1 = { class: "pd-micro t-micro t-white
|
|
3
|
+
const _hoisted_1 = { class: "pd-micro t-micro t-white truncate" };
|
|
4
4
|
const _sfc_main = {
|
|
5
5
|
__name: "GanttBar",
|
|
6
6
|
props: {
|
|
@@ -29,7 +29,7 @@ const _sfc_main = {
|
|
|
29
29
|
}));
|
|
30
30
|
return (_ctx, _cache) => {
|
|
31
31
|
return openBlock(), createElementBlock("div", {
|
|
32
|
-
class: normalizeClass(["gantt-bar pos-absolute radius-small cursor-pointer shadow-small
|
|
32
|
+
class: normalizeClass(["gantt-bar pos-absolute radius-small cursor-pointer shadow-small ease-out hover:scale-[1.015]", barClass.value]),
|
|
33
33
|
style: normalizeStyle(barStyle.value),
|
|
34
34
|
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click"))
|
|
35
35
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GanttBar.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttBar.vue"],"sourcesContent":["<template>\n <div \n class=\"gantt-bar pos-absolute radius-small cursor-pointer shadow-small
|
|
1
|
+
{"version":3,"file":"GanttBar.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttBar.vue"],"sourcesContent":["<template>\n <div \n class=\"gantt-bar pos-absolute radius-small cursor-pointer shadow-small ease-out hover:scale-[1.015]\"\n :class=\"barClass\"\n :style=\"barStyle\"\n @click=\"$emit('click')\"\n >\n <div class=\"pd-micro t-micro t-white truncate\">\n {{ bar.item.productDetails.name || 'Task' }}\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue'\n\nconst props = defineProps({\n bar: { type: Object, required: true },\n view: { type: String, required: true }\n})\n\nconst emit = defineEmits(['click'])\n\n// Bar class based on status\nconst barClass = computed(() => {\n const statusMap = {\n active: 'bg-main',\n completed: 'bg-green',\n canceled: 'bg-red',\n pending : 'bg-grey',\n default: 'bg-second'\n }\n \n return statusMap[props.bar.status] || statusMap.default\n})\n\n// Bar style\nconst barStyle = computed(() => ({\n left: props.bar.left + 'px',\n width: props.bar.width + 'px',\n top: (10 + props.bar.row * 22) + 'px',\n height: '20px',\n zIndex: 10 - props.bar.row\n}))\n</script>\n\n<style>\n.gantt-bar {\n max-height: 20px;\n line-height: 20px;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;AAgBA,UAAM,QAAQ;AAQd,UAAM,WAAW,SAAS,MAAM;AAC9B,YAAM,YAAY;AAAA,QAChB,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAU;AAAA,QACV,SAAS;AAAA,MACb;AAEE,aAAO,UAAU,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,IAClD,CAAC;AAGD,UAAM,WAAW,SAAS,OAAO;AAAA,MAC/B,MAAM,MAAM,IAAI,OAAO;AAAA,MACvB,OAAO,MAAM,IAAI,QAAQ;AAAA,MACzB,KAAM,KAAK,MAAM,IAAI,MAAM,KAAM;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ,KAAK,MAAM,IAAI;AAAA,IACzB,EAAE;;;;;;;;;;;;"}
|
|
@@ -5,12 +5,12 @@ import _sfc_main$2 from "./GanttHeaderCell.vue.js";
|
|
|
5
5
|
import _sfc_main$3 from "./GanttBar.vue.js";
|
|
6
6
|
/* empty css */
|
|
7
7
|
const _hoisted_1 = { class: "gantt-content" };
|
|
8
|
-
const _hoisted_2 = { class: "gantt-header pos-sticky top-0 z-index-2 bg-white br-b
|
|
8
|
+
const _hoisted_2 = { class: "gantt-header pos-sticky top-0 z-index-2 bg-white br-b-1px br-black-transp-10" };
|
|
9
9
|
const _hoisted_3 = { class: "flex" };
|
|
10
10
|
const _hoisted_4 = { class: "gantt-timeline flex" };
|
|
11
11
|
const _hoisted_5 = { class: "gantt-body" };
|
|
12
|
-
const _hoisted_6 = { class: "gantt-product-col pos-sticky left-0 z-index-1 bg-white pd-small br-r
|
|
13
|
-
const _hoisted_7 = { class: "
|
|
12
|
+
const _hoisted_6 = { class: "gantt-product-col pos-sticky left-0 z-index-1 bg-white pd-small br-r-1px br-black-transp-10" };
|
|
13
|
+
const _hoisted_7 = { class: "fw-medium mn-b-micro" };
|
|
14
14
|
const _hoisted_8 = { class: "gantt-timeline pos-relative" };
|
|
15
15
|
const _hoisted_9 = { class: "gantt-cells flex pos-absolute h-100" };
|
|
16
16
|
const _hoisted_10 = { class: "gantt-bars pos-absolute h-100" };
|
|
@@ -328,7 +328,7 @@ const _sfc_main = {
|
|
|
328
328
|
onLoadMore: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("load-more", $event))
|
|
329
329
|
}, null, 8, ["view", "views", "date"]),
|
|
330
330
|
createElementVNode("div", {
|
|
331
|
-
class: "gantt-container scroller o-scroll bg-white radius-small br-
|
|
331
|
+
class: "gantt-container scroller o-scroll bg-white radius-small br-1px br-black-transp-10",
|
|
332
332
|
ref_key: "container",
|
|
333
333
|
ref: container,
|
|
334
334
|
onScroll: handleScroll
|
|
@@ -336,12 +336,12 @@ const _sfc_main = {
|
|
|
336
336
|
createElementVNode("div", _hoisted_1, [
|
|
337
337
|
createElementVNode("div", _hoisted_2, [
|
|
338
338
|
createElementVNode("div", _hoisted_3, [
|
|
339
|
-
_cache[4] || (_cache[4] = createElementVNode("div", { class: "gantt-product-col pos-sticky left-0 z-index-3 bg-light pd-small br-r
|
|
339
|
+
_cache[4] || (_cache[4] = createElementVNode("div", { class: "gantt-product-col pos-sticky left-0 z-index-3 bg-light pd-small br-r-1px br-black-transp-10" }, " Product ", -1)),
|
|
340
340
|
createElementVNode("div", _hoisted_4, [
|
|
341
341
|
(openBlock(true), createElementBlock(Fragment, null, renderList(visibleCells.value, (cell, i) => {
|
|
342
342
|
return openBlock(), createElementBlock("div", {
|
|
343
343
|
key: cell.key,
|
|
344
|
-
class: normalizeClass(["gantt-cell br-r
|
|
344
|
+
class: normalizeClass(["gantt-cell br-r-1px br-black-transp-10 t-center pd-small", getCellClass(cell)]),
|
|
345
345
|
style: normalizeStyle({ width: cellWidth.value + "px" })
|
|
346
346
|
}, [
|
|
347
347
|
createVNode(_sfc_main$2, {
|
|
@@ -358,7 +358,7 @@ const _sfc_main = {
|
|
|
358
358
|
(openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group, i) => {
|
|
359
359
|
return openBlock(), createElementBlock("div", {
|
|
360
360
|
key: group.key,
|
|
361
|
-
class: normalizeClass(["gantt-row flex br-b
|
|
361
|
+
class: normalizeClass(["gantt-row flex br-b-1px br-black-transp-10", i % 2 === 0 ? "bg-light-transp" : ""]),
|
|
362
362
|
style: normalizeStyle({ height: __props.rowHeight + "px" })
|
|
363
363
|
}, [
|
|
364
364
|
createElementVNode("div", _hoisted_6, [
|
|
@@ -372,7 +372,7 @@ const _sfc_main = {
|
|
|
372
372
|
(openBlock(true), createElementBlock(Fragment, null, renderList(visibleCells.value, (cell) => {
|
|
373
373
|
return openBlock(), createElementBlock("div", {
|
|
374
374
|
key: cell.key + "-bg",
|
|
375
|
-
class: normalizeClass(["gantt-cell h-100 br-r
|
|
375
|
+
class: normalizeClass(["gantt-cell h-100 br-r-1px br-black-transp-10", getCellClass(cell)]),
|
|
376
376
|
style: normalizeStyle({ width: cellWidth.value + "px" })
|
|
377
377
|
}, null, 6);
|
|
378
378
|
}), 128))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GanttChart.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttChart.vue"],"sourcesContent":["<template>\n <div class=\"w-100\" :style=\"{ '--cell-width': cellWidth + 'px' }\">\n <GanttToolbar\n :view=\"view\"\n :views=\"views\"\n :date=\"date\"\n @update:view=\"$emit('update:view', $event)\"\n @update:date=\"$emit('update:date', $event)\"\n @today=\"$emit('today')\"\n @load-more=\"$emit('load-more', $event)\"\n />\n \n <div \n class=\"gantt-container scroller o-scroll bg-white radius-small br-solid br-1px br-black-transp-10\"\n ref=\"container\"\n @scroll=\"handleScroll\"\n >\n <div class=\"gantt-content\">\n <!-- Header -->\n <div class=\"gantt-header pos-sticky top-0 z-index-2 bg-white br-b br-solid br-black-transp-10\">\n <div class=\"flex\">\n <div class=\"gantt-product-col pos-sticky left-0 z-index-3 bg-light pd-small br-r br-solid br-black-transp-10\">\n Product\n </div>\n \n <div class=\"gantt-timeline flex\">\n <div\n v-for=\"(cell, i) in visibleCells\"\n :key=\"cell.key\"\n class=\"gantt-cell br-r br-solid br-black-transp-10 t-center pd-small\"\n :class=\"getCellClass(cell)\"\n :style=\"{ width: cellWidth + 'px' }\"\n >\n <GanttHeaderCell :cell=\"cell\" :view=\"view\" :index=\"i\" />\n </div>\n </div>\n </div>\n </div>\n\n <!-- Body -->\n <div class=\"gantt-body\">\n <div \n v-for=\"(group, i) in groups\" \n :key=\"group.key\" \n class=\"gantt-row flex br-b br-solid br-black-transp-10\"\n :class=\"i % 2 === 0 ? 'bg-light-transp' : ''\"\n :style=\"{ height: rowHeight + 'px' }\"\n >\n <div class=\"gantt-product-col pos-sticky left-0 z-index-1 bg-white pd-small br-r br-solid br-black-transp-10\">\n <div class=\"t-medium mn-b-micro\">{{ group.title }}</div>\n <div class=\"t-micro\" :class=\"statusClass(group)\">{{ group.status }}</div>\n </div>\n \n <div class=\"gantt-timeline pos-relative\">\n <!-- Background cells -->\n <div class=\"gantt-cells flex pos-absolute h-100\">\n <div\n v-for=\"cell in visibleCells\"\n :key=\"cell.key + '-bg'\"\n class=\"gantt-cell h-100 br-r br-solid br-black-transp-10\"\n :class=\"getCellClass(cell)\"\n :style=\"{ width: cellWidth + 'px' }\"\n />\n </div>\n \n <!-- Bars -->\n <div class=\"gantt-bars pos-absolute h-100\">\n <GanttBar\n v-for=\"bar in getBars(group)\"\n :key=\"bar.key\"\n :bar=\"bar\"\n :view=\"view\"\n @click=\"$emit('item-click', bar.item)\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onUnmounted, watch, nextTick, shallowRef, onMounted } from 'vue'\nimport dayjs from 'dayjs'\n// import utc from 'dayjs/plugin/utc'\n// import timezone from 'dayjs/plugin/timezone'\n\n// dayjs.extend(utc)\n// dayjs.extend(timezone)\n\nimport GanttToolbar from './GanttToolbar.vue'\nimport GanttHeaderCell from './GanttHeaderCell.vue'\nimport GanttBar from './GanttBar.vue'\n\nconst props = defineProps({\n items: { type: Array, required: true },\n view: { type: String, default: 'days' },\n date: { type: Date, required: true },\n dateRange: { type: Object, required: true },\n views: {\n type: Array,\n default: () => [\n { name: 'Hours', value: 'hours', width: 60 },\n { name: 'Days', value: 'days', width: 60 },\n { name: 'Weeks', value: 'weeks', width: 120 }\n ]\n },\n titleKey: { type: String, default: 'title' },\n startKey: { type: String, default: 'startDate' },\n endKey: { type: String, default: 'endDate' },\n statusKey: { type: String, default: 'status' },\n idKey: { type: String, default: 'id' },\n groupBy: { type: String, default: 'title' },\n loading: { type: Boolean, default: false },\n rowHeight: { type: Number, default: 60 }\n})\n\nconst emit = defineEmits([\n 'update:view',\n 'update:date', \n 'update:dateRange',\n 'load-more',\n 'item-click',\n 'today'\n])\n\n// State\nconst container = ref(null)\nconst scrollLeft = ref(0)\n\n// Cell width\nconst cellWidth = computed(() => {\n const view = props.views.find(v => v.value === props.view)\n return view?.width || 60\n})\n\n// Visible cells\nconst visibleCells = computed(() => {\n if (!props.dateRange) return []\n \n const { start, end } = props.dateRange\n const cells = []\n \n switch (props.view) {\n case 'hours':\n // Start from beginning of the day (use only first day)\n const startDay = new Date(start)\n startDay.setHours(0, 0, 0, 0)\n \n // Generate hour cells for 24 hours (one day)\n for (let h = 0; h < 24; h++) {\n const cellDate = new Date(startDay)\n cellDate.setHours(h, 0, 0, 0)\n cells.push({\n type: 'hour',\n date: cellDate,\n hour: h,\n key: `${startDay.getTime()}-${h}`\n })\n }\n \n break\n \n case 'days':\n for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) {\n cells.push({\n type: 'day',\n date: new Date(d),\n key: d.getTime()\n })\n }\n break\n \n case 'weeks':\n const weekStart = new Date(start)\n weekStart.setDate(start.getDate() - start.getDay())\n \n const currentWeek = new Date(weekStart)\n while (currentWeek <= end) {\n const weekEnd = new Date(currentWeek)\n weekEnd.setDate(currentWeek.getDate() + 6)\n \n cells.push({\n type: 'week',\n start: new Date(currentWeek),\n end: new Date(weekEnd),\n key: currentWeek.getTime()\n })\n \n currentWeek.setDate(currentWeek.getDate() + 7)\n }\n break\n }\n \n return cells\n})\n\n// Cache for bars calculation\nconst barsCache = new WeakMap()\n\n// Helper function to get nested property value\nconst getNestedValue = (obj, path) => {\n return path.split('.').reduce((current, key) => current?.[key], obj)\n}\n\n// Groups\nconst groups = computed(() => {\n const map = new Map()\n \n props.items.forEach(item => {\n const key = getNestedValue(item, props.groupBy) || 'Ungrouped'\n \n if (!map.has(key)) {\n map.set(key, {\n key,\n title: key,\n items: [],\n status: getNestedValue(item, props.statusKey)\n })\n }\n \n map.get(key).items.push(item)\n })\n \n return Array.from(map.values())\n})\n\n// Cell class\nconst getCellClass = (cell) => {\n const classes = []\n const now = dayjs()\n \n switch (cell.type) {\n case 'hour':\n if (dayjs(cell.date).isSame(now, 'day') && cell.hour === now.hour()) {\n classes.push('bg-blue-transp')\n } else if (dayjs(cell.date).isSame(now, 'day')) {\n classes.push('bg-light')\n }\n break\n \n case 'day':\n const day = dayjs(cell.date).day()\n if (day === 0 || day === 6) classes.push('bg-light')\n if (dayjs(cell.date).isSame(now, 'day')) classes.push('bg-blue-transp')\n break\n \n case 'week':\n if (now.isAfter(cell.start) && now.isBefore(cell.end)) {\n classes.push('bg-blue-transp')\n }\n break\n }\n \n return classes.join(' ')\n}\n\n// Status class\nconst statusClass = (group) => {\n const s = group.status || 'default'\n const map = {\n active: 't-green',\n completed: 't-blue',\n canceled: 't-red',\n default: 't-transp'\n }\n return map[s] || map.default\n}\n\n// Get bars\nconst getBars = (group) => {\n const result = []\n const rows = []\n \n group.items.forEach(item => {\n try {\n const start = getNestedValue(item, props.startKey)\n const end = getNestedValue(item, props.endKey)\n \n if (!start || !end) return\n \n const s = start instanceof Date ? new Date(start) : dayjs(start).toDate()\n const e = end instanceof Date ? new Date(end) : dayjs(end).toDate()\n \n if (isNaN(s.getTime()) || isNaN(e.getTime())) {\n console.warn(`Invalid dates for item ${getNestedValue(item, props.idKey)}:`, { start, end })\n return\n }\n \n console.log('Processing item:', {\n id: getNestedValue(item, props.idKey),\n start: s,\n end: e,\n dateRange: props.dateRange\n })\n \n // Skip if completely outside visible range\n if (e < props.dateRange.start || s > props.dateRange.end) {\n console.log('Item skipped - outside visible range')\n return\n }\n \n // Calculate position\n let left = 0\n let width = 0\n \n // Minimum width for very short intervals\n const minWidth = cellWidth.value * 0.1\n \n switch (props.view) {\n case 'hours':\n if (!visibleCells.value.length) return\n \n // Get the first cell's time as base reference\n const firstCell = visibleCells.value[0]\n const baseTime = new Date(firstCell.date)\n baseTime.setHours(0, 0, 0, 0)\n \n // Calculate exact minute positions from base time\n const minuteMs = 60 * 1000\n const hourMs = 60 * 60 * 1000\n \n // For long bars (>1 day), limit to visible day range\n const dayStart = new Date(baseTime)\n dayStart.setHours(0, 0, 0, 0)\n const dayEnd = new Date(baseTime)\n dayEnd.setHours(23, 59, 59, 999)\n \n const visibleStart = s < dayStart ? dayStart : s\n const visibleEnd = e > dayEnd ? dayEnd : e\n \n // Calculate hour positions with minute precision\n const startHours = (visibleStart - baseTime) / hourMs\n const endHours = (visibleEnd - baseTime) / hourMs\n \n // Clip to visible range (0-24 hours)\n const clippedStart = Math.max(0, startHours)\n const clippedEnd = Math.min(24, endHours)\n \n // Skip if completely outside visible range\n if (clippedEnd <= clippedStart) {\n return\n }\n \n // Calculate pixel position\n left = clippedStart * cellWidth.value\n width = (clippedEnd - clippedStart) * cellWidth.value\n \n // Apply minimum width for very short intervals (3-7 minutes should be visible)\n width = Math.max(width, minWidth)\n \n break\n \n case 'days':\n const firstDay = visibleCells.value[0]?.date\n if (!firstDay) return\n \n const firstDayStart = new Date(firstDay)\n firstDayStart.setHours(0, 0, 0, 0)\n \n // Calculate exact positions with minute precision\n const dayMs = 24 * 60 * 60 * 1000\n const startDayFloat = (s - firstDayStart) / dayMs\n const endDayFloat = (e - firstDayStart) / dayMs\n \n // Clip to visible range\n const visibleDays = visibleCells.value.length\n const clippedStartDay = Math.max(0, startDayFloat)\n const clippedEndDay = Math.min(visibleDays, endDayFloat)\n \n // Skip if completely outside visible range\n if (clippedEndDay <= clippedStartDay) return\n \n left = clippedStartDay * cellWidth.value\n width = (clippedEndDay - clippedStartDay) * cellWidth.value\n \n // Apply minimum width for very short intervals\n width = Math.max(width, minWidth)\n break\n \n case 'weeks':\n const firstWeek = visibleCells.value[0]?.start\n if (!firstWeek) return\n \n // Calculate exact positions with minute precision\n const weekMs = 7 * 24 * 60 * 60 * 1000\n const startWeekFloat = (s - firstWeek) / weekMs\n const endWeekFloat = (e - firstWeek) / weekMs\n \n // Clip to visible range\n const visibleWeeks = visibleCells.value.length\n const clippedStartWeek = Math.max(0, startWeekFloat)\n const clippedEndWeek = Math.min(visibleWeeks, endWeekFloat)\n \n // Skip if completely outside visible range\n if (clippedEndWeek <= clippedStartWeek) return\n \n left = clippedStartWeek * cellWidth.value\n width = (clippedEndWeek - clippedStartWeek) * cellWidth.value\n \n // Apply minimum width for very short intervals\n width = Math.max(width, minWidth)\n break\n }\n \n // Find row\n let row = 0\n let placed = false\n \n while (!placed) {\n if (!rows[row]) rows[row] = []\n \n const overlap = rows[row].some(b => \n (s <= b.end && e >= b.start)\n )\n \n if (!overlap) {\n rows[row].push({ start: s, end: e })\n placed = true\n } else {\n row++\n }\n }\n \n result.push({\n key: `${getNestedValue(item, props.idKey)}-${s.getTime()}`,\n item,\n left,\n width,\n row,\n status: getNestedValue(item, props.statusKey) || 'default'\n })\n } catch (error) {\n console.error(`Error processing item ${getNestedValue(item, props.idKey)}:`, error)\n }\n })\n \n console.log('Final bars result:', result)\n return result\n}\n\n// Throttle\nconst throttle = (fn, delay) => {\n let lastCall = 0\n let timeout = null\n \n const throttled = (...args) => {\n const now = Date.now()\n const remaining = delay - (now - lastCall)\n \n if (remaining <= 0) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n lastCall = now\n return fn(...args)\n }\n \n if (!timeout) {\n timeout = setTimeout(() => {\n lastCall = Date.now()\n timeout = null\n fn(...args)\n }, remaining)\n }\n }\n \n throttled.cancel = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n }\n \n return throttled\n}\n\n// Scroll handling\nconst handleScroll = (event) => {\n if (!container.value) return\n \n const el = event.target\n scrollLeft.value = el.scrollLeft\n}\n\n// Cleanup\nonUnmounted(() => {\n // No cleanup needed\n})\n\n// Center view on specific date\nconst centerOnDate = (targetDate) => {\n if (!container.value) return\n \n nextTick(() => {\n const cells = visibleCells.value\n if (!cells.length) return\n \n let cellIndex = -1\n \n switch (props.view) {\n case 'hours':\n cellIndex = cells.findIndex(c => \n c.type === 'hour' &&\n dayjs(c.date).isSame(targetDate, 'day') &&\n c.hour === targetDate.getHours()\n )\n break\n \n case 'days':\n cellIndex = cells.findIndex(c =>\n c.type === 'day' &&\n dayjs(c.date).isSame(targetDate, 'day')\n )\n break\n \n case 'weeks':\n cellIndex = cells.findIndex(c =>\n c.type === 'week' &&\n targetDate >= c.start &&\n targetDate <= c.end\n )\n break\n }\n \n if (cellIndex >= 0) {\n const scrollPos = cellIndex * cellWidth.value - container.value.clientWidth / 2\n container.value.scrollLeft = Math.max(0, scrollPos)\n }\n })\n}\n\n// Watch for view or date range changes\nwatch(() => props.view, () => {\n // Center on current date when view changes\n centerOnDate(props.date)\n})\n\n// Watch for date changes (e.g., when Today button is clicked)\nwatch(() => props.date, (newDate) => {\n // Center on the new date, especially important for hours view\n centerOnDate(newDate)\n})\n\nwatch(() => props.dateRange, () => {\n // Reset scroll position when date range changes significantly\n if (container.value) {\n container.value.scrollLeft = 0\n }\n}, { deep: true })\n</script>\n\n<style>\n.gantt-container {\n --cell-width: 60px;\n height: 500px;\n position: relative;\n}\n\n.gantt-content {\n width: fit-content;\n min-width: 100%;\n}\n\n.gantt-header {\n height: 60px;\n}\n\n.gantt-product-col {\n width: 200px;\n min-width: 200px;\n flex-shrink: 0;\n}\n\n.gantt-timeline {\n position: relative;\n min-width: fit-content;\n}\n\n.gantt-cell {\n min-width: var(--cell-width);\n flex-shrink: 0;\n}\n\n.gantt-row {\n position: relative;\n}\n\n.gantt-cells,\n.gantt-bars {\n width: fit-content;\n left: 0;\n}\n</style>"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GanttChart.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttChart.vue"],"sourcesContent":["<template>\n <div class=\"w-100\" :style=\"{ '--cell-width': cellWidth + 'px' }\">\n <GanttToolbar\n :view=\"view\"\n :views=\"views\"\n :date=\"date\"\n @update:view=\"$emit('update:view', $event)\"\n @update:date=\"$emit('update:date', $event)\"\n @today=\"$emit('today')\"\n @load-more=\"$emit('load-more', $event)\"\n />\n \n <div \n class=\"gantt-container scroller o-scroll bg-white radius-small br-1px br-black-transp-10\"\n ref=\"container\"\n @scroll=\"handleScroll\"\n >\n <div class=\"gantt-content\">\n <!-- Header -->\n <div class=\"gantt-header pos-sticky top-0 z-index-2 bg-white br-b-1px br-black-transp-10\">\n <div class=\"flex\">\n <div class=\"gantt-product-col pos-sticky left-0 z-index-3 bg-light pd-small br-r-1px br-black-transp-10\">\n Product\n </div>\n \n <div class=\"gantt-timeline flex\">\n <div\n v-for=\"(cell, i) in visibleCells\"\n :key=\"cell.key\"\n class=\"gantt-cell br-r-1px br-black-transp-10 t-center pd-small\"\n :class=\"getCellClass(cell)\"\n :style=\"{ width: cellWidth + 'px' }\"\n >\n <GanttHeaderCell :cell=\"cell\" :view=\"view\" :index=\"i\" />\n </div>\n </div>\n </div>\n </div>\n\n <!-- Body -->\n <div class=\"gantt-body\">\n <div \n v-for=\"(group, i) in groups\" \n :key=\"group.key\" \n class=\"gantt-row flex br-b-1px br-black-transp-10\"\n :class=\"i % 2 === 0 ? 'bg-light-transp' : ''\"\n :style=\"{ height: rowHeight + 'px' }\"\n >\n <div class=\"gantt-product-col pos-sticky left-0 z-index-1 bg-white pd-small br-r-1px br-black-transp-10\">\n <div class=\"fw-medium mn-b-micro\">{{ group.title }}</div>\n <div class=\"t-micro\" :class=\"statusClass(group)\">{{ group.status }}</div>\n </div>\n \n <div class=\"gantt-timeline pos-relative\">\n <!-- Background cells -->\n <div class=\"gantt-cells flex pos-absolute h-100\">\n <div\n v-for=\"cell in visibleCells\"\n :key=\"cell.key + '-bg'\"\n class=\"gantt-cell h-100 br-r-1px br-black-transp-10\"\n :class=\"getCellClass(cell)\"\n :style=\"{ width: cellWidth + 'px' }\"\n />\n </div>\n \n <!-- Bars -->\n <div class=\"gantt-bars pos-absolute h-100\">\n <GanttBar\n v-for=\"bar in getBars(group)\"\n :key=\"bar.key\"\n :bar=\"bar\"\n :view=\"view\"\n @click=\"$emit('item-click', bar.item)\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onUnmounted, watch, nextTick, shallowRef, onMounted } from 'vue'\nimport dayjs from 'dayjs'\n// import utc from 'dayjs/plugin/utc'\n// import timezone from 'dayjs/plugin/timezone'\n\n// dayjs.extend(utc)\n// dayjs.extend(timezone)\n\nimport GanttToolbar from './GanttToolbar.vue'\nimport GanttHeaderCell from './GanttHeaderCell.vue'\nimport GanttBar from './GanttBar.vue'\n\nconst props = defineProps({\n items: { type: Array, required: true },\n view: { type: String, default: 'days' },\n date: { type: Date, required: true },\n dateRange: { type: Object, required: true },\n views: {\n type: Array,\n default: () => [\n { name: 'Hours', value: 'hours', width: 60 },\n { name: 'Days', value: 'days', width: 60 },\n { name: 'Weeks', value: 'weeks', width: 120 }\n ]\n },\n titleKey: { type: String, default: 'title' },\n startKey: { type: String, default: 'startDate' },\n endKey: { type: String, default: 'endDate' },\n statusKey: { type: String, default: 'status' },\n idKey: { type: String, default: 'id' },\n groupBy: { type: String, default: 'title' },\n loading: { type: Boolean, default: false },\n rowHeight: { type: Number, default: 60 }\n})\n\nconst emit = defineEmits([\n 'update:view',\n 'update:date', \n 'update:dateRange',\n 'load-more',\n 'item-click',\n 'today'\n])\n\n// State\nconst container = ref(null)\nconst scrollLeft = ref(0)\n\n// Cell width\nconst cellWidth = computed(() => {\n const view = props.views.find(v => v.value === props.view)\n return view?.width || 60\n})\n\n// Visible cells\nconst visibleCells = computed(() => {\n if (!props.dateRange) return []\n \n const { start, end } = props.dateRange\n const cells = []\n \n switch (props.view) {\n case 'hours':\n // Start from beginning of the day (use only first day)\n const startDay = new Date(start)\n startDay.setHours(0, 0, 0, 0)\n \n // Generate hour cells for 24 hours (one day)\n for (let h = 0; h < 24; h++) {\n const cellDate = new Date(startDay)\n cellDate.setHours(h, 0, 0, 0)\n cells.push({\n type: 'hour',\n date: cellDate,\n hour: h,\n key: `${startDay.getTime()}-${h}`\n })\n }\n \n break\n \n case 'days':\n for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) {\n cells.push({\n type: 'day',\n date: new Date(d),\n key: d.getTime()\n })\n }\n break\n \n case 'weeks':\n const weekStart = new Date(start)\n weekStart.setDate(start.getDate() - start.getDay())\n \n const currentWeek = new Date(weekStart)\n while (currentWeek <= end) {\n const weekEnd = new Date(currentWeek)\n weekEnd.setDate(currentWeek.getDate() + 6)\n \n cells.push({\n type: 'week',\n start: new Date(currentWeek),\n end: new Date(weekEnd),\n key: currentWeek.getTime()\n })\n \n currentWeek.setDate(currentWeek.getDate() + 7)\n }\n break\n }\n \n return cells\n})\n\n// Cache for bars calculation\nconst barsCache = new WeakMap()\n\n// Helper function to get nested property value\nconst getNestedValue = (obj, path) => {\n return path.split('.').reduce((current, key) => current?.[key], obj)\n}\n\n// Groups\nconst groups = computed(() => {\n const map = new Map()\n \n props.items.forEach(item => {\n const key = getNestedValue(item, props.groupBy) || 'Ungrouped'\n \n if (!map.has(key)) {\n map.set(key, {\n key,\n title: key,\n items: [],\n status: getNestedValue(item, props.statusKey)\n })\n }\n \n map.get(key).items.push(item)\n })\n \n return Array.from(map.values())\n})\n\n// Cell class\nconst getCellClass = (cell) => {\n const classes = []\n const now = dayjs()\n \n switch (cell.type) {\n case 'hour':\n if (dayjs(cell.date).isSame(now, 'day') && cell.hour === now.hour()) {\n classes.push('bg-blue-transp')\n } else if (dayjs(cell.date).isSame(now, 'day')) {\n classes.push('bg-light')\n }\n break\n \n case 'day':\n const day = dayjs(cell.date).day()\n if (day === 0 || day === 6) classes.push('bg-light')\n if (dayjs(cell.date).isSame(now, 'day')) classes.push('bg-blue-transp')\n break\n \n case 'week':\n if (now.isAfter(cell.start) && now.isBefore(cell.end)) {\n classes.push('bg-blue-transp')\n }\n break\n }\n \n return classes.join(' ')\n}\n\n// Status class\nconst statusClass = (group) => {\n const s = group.status || 'default'\n const map = {\n active: 't-green',\n completed: 't-blue',\n canceled: 't-red',\n default: 't-transp'\n }\n return map[s] || map.default\n}\n\n// Get bars\nconst getBars = (group) => {\n const result = []\n const rows = []\n \n group.items.forEach(item => {\n try {\n const start = getNestedValue(item, props.startKey)\n const end = getNestedValue(item, props.endKey)\n \n if (!start || !end) return\n \n const s = start instanceof Date ? new Date(start) : dayjs(start).toDate()\n const e = end instanceof Date ? new Date(end) : dayjs(end).toDate()\n \n if (isNaN(s.getTime()) || isNaN(e.getTime())) {\n console.warn(`Invalid dates for item ${getNestedValue(item, props.idKey)}:`, { start, end })\n return\n }\n \n console.log('Processing item:', {\n id: getNestedValue(item, props.idKey),\n start: s,\n end: e,\n dateRange: props.dateRange\n })\n \n // Skip if completely outside visible range\n if (e < props.dateRange.start || s > props.dateRange.end) {\n console.log('Item skipped - outside visible range')\n return\n }\n \n // Calculate position\n let left = 0\n let width = 0\n \n // Minimum width for very short intervals\n const minWidth = cellWidth.value * 0.1\n \n switch (props.view) {\n case 'hours':\n if (!visibleCells.value.length) return\n \n // Get the first cell's time as base reference\n const firstCell = visibleCells.value[0]\n const baseTime = new Date(firstCell.date)\n baseTime.setHours(0, 0, 0, 0)\n \n // Calculate exact minute positions from base time\n const minuteMs = 60 * 1000\n const hourMs = 60 * 60 * 1000\n \n // For long bars (>1 day), limit to visible day range\n const dayStart = new Date(baseTime)\n dayStart.setHours(0, 0, 0, 0)\n const dayEnd = new Date(baseTime)\n dayEnd.setHours(23, 59, 59, 999)\n \n const visibleStart = s < dayStart ? dayStart : s\n const visibleEnd = e > dayEnd ? dayEnd : e\n \n // Calculate hour positions with minute precision\n const startHours = (visibleStart - baseTime) / hourMs\n const endHours = (visibleEnd - baseTime) / hourMs\n \n // Clip to visible range (0-24 hours)\n const clippedStart = Math.max(0, startHours)\n const clippedEnd = Math.min(24, endHours)\n \n // Skip if completely outside visible range\n if (clippedEnd <= clippedStart) {\n return\n }\n \n // Calculate pixel position\n left = clippedStart * cellWidth.value\n width = (clippedEnd - clippedStart) * cellWidth.value\n \n // Apply minimum width for very short intervals (3-7 minutes should be visible)\n width = Math.max(width, minWidth)\n \n break\n \n case 'days':\n const firstDay = visibleCells.value[0]?.date\n if (!firstDay) return\n \n const firstDayStart = new Date(firstDay)\n firstDayStart.setHours(0, 0, 0, 0)\n \n // Calculate exact positions with minute precision\n const dayMs = 24 * 60 * 60 * 1000\n const startDayFloat = (s - firstDayStart) / dayMs\n const endDayFloat = (e - firstDayStart) / dayMs\n \n // Clip to visible range\n const visibleDays = visibleCells.value.length\n const clippedStartDay = Math.max(0, startDayFloat)\n const clippedEndDay = Math.min(visibleDays, endDayFloat)\n \n // Skip if completely outside visible range\n if (clippedEndDay <= clippedStartDay) return\n \n left = clippedStartDay * cellWidth.value\n width = (clippedEndDay - clippedStartDay) * cellWidth.value\n \n // Apply minimum width for very short intervals\n width = Math.max(width, minWidth)\n break\n \n case 'weeks':\n const firstWeek = visibleCells.value[0]?.start\n if (!firstWeek) return\n \n // Calculate exact positions with minute precision\n const weekMs = 7 * 24 * 60 * 60 * 1000\n const startWeekFloat = (s - firstWeek) / weekMs\n const endWeekFloat = (e - firstWeek) / weekMs\n \n // Clip to visible range\n const visibleWeeks = visibleCells.value.length\n const clippedStartWeek = Math.max(0, startWeekFloat)\n const clippedEndWeek = Math.min(visibleWeeks, endWeekFloat)\n \n // Skip if completely outside visible range\n if (clippedEndWeek <= clippedStartWeek) return\n \n left = clippedStartWeek * cellWidth.value\n width = (clippedEndWeek - clippedStartWeek) * cellWidth.value\n \n // Apply minimum width for very short intervals\n width = Math.max(width, minWidth)\n break\n }\n \n // Find row\n let row = 0\n let placed = false\n \n while (!placed) {\n if (!rows[row]) rows[row] = []\n \n const overlap = rows[row].some(b => \n (s <= b.end && e >= b.start)\n )\n \n if (!overlap) {\n rows[row].push({ start: s, end: e })\n placed = true\n } else {\n row++\n }\n }\n \n result.push({\n key: `${getNestedValue(item, props.idKey)}-${s.getTime()}`,\n item,\n left,\n width,\n row,\n status: getNestedValue(item, props.statusKey) || 'default'\n })\n } catch (error) {\n console.error(`Error processing item ${getNestedValue(item, props.idKey)}:`, error)\n }\n })\n \n console.log('Final bars result:', result)\n return result\n}\n\n// Throttle\nconst throttle = (fn, delay) => {\n let lastCall = 0\n let timeout = null\n \n const throttled = (...args) => {\n const now = Date.now()\n const remaining = delay - (now - lastCall)\n \n if (remaining <= 0) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n lastCall = now\n return fn(...args)\n }\n \n if (!timeout) {\n timeout = setTimeout(() => {\n lastCall = Date.now()\n timeout = null\n fn(...args)\n }, remaining)\n }\n }\n \n throttled.cancel = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n }\n \n return throttled\n}\n\n// Scroll handling\nconst handleScroll = (event) => {\n if (!container.value) return\n \n const el = event.target\n scrollLeft.value = el.scrollLeft\n}\n\n// Cleanup\nonUnmounted(() => {\n // No cleanup needed\n})\n\n// Center view on specific date\nconst centerOnDate = (targetDate) => {\n if (!container.value) return\n \n nextTick(() => {\n const cells = visibleCells.value\n if (!cells.length) return\n \n let cellIndex = -1\n \n switch (props.view) {\n case 'hours':\n cellIndex = cells.findIndex(c => \n c.type === 'hour' &&\n dayjs(c.date).isSame(targetDate, 'day') &&\n c.hour === targetDate.getHours()\n )\n break\n \n case 'days':\n cellIndex = cells.findIndex(c =>\n c.type === 'day' &&\n dayjs(c.date).isSame(targetDate, 'day')\n )\n break\n \n case 'weeks':\n cellIndex = cells.findIndex(c =>\n c.type === 'week' &&\n targetDate >= c.start &&\n targetDate <= c.end\n )\n break\n }\n \n if (cellIndex >= 0) {\n const scrollPos = cellIndex * cellWidth.value - container.value.clientWidth / 2\n container.value.scrollLeft = Math.max(0, scrollPos)\n }\n })\n}\n\n// Watch for view or date range changes\nwatch(() => props.view, () => {\n // Center on current date when view changes\n centerOnDate(props.date)\n})\n\n// Watch for date changes (e.g., when Today button is clicked)\nwatch(() => props.date, (newDate) => {\n // Center on the new date, especially important for hours view\n centerOnDate(newDate)\n})\n\nwatch(() => props.dateRange, () => {\n // Reset scroll position when date range changes significantly\n if (container.value) {\n container.value.scrollLeft = 0\n }\n}, { deep: true })\n</script>\n\n<style>\n.gantt-container {\n --cell-width: 60px;\n height: 500px;\n position: relative;\n}\n\n.gantt-content {\n width: fit-content;\n min-width: 100%;\n}\n\n.gantt-header {\n height: 60px;\n}\n\n.gantt-product-col {\n width: 200px;\n min-width: 200px;\n flex-shrink: 0;\n}\n\n.gantt-timeline {\n position: relative;\n min-width: fit-content;\n}\n\n.gantt-cell {\n min-width: var(--cell-width);\n flex-shrink: 0;\n}\n\n.gantt-row {\n position: relative;\n}\n\n.gantt-cells,\n.gantt-bars {\n width: fit-content;\n left: 0;\n}\n</style>"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ const _hoisted_2 = {
|
|
|
7
7
|
class: "t-micro"
|
|
8
8
|
};
|
|
9
9
|
const _hoisted_3 = { class: "t-small" };
|
|
10
|
-
const _hoisted_4 = { class: "
|
|
10
|
+
const _hoisted_4 = { class: "fw-medium" };
|
|
11
11
|
const _hoisted_5 = { class: "t-micro t-transp" };
|
|
12
12
|
const _hoisted_6 = { class: "t-small" };
|
|
13
13
|
const _hoisted_7 = { class: "t-micro t-transp" };
|
package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GanttHeaderCell.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue"],"sourcesContent":["<template>\n <div class=\"gantt-header-content\">\n <!-- Hour view -->\n <template v-if=\"cell.type === 'hour'\">\n <div v-if=\"isFirst || cell.hour === 0\" class=\"t-micro\">\n {{ dayjs(cell.date).format('DD/MM') }}\n </div>\n <div class=\"t-small\">{{ cell.hour }}:00</div>\n </template>\n \n <!-- Day view -->\n <template v-else-if=\"cell.type === 'day'\">\n <!-- <div v-if=\"isFirst || cell.date.getDate() === 1\" class=\"t-micro\">\n {{ dayjs(cell.date).format('MMM YYYY') }}\n </div> -->\n <div class=\"
|
|
1
|
+
{"version":3,"file":"GanttHeaderCell.vue.js","sources":["../../../../../../../../../src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue"],"sourcesContent":["<template>\n <div class=\"gantt-header-content\">\n <!-- Hour view -->\n <template v-if=\"cell.type === 'hour'\">\n <div v-if=\"isFirst || cell.hour === 0\" class=\"t-micro\">\n {{ dayjs(cell.date).format('DD/MM') }}\n </div>\n <div class=\"t-small\">{{ cell.hour }}:00</div>\n </template>\n \n <!-- Day view -->\n <template v-else-if=\"cell.type === 'day'\">\n <!-- <div v-if=\"isFirst || cell.date.getDate() === 1\" class=\"t-micro\">\n {{ dayjs(cell.date).format('MMM YYYY') }}\n </div> -->\n <div class=\"fw-medium\">{{ cell.date.getDate() }}</div>\n <div class=\"t-micro t-transp\">{{ dayjs(cell.date).format('ddd') }}</div>\n </template>\n \n <!-- Week view -->\n <template v-else-if=\"cell.type === 'week'\">\n <!-- <div v-if=\"isFirst || isMonthStart\" class=\"t-micro\">\n {{ dayjs(cell.start).format('MMM YYYY') }}\n </div> -->\n <div class=\"t-small\">{{ dayjs(cell.start).format('D') }}-{{ dayjs(cell.end).format('D') }}</div>\n <div class=\"t-micro t-transp\">W{{ weekNumber }}</div>\n </template>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue'\nimport dayjs from 'dayjs'\nimport weekOfYear from 'dayjs/plugin/weekOfYear.js'\n\ndayjs.extend(weekOfYear)\n\nconst props = defineProps({\n cell: { type: Object, required: true },\n view: { type: String, required: true },\n index: { type: Number, default: 0 }\n})\n\nconst isFirst = computed(() => props.index === 0)\n\nconst isMonthStart = computed(() => {\n if (props.cell.type !== 'week') return false\n return props.cell.start.getDate() <= 7 && props.cell.start.getDay() === 0\n})\n\nconst weekNumber = computed(() => {\n if (props.cell.type !== 'week') return null\n return dayjs(props.cell.start).week()\n})\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmCA,UAAM,OAAO,UAAU;AAEvB,UAAM,QAAQ;AAMd,UAAM,UAAU,SAAS,MAAM,MAAM,UAAU,CAAC;AAE3B,aAAS,MAAM;AAClC,UAAI,MAAM,KAAK,SAAS,OAAQ,QAAO;AACvC,aAAO,MAAM,KAAK,MAAM,QAAO,KAAM,KAAK,MAAM,KAAK,MAAM,aAAa;AAAA,IAC1E,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,KAAK,SAAS,OAAQ,QAAO;AACvC,aAAO,MAAM,MAAM,KAAK,KAAK,EAAE,KAAI;AAAA,IACrC,CAAC;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,7 @@ import { computed, ref, watch, createElementBlock, openBlock, createElementVNode
|
|
|
2
2
|
import dayjs from "../../../../../../../../_virtual/dayjs.min.js";
|
|
3
3
|
import _sfc_main$2 from "../../../../../../components/Tab/Tab.vue2.js";
|
|
4
4
|
import _sfc_main$3 from "../../../../../../components/Button/Button.vue2.js";
|
|
5
|
-
import _sfc_main$4 from "../../../../../../components/Dropdown/Dropdown.
|
|
5
|
+
import _sfc_main$4 from "../../../../../../components/Dropdown/Dropdown.vue2.js";
|
|
6
6
|
import Calendar from "../../../../../../components/Calendar/Calendar.vue2.js";
|
|
7
7
|
import _sfc_main$1 from "./DateLabel.vue.js";
|
|
8
8
|
import IconNext from "../../../../../icons/navigation/IconChevronRight.vue.js";
|
|
@@ -98,7 +98,7 @@ const _sfc_main = {
|
|
|
98
98
|
_cache[4] || (_cache[4] = createElementVNode("h2", { class: "mn-r-medium" }, "Rents", -1)),
|
|
99
99
|
createElementVNode("button", {
|
|
100
100
|
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({ name: "Organization_Create Rent", params: { _id: unref(route).params._id } })),
|
|
101
|
-
class: "radius-
|
|
101
|
+
class: "radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second"
|
|
102
102
|
}, " + "),
|
|
103
103
|
createElementVNode("div", _hoisted_3, [
|
|
104
104
|
createElementVNode("button", {
|