@ozdao/prometheus-framework 0.2.323 โ 0.2.324
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/Media-BjSScxrV.js +1 -0
- package/dist/Media-CCVndMgQ.mjs +111 -0
- package/dist/main-BBmjvE8i.js +92 -0
- package/dist/main-BCskq3d2.mjs +13068 -0
- package/dist/main.css +1 -1
- package/dist/prometheus-framework/src/components/Button/Button.vue.cjs +9 -11
- package/dist/prometheus-framework/src/components/Button/Button.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/Button/Button.vue.js +10 -12
- package/dist/prometheus-framework/src/components/Button/Button.vue.js.map +1 -1
- package/dist/prometheus-framework/src/components/DatePicker/Calendar.vue2.cjs +37 -9
- package/dist/prometheus-framework/src/components/DatePicker/Calendar.vue2.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/DatePicker/Calendar.vue2.js +37 -9
- package/dist/prometheus-framework/src/components/DatePicker/Calendar.vue2.js.map +1 -1
- package/dist/prometheus-framework/src/components/DatePicker/DatePicker.vue.cjs +27 -18
- package/dist/prometheus-framework/src/components/DatePicker/DatePicker.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/DatePicker/DatePicker.vue.js +27 -18
- package/dist/prometheus-framework/src/components/DatePicker/DatePicker.vue.js.map +1 -1
- package/dist/prometheus-framework/src/components/EmptyState/EmptyState.vue.cjs +2 -2
- package/dist/prometheus-framework/src/components/EmptyState/EmptyState.vue.js +2 -2
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs +6 -2
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.js +6 -2
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/prometheus-framework/src/components/Media/Media.vue.cjs +154 -0
- package/dist/prometheus-framework/src/components/Media/Media.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/components/Media/Media.vue.js +154 -0
- package/dist/prometheus-framework/src/components/Media/Media.vue.js.map +1 -0
- package/dist/prometheus-framework/src/components/Popup/Popup.vue.cjs +1 -4
- package/dist/prometheus-framework/src/components/Popup/Popup.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/Popup/Popup.vue.js +1 -4
- package/dist/prometheus-framework/src/components/Popup/Popup.vue.js.map +1 -1
- package/dist/prometheus-framework/src/components/Slider/Slider.vue.cjs +68 -37
- package/dist/prometheus-framework/src/components/Slider/Slider.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/Slider/Slider.vue.js +69 -38
- package/dist/prometheus-framework/src/components/Slider/Slider.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.js +2 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/backoffice.client.cjs +0 -2
- package/dist/prometheus-framework/src/modules/backoffice/backoffice.client.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/backoffice.client.js +4 -6
- package/dist/prometheus-framework/src/modules/backoffice/backoffice.client.js.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.cjs +119 -4
- package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.js +120 -5
- package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.cjs +113 -164
- package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.js +120 -171
- package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/router/backoffice.cjs +0 -17
- package/dist/prometheus-framework/src/modules/backoffice/router/backoffice.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/router/backoffice.js +2 -19
- package/dist/prometheus-framework/src/modules/backoffice/router/backoffice.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs +17 -77
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js +22 -82
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/components/sections/HotPosts.vue.js +4 -4
- package/dist/prometheus-framework/src/modules/events/components/blocks/CardEvent.vue.cjs +34 -25
- package/dist/prometheus-framework/src/modules/events/components/blocks/CardEvent.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/blocks/CardEvent.vue.js +35 -26
- package/dist/prometheus-framework/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/Event.vue.cjs +9 -4
- package/dist/prometheus-framework/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/Event.vue.js +20 -15
- package/dist/prometheus-framework/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.cjs +221 -50
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.js +225 -54
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/sections/EventsHot.vue.cjs +98 -0
- package/dist/prometheus-framework/src/modules/events/components/sections/EventsHot.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/events/components/sections/EventsHot.vue.js +98 -0
- package/dist/prometheus-framework/src/modules/events/components/sections/EventsHot.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/events/components/sections/FeaturedEvents.vue.cjs +9 -9
- package/dist/prometheus-framework/src/modules/events/components/sections/FeaturedEvents.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/sections/FeaturedEvents.vue.js +9 -9
- package/dist/prometheus-framework/src/modules/events/components/sections/FeaturedEvents.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/sections/List.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/sections/List.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/sections/List.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/sections/List.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/events/events.client.cjs +1 -0
- package/dist/prometheus-framework/src/modules/events/events.client.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/events.client.js +1 -0
- package/dist/prometheus-framework/src/modules/events/events.client.js.map +1 -1
- package/dist/prometheus-framework/src/modules/events/router/events.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/router/events.js.map +1 -1
- package/dist/prometheus-framework/src/modules/events/store/events.cjs +2 -1
- package/dist/prometheus-framework/src/modules/events/store/events.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/store/events.js +2 -1
- package/dist/prometheus-framework/src/modules/events/store/events.js.map +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/App.vue.cjs +4 -4
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/App.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/App.vue.js +4 -4
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/App.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.cjs +11 -5
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js +11 -5
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/CitySelection.vue.cjs +100 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/CitySelection.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/CitySelection.vue.js +100 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/CitySelection.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs +5 -6
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js +5 -6
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.cjs +1 -6
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.js +1 -6
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/mixins/mixins.cjs +30 -14
- package/dist/prometheus-framework/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/mixins/mixins.js +30 -14
- package/dist/prometheus-framework/src/modules/globals/views/mixins/mixins.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/actions/IconShopcartAdd.vue.cjs +33 -0
- package/dist/prometheus-framework/src/modules/icons/actions/IconShopcartAdd.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/actions/IconShopcartAdd.vue.js +33 -0
- package/dist/prometheus-framework/src/modules/icons/actions/IconShopcartAdd.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconCommunity.vue.cjs +4 -17
- package/dist/prometheus-framework/src/modules/icons/entities/IconCommunity.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/entities/IconCommunity.vue.js +4 -17
- package/dist/prometheus-framework/src/modules/icons/entities/IconCommunity.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/entities/IconPayments.vue.cjs +34 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconPayments.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconPayments.vue.js +34 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconPayments.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconPrice.vue.cjs +27 -17
- package/dist/prometheus-framework/src/modules/icons/entities/IconPrice.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/entities/IconPrice.vue.js +28 -18
- package/dist/prometheus-framework/src/modules/icons/entities/IconPrice.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/icons.client.cjs +2 -0
- package/dist/prometheus-framework/src/modules/icons/icons.client.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/icons.client.js +50 -48
- package/dist/prometheus-framework/src/modules/icons/icons.client.js.map +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/blocks/CardOrderItem.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/blocks/CardOrderItem.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/orders/store/shopcart.cjs +67 -2
- package/dist/prometheus-framework/src/modules/orders/store/shopcart.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/orders/store/shopcart.js +67 -2
- package/dist/prometheus-framework/src/modules/orders/store/shopcart.js.map +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardOrganization.vue.js +7 -7
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTabSection.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/pages/pages.client.cjs +773 -745
- package/dist/prometheus-framework/src/modules/pages/pages.client.js +773 -745
- package/dist/prometheus-framework/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.cjs +4 -15
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.js +4 -15
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs +4 -4
- package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.js +4 -4
- package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/elements/Price.vue.cjs +24 -30
- package/dist/prometheus-framework/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/elements/Price.vue.js +25 -31
- package/dist/prometheus-framework/src/modules/products/components/elements/Price.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/products/components/pages/Product.vue.cjs +236 -13
- package/dist/prometheus-framework/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Product.vue.js +239 -16
- package/dist/prometheus-framework/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs +60 -14
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js +67 -21
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/products/products.client.cjs +0 -3
- package/dist/prometheus-framework/src/modules/products/products.client.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/products.client.js +48 -51
- package/dist/prometheus-framework/src/modules/products/products.client.js.map +1 -1
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
- package/dist/prometheus-framework.cjs.js +1 -92
- package/dist/prometheus-framework.es.js +36 -13005
- package/package.json +1 -1
- package/src/components/Button/Button.vue +43 -40
- package/src/components/DatePicker/Calendar.vue +15 -7
- package/src/components/DatePicker/DatePicker.vue +50 -40
- package/src/components/EmptyState/EmptyState.vue +2 -2
- package/src/components/Feed/Feed.vue +6 -2
- package/src/components/Media/Media.vue +211 -0
- package/src/components/Popup/Popup.vue +19 -21
- package/src/components/Slider/Slider.vue +57 -21
- package/src/components/index.js +1 -0
- package/src/main.js +3 -1
- package/src/modules/auth/views/components/pages/Profile.vue +2 -1
- package/src/modules/backoffice/backoffice.client.js +0 -2
- package/src/modules/backoffice/components/pages/Dashboard.vue +95 -2
- package/src/modules/backoffice/components/partials/Sidebar.vue +115 -132
- package/src/modules/backoffice/router/backoffice.js +0 -14
- package/src/modules/community/components/layouts/Community.vue +1 -52
- package/src/modules/events/components/blocks/CardEvent.vue +28 -22
- package/src/modules/events/components/pages/Event.vue +2 -6
- package/src/modules/events/components/pages/Events.vue +241 -56
- package/src/modules/events/components/sections/EventsHot.vue +93 -0
- package/src/modules/events/components/sections/FeaturedEvents.vue +17 -15
- package/src/modules/events/components/sections/List.vue +1 -1
- package/src/modules/events/events.client.js +1 -0
- package/src/modules/events/router/events.js +0 -4
- package/src/modules/events/store/events.js +1 -0
- package/src/modules/globals/views/components/layouts/App.vue +4 -5
- package/src/modules/globals/views/components/layouts/Client.vue +8 -2
- package/src/modules/globals/views/components/partials/CitySelection.vue +88 -0
- package/src/modules/globals/views/components/partials/Header.vue +3 -3
- package/src/modules/globals/views/components/partials/Navigation.vue +75 -20
- package/src/modules/globals/views/components/partials/Sidebar.vue +2 -9
- package/src/modules/globals/views/mixins/mixins.js +56 -35
- package/src/modules/governance/DESCRIPTION.MD +238 -0
- package/src/modules/governance/controllers/factories/initiatives.controller.js +3 -1
- package/src/modules/governance/controllers/routes/initiatives.routes.js +1 -1
- package/src/modules/governance/controllers/routes/tasks.routes.js +1 -1
- package/src/modules/governance/controllers/routes/votes.routes.js +1 -1
- package/src/modules/governance/controllers/routes/votings.routes.js +1 -1
- package/src/modules/governance/governance.client.js +35 -35
- package/src/modules/governance/governance.server.js +8 -8
- package/src/modules/governance/models/milestone.model.js +98 -0
- package/src/modules/governance/models/task.model.js +39 -7
- package/src/modules/governance/views/components/pages/Initiative.vue +1 -1
- package/src/modules/governance/views/components/pages/InitiativeCreate.vue +2 -2
- package/src/modules/governance/views/components/pages/Initiatives.vue +3 -2
- package/src/modules/governance/views/components/pages/Task.vue +1 -1
- package/src/modules/governance/views/components/pages/TaskCreate.vue +2 -2
- package/src/modules/governance/views/components/pages/Tasks.vue +2 -2
- package/src/modules/governance/views/components/pages/Voting.vue +3 -3
- package/src/modules/governance/views/components/pages/VotingCreate.vue +2 -2
- package/src/modules/governance/views/components/pages/Votings.vue +2 -2
- package/src/modules/governance/views/components/sections/VoteForm.vue +1 -1
- package/src/modules/governance/views/router/goverance.router.js +263 -0
- package/src/modules/icons/actions/IconShopcartAdd.vue +15 -0
- package/src/modules/icons/entities/IconCommunity.vue +4 -6
- package/src/modules/icons/entities/IconPayments.vue +14 -0
- package/src/modules/icons/entities/IconPrice.vue +12 -3
- package/src/modules/icons/icons.client.js +5 -0
- package/src/modules/icons/logos/Logotype.vue +50 -17
- package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -0
- package/src/modules/orders/store/shopcart.js +100 -1
- package/src/modules/organizations/components/pages/Organizations.vue +1 -1
- package/src/modules/products/components/blocks/CardProduct.vue +5 -11
- package/src/modules/products/components/blocks/ImagesThumbnails.vue +4 -4
- package/src/modules/products/components/elements/Price.vue +33 -56
- package/src/modules/products/components/pages/Product.vue +235 -13
- package/src/modules/products/components/sections/SectionProduct.vue +50 -25
- package/src/modules/products/products.client.js +0 -4
- package/src/styles/base/all.scss +15 -16
- package/src/styles/config.scss +2 -2
- package/src/modules/backoffice/components/layouts/Backoffice.vue +0 -55
- package/src/modules/events/components/sections/SectionLineup.vue +0 -42
- package/src/modules/events/components/sections/SectionMainGuest.vue +0 -95
- package/src/modules/events/components/sections/SectionPreviousEvents.vue +0 -117
- package/src/modules/events/components/sections/SectionSpecialGuests.vue +0 -46
- package/src/modules/governance/controllers/factories/projects.controller.js +0 -65
- package/src/modules/governance/controllers/routes/projects.routes.js +0 -34
- package/src/modules/governance/models/project.model.js +0 -26
@@ -0,0 +1,154 @@
|
|
1
|
+
import { ref, computed, onMounted, onUnmounted, openBlock, createElementBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString } from "vue";
|
2
|
+
/* empty css */
|
3
|
+
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
|
4
|
+
const _hoisted_1 = { class: "media-container" };
|
5
|
+
const _hoisted_2 = ["src", "data-src", "alt"];
|
6
|
+
const _hoisted_3 = ["controls", "loop", "muted", "autoplay", "playsinline", "preload"];
|
7
|
+
const _hoisted_4 = ["src", "type"];
|
8
|
+
const _hoisted_5 = {
|
9
|
+
key: 2,
|
10
|
+
class: "media-placeholder"
|
11
|
+
};
|
12
|
+
const _hoisted_6 = {
|
13
|
+
key: 3,
|
14
|
+
class: "media-error"
|
15
|
+
};
|
16
|
+
const _sfc_main = {
|
17
|
+
__name: "Media",
|
18
|
+
props: {
|
19
|
+
url: {
|
20
|
+
type: String,
|
21
|
+
required: true
|
22
|
+
},
|
23
|
+
options: {
|
24
|
+
type: Object,
|
25
|
+
default: () => ({
|
26
|
+
muted: true,
|
27
|
+
loop: true,
|
28
|
+
playsinline: true,
|
29
|
+
preload: "metadata"
|
30
|
+
// 'none' | 'metadata' | 'auto'
|
31
|
+
})
|
32
|
+
}
|
33
|
+
},
|
34
|
+
setup(__props) {
|
35
|
+
const props = __props;
|
36
|
+
const videoElement = ref(null);
|
37
|
+
const imageElement = ref(null);
|
38
|
+
const isLoaded = ref(false);
|
39
|
+
const error = ref(null);
|
40
|
+
const isIntersecting = ref(false);
|
41
|
+
let observer = null;
|
42
|
+
let isPlaying = false;
|
43
|
+
const fileExtension = computed(() => {
|
44
|
+
var _a, _b, _c;
|
45
|
+
return (_c = (_b = (_a = props.url) == null ? void 0 : _a.split(".")) == null ? void 0 : _b.pop()) == null ? void 0 : _c.toLowerCase();
|
46
|
+
});
|
47
|
+
const isImage = computed(() => {
|
48
|
+
const imageExtensions = ["jpg", "jpeg", "png", "gif", "webp", "svg", "avif"];
|
49
|
+
return imageExtensions.includes(fileExtension.value);
|
50
|
+
});
|
51
|
+
const isVideo = computed(() => {
|
52
|
+
const videoExtensions = ["mp4", "webm", "ogg"];
|
53
|
+
return videoExtensions.includes(fileExtension.value);
|
54
|
+
});
|
55
|
+
const videoType = computed(() => {
|
56
|
+
const types = {
|
57
|
+
"mp4": "video/mp4",
|
58
|
+
"webm": "video/webm",
|
59
|
+
"ogg": "video/ogg"
|
60
|
+
};
|
61
|
+
return types[fileExtension.value] || "";
|
62
|
+
});
|
63
|
+
function handleLoad() {
|
64
|
+
isLoaded.value = true;
|
65
|
+
}
|
66
|
+
function handleError(err) {
|
67
|
+
error.value = `ะัะธะฑะบะฐ ะทะฐะณััะทะบะธ ะผะตะดะธะฐ: ${err.message}`;
|
68
|
+
isLoaded.value = false;
|
69
|
+
}
|
70
|
+
async function playVideo() {
|
71
|
+
if (!videoElement.value) return;
|
72
|
+
try {
|
73
|
+
if (videoElement.value.paused && !isPlaying) {
|
74
|
+
await videoElement.value.play();
|
75
|
+
isPlaying = true;
|
76
|
+
}
|
77
|
+
} catch (err) {
|
78
|
+
handleError(err);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
function setupIntersectionObserver() {
|
82
|
+
const options = {
|
83
|
+
root: null,
|
84
|
+
rootMargin: "50px",
|
85
|
+
threshold: 0.1
|
86
|
+
};
|
87
|
+
observer = new IntersectionObserver((entries) => {
|
88
|
+
entries.forEach((entry) => {
|
89
|
+
var _a;
|
90
|
+
isIntersecting.value = entry.isIntersecting;
|
91
|
+
if (entry.isIntersecting) {
|
92
|
+
if (isVideo.value && ((_a = props.options) == null ? void 0 : _a.autoplay)) {
|
93
|
+
playVideo();
|
94
|
+
}
|
95
|
+
observer.disconnect();
|
96
|
+
}
|
97
|
+
});
|
98
|
+
}, options);
|
99
|
+
const element = isImage.value ? imageElement.value : videoElement.value;
|
100
|
+
if (element) {
|
101
|
+
observer.observe(element);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
onMounted(() => {
|
105
|
+
setupIntersectionObserver();
|
106
|
+
});
|
107
|
+
onUnmounted(() => {
|
108
|
+
if (observer) {
|
109
|
+
observer.disconnect();
|
110
|
+
}
|
111
|
+
});
|
112
|
+
return (_ctx, _cache) => {
|
113
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
114
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
115
|
+
isImage.value ? (openBlock(), createElementBlock("img", mergeProps({
|
116
|
+
key: 0,
|
117
|
+
src: isIntersecting.value ? __props.url : "",
|
118
|
+
"data-src": __props.url,
|
119
|
+
alt: ((_a = __props.options) == null ? void 0 : _a.alt) || "Image",
|
120
|
+
class: ["media-item", { "loading": !isLoaded.value }],
|
121
|
+
loading: "lazy",
|
122
|
+
onLoad: handleLoad
|
123
|
+
}, __props.options, {
|
124
|
+
ref_key: "imageElement",
|
125
|
+
ref: imageElement
|
126
|
+
}), null, 16, _hoisted_2)) : isVideo.value ? (openBlock(), createElementBlock("video", mergeProps({
|
127
|
+
key: 1,
|
128
|
+
ref_key: "videoElement",
|
129
|
+
ref: videoElement,
|
130
|
+
class: [{ "loading": !isLoaded.value }, "media-item"],
|
131
|
+
controls: !((_b = __props.options) == null ? void 0 : _b.hideControls),
|
132
|
+
loop: ((_c = __props.options) == null ? void 0 : _c.loop) !== false,
|
133
|
+
muted: ((_d = __props.options) == null ? void 0 : _d.muted) !== false,
|
134
|
+
autoplay: (_e = __props.options) == null ? void 0 : _e.autoplay,
|
135
|
+
playsinline: ((_f = __props.options) == null ? void 0 : _f.playsinline) !== false,
|
136
|
+
preload: ((_g = __props.options) == null ? void 0 : _g.preload) || "metadata",
|
137
|
+
onLoadeddata: handleLoad
|
138
|
+
}, __props.options), [
|
139
|
+
createElementVNode("source", {
|
140
|
+
src: __props.url,
|
141
|
+
type: videoType.value
|
142
|
+
}, null, 8, _hoisted_4)
|
143
|
+
], 16, _hoisted_3)) : createCommentVNode("", true),
|
144
|
+
!isLoaded.value ? (openBlock(), createElementBlock("div", _hoisted_5, " ะะฐะณััะทะบะฐ... ")) : createCommentVNode("", true),
|
145
|
+
error.value ? (openBlock(), createElementBlock("div", _hoisted_6, toDisplayString(error.value), 1)) : createCommentVNode("", true)
|
146
|
+
]);
|
147
|
+
};
|
148
|
+
}
|
149
|
+
};
|
150
|
+
const Media = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-94bcf726"]]);
|
151
|
+
export {
|
152
|
+
Media as default
|
153
|
+
};
|
154
|
+
//# sourceMappingURL=Media.vue.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Media.vue.js","sources":["../../../../../src/components/Media/Media.vue"],"sourcesContent":["<template>\n <div class=\"media-container\">\n <!-- ะะทะพะฑัะฐะถะตะฝะธะต ั ะปะตะฝะธะฒะพะน ะทะฐะณััะทะบะพะน ะธ placeholder -->\n <img\n v-if=\"isImage\"\n :src=\"isIntersecting ? url : ''\"\n :data-src=\"url\"\n :alt=\"options?.alt || 'Image'\"\n class=\"media-item\"\n :class=\"{ 'loading': !isLoaded }\"\n loading=\"lazy\"\n @load=\"handleLoad\"\n v-bind=\"options\"\n ref=\"imageElement\"\n />\n \n <!-- ะะธะดะตะพ ั ะฟัะตะดะฒะฐัะธัะตะปัะฝะพะน ะทะฐะณััะทะบะพะน -->\n <video\n v-else-if=\"isVideo\"\n ref=\"videoElement\"\n :class=\"{ 'loading': !isLoaded }\"\n class=\"media-item\"\n :controls=\"!options?.hideControls\"\n :loop=\"options?.loop !== false\"\n :muted=\"options?.muted !== false\"\n :autoplay=\"options?.autoplay\"\n :playsinline=\"options?.playsinline !== false\"\n :preload=\"options?.preload || 'metadata'\"\n @loadeddata=\"handleLoad\"\n v-bind=\"options\"\n >\n <source :src=\"url\" :type=\"videoType\">\n </video>\n \n <!-- ะะปะตะนัั
ะพะปะดะตั ะฒะพ ะฒัะตะผั ะทะฐะณััะทะบะธ -->\n <div v-if=\"!isLoaded\" class=\"media-placeholder\">\n ะะฐะณััะทะบะฐ...\n </div>\n \n <!-- ะกะพะพะฑัะตะฝะธะต ะพะฑ ะพัะธะฑะบะต -->\n <div v-if=\"error\" class=\"media-error\">\n {{ error }}\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, computed, onUnmounted } from 'vue'\n\nconst props = defineProps({\n url: {\n type: String,\n required: true\n },\n options: {\n type: Object,\n default: () => ({\n muted: true,\n loop: true,\n playsinline: true,\n preload: 'metadata' // 'none' | 'metadata' | 'auto'\n })\n }\n})\n\n// Refs\nconst videoElement = ref(null)\nconst imageElement = ref(null)\nconst isLoaded = ref(false)\nconst error = ref(null)\nconst isIntersecting = ref(false)\nlet observer = null\nlet isPlaying = false\n\n// ะะฟัะตะดะตะปัะตะผ ัะธะฟ ะผะตะดะธะฐ\nconst fileExtension = computed(() => {\n return props.url?.split('.')?.pop()?.toLowerCase()\n})\n\nconst isImage = computed(() => {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'avif']\n return imageExtensions.includes(fileExtension.value)\n})\n\nconst isVideo = computed(() => {\n const videoExtensions = ['mp4', 'webm', 'ogg']\n return videoExtensions.includes(fileExtension.value)\n})\n\n// ะะฟัะตะดะตะปัะตะผ MIME-ัะธะฟ ะดะปั ะฒะธะดะตะพ\nconst videoType = computed(() => {\n const types = {\n 'mp4': 'video/mp4',\n 'webm': 'video/webm',\n 'ogg': 'video/ogg'\n }\n return types[fileExtension.value] || ''\n})\n\n// ะะฑัะฐะฑะพััะธะบ ะทะฐะณััะทะบะธ ะผะตะดะธะฐ\nfunction handleLoad() {\n isLoaded.value = true\n}\n\n// ะะฑัะฐะฑะพัะบะฐ ะพัะธะฑะพะบ\nfunction handleError(err) {\n error.value = `ะัะธะฑะบะฐ ะทะฐะณััะทะบะธ ะผะตะดะธะฐ: ${err.message}`\n isLoaded.value = false\n}\n\n// ะฃะฟัะฐะฒะปะตะฝะธะต ะฒะธะดะตะพ ั ะพะฑัะฐะฑะพัะบะพะน ะพัะธะฑะพะบ\nasync function playVideo() {\n if (!videoElement.value) return\n \n try {\n if (videoElement.value.paused && !isPlaying) {\n await videoElement.value.play()\n isPlaying = true\n }\n } catch (err) {\n handleError(err)\n }\n}\n\nfunction checkAndPlayVideo() {\n if (!videoElement.value) return\n \n videoElement.value.onplaying = () => {\n isPlaying = true\n }\n \n videoElement.value.onpause = () => {\n isPlaying = false\n }\n \n videoElement.value.onerror = handleError\n}\n\n// Intersection Observer ะดะปั ะปะตะฝะธะฒะพะน ะทะฐะณััะทะบะธ\nfunction setupIntersectionObserver() {\n const options = {\n root: null,\n rootMargin: '50px',\n threshold: 0.1\n }\n \n observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n isIntersecting.value = entry.isIntersecting\n \n if (entry.isIntersecting) {\n if (isVideo.value && props.options?.autoplay) {\n playVideo()\n }\n // ะัะบะปััะฐะตะผ observer ะฟะพัะปะต ะฟะตัะฒะพะน ะทะฐะณััะทะบะธ\n observer.disconnect()\n }\n })\n }, options)\n \n // ะะฐะฑะปัะดะฐะตะผ ะทะฐ ัะปะตะผะตะฝัะพะผ ะฒ ะทะฐะฒะธัะธะผะพััะธ ะพั ัะธะฟะฐ ะผะตะดะธะฐ\n const element = isImage.value ? imageElement.value : videoElement.value\n if (element) {\n observer.observe(element)\n }\n}\n\n// Lifecycle hooks\nonMounted(() => {\n setupIntersectionObserver()\n})\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect()\n }\n})\n</script>\n\n<style scoped>\n.media-container {\n}\n\n.media-item {\n all: inherit;\n opacity: 1;\n transition: opacity 0.3s ease;\n}\n\n.media-item.loading {\n opacity: 0;\n}\n\n.media-placeholder {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #f5f5f5;\n}\n\n.media-error {\n color: #ff4444;\n padding: 1rem;\n text-align: center;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,UAAM,QAAQ;AAiBd,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,iBAAiB,IAAI,KAAK;AAChC,QAAI,WAAW;AACf,QAAI,YAAY;AAGhB,UAAM,gBAAgB,SAAS,MAAM;;AACnC,cAAO,uBAAM,QAAN,mBAAW,MAAM,SAAjB,mBAAuB,UAAvB,mBAA8B;AAAA,IACvC,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,kBAAkB,CAAC,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,MAAM;AAC3E,aAAO,gBAAgB,SAAS,cAAc,KAAK;AAAA,IACrD,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,kBAAkB,CAAC,OAAO,QAAQ,KAAK;AAC7C,aAAO,gBAAgB,SAAS,cAAc,KAAK;AAAA,IACrD,CAAC;AAGD,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,QAAQ;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,MACR;AACD,aAAO,MAAM,cAAc,KAAK,KAAK;AAAA,IACvC,CAAC;AAGD,aAAS,aAAa;AACpB,eAAS,QAAQ;AAAA,IACnB;AAGA,aAAS,YAAY,KAAK;AACxB,YAAM,QAAQ,0BAA0B,IAAI,OAAO;AACnD,eAAS,QAAQ;AAAA,IACnB;AAGA,mBAAe,YAAY;AACzB,UAAI,CAAC,aAAa,MAAO;AAEzB,UAAI;AACF,YAAI,aAAa,MAAM,UAAU,CAAC,WAAW;AAC3C,gBAAM,aAAa,MAAM,KAAM;AAC/B,sBAAY;AAAA,QACb;AAAA,MACF,SAAQ,KAAK;AACZ,oBAAY,GAAG;AAAA,MAChB;AAAA,IACH;AAiBA,aAAS,4BAA4B;AACnC,YAAM,UAAU;AAAA,QACd,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,WAAW;AAAA,MACZ;AAED,iBAAW,IAAI,qBAAqB,CAAC,YAAY;AAC/C,gBAAQ,QAAQ,WAAS;;AACvB,yBAAe,QAAQ,MAAM;AAE7B,cAAI,MAAM,gBAAgB;AACxB,gBAAI,QAAQ,WAAS,WAAM,YAAN,mBAAe,WAAU;AAC5C,wBAAW;AAAA,YACZ;AAED,qBAAS,WAAY;AAAA,UACtB;AAAA,QACP,CAAK;AAAA,MACF,GAAE,OAAO;AAGV,YAAM,UAAU,QAAQ,QAAQ,aAAa,QAAQ,aAAa;AAClE,UAAI,SAAS;AACX,iBAAS,QAAQ,OAAO;AAAA,MACzB;AAAA,IACH;AAGA,cAAU,MAAM;AACd,gCAA2B;AAAA,IAC7B,CAAC;AAED,gBAAY,MAAM;AAChB,UAAI,UAAU;AACZ,iBAAS,WAAY;AAAA,MACtB;AAAA,IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -47,10 +47,7 @@ const _sfc_main = {
|
|
47
47
|
};
|
48
48
|
vueI18n.useI18n(text);
|
49
49
|
return (_ctx, _cache) => {
|
50
|
-
return vue.openBlock(), vue.createBlock(vue.Transition, {
|
51
|
-
name: "TransitionTranslateY",
|
52
|
-
appear: ""
|
53
|
-
}, {
|
50
|
+
return vue.openBlock(), vue.createBlock(vue.Transition, { name: "moveFromTop" }, {
|
54
51
|
default: vue.withCtx(() => [
|
55
52
|
__props.isPopupOpen ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
|
56
53
|
key: 0,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Popup.vue.cjs","sources":["../../../../../src/components/Popup/Popup.vue"],"sourcesContent":["<template>\n\
|
1
|
+
{"version":3,"file":"Popup.vue.cjs","sources":["../../../../../src/components/Popup/Popup.vue"],"sourcesContent":["<template>\n\t\t<transition name=\"moveFromTop\">\n\t\t\t<teleport to=\"body\" v-if=\"isPopupOpen\">\n\t\t\t\t<div v-if=\"isPopupOpen\" key=\"popup-content\" class=\"pd-small z-index-6 popup-wrapper\">\n\n\t\t\t\t\t<transition name=\"TransitionTranslateY\" mode=\"out-in\">\n\t\t\t\t\t\t<section class=\"pos-relative z-index-4\" v-bind=\"$attrs\" :class=\"$attrs.class\">\n\t\t\t\t\t\t\t\t<h4 v-if=\"title\" class=\"mn-b-small\">{{title}}</h4>\n\t\t\t\t\t\t\t\t<IconCross :fill=\"'rgb(var(--white))'\" @click=\"closePopup()\" class=\"cursor-pointer bg-second pd-micro radius-extra pos-absolute pos-t-0 pos-r-0 mn-t-semi mn-r-semi hover-scale-1 i-medium z-index-5\"/>\n\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</section> \n\t\t\t\t\t</transition>\n\n\t\t\t\t\t<div \n\t\t\t\t\t\t@click=\"closePopup()\" \n\t\t\t\t :class=\"{'active':isPopupOpen === true}\" \n\t\t\t\t class=\"color-overlay z-index-3\">\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\t\t</teleport>\n\t</transition>\n</template>\n\n<script setup>\nimport { computed, watch, onMounted, ref, nextTick } from 'vue';\n// Import libs\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n// Icons\nimport IconCross from '@pf/src/modules/icons/navigation/IconCross.vue';\n// Define props\nconst props = defineProps({\n isPopupOpen: {\n \ttype: Boolean,\n\t default: false\n },\n style: String,\n title: String,\n});\nconst emits = defineEmits(['close-popup'])\n\nfunction closePopup() {\n emits(\"close-popup\");\n} \n\nwatch(() => props.isPopupOpen, (newVal) => {\n if (newVal) {\n document.body.classList.add('no-scroll');\n } else {\n document.body.classList.remove('no-scroll');\n }\n});\n\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\n// Localization\nconst text = {\n \tmessages: {\n\t en: {},\n\t ru: {}\n\t}\n}\nconst { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\t.no-scroll {\n\t overflow: hidden;\n\t}\n\n\t.popup-wrapper {\n\t\tdisplay: flex;\n\t\tposition: fixed;\n\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\tz-index: 40;\n\n\t\t.popup {\n\t\t\tposition: absolute;\n\t\t\theight: auto;\n\t\t\tpadding: 2rem;\n\t\t\tmin-width: 24rem;\n\t\t\tborder-radius: 2rem;\n\t\t\toverflow: hidden;\n\n\t\t\tcolor: white;\n\t\t\tbackground: black;\n\n\t\t\tz-index: 40;\n\t\t}\n\t}\n\n\t.color-overlay {\n\t\tdisplay: block;\n\t\tposition: fixed;\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\tbackground: rgba(0,0,0,0.0);\n\t\tpointer-events: none;\n\n\t\ttransform: scale(1.5);\n\n\t\ttransition: all 0.5s cubic-bezier(.31,.79,.24,.92);\n\n\t\t&.active {\n\t\t\tbackground: rgba(#000,0.25);\n\t\t\tpointer-events: all;\n\t\t}\n\t}\n</style>\n"],"names":["watch","useRoute","useRouter","useI18n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AAEd,aAAS,aAAa;AACpB,YAAM,aAAa;AAAA,IACrB;AAEAA,QAAK,MAAC,MAAM,MAAM,aAAa,CAAC,WAAW;AACzC,UAAI,QAAQ;AACV,iBAAS,KAAK,UAAU,IAAI,WAAW;AAAA,MAC3C,OAAS;AACL,iBAAS,KAAK,UAAU,OAAO,WAAW;AAAA,MAC3C;AAAA,IACH,CAAC;AAGaC,cAAAA,SAAU;AACTC,cAAAA,UAAW;AAE1B,UAAM,OAAO;AAAA,MACV,UAAU;AAAA,QACR,IAAI,CAAE;AAAA,QACN,IAAI,CAAE;AAAA,MACT;AAAA,IACF;AACcC,YAAO,QAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -45,10 +45,7 @@ const _sfc_main = {
|
|
45
45
|
};
|
46
46
|
useI18n(text);
|
47
47
|
return (_ctx, _cache) => {
|
48
|
-
return openBlock(), createBlock(Transition, {
|
49
|
-
name: "TransitionTranslateY",
|
50
|
-
appear: ""
|
51
|
-
}, {
|
48
|
+
return openBlock(), createBlock(Transition, { name: "moveFromTop" }, {
|
52
49
|
default: withCtx(() => [
|
53
50
|
__props.isPopupOpen ? (openBlock(), createBlock(Teleport, {
|
54
51
|
key: 0,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Popup.vue.js","sources":["../../../../../src/components/Popup/Popup.vue"],"sourcesContent":["<template>\n\
|
1
|
+
{"version":3,"file":"Popup.vue.js","sources":["../../../../../src/components/Popup/Popup.vue"],"sourcesContent":["<template>\n\t\t<transition name=\"moveFromTop\">\n\t\t\t<teleport to=\"body\" v-if=\"isPopupOpen\">\n\t\t\t\t<div v-if=\"isPopupOpen\" key=\"popup-content\" class=\"pd-small z-index-6 popup-wrapper\">\n\n\t\t\t\t\t<transition name=\"TransitionTranslateY\" mode=\"out-in\">\n\t\t\t\t\t\t<section class=\"pos-relative z-index-4\" v-bind=\"$attrs\" :class=\"$attrs.class\">\n\t\t\t\t\t\t\t\t<h4 v-if=\"title\" class=\"mn-b-small\">{{title}}</h4>\n\t\t\t\t\t\t\t\t<IconCross :fill=\"'rgb(var(--white))'\" @click=\"closePopup()\" class=\"cursor-pointer bg-second pd-micro radius-extra pos-absolute pos-t-0 pos-r-0 mn-t-semi mn-r-semi hover-scale-1 i-medium z-index-5\"/>\n\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</section> \n\t\t\t\t\t</transition>\n\n\t\t\t\t\t<div \n\t\t\t\t\t\t@click=\"closePopup()\" \n\t\t\t\t :class=\"{'active':isPopupOpen === true}\" \n\t\t\t\t class=\"color-overlay z-index-3\">\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\t\t</teleport>\n\t</transition>\n</template>\n\n<script setup>\nimport { computed, watch, onMounted, ref, nextTick } from 'vue';\n// Import libs\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n// Icons\nimport IconCross from '@pf/src/modules/icons/navigation/IconCross.vue';\n// Define props\nconst props = defineProps({\n isPopupOpen: {\n \ttype: Boolean,\n\t default: false\n },\n style: String,\n title: String,\n});\nconst emits = defineEmits(['close-popup'])\n\nfunction closePopup() {\n emits(\"close-popup\");\n} \n\nwatch(() => props.isPopupOpen, (newVal) => {\n if (newVal) {\n document.body.classList.add('no-scroll');\n } else {\n document.body.classList.remove('no-scroll');\n }\n});\n\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\n// Localization\nconst text = {\n \tmessages: {\n\t en: {},\n\t ru: {}\n\t}\n}\nconst { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\t.no-scroll {\n\t overflow: hidden;\n\t}\n\n\t.popup-wrapper {\n\t\tdisplay: flex;\n\t\tposition: fixed;\n\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\tz-index: 40;\n\n\t\t.popup {\n\t\t\tposition: absolute;\n\t\t\theight: auto;\n\t\t\tpadding: 2rem;\n\t\t\tmin-width: 24rem;\n\t\t\tborder-radius: 2rem;\n\t\t\toverflow: hidden;\n\n\t\t\tcolor: white;\n\t\t\tbackground: black;\n\n\t\t\tz-index: 40;\n\t\t}\n\t}\n\n\t.color-overlay {\n\t\tdisplay: block;\n\t\tposition: fixed;\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\tbackground: rgba(0,0,0,0.0);\n\t\tpointer-events: none;\n\n\t\ttransform: scale(1.5);\n\n\t\ttransition: all 0.5s cubic-bezier(.31,.79,.24,.92);\n\n\t\t&.active {\n\t\t\tbackground: rgba(#000,0.25);\n\t\t\tpointer-events: all;\n\t\t}\n\t}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AAEd,aAAS,aAAa;AACpB,YAAM,aAAa;AAAA,IACrB;AAEA,UAAM,MAAM,MAAM,aAAa,CAAC,WAAW;AACzC,UAAI,QAAQ;AACV,iBAAS,KAAK,UAAU,IAAI,WAAW;AAAA,MAC3C,OAAS;AACL,iBAAS,KAAK,UAAU,OAAO,WAAW;AAAA,MAC3C;AAAA,IACH,CAAC;AAGa,aAAU;AACT,cAAW;AAE1B,UAAM,OAAO;AAAA,MACV,UAAU;AAAA,QACR,IAAI,CAAE;AAAA,QACN,IAAI,CAAE;AAAA,MACT;AAAA,IACF;AACc,YAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -2,11 +2,23 @@
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
3
3
|
const vue = require("vue");
|
4
4
|
const vueRouter = require("vue-router");
|
5
|
-
require("vue-i18n");
|
5
|
+
const vueI18n = require("vue-i18n");
|
6
6
|
const emblaCarouselVue_esm = require("../../../../node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.cjs");
|
7
7
|
const emblaCarouselAutoplay_esm = require("../../../../node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.cjs");
|
8
|
-
|
9
|
-
|
8
|
+
const Loader = require("../Loader/Loader.vue2.cjs");
|
9
|
+
;/* empty css */
|
10
|
+
const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.cjs");
|
11
|
+
const _hoisted_1 = { class: "pos-relative" };
|
12
|
+
const _hoisted_2 = {
|
13
|
+
key: 0,
|
14
|
+
class: "h-20r radius-semi pos-relative w-100 bg-light"
|
15
|
+
};
|
16
|
+
const _hoisted_3 = {
|
17
|
+
key: 1,
|
18
|
+
class: "bg-light radius-semi flex flex-center w-100 h-20r"
|
19
|
+
};
|
20
|
+
const _hoisted_4 = { class: "text-gray-500" };
|
21
|
+
const _hoisted_5 = { class: "embla__container" };
|
10
22
|
const _sfc_main = {
|
11
23
|
__name: "Slider",
|
12
24
|
props: {
|
@@ -37,44 +49,63 @@ const _sfc_main = {
|
|
37
49
|
]
|
38
50
|
);
|
39
51
|
const onSelect = (embla) => selectedIndex.value = emblaApi.value.selectedScrollSnap();
|
52
|
+
const { t } = vueI18n.useI18n({
|
53
|
+
messages: props.text
|
54
|
+
});
|
40
55
|
vue.onMounted(async () => {
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
56
|
+
try {
|
57
|
+
entitiesState.value = await props.store.read(props.options);
|
58
|
+
} catch (error) {
|
59
|
+
console.error("Error loading entities:", error);
|
60
|
+
entitiesState.value = [];
|
61
|
+
} finally {
|
62
|
+
isLoading.value = false;
|
63
|
+
}
|
64
|
+
if (entitiesState.value.length) {
|
65
|
+
onSelect();
|
66
|
+
emblaApi.value.on("reInit", onSelect);
|
67
|
+
emblaApi.value.on("select", onSelect);
|
68
|
+
}
|
46
69
|
});
|
47
70
|
return (_ctx, _cache) => {
|
48
|
-
return vue.openBlock(), vue.createElementBlock("div",
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
vue.
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
71
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
72
|
+
isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
|
73
|
+
vue.createVNode(Loader.default)
|
74
|
+
])) : !entitiesState.value.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
|
75
|
+
vue.createElementVNode("p", _hoisted_4, vue.toDisplayString(vue.unref(t)("title")), 1)
|
76
|
+
])) : (vue.openBlock(), vue.createElementBlock("div", {
|
77
|
+
key: 2,
|
78
|
+
class: "embla",
|
79
|
+
ref_key: "emblaNode",
|
80
|
+
ref: emblaNode
|
81
|
+
}, [
|
82
|
+
vue.createElementVNode("div", _hoisted_5, [
|
83
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(entitiesState.value, (entity, key, index) => {
|
84
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
85
|
+
class: "embla__slide pd-nano",
|
86
|
+
key
|
87
|
+
}, [
|
88
|
+
vue.createVNode(vue.Transition, {
|
89
|
+
name: "fade",
|
90
|
+
mode: "out-in",
|
91
|
+
appear: ""
|
92
|
+
}, {
|
93
|
+
default: vue.withCtx(() => [
|
94
|
+
vue.renderSlot(_ctx.$slots, "default", {
|
95
|
+
item: entity,
|
96
|
+
user: __props.user
|
97
|
+
}, void 0, true)
|
98
|
+
]),
|
99
|
+
_: 2
|
100
|
+
}, 1024)
|
101
|
+
]);
|
102
|
+
}), 128))
|
103
|
+
])
|
104
|
+
], 512))
|
105
|
+
]);
|
76
106
|
};
|
77
107
|
}
|
78
108
|
};
|
79
|
-
|
109
|
+
const Slider = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-fff930b3"]]);
|
110
|
+
exports.default = Slider;
|
80
111
|
//# sourceMappingURL=Slider.vue.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Slider.vue.cjs","sources":["../../../../../src/components/Slider/Slider.vue"],"sourcesContent":["<template>\n <div class=\"embla\" ref=\"emblaNode\">\n
|
1
|
+
{"version":3,"file":"Slider.vue.cjs","sources":["../../../../../src/components/Slider/Slider.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader />\n </div>\n\n <!-- Empty State -->\n <div v-else-if=\"!entitiesState.length\" class=\"bg-light radius-semi flex flex-center w-100 h-20r\">\n <p class=\"text-gray-500\">{{t('title')}}</p>\n </div>\n\n <!-- Carousel -->\n <div v-else class=\"embla\" ref=\"emblaNode\">\n <div class=\"embla__container\">\n <div \n class=\"embla__slide pd-nano\" \n v-for=\"(entity, key, index) in entitiesState\" \n :key=\"key\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n\nimport emblaCarouselVue from 'embla-carousel-vue'\nimport Autoplay from 'embla-carousel-autoplay'\n\nimport Loader from '@pf/src/components/Loader/Loader.vue'\n\n// Props for customization\nconst props = defineProps({\n store: Object,\n options: Object,\n text: Object,\n user: Object\n});\n\nconst router = useRouter()\nconst entitiesState = ref([])\nconst isLoading = ref(true);\nconst selectedIndex = ref(0);\n\nconst autoplayOptions = {\n delay: 2000,\n jump: false,\n stopOnInteraction: false,\n stopOnMouseEnter: false,\n stopOnFocusIn: true,\n stopOnLastSnap: false,\n rootNode: (emblaRoot) => emblaRoot.parentElement\n}\n\nconst [emblaNode, emblaApi] = emblaCarouselVue(\n { loop: true }, \n [\n Autoplay(autoplayOptions)\n ]\n)\n\nconst scrollTo = (index) => emblaApi.value && emblaApi.value.scrollTo(index);\nconst onSelect = (embla) => selectedIndex.value = emblaApi.value.selectedScrollSnap();\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entitiesState.value = await props.store.read(props.options);\n } catch (error) {\n console.error('Error loading entities:', error);\n entitiesState.value = [];\n } finally {\n isLoading.value = false;\n }\n \n if (entitiesState.value.length) {\n onSelect(emblaApi);\n emblaApi.value.on('reInit', onSelect);\n emblaApi.value.on('select', onSelect);\n }\n});\n\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":["useRouter","ref","emblaCarouselVue","Autoplay","useI18n","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,UAAM,QAAQ;AAOCA,cAAAA,UAAW;AAC1B,UAAM,gBAAgBC,IAAG,IAAC,EAAE;AAC5B,UAAM,YAAYA,IAAAA,IAAI,IAAI;AAC1B,UAAM,gBAAgBA,IAAAA,IAAI,CAAC;AAE3B,UAAM,kBAAkB;AAAA,MACtB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,UAAU,CAAC,cAAc,UAAU;AAAA,IACrC;AAEA,UAAM,CAAC,WAAW,QAAQ,IAAIC,qBAAgB;AAAA,MAC5C,EAAE,MAAM,KAAM;AAAA,MACd;AAAA,QACEC,0BAAAA,QAAS,eAAe;AAAA,MACzB;AAAA,IACH;AAGA,UAAM,WAAW,CAAC,UAAU,cAAc,QAAQ,SAAS,MAAM;AAEjE,UAAM,EAAE,EAAG,IAAGC,gBAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAEDC,QAAAA,UAAU,YAAW;AACnB,UAAI;AACF,sBAAc,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AAAA,MAC3D,SAAQ,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,sBAAc,QAAQ;MAC1B,UAAY;AACR,kBAAU,QAAQ;AAAA,MACnB;AAED,UAAI,cAAc,MAAM,QAAQ;AAC9B,iBAAiB;AACjB,iBAAS,MAAM,GAAG,UAAU,QAAQ;AACpC,iBAAS,MAAM,GAAG,UAAU,QAAQ;AAAA,MACrC;AAAA,IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -1,10 +1,22 @@
|
|
1
|
-
import { ref, onMounted, openBlock, createElementBlock, createElementVNode, Fragment, renderList,
|
1
|
+
import { ref, onMounted, openBlock, createElementBlock, createVNode, createElementVNode, toDisplayString, unref, Fragment, renderList, Transition, withCtx, renderSlot } from "vue";
|
2
2
|
import { useRouter } from "vue-router";
|
3
|
-
import "vue-i18n";
|
3
|
+
import { useI18n } from "vue-i18n";
|
4
4
|
import emblaCarouselVue from "../../../../node_modules/embla-carousel-vue/esm/embla-carousel-vue.esm.js";
|
5
5
|
import Autoplay from "../../../../node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js";
|
6
|
-
|
7
|
-
|
6
|
+
import Loader from "../Loader/Loader.vue2.js";
|
7
|
+
/* empty css */
|
8
|
+
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
|
9
|
+
const _hoisted_1 = { class: "pos-relative" };
|
10
|
+
const _hoisted_2 = {
|
11
|
+
key: 0,
|
12
|
+
class: "h-20r radius-semi pos-relative w-100 bg-light"
|
13
|
+
};
|
14
|
+
const _hoisted_3 = {
|
15
|
+
key: 1,
|
16
|
+
class: "bg-light radius-semi flex flex-center w-100 h-20r"
|
17
|
+
};
|
18
|
+
const _hoisted_4 = { class: "text-gray-500" };
|
19
|
+
const _hoisted_5 = { class: "embla__container" };
|
8
20
|
const _sfc_main = {
|
9
21
|
__name: "Slider",
|
10
22
|
props: {
|
@@ -35,46 +47,65 @@ const _sfc_main = {
|
|
35
47
|
]
|
36
48
|
);
|
37
49
|
const onSelect = (embla) => selectedIndex.value = emblaApi.value.selectedScrollSnap();
|
50
|
+
const { t } = useI18n({
|
51
|
+
messages: props.text
|
52
|
+
});
|
38
53
|
onMounted(async () => {
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
54
|
+
try {
|
55
|
+
entitiesState.value = await props.store.read(props.options);
|
56
|
+
} catch (error) {
|
57
|
+
console.error("Error loading entities:", error);
|
58
|
+
entitiesState.value = [];
|
59
|
+
} finally {
|
60
|
+
isLoading.value = false;
|
61
|
+
}
|
62
|
+
if (entitiesState.value.length) {
|
63
|
+
onSelect();
|
64
|
+
emblaApi.value.on("reInit", onSelect);
|
65
|
+
emblaApi.value.on("select", onSelect);
|
66
|
+
}
|
44
67
|
});
|
45
68
|
return (_ctx, _cache) => {
|
46
|
-
return openBlock(), createElementBlock("div",
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
69
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
70
|
+
isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
71
|
+
createVNode(Loader)
|
72
|
+
])) : !entitiesState.value.length ? (openBlock(), createElementBlock("div", _hoisted_3, [
|
73
|
+
createElementVNode("p", _hoisted_4, toDisplayString(unref(t)("title")), 1)
|
74
|
+
])) : (openBlock(), createElementBlock("div", {
|
75
|
+
key: 2,
|
76
|
+
class: "embla",
|
77
|
+
ref_key: "emblaNode",
|
78
|
+
ref: emblaNode
|
79
|
+
}, [
|
80
|
+
createElementVNode("div", _hoisted_5, [
|
81
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(entitiesState.value, (entity, key, index) => {
|
82
|
+
return openBlock(), createElementBlock("div", {
|
83
|
+
class: "embla__slide pd-nano",
|
84
|
+
key
|
85
|
+
}, [
|
86
|
+
createVNode(Transition, {
|
87
|
+
name: "fade",
|
88
|
+
mode: "out-in",
|
89
|
+
appear: ""
|
90
|
+
}, {
|
91
|
+
default: withCtx(() => [
|
92
|
+
renderSlot(_ctx.$slots, "default", {
|
93
|
+
item: entity,
|
94
|
+
user: __props.user
|
95
|
+
}, void 0, true)
|
96
|
+
]),
|
97
|
+
_: 2
|
98
|
+
}, 1024)
|
99
|
+
]);
|
100
|
+
}), 128))
|
101
|
+
])
|
102
|
+
], 512))
|
103
|
+
]);
|
74
104
|
};
|
75
105
|
}
|
76
106
|
};
|
107
|
+
const Slider = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-fff930b3"]]);
|
77
108
|
export {
|
78
|
-
|
109
|
+
Slider as default
|
79
110
|
};
|
80
111
|
//# sourceMappingURL=Slider.vue.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Slider.vue.js","sources":["../../../../../src/components/Slider/Slider.vue"],"sourcesContent":["<template>\n <div class=\"embla\" ref=\"emblaNode\">\n
|
1
|
+
{"version":3,"file":"Slider.vue.js","sources":["../../../../../src/components/Slider/Slider.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader />\n </div>\n\n <!-- Empty State -->\n <div v-else-if=\"!entitiesState.length\" class=\"bg-light radius-semi flex flex-center w-100 h-20r\">\n <p class=\"text-gray-500\">{{t('title')}}</p>\n </div>\n\n <!-- Carousel -->\n <div v-else class=\"embla\" ref=\"emblaNode\">\n <div class=\"embla__container\">\n <div \n class=\"embla__slide pd-nano\" \n v-for=\"(entity, key, index) in entitiesState\" \n :key=\"key\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n\nimport emblaCarouselVue from 'embla-carousel-vue'\nimport Autoplay from 'embla-carousel-autoplay'\n\nimport Loader from '@pf/src/components/Loader/Loader.vue'\n\n// Props for customization\nconst props = defineProps({\n store: Object,\n options: Object,\n text: Object,\n user: Object\n});\n\nconst router = useRouter()\nconst entitiesState = ref([])\nconst isLoading = ref(true);\nconst selectedIndex = ref(0);\n\nconst autoplayOptions = {\n delay: 2000,\n jump: false,\n stopOnInteraction: false,\n stopOnMouseEnter: false,\n stopOnFocusIn: true,\n stopOnLastSnap: false,\n rootNode: (emblaRoot) => emblaRoot.parentElement\n}\n\nconst [emblaNode, emblaApi] = emblaCarouselVue(\n { loop: true }, \n [\n Autoplay(autoplayOptions)\n ]\n)\n\nconst scrollTo = (index) => emblaApi.value && emblaApi.value.scrollTo(index);\nconst onSelect = (embla) => selectedIndex.value = emblaApi.value.selectedScrollSnap();\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entitiesState.value = await props.store.read(props.options);\n } catch (error) {\n console.error('Error loading entities:', error);\n entitiesState.value = [];\n } finally {\n isLoading.value = false;\n }\n \n if (entitiesState.value.length) {\n onSelect(emblaApi);\n emblaApi.value.on('reInit', onSelect);\n emblaApi.value.on('select', onSelect);\n }\n});\n\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,UAAM,QAAQ;AAOC,cAAW;AAC1B,UAAM,gBAAgB,IAAI,EAAE;AAC5B,UAAM,YAAY,IAAI,IAAI;AAC1B,UAAM,gBAAgB,IAAI,CAAC;AAE3B,UAAM,kBAAkB;AAAA,MACtB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,UAAU,CAAC,cAAc,UAAU;AAAA,IACrC;AAEA,UAAM,CAAC,WAAW,QAAQ,IAAI;AAAA,MAC5B,EAAE,MAAM,KAAM;AAAA,MACd;AAAA,QACE,SAAS,eAAe;AAAA,MACzB;AAAA,IACH;AAGA,UAAM,WAAW,CAAC,UAAU,cAAc,QAAQ,SAAS,MAAM;AAEjE,UAAM,EAAE,EAAG,IAAG,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI;AACF,sBAAc,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AAAA,MAC3D,SAAQ,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,sBAAc,QAAQ;MAC1B,UAAY;AACR,kBAAU,QAAQ;AAAA,MACnB;AAED,UAAI,cAAc,MAAM,QAAQ;AAC9B,iBAAiB;AACjB,iBAAS,MAAM,GAAG,UAAU,QAAQ;AACpC,iBAAS,MAAM,GAAG,UAAU,QAAQ;AAAA,MACrC;AAAA,IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -191,7 +191,8 @@ const _sfc_main = {
|
|
191
191
|
onClick: ($event) => vue.unref(router).push({
|
192
192
|
name: `${module2.route}`,
|
193
193
|
params: {
|
194
|
-
_id: vue.unref(route).params._id
|
194
|
+
_id: vue.unref(route).params._id,
|
195
|
+
user: vue.unref(route).params._id
|
195
196
|
}
|
196
197
|
}),
|
197
198
|
class: "profile-menu-item cursor-pointer"
|
package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Profile.vue.cjs","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tv-if=\"show\"\n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase t-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'User Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '')+ users.state.current.profile.photo\" \n\t\t\t\t\tclass=\"radius-extra bg-white mn-b-small object-fit-cover i-extra\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<PlaceholderUserpic \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t\t/>\n\n\t\t\t\t<h3 \n\t\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t\t>\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main t-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-medium\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small t-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"t-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- ๐ 3 212 likes ยท -->\n\t\t\t\t\t<!-- ๐ฌ 342 comments ยท -->\n\t\t\t\t\t๐จโ๐จโ๐งโ๐ง {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t\n\n\t\t\t<Menu v-if=\"filteredModules.length > 0\" class=\"mn-b-regular bg-light\">\n\t <MenuItem \n\t v-for=\"module in filteredModules\" \n\t :key=\"module.name\"\n\t @click=\"router.push({\n\t name: `${module.route}`, \n\t params: {\n\t _id: route.params._id\n\t }\n\t })\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-semi\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n \t</MenuItem>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'User Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@pf/src/components/Field/Field.vue'\nimport Button from '@pf/src/components/Button/Button.vue'\nimport Dropdown from \"@pf/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@pf/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@pf/src/components/Menu/Menu.vue'\nimport MenuItem from '@pf/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@pf/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@pf/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@pf/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@pf/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@pf/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@pf/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@pf/src/modules/icons/entities/IconCommunity.vue'\n\nimport IconEdit from '@pf/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@pf/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n// Import libs\nimport { computed, watch, onMounted, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@pf/src/modules/auth/views/store/auth'\nimport * as users from '@pf/src/modules/auth/views/store/users'\nimport * as memberships from '@pf/src/modules/organizations/store/memberships'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = inject('store')\n\nconst moduleMapping = {\n events: {\n displayName: 'Events',\n route: 'User Events',\n icon: IconEvents\n },\n organizations: {\n displayName: 'Groups',\n route: 'User Organizations',\n icon: IconGroups\n },\n blogposts: {\n displayName: 'Posts',\n route: 'User Posts',\n icon: IconCommunity\n }\n}\n\nconst filteredModules = computed(() => {\n return store.modules\n .map(moduleName => {\n return {\n name: moduleName,\n ...moduleMapping[moduleName]\n }\n })\n .filter(module => moduleMapping[module.name]) // Only show modules that have mapping\n})\n\nonMounted(async () => {\n \tawait users.actions.read({ _id: route.params._id, user: auth.state.user._id });\n \tshow.value = true\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["useRoute","useRouter","ref","inject","IconEvents","IconGroups","IconCommunity","computed","module","onMounted","users.actions","auth.state","memberships.mutations","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoQA,UAAM,QAAQA,UAAAA,SAAU;AACxB,UAAM,SAASC,UAAAA,UAAW;AAE1B,UAAM,OAAOC,IAAG,IAAC,KAAK;AAEtB,UAAM,QAAQC,IAAM,OAAC,OAAO;AAE5B,UAAM,gBAAgB;AAAA,MACpB,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAU;AAAA,MACjB;AAAA,MACD,eAAe;AAAA,QACb,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAU;AAAA,MACjB;AAAA,MACD,WAAW;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,cAAa;AAAA,MACpB;AAAA,IACH;AAEA,UAAM,kBAAkBC,IAAQ,SAAC,MAAM;AACrC,aAAO,MAAM,QACV,IAAI,gBAAc;AACjB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,GAAG,cAAc,UAAU;AAAA,QAC5B;AAAA,MACP,CAAK,EACA,OAAO,CAAAC,YAAU,cAAcA,QAAO,IAAI,CAAC;AAAA,IAChD,CAAC;AAEDC,QAAAA,UAAU,YAAY;AACpB,YAAMC,cAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,KAAU,MAAC,KAAK,IAAK,CAAA;AAC7E,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAQ,GAAE,YAAY,iBAAiB;AAC3FC,4BAAsB,uBAAuBC,MAAAA,MAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACxH;AAEA,aAAS,SAAU;AACjBC,WAAAA,QAAa,OAAQ;AAErB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
1
|
+
{"version":3,"file":"Profile.vue.cjs","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tv-if=\"show\"\n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase t-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'User Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '')+ users.state.current.profile.photo\" \n\t\t\t\t\tclass=\"radius-extra bg-white mn-b-small object-fit-cover i-extra\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<PlaceholderUserpic \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t\t/>\n\n\t\t\t\t<h3 \n\t\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t\t>\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main t-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-medium\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small t-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"t-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- ๐ 3 212 likes ยท -->\n\t\t\t\t\t<!-- ๐ฌ 342 comments ยท -->\n\t\t\t\t\t๐จโ๐จโ๐งโ๐ง {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t\n\n\t\t\t<Menu v-if=\"filteredModules.length > 0\" class=\"mn-b-regular bg-light\">\n\t <MenuItem \n\t v-for=\"module in filteredModules\" \n\t :key=\"module.name\"\n\t @click=\"router.push({\n\t name: `${module.route}`, \n\t params: {\n\t _id: route.params._id,\n\t user: route.params._id\n\t }\n\t })\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-semi\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n \t</MenuItem>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'User Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@pf/src/components/Field/Field.vue'\nimport Button from '@pf/src/components/Button/Button.vue'\nimport Dropdown from \"@pf/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@pf/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@pf/src/components/Menu/Menu.vue'\nimport MenuItem from '@pf/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@pf/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@pf/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@pf/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@pf/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@pf/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@pf/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@pf/src/modules/icons/entities/IconCommunity.vue'\n\nimport IconEdit from '@pf/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@pf/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n// Import libs\nimport { computed, watch, onMounted, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@pf/src/modules/auth/views/store/auth'\nimport * as users from '@pf/src/modules/auth/views/store/users'\nimport * as memberships from '@pf/src/modules/organizations/store/memberships'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = inject('store')\n\nconst moduleMapping = {\n events: {\n displayName: 'Events',\n route: 'User Events',\n icon: IconEvents\n },\n organizations: {\n displayName: 'Groups',\n route: 'User Organizations',\n icon: IconGroups\n },\n blogposts: {\n displayName: 'Posts',\n route: 'User Posts',\n icon: IconCommunity\n }\n}\n\nconst filteredModules = computed(() => {\n return store.modules\n .map(moduleName => {\n return {\n name: moduleName,\n ...moduleMapping[moduleName]\n }\n })\n .filter(module => moduleMapping[module.name]) // Only show modules that have mapping\n})\n\nonMounted(async () => {\n \tawait users.actions.read({ _id: route.params._id, user: auth.state.user._id });\n \tshow.value = true\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["useRoute","useRouter","ref","inject","IconEvents","IconGroups","IconCommunity","computed","module","onMounted","users.actions","auth.state","memberships.mutations","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqQA,UAAM,QAAQA,UAAAA,SAAU;AACxB,UAAM,SAASC,UAAAA,UAAW;AAE1B,UAAM,OAAOC,IAAG,IAAC,KAAK;AAEtB,UAAM,QAAQC,IAAM,OAAC,OAAO;AAE5B,UAAM,gBAAgB;AAAA,MACpB,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAU;AAAA,MACjB;AAAA,MACD,eAAe;AAAA,QACb,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,WAAU;AAAA,MACjB;AAAA,MACD,WAAW;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAMC,cAAa;AAAA,MACpB;AAAA,IACH;AAEA,UAAM,kBAAkBC,IAAQ,SAAC,MAAM;AACrC,aAAO,MAAM,QACV,IAAI,gBAAc;AACjB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,GAAG,cAAc,UAAU;AAAA,QAC5B;AAAA,MACP,CAAK,EACA,OAAO,CAAAC,YAAU,cAAcA,QAAO,IAAI,CAAC;AAAA,IAChD,CAAC;AAEDC,QAAAA,UAAU,YAAY;AACpB,YAAMC,cAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,KAAU,MAAC,KAAK,IAAK,CAAA;AAC7E,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAQ,GAAE,YAAY,iBAAiB;AAC3FC,4BAAsB,uBAAuBC,MAAAA,MAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACxH;AAEA,aAAS,SAAU;AACjBC,WAAAA,QAAa,OAAQ;AAErB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -189,7 +189,8 @@ const _sfc_main = {
|
|
189
189
|
onClick: ($event) => unref(router).push({
|
190
190
|
name: `${module.route}`,
|
191
191
|
params: {
|
192
|
-
_id: unref(route).params._id
|
192
|
+
_id: unref(route).params._id,
|
193
|
+
user: unref(route).params._id
|
193
194
|
}
|
194
195
|
}),
|
195
196
|
class: "profile-menu-item cursor-pointer"
|