@ozdao/martyrs 0.2.571 → 0.2.574
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/loader.js +30 -0
- 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/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 +3 -3
- 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/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
- 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 +7 -7
- 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 +6 -6
- 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 +9 -9
- 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 +23 -23
- 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 +4 -4
- 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 +18 -18
- 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 +7 -7
- 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 +3 -3
- 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 +10 -10
- 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 +5 -5
- 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 +2 -2
- 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 +23 -23
- 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 +26 -26
- 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 +26 -26
- 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 +2 -2
- 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 +6 -6
- 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 +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.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 +3 -3
- 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 +8 -8
- 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/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 +2 -2
- 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 +23 -23
- 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/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/SelectMulti/SelectMulti.vue2.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":"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGA,UAAM,QAAQ;AAiCd,UAAM,YAAY,IAAI,IAAI;AAC1B,UAAM,aAAa,IAAI,CAAC;AAGxB,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,OAAO,MAAM,MAAM,KAAK,OAAK,EAAE,UAAU,MAAM,IAAI;AACzD,aAAO,MAAM,SAAS;AAAA,IACxB,CAAC;AAGD,UAAM,eAAe,SAAS,MAAM;AAClC,UAAI,CAAC,MAAM,UAAW,QAAO,CAAA;AAE7B,YAAM,EAAE,OAAO,IAAG,IAAK,MAAM;AAC7B,YAAM,QAAQ,CAAA;AAEd,cAAQ,MAAM,MAAI;AAAA,QAChB,KAAK;AAEH,gBAAM,WAAW,IAAI,KAAK,KAAK;AAC/B,mBAAS,SAAS,GAAG,GAAG,GAAG,CAAC;AAG5B,mBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,kBAAM,WAAW,IAAI,KAAK,QAAQ;AAClC,qBAAS,SAAS,GAAG,GAAG,GAAG,CAAC;AAC5B,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,KAAK,GAAG,SAAS,QAAO,CAAE,IAAI,CAAC;AAAA,YACzC,CAAS;AAAA,UACH;AAEA;AAAA,QAEF,KAAK;AACH,mBAAS,IAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,EAAE,QAAQ,EAAE,QAAO,IAAK,CAAC,GAAG;AAClE,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,MAAM,IAAI,KAAK,CAAC;AAAA,cAChB,KAAK,EAAE,QAAO;AAAA,YACxB,CAAS;AAAA,UACH;AACA;AAAA,QAEF,KAAK;AACH,gBAAM,YAAY,IAAI,KAAK,KAAK;AAChC,oBAAU,QAAQ,MAAM,QAAO,IAAK,MAAM,OAAM,CAAE;AAElD,gBAAM,cAAc,IAAI,KAAK,SAAS;AACtC,iBAAO,eAAe,KAAK;AACzB,kBAAM,UAAU,IAAI,KAAK,WAAW;AACpC,oBAAQ,QAAQ,YAAY,QAAO,IAAK,CAAC;AAEzC,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,OAAO,IAAI,KAAK,WAAW;AAAA,cAC3B,KAAK,IAAI,KAAK,OAAO;AAAA,cACrB,KAAK,YAAY,QAAO;AAAA,YAClC,CAAS;AAED,wBAAY,QAAQ,YAAY,QAAO,IAAK,CAAC;AAAA,UAC/C;AACA;AAAA,MACN;AAEE,aAAO;AAAA,IACT,CAAC;AAMD,UAAM,iBAAiB,CAAC,KAAK,SAAS;AACpC,aAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,SAAS,QAAQ,UAAU,GAAG,GAAG,GAAG;AAAA,IACrE;AAGA,UAAM,SAAS,SAAS,MAAM;AAC5B,YAAM,MAAM,oBAAI,IAAG;AAEnB,YAAM,MAAM,QAAQ,UAAQ;AAC1B,cAAM,MAAM,eAAe,MAAM,MAAM,OAAO,KAAK;AAEnD,YAAI,CAAC,IAAI,IAAI,GAAG,GAAG;AACjB,cAAI,IAAI,KAAK;AAAA,YACX;AAAA,YACA,OAAO;AAAA,YACP,OAAO,CAAA;AAAA,YACP,QAAQ,eAAe,MAAM,MAAM,SAAS;AAAA,UACpD,CAAO;AAAA,QACH;AAEA,YAAI,IAAI,GAAG,EAAE,MAAM,KAAK,IAAI;AAAA,MAC9B,CAAC;AAED,aAAO,MAAM,KAAK,IAAI,OAAM,CAAE;AAAA,IAChC,CAAC;AAGD,UAAM,eAAe,CAAC,SAAS;AAC7B,YAAM,UAAU,CAAA;AAChB,YAAM,MAAM,MAAK;AAEjB,cAAQ,KAAK,MAAI;AAAA,QACf,KAAK;AACH,cAAI,MAAM,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,KAAK,KAAK,SAAS,IAAI,KAAI,GAAI;AACnE,oBAAQ,KAAK,gBAAgB;AAAA,UAC/B,WAAW,MAAM,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,GAAG;AAC9C,oBAAQ,KAAK,UAAU;AAAA,UACzB;AACA;AAAA,QAEF,KAAK;AACH,gBAAM,MAAM,MAAM,KAAK,IAAI,EAAE,IAAG;AAChC,cAAI,QAAQ,KAAK,QAAQ,EAAG,SAAQ,KAAK,UAAU;AACnD,cAAI,MAAM,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAG,SAAQ,KAAK,gBAAgB;AACtE;AAAA,QAEF,KAAK;AACH,cAAI,IAAI,QAAQ,KAAK,KAAK,KAAK,IAAI,SAAS,KAAK,GAAG,GAAG;AACrD,oBAAQ,KAAK,gBAAgB;AAAA,UAC/B;AACA;AAAA,MACN;AAEE,aAAO,QAAQ,KAAK,GAAG;AAAA,IACzB;AAGA,UAAM,cAAc,CAAC,UAAU;AAC7B,YAAM,IAAI,MAAM,UAAU;AAC1B,YAAM,MAAM;AAAA,QACV,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAS;AAAA,MACb;AACE,aAAO,IAAI,CAAC,KAAK,IAAI;AAAA,IACvB;AAGA,UAAM,UAAU,CAAC,UAAU;AACzB,YAAM,SAAS,CAAA;AACf,YAAM,OAAO,CAAA;AAEb,YAAM,MAAM,QAAQ,UAAQ;AAC1B,YAAI;AACF,gBAAM,QAAQ,eAAe,MAAM,MAAM,QAAQ;AACjD,gBAAM,MAAM,eAAe,MAAM,MAAM,MAAM;AAE7C,cAAI,CAAC,SAAS,CAAC,IAAK;AAEpB,gBAAM,IAAI,iBAAiB,OAAO,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,EAAE,OAAM;AACvE,gBAAM,IAAI,eAAe,OAAO,IAAI,KAAK,GAAG,IAAI,MAAM,GAAG,EAAE,OAAM;AAEjE,cAAI,MAAM,EAAE,QAAO,CAAE,KAAK,MAAM,EAAE,QAAO,CAAE,GAAG;AAC5C,oBAAQ,KAAK,0BAA0B,eAAe,MAAM,MAAM,KAAK,CAAC,KAAK,EAAE,OAAO,IAAG,CAAE;AAC3F;AAAA,UACF;AAEF,kBAAQ,IAAI,oBAAoB;AAAA,YAC9B,IAAI,eAAe,MAAM,MAAM,KAAK;AAAA,YACpC,OAAO;AAAA,YACP,KAAK;AAAA,YACL,WAAW,MAAM;AAAA,UACvB,CAAK;AAGD,cAAI,IAAI,MAAM,UAAU,SAAS,IAAI,MAAM,UAAU,KAAK;AACxD,oBAAQ,IAAI,sCAAsC;AAClD;AAAA,UACF;AAGA,cAAI,OAAO;AACX,cAAI,QAAQ;AAGZ,gBAAM,WAAW,UAAU,QAAQ;AAEnC,kBAAQ,MAAM,MAAI;AAAA,YAChB,KAAK;AACH,kBAAI,CAAC,aAAa,MAAM,OAAQ;AAGhC,oBAAM,YAAY,aAAa,MAAM,CAAC;AACtC,oBAAM,WAAW,IAAI,KAAK,UAAU,IAAI;AACxC,uBAAS,SAAS,GAAG,GAAG,GAAG,CAAC;AAG5B,oBAAM,WAAW,KAAK;AACtB,oBAAM,SAAS,KAAK,KAAK;AAGzB,oBAAM,WAAW,IAAI,KAAK,QAAQ;AAClC,uBAAS,SAAS,GAAG,GAAG,GAAG,CAAC;AAC5B,oBAAM,SAAS,IAAI,KAAK,QAAQ;AAChC,qBAAO,SAAS,IAAI,IAAI,IAAI,GAAG;AAE/B,oBAAM,eAAe,IAAI,WAAW,WAAW;AAC/C,oBAAM,aAAa,IAAI,SAAS,SAAS;AAGzC,oBAAM,cAAc,eAAe,YAAY;AAC/C,oBAAM,YAAY,aAAa,YAAY;AAG3C,oBAAM,eAAe,KAAK,IAAI,GAAG,UAAU;AAC3C,oBAAM,aAAa,KAAK,IAAI,IAAI,QAAQ;AAGxC,kBAAI,cAAc,cAAc;AAC9B;AAAA,cACF;AAGA,qBAAO,eAAe,UAAU;AAChC,uBAAS,aAAa,gBAAgB,UAAU;AAGhD,sBAAQ,KAAK,IAAI,OAAO,QAAQ;AAEhC;AAAA,YAEF,KAAK;AACH,oBAAM,WAAW,aAAa,MAAM,CAAC,GAAG;AACxC,kBAAI,CAAC,SAAU;AAEf,oBAAM,gBAAgB,IAAI,KAAK,QAAQ;AACvC,4BAAc,SAAS,GAAG,GAAG,GAAG,CAAC;AAGjC,oBAAM,QAAQ,KAAK,KAAK,KAAK;AAC7B,oBAAM,iBAAiB,IAAI,iBAAiB;AAC5C,oBAAM,eAAe,IAAI,iBAAiB;AAG1C,oBAAM,cAAc,aAAa,MAAM;AACvC,oBAAM,kBAAkB,KAAK,IAAI,GAAG,aAAa;AACjD,oBAAM,gBAAgB,KAAK,IAAI,aAAa,WAAW;AAGvD,kBAAI,iBAAiB,gBAAiB;AAEtC,qBAAO,kBAAkB,UAAU;AACnC,uBAAS,gBAAgB,mBAAmB,UAAU;AAGtD,sBAAQ,KAAK,IAAI,OAAO,QAAQ;AAChC;AAAA,YAEF,KAAK;AACH,oBAAM,YAAY,aAAa,MAAM,CAAC,GAAG;AACzC,kBAAI,CAAC,UAAW;AAGhB,oBAAM,SAAS,IAAI,KAAK,KAAK,KAAK;AAClC,oBAAM,kBAAkB,IAAI,aAAa;AACzC,oBAAM,gBAAgB,IAAI,aAAa;AAGvC,oBAAM,eAAe,aAAa,MAAM;AACxC,oBAAM,mBAAmB,KAAK,IAAI,GAAG,cAAc;AACnD,oBAAM,iBAAiB,KAAK,IAAI,cAAc,YAAY;AAG1D,kBAAI,kBAAkB,iBAAkB;AAExC,qBAAO,mBAAmB,UAAU;AACpC,uBAAS,iBAAiB,oBAAoB,UAAU;AAGxD,sBAAQ,KAAK,IAAI,OAAO,QAAQ;AAChC;AAAA,UACR;AAGI,cAAI,MAAM;AACV,cAAI,SAAS;AAEb,iBAAO,CAAC,QAAQ;AACd,gBAAI,CAAC,KAAK,GAAG,EAAG,MAAK,GAAG,IAAI,CAAA;AAE5B,kBAAM,UAAU,KAAK,GAAG,EAAE;AAAA,cAAK,OAC5B,KAAK,EAAE,OAAO,KAAK,EAAE;AAAA,YAC9B;AAEM,gBAAI,CAAC,SAAS;AACZ,mBAAK,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAC,CAAE;AACnC,uBAAS;AAAA,YACX,OAAO;AACL;AAAA,YACF;AAAA,UACF;AAEE,iBAAO,KAAK;AAAA,YACV,KAAK,GAAG,eAAe,MAAM,MAAM,KAAK,CAAC,IAAI,EAAE,QAAO,CAAE;AAAA,YACxD;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,eAAe,MAAM,MAAM,SAAS,KAAK;AAAA,UACzD,CAAO;AAAA,QACH,SAAS,OAAO;AACd,kBAAQ,MAAM,yBAAyB,eAAe,MAAM,MAAM,KAAK,CAAC,KAAK,KAAK;AAAA,QACpF;AAAA,MACF,CAAC;AAED,cAAQ,IAAI,sBAAsB,MAAM;AACxC,aAAO;AAAA,IACT;AAwCA,UAAM,eAAe,CAAC,UAAU;AAC9B,UAAI,CAAC,UAAU,MAAO;AAEtB,YAAM,KAAK,MAAM;AACjB,iBAAW,QAAQ,GAAG;AAAA,IACxB;AAGA,gBAAY,MAAM;AAAA,IAElB,CAAC;AAGD,UAAM,eAAe,CAAC,eAAe;AACnC,UAAI,CAAC,UAAU,MAAO;AAEtB,eAAS,MAAM;AACb,cAAM,QAAQ,aAAa;AAC3B,YAAI,CAAC,MAAM,OAAQ;AAEnB,YAAI,YAAY;AAEhB,gBAAQ,MAAM,MAAI;AAAA,UAChB,KAAK;AACH,wBAAY,MAAM;AAAA,cAAU,OAC1B,EAAE,SAAS,UACX,MAAM,EAAE,IAAI,EAAE,OAAO,YAAY,KAAK,KACtC,EAAE,SAAS,WAAW,SAAQ;AAAA,YACxC;AACQ;AAAA,UAEF,KAAK;AACH,wBAAY,MAAM;AAAA,cAAU,OAC1B,EAAE,SAAS,SACX,MAAM,EAAE,IAAI,EAAE,OAAO,YAAY,KAAK;AAAA,YAChD;AACQ;AAAA,UAEF,KAAK;AACH,wBAAY,MAAM;AAAA,cAAU,OAC1B,EAAE,SAAS,UACX,cAAc,EAAE,SAChB,cAAc,EAAE;AAAA,YAC1B;AACQ;AAAA,QACR;AAEI,YAAI,aAAa,GAAG;AAClB,gBAAM,YAAY,YAAY,UAAU,QAAQ,UAAU,MAAM,cAAc;AAC9E,oBAAU,MAAM,aAAa,KAAK,IAAI,GAAG,SAAS;AAAA,QACpD;AAAA,MACF,CAAC;AAAA,IACH;AAGA,UAAM,MAAM,MAAM,MAAM,MAAM;AAE5B,mBAAa,MAAM,IAAI;AAAA,IACzB,CAAC;AAGD,UAAM,MAAM,MAAM,MAAM,CAAC,YAAY;AAEnC,mBAAa,OAAO;AAAA,IACtB,CAAC;AAED,UAAM,MAAM,MAAM,WAAW,MAAM;AAEjC,UAAI,UAAU,OAAO;AACnB,kBAAU,MAAM,aAAa;AAAA,MAC/B;AAAA,IACF,GAAG,EAAE,MAAM,KAAI,CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -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;;;;;;;;;;;;;;;;;"}
|
|
@@ -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", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rents.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/pages/Rents.vue"],"sourcesContent":["<template>\n <div class=\"pd-medium mobile:pd-thin bg-white\">\n <header class=\"mn-b-medium flex-v-center flex-nowrap flex\">\n <h2 class=\"mn-r-medium\">Rents</h2>\n <button \n @click=\"$router.push({ name: 'Organization_Create Rent', params: {_id: route.params._id}})\" \n class=\"radius-
|
|
1
|
+
{"version":3,"file":"Rents.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/pages/Rents.vue"],"sourcesContent":["<template>\n <div class=\"pd-medium mobile:pd-thin bg-white\">\n <header class=\"mn-b-medium flex-v-center flex-nowrap flex\">\n <h2 class=\"mn-r-medium\">Rents</h2>\n <button \n @click=\"$router.push({ name: 'Organization_Create Rent', params: {_id: route.params._id}})\" \n class=\"radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second\"\n >\n +\n </button>\n <div class=\"mn-l-auto flex-v-center\">\n <button \n @click=\"toggleView\" \n class=\"pd-small radius-small bg-light mn-r-small\"\n >\n {{ isCalendarView ? 'List View' : 'Calendar View' }}\n </button>\n </div>\n </header>\n\n <Feed\n :search=\"true\"\n :keepSlotVisible=\"true\"\n :states=\"{\n empty: {\n title: 'No Rents Found',\n description: 'Currently, there are no rents available.'\n }\n }\"\n :store=\"{ read: (options) => rents.actions.read(options) }\"\n :options=\"{\n owner: route.params._id,\n startDate: dateRange.start.toISOString(),\n endDate: dateRange.end.toISOString()\n }\"\n v-slot=\"{ items }\"\n > \n <GanttChart\n v-model:view=\"view\"\n v-model:date=\"date\"\n v-model:dateRange=\"dateRange\"\n :items=\"items\"\n :loading=\"loading\"\n :title-key=\"'productDetails.name'\"\n :start-key=\"'startDate'\"\n :end-key=\"'endDate'\"\n :status-key=\"'status'\"\n :id-key=\"'_id'\"\n :group-by=\"'productDetails.name'\"\n @load-more=\"handleLoadMore\"\n @item-click=\"handleItemClick\"\n @today=\"handleToday\"\n />\n\n <!-- <CardRent\n v-else\n v-for=\"rent in items\"\n :key=\"rent._id\"\n :rent=\"rent\"\n class=\"bg-light pd-small mn-b-thin radius-small\"\n /> -->\n </Feed>\n </div>\n</template>\n\n<script setup>\nimport dayjs from 'dayjs'\n\nimport Tab from '@martyrs/src/components/Tab/Tab.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\n\nimport CardRent from '@martyrs/src/modules/rents/views/components/blocks/CardRent.vue';\n\nimport GanttChart from '@martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue';\n\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport * as rents from '@martyrs/src/modules/rents/views/store/rents.store';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst isCalendarView = ref(true);\n\n\n// Set initial date range - current month plus 15 days before and 45 days after\nconst view = ref('days')\nconst date = ref(new Date())\nconst loading = ref(false)\n\nconst dateRange = computed(() => {\n const d = dayjs(date.value)\n \n switch (view.value) {\n case 'hours':\n // Show only the current day in hours view\n return {\n start: d.startOf('day').toDate(),\n end: d.endOf('day').toDate()\n }\n \n case 'days':\n return {\n start: d.startOf('month').toDate(),\n end: d.endOf('month').toDate()\n }\n \n case 'weeks':\n return {\n start: d.subtract(1, 'month').startOf('week').toDate(),\n end: d.add(2, 'months').endOf('week').toDate()\n }\n \n default:\n return {\n start: d.startOf('month').toDate(),\n end: d.endOf('month').toDate()\n }\n }\n})\n\n// Handle load more\nconst handleLoadMore = async (direction) => {\n console.log('Loading more:', direction)\n \n loading.value = true\n \n try {\n // Only update date if it's navigation (not refresh)\n if (direction !== 'refresh') {\n const d = dayjs(date.value)\n let newDate\n \n switch (view.value) {\n case 'hours':\n newDate = direction === 'forward' \n ? d.add(1, 'day').toDate()\n : d.subtract(1, 'day').toDate()\n break\n case 'days':\n newDate = direction === 'forward'\n ? d.add(1, 'month').toDate()\n : d.subtract(1, 'month').toDate()\n break\n case 'weeks':\n newDate = direction === 'forward'\n ? d.add(1, 'month').toDate()\n : d.subtract(1, 'month').toDate()\n break\n }\n \n date.value = newDate\n }\n \n // Load data for the current date range\n await rents.actions.read({\n owner: route.params._id,\n startDate: dateRange.value.start.toISOString(),\n endDate: dateRange.value.end.toISOString()\n })\n } catch (error) {\n console.error('Error loading more data:', error)\n } finally {\n loading.value = false\n }\n}\n\n// Handle item click\nconst handleItemClick = (item) => {\n console.log('Item clicked:', item)\n}\n\n// Handle today\nconst handleToday = () => {\n const now = new Date()\n date.value = now\n \n // For hours view, ensure we're showing the current hour\n if (view.value === 'hours') {\n // Update date to current time to trigger proper centering\n date.value = new Date()\n }\n}\n\nconst today = new Date();\nconst calendarStartDate = ref(new Date(today));\ncalendarStartDate.value.setDate(today.getDate() - 30);\n\nconst calendarEndDate = ref(new Date(today));\ncalendarEndDate.value.setDate(today.getDate() + 30);\n\n// Toggle between calendar and list view\nconst toggleView = () => {\n isCalendarView.value = !isCalendarView.value;\n};\n\n// Navigate to rent details page\nconst viewRentDetails = (rent) => {\n router.push({ name: 'Rent Details', params: { _id: rent._id } });\n};\n\n// Load more data when scrolling the Gantt chart\nconst loadMoreData = async ({ direction, date }) => {\n // alert(direction)\n console.log('scroll direction is', direction)\n console.log('current date is', date)\n // Update the visible range\n if (direction === 'forward') {\n calendarEndDate.value = date;\n } else {\n calendarStartDate.value = date;\n }\n // Here you can add logic to fetch more rents if they fall within the new date range\n try {\n // You might need to adjust this depending on your API and data structure\n const startDateParam = new Date(calendarStartDate.value);\n startDateParam.setDate(startDateParam.getDate() - 30); // Fetch a bit more to cover edge cases\n \n const endDateParam = new Date(calendarEndDate.value);\n endDateParam.setDate(endDateParam.getDate() + 30);\n \n await rents.actions.read({\n owner: route.params._id,\n startDate: startDateParam.toISOString(),\n endDate: endDateParam.toISOString()\n });\n } catch (error) {\n console.error('Error loading additional rent data:', error);\n }\n};\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":["rents.actions"],"mappings":"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"}
|
|
@@ -21,14 +21,14 @@ const _hoisted_5 = {
|
|
|
21
21
|
class: "aspect-1x1 h-3r radius-small o-hidden"
|
|
22
22
|
};
|
|
23
23
|
const _hoisted_6 = ["src"];
|
|
24
|
-
const _hoisted_7 = { class: "
|
|
24
|
+
const _hoisted_7 = { class: "fw-medium" };
|
|
25
25
|
const _hoisted_8 = {
|
|
26
26
|
key: 0,
|
|
27
27
|
class: "t-small t-transp"
|
|
28
28
|
};
|
|
29
29
|
const _hoisted_9 = { class: "mn-l-auto" };
|
|
30
30
|
const _hoisted_10 = { class: "flex gap-small" };
|
|
31
|
-
const _hoisted_11 = { class: "gap-thin flex-v-center flex-
|
|
31
|
+
const _hoisted_11 = { class: "gap-thin flex-v-center flex-justify-start flex" };
|
|
32
32
|
const _hoisted_12 = { class: "mn-r-auto" };
|
|
33
33
|
const _sfc_main = {
|
|
34
34
|
__name: "RentsEdit",
|
|
@@ -239,7 +239,7 @@ const _sfc_main = {
|
|
|
239
239
|
return openBlock(), createElementBlock("div", {
|
|
240
240
|
key: index,
|
|
241
241
|
onClick: ($event) => addVariantToRent(variant),
|
|
242
|
-
class: "w-100 cursor-pointer hover
|
|
242
|
+
class: "w-100 cursor-pointer hover:scale-[1.05] bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin"
|
|
243
243
|
}, [
|
|
244
244
|
variant.images && variant.images.length ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
245
245
|
createElementVNode("img", {
|
|
@@ -334,7 +334,7 @@ const _sfc_main = {
|
|
|
334
334
|
createElementVNode("h3", _hoisted_12, "Total Days: " + toDisplayString(totalDays.value), 1),
|
|
335
335
|
createVNode(_sfc_main$5, {
|
|
336
336
|
submit: onSubmit,
|
|
337
|
-
class: "pd-small radius-medium bg-main t-black uppercase
|
|
337
|
+
class: "pd-small radius-medium bg-main t-black uppercase fw-medium"
|
|
338
338
|
}, {
|
|
339
339
|
default: withCtx(() => _cache[4] || (_cache[4] = [
|
|
340
340
|
createTextVNode(" Save ")
|
|
@@ -343,7 +343,7 @@ const _sfc_main = {
|
|
|
343
343
|
}),
|
|
344
344
|
createVNode(_sfc_main$5, {
|
|
345
345
|
submit: onReset,
|
|
346
|
-
class: "pd-small radius-medium t-white bg-second uppercase
|
|
346
|
+
class: "pd-small radius-medium t-white bg-second uppercase fw-medium"
|
|
347
347
|
}, {
|
|
348
348
|
default: withCtx(() => _cache[5] || (_cache[5] = [
|
|
349
349
|
createTextVNode(" Reset ")
|
|
@@ -353,7 +353,7 @@ const _sfc_main = {
|
|
|
353
353
|
unref(route).params._id ? (openBlock(), createBlock(_sfc_main$5, {
|
|
354
354
|
key: 0,
|
|
355
355
|
submit: onDelete,
|
|
356
|
-
class: "pd-small radius-medium t-white bg-red uppercase
|
|
356
|
+
class: "pd-small radius-medium t-white bg-red uppercase fw-medium"
|
|
357
357
|
}, {
|
|
358
358
|
default: withCtx(() => _cache[6] || (_cache[6] = [
|
|
359
359
|
createTextVNode(" Delete ")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RentsEdit.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/pages/RentsEdit.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <header class=\"mn-b-medium gap-small flex-v-center flex-nowrap flex\">\n <h2>{{ route.params._id ? 'Edit' : 'Add' }} Rent</h2>\n </header>\n\n <Popup\n title=\"Add Product to Rent\"\n @close-popup=\"closeProductsPopup\"\n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :search=\"{\n class: 'bg-light radius-small'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'No products available for rent.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id,\n listing: 'rent'\n }\"\n v-slot=\"{ items }\"\n class=\"flex-column flex gap-thin h-max-20r o-scroll\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\"\n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"false\"\n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity || 1\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-light pd-small radius-small w-100\"\n />\n </Feed>\n </Popup>\n\n <!-- Popup for selecting variant of the product -->\n <Popup\n title=\"Select variant\"\n @close-popup=\"closeVariantsPopup\"\n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct._id,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div\n v-for=\"(variant, index) in items\"\n :key=\"index\"\n @click=\"addVariantToRent(variant)\"\n class=\"w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img\n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\"\n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"t-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.price || variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block title=\"Rent Period\" class=\"mn-b-semi\">\n <div class=\"flex gap-small\">\n <Field v-model:field=\"rents.state.current.startDate\" label=\"Start Date\" type=\"date\" class=\"w-100 bg-white radius-small pd-medium\" />\n <Field v-model:field=\"rents.state.current.endDate\" label=\"End Date\" type=\"date\" class=\"w-100 bg-white radius-small pd-medium\" />\n </div>\n </Block>\n\n <Block\n title=\"Rented Product\"\n :actions=\"rents.state.current.product ? [] : [{ label: '+', function: openProductsPopup }]\"\n placeholder=\"No products added yet\"\n class=\"mn-b-semi\"\n >\n <CardOrderItem\n v-if=\"rents.state.current.product\"\n :key=\"rents.state.current.product._id\"\n :productId=\"rents.state.current.product._id\"\n :variantId=\"rents.state.current.product.variant\"\n :images=\"rents.state.current.product.images\"\n :name=\"rents.state.current.product.name\"\n :quantity=\"rents.state.current.product.quantity || 1\"\n :unit=\"rents.state.current.product.unit\"\n :dates=\"{\n start: rents.state.current.startDate,\n end: rents.state.current.endDate\n }\"\n :listing=\"rents.state.current.product.listing\"\n :price=\"rents.state.current.product.price\"\n :editable=\"false\"\n @click=\"() => rents.state.current.product = null\"\n class=\"mn-b-small radius-medium bg-white pd-small\"\n />\n </Block>\n\n <Block title=\"Comment\" class=\"mn-b-semi\">\n <Field v-model:field=\"rents.state.current.comment\" label=\"Comment\" type=\"textarea\" class=\"w-100 bg-white radius-small pd-medium\" /> \n </Block>\n\n <Block>\n <section class=\"gap-thin flex-v-center flex-nojustify flex\">\n <h3 class=\"mn-r-auto\">Total Days: {{ totalDays }}</h3>\n\n <Button\n :submit=\"onSubmit\"\n class=\"pd-small radius-medium bg-main t-black uppercase t-medium\"\n >\n Save\n </Button>\n\n <Button\n :submit=\"onReset\"\n class=\"pd-small radius-medium t-white bg-second uppercase t-medium\"\n >\n Reset\n </Button>\n\n <Button\n v-if=\"route.params._id\"\n :submit=\"onDelete\"\n class=\"pd-small radius-medium t-white bg-red uppercase t-medium\"\n >\n Delete\n </Button>\n </section>\n </Block>\n </div>\n</template>\n\n<script setup>\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n\nimport { computed, onMounted, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as rents from '@martyrs/src/modules/rents/views/store/rents.store';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\nimport variants from '@martyrs/src/modules/products/store/variants.store.js';\n\nconst route = useRoute();\nconst router = useRouter();\nconst { formatPrice } = useGlobalMixins();\n\nconst Products = ref(products.state.all);\nconst isOpenProductsPopup = ref(false);\nconst isVariantsPopupOpen = ref(false);\nconst selectedProduct = ref({});\n\nconst totalDays = computed(() => {\n const start = new Date(rents.state.current.startDate);\n const end = new Date(rents.state.current.endDate);\n if (!start || !end) return 0;\n const diffTime = Math.abs(end - start);\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n});\n\nfunction openProductsPopup() {\n isOpenProductsPopup.value = true;\n}\n\nfunction closeProductsPopup() {\n isOpenProductsPopup.value = false;\n}\n\nfunction closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = {};\n}\n\nfunction selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n\n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToRent(product.variants[0]);\n return;\n }\n\n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n}\n\nfunction formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n if (attrs?.length) {\n return `${product.name} / ${attrs.join(' / ')}`;\n }\n\n // Если variant.name уже содержит product.name, не дублируем\n return variant.name || product.name;\n}\n\nfunction addVariantToRent(variant) {\n // Create product object with variant information\n rents.state.current.product = {\n _id: selectedProduct.value._id,\n variant: variant._id,\n name: formatProductName(selectedProduct.value, variant),\n images: variant.images || selectedProduct.value.images || [],\n price: variant.price || variant.cost || 0,\n unit: variant.unit || 'pcs',\n quantity: 1,\n listing: 'rent'\n };\n\n closeVariantsPopup();\n}\n\nfunction updateItem(index, updatedItem) {\n rents.state.current.items[index] = { product: updatedItem.product._id || updatedItem.product, quantity: updatedItem.quantity || 1 };\n}\n\nfunction deleteItem(index) {\n try {\n rents.state.current.items.splice(index, 1);\n } catch (error) {\n console.error('Ошибка при удалении элемента:', error);\n }\n}\n\nonMounted(async () => {\n try {\n if (route.params.rent) {\n await rents.actions.read({ _id: route.params.rent });\n } else {\n rents.mutations.clean();\n }\n\n await products.actions.read({ owner: route.params._id, listing: 'rent', limit: 100 });\n Products.value = products.state.all;\n } catch (error) {\n console.error('Ошибка при загрузке данных:', error);\n }\n});\n\nasync function onSubmit() {\n try {\n if (route.params.rent) {\n // Update existing rent\n const rentData = {\n _id: rents.state.current._id,\n product: rents.state.current.product._id,\n variant: rents.state.current.product.variant,\n startDate: new Date(rents.state.current.startDate),\n endDate: new Date(rents.state.current.endDate),\n comment: rents.state.current.comment,\n status: rents.state.current.status\n };\n await rents.actions.update(rentData);\n } else {\n // Create new rent - БЕЗ _id!\n const rentData = {\n product: rents.state.current.product._id,\n variant: rents.state.current.product.variant,\n startDate: new Date(rents.state.current.startDate),\n endDate: new Date(rents.state.current.endDate),\n comment: rents.state.current.comment || '',\n status: rents.state.current.status || 'active',\n creator: { type: 'user', target: auth.state.user._id },\n owner: { type: 'organization', target: route.params._id }\n };\n await rents.actions.create(rentData);\n }\n router.push({ name: 'Rents', params: { _id: route.params._id } });\n } catch (error) {\n console.error('Ошибка при отправке данных:', error);\n }\n}\n\nasync function onReset() {\n try {\n if (route.params._id) {\n await rents.actions.read({ _id: route.params._id });\n } else {\n rents.mutations.clean();\n }\n } catch (error) {\n console.error('Ошибка при сбросе данных:', error);\n }\n}\n\nasync function onDelete() {\n try {\n await rents.actions.delete(route.params._id);\n router.push({ name: 'Rents', params: { _id: route.params._id } });\n } catch (error) {\n console.error('Ошибка при удалении:', error);\n }\n}\n\n</script>\n\n<style lang=\"scss\">\n.round-stat {\n padding: 1rem;\n border-radius: 5rem;\n width: 3rem;\n height: 3rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border: 1px solid rgba(0,0,0,0.1);\n}\n</style>"],"names":["products.state","rents.state","rents.actions","rents.mutations","products.actions","auth.state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RentsEdit.vue.js","sources":["../../../../../../../../src/modules/rents/views/components/pages/RentsEdit.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <header class=\"mn-b-medium gap-small flex-v-center flex-nowrap flex\">\n <h2>{{ route.params._id ? 'Edit' : 'Add' }} Rent</h2>\n </header>\n\n <Popup\n title=\"Add Product to Rent\"\n @close-popup=\"closeProductsPopup\"\n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :search=\"{\n class: 'bg-light radius-small'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'No products available for rent.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id,\n listing: 'rent'\n }\"\n v-slot=\"{ items }\"\n class=\"flex-column flex gap-thin h-max-20r o-scroll\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\"\n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"false\"\n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity || 1\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-light pd-small radius-small w-100\"\n />\n </Feed>\n </Popup>\n\n <!-- Popup for selecting variant of the product -->\n <Popup\n title=\"Select variant\"\n @close-popup=\"closeVariantsPopup\"\n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct._id,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div\n v-for=\"(variant, index) in items\"\n :key=\"index\"\n @click=\"addVariantToRent(variant)\"\n class=\"w-100 cursor-pointer hover:scale-[1.05] bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img\n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\"\n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"fw-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.price || variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block title=\"Rent Period\" class=\"mn-b-semi\">\n <div class=\"flex gap-small\">\n <Field v-model:field=\"rents.state.current.startDate\" label=\"Start Date\" type=\"date\" class=\"w-100 bg-white radius-small pd-medium\" />\n <Field v-model:field=\"rents.state.current.endDate\" label=\"End Date\" type=\"date\" class=\"w-100 bg-white radius-small pd-medium\" />\n </div>\n </Block>\n\n <Block\n title=\"Rented Product\"\n :actions=\"rents.state.current.product ? [] : [{ label: '+', function: openProductsPopup }]\"\n placeholder=\"No products added yet\"\n class=\"mn-b-semi\"\n >\n <CardOrderItem\n v-if=\"rents.state.current.product\"\n :key=\"rents.state.current.product._id\"\n :productId=\"rents.state.current.product._id\"\n :variantId=\"rents.state.current.product.variant\"\n :images=\"rents.state.current.product.images\"\n :name=\"rents.state.current.product.name\"\n :quantity=\"rents.state.current.product.quantity || 1\"\n :unit=\"rents.state.current.product.unit\"\n :dates=\"{\n start: rents.state.current.startDate,\n end: rents.state.current.endDate\n }\"\n :listing=\"rents.state.current.product.listing\"\n :price=\"rents.state.current.product.price\"\n :editable=\"false\"\n @click=\"() => rents.state.current.product = null\"\n class=\"mn-b-small radius-medium bg-white pd-small\"\n />\n </Block>\n\n <Block title=\"Comment\" class=\"mn-b-semi\">\n <Field v-model:field=\"rents.state.current.comment\" label=\"Comment\" type=\"textarea\" class=\"w-100 bg-white radius-small pd-medium\" /> \n </Block>\n\n <Block>\n <section class=\"gap-thin flex-v-center flex-justify-start flex\">\n <h3 class=\"mn-r-auto\">Total Days: {{ totalDays }}</h3>\n\n <Button\n :submit=\"onSubmit\"\n class=\"pd-small radius-medium bg-main t-black uppercase fw-medium\"\n >\n Save\n </Button>\n\n <Button\n :submit=\"onReset\"\n class=\"pd-small radius-medium t-white bg-second uppercase fw-medium\"\n >\n Reset\n </Button>\n\n <Button\n v-if=\"route.params._id\"\n :submit=\"onDelete\"\n class=\"pd-small radius-medium t-white bg-red uppercase fw-medium\"\n >\n Delete\n </Button>\n </section>\n </Block>\n </div>\n</template>\n\n<script setup>\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n\nimport { computed, onMounted, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport * as rents from '@martyrs/src/modules/rents/views/store/rents.store';\nimport * as products from '@martyrs/src/modules/products/store/products.js';\nimport variants from '@martyrs/src/modules/products/store/variants.store.js';\n\nconst route = useRoute();\nconst router = useRouter();\nconst { formatPrice } = useGlobalMixins();\n\nconst Products = ref(products.state.all);\nconst isOpenProductsPopup = ref(false);\nconst isVariantsPopupOpen = ref(false);\nconst selectedProduct = ref({});\n\nconst totalDays = computed(() => {\n const start = new Date(rents.state.current.startDate);\n const end = new Date(rents.state.current.endDate);\n if (!start || !end) return 0;\n const diffTime = Math.abs(end - start);\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n});\n\nfunction openProductsPopup() {\n isOpenProductsPopup.value = true;\n}\n\nfunction closeProductsPopup() {\n isOpenProductsPopup.value = false;\n}\n\nfunction closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = {};\n}\n\nfunction selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n\n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToRent(product.variants[0]);\n return;\n }\n\n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n}\n\nfunction formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n if (attrs?.length) {\n return `${product.name} / ${attrs.join(' / ')}`;\n }\n\n // Если variant.name уже содержит product.name, не дублируем\n return variant.name || product.name;\n}\n\nfunction addVariantToRent(variant) {\n // Create product object with variant information\n rents.state.current.product = {\n _id: selectedProduct.value._id,\n variant: variant._id,\n name: formatProductName(selectedProduct.value, variant),\n images: variant.images || selectedProduct.value.images || [],\n price: variant.price || variant.cost || 0,\n unit: variant.unit || 'pcs',\n quantity: 1,\n listing: 'rent'\n };\n\n closeVariantsPopup();\n}\n\nfunction updateItem(index, updatedItem) {\n rents.state.current.items[index] = { product: updatedItem.product._id || updatedItem.product, quantity: updatedItem.quantity || 1 };\n}\n\nfunction deleteItem(index) {\n try {\n rents.state.current.items.splice(index, 1);\n } catch (error) {\n console.error('Ошибка при удалении элемента:', error);\n }\n}\n\nonMounted(async () => {\n try {\n if (route.params.rent) {\n await rents.actions.read({ _id: route.params.rent });\n } else {\n rents.mutations.clean();\n }\n\n await products.actions.read({ owner: route.params._id, listing: 'rent', limit: 100 });\n Products.value = products.state.all;\n } catch (error) {\n console.error('Ошибка при загрузке данных:', error);\n }\n});\n\nasync function onSubmit() {\n try {\n if (route.params.rent) {\n // Update existing rent\n const rentData = {\n _id: rents.state.current._id,\n product: rents.state.current.product._id,\n variant: rents.state.current.product.variant,\n startDate: new Date(rents.state.current.startDate),\n endDate: new Date(rents.state.current.endDate),\n comment: rents.state.current.comment,\n status: rents.state.current.status\n };\n await rents.actions.update(rentData);\n } else {\n // Create new rent - БЕЗ _id!\n const rentData = {\n product: rents.state.current.product._id,\n variant: rents.state.current.product.variant,\n startDate: new Date(rents.state.current.startDate),\n endDate: new Date(rents.state.current.endDate),\n comment: rents.state.current.comment || '',\n status: rents.state.current.status || 'active',\n creator: { type: 'user', target: auth.state.user._id },\n owner: { type: 'organization', target: route.params._id }\n };\n await rents.actions.create(rentData);\n }\n router.push({ name: 'Rents', params: { _id: route.params._id } });\n } catch (error) {\n console.error('Ошибка при отправке данных:', error);\n }\n}\n\nasync function onReset() {\n try {\n if (route.params._id) {\n await rents.actions.read({ _id: route.params._id });\n } else {\n rents.mutations.clean();\n }\n } catch (error) {\n console.error('Ошибка при сбросе данных:', error);\n }\n}\n\nasync function onDelete() {\n try {\n await rents.actions.delete(route.params._id);\n router.push({ name: 'Rents', params: { _id: route.params._id } });\n } catch (error) {\n console.error('Ошибка при удалении:', error);\n }\n}\n\n</script>\n\n<style lang=\"scss\">\n.round-stat {\n padding: 1rem;\n border-radius: 5rem;\n width: 3rem;\n height: 3rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border: 1px solid rgba(0,0,0,0.1);\n}\n</style>"],"names":["products.state","rents.state","rents.actions","rents.mutations","products.actions","auth.state"],"mappings":"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"}
|
|
@@ -2,11 +2,11 @@ import { createElementBlock, openBlock, createElementVNode, Fragment, renderList
|
|
|
2
2
|
import { actions, state } from "../../store/reports.js";
|
|
3
3
|
const _hoisted_1 = { class: "cols-3 mobile:cols-1 gap-thin" };
|
|
4
4
|
const _hoisted_2 = { class: "t-black p-small mn-b-small" };
|
|
5
|
-
const _hoisted_3 = { class: "pd-2px radius-big d-inline-block bg-light
|
|
5
|
+
const _hoisted_3 = { class: "pd-2px radius-big d-inline-block bg-light fw-semi" };
|
|
6
6
|
const _hoisted_4 = { class: "t-black p-small mn-b-small" };
|
|
7
|
-
const _hoisted_5 = { class: "pd-2px radius-big d-inline-block bg-light
|
|
7
|
+
const _hoisted_5 = { class: "pd-2px radius-big d-inline-block bg-light fw-semi" };
|
|
8
8
|
const _hoisted_6 = { class: "t-black p-small mn-b-small" };
|
|
9
|
-
const _hoisted_7 = { class: "pd-2px radius-big d-inline-block bg-light
|
|
9
|
+
const _hoisted_7 = { class: "pd-2px radius-big d-inline-block bg-light fw-semi" };
|
|
10
10
|
const _sfc_main = {
|
|
11
11
|
__name: "BackofficeReports",
|
|
12
12
|
setup(__props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeReports.vue.js","sources":["../../../../../../../src/modules/reports/components/pages/BackofficeReports.vue"],"sourcesContent":["<template>\n <div>\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"mn-r-medium\">Reports</h3> <!-- Updated this line -->\n </div>\n\n <div class=\"cols-3 mobile:cols-1 gap-thin\">\n <div \n v-for=\"report in state.all\"\n :key=\"report._id\"\n class=\"radius-medium pd-small bg-light\"\n >\n <!-- Here, you should update the properties of the report object to reflect the actual structure of a report -->\n <!-- For example, I'm using 'user', 'type', and 'reason'. You should replace them with actual report properties -->\n\n <p class=\"t-black p-small mn-b-small\">\n <span class=\"uppercase t-transp\">User</span>\n <br> \n <span class=\"pd-2px radius-big d-inline-block bg-light
|
|
1
|
+
{"version":3,"file":"BackofficeReports.vue.js","sources":["../../../../../../../src/modules/reports/components/pages/BackofficeReports.vue"],"sourcesContent":["<template>\n <div>\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"mn-r-medium\">Reports</h3> <!-- Updated this line -->\n </div>\n\n <div class=\"cols-3 mobile:cols-1 gap-thin\">\n <div \n v-for=\"report in state.all\"\n :key=\"report._id\"\n class=\"radius-medium pd-small bg-light\"\n >\n <!-- Here, you should update the properties of the report object to reflect the actual structure of a report -->\n <!-- For example, I'm using 'user', 'type', and 'reason'. You should replace them with actual report properties -->\n\n <p class=\"t-black p-small mn-b-small\">\n <span class=\"uppercase t-transp\">User</span>\n <br> \n <span class=\"pd-2px radius-big d-inline-block bg-light fw-semi\">{{report.user}}</span> <!-- Updated this line -->\n </p>\n\n <p class=\"t-black p-small mn-b-small\">\n <span class=\"uppercase t-transp\">Type</span>\n <br> \n <span class=\"pd-2px radius-big d-inline-block bg-light fw-semi\">{{report.type}}</span> <!-- Updated this line -->\n </p>\n\n <p class=\"t-black p-small mn-b-small\">\n <span class=\"uppercase t-transp\">Reason</span>\n <br> \n <span class=\"pd-2px radius-big d-inline-block bg-light fw-semi\">{{report.reason}}</span> <!-- Updated this line -->\n </p>\n\n <div class=\"gap-thin flex-nowrap flex\">\n <!-- Update buttons and actions as needed -->\n <button class=\"button-small w-100 bg-black t-white button\">\n Close Report\n </button>\n <button class=\"button-small w-100 bg-black t-white button\">\n Hide Content\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\nimport { actions as reportActions, state } from '../../store/reports'; // Update the import path\n\n// You might want to handle other lifecycle hooks or methods depending on your needs.\n// Here, I'll demonstrate using the 'deleteReport' method as an example.\n\nconst deleteReport = async (id) => {\n try {\n await reportActions.remove({ _id: id }); // Updated method name and parameter\n // Optionally, add a notification about successful deletion here\n } catch (error) {\n console.error(error);\n // Optionally, add a notification about the error here\n }\n};\n\n// Fetch all reports on component mount. This part depends on how your store is structured.\nreportActions.read(); // Updated method name\n</script>\n"],"names":["reportActions"],"mappings":";;;;;;;;;;;;AAiEAA,YAAc,KAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -78,7 +78,7 @@ const _sfc_main = {
|
|
|
78
78
|
"other"
|
|
79
79
|
],
|
|
80
80
|
placeholder: "Select reason",
|
|
81
|
-
class: "mn-b-small bg-white br-
|
|
81
|
+
class: "mn-b-small bg-white br-black-transp-10 br-1px uppercase pd-medium fw-semi bg-white t-black radius-medium"
|
|
82
82
|
}, null, 8, ["select"]),
|
|
83
83
|
_cache[5] || (_cache[5] = createElementVNode("p", { class: "p-regular mn-b-small" }, "Our moderators will review your report within 24 hours and take action if it violates our policies.", -1)),
|
|
84
84
|
createVNode(_sfc_main$2, {
|