@ozdao/martyrs 0.2.604 → 0.2.605
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/_virtual/dayjs.min.js +1 -1
- package/dist/_virtual/weekOfYear.js +1 -1
- package/dist/{abac-Blt8bUTL.js → abac-kz5xI99l.js} +1 -0
- package/dist/auth.server.js +52 -12
- package/dist/builder.js +67 -2
- package/dist/chats.server.js +2 -2
- package/dist/community.server.js +3 -3
- package/dist/core.server.js +2 -2
- package/dist/{core.websocket-Cl76z2wT.js → core.websocket-B2FA8gGl.js} +0 -2
- package/dist/{crud-BT5FIvQC.js → crud-Cwn0frBP.js} +8 -2
- package/dist/events.server.js +4 -4
- package/dist/files.server.js +1 -1
- package/dist/gallery.server.js +2 -2
- package/dist/governance.server.js +10 -10
- package/dist/{index-kvBwwb0w.js → index-CPACC651.js} +1 -1
- package/dist/inventory.server.js +4 -4
- package/dist/{mailing-DT7nbNjZ.js → mailing-BBCidXGr.js} +38 -2
- package/dist/marketplace.server.js +2 -2
- package/dist/martyrs/dist/martyrs.es3.js +1 -1
- package/dist/martyrs/dist/martyrs.es3.js.map +1 -1
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/dayjs.min.js +1 -1
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/dayjs.min.js.map +1 -1
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/plugin/weekOfYear.js.map +1 -1
- package/dist/{node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_ → martyrs/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.7_vue@3.5.13}/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js +305 -268
- package/dist/martyrs/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.7_vue@3.5.13/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +1 -0
- package/dist/martyrs/src/components/Address/Address.vue2.js +13 -13
- package/dist/martyrs/src/components/Address/Address.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +150 -143
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Chart/Chart.vue.js +296 -0
- package/dist/martyrs/src/components/Chart/Chart.vue.js.map +1 -0
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js +5 -6
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -1
- 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 +2 -2
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
- package/dist/martyrs/src/components/EditImages/{EditImages.vue2.js → EditImages.vue.js} +6 -6
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -0
- package/dist/martyrs/src/components/EmptyState/EmptyState.vue.js +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js +4 -4
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldDate/FieldDate.vue.js +3 -3
- package/dist/martyrs/src/components/FieldDate/FieldDate.vue.js.map +1 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +27 -21
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Map/Map.vue.js +20 -16
- package/dist/martyrs/src/components/Map/Map.vue.js.map +1 -1
- package/dist/martyrs/src/components/Popup/Popup.vue.js +3 -4
- package/dist/martyrs/src/components/Popup/Popup.vue.js.map +1 -1
- package/dist/martyrs/src/components/Radio/Radio.vue.js +12 -10
- 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/Status/Snack.vue.js +1 -1
- package/dist/martyrs/src/components/Status/Snack.vue.js.map +1 -1
- package/dist/martyrs/src/components/Status/Status.vue.js +1 -1
- package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
- package/dist/martyrs/src/components/Table/Table.vue.js +21 -4
- package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
- package/dist/martyrs/src/components/Tree/Tree.vue.js +1 -1
- package/dist/martyrs/src/components/Upload/Upload.vue2.js +2 -2
- package/dist/martyrs/src/components/Upload/Upload.vue2.js.map +1 -1
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +2 -2
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/auth.client.js +14 -2
- package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +4 -4
- package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/blocks/SidebarUserCard.vue.js +96 -0
- package/dist/martyrs/src/modules/auth/views/components/blocks/SidebarUserCard.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/BackofficeUsers.vue.js +337 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/BackofficeUsers.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +32 -18
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +76 -40
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +6 -5
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +4 -4
- 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 -1
- 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 +3 -3
- 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 +28 -16
- 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/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/middlewares/auth.validation.js +6 -2
- package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.backoffice.router.js +53 -0
- package/dist/martyrs/src/modules/auth/views/router/users.backoffice.router.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/store/auth.js +2 -2
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +179 -253
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +105 -44
- package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +11 -5
- package/dist/martyrs/src/modules/backoffice/router/backoffice.router.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.map +1 -1
- package/dist/martyrs/src/modules/community/community.client.js +4 -4
- package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
- 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/layouts/Community.vue.js +4 -4
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/core.client.js +18 -16
- package/dist/martyrs/src/modules/core/core.client.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/classes/core.app.js +25 -6
- package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/classes/module.manager.js +4 -2
- package/dist/martyrs/src/modules/core/views/classes/module.manager.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/AlertDialog.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/AlertDialog.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSlider.vue.js +132 -0
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSlider.vue.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +6 -28
- package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -1
- package/dist/martyrs/src/modules/{auth → core}/views/components/blocks/CardUser.vue.js +29 -11
- package/dist/martyrs/src/modules/{auth → core}/views/components/blocks/CardUser.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/PopupDateSelector.vue.js +41 -26
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +2 -1
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
- 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 +2 -2
- 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 +2 -2
- 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 +4 -4
- 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 +2 -2
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -1
- 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 +6 -6
- package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/mixins/mixins.js +14 -1
- package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/plugins/date-picker.plugin.js +8 -5
- package/dist/martyrs/src/modules/core/views/plugins/date-picker.plugin.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/store/core.store.js +4 -0
- 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 +3 -0
- package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
- 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 +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.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/events/events.client.js +4 -4
- package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.router.js +3 -3
- package/dist/martyrs/src/modules/gallery/router/gallery.router.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +3 -3
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +4 -4
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +2 -2
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +3 -3
- package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +3 -3
- package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +1 -1
- package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/governance/views/router/governance.router.js +3 -3
- package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -1
- package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/entities/IconApplications.vue.js +32 -0
- package/dist/martyrs/src/modules/icons/entities/IconApplications.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconCustomers.vue.js +32 -0
- package/dist/martyrs/src/modules/icons/entities/IconCustomers.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconUsers.vue.js +32 -0
- package/dist/martyrs/src/modules/icons/entities/IconUsers.vue.js.map +1 -0
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +2 -2
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
- 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 +3 -3
- 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 +290 -173
- 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 +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/inventory.client.js +4 -4
- package/dist/martyrs/src/modules/inventory/inventory.client.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/router/inventory.router.js +15 -0
- package/dist/martyrs/src/modules/inventory/router/inventory.router.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +4 -4
- package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js +3 -3
- package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.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/SectionMobileApp.vue.js +2 -2
- 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 +1 -1
- 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 +2 -2
- package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +3 -3
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +6 -6
- 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 +2 -2
- 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 +1 -1
- 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 +5 -5
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
- 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 +8 -8
- 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 +5 -5
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +11 -11
- 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 +3 -3
- 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 +11 -11
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +4 -4
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +162 -68
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +181 -17
- package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.backoffice.router.js +21 -0
- package/dist/martyrs/src/modules/notifications/router/notifications.backoffice.router.js.map +1 -0
- package/dist/martyrs/src/modules/notifications/router/notifications.router.js +13 -42
- package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js +66 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +9 -7
- package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +11 -9
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
- 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 +66 -19
- 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 +29 -27
- 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 +7 -12
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.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 +4 -4
- 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 +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +46 -25
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +54 -38
- package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +454 -139
- 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 -1
- 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 +141 -68
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +38 -32
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +1 -1
- 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 +4 -4
- 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 +167 -95
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +22 -20
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/orders.js +3 -5
- package/dist/martyrs/src/modules/orders/store/orders.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.js +5 -5
- package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
- package/dist/martyrs/src/modules/orders/utils/rent-price.js +60 -0
- package/dist/martyrs/src/modules/orders/utils/rent-price.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +45 -55
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +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 +8 -8
- 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 +216 -83
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +35 -25
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +3 -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 +2 -2
- 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 +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +20 -18
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/organizations.client.js +39 -33
- package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +81 -0
- package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.router.js +2 -2
- package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.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/pages/Categories.vue.js +9 -25
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +34 -17
- 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 +96 -96
- 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 +1 -1
- 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 +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +22 -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 +1 -1
- 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 +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/categories.router.js +2 -2
- package/dist/martyrs/src/modules/products/router/categories.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/products.router.js +17 -3
- package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +11 -10
- 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 +197 -81
- 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 +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +685 -80
- 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 +68 -18
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/router/rents.router.js +3 -3
- package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/store/rents.store.js +1 -1
- package/dist/martyrs/src/modules/rents/views/store/rents.store.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/router/reports.router.js +1 -1
- package/dist/martyrs/src/modules/reports/router/reports.router.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/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +3 -3
- 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 +9 -7
- 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 +29 -37
- 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 +8 -8
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/router/spots.router.js +3 -3
- package/dist/martyrs/src/modules/spots/router/spots.router.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +3 -3
- package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -1
- package/dist/martyrs.es10.js +59 -57
- package/dist/martyrs.es106.js +2 -2
- package/dist/martyrs.es11.js +31 -30
- package/dist/martyrs.es113.js +22 -166
- package/dist/martyrs.es114.js +4 -457
- package/dist/martyrs.es115.js +8 -40
- package/dist/martyrs.es116.js +166 -9
- package/dist/martyrs.es117.js +451 -43
- package/dist/martyrs.es118.js +38 -10
- package/dist/martyrs.es119.js +9 -44
- package/dist/martyrs.es12.js +8 -9
- package/dist/martyrs.es120.js +49 -4
- package/dist/martyrs.es121.js +10 -127
- package/dist/martyrs.es122.js +42 -98
- package/dist/martyrs.es123.js +4 -86
- package/dist/martyrs.es124.js +120 -29
- package/dist/martyrs.es125.js +99 -10
- package/dist/martyrs.es126.js +71 -24
- package/dist/martyrs.es127.js +37 -8
- package/dist/martyrs.es128.js +11 -22
- package/dist/martyrs.es129.js +39 -4
- package/dist/martyrs.es13.js +22 -19
- package/dist/martyrs.es130.js +9 -8
- package/dist/martyrs.es131.js +7 -7
- package/dist/martyrs.es132.js +2 -2
- package/dist/martyrs.es133.js +1 -1
- package/dist/martyrs.es135.js +1 -1
- package/dist/martyrs.es137.js +1 -1
- package/dist/martyrs.es138.js +7 -8
- package/dist/martyrs.es139.js +8 -7
- package/dist/martyrs.es14.js +2 -2
- package/dist/martyrs.es140.js +2 -2
- package/dist/martyrs.es144.js +10 -29
- package/dist/martyrs.es145.js +29 -10
- package/dist/martyrs.es146.js +2 -2
- package/dist/martyrs.es147.js +2 -2
- package/dist/martyrs.es149.js +1 -1
- package/dist/martyrs.es2.js +31 -30
- package/dist/martyrs.es22.js +16 -16
- package/dist/martyrs.es23.js +8 -8
- package/dist/martyrs.es24.js +9 -9
- package/dist/martyrs.es26.js +9 -11
- package/dist/martyrs.es27.js +9 -9
- package/dist/martyrs.es28.js +1 -1
- package/dist/martyrs.es29.js +5 -5
- package/dist/martyrs.es3.js +1 -1
- package/dist/martyrs.es38.js +1 -1
- package/dist/martyrs.es4.js +12 -12
- package/dist/martyrs.es41.js +34 -224
- package/dist/martyrs.es5.js +251 -238
- package/dist/martyrs.es61.js +33 -26
- package/dist/martyrs.es74.js +7 -7
- package/dist/martyrs.es76.js +12 -12
- package/dist/martyrs.es8.js +31 -31
- package/dist/music.server.js +3 -3
- package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@2.0.2/node_modules/@googlemaps/js-api-loader/dist/index.js +90 -0
- package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@2.0.2/node_modules/@googlemaps/js-api-loader/dist/index.js.map +1 -0
- package/dist/notifications.server.js +255 -23
- package/dist/orders.server.js +674 -136
- package/dist/organizations.server.js +11 -6
- package/dist/products.server.js +68 -7
- package/dist/{queryProcessor-C_5Iipam.js → queryProcessor-B2FCngFP.js} +3 -2
- package/dist/rents.server.js +183 -7
- package/dist/{socials.schema-DxnnaBgO.js → socials.schema-C3RjkqJv.js} +4 -0
- package/dist/spots.server.js +1 -1
- package/dist/style.css +292 -204
- package/dist/{tickets.controller-DdF85W-i.js → tickets.controller-Dpzf4kQx.js} +1 -1
- package/dist/wallet.server.js +2 -2
- package/package.json +5 -3
- package/src/builder/modes/ssr.rspack.dev.js +2 -0
- package/src/builder/rspack/rspack.config.ssr.client.js +58 -1
- package/src/builder/ssr/asset-resolver.js +1 -1
- package/src/builder/templates/page.js +2 -0
- package/src/components/Address/Address.vue +16 -16
- package/src/components/Button/Button.vue +0 -1
- package/src/components/ButtonSegmented/ButtonSegmented.vue +1 -1
- package/src/components/Calendar/Calendar.vue +141 -118
- package/src/components/Chart/Chart.vue +216 -0
- package/src/components/Checkbox/Checkbox.vue +1 -1
- package/src/components/Chips/Chips.vue +4 -5
- package/src/components/Countdown/Countdown.vue +5 -5
- package/src/components/DatePicker/DatePicker.vue +2 -2
- package/src/components/EditImages/EditImages.vue +3 -3
- package/src/components/EmptyState/EmptyState.vue +1 -1
- package/src/components/Feed/Feed.vue +5 -0
- package/src/components/Field/Field.vue +3 -3
- package/src/components/FieldDate/FieldDate.vue +2 -2
- package/src/components/LocationMarker/LocationMarker.vue +28 -21
- package/src/components/Map/Map.vue +20 -15
- package/src/components/Popup/Popup.vue +3 -3
- package/src/components/Radio/Radio.vue +2 -2
- package/src/components/Select/Select.vue +1 -1
- package/src/components/Status/Snack.vue +1 -1
- package/src/components/Status/Status.vue +1 -1
- package/src/components/Table/Table.vue +16 -1
- package/src/components/Upload/Upload.vue +1 -1
- package/src/components/UploadImage/UploadImage.vue +1 -1
- package/src/components/UploadImageMultiple/UploadImageMultiple.vue +1 -1
- package/src/jit/rules.js +4 -0
- package/src/modules/TASKS.MD +16 -3
- package/src/modules/auth/auth.client.js +18 -3
- package/src/modules/auth/controllers/routes/users.routes.js +18 -0
- package/src/modules/auth/controllers/services/auth.service.js +3 -3
- package/src/modules/auth/controllers/services/users.service.js +34 -5
- package/src/modules/auth/views/components/blocks/OtpDialog.vue +4 -4
- package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
- package/src/modules/auth/views/components/blocks/SidebarUserCard.vue +95 -0
- package/src/modules/auth/views/components/pages/BackofficeUsers.vue +337 -0
- package/src/modules/auth/views/components/pages/Invite.vue +1 -1
- package/src/modules/auth/views/components/pages/Profile.vue +1 -1
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +23 -14
- package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +45 -26
- package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +8 -7
- package/src/modules/auth/views/components/pages/ResetPassword.vue +4 -4
- package/src/modules/auth/views/components/pages/SignUp.vue +3 -3
- package/src/modules/auth/views/components/pages/UserDashboard.vue +8 -5
- package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
- package/src/modules/auth/views/middlewares/auth.validation.js +7 -2
- package/src/modules/auth/views/router/users.backoffice.router.js +39 -0
- package/src/modules/auth/views/store/auth.js +2 -2
- package/src/modules/backoffice/components/admin/Backcalls.vue +2 -2
- package/src/modules/backoffice/components/admin/Dashboard.sublime-workspace +1 -1
- package/src/modules/backoffice/components/admin/FastOrders.vue +3 -3
- package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
- package/src/modules/backoffice/components/pages/Dashboard.vue +102 -139
- package/src/modules/backoffice/configs/navigation.backoffice.config.js +91 -29
- package/src/modules/backoffice/router/backoffice.router.js +7 -1
- package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
- package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
- package/src/modules/community/community.client.js +4 -4
- package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
- package/src/modules/community/components/layouts/Community.vue +4 -4
- package/src/modules/community/components/sections/Comment.vue +1 -1
- package/src/modules/constructor/components/elements/ImageUpload.vue +1 -1
- package/src/modules/core/TASK.MD +2 -2
- package/src/modules/core/controllers/classes/abac/abac.core.js +1 -0
- package/src/modules/core/controllers/classes/core.websocket.js +0 -2
- package/src/modules/core/controllers/classes/crud/crud.core.js +6 -0
- package/src/modules/core/controllers/classes/crud/crud.service.js +6 -0
- package/src/modules/core/controllers/utils/mailing.js +35 -26
- package/src/modules/core/controllers/utils/queryProcessor.js +4 -2
- package/src/modules/core/core.client.js +1 -0
- package/src/modules/core/models/schemas/embedding.schema.js +8 -0
- package/src/modules/core/models/schemas/socials.schema.js +4 -0
- package/src/modules/core/sw.js +448 -0
- package/src/modules/core/views/classes/core.app.js +37 -13
- package/src/modules/core/views/classes/module.manager.js +3 -1
- package/src/modules/core/views/components/blocks/AlertDialog.vue +1 -1
- package/src/modules/core/views/components/blocks/BlockSearch.vue +1 -1
- package/src/modules/core/views/components/blocks/BlockSlider.vue +96 -0
- package/src/modules/core/views/components/blocks/CardHeader.vue +2 -2
- package/src/modules/core/views/components/blocks/CardStat.vue +4 -18
- package/src/modules/{auth → core}/views/components/blocks/CardUser.vue +45 -20
- 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/blocks/PopupDateSelector.vue +41 -24
- package/src/modules/core/views/components/layouts/Client.vue +1 -1
- package/src/modules/core/views/components/pages/404.vue +5 -5
- package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
- package/src/modules/core/views/components/partials/CitySelection.vue +2 -2
- package/src/modules/core/views/components/partials/Footer.centered.vue +2 -2
- package/src/modules/core/views/components/partials/Footer.vue +2 -2
- package/src/modules/core/views/components/partials/Header.vue +3 -3
- package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
- package/src/modules/core/views/components/partials/Navigation.vue +1 -1
- package/src/modules/core/views/components/sections/Filters.vue +2 -2
- package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
- package/src/modules/core/views/components/sections/Walkthrough.vue +6 -6
- package/src/modules/core/views/mixins/mixins.js +17 -0
- package/src/modules/core/views/plugins/date-picker.plugin.js +8 -5
- package/src/modules/core/views/store/core.store.js +5 -0
- package/src/modules/core/views/utils/vue-app-renderer.js +5 -0
- package/src/modules/events/components/pages/EditEventTickets.vue +9 -9
- package/src/modules/events/components/pages/Event.vue +2 -2
- package/src/modules/events/components/sections/EditTickets.vue +1 -1
- package/src/modules/events/components/sections/SelectDate.vue +1 -1
- package/src/modules/events/events.client.js +4 -4
- package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
- package/src/modules/gallery/router/gallery.router.js +3 -3
- package/src/modules/governance/middlewares/sprints.verifier.js +3 -3
- package/src/modules/governance/middlewares/tasks.verifier.js +3 -3
- package/src/modules/governance/models/sprint.model.js +1 -1
- package/src/modules/governance/models/task.model.js +1 -1
- package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
- package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +3 -3
- package/src/modules/governance/views/components/blocks/CardSprintItem.vue +4 -4
- package/src/modules/governance/views/components/blocks/CardTaskItem.vue +2 -2
- package/src/modules/governance/views/components/blocks/CardVotingItem.vue +3 -3
- package/src/modules/governance/views/components/pages/Initiatives.vue +3 -3
- package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
- package/src/modules/governance/views/components/sections/FormSprintDetails.vue +1 -1
- package/src/modules/governance/views/components/sections/FormTaskDetails.vue +1 -1
- package/src/modules/governance/views/router/governance.router.js +3 -3
- package/src/modules/icons/components/IconSearchPopup.vue +1 -1
- package/src/modules/icons/entities/IconApplications.vue +14 -0
- package/src/modules/icons/entities/IconCustomers.vue +14 -0
- package/src/modules/icons/entities/IconUsers.vue +14 -0
- package/src/modules/inventory/components/forms/AdjustmentForm.vue +2 -2
- package/src/modules/inventory/components/forms/ColumnSettingsMenu.vue +2 -2
- package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
- package/src/modules/inventory/components/forms/StockAlertsForm.vue +3 -3
- package/src/modules/inventory/components/pages/Inventory.vue +278 -159
- package/src/modules/inventory/components/pages/InventoryEdit.vue +2 -2
- package/src/modules/inventory/inventory.client.js +4 -4
- package/src/modules/inventory/models/stock.audit.model.js +1 -1
- package/src/modules/inventory/router/inventory.router.js +12 -0
- package/src/modules/landing/components/sections/SectionEarn.vue +3 -3
- package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
- package/src/modules/landing/components/sections/SectionFeatures.vue +1 -1
- package/src/modules/landing/components/sections/SectionFeaturesImages.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 +1 -1
- package/src/modules/landing/components/sections/SectionMobileApp.vue +2 -2
- package/src/modules/landing/components/sections/SectionOverview.vue +1 -1
- package/src/modules/landing/components/sections/SectionRoadmap.vue +1 -1
- package/src/modules/landing/components/sections/SubscribeNewsletter.vue +1 -1
- package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
- package/src/modules/music/components/SidebarMusic.vue +1 -1
- package/src/modules/music/components/cards/AlbumCard.vue +1 -1
- package/src/modules/music/components/cards/ArtistCard.vue +1 -1
- package/src/modules/music/components/cards/ArtistCardSmall.vue +1 -1
- package/src/modules/music/components/cards/PlaylistCard.vue +1 -1
- package/src/modules/music/components/cards/TrackListCard.vue +6 -6
- package/src/modules/music/components/forms/AlbumForm.vue +2 -2
- package/src/modules/music/components/forms/ArtistForm.vue +1 -1
- package/src/modules/music/components/forms/PlaylistForm.vue +5 -5
- package/src/modules/music/components/forms/TrackForm.vue +3 -3
- package/src/modules/music/components/pages/Album.vue +8 -8
- package/src/modules/music/components/pages/Artist.vue +5 -5
- package/src/modules/music/components/pages/Playlist.vue +11 -11
- package/src/modules/music/components/pages/SearchResults.vue +2 -2
- package/src/modules/music/components/pages/Track.vue +11 -11
- package/src/modules/music/components/player/FullscreenPlayer.vue +3 -3
- package/src/modules/music/components/player/TrackProgress.vue +1 -1
- package/src/modules/notifications/components/sections/NotificationPreferences.vue +182 -52
- package/src/modules/notifications/controllers/notifications.controller.js +242 -17
- package/src/modules/notifications/models/notification-preference.model.js +4 -0
- package/src/modules/notifications/notifications.client.js +213 -20
- package/src/modules/notifications/router/notifications.backoffice.router.js +16 -0
- package/src/modules/notifications/router/notifications.router.js +13 -45
- package/src/modules/notifications/routes/notifications.routes.js +9 -0
- package/src/modules/notifications/services/notification.service.js +33 -9
- package/src/modules/notifications/services/telegram.service.js +2 -2
- package/src/modules/notifications/services/web-push.service.js +6 -2
- package/src/modules/notifications/store/notifications.store.js +69 -0
- package/src/modules/orders/components/blocks/CardApplication.vue +9 -6
- package/src/modules/orders/components/blocks/CardCustomer.vue +10 -7
- package/src/modules/orders/components/blocks/CardOrder.vue +8 -8
- package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +58 -12
- package/src/modules/orders/components/blocks/CardOrderItem.vue +31 -28
- package/src/modules/orders/components/blocks/CardOrderUser.vue +7 -12
- package/src/modules/orders/components/blocks/CardOrderVar1.vue +3 -3
- package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
- package/src/modules/orders/components/elements/PriceTotal.vue +4 -4
- package/src/modules/orders/components/forms/FormApplicationDetails.vue +1 -1
- package/src/modules/orders/components/forms/FormSelectCustomer.vue +48 -25
- package/src/modules/orders/components/pages/Applications.vue +2 -2
- package/src/modules/orders/components/pages/Customers.vue +35 -23
- package/src/modules/orders/components/pages/OrderBackoffice.vue +780 -393
- package/src/modules/orders/components/pages/OrderCreate.vue +5 -4
- package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +112 -42
- package/src/modules/orders/components/pages/Orders.vue +20 -19
- package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
- package/src/modules/orders/components/partials/ShopCart.vue +1 -1
- 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 +130 -64
- package/src/modules/orders/controllers/orders.controller.js +463 -134
- package/src/modules/orders/middlewares/applications.verifier.js +3 -3
- package/src/modules/orders/middlewares/customers.verifier.js +4 -0
- package/src/modules/orders/middlewares/orders.verifier.js +187 -0
- package/src/modules/orders/models/customer.model.js +2 -0
- package/src/modules/orders/models/order.model.js +20 -2
- package/src/modules/orders/orders.client.js +21 -19
- package/src/modules/orders/routes/applications.routes.js +13 -3
- package/src/modules/orders/routes/customers.routes.js +2 -0
- package/src/modules/orders/routes/orders.routes.js +46 -4
- package/src/modules/orders/store/orders.js +4 -7
- package/src/modules/orders/store/shopcart.js +6 -7
- package/src/modules/orders/utils/rent-price.js +90 -0
- package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
- package/src/modules/organizations/components/blocks/CardOrganization.vue +30 -33
- package/src/modules/organizations/components/blocks/EmptyState.vue +1 -1
- package/src/modules/organizations/components/blocks/Rating.vue +1 -1
- package/src/modules/organizations/components/blocks/Socials.vue +2 -2
- package/src/modules/organizations/components/elements/ButtonToggleMembership.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 +8 -8
- package/src/modules/organizations/components/pages/Organization.vue +232 -124
- package/src/modules/organizations/components/pages/OrganizationCreate.vue +3 -3
- package/src/modules/organizations/components/pages/OrganizationDocuments.vue +1 -1
- package/src/modules/organizations/components/pages/OrganizationEdit.vue +15 -6
- package/src/modules/organizations/components/pages/Organizations.vue +3 -2
- package/src/modules/organizations/components/sections/Documents.vue +1 -1
- package/src/modules/organizations/components/sections/MembersAdd.vue +2 -2
- package/src/modules/organizations/configs/navigation.organization.config.js +34 -26
- package/src/modules/organizations/controllers/organizations.controller.js +8 -3
- package/src/modules/organizations/models/organization.model.js +1 -0
- package/src/modules/organizations/organizations.client.js +39 -33
- package/src/modules/organizations/router/organizations.backoffice.router.js +67 -0
- package/src/modules/pages/views/components/pages/Pages.vue +1 -1
- package/src/modules/pages/views/router/pages.router.js +2 -2
- package/src/modules/products/components/blocks/CardPosition.vue +2 -2
- package/src/modules/products/components/blocks/CardProduct.vue +2 -2
- package/src/modules/products/components/blocks/ProductDiscounts.vue +1 -1
- package/src/modules/products/components/blocks/ProductImages.vue +1 -1
- package/src/modules/products/components/blocks/ProductVariants.vue +3 -3
- package/src/modules/products/components/elements/Price.vue +2 -2
- package/src/modules/products/components/forms/ColumnSettingsMenu.vue +2 -2
- package/src/modules/products/components/forms/ReorderSettingsForm.vue +3 -3
- 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 +9 -20
- package/src/modules/products/components/pages/ProductEdit.vue +19 -3
- package/src/modules/products/components/pages/Products.vue +20 -19
- package/src/modules/products/components/sections/EditAttributes.vue +1 -1
- package/src/modules/products/components/sections/EditCategories.vue +1 -1
- package/src/modules/products/components/sections/EditDiscounts.vue +2 -2
- package/src/modules/products/components/sections/EditVariants.vue +14 -2
- package/src/modules/products/components/sections/FilterProducts.vue +1 -1
- package/src/modules/products/components/sections/ProductConfigurator.vue +1 -1
- package/src/modules/products/components/sections/SectionProduct.vue +3 -3
- package/src/modules/products/controllers/products.controller.js +50 -5
- package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +2 -2
- package/src/modules/products/models/product.model.js +7 -0
- package/src/modules/products/models/variant.model.js +4 -0
- package/src/modules/products/router/categories.router.js +2 -2
- package/src/modules/products/router/products.router.js +14 -3
- package/src/modules/rents/controllers/routes/rents.routes.js +11 -0
- package/src/modules/rents/controllers/services/rents.services.js +193 -2
- package/src/modules/rents/models/rent.model.js +9 -0
- package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +28 -11
- package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +200 -40
- package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +2 -2
- package/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue +2 -2
- package/src/modules/rents/views/components/pages/Rents.vue +641 -142
- package/src/modules/rents/views/components/pages/RentsEdit.vue +44 -4
- package/src/modules/rents/views/router/rents.router.js +3 -3
- package/src/modules/rents/views/store/rents.store.js +1 -1
- package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
- package/src/modules/reports/router/reports.router.js +1 -1
- package/src/modules/spots/components/blocks/CardSpot.vue +6 -6
- package/src/modules/spots/components/pages/Spot.vue +2 -2
- package/src/modules/spots/components/pages/SpotEdit.vue +8 -6
- package/src/modules/spots/components/pages/Spots.vue +18 -24
- package/src/modules/spots/components/sections/WorktimeEdit.vue +7 -7
- package/src/modules/spots/router/spots.router.js +3 -3
- package/src/modules/wallet/views/components/blocks/CashDeposit.vue +1 -1
- package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +3 -3
- package/src/modules/wallet/views/components/pages/Payments.vue +1 -1
- package/src/modules/wallet/views/components/pages/Wallet.vue +4 -4
- package/src/modules/wallet/views/router/wallet.router.js +1 -1
- package/src/styles/layout.scss +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +0 -1
- package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +0 -70
- package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +0 -1
- package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js +0 -336
- package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +0 -1
package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardOrganization.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/CardOrganization.vue"],"sourcesContent":["<template>\n <div\n class=\"o-hidden pos-relative cursor-pointer bg-light \"\n @click=\"$router.push({ name:
|
|
1
|
+
{"version":3,"file":"CardOrganization.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/CardOrganization.vue"],"sourcesContent":["<template>\n <div\n class=\"o-hidden pos-relative cursor-pointer bg-light \"\n @click=\"$router.push({ name: `${routePrefix}OrganizationProfile`, params: { _id: organization._id } })\"\n >\n <div class=\"h-4r flex pos-relative\">\n\n <img loading=\"lazy\" \n v-if=\"organization.profile.photo && organization.profile.photo.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + organization.profile.photo\" \n class=\"h-4r w-4r radius-small bg-white\" \n style=\"flex: 0 1 auto\"\n />\n\n <PlaceholderOrganizationPic\n v-else\n class=\"w-4r h-max radius-regular\"\n style=\"flex: 0 1 auto\"\n />\n \n <div class=\"pos-relative w-100 flex-h-center flex flex-column flex-child-1 flex-child mn-l-thin w-100\">\n \n <!-- <Text :text=\"organization.profile.name ? organization.profile.name : ''\" :maxLen=\"18\" class=\"h3 d-block\"/> -->\n <p class=\"h4 mn-b-thin flex-child-default truncate w-100\">{{organization.profile.name}}</p>\n <!-- RATING -->\n <!-- <div v-if=\"showRating && organization.rating\" class=\"w-max star-container flex-v-center flex\">\n <img loading=\"lazy\" \n v-for=\"i in 5\"\n class=\"i-small mn-r-thin\"\n :src=\"i <= organization.rating.median ? '/icons/star.svg' : '/icons/star-stroke.svg'\"\n >\n\n <span class=\"p-small fw-semi mn-r-thin\">{{organization.rating.median}}</span>\n <span class=\"p-small\">({{organization.rating.amount}})</span>\n </div> -->\n\n <div v-if=\"showFollowers\" class=\"truncate mn-r-nano flex-child-default w-max p-regular pd-thin radius-thin fw-medium bg-white\">\n <p class=\"truncate\">{{organization.numberOfSubscribers}} followers</p>\n\n <ButtonToggleMembership\n v-if=\"\n user?._id \n && organization.owner !== user._id\n \"\n :user=\"user._id\"\n :type=\"'organization'\" \n :role=\"'subscriber'\" \n :target=\"organization._id\" \n :status=\"organization.isSubscriber\" \n :text=\"{create: '+', remove: '-'}\"\n @updateMembership=\"event => emits('updateMembership', event, 'isSubscriber', 'numberOfSubscribers')\"\n class=\"i-medium\" \n />\n </div>\n\n <Chips \n v-if=\"showTags && organization.profile.tags?.length > 0\" \n :chips=\"organization.profile.tags.slice(0,3)\"\n class=\"pos-relative t-trimmed\"\n />\n\n </div>\n\n </div>\n\n\n <div \n v-if=\"showProducts && organization.products\" \n class=\"mn-b-small ws-nowrap mn-t-small w-100 flex-nowrap flex flex-v-center pd-small bg-white radius-medium\"\n >\n <IconTime class=\"i-medium opacity-50 mn-r-micro\"/>\n <span class=\"mn-r-micro\">\n {{\n organization.distance ? \n organization.distance > 50 ? \n '3-5 days' : \n Math.ceil((5 + 5 + 3 * organization.distance) / 5) * 5 \n + '-' \n + Math.ceil((15 + 5 + 3 * organization.distance) / 5) * 5 \n + ' MIN' : 'Unavailable' \n }} \n </span>\n\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"opacity-50 t-dark mn-r-micro\">|</span>\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"mn-r-thin\">{{organization.distance ? organization.distance.toFixed(1) + 'KM' : ''}}</span>\n <!-- <span class=\"mn-r-thin\">{{organization.nearestSpotDistance}}</span> -->\n <!-- <IconPrice class=\"i-medium mn-r-micro\"/> -->\n <!-- <span class=\"mn-r-thin\">{{returnCurrency()}}500 </span> -->\n <IconShopcart class=\"i-medium opacity-50 mn-r-micro\"/>\n <span class=\"mn-r-thin\"> {{organization.products.length}} products</span>\n </div>\n\n <div v-if=\"showProducts && organization.products?.length > 0\" class=\"w-100 o-scroll scroll-hide radius-medium\">\n <div class=\"w-max flex-nowrap flex gap-thin\">\n <CardOrderItem\n @click.stop=\"$router.push(`/organizations/${organization._id}/products/${product._id}`)\"\n v-for=\"product in organization.products.slice(0,5)\"\n :key=\"product._id\"\n :editable=\"false\"\n :productId=\"product._id\"\n :variantId=\"product.variants?.[0]?._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.variants?.[0]?.quantity || 1\"\n :unit=\"product.variants?.[0]?.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.variants?.[0]?.price\"\n class=\"pd-thin w-15r radius-medium bg-white\"\n\n />\n <button class=\"pd-thin w-15r radius-medium bg-main button\">\n View menu\n </button>\n </div>\n </div>\n\n </div>\n</template>\n\n<script setup>\n import { ref, computed } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n\n import Text from '@martyrs/src/components/Text/Text.vue'\n import Chips from '@martyrs/src/components/Chips/Chips.vue'\n\n import PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\n import IconPrice from '@martyrs/src/modules/icons/entities/IconPrice.vue'\n import IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue'\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n import ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n\n const props = defineProps({\n // Model\n user: String,\n organization: Object,\n // View\n showProducts: {\n type: Boolean,\n default: false\n },\n showFollowers: {\n type: Boolean,\n default: true\n },\n showRating: {\n type: Boolean,\n default: false\n },\n showFeatured: {\n type: Boolean,\n default: true\n },\n showTags: {\n type: Boolean,\n default: true\n },\n });\n\n const emits = defineEmits(['updateMembership'])\n\n const route = useRoute();\n const router = useRouter();\n\n const routePrefix = computed(() => {\n const ctx = route.meta.context\n if (ctx === 'user') return 'User'\n if (ctx === 'backoffice') return 'Backoffice'\n return ''\n })\n</script>\n\n<style>\n\n.t-trimmed {\n font-size: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmKE,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,cAAc,SAAS,MAAM;AACjC,YAAM,MAAM,MAAM,KAAK;AACvB,UAAI,QAAQ,OAAQ,QAAO;AAC3B,UAAI,QAAQ,aAAc,QAAO;AACjC,aAAO;AAAA,IACT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, createElementVNode, toDisplayString } from "vue";
|
|
2
2
|
const _hoisted_1 = { class: "mn-b-big radius-medium pd-big bg-white" };
|
|
3
3
|
const _hoisted_2 = { class: "mn-b-regular" };
|
|
4
|
-
const _hoisted_3 = { class: "mn-b-small
|
|
4
|
+
const _hoisted_3 = { class: "mn-b-small opacity-50 p-regular" };
|
|
5
5
|
const _sfc_main = {
|
|
6
6
|
__name: "EmptyState",
|
|
7
7
|
props: {
|
|
@@ -21,7 +21,7 @@ const _sfc_main = {
|
|
|
21
21
|
createElementVNode("span", _hoisted_2, toDisplayString(__props.rating), 1),
|
|
22
22
|
(openBlock(), createElementBlock(Fragment, null, renderList(5, (i) => {
|
|
23
23
|
return createElementVNode("svg", {
|
|
24
|
-
class: normalizeClass(["i-medium mn-r-small", { "
|
|
24
|
+
class: normalizeClass(["i-medium mn-r-small", { "opacity-50": i > __props.rating }]),
|
|
25
25
|
width: "113",
|
|
26
26
|
height: "108",
|
|
27
27
|
viewBox: "0 0 113 108",
|
|
@@ -83,11 +83,11 @@ const _sfc_main = {
|
|
|
83
83
|
key: social.name,
|
|
84
84
|
href: social.href,
|
|
85
85
|
target: "_blank",
|
|
86
|
-
class: "i-
|
|
86
|
+
class: "i-semi bg-second t-white flex-nowrap flex-center flex radius-extra"
|
|
87
87
|
}, [
|
|
88
88
|
(openBlock(), createBlock(resolveDynamicComponent(resolveSocialIcon(social.name)), {
|
|
89
89
|
fill: "rgb(var(--white))",
|
|
90
|
-
class: "i-
|
|
90
|
+
class: "i-small"
|
|
91
91
|
}))
|
|
92
92
|
], 8, _hoisted_2);
|
|
93
93
|
}), 128))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Socials.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/Socials.vue"],"sourcesContent":["<template>\n <div class=\"gap-small flex-nowrap flex\">\n <a \n v-for=\"social in socialLinks\" \n :key=\"social.name\"\n :href=\"social.href\" \n target=\"_blank\" \n class=\"i-
|
|
1
|
+
{"version":3,"file":"Socials.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/Socials.vue"],"sourcesContent":["<template>\n <div class=\"gap-small flex-nowrap flex\">\n <a \n v-for=\"social in socialLinks\" \n :key=\"social.name\"\n :href=\"social.href\" \n target=\"_blank\" \n class=\"i-semi bg-second t-white flex-nowrap flex-center flex radius-extra\"\n >\n <component :is=\"resolveSocialIcon(social.name)\" :fill=\"'rgb(var(--white))'\" class=\"i-small\"></component>\n </a> \n </div>\n</template>\n\n<script setup>\nimport { ref, computed, resolveComponent } from \"vue\";\n\nimport IconTelegram from '@martyrs/src/modules/icons/socials/telegram.vue'\nimport IconFacebook from '@martyrs/src/modules/icons/socials/facebook.vue'\nimport IconInstagram from '@martyrs/src/modules/icons/socials/instagram.vue'\nimport IconTwitter from '@martyrs/src/modules/icons/socials/twitter.vue'\nimport IconReddit from '@martyrs/src/modules/icons/socials/reddit.vue'\nimport IconLine from '@martyrs/src/modules/icons/socials/line.vue'\nimport IconDribble from '@martyrs/src/modules/icons/socials/dribbble.vue'\nimport IconYoutube from '@martyrs/src/modules/icons/socials/youtube.vue'\n\n\nconst props = defineProps({\n telegram: {\n type: String,\n default: ''\n },\n facebook: {\n type: String,\n default: ''\n },\n instagram: {\n type: String,\n default: ''\n },\n twitter: {\n type: String,\n default: ''\n },\n reddit: {\n type: String,\n default: ''\n },\n line: {\n type: String,\n default: ''\n },\n dribbble: {\n type: String,\n default: ''\n },\n youtube: {\n type: String,\n default: ''\n }\n});\n\nconst socialLinks = computed(() => {\n const networks = [\n {name: 'telegram', base: 'https://t.me/'},\n {name: 'facebook', base: 'https://www.facebook.com/'},\n {name: 'instagram', base: 'https://www.instagram.com/'},\n {name: 'twitter', base: 'https://twitter.com/'},\n {name: 'reddit', base: 'https://www.reddit.com/user/'},\n {name: 'line', base: ''}, \n {name: 'dribbble', base: 'https://dribbble.com/'},\n {name: 'youtube', base: 'https://youtube.com/@'}\n ];\n\n return networks\n .filter(network => props[network.name])\n .map(network => ({ \n name: network.name, \n href: network.base + props[network.name] \n }));\n});\n\n\nfunction resolveSocialIcon(name) {\n const icons = {\n telegram: IconTelegram,\n facebook: IconFacebook,\n instagram: IconInstagram,\n twitter: IconTwitter,\n reddit: IconReddit,\n line: IconLine,\n dribbble: IconDribble,\n youtube: IconYoutube\n };\n\n return icons[name] || null;\n}\n</script>\n"],"names":["IconTelegram","IconFacebook","IconInstagram","IconTwitter","IconReddit","IconLine","IconDribble","IconYoutube"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,UAAM,QAAQ;AAmCd,UAAM,cAAc,SAAS,MAAM;AAC/B,YAAM,WAAW;AAAA,QACb,EAAC,MAAM,YAAY,MAAM,gBAAe;AAAA,QACxC,EAAC,MAAM,YAAY,MAAM,4BAA2B;AAAA,QACpD,EAAC,MAAM,aAAa,MAAM,6BAA4B;AAAA,QACtD,EAAC,MAAM,WAAW,MAAM,uBAAsB;AAAA,QAC9C,EAAC,MAAM,UAAU,MAAM,+BAA8B;AAAA,QACrD,EAAC,MAAM,QAAQ,MAAM,GAAE;AAAA,QACvB,EAAC,MAAM,YAAY,MAAM,wBAAuB;AAAA,QAChD,EAAC,MAAM,WAAW,MAAM,wBAAuB;AAAA,MACvD;AAEI,aAAO,SACF,OAAO,aAAW,MAAM,QAAQ,IAAI,CAAC,EACrC,IAAI,cAAY;AAAA,QACb,MAAM,QAAQ;AAAA,QACd,MAAM,QAAQ,OAAO,MAAM,QAAQ,IAAI;AAAA,MACnD,EAAU;AAAA,IACV,CAAC;AAGD,aAAS,kBAAkB,MAAM;AAC7B,YAAM,QAAQ;AAAA,QACV,UAAUA;AAAAA,QACV,UAAUC;AAAAA,QACV,WAAWC;AAAAA,QACX,SAASC;AAAAA,QACT,QAAQC;AAAAA,QACR,MAAMC;AAAAA,QACN,UAAUC;AAAAA,QACV,SAASC;AAAAA,MACjB;AAEI,aAAO,MAAM,IAAI,KAAK;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js
CHANGED
|
@@ -85,7 +85,7 @@ const _sfc_main = {
|
|
|
85
85
|
return openBlock(), createBlock(Button, {
|
|
86
86
|
submit: toggleMembership,
|
|
87
87
|
showSucces: false,
|
|
88
|
-
class: "bg-main
|
|
88
|
+
class: "bg-main"
|
|
89
89
|
}, {
|
|
90
90
|
default: withCtx(() => [
|
|
91
91
|
createTextVNode(toDisplayString(!__props.status ? props.text.create : props.text.remove), 1)
|
package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonToggleMembership.vue.js","sources":["../../../../../../../src/modules/organizations/components/elements/ButtonToggleMembership.vue"],"sourcesContent":["<template>\n <Button\n :submit=\"toggleMembership\"\n :showSucces=\"false\"\n class=\"bg-main
|
|
1
|
+
{"version":3,"file":"ButtonToggleMembership.vue.js","sources":["../../../../../../../src/modules/organizations/components/elements/ButtonToggleMembership.vue"],"sourcesContent":["<template>\n <Button\n :submit=\"toggleMembership\"\n :showSucces=\"false\"\n class=\"bg-main\"\n >\n {{ !status ? props.text.create : props.text.remove }}\n</Button>\n</template>\n\n<script setup>\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n \n import { ref } from 'vue'\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n import membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n const emits = defineEmits(['updateMembership'])\n\n const props = defineProps({\n user: {\n type: String,\n required: true\n },\n type: {\n type: String,\n required: true\n },\n role: {\n type: String,\n required: false\n },\n target: {\n type: String,\n required: true\n },\n text: {\n type: Object,\n default: {\n create: 'join',\n remove: 'leave'\n }\n },\n status: {\n type: Boolean,\n required: true\n }\n });\n\n const toggleMembership = async () => {\n if (!props.status) {\n await createMembership();\n } else {\n await removeMembership();\n }\n }\n\n async function createMembership() {\n try {\n const membershipData = {\n user: props.user,\n type: props.type,\n role: props.role,\n target: props.target\n };\n\n const response = await membershipsStore.create(membershipData);\n\n emits('updateMembership', { \n membership: response, \n target: props.target, \n status: true,\n });\n } catch (error) {\n console.log(error)\n throw error;\n }\n }\n\n async function removeMembership(targetId) {\n const membershipData = {\n user: props.user,\n type: props.type,\n role: props.role,\n target: props.target\n };\n\n try {\n const response = await membershipsStore.delete(membershipData);\n\n emits('updateMembership', {\n membership: response, \n target: props.target, \n status: false,\n });\n } catch (error) {\n console.log(error)\n throw error;\n }\n }\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBE,UAAM,QAAQ;AAEd,UAAM,QAAQ;AA8Bd,UAAM,mBAAmB,YAAY;AACnC,UAAI,CAAC,MAAM,QAAQ;AACjB,cAAM,iBAAgB;AAAA,MACxB,OAAO;AACL,cAAM,iBAAgB;AAAA,MACxB;AAAA,IACF;AAEA,mBAAe,mBAAmB;AAChC,UAAI;AACF,cAAM,iBAAiB;AAAA,UACrB,MAAM,MAAM;AAAA,UACZ,MAAM,MAAM;AAAA,UACZ,MAAM,MAAM;AAAA,UACZ,QAAQ,MAAM;AAAA,QACtB;AAEM,cAAM,WAAW,MAAM,iBAAiB,OAAO,cAAc;AAE7D,cAAM,oBAAoB;AAAA,UACxB,YAAY;AAAA,UACZ,QAAQ,MAAM;AAAA,UACd,QAAQ;AAAA,QAChB,CAAO;AAAA,MACH,SAAS,OAAO;AACd,gBAAQ,IAAI,KAAK;AACjB,cAAM;AAAA,MACR;AAAA,IACF;AAEA,mBAAe,iBAAiB,UAAU;AACxC,YAAM,iBAAiB;AAAA,QACrB,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,MACpB;AAEI,UAAI;AACF,cAAM,WAAW,MAAM,iBAAiB,OAAO,cAAc;AAE7D,cAAM,oBAAoB;AAAA,UACxB,YAAY;AAAA,UACZ,QAAQ,MAAM;AAAA,UACd,QAAQ;AAAA,QAChB,CAAO;AAAA,MACH,SAAS,OAAO;AACd,gBAAQ,IAAI,KAAK;AACjB,cAAM;AAAA,MACT;AAAA,IACF;;;;;;;;;;;;;;;"}
|
package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js
CHANGED
|
@@ -12,7 +12,7 @@ const _hoisted_3 = { class: "aspect-1x1 h-3r flex-child-default radius-small o-h
|
|
|
12
12
|
const _hoisted_4 = ["src"];
|
|
13
13
|
const _hoisted_5 = { class: "w-100" };
|
|
14
14
|
const _hoisted_6 = { class: "fw-medium" };
|
|
15
|
-
const _hoisted_7 = { class: "t-small
|
|
15
|
+
const _hoisted_7 = { class: "t-small opacity-50" };
|
|
16
16
|
const _hoisted_8 = {
|
|
17
17
|
key: 0,
|
|
18
18
|
class: "pd-nano pd-h-thin radius-thin bg-grey"
|
|
@@ -25,7 +25,7 @@ const _hoisted_10 = {
|
|
|
25
25
|
key: 0,
|
|
26
26
|
class: "mn-b-thin"
|
|
27
27
|
};
|
|
28
|
-
const _hoisted_11 = { class: "t-small
|
|
28
|
+
const _hoisted_11 = { class: "t-small opacity-50" };
|
|
29
29
|
const _sfc_main = {
|
|
30
30
|
__name: "AddExistingMembersForm",
|
|
31
31
|
props: {
|
|
@@ -114,7 +114,7 @@ const _sfc_main = {
|
|
|
114
114
|
}
|
|
115
115
|
return (_ctx, _cache) => {
|
|
116
116
|
return openBlock(), createElementBlock("div", null, [
|
|
117
|
-
_cache[1] || (_cache[1] = createElementVNode("p", { class: "mn-b-thin
|
|
117
|
+
_cache[1] || (_cache[1] = createElementVNode("p", { class: "mn-b-thin opacity-50 p-regular" }, "Select users to add to the organization:", -1)),
|
|
118
118
|
createVNode(_sfc_main$1, {
|
|
119
119
|
search: {
|
|
120
120
|
placeholder: "Search users...",
|
package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddExistingMembersForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/AddExistingMembersForm.vue"],"sourcesContent":["<template>\n <div>\n <p class=\"mn-b-thin
|
|
1
|
+
{"version":3,"file":"AddExistingMembersForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/AddExistingMembersForm.vue"],"sourcesContent":["<template>\n <div>\n <p class=\"mn-b-thin opacity-50 p-regular\">Select users to add to the organization:</p>\n\n <Feed\n :search=\"{\n placeholder: 'Search users...',\n class: 'bg-light mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Users Found',\n description: 'No users match your search criteria.'\n },\n loading: {\n title: 'Loading users...'\n }\n }\"\n :store=\"{\n read: (options) => fetchFilteredUsers(options),\n state: null\n }\"\n :options=\"{}\"\n v-slot=\"{ items }\"\n class=\"bg-light pd-medium radius-medium h-max-30r o-scroll mn-b-thin\"\n >\n <div\n v-for=\"user in items\"\n :key=\"user._id\"\n @click=\"() => toggleUserSelection(user)\"\n class=\"pd-thin radius-medium w-100 mn-b-thin cursor-pointer hover:scale-[1.05]\"\n :class=\"getUserCardClass(user)\"\n >\n <div class=\"flex-nowrap flex-v-center flex gap-thin\">\n <div class=\"aspect-1x1 h-3r flex-child-default radius-small o-hidden\">\n <img\n v-if=\"user.profile?.photo\"\n :src=\"user.profile.photo\"\n alt=\"User photo\"\n class=\"w-100 h-100 object-fit-cover\"\n />\n <PlaceholderUserpic v-else class=\"w-100 h-100\" />\n </div>\n \n <div class=\"w-100\">\n <p class=\"fw-medium\">{{ user.profile?.name || user.phone || user.email || 'Unnamed user' }}</p>\n <p class=\"t-small opacity-50\">{{ user.email || user.phone || 'No contact info' }}</p>\n </div>\n\n <div v-if=\"isUserInOrganization(user)\" class=\"pd-nano pd-h-thin radius-thin bg-grey\">\n <span class=\"t-small\">Already member</span>\n </div>\n \n <div v-else-if=\"isUserSelected(user)\" class=\"pd-nano pd-h-thin radius-thin bg-green\">\n <IconCheck class=\"i-small\" fill=\"rgb(var(--white))\" />\n </div>\n </div>\n </div>\n </Feed>\n\n <div v-if=\"selectedUsers.length > 0\" class=\"mn-b-thin\">\n <p class=\"t-small opacity-50\">Selected: {{ selectedUsers.length }} user(s)</p>\n </div>\n\n <Button\n :submit=\"addSelectedUsers\"\n :disabled=\"selectedUsers.length === 0\"\n class=\"w-100 bg-main\"\n >\n Add {{ selectedUsers.length }} user(s) to organization\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\n\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\n\nimport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue';\nimport IconCheck from '@martyrs/src/modules/icons/navigation/IconCheck.vue';\n\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js';\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\n\nconst props = defineProps({\n organizationId: {\n type: String,\n required: true\n },\n existingMembers: {\n type: Array,\n default: () => []\n }\n});\n\nconst emit = defineEmits(['users-added']);\n\n// State\nconst selectedUsers = ref([]);\nconst organizationMembers = ref([]);\n\n// Check if user is already in organization\nfunction isUserInOrganization(user) {\n return organizationMembers.value.some(member => \n member.user._id === user._id || member.user === user._id\n );\n}\n\n// Check if user is selected\nfunction isUserSelected(user) {\n return selectedUsers.value.some(selected => selected._id === user._id);\n}\n\n// Get card styling based on user status\nfunction getUserCardClass(user) {\n if (isUserInOrganization(user)) {\n return 'bg-grey opacity-60 cursor-not-allowed';\n }\n if (isUserSelected(user)) {\n return 'bg-green-light';\n }\n return 'bg-white hover:bg-light';\n}\n\n// Toggle user selection\nfunction toggleUserSelection(user) {\n if (isUserInOrganization(user)) {\n store.core.actions.setError({ message: 'This user is already a member of the organization' });\n return;\n }\n\n const index = selectedUsers.value.findIndex(u => u._id === user._id);\n if (index > -1) {\n selectedUsers.value.splice(index, 1);\n } else {\n selectedUsers.value.push(user);\n }\n}\n\n// Fetch users and organization members\nasync function fetchFilteredUsers(options) {\n try {\n // Fetch organization members\n const membersResponse = await membershipsStore.read({\n target: props.organizationId,\n role: ['member', 'owner']\n });\n organizationMembers.value = membersResponse || [];\n\n // Fetch all users\n const usersResponse = await users.actions.read(options);\n return usersResponse;\n } catch (error) {\n console.error('Error fetching users:', error);\n return [];\n }\n}\n\n// Add selected users to organization\nasync function addSelectedUsers() {\n if (selectedUsers.value.length === 0) return;\n\n try {\n const promises = selectedUsers.value.map(user => \n membershipsStore.create({\n user: user._id,\n type: 'organization',\n target: props.organizationId,\n role: 'member',\n label: 'member'\n })\n );\n\n const results = await Promise.all(promises);\n \n emit('users-added', results);\n selectedUsers.value = [];\n \n store.core.actions.setSuccess({ \n message: `Successfully added ${results.length} user(s) to the organization` \n });\n } catch (error) {\n console.error('Error adding users:', error);\n store.core.actions.setError(error);\n throw error;\n }\n}\n</script>\n"],"names":["users.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQ,SAAQ;AAEtB,UAAM,QAAQ;AAWd,UAAM,OAAO;AAGb,UAAM,gBAAgB,IAAI,EAAE;AAC5B,UAAM,sBAAsB,IAAI,EAAE;AAGlC,aAAS,qBAAqB,MAAM;AAClC,aAAO,oBAAoB,MAAM;AAAA,QAAK,YACpC,OAAO,KAAK,QAAQ,KAAK,OAAO,OAAO,SAAS,KAAK;AAAA,MACzD;AAAA,IACA;AAGA,aAAS,eAAe,MAAM;AAC5B,aAAO,cAAc,MAAM,KAAK,cAAY,SAAS,QAAQ,KAAK,GAAG;AAAA,IACvE;AAGA,aAAS,iBAAiB,MAAM;AAC9B,UAAI,qBAAqB,IAAI,GAAG;AAC9B,eAAO;AAAA,MACT;AACA,UAAI,eAAe,IAAI,GAAG;AACxB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAGA,aAAS,oBAAoB,MAAM;AACjC,UAAI,qBAAqB,IAAI,GAAG;AAC9B,cAAM,KAAK,QAAQ,SAAS,EAAE,SAAS,qDAAqD;AAC5F;AAAA,MACF;AAEA,YAAM,QAAQ,cAAc,MAAM,UAAU,OAAK,EAAE,QAAQ,KAAK,GAAG;AACnE,UAAI,QAAQ,IAAI;AACd,sBAAc,MAAM,OAAO,OAAO,CAAC;AAAA,MACrC,OAAO;AACL,sBAAc,MAAM,KAAK,IAAI;AAAA,MAC/B;AAAA,IACF;AAGA,mBAAe,mBAAmB,SAAS;AACzC,UAAI;AAEF,cAAM,kBAAkB,MAAM,iBAAiB,KAAK;AAAA,UAClD,QAAQ,MAAM;AAAA,UACd,MAAM,CAAC,UAAU,OAAO;AAAA,QAC9B,CAAK;AACD,4BAAoB,QAAQ,mBAAmB,CAAA;AAG/C,cAAM,gBAAgB,MAAMA,QAAc,KAAK,OAAO;AACtD,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAC5C,eAAO,CAAA;AAAA,MACT;AAAA,IACF;AAGA,mBAAe,mBAAmB;AAChC,UAAI,cAAc,MAAM,WAAW,EAAG;AAEtC,UAAI;AACF,cAAM,WAAW,cAAc,MAAM;AAAA,UAAI,UACvC,iBAAiB,OAAO;AAAA,YACtB,MAAM,KAAK;AAAA,YACX,MAAM;AAAA,YACN,QAAQ,MAAM;AAAA,YACd,MAAM;AAAA,YACN,OAAO;AAAA,UACf,CAAO;AAAA,QACP;AAEI,cAAM,UAAU,MAAM,QAAQ,IAAI,QAAQ;AAE1C,aAAK,eAAe,OAAO;AAC3B,sBAAc,QAAQ,CAAA;AAEtB,cAAM,KAAK,QAAQ,WAAW;AAAA,UAC5B,SAAS,sBAAsB,QAAQ,MAAM;AAAA,QACnD,CAAK;AAAA,MACH,SAAS,OAAO;AACd,gBAAQ,MAAM,uBAAuB,KAAK;AAC1C,cAAM,KAAK,QAAQ,SAAS,KAAK;AACjC,cAAM;AAAA,MACR;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -8,7 +8,7 @@ import _sfc_main$6 from "../../../../components/Popup/Popup.vue.js";
|
|
|
8
8
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
9
9
|
import _sfc_main$7 from "../../../../components/Feed/Feed.vue.js";
|
|
10
10
|
import _sfc_main$5 from "../../../../components/Spoiler/Spoiler.vue2.js";
|
|
11
|
-
import _sfc_main$2 from "../../../
|
|
11
|
+
import _sfc_main$2 from "../../../core/views/components/blocks/CardUser.vue.js";
|
|
12
12
|
import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
|
|
13
13
|
import { useStore } from "../../../core/views/store/core.store.js";
|
|
14
14
|
import membershipsStore from "../../store/memberships.store.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DepartmentForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/DepartmentForm.vue"],"sourcesContent":["<template>\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <Block\n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n <div\n class=\"cols-[fit-content(100%)_1fr] mobile:cols-1\"\n >\n <UploadImage \n v-model:photo=\"currentDepartment.profile.photo\"\n :uploadPath=\"'organizations/' + currentDepartment.profile.name + '/departments'\"\n class=\"w-8r aspect-1x1 o-hidden mn-r-small radius-extra\" \n />\n <div class=\"w-100 flex-child-grow-1 flex-child\">\n <Field \n v-model:field=\"currentDepartment.profile.name\" \n label=\"Name\" \n placeholder=\"Department Name\" \n class=\"mn-b-small bg-white radius-small pd-medium\"\n />\n <Field \n v-model:field=\"currentDepartment.profile.description\" \n label=\"Description\" \n placeholder=\"Department description (max 120 symbols)\" \n class=\"bg-white radius-small pd-medium\"\n /> \n </div>\n </div>\n </Block>\n\n <Block\n title=\"Team\"\n placeholder=\"No members added yet\"\n :actions=\"[{\n label: '+',\n function: () => openMemberPopup()\n }]\"\n class=\"cols-1 gap-thin mn-b-thin\"\n > \n <CardUser \n class=\"h-4r bg-white pd-thin radius-medium w-100\" \n v-for=\"(member, index) in currentDepartment.members\" \n :key=\"member._id || index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(member)\n }\"\n />\n </Block>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium mn-b-thin\">\n <h3 class=\"mn-b-semi\">Department Settings</h3>\n \n <p class=\"p-regular mn-b-small\">Please settings for your department:</p>\n <div class=\"cols-1 gap-thin\">\n <Checkbox \n label=\"Hidden department\"\n name=\"hidden\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n @update:radio=\"updated => currentDepartment.hidden = !currentDepartment.hidden\"\n :radio=\"currentDepartment.hidden\"\n />\n </div>\n </div>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium\">\n <h3 class=\"mn-b-semi\">Accesses</h3>\n \n <p class=\"p-regular mn-b-small\">Please select organization accesses for user in department:</p>\n \n <div class=\"cols-1 gap-thin\">\n <div v-for=\"(actions, category) in currentDepartment.accesses\" :key=\"category\" class=\"mn-b-small\">\n <Spoiler :status=\"false\">\n <template #header=\"{ isOpen }\">\n <h4 class=\"cursor-pointer flex-v-center flex gap-thin\">\n {{ category.charAt(0).toUpperCase() + category.slice(1) }}\n <span class=\"t-small\">{{ isOpen ? '▼' : '▶' }}</span>\n </h4>\n </template>\n <template #content>\n <div class=\"cols-1 gap-thin mn-t-thin\">\n <Checkbox\n v-for=\"(value, action) in actions\"\n :key=\"action\"\n :label=\"action\"\n :name=\"action\"\n :radio=\"value\"\n @update:radio=\"updated => (currentDepartment.accesses[category][action] = !value)\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n />\n </div>\n </template>\n </Spoiler>\n </div>\n </div>\n </div>\n\n <!-- Delete Department -->\n <div v-if=\"editingDepartment\" class=\"bg-light pd-medium o-hidden radius-medium mn-t-thin\">\n <h3 class=\"mn-b-small\">Delete Department</h3>\n <p class=\"p-regular mn-b-medium\">Once you delete this department, all associated data including members and settings will be permanently removed. This action cannot be undone.</p>\n <Button\n :submit=\"onDelete\"\n :showSuccess=\"true\"\n :showLoader=\"true\"\n class=\"bg-red\"\n >\n Delete Department\n </Button>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"flex gap-thin mn-t-medium\">\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"bg-grey t-white w-100\"\n @click=\"$emit('close')\"\n >\n Cancel\n </Button>\n <Button\n class=\"bg-main w-100\"\n :submit=\"saveDepartment\"\n >\n {{ editingDepartment ? 'Update Department' : 'Create Department' }}\n </Button>\n </div>\n\n <!-- Member Selection Popup -->\n <Popup \n title=\"Add member\" \n @close-popup=\"closeMemberPopup\" \n :isPopupOpen=\"isOpenAddMemberPopup\"\n class=\"bg-white w-max-30r radius-medium pd-big\"\n >\n <Feed\n :search=\"{\n placeholder: 'Search member...',\n class: 'bg-light mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members in organization.'\n }\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options),\n state: null\n }\"\n :options=\"{\n target: organizationId,\n role: ['member', 'owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"bg-light pd-medium w-min-20r w-max-40r radius-medium h-max-20r o-scroll\"\n >\n <CardUser\n v-for=\"(user, index) in items\" \n :key=\"user._id\"\n :user=\"user.user\"\n :photo=\"user.user.profile?.photo\"\n :name=\"user.user.profile?.name || user.user.phone || user.user.email\"\n :disabled=\"isDuplicateMember(user.user._id)\"\n @click=\"() => addMemberToDepartment(user.user)\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n :class=\"{ 'opacity-50 cursor-not-allowed': isDuplicateMember(user.user._id) }\"\n />\n </Feed>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive, computed } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\nimport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\nconst route = useRoute();\n\nconst props = defineProps({\n department: Object,\n organizationId: String\n});\n\nconst emit = defineEmits(['close', 'saved']);\n\n// State\nconst editingDepartment = computed(() => !!props.department?._id);\nconst isOpenAddMemberPopup = ref(false);\n\n// Create default department structure\nconst createDefaultDepartment = () => ({\n organization: props.organizationId,\n profile: {\n photo: '',\n name: '',\n description: '',\n categories: [],\n },\n address: '',\n location: {\n lat: null,\n lng: null,\n },\n worktime: [],\n delivery: [],\n payment: [],\n members: [],\n subdepartments: [],\n hidden: false,\n accesses: {\n categories: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n rents: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n spots: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n members: {\n read: false,\n edit: false,\n delete: false,\n },\n posts: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n events: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n tickets: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n gallery: {\n read: false,\n create: false,\n edit: false,\n delete: false,\n },\n inventory: {\n read: false,\n edit: false,\n delete: false,\n },\n products: {\n read: false,\n edit: false,\n delete: false,\n },\n orders: {\n read: false,\n confirm: false,\n delete: false,\n },\n departments: {\n read: false,\n edit: false,\n delete: false,\n },\n },\n});\n\n// Current department reactive state - create deep copy to avoid mutating original\nconst currentDepartment = reactive(\n props.department ? JSON.parse(JSON.stringify(props.department)) : createDefaultDepartment()\n);\n\n// Member management\nfunction openMemberPopup() {\n isOpenAddMemberPopup.value = true;\n}\n\nfunction closeMemberPopup() {\n isOpenAddMemberPopup.value = false;\n}\n\nfunction isDuplicateMember(userId) {\n return currentDepartment.members.some(member => \n member.user._id === userId || member._id === userId\n );\n}\n\nfunction addMemberToDepartment(user) {\n if (!isDuplicateMember(user._id)) {\n currentDepartment.members.push({ \n _id: user._id, \n user: user, \n position: 'Member' \n });\n closeMemberPopup();\n } else {\n store.core.actions.setError({ message: 'This user is already a member of this department' });\n }\n}\n\nfunction removeMember(member) {\n if (confirm(\"Are you sure you want to remove this member?\")) {\n const index = currentDepartment.members.findIndex(m => \n (m.user._id === member.user._id) || (m._id === member._id)\n );\n if (index > -1) {\n currentDepartment.members.splice(index, 1);\n }\n }\n}\n\n// Save/Delete operations\nasync function saveDepartment() {\n try {\n // Prepare department data\n const departmentData = {\n ...currentDepartment,\n organization: props.organizationId\n };\n\n let result;\n if (editingDepartment.value) {\n // Update existing department\n result = await departmentsStore.update({\n ...departmentData,\n _id: props.department._id\n });\n } else {\n // Create new department\n result = await departmentsStore.create(departmentData);\n }\n\n emit('saved', result);\n emit('close');\n } catch (error) {\n console.error('Error saving department:', error);\n store.core.actions.setError(error);\n throw error;\n }\n}\n\nasync function onDelete() {\n if (confirm(\"Are you sure you want to delete this department?\")) {\n try {\n await departmentsStore.delete({ _id: props.department._id });\n emit('saved', null);\n emit('close');\n } catch (error) {\n console.error('Error deleting department:', error);\n store.core.actions.setError(error);\n }\n }\n}\n</script>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DepartmentForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/DepartmentForm.vue"],"sourcesContent":["<template>\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <Block\n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n <div\n class=\"cols-[fit-content(100%)_1fr] mobile:cols-1\"\n >\n <UploadImage \n v-model:photo=\"currentDepartment.profile.photo\"\n :uploadPath=\"'organizations/' + currentDepartment.profile.name + '/departments'\"\n class=\"w-8r aspect-1x1 o-hidden mn-r-small radius-extra\" \n />\n <div class=\"w-100 flex-child-grow-1 flex-child\">\n <Field \n v-model:field=\"currentDepartment.profile.name\" \n label=\"Name\" \n placeholder=\"Department Name\" \n class=\"mn-b-small bg-white radius-small pd-medium\"\n />\n <Field \n v-model:field=\"currentDepartment.profile.description\" \n label=\"Description\" \n placeholder=\"Department description (max 120 symbols)\" \n class=\"bg-white radius-small pd-medium\"\n /> \n </div>\n </div>\n </Block>\n\n <Block\n title=\"Team\"\n placeholder=\"No members added yet\"\n :actions=\"[{\n label: '+',\n function: () => openMemberPopup()\n }]\"\n class=\"cols-1 gap-thin mn-b-thin\"\n > \n <CardUser \n class=\"h-4r bg-white pd-thin radius-medium w-100\" \n v-for=\"(member, index) in currentDepartment.members\" \n :key=\"member._id || index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(member)\n }\"\n />\n </Block>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium mn-b-thin\">\n <h3 class=\"mn-b-semi\">Department Settings</h3>\n \n <p class=\"p-regular mn-b-small\">Please settings for your department:</p>\n <div class=\"cols-1 gap-thin\">\n <Checkbox \n label=\"Hidden department\"\n name=\"hidden\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n @update:radio=\"updated => currentDepartment.hidden = !currentDepartment.hidden\"\n :radio=\"currentDepartment.hidden\"\n />\n </div>\n </div>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium\">\n <h3 class=\"mn-b-semi\">Accesses</h3>\n \n <p class=\"p-regular mn-b-small\">Please select organization accesses for user in department:</p>\n \n <div class=\"cols-1 gap-thin\">\n <div v-for=\"(actions, category) in currentDepartment.accesses\" :key=\"category\" class=\"mn-b-small\">\n <Spoiler :status=\"false\">\n <template #header=\"{ isOpen }\">\n <h4 class=\"cursor-pointer flex-v-center flex gap-thin\">\n {{ category.charAt(0).toUpperCase() + category.slice(1) }}\n <span class=\"t-small\">{{ isOpen ? '▼' : '▶' }}</span>\n </h4>\n </template>\n <template #content>\n <div class=\"cols-1 gap-thin mn-t-thin\">\n <Checkbox\n v-for=\"(value, action) in actions\"\n :key=\"action\"\n :label=\"action\"\n :name=\"action\"\n :radio=\"value\"\n @update:radio=\"updated => (currentDepartment.accesses[category][action] = !value)\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n />\n </div>\n </template>\n </Spoiler>\n </div>\n </div>\n </div>\n\n <!-- Delete Department -->\n <div v-if=\"editingDepartment\" class=\"bg-light pd-medium o-hidden radius-medium mn-t-thin\">\n <h3 class=\"mn-b-small\">Delete Department</h3>\n <p class=\"p-regular mn-b-medium\">Once you delete this department, all associated data including members and settings will be permanently removed. This action cannot be undone.</p>\n <Button\n :submit=\"onDelete\"\n :showSuccess=\"true\"\n :showLoader=\"true\"\n class=\"bg-red\"\n >\n Delete Department\n </Button>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"flex gap-thin mn-t-medium\">\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"bg-grey t-white w-100\"\n @click=\"$emit('close')\"\n >\n Cancel\n </Button>\n <Button\n class=\"bg-main w-100\"\n :submit=\"saveDepartment\"\n >\n {{ editingDepartment ? 'Update Department' : 'Create Department' }}\n </Button>\n </div>\n\n <!-- Member Selection Popup -->\n <Popup \n title=\"Add member\" \n @close-popup=\"closeMemberPopup\" \n :isPopupOpen=\"isOpenAddMemberPopup\"\n class=\"bg-white w-max-30r radius-medium pd-big\"\n >\n <Feed\n :search=\"{\n placeholder: 'Search member...',\n class: 'bg-light mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members in organization.'\n }\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options),\n state: null\n }\"\n :options=\"{\n target: organizationId,\n role: ['member', 'owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"bg-light pd-medium w-min-20r w-max-40r radius-medium h-max-20r o-scroll\"\n >\n <CardUser\n v-for=\"(user, index) in items\" \n :key=\"user._id\"\n :user=\"user.user\"\n :photo=\"user.user.profile?.photo\"\n :name=\"user.user.profile?.name || user.user.phone || user.user.email\"\n :disabled=\"isDuplicateMember(user.user._id)\"\n @click=\"() => addMemberToDepartment(user.user)\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n :class=\"{ 'opacity-50 cursor-not-allowed': isDuplicateMember(user.user._id) }\"\n />\n </Feed>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive, computed } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\n\nimport CardUser from '@martyrs/src/modules/core/views/components/blocks/CardUser.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\nimport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\nconst route = useRoute();\n\nconst props = defineProps({\n department: Object,\n organizationId: String\n});\n\nconst emit = defineEmits(['close', 'saved']);\n\n// State\nconst editingDepartment = computed(() => !!props.department?._id);\nconst isOpenAddMemberPopup = ref(false);\n\n// Create default department structure\nconst createDefaultDepartment = () => ({\n organization: props.organizationId,\n profile: {\n photo: '',\n name: '',\n description: '',\n categories: [],\n },\n address: '',\n location: {\n lat: null,\n lng: null,\n },\n worktime: [],\n delivery: [],\n payment: [],\n members: [],\n subdepartments: [],\n hidden: false,\n accesses: {\n categories: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n rents: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n spots: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n members: {\n read: false,\n edit: false,\n delete: false,\n },\n posts: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n events: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n tickets: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n gallery: {\n read: false,\n create: false,\n edit: false,\n delete: false,\n },\n inventory: {\n read: false,\n edit: false,\n delete: false,\n },\n products: {\n read: false,\n edit: false,\n delete: false,\n },\n orders: {\n read: false,\n confirm: false,\n delete: false,\n },\n departments: {\n read: false,\n edit: false,\n delete: false,\n },\n },\n});\n\n// Current department reactive state - create deep copy to avoid mutating original\nconst currentDepartment = reactive(\n props.department ? JSON.parse(JSON.stringify(props.department)) : createDefaultDepartment()\n);\n\n// Member management\nfunction openMemberPopup() {\n isOpenAddMemberPopup.value = true;\n}\n\nfunction closeMemberPopup() {\n isOpenAddMemberPopup.value = false;\n}\n\nfunction isDuplicateMember(userId) {\n return currentDepartment.members.some(member => \n member.user._id === userId || member._id === userId\n );\n}\n\nfunction addMemberToDepartment(user) {\n if (!isDuplicateMember(user._id)) {\n currentDepartment.members.push({ \n _id: user._id, \n user: user, \n position: 'Member' \n });\n closeMemberPopup();\n } else {\n store.core.actions.setError({ message: 'This user is already a member of this department' });\n }\n}\n\nfunction removeMember(member) {\n if (confirm(\"Are you sure you want to remove this member?\")) {\n const index = currentDepartment.members.findIndex(m => \n (m.user._id === member.user._id) || (m._id === member._id)\n );\n if (index > -1) {\n currentDepartment.members.splice(index, 1);\n }\n }\n}\n\n// Save/Delete operations\nasync function saveDepartment() {\n try {\n // Prepare department data\n const departmentData = {\n ...currentDepartment,\n organization: props.organizationId\n };\n\n let result;\n if (editingDepartment.value) {\n // Update existing department\n result = await departmentsStore.update({\n ...departmentData,\n _id: props.department._id\n });\n } else {\n // Create new department\n result = await departmentsStore.create(departmentData);\n }\n\n emit('saved', result);\n emit('close');\n } catch (error) {\n console.error('Error saving department:', error);\n store.core.actions.setError(error);\n throw error;\n }\n}\n\nasync function onDelete() {\n if (confirm(\"Are you sure you want to delete this department?\")) {\n try {\n await departmentsStore.delete({ _id: props.department._id });\n emit('saved', null);\n emit('close');\n } catch (error) {\n console.error('Error deleting department:', error);\n store.core.actions.setError(error);\n }\n }\n}\n</script>\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import Field from "../../../../components/Field/Field.vue.js";
|
|
|
3
3
|
import Button from "../../../../components/Button/Button.vue2.js";
|
|
4
4
|
import _sfc_main$2 from "../../../icons/navigation/IconDelete.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../../../icons/navigation/IconAdd.vue.js";
|
|
6
|
-
const _hoisted_1 = { class: "mn-b-thin
|
|
6
|
+
const _hoisted_1 = { class: "mn-b-thin opacity-50 p-regular" };
|
|
7
7
|
const _hoisted_2 = { class: "cols-1 mn-b-small radius-medium pd-semi bg-light pos-relative" };
|
|
8
8
|
const _hoisted_3 = ["onClick"];
|
|
9
9
|
const _sfc_main = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InviteForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/InviteForm.vue"],"sourcesContent":["<template>\n <div>\n <p class=\"mn-b-thin
|
|
1
|
+
{"version":3,"file":"InviteForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/InviteForm.vue"],"sourcesContent":["<template>\n <div>\n <p class=\"mn-b-thin opacity-50 p-regular\">{{ text }}</p> \n\n <section class=\"cols-1 mn-b-small radius-medium pd-semi bg-light pos-relative\">\n <div\n v-for=\"(member, index) in members\" \n :key=\"index\" \n class=\"br-1px br-grey-transp-25 flex gap-thin radius-small mn-b-thin\"\n >\n <Field \n v-model:field=\"member.contact\" \n placeholder=\"Enter email or phone\" \n class=\"w-100 pd-small radius-small bg-white\"\n :validation=\"contactValidation\"\n >\n <div \n v-if=\"index < 1\" \n @click=\"() => members.push({contact: ''})\" \n class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-green\"\n >\n <IconAdd \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n\n <div \n v-else \n @click=\"() => members.splice(index, 1)\" \n class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n </Field>\n </div>\n </section>\n\n <Button \n :submit=\"submitMembers\" \n class=\"w-100 bg-main\"\n >\n <span>Send invitations</span>\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';\n\nconst props = defineProps({\n organization: Object,\n text: {\n type: String,\n default: 'Please enter email or phone number to send an invitation link:'\n }\n});\n\nconst emit = defineEmits(['send-invite']);\n\n// Validation\nconst contactValidation = ref(null);\n\n// Members list\nconst members = ref([{ contact: '' }]);\n\nasync function submitMembers() {\n return new Promise((resolve, reject) => {\n emit('send-invite', members.value, resolve, reject);\n });\n}\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAmEA,UAAM,OAAO;AAGb,UAAM,oBAAoB,IAAI,IAAI;AAGlC,UAAM,UAAU,IAAI,CAAC,EAAE,SAAS,GAAE,CAAE,CAAC;AAErC,mBAAe,gBAAgB;AAC7B,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,aAAK,eAAe,QAAQ,OAAO,SAAS,MAAM;AAAA,MACpD,CAAC;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,7 @@ import { withAsyncContext, resolveComponent, createElementBlock, openBlock, crea
|
|
|
2
2
|
import { useRouter, useRoute } from "vue-router";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import "../../organizations.client.js";
|
|
5
|
-
import _sfc_main$2 from "../../../
|
|
5
|
+
import _sfc_main$2 from "../../../core/views/components/blocks/CardUser.vue.js";
|
|
6
6
|
import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
|
|
7
7
|
import departmentsStore from "../../store/departments.store.js";
|
|
8
8
|
import DepartmentSub from "../blocks/DepartmentSub.vue.js";
|
|
@@ -54,7 +54,7 @@ const _sfc_main = {
|
|
|
54
54
|
}, 8, ["to"])
|
|
55
55
|
]),
|
|
56
56
|
createElementVNode("p", {
|
|
57
|
-
class: "
|
|
57
|
+
class: "opacity-50 p-medium",
|
|
58
58
|
innerHTML: unref(departmentsStore).state.items[0].description
|
|
59
59
|
}, null, 8, _hoisted_6)
|
|
60
60
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Department.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Department.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n \n <div v-if=\"departmentsStore.state.items.length > 0\" id=\"dash\" class=\"pd-medium bg-light\">\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <div class=\"flex-nowrap flex mn-b-small\">\n\n <h2 class=\"w-100\">{{ departmentsStore.state.items[0].profile.name }}</h2>\n\n <router-link \n :to=\"{\n name: 'Department Edit', \n params: {\n _id: route.params._id,\n department: route.params.department\n }\n }\" \n class=\"\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-medium\"\n classes=\"fill-white\"\n />\n </router-link>\n\n </div>\n <p class=\"
|
|
1
|
+
{"version":3,"file":"Department.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Department.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n \n <div v-if=\"departmentsStore.state.items.length > 0\" id=\"dash\" class=\"pd-medium bg-light\">\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <div class=\"flex-nowrap flex mn-b-small\">\n\n <h2 class=\"w-100\">{{ departmentsStore.state.items[0].profile.name }}</h2>\n\n <router-link \n :to=\"{\n name: 'Department Edit', \n params: {\n _id: route.params._id,\n department: route.params.department\n }\n }\" \n class=\"\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-medium\"\n classes=\"fill-white\"\n />\n </router-link>\n\n </div>\n <p class=\"opacity-50 p-medium\" v-html=\"departmentsStore.state.items[0].description\"></p>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Команда</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.members?.length < 1\">В отделе еще нет участников</li>\n <User \n class=\"br-b-1px br-grey-transp-25\" \n v-for=\"(member, index) in departmentsStore.state.items[0]?.members || []\" \n :key=\"index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n />\n </ul>\n </section>\n\n <section class=\"mn-b-medium radius-medium pd-semi bg-white\">\n <h3 class=\"mn-b-regular\">Подотделы</h3>\n <ul>\n <li v-if=\"departmentsStore.state.items[0]?.subdepartments?.length < 1\">В отделе еще нет подотделов</li>\n <DepartmentSub v-for=\"(subdepartment, index) in departmentsStore.state.items[0]?.subdepartments || []\" @click=\"$router.push(`/app/organization/departments/${subdepartment._id}`)\" :key=\"index\" class=\"br-b-1px br-grey-transp-25\" :department=\"subdepartment\" />\n </ul> \n </section>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\nimport { DepartmentSub, departmentsStore } from '@martyrs/src/modules/organizations/organizations.client.js';\nimport User from '@martyrs/src/modules/core/views/components/blocks/CardUser.vue';\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nconst router = useRouter();\nconst route = useRoute();\n\nawait departmentsStore.read({ _id: route.params.department });\n</script>\n\n<style scoped>\n</style>\n"],"names":["_withAsyncContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAsEe,cAAS;AACxB,UAAM,QAAQ,SAAQ;AAEtB,IAAA,CAAA,QAAA,SAAA,IAAAA,iBAAA,MAAM,iBAAiB,KAAK,EAAE,KAAK,MAAM,OAAO,WAAU,CAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
|
4
4
|
import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../../../core/views/components/sections/SectionPageTitle.vue.js";
|
|
6
6
|
import "../../organizations.client.js";
|
|
7
|
-
import _sfc_main$3 from "../../../
|
|
7
|
+
import _sfc_main$3 from "../../../core/views/components/blocks/CardUser.vue.js";
|
|
8
8
|
import _sfc_main$4 from "../../../icons/navigation/IconDelete.vue.js";
|
|
9
9
|
import { state } from "../../../auth/views/store/auth.js";
|
|
10
10
|
import { useStore } from "../../../core/views/store/core.store.js";
|
|
@@ -149,13 +149,13 @@ const _sfc_main = {
|
|
|
149
149
|
return (_ctx, _cache) => {
|
|
150
150
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
151
151
|
!isLoaded.value ? (openBlock(), createElementBlock("div", _hoisted_2, _cache[4] || (_cache[4] = [
|
|
152
|
-
createElementVNode("span", { class: "
|
|
152
|
+
createElementVNode("span", { class: "opacity-50" }, "Loading...", -1)
|
|
153
153
|
]))) : (openBlock(), createElementBlock("div", _hoisted_3, [
|
|
154
154
|
createElementVNode("section", _hoisted_4, [
|
|
155
155
|
createVNode(_sfc_main$1, {
|
|
156
156
|
title: `Members ${organizationData.value?.numberOfMembers ? `(${organizationData.value.numberOfMembers})` : ""}`,
|
|
157
157
|
actions: [
|
|
158
|
-
{ method: openAddUsersPopup, label: "Add
|
|
158
|
+
{ method: openAddUsersPopup, label: "+ Add Member" }
|
|
159
159
|
],
|
|
160
160
|
class: "mn-b-small bg-light radius-medium pd-medium"
|
|
161
161
|
}, null, 8, ["title", "actions"]),
|
|
@@ -212,7 +212,7 @@ const _sfc_main = {
|
|
|
212
212
|
createVNode(_sfc_main$1, {
|
|
213
213
|
title: "Departments",
|
|
214
214
|
actions: [
|
|
215
|
-
{ method: () => openDepartmentPopup(), label: "Add
|
|
215
|
+
{ method: () => openDepartmentPopup(), label: "+ Add Department" }
|
|
216
216
|
],
|
|
217
217
|
class: "mn-b-small bg-light bg-light radius-medium pd-medium"
|
|
218
218
|
}, null, 8, ["actions"]),
|
|
@@ -255,7 +255,7 @@ const _sfc_main = {
|
|
|
255
255
|
createVNode(_sfc_main$1, {
|
|
256
256
|
title: "Invites",
|
|
257
257
|
actions: [
|
|
258
|
-
{ method: openInvitePopup, label: "Invite
|
|
258
|
+
{ method: openInvitePopup, label: "+ Invite Members" }
|
|
259
259
|
],
|
|
260
260
|
class: "mn-b-small bg-light bg-light radius-medium pd-medium"
|
|
261
261
|
}, null, 8, ["actions"]),
|
|
@@ -357,7 +357,7 @@ const _sfc_main = {
|
|
|
357
357
|
title: "Invite members",
|
|
358
358
|
onClosePopup: closeInvitePopup,
|
|
359
359
|
isPopupOpen: isOpenInvitePopup.value,
|
|
360
|
-
class: "bg-white w-
|
|
360
|
+
class: "bg-white w-clamp-30r-30r-100 radius-medium pd-medium"
|
|
361
361
|
}, {
|
|
362
362
|
default: withCtx(() => [
|
|
363
363
|
organizationData.value ? (openBlock(), createBlock(unref(_sfc_main$6), {
|
|
@@ -372,7 +372,7 @@ const _sfc_main = {
|
|
|
372
372
|
title: "Add users to organization",
|
|
373
373
|
onClosePopup: closeAddUsersPopup,
|
|
374
374
|
isPopupOpen: isOpenAddUsersPopup.value,
|
|
375
|
-
class: "bg-white w-
|
|
375
|
+
class: "bg-white w-clamp-40r-50r-100 radius-medium pd-medium"
|
|
376
376
|
}, {
|
|
377
377
|
default: withCtx(() => [
|
|
378
378
|
createVNode(unref(_sfc_main$7), {
|
|
@@ -387,7 +387,7 @@ const _sfc_main = {
|
|
|
387
387
|
onClosePopup: closeDepartmentPopup,
|
|
388
388
|
isPopupOpen: isDepartmentPopupOpen.value,
|
|
389
389
|
align: "center right",
|
|
390
|
-
class: "bg-white h-min-100 w-
|
|
390
|
+
class: "bg-white h-min-100 w-clamp-0-50r-100 pd-medium"
|
|
391
391
|
}, {
|
|
392
392
|
default: withCtx(() => [
|
|
393
393
|
createVNode(unref(_sfc_main$8), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Members.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"t-transp\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: 'Add user to organization' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: 'Add department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover:scale-[1.05]\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: 'Invite members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Subscribers Section -->\n <section>\n <SectionPageTitle\n title=\"Subscribers\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"subscribersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Subscribers',\n description: 'Currently, there are no subscribers.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['subscriber']\n }\"\n v-slot=\"{\n items\n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser\n v-for=\"(subscriber, index) in items\"\n :key=\"index\"\n :user=\"subscriber\"\n :_id=\"subscriber.user._id\"\n :photo=\"subscriber.user.profile.photo\"\n :phone=\"subscriber.user.phone\"\n :email=\"subscriber.user.email\"\n :name=\"subscriber.user.profile.name || 'No name'\"\n :role=\"'subscriber'\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: subscriber.user._id } })\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeSubscriber(index, subscriber)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-min-40r w-max-50r radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst subscribersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n }\n}\n\nasync function removeSubscriber(index, subscriber) {\n if (confirm(\"Confirm remove of subscriber\") == true) {\n await membershipsStore.delete(subscriber);\n membershipsStore.removeItem(subscriber, subscribersList.value);\n }\n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>\n"],"names":["organization.actions","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqRc,aAAQ;AAEtB,UAAM,QAAQ,SAAQ;AACP,cAAS;AAGxB,UAAM,mBAAmB,IAAI,IAAI;AACjC,UAAM,cAAc,IAAI,EAAE;AAC1B,UAAM,kBAAkB,IAAI,EAAE;AAC9B,UAAM,cAAc,IAAI,EAAE;AAC1B,UAAM,kBAAkB,IAAI,EAAE;AAC9B,UAAM,WAAW,IAAI,KAAK;AAG1B,UAAM,oBAAoB,IAAI,KAAK;AACnC,UAAM,sBAAsB,IAAI,KAAK;AACrC,UAAM,wBAAwB,IAAI,KAAK;AACvC,UAAM,oBAAoB,IAAI,IAAI;AAGlC,aAAS,kBAAkB;AACzB,wBAAkB,QAAQ;AAAA,IAC5B;AAEA,aAAS,mBAAmB;AAC1B,wBAAkB,QAAQ;AAAA,IAC5B;AAEA,aAAS,oBAAoB;AAC3B,0BAAoB,QAAQ;AAAA,IAC9B;AAEA,aAAS,qBAAqB;AAC5B,0BAAoB,QAAQ;AAAA,IAC9B;AAEA,aAAS,oBAAoB,aAAa,MAAM;AAC9C,wBAAkB,QAAQ;AAC1B,4BAAsB,QAAQ;AAAA,IAChC;AAEA,aAAS,uBAAuB;AAC9B,4BAAsB,QAAQ;AAC9B,wBAAkB,QAAQ;AAAA,IAC5B;AAGA,cAAU,YAAY;AACpB,UAAI;AACF,cAAM,WAAW,MAAMA,QAAqB,KAAK;AAAA,UAC/C,KAAK,MAAM,OAAO;AAAA,UAClB,MAAMC,MAAW,KAAK;AAAA,QAC5B,CAAK;AACD,yBAAiB,QAAQ,SAAS,CAAC;AACnC,iBAAS,QAAQ;AAAA,MACnB,SAAS,OAAO;AACd,gBAAQ,MAAM,+BAA+B,KAAK;AAClD,iBAAS,QAAQ;AAAA,MACnB;AAAA,IACF,CAAC;AAGD,mBAAe,iBAAiB,MAAM,SAAS,QAAQ;AACrD,UAAI;AACF,cAAM,WAAW,MAAM,aAAa,OAAO;AAAA,UACzC,OAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ,iBAAiB,MAAM;AAAA,UACvC;AAAA,UACM,SAAS;AAAA,YACP,MAAM;AAAA,YACN,QAAQA,MAAW,KAAK;AAAA,UAChC;AAAA,UACM,SAAS;AAAA,QACf,CAAK;AAGD,YAAI,SAAS,gBAAgB;AAC3B,mBAAS,UAAU,SAAS,gBAAgB;AAC1C,yBAAa,QAAQ,QAAQ,YAAY,KAAK;AAAA,UAChD;AAAA,QACF,WAAW,SAAS,KAAK;AAEvB,uBAAa,QAAQ,UAAU,YAAY,KAAK;AAAA,QAClD;AAEA,yBAAgB;AAChB,gBAAO;AAAA,MACT,SAAS,OAAO;AACd,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAEA,aAAS,iBAAiB,YAAY;AACpC,yBAAkB;AAElB,UAAI,cAAc,WAAW,SAAS,GAAG;AACvC,mBAAW,QAAQ,gBAAc;AAC/B,2BAAiB,QAAQ,YAAY,YAAY,KAAK;AAAA,QACxD,CAAC;AAAA,MACH;AAAA,IACF;AAEA,aAAS,sBAAsB,YAAY;AACzC,2BAAoB;AAEpB,cAAQ,IAAI,sCAAsC,UAAU;AAC5D,cAAQ,IAAI,kCAAkC,gBAAgB,KAAK;AACnE,cAAQ,IAAI,sBAAsB,kBAAkB,KAAK;AAEzD,UAAI,YAAY;AAEd,YAAI,kBAAkB,OAAO;AAC3B,2BAAiB,WAAW,YAAY,gBAAgB,KAAK;AAAA,QAC/D,OAAO;AACL,2BAAiB,QAAQ,YAAY,gBAAgB,KAAK;AAAA,QAC5D;AAAA,MACF,OAAO;AAEL,YAAI,kBAAkB,OAAO;AAC3B,2BAAiB,WAAW,kBAAkB,OAAO,gBAAgB,KAAK;AAAA,QAC5E;AAAA,MACF;AAEA,cAAQ,IAAI,iCAAiC,gBAAgB,KAAK;AAAA,IACpE;AAEA,mBAAe,aAAa,OAAO,QAAQ;AACzC,UAAI,QAAQ,0BAA0B,KAAK,MAAM;AAC/C,cAAM,iBAAiB,OAAO,MAAM;AACpC,yBAAiB,WAAW,QAAQ,YAAY,KAAK;AAAA,MACvD;AAAA,IACF;AAEA,mBAAe,iBAAiB,OAAO,YAAY;AACjD,UAAI,QAAQ,8BAA8B,KAAK,MAAM;AACnD,cAAM,iBAAiB,OAAO,UAAU;AACxC,yBAAiB,WAAW,YAAY,gBAAgB,KAAK;AAAA,MAC/D;AAAA,IACF;AAEA,mBAAe,aAAa,OAAO,QAAQ;AACzC,UAAI,QAAQ,0BAA0B,KAAK,MAAM;AAC/C,cAAM,aAAa,OAAO,MAAM;AAChC,qBAAa,WAAW,QAAQ,YAAY,KAAK;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Members.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"opacity-50\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: '+ Add Member' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: '+ Add Department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover:scale-[1.05]\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: '+ Invite Members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Subscribers Section -->\n <section>\n <SectionPageTitle\n title=\"Subscribers\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"subscribersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Subscribers',\n description: 'Currently, there are no subscribers.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['subscriber']\n }\"\n v-slot=\"{\n items\n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser\n v-for=\"(subscriber, index) in items\"\n :key=\"index\"\n :user=\"subscriber\"\n :_id=\"subscriber.user._id\"\n :photo=\"subscriber.user.profile.photo\"\n :phone=\"subscriber.user.phone\"\n :email=\"subscriber.user.email\"\n :name=\"subscriber.user.profile.name || 'No name'\"\n :role=\"'subscriber'\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: subscriber.user._id } })\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeSubscriber(index, subscriber)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-clamp-30r-30r-100 radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-clamp-40r-50r-100 radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-clamp-0-50r-100 pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/core/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst subscribersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n }\n}\n\nasync function removeSubscriber(index, subscriber) {\n if (confirm(\"Confirm remove of subscriber\") == true) {\n await membershipsStore.delete(subscriber);\n membershipsStore.removeItem(subscriber, subscribersList.value);\n }\n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>\n"],"names":["organization.actions","auth.state"],"mappings":"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"}
|