@ozdao/prometheus-framework 0.2.308 → 0.2.309
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/main.css +1 -1
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.js +1 -1
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/prometheus-framework/src/components/Field/Field.vue2.cjs +13 -12
- package/dist/prometheus-framework/src/components/Field/Field.vue2.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/Field/Field.vue2.js +13 -12
- package/dist/prometheus-framework/src/components/Field/Field.vue2.js.map +1 -1
- package/dist/prometheus-framework/src/components/FieldBig/FieldBig.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/FieldBig/FieldBig.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/auth/auth.client.cjs +1 -0
- package/dist/prometheus-framework/src/modules/auth/auth.client.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/auth.client.js +1 -0
- package/dist/prometheus-framework/src/modules/auth/auth.client.js.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.cjs +59 -79
- 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 +80 -100
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +92 -87
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileEdit.vue.js +95 -90
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/auth/views/router/users.cjs +19 -1
- package/dist/prometheus-framework/src/modules/auth/views/router/users.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/router/users.js +19 -1
- package/dist/prometheus-framework/src/modules/auth/views/router/users.js.map +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.js +12 -12
- 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.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/blocks/FooterBlogpost.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs +9 -9
- 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 +9 -9
- package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/Blog.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/Blog.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/Blog.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/Blog.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.cjs +4 -4
- package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.js +4 -4
- package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/community/components/sections/Comments.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/sections/Comments.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/community/components/sections/Comments.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/sections/HotPosts.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/sections/HotPosts.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/router/blogposts.cjs +2 -1
- package/dist/prometheus-framework/src/modules/community/router/blogposts.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/community/router/blogposts.js +2 -1
- package/dist/prometheus-framework/src/modules/community/router/blogposts.js.map +1 -1
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Card.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Embed.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonJoin.vue.js +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 +2 -2
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/globals/globals.client.cjs +4 -2
- package/dist/prometheus-framework/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/globals.client.js +2 -0
- package/dist/prometheus-framework/src/modules/globals/globals.client.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/classes/store.cjs +57 -0
- package/dist/prometheus-framework/src/modules/globals/views/classes/store.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/globals/views/classes/store.js +57 -0
- package/dist/prometheus-framework/src/modules/globals/views/classes/store.js.map +1 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/BottomNavigationBar.vue.cjs +75 -114
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/BottomNavigationBar.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/BottomNavigationBar.vue.js +76 -115
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/icons/entities/IconCatalog.vue.cjs +36 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconCatalog.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconCatalog.vue.js +36 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconCatalog.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconCommunity.vue.cjs +36 -24
- 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 +36 -24
- package/dist/prometheus-framework/src/modules/icons/entities/IconCommunity.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/entities/IconGroups.vue.cjs +21 -12
- package/dist/prometheus-framework/src/modules/icons/entities/IconGroups.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/entities/IconGroups.vue.js +21 -12
- package/dist/prometheus-framework/src/modules/icons/entities/IconGroups.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/entities/IconHome.vue.cjs +36 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconHome.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconHome.vue.js +36 -0
- package/dist/prometheus-framework/src/modules/icons/entities/IconHome.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonBlogpost.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonBlogpost.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonBlogpost.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonBlogpost.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEvent.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEvent.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEvent.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEvent.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEventShort.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEventShort.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEventShort.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonEventShort.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonOrganization.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonOrganization.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonOrganization.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/icons/skeletons/SkeletonOrganization.vue.js.map +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/components/sections/FormAddCustomer.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/orders/components/sections/FormAddCustomer.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +12 -12
- 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/sections/Documents.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/pages/pages.client.cjs +745 -745
- package/dist/prometheus-framework/src/modules/pages/pages.client.js +745 -745
- package/dist/prometheus-framework/src/modules/pages/views/components/blocks/CardPage.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/pages/views/components/pages/PageEdit.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
- 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/LeftoverPositions.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/LeftoverPositions.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/ListPositions.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/ListPositions.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Categories.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Categories.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/products/components/sections/EditModifications.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/EditModifications.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js +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/SpotMemberModify.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/pages/Map.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
- package/dist/prometheus-framework.cjs.js +21 -21
- package/dist/prometheus-framework.es.js +910 -910
- package/package.json +1 -1
- package/src/components/Completion/Completion.vue +1 -0
- package/src/components/Feed/Feed.vue +1 -1
- package/src/components/Field/Field.vue +1 -1
- package/src/modules/auth/auth.client.js +2 -0
- package/src/modules/auth/views/components/pages/Profile.vue +57 -35
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +91 -77
- package/src/modules/auth/views/router/users.js +21 -2
- package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
- package/src/modules/community/components/blocks/FooterBlogpost.vue +3 -3
- package/src/modules/community/components/layouts/Community.vue +8 -8
- package/src/modules/community/components/pages/Blog.vue +1 -1
- package/src/modules/community/components/pages/BlogPost.vue +3 -3
- package/src/modules/community/components/pages/Community.vue +1 -1
- package/src/modules/community/components/sections/Comments.vue +2 -2
- package/src/modules/community/router/blogposts.js +4 -3
- package/src/modules/globals/globals.client.js +3 -0
- package/src/modules/globals/views/classes/store.js +63 -0
- package/src/modules/globals/views/components/partials/BottomNavigationBar.vue +87 -59
- package/src/modules/icons/entities/IconCatalog.vue +18 -0
- package/src/modules/icons/entities/IconCommunity.vue +15 -5
- package/src/modules/icons/entities/IconGroups.vue +7 -2
- package/src/modules/icons/entities/IconHome.vue +18 -0
- package/src/modules/icons/skeletons/SkeletonBlogpost.vue +1 -1
- package/src/modules/icons/skeletons/SkeletonEvent.vue +1 -1
- package/src/modules/icons/skeletons/SkeletonEventShort.vue +1 -1
- package/src/modules/icons/skeletons/SkeletonOrganization.vue +1 -1
- package/src/styles/base/shadow_transitions_hover_refactor.scss +2 -0
- package/src/styles/typography.scss +2 -2
- package/src/modules/auth/views/router/account.js +0 -41
package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["<template>\n\t<div style=\"grid-template-columns: 2fr 4fr 2fr;\" class=\"cols-3 gap-thin pd-t-zero pd-thin\">\n\n\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-
|
1
|
+
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["<template>\n\t<div style=\"grid-template-columns: 2fr 4fr 2fr; grid-template-rows: auto 1fr auto;\" class=\"cols-3 gap-thin pd-t-zero pd-thin mobile:pd-zero \">\n\n\t\t<ul class=\"align-self-start pos-sticky h-max pos-t-0 w-100 bg-white radius-medium pd-medium p-medium gap-thin flex-column mobile:flex-row mobile:radius-zero mobile:pd-thin flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tFeatured\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\t\n\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tPopular\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tRecent\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tFollowing\n\t\t\t</li>\n\n\t\t\t<router-link \n\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t:to=\"{\n\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t}\" \n\t\t\t\tclass=\"button t-medium bg-main w-100\"\n\t\t\t>\n\t\t\t\tCreate Post\n\t\t\t</router-link>\n\t\t</ul>\n\n\t\t<section class=\"pos-relative\">\n\n\t\t\t<header v-if=\"!route.params.url\" class=\"bg-white pd-medium radius-medium mobile:radius-zero t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t \t\t<Select \n\t\t :options=\"['today','week','month','year','all time']\"\n\t\t v-model:select=\"blog.state.filter.period\" \n\t\t placeholder=\"all time\"\n\t\t class=\"\n\t\t \tt-semi\n\t\t \tpos-relative \n\t\t \tw-max\n\t\t \tbg-main t-black\n\t\t \tpd-thin\n\t\t \tradius-medium\n\t\t h2\n\t\t \tt-center\n\t\t \"\n\t\t />\n\t \t</h2>\n\t\t\t</header>\n\n\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t</transition>\n\t\t\t</router-view>\n\n\t\t</section>\n\n\t\t<div class=\"desktop-only align-self-start bg-white radius-medium pd-medium\">\n\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t<p class=\"t-medium mn-b-small\">Popular Communities</p>\n\t\t\t\t\n\t\t\t\t<router-link \n\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t:to=\"{\n\t\t\t\t\t\tname: 'Create Organization'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t>\n\t\t\t\t\t+\n\t\t\t\t</router-link>\n\t\t\t</div>\n\n\n\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t<Feed\n\t\t :states=\"{\n\t\t empty: {\n\t\t title: 'No Organization Found',\n\t\t description: 'Currently, there are no organization available.'\n\t\t }\n\t\t }\"\n\t\t :store=\"{\n\t\t read: (options) => organizations.actions.read(options),\n\t\t state: organizations.state\n\t\t }\"\n\t\t :options=\"{\n\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\tlimit: 10\n\t\t }\"\n\t\t v-slot=\"{ \n\t\t items \n\t\t }\"\n\t\t >\n\t\t \t<CardOrganization \n\t \t\t\tv-for=\"organization in items\"\n\t \t:key=\"organization._id\" \n\t\t \t:organization=\"organization\"\n\t\t \t:user=\"auth.state.user\"\n\t\t \t:showProducts=\"false\"\n\t\t \t:showRating=\"false\"\n\t\t \t:showFeatured=\"false\"\n\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\tclass=\"mn-b-thin pd-small w-100 pd-0 bg-white radius-big o-hidden\"\n\t\t\t />\n\t\t </Feed>\n\t\t\t</transition>\n\t\t</div>\n</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@pf/src/components/Select/Select.vue'\n\timport Feed from '@pf/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@pf/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@pf/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@pf/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@pf/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@pf/src/modules/icons/entities/IconFollowing.vue'\n\n \t// Import state\n\timport * as blog from '@pf/src/modules/community/store/blogposts.js';\n\timport * as auth from '@pf/src/modules/auth/views/store/auth'\n\timport * as organizations from '@pf/src/modules/organizations/store/organizations'\n\timport * as memberships from '@pf/src/modules/organizations/store/memberships'\n\n\t// State\n\tconst route = useRoute();\n\tconst router = useRouter();\n\n\tif (route.params.category === 'popular') blog.state.sort.param = 'views'; \n\tif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\n\tconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n\t memberships.mutations.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n\t};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","memberships.mutations","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8JC,UAAM,QAAQ;AACd,UAAM,SAAS;AAEf,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAQ,GAAE,YAAY,iBAAiB;AAC3FC,gBAAsB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACjI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Blog.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/Blog.vue"],"sourcesContent":["<template>\n <section>\n <Feed\n v-model:sort=\"blog.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Blog Posts Found',\n description: 'Currently, there are no posts available in this blog. Please check back later.'\n },\n }\"\n :store=\"{\n read: (options) => blog.read(options)\n }\"\n :options=\"{\n limit: 15,\n category: route.params.category,\n period: route.query.period,\n status: 'published',\n user: auth.state.user._id,\n following: route.params.category === 'following' ? auth.state.user._id : null,\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"row-1 gap-thin\"\n >\n <CardBlogpost \n v-for=\"item in items\" \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n class=\"h-max-40r mn-b-medium\"\n />\n </Feed>\n </section>\n</template>\n\n\n<script setup=\"props\">\n import { ref, computed, onMounted, watch } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@pf/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\n // Import state\n import * as blog from '@pf/src/modules/community/store/blogposts.js';\n import * as auth from '@pf/src/modules/auth/views/store/auth'\n\n // State\n const route = useRoute();\n const router = useRouter();\n\n // if (!route.params.category) {\n // route.params.category = 'popular'\n // }\n \n onMounted(() => {\n\n if (route.query) {\n const query = route.query;\n\n const newFilterValue = {\n tags: query.tags ? query.tags.split(',') : [],\n period: query.period ? query.period : null,\n };\n\n // проверяем наличие категории в route.params и добавляем ее в фильтр\n // if (route.params.category) {\n // newFilterValue.category = route.params.category;\n // }\n\n blog.state.filter = newFilterValue;\n }\n \n });\n\n watch(() => blog.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => (Array.isArray(value) && value.length > 0) || (typeof value === 'string' && value))\n .map(([key, value]) => [key, Array.isArray(value) ? value.join(',') : value])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["useRoute","useRouter","onMounted","blog.state","watch"],"mappings":";;;;;;;;;;;;;AAqDE,UAAM,QAAQA,UAAAA;AACd,UAAM,SAASC,UAAAA;AAMfC,QAAAA,UAAU,MAAM;AAEd,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AAEpB,cAAM,iBAAiB;AAAA,UACrB,MAAM,MAAM,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI,CAAE;AAAA,UAC7C,QAAQ,MAAM,SAAS,MAAM,SAAS;AAAA,QAC9C;AAOMC,kBAAU,MAAC,SAAS;AAAA,MACrB;AAAA,IAEL,CAAG;AAEDC,QAAAA,MAAM,MAAMD,UAAU,MAAC,QAAQ,CAAC,gBAAgB,mBAAmB;AAEjE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACP,CAAK;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAO,OAAO,UAAU,YAAY,KAAM,EAC3G,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;AAAA,MACpF;AACI,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
1
|
+
{"version":3,"file":"Blog.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/Blog.vue"],"sourcesContent":["<template>\n <section>\n <Feed\n v-model:sort=\"blog.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Blog Posts Found',\n description: 'Currently, there are no posts available in this blog. Please check back later.'\n },\n }\"\n :store=\"{\n read: (options) => blog.read(options)\n }\"\n :options=\"{\n limit: 15,\n category: route.params.category,\n period: route.query.period,\n status: 'published',\n user: auth.state.user._id,\n following: route.params.category === 'following' ? auth.state.user._id : null,\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"row-1 gap-thin\"\n >\n <CardBlogpost \n v-for=\"item in items\" \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n class=\"h-max-40r bg-white mn-b-thin radius-medium mobile:radius-zero\"\n />\n </Feed>\n </section>\n</template>\n\n\n<script setup=\"props\">\n import { ref, computed, onMounted, watch } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@pf/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\n // Import state\n import * as blog from '@pf/src/modules/community/store/blogposts.js';\n import * as auth from '@pf/src/modules/auth/views/store/auth'\n\n // State\n const route = useRoute();\n const router = useRouter();\n\n // if (!route.params.category) {\n // route.params.category = 'popular'\n // }\n \n onMounted(() => {\n\n if (route.query) {\n const query = route.query;\n\n const newFilterValue = {\n tags: query.tags ? query.tags.split(',') : [],\n period: query.period ? query.period : null,\n };\n\n // проверяем наличие категории в route.params и добавляем ее в фильтр\n // if (route.params.category) {\n // newFilterValue.category = route.params.category;\n // }\n\n blog.state.filter = newFilterValue;\n }\n \n });\n\n watch(() => blog.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => (Array.isArray(value) && value.length > 0) || (typeof value === 'string' && value))\n .map(([key, value]) => [key, Array.isArray(value) ? value.join(',') : value])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["useRoute","useRouter","onMounted","blog.state","watch"],"mappings":";;;;;;;;;;;;;AAqDE,UAAM,QAAQA,UAAAA;AACd,UAAM,SAASC,UAAAA;AAMfC,QAAAA,UAAU,MAAM;AAEd,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AAEpB,cAAM,iBAAiB;AAAA,UACrB,MAAM,MAAM,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI,CAAE;AAAA,UAC7C,QAAQ,MAAM,SAAS,MAAM,SAAS;AAAA,QAC9C;AAOMC,kBAAU,MAAC,SAAS;AAAA,MACrB;AAAA,IAEL,CAAG;AAEDC,QAAAA,MAAM,MAAMD,UAAU,MAAC,QAAQ,CAAC,gBAAgB,mBAAmB;AAEjE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACP,CAAK;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAO,OAAO,UAAU,YAAY,KAAM,EAC3G,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;AAAA,MACpF;AACI,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Blog.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Blog.vue"],"sourcesContent":["<template>\n <section>\n <Feed\n v-model:sort=\"blog.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Blog Posts Found',\n description: 'Currently, there are no posts available in this blog. Please check back later.'\n },\n }\"\n :store=\"{\n read: (options) => blog.read(options)\n }\"\n :options=\"{\n limit: 15,\n category: route.params.category,\n period: route.query.period,\n status: 'published',\n user: auth.state.user._id,\n following: route.params.category === 'following' ? auth.state.user._id : null,\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"row-1 gap-thin\"\n >\n <CardBlogpost \n v-for=\"item in items\" \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n class=\"h-max-40r mn-b-medium\"\n />\n </Feed>\n </section>\n</template>\n\n\n<script setup=\"props\">\n import { ref, computed, onMounted, watch } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@pf/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\n // Import state\n import * as blog from '@pf/src/modules/community/store/blogposts.js';\n import * as auth from '@pf/src/modules/auth/views/store/auth'\n\n // State\n const route = useRoute();\n const router = useRouter();\n\n // if (!route.params.category) {\n // route.params.category = 'popular'\n // }\n \n onMounted(() => {\n\n if (route.query) {\n const query = route.query;\n\n const newFilterValue = {\n tags: query.tags ? query.tags.split(',') : [],\n period: query.period ? query.period : null,\n };\n\n // проверяем наличие категории в route.params и добавляем ее в фильтр\n // if (route.params.category) {\n // newFilterValue.category = route.params.category;\n // }\n\n blog.state.filter = newFilterValue;\n }\n \n });\n\n watch(() => blog.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => (Array.isArray(value) && value.length > 0) || (typeof value === 'string' && value))\n .map(([key, value]) => [key, Array.isArray(value) ? value.join(',') : value])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state"],"mappings":";;;;;;;;;;;AAqDE,UAAM,QAAQ;AACd,UAAM,SAAS;AAMf,cAAU,MAAM;AAEd,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AAEpB,cAAM,iBAAiB;AAAA,UACrB,MAAM,MAAM,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI,CAAE;AAAA,UAC7C,QAAQ,MAAM,SAAS,MAAM,SAAS;AAAA,QAC9C;AAOMA,cAAW,SAAS;AAAA,MACrB;AAAA,IAEL,CAAG;AAED,UAAM,MAAMA,MAAW,QAAQ,CAAC,gBAAgB,mBAAmB;AAEjE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACP,CAAK;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAO,OAAO,UAAU,YAAY,KAAM,EAC3G,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;AAAA,MACpF;AACI,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
1
|
+
{"version":3,"file":"Blog.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Blog.vue"],"sourcesContent":["<template>\n <section>\n <Feed\n v-model:sort=\"blog.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Blog Posts Found',\n description: 'Currently, there are no posts available in this blog. Please check back later.'\n },\n }\"\n :store=\"{\n read: (options) => blog.read(options)\n }\"\n :options=\"{\n limit: 15,\n category: route.params.category,\n period: route.query.period,\n status: 'published',\n user: auth.state.user._id,\n following: route.params.category === 'following' ? auth.state.user._id : null,\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"row-1 gap-thin\"\n >\n <CardBlogpost \n v-for=\"item in items\" \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n class=\"h-max-40r bg-white mn-b-thin radius-medium mobile:radius-zero\"\n />\n </Feed>\n </section>\n</template>\n\n\n<script setup=\"props\">\n import { ref, computed, onMounted, watch } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@pf/src/components/Breadcrumbs/Breadcrumbs.vue';\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\n // Import state\n import * as blog from '@pf/src/modules/community/store/blogposts.js';\n import * as auth from '@pf/src/modules/auth/views/store/auth'\n\n // State\n const route = useRoute();\n const router = useRouter();\n\n // if (!route.params.category) {\n // route.params.category = 'popular'\n // }\n \n onMounted(() => {\n\n if (route.query) {\n const query = route.query;\n\n const newFilterValue = {\n tags: query.tags ? query.tags.split(',') : [],\n period: query.period ? query.period : null,\n };\n\n // проверяем наличие категории в route.params и добавляем ее в фильтр\n // if (route.params.category) {\n // newFilterValue.category = route.params.category;\n // }\n\n blog.state.filter = newFilterValue;\n }\n \n });\n\n watch(() => blog.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => (Array.isArray(value) && value.length > 0) || (typeof value === 'string' && value))\n .map(([key, value]) => [key, Array.isArray(value) ? value.join(',') : value])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state"],"mappings":";;;;;;;;;;;AAqDE,UAAM,QAAQ;AACd,UAAM,SAAS;AAMf,cAAU,MAAM;AAEd,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AAEpB,cAAM,iBAAiB;AAAA,UACrB,MAAM,MAAM,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI,CAAE;AAAA,UAC7C,QAAQ,MAAM,SAAS,MAAM,SAAS;AAAA,QAC9C;AAOMA,cAAW,SAAS;AAAA,MACrB;AAAA,IAEL,CAAG;AAED,UAAM,MAAMA,MAAW,QAAQ,CAAC,gBAAgB,mBAAmB;AAEjE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACP,CAAK;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAO,OAAO,UAAU,YAAY,KAAM,EAC3G,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;AAAA,MACpF;AACI,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -8,7 +8,7 @@ const CardBlogpost = require("../blocks/CardBlogpost.vue.cjs");
|
|
8
8
|
const SkeletonBlogpost = require("../../../icons/skeletons/SkeletonBlogpost.vue.cjs");
|
9
9
|
const vueRouter = require("vue-router");
|
10
10
|
;/* empty css */
|
11
|
-
;/* empty css
|
11
|
+
;/* empty css */
|
12
12
|
const auth = require("../../../auth/views/store/auth.cjs");
|
13
13
|
require("../../../organizations/store/memberships.cjs");
|
14
14
|
require("../../../organizations/store/organizations.cjs");
|
@@ -81,7 +81,7 @@ const _sfc_main = {
|
|
81
81
|
vue.createVNode(vue.TransitionGroup, {
|
82
82
|
tag: "ul",
|
83
83
|
name: "fade",
|
84
|
-
class: "o-hidden bg-
|
84
|
+
class: "o-hidden bg-white radius-medium"
|
85
85
|
}, {
|
86
86
|
default: vue.withCtx(() => [
|
87
87
|
isLoading.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(3, (i) => {
|
@@ -114,7 +114,7 @@ const _sfc_main = {
|
|
114
114
|
user: auth.state.user._id,
|
115
115
|
type: "blogpostPage",
|
116
116
|
hideTitle: true,
|
117
|
-
class: "mn-b-thin"
|
117
|
+
class: "mn-b-thin bg-white radius-medium"
|
118
118
|
}, {
|
119
119
|
default: vue.withCtx(() => [
|
120
120
|
blogpost.value && blogpost.value.content ? (vue.openBlock(), vue.createBlock(Viewer.default, {
|
@@ -135,7 +135,7 @@ const _sfc_main = {
|
|
135
135
|
type: "blogpost",
|
136
136
|
target: blogpost.value._id,
|
137
137
|
owner: auth.state.user._id,
|
138
|
-
class: "bg-
|
138
|
+
class: "bg-white radius-medium pd-medium"
|
139
139
|
}, null, 8, ["target", "owner"])) : vue.createCommentVNode("", true)
|
140
140
|
]),
|
141
141
|
_: 1
|
package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BlogPost.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section>\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-
|
1
|
+
{"version":3,"file":"BlogPost.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section>\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-white radius-medium\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n </TransitionGroup>\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'Blogpost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-thin bg-white radius-medium\"\n >\n\n \t <Viewer\n \t v-if=\"blogpost && blogpost.content\"\n \t :content=\"blogpost.content\"\n \t />\n\n \t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n \t\t\t\t\tCheck Source 🔗\n \t\t\t\t</a>\n \t\t\t\n </CardBlogpost>\n\n \t<!-- <h3 class=\"mn-b-small\">Recommended Communities</h3>\n \t\t<Publics \n \t\t\tclass=\"mn-b-small\"\n \t\t/> -->\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-white radius-medium pd-medium\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted, computed, onServerPrefetch, watch } from 'vue';\nimport { useHead } from '@unhead/vue'\nimport Loader from '@pf/src/components/Loader/Loader.vue';\nimport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\nimport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\nimport SkeletonBlogpost from '@pf/src/modules/icons/skeletons/SkeletonBlogpost.vue'\nimport Publics from '@pf/src/modules/organizations/components/sections/Publics.vue'\nimport Comments from '@pf/src/modules/community/components/sections/Comments.vue';\nimport Viewer from '@pf/src/modules/constructor/components/sections/Viewer.vue';\nimport * as blog from '@pf/src/modules/community/store/blogposts.js';\nimport * as auth from '@pf/src/modules/auth/views/store/auth';\n \nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst blogpost = computed(() => blog.state.current);\nconst isLoading = ref(false);\nconst canShare = ref(false);\nconst error = ref(null);\n\nasync function fetchBlogpost() {\n try {\n isLoading.value = true;\n const data = await blog.read({ user: auth.state.user?._id, url: route.params.url });\n blogpost.value = data[0];\n // Обновляем состояние хранилища\n blog.state.current = data[0];\n } catch (err) {\n error.value = err;\n console.error('Error fetching blogpost:', err);\n } finally {\n isLoading.value = false;\n }\n}\n\nonServerPrefetch(async() => {\n\tawait fetchBlogpost()\n});\n\nonMounted(async() => {\n if (!blogpost.value || blogpost.value.url !== route.params.url) {\n await fetchBlogpost();\n }\n canShare.value = !!navigator.share;\n});\n\n\nconst share = async () => {\n if (!canShare.value) return;\n try {\n await navigator.share({\n title: blogpost.value.name,\n text: firstText.value?.content.slice(0, 120) || 'Check out this blog post!',\n url: window.location.href,\n });\n console.log('Content shared successfully');\n } catch (error) {\n console.error('Error sharing:', error);\n }\n};\n\nconst firstImage = computed(() => {\n return blogpost.value?.content?.find(block => block.type === 'ImageUpload');\n});\n\nconst firstText = computed(() => {\n return blogpost.value?.content?.find(block => \n block.type === 'Textarea' && block.class !== 'h2'\n );\n});\n\nconst metadata = computed(() => ({\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0, 120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:image', property: 'og:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'twitter:image', name: 'twitter:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:card', name: 'twitter:card', content: 'summary_large_image' },\n ],\n}));\n\nuseHead(metadata);\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["useRoute","computed","blog.state","ref","blog.read","auth.state","onServerPrefetch","onMounted","useHead"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8EA,UAAM,QAAQA,UAAQ,SAAA;AACtB,UAAM,WAAWC,IAAQ,SAAC,MAAMC,UAAU,MAAC,OAAO;AAClD,UAAM,YAAYC,IAAAA,IAAI,KAAK;AAC3B,UAAM,WAAWA,IAAAA,IAAI,KAAK;AAC1B,UAAM,QAAQA,IAAAA,IAAI,IAAI;AAEtB,mBAAe,gBAAgB;;AAC7B,UAAI;AACF,kBAAU,QAAQ;AAClB,cAAM,OAAO,MAAMC,UAAAA,KAAU,EAAE,OAAMC,UAAAA,MAAW,SAAXA,mBAAiB,KAAK,KAAK,MAAM,OAAO,IAAK,CAAA;AAClF,iBAAS,QAAQ,KAAK,CAAC;AAEvBH,kBAAAA,MAAW,UAAU,KAAK,CAAC;AAAA,MAC5B,SAAQ,KAAK;AACZ,cAAM,QAAQ;AACd,gBAAQ,MAAM,4BAA4B,GAAG;AAAA,MACjD,UAAY;AACR,kBAAU,QAAQ;AAAA,MACnB;AAAA,IACH;AAEAI,QAAAA,iBAAiB,YAAW;AAC3B,YAAM,cAAe;AAAA,IACtB,CAAC;AAEDC,QAAAA,UAAU,YAAW;AACnB,UAAI,CAAC,SAAS,SAAS,SAAS,MAAM,QAAQ,MAAM,OAAO,KAAK;AAC9D,cAAM,cAAa;AAAA,MACpB;AACD,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAC/B,CAAC;AAiBD,UAAM,aAAaN,IAAQ,SAAC,MAAM;;AAChC,cAAO,oBAAS,UAAT,mBAAgB,YAAhB,mBAAyB,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAC;AAED,UAAM,YAAYA,IAAQ,SAAC,MAAM;;AAC/B,cAAO,oBAAS,UAAT,mBAAgB,YAAhB,mBAAyB;AAAA,QAAK,WACnC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA;AAAA,IAEjD,CAAC;AAED,UAAM,WAAWA,IAAQ,SAAC,MAAO;;AAAA;AAAA,QAC/B,QAAO,cAAS,UAAT,mBAAgB;AAAA,QACvB,cAAa,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG;AAAA,QAC/C,MAAM;AAAA,UACJ,EAAE,KAAK,eAAe,MAAM,eAAe,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG,KAAM;AAAA,UAC5F,EAAE,KAAK,YAAY,UAAU,YAAY,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UACxE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG,KAAM;AAAA,UACtG,EAAE,KAAK,YAAY,UAAU,YAAY,WAAS,gBAAW,UAAX,mBAAkB,WAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAsB;AAAA,UAChM,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UAC9E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG,KAAM;AAAA,UAC5G,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,WAAS,gBAAW,UAAX,mBAAkB,WAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAsB;AAAA,UACtM,EAAE,KAAK,gBAAgB,MAAM,gBAAgB,SAAS,sBAAuB;AAAA,QAC9E;AAAA,MACH;AAAA,KAAE;AAEFO,iBAAO,EAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -6,7 +6,7 @@ import _sfc_main$2 from "../blocks/CardBlogpost.vue.js";
|
|
6
6
|
import SkeletonBlogpost from "../../../icons/skeletons/SkeletonBlogpost.vue.js";
|
7
7
|
import { useRoute } from "vue-router";
|
8
8
|
/* empty css */
|
9
|
-
/* empty css
|
9
|
+
/* empty css */
|
10
10
|
import { state as state$1 } from "../../../auth/views/store/auth.js";
|
11
11
|
import "../../../organizations/store/memberships.js";
|
12
12
|
import "../../../organizations/store/organizations.js";
|
@@ -79,7 +79,7 @@ const _sfc_main = {
|
|
79
79
|
createVNode(TransitionGroup, {
|
80
80
|
tag: "ul",
|
81
81
|
name: "fade",
|
82
|
-
class: "o-hidden bg-
|
82
|
+
class: "o-hidden bg-white radius-medium"
|
83
83
|
}, {
|
84
84
|
default: withCtx(() => [
|
85
85
|
isLoading.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, renderList(3, (i) => {
|
@@ -112,7 +112,7 @@ const _sfc_main = {
|
|
112
112
|
user: state$1.user._id,
|
113
113
|
type: "blogpostPage",
|
114
114
|
hideTitle: true,
|
115
|
-
class: "mn-b-thin"
|
115
|
+
class: "mn-b-thin bg-white radius-medium"
|
116
116
|
}, {
|
117
117
|
default: withCtx(() => [
|
118
118
|
blogpost.value && blogpost.value.content ? (openBlock(), createBlock(_sfc_main$3, {
|
@@ -133,7 +133,7 @@ const _sfc_main = {
|
|
133
133
|
type: "blogpost",
|
134
134
|
target: blogpost.value._id,
|
135
135
|
owner: state$1.user._id,
|
136
|
-
class: "bg-
|
136
|
+
class: "bg-white radius-medium pd-medium"
|
137
137
|
}, null, 8, ["target", "owner"])) : createCommentVNode("", true)
|
138
138
|
]),
|
139
139
|
_: 1
|
package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section>\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-
|
1
|
+
{"version":3,"file":"BlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section>\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-white radius-medium\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n </TransitionGroup>\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'Blogpost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-thin bg-white radius-medium\"\n >\n\n \t <Viewer\n \t v-if=\"blogpost && blogpost.content\"\n \t :content=\"blogpost.content\"\n \t />\n\n \t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n \t\t\t\t\tCheck Source 🔗\n \t\t\t\t</a>\n \t\t\t\n </CardBlogpost>\n\n \t<!-- <h3 class=\"mn-b-small\">Recommended Communities</h3>\n \t\t<Publics \n \t\t\tclass=\"mn-b-small\"\n \t\t/> -->\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-white radius-medium pd-medium\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted, computed, onServerPrefetch, watch } from 'vue';\nimport { useHead } from '@unhead/vue'\nimport Loader from '@pf/src/components/Loader/Loader.vue';\nimport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\nimport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\nimport SkeletonBlogpost from '@pf/src/modules/icons/skeletons/SkeletonBlogpost.vue'\nimport Publics from '@pf/src/modules/organizations/components/sections/Publics.vue'\nimport Comments from '@pf/src/modules/community/components/sections/Comments.vue';\nimport Viewer from '@pf/src/modules/constructor/components/sections/Viewer.vue';\nimport * as blog from '@pf/src/modules/community/store/blogposts.js';\nimport * as auth from '@pf/src/modules/auth/views/store/auth';\n \nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst blogpost = computed(() => blog.state.current);\nconst isLoading = ref(false);\nconst canShare = ref(false);\nconst error = ref(null);\n\nasync function fetchBlogpost() {\n try {\n isLoading.value = true;\n const data = await blog.read({ user: auth.state.user?._id, url: route.params.url });\n blogpost.value = data[0];\n // Обновляем состояние хранилища\n blog.state.current = data[0];\n } catch (err) {\n error.value = err;\n console.error('Error fetching blogpost:', err);\n } finally {\n isLoading.value = false;\n }\n}\n\nonServerPrefetch(async() => {\n\tawait fetchBlogpost()\n});\n\nonMounted(async() => {\n if (!blogpost.value || blogpost.value.url !== route.params.url) {\n await fetchBlogpost();\n }\n canShare.value = !!navigator.share;\n});\n\n\nconst share = async () => {\n if (!canShare.value) return;\n try {\n await navigator.share({\n title: blogpost.value.name,\n text: firstText.value?.content.slice(0, 120) || 'Check out this blog post!',\n url: window.location.href,\n });\n console.log('Content shared successfully');\n } catch (error) {\n console.error('Error sharing:', error);\n }\n};\n\nconst firstImage = computed(() => {\n return blogpost.value?.content?.find(block => block.type === 'ImageUpload');\n});\n\nconst firstText = computed(() => {\n return blogpost.value?.content?.find(block => \n block.type === 'Textarea' && block.class !== 'h2'\n );\n});\n\nconst metadata = computed(() => ({\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0, 120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'og:image', property: 'og:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value?.content.slice(0, 120) },\n { hid: 'twitter:image', name: 'twitter:image', content: firstImage.value?.content ? `${process.env.FILE_SERVER_URL}${firstImage.value.content}` : `${process.env.FILE_SERVER_URL}/favicon/cover.jpg` },\n { hid: 'twitter:card', name: 'twitter:card', content: 'summary_large_image' },\n ],\n}));\n\nuseHead(metadata);\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","blog.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8EA,UAAM,QAAQ,SAAQ;AACtB,UAAM,WAAW,SAAS,MAAMA,MAAW,OAAO;AAClD,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,QAAQ,IAAI,IAAI;AAEtB,mBAAe,gBAAgB;;AAC7B,UAAI;AACF,kBAAU,QAAQ;AAClB,cAAM,OAAO,MAAMC,KAAU,EAAE,OAAMC,aAAW,SAAXA,mBAAiB,KAAK,KAAK,MAAM,OAAO,IAAK,CAAA;AAClF,iBAAS,QAAQ,KAAK,CAAC;AAEvBF,cAAW,UAAU,KAAK,CAAC;AAAA,MAC5B,SAAQ,KAAK;AACZ,cAAM,QAAQ;AACd,gBAAQ,MAAM,4BAA4B,GAAG;AAAA,MACjD,UAAY;AACR,kBAAU,QAAQ;AAAA,MACnB;AAAA,IACH;AAEA,qBAAiB,YAAW;AAC3B,YAAM,cAAe;AAAA,IACtB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI,CAAC,SAAS,SAAS,SAAS,MAAM,QAAQ,MAAM,OAAO,KAAK;AAC9D,cAAM,cAAa;AAAA,MACpB;AACD,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAC/B,CAAC;AAiBD,UAAM,aAAa,SAAS,MAAM;;AAChC,cAAO,oBAAS,UAAT,mBAAgB,YAAhB,mBAAyB,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAC;AAED,UAAM,YAAY,SAAS,MAAM;;AAC/B,cAAO,oBAAS,UAAT,mBAAgB,YAAhB,mBAAyB;AAAA,QAAK,WACnC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA;AAAA,IAEjD,CAAC;AAED,UAAM,WAAW,SAAS,MAAO;;AAAA;AAAA,QAC/B,QAAO,cAAS,UAAT,mBAAgB;AAAA,QACvB,cAAa,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG;AAAA,QAC/C,MAAM;AAAA,UACJ,EAAE,KAAK,eAAe,MAAM,eAAe,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG,KAAM;AAAA,UAC5F,EAAE,KAAK,YAAY,UAAU,YAAY,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UACxE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG,KAAM;AAAA,UACtG,EAAE,KAAK,YAAY,UAAU,YAAY,WAAS,gBAAW,UAAX,mBAAkB,WAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAsB;AAAA,UAChM,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UAC9E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAG,KAAM;AAAA,UAC5G,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,WAAS,gBAAW,UAAX,mBAAkB,WAAU,GAAG,QAAQ,IAAI,eAAe,GAAG,WAAW,MAAM,OAAO,KAAK,GAAG,QAAQ,IAAI,eAAe,qBAAsB;AAAA,UACtM,EAAE,KAAK,gBAAgB,MAAM,gBAAgB,SAAS,sBAAuB;AAAA,QAC9E;AAAA,MACH;AAAA,KAAE;AAEF,YAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
3
3
|
const vue = require("vue");
|
4
|
-
;/* empty css
|
4
|
+
;/* empty css */
|
5
5
|
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
6
6
|
;/* empty css */
|
7
7
|
;/* empty css */
|
8
|
-
;/* empty css
|
8
|
+
;/* empty css */
|
9
9
|
require("axios");
|
10
10
|
;/* empty css */
|
11
11
|
const CardBlogpost = require("../blocks/CardBlogpost.vue.cjs");
|
@@ -89,6 +89,6 @@ const _sfc_main = {
|
|
89
89
|
};
|
90
90
|
}
|
91
91
|
};
|
92
|
-
const Community = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
92
|
+
const Community = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-d85e7952"]]);
|
93
93
|
exports.default = Community;
|
94
94
|
//# sourceMappingURL=Community.vue.cjs.map
|
package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Community.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/Community.vue"],"sourcesContent":["<template>\n <div>\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"mn-r-medium\">Blog</h3>\n <button @click=\"router.push({name: 'Create BlogPost'})\" class=\"t-white bg-second button-small button\">+</button>\n </div>\n \n <div class=\"\">\n\n\n <CardBlogpost \n v-for=\"blogpost in filteredBlogPosts\" \n :key=\"blogpost._id\" \n :blogpost=\"blogpost\" \n :owner=\"auth.state.user._id\" \n class=\"mn-b-medium\"\n >\n <div class=\"flex-nowrap flex pd-t-zero pd-b-zero pd-big\">\n <button class=\"mn-r-thin button-small w-100 button\" @click=\"$router.push({path: '/community/posts/' + blogpost.url + '/edit'})\">Edit</button>\n <button class=\"button-small w-100 button\" @click=\"deletePost(blogpost._id)\">Delete</button>\n </div>\n </CardBlogpost>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, onMounted, computed,reactive } from 'vue'\n\nimport Field from \"@pf/src/components/Field/Field.vue\";\nimport Select from \"@pf/src/components/Select/Select.vue\";\nimport Button from \"@pf/src/components/Button/Button.vue\";\nimport Upload from \"@pf/src/components/Upload/Upload.vue\";\n\nimport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue'\n\nimport { \n state as blogState, \n read as fetchBlogPosts, \n create as createBlogPost, \n update as updateBlogPost, \n set as setBlogPost, \n clean as cleanBlogPost,\n remove as deleteBlogPost \n} from '@pf/src/modules/community/store/blogposts.js';\nimport * as auth from '@pf/src/modules/auth/views/store/auth';\nimport { useRoute, useRouter } from 'vue-router'\n\nconst router = useRouter()\n\nawait fetchBlogPosts()\n\nconsole.log(blogState)\n\n\n// Popup\nconst selectedPost = ref({\n title: '',\n content: '',\n categories: []\n})\n\nconst openModal = (post) => {\n selectedPost.value = post || {\n title: '',\n content: '',\n categories: []\n }\n disableScroll()\n}\n\nconst closeModal = () => {\n selectedPost.value = {\n title: '',\n content: '',\n categories: []\n }\n enableScroll()\n}\n\nconst disableScroll = () => {\n document.body.style.overflow = 'hidden';\n document.documentElement.style.overflow = 'hidden';\n}\n\nconst enableScroll = () => {\n document.body.style.overflow = '';\n document.documentElement.style.overflow = '';\n}\n\nconst deletePost = async (_id) => {\n if (window.confirm('Are you sure you want to delete this post?')) {\n console.log(_id)\n await deleteBlogPost(_id);\n }\n};\n\nconst editPost = (post) => {\n openModal(post);\n};\n\nconst updatePost = async () => {\n await updateBlogPost(selectedPost.value)\n closeModal()\n}\n\n\nconst createPost = async () => {\n // Your function body\n if (!selectedPost.value.title || !selectedPost.value.content || !selectedPost.value.categories) {\n console.error('All fields are required.')\n return\n }\n\n await createBlogPost({\n ...selectedPost.value,\n categories: typeof selectedPost.value.categories === 'string' ? selectedPost.value.categories.split(',').map(item => item.trim()) : selectedPost.value.categories\n })\n closeModal()\n}\n\n// Grid\nconst categories = ['all', 'category1', 'category2', 'category3']\nlet selectedCategory = ref('all')\n\nconst filteredBlogPosts = computed(() => {\n if (selectedCategory.value === 'all') {\n return blogState.all;\n }\n return blogState.all.filter(item => item.categories.includes(selectedCategory.value));\n});\n\nconst firstImage = computed(() => {\n for (let item of filteredBlogPosts.value) {\n if (item.blocks && item.blocks.length > 0) {\n const imageBlock = item.blocks.find(block => block.type.name === 'ImageUpload');\n if (imageBlock) return imageBlock.content;\n }\n }\n return null;\n});\n\nfunction formatDate(dateString) {\n let date = new Date(dateString);\n let day = (\"0\" + date.getDate()).slice(-2);\n let month = (\"0\" + (date.getMonth() + 1)).slice(-2);\n let year = date.getFullYear();\n let hours = (\"0\" + date.getHours()).slice(-2);\n let minutes = (\"0\" + date.getMinutes()).slice(-2);\n\n return `${hours}:${minutes}, ${day}.${month}.${year}`;\n}\n\nconst filter = (category) => {\n selectedCategory.value = category;\n};\n</script>\n<style scoped>\n.pd-2px {\n padding: 2px 4px;\n margin-right: 4px;\n}\n.modal {\n position: fixed; \n z-index: 1; \n left: 0;\n top: 0;\n width: 100%; \n height: 100%; \n overflow: auto; \n background-color: rgba(0,0,0,0.9); \n z-index: 50;\n}\n\n.modal-content {\n margin: auto;\n z-index: 5;\n width: 100%;\n max-width: 30rem;\n overflow: scroll;\n}\n\n.close {\n position: fixed;\n top: 2rem;\n right: 3rem;\n\n color: #f1f1f1;\n font-size: 40px;\n font-weight: bold;\n transition: 0.3s;\n z-index: 10;\n}\n\n.close:hover,\n.close:focus {\n color: #bbb;\n text-decoration: none;\n cursor: pointer;\n}\n\n/* Transitions */\n.modal-enter-active, .modal-leave-active {\n transition: opacity .5s;\n}\n.modal-enter, .modal-leave-to {\n opacity: 0;\n}\n</style>"],"names":["useRouter","_withAsyncContext","fetchBlogPosts","blogState","ref","deleteBlogPost","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA+CA,UAAM,SAASA,UAAAA,UAAW;AAE1B,IAAA,CAAA,QAAA,SAAA,IAAAC,IAAAA,iBAAA,MAAMC,UAAc,KAAA,CAAC;AAErB,YAAQ,IAAIC,UAAAA,KAAS;AAIAC,QAAAA,IAAI;AAAA,MACvB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY,CAAE;AAAA,IAChB,CAAC;AA8BD,UAAM,aAAa,OAAO,QAAQ;AAChC,UAAI,OAAO,QAAQ,4CAA4C,GAAG;AAChE,gBAAQ,IAAI,GAAG;AACf,cAAMC,UAAAA,OAAe,GAAG;AAAA,MACzB;AAAA,IACH;AA4BA,QAAI,mBAAmBD,IAAG,IAAC,KAAK;AAEhC,UAAM,oBAAoBE,IAAQ,SAAC,MAAM;AACvC,UAAI,iBAAiB,UAAU,OAAO;AACpC,eAAOH,UAAAA,MAAU;AAAA,MAClB;AACD,aAAOA,gBAAU,IAAI,OAAO,UAAQ,KAAK,WAAW,SAAS,iBAAiB,KAAK,CAAC;AAAA,IACtF,CAAC;AAEkBG,QAAAA,SAAS,MAAM;AAChC,eAAS,QAAQ,kBAAkB,OAAO;AACxC,YAAI,KAAK,UAAU,KAAK,OAAO,SAAS,GAAG;AACzC,gBAAM,aAAa,KAAK,OAAO,KAAK,WAAS,MAAM,KAAK,SAAS,aAAa;AAC9E,cAAI,WAAY,QAAO,WAAW;AAAA,QACnC;AAAA,MACF;AACD,aAAO;AAAA,IACT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
1
|
+
{"version":3,"file":"Community.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/Community.vue"],"sourcesContent":["<template>\n <div>\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"mn-r-medium\">Blog</h3>\n <button @click=\"router.push({name: 'Create BlogPost'})\" class=\"t-white bg-second button-small button\">+</button>\n </div>\n \n <div class=\"\">\n\n\n <CardBlogpost \n v-for=\"blogpost in filteredBlogPosts\" \n :key=\"blogpost._id\" \n :blogpost=\"blogpost\" \n :owner=\"auth.state.user._id\" \n class=\"mn-b-medium \"\n >\n <div class=\"flex-nowrap flex pd-t-zero pd-b-zero pd-big\">\n <button class=\"mn-r-thin button-small w-100 button\" @click=\"$router.push({path: '/community/posts/' + blogpost.url + '/edit'})\">Edit</button>\n <button class=\"button-small w-100 button\" @click=\"deletePost(blogpost._id)\">Delete</button>\n </div>\n </CardBlogpost>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, onMounted, computed,reactive } from 'vue'\n\nimport Field from \"@pf/src/components/Field/Field.vue\";\nimport Select from \"@pf/src/components/Select/Select.vue\";\nimport Button from \"@pf/src/components/Button/Button.vue\";\nimport Upload from \"@pf/src/components/Upload/Upload.vue\";\n\nimport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue'\n\nimport { \n state as blogState, \n read as fetchBlogPosts, \n create as createBlogPost, \n update as updateBlogPost, \n set as setBlogPost, \n clean as cleanBlogPost,\n remove as deleteBlogPost \n} from '@pf/src/modules/community/store/blogposts.js';\nimport * as auth from '@pf/src/modules/auth/views/store/auth';\nimport { useRoute, useRouter } from 'vue-router'\n\nconst router = useRouter()\n\nawait fetchBlogPosts()\n\nconsole.log(blogState)\n\n\n// Popup\nconst selectedPost = ref({\n title: '',\n content: '',\n categories: []\n})\n\nconst openModal = (post) => {\n selectedPost.value = post || {\n title: '',\n content: '',\n categories: []\n }\n disableScroll()\n}\n\nconst closeModal = () => {\n selectedPost.value = {\n title: '',\n content: '',\n categories: []\n }\n enableScroll()\n}\n\nconst disableScroll = () => {\n document.body.style.overflow = 'hidden';\n document.documentElement.style.overflow = 'hidden';\n}\n\nconst enableScroll = () => {\n document.body.style.overflow = '';\n document.documentElement.style.overflow = '';\n}\n\nconst deletePost = async (_id) => {\n if (window.confirm('Are you sure you want to delete this post?')) {\n console.log(_id)\n await deleteBlogPost(_id);\n }\n};\n\nconst editPost = (post) => {\n openModal(post);\n};\n\nconst updatePost = async () => {\n await updateBlogPost(selectedPost.value)\n closeModal()\n}\n\n\nconst createPost = async () => {\n // Your function body\n if (!selectedPost.value.title || !selectedPost.value.content || !selectedPost.value.categories) {\n console.error('All fields are required.')\n return\n }\n\n await createBlogPost({\n ...selectedPost.value,\n categories: typeof selectedPost.value.categories === 'string' ? selectedPost.value.categories.split(',').map(item => item.trim()) : selectedPost.value.categories\n })\n closeModal()\n}\n\n// Grid\nconst categories = ['all', 'category1', 'category2', 'category3']\nlet selectedCategory = ref('all')\n\nconst filteredBlogPosts = computed(() => {\n if (selectedCategory.value === 'all') {\n return blogState.all;\n }\n return blogState.all.filter(item => item.categories.includes(selectedCategory.value));\n});\n\nconst firstImage = computed(() => {\n for (let item of filteredBlogPosts.value) {\n if (item.blocks && item.blocks.length > 0) {\n const imageBlock = item.blocks.find(block => block.type.name === 'ImageUpload');\n if (imageBlock) return imageBlock.content;\n }\n }\n return null;\n});\n\nfunction formatDate(dateString) {\n let date = new Date(dateString);\n let day = (\"0\" + date.getDate()).slice(-2);\n let month = (\"0\" + (date.getMonth() + 1)).slice(-2);\n let year = date.getFullYear();\n let hours = (\"0\" + date.getHours()).slice(-2);\n let minutes = (\"0\" + date.getMinutes()).slice(-2);\n\n return `${hours}:${minutes}, ${day}.${month}.${year}`;\n}\n\nconst filter = (category) => {\n selectedCategory.value = category;\n};\n</script>\n<style scoped>\n.pd-2px {\n padding: 2px 4px;\n margin-right: 4px;\n}\n.modal {\n position: fixed; \n z-index: 1; \n left: 0;\n top: 0;\n width: 100%; \n height: 100%; \n overflow: auto; \n background-color: rgba(0,0,0,0.9); \n z-index: 50;\n}\n\n.modal-content {\n margin: auto;\n z-index: 5;\n width: 100%;\n max-width: 30rem;\n overflow: scroll;\n}\n\n.close {\n position: fixed;\n top: 2rem;\n right: 3rem;\n\n color: #f1f1f1;\n font-size: 40px;\n font-weight: bold;\n transition: 0.3s;\n z-index: 10;\n}\n\n.close:hover,\n.close:focus {\n color: #bbb;\n text-decoration: none;\n cursor: pointer;\n}\n\n/* Transitions */\n.modal-enter-active, .modal-leave-active {\n transition: opacity .5s;\n}\n.modal-enter, .modal-leave-to {\n opacity: 0;\n}\n</style>"],"names":["useRouter","_withAsyncContext","fetchBlogPosts","blogState","ref","deleteBlogPost","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA+CA,UAAM,SAASA,UAAAA,UAAW;AAE1B,IAAA,CAAA,QAAA,SAAA,IAAAC,IAAAA,iBAAA,MAAMC,UAAc,KAAA,CAAC;AAErB,YAAQ,IAAIC,UAAAA,KAAS;AAIAC,QAAAA,IAAI;AAAA,MACvB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY,CAAE;AAAA,IAChB,CAAC;AA8BD,UAAM,aAAa,OAAO,QAAQ;AAChC,UAAI,OAAO,QAAQ,4CAA4C,GAAG;AAChE,gBAAQ,IAAI,GAAG;AACf,cAAMC,UAAAA,OAAe,GAAG;AAAA,MACzB;AAAA,IACH;AA4BA,QAAI,mBAAmBD,IAAG,IAAC,KAAK;AAEhC,UAAM,oBAAoBE,IAAQ,SAAC,MAAM;AACvC,UAAI,iBAAiB,UAAU,OAAO;AACpC,eAAOH,UAAAA,MAAU;AAAA,MAClB;AACD,aAAOA,gBAAU,IAAI,OAAO,UAAQ,KAAK,WAAW,SAAS,iBAAiB,KAAK,CAAC;AAAA,IACtF,CAAC;AAEkBG,QAAAA,SAAS,MAAM;AAChC,eAAS,QAAQ,kBAAkB,OAAO;AACxC,YAAI,KAAK,UAAU,KAAK,OAAO,SAAS,GAAG;AACzC,gBAAM,aAAa,KAAK,OAAO,KAAK,WAAS,MAAM,KAAK,SAAS,aAAa;AAC9E,cAAI,WAAY,QAAO,WAAW;AAAA,QACnC;AAAA,MACF;AACD,aAAO;AAAA,IACT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { withAsyncContext, ref, computed, openBlock, createElementBlock, createElementVNode, unref, Fragment, renderList, createBlock, withCtx } from "vue";
|
2
|
-
/* empty css
|
2
|
+
/* empty css */
|
3
3
|
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
4
4
|
/* empty css */
|
5
5
|
/* empty css */
|
6
|
-
/* empty css
|
6
|
+
/* empty css */
|
7
7
|
import "axios";
|
8
8
|
/* empty css */
|
9
9
|
import _sfc_main$1 from "../blocks/CardBlogpost.vue.js";
|
@@ -87,7 +87,7 @@ const _sfc_main = {
|
|
87
87
|
};
|
88
88
|
}
|
89
89
|
};
|
90
|
-
const Community = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
90
|
+
const Community = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d85e7952"]]);
|
91
91
|
export {
|
92
92
|
Community as default
|
93
93
|
};
|
package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Community.vue"],"sourcesContent":["<template>\n <div>\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"mn-r-medium\">Blog</h3>\n <button @click=\"router.push({name: 'Create BlogPost'})\" class=\"t-white bg-second button-small button\">+</button>\n </div>\n \n <div class=\"\">\n\n\n <CardBlogpost \n v-for=\"blogpost in filteredBlogPosts\" \n :key=\"blogpost._id\" \n :blogpost=\"blogpost\" \n :owner=\"auth.state.user._id\" \n class=\"mn-b-medium\"\n >\n <div class=\"flex-nowrap flex pd-t-zero pd-b-zero pd-big\">\n <button class=\"mn-r-thin button-small w-100 button\" @click=\"$router.push({path: '/community/posts/' + blogpost.url + '/edit'})\">Edit</button>\n <button class=\"button-small w-100 button\" @click=\"deletePost(blogpost._id)\">Delete</button>\n </div>\n </CardBlogpost>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, onMounted, computed,reactive } from 'vue'\n\nimport Field from \"@pf/src/components/Field/Field.vue\";\nimport Select from \"@pf/src/components/Select/Select.vue\";\nimport Button from \"@pf/src/components/Button/Button.vue\";\nimport Upload from \"@pf/src/components/Upload/Upload.vue\";\n\nimport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue'\n\nimport { \n state as blogState, \n read as fetchBlogPosts, \n create as createBlogPost, \n update as updateBlogPost, \n set as setBlogPost, \n clean as cleanBlogPost,\n remove as deleteBlogPost \n} from '@pf/src/modules/community/store/blogposts.js';\nimport * as auth from '@pf/src/modules/auth/views/store/auth';\nimport { useRoute, useRouter } from 'vue-router'\n\nconst router = useRouter()\n\nawait fetchBlogPosts()\n\nconsole.log(blogState)\n\n\n// Popup\nconst selectedPost = ref({\n title: '',\n content: '',\n categories: []\n})\n\nconst openModal = (post) => {\n selectedPost.value = post || {\n title: '',\n content: '',\n categories: []\n }\n disableScroll()\n}\n\nconst closeModal = () => {\n selectedPost.value = {\n title: '',\n content: '',\n categories: []\n }\n enableScroll()\n}\n\nconst disableScroll = () => {\n document.body.style.overflow = 'hidden';\n document.documentElement.style.overflow = 'hidden';\n}\n\nconst enableScroll = () => {\n document.body.style.overflow = '';\n document.documentElement.style.overflow = '';\n}\n\nconst deletePost = async (_id) => {\n if (window.confirm('Are you sure you want to delete this post?')) {\n console.log(_id)\n await deleteBlogPost(_id);\n }\n};\n\nconst editPost = (post) => {\n openModal(post);\n};\n\nconst updatePost = async () => {\n await updateBlogPost(selectedPost.value)\n closeModal()\n}\n\n\nconst createPost = async () => {\n // Your function body\n if (!selectedPost.value.title || !selectedPost.value.content || !selectedPost.value.categories) {\n console.error('All fields are required.')\n return\n }\n\n await createBlogPost({\n ...selectedPost.value,\n categories: typeof selectedPost.value.categories === 'string' ? selectedPost.value.categories.split(',').map(item => item.trim()) : selectedPost.value.categories\n })\n closeModal()\n}\n\n// Grid\nconst categories = ['all', 'category1', 'category2', 'category3']\nlet selectedCategory = ref('all')\n\nconst filteredBlogPosts = computed(() => {\n if (selectedCategory.value === 'all') {\n return blogState.all;\n }\n return blogState.all.filter(item => item.categories.includes(selectedCategory.value));\n});\n\nconst firstImage = computed(() => {\n for (let item of filteredBlogPosts.value) {\n if (item.blocks && item.blocks.length > 0) {\n const imageBlock = item.blocks.find(block => block.type.name === 'ImageUpload');\n if (imageBlock) return imageBlock.content;\n }\n }\n return null;\n});\n\nfunction formatDate(dateString) {\n let date = new Date(dateString);\n let day = (\"0\" + date.getDate()).slice(-2);\n let month = (\"0\" + (date.getMonth() + 1)).slice(-2);\n let year = date.getFullYear();\n let hours = (\"0\" + date.getHours()).slice(-2);\n let minutes = (\"0\" + date.getMinutes()).slice(-2);\n\n return `${hours}:${minutes}, ${day}.${month}.${year}`;\n}\n\nconst filter = (category) => {\n selectedCategory.value = category;\n};\n</script>\n<style scoped>\n.pd-2px {\n padding: 2px 4px;\n margin-right: 4px;\n}\n.modal {\n position: fixed; \n z-index: 1; \n left: 0;\n top: 0;\n width: 100%; \n height: 100%; \n overflow: auto; \n background-color: rgba(0,0,0,0.9); \n z-index: 50;\n}\n\n.modal-content {\n margin: auto;\n z-index: 5;\n width: 100%;\n max-width: 30rem;\n overflow: scroll;\n}\n\n.close {\n position: fixed;\n top: 2rem;\n right: 3rem;\n\n color: #f1f1f1;\n font-size: 40px;\n font-weight: bold;\n transition: 0.3s;\n z-index: 10;\n}\n\n.close:hover,\n.close:focus {\n color: #bbb;\n text-decoration: none;\n cursor: pointer;\n}\n\n/* Transitions */\n.modal-enter-active, .modal-leave-active {\n transition: opacity .5s;\n}\n.modal-enter, .modal-leave-to {\n opacity: 0;\n}\n</style>"],"names":["_withAsyncContext","fetchBlogPosts","blogState","deleteBlogPost"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA+CA,UAAM,SAAS,UAAW;AAE1B,IAAA,CAAA,QAAA,SAAA,IAAAA,iBAAA,MAAMC,KAAc,CAAC;AAErB,YAAQ,IAAIC,KAAS;AAIA,QAAI;AAAA,MACvB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY,CAAE;AAAA,IAChB,CAAC;AA8BD,UAAM,aAAa,OAAO,QAAQ;AAChC,UAAI,OAAO,QAAQ,4CAA4C,GAAG;AAChE,gBAAQ,IAAI,GAAG;AACf,cAAMC,OAAe,GAAG;AAAA,MACzB;AAAA,IACH;AA4BA,QAAI,mBAAmB,IAAI,KAAK;AAEhC,UAAM,oBAAoB,SAAS,MAAM;AACvC,UAAI,iBAAiB,UAAU,OAAO;AACpC,eAAOD,MAAU;AAAA,MAClB;AACD,aAAOA,MAAU,IAAI,OAAO,UAAQ,KAAK,WAAW,SAAS,iBAAiB,KAAK,CAAC;AAAA,IACtF,CAAC;AAEkB,aAAS,MAAM;AAChC,eAAS,QAAQ,kBAAkB,OAAO;AACxC,YAAI,KAAK,UAAU,KAAK,OAAO,SAAS,GAAG;AACzC,gBAAM,aAAa,KAAK,OAAO,KAAK,WAAS,MAAM,KAAK,SAAS,aAAa;AAC9E,cAAI,WAAY,QAAO,WAAW;AAAA,QACnC;AAAA,MACF;AACD,aAAO;AAAA,IACT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
1
|
+
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Community.vue"],"sourcesContent":["<template>\n <div>\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"mn-r-medium\">Blog</h3>\n <button @click=\"router.push({name: 'Create BlogPost'})\" class=\"t-white bg-second button-small button\">+</button>\n </div>\n \n <div class=\"\">\n\n\n <CardBlogpost \n v-for=\"blogpost in filteredBlogPosts\" \n :key=\"blogpost._id\" \n :blogpost=\"blogpost\" \n :owner=\"auth.state.user._id\" \n class=\"mn-b-medium \"\n >\n <div class=\"flex-nowrap flex pd-t-zero pd-b-zero pd-big\">\n <button class=\"mn-r-thin button-small w-100 button\" @click=\"$router.push({path: '/community/posts/' + blogpost.url + '/edit'})\">Edit</button>\n <button class=\"button-small w-100 button\" @click=\"deletePost(blogpost._id)\">Delete</button>\n </div>\n </CardBlogpost>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, onMounted, computed,reactive } from 'vue'\n\nimport Field from \"@pf/src/components/Field/Field.vue\";\nimport Select from \"@pf/src/components/Select/Select.vue\";\nimport Button from \"@pf/src/components/Button/Button.vue\";\nimport Upload from \"@pf/src/components/Upload/Upload.vue\";\n\nimport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue'\n\nimport { \n state as blogState, \n read as fetchBlogPosts, \n create as createBlogPost, \n update as updateBlogPost, \n set as setBlogPost, \n clean as cleanBlogPost,\n remove as deleteBlogPost \n} from '@pf/src/modules/community/store/blogposts.js';\nimport * as auth from '@pf/src/modules/auth/views/store/auth';\nimport { useRoute, useRouter } from 'vue-router'\n\nconst router = useRouter()\n\nawait fetchBlogPosts()\n\nconsole.log(blogState)\n\n\n// Popup\nconst selectedPost = ref({\n title: '',\n content: '',\n categories: []\n})\n\nconst openModal = (post) => {\n selectedPost.value = post || {\n title: '',\n content: '',\n categories: []\n }\n disableScroll()\n}\n\nconst closeModal = () => {\n selectedPost.value = {\n title: '',\n content: '',\n categories: []\n }\n enableScroll()\n}\n\nconst disableScroll = () => {\n document.body.style.overflow = 'hidden';\n document.documentElement.style.overflow = 'hidden';\n}\n\nconst enableScroll = () => {\n document.body.style.overflow = '';\n document.documentElement.style.overflow = '';\n}\n\nconst deletePost = async (_id) => {\n if (window.confirm('Are you sure you want to delete this post?')) {\n console.log(_id)\n await deleteBlogPost(_id);\n }\n};\n\nconst editPost = (post) => {\n openModal(post);\n};\n\nconst updatePost = async () => {\n await updateBlogPost(selectedPost.value)\n closeModal()\n}\n\n\nconst createPost = async () => {\n // Your function body\n if (!selectedPost.value.title || !selectedPost.value.content || !selectedPost.value.categories) {\n console.error('All fields are required.')\n return\n }\n\n await createBlogPost({\n ...selectedPost.value,\n categories: typeof selectedPost.value.categories === 'string' ? selectedPost.value.categories.split(',').map(item => item.trim()) : selectedPost.value.categories\n })\n closeModal()\n}\n\n// Grid\nconst categories = ['all', 'category1', 'category2', 'category3']\nlet selectedCategory = ref('all')\n\nconst filteredBlogPosts = computed(() => {\n if (selectedCategory.value === 'all') {\n return blogState.all;\n }\n return blogState.all.filter(item => item.categories.includes(selectedCategory.value));\n});\n\nconst firstImage = computed(() => {\n for (let item of filteredBlogPosts.value) {\n if (item.blocks && item.blocks.length > 0) {\n const imageBlock = item.blocks.find(block => block.type.name === 'ImageUpload');\n if (imageBlock) return imageBlock.content;\n }\n }\n return null;\n});\n\nfunction formatDate(dateString) {\n let date = new Date(dateString);\n let day = (\"0\" + date.getDate()).slice(-2);\n let month = (\"0\" + (date.getMonth() + 1)).slice(-2);\n let year = date.getFullYear();\n let hours = (\"0\" + date.getHours()).slice(-2);\n let minutes = (\"0\" + date.getMinutes()).slice(-2);\n\n return `${hours}:${minutes}, ${day}.${month}.${year}`;\n}\n\nconst filter = (category) => {\n selectedCategory.value = category;\n};\n</script>\n<style scoped>\n.pd-2px {\n padding: 2px 4px;\n margin-right: 4px;\n}\n.modal {\n position: fixed; \n z-index: 1; \n left: 0;\n top: 0;\n width: 100%; \n height: 100%; \n overflow: auto; \n background-color: rgba(0,0,0,0.9); \n z-index: 50;\n}\n\n.modal-content {\n margin: auto;\n z-index: 5;\n width: 100%;\n max-width: 30rem;\n overflow: scroll;\n}\n\n.close {\n position: fixed;\n top: 2rem;\n right: 3rem;\n\n color: #f1f1f1;\n font-size: 40px;\n font-weight: bold;\n transition: 0.3s;\n z-index: 10;\n}\n\n.close:hover,\n.close:focus {\n color: #bbb;\n text-decoration: none;\n cursor: pointer;\n}\n\n/* Transitions */\n.modal-enter-active, .modal-leave-active {\n transition: opacity .5s;\n}\n.modal-enter, .modal-leave-to {\n opacity: 0;\n}\n</style>"],"names":["_withAsyncContext","fetchBlogPosts","blogState","deleteBlogPost"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA+CA,UAAM,SAAS,UAAW;AAE1B,IAAA,CAAA,QAAA,SAAA,IAAAA,iBAAA,MAAMC,KAAc,CAAC;AAErB,YAAQ,IAAIC,KAAS;AAIA,QAAI;AAAA,MACvB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY,CAAE;AAAA,IAChB,CAAC;AA8BD,UAAM,aAAa,OAAO,QAAQ;AAChC,UAAI,OAAO,QAAQ,4CAA4C,GAAG;AAChE,gBAAQ,IAAI,GAAG;AACf,cAAMC,OAAe,GAAG;AAAA,MACzB;AAAA,IACH;AA4BA,QAAI,mBAAmB,IAAI,KAAK;AAEhC,UAAM,oBAAoB,SAAS,MAAM;AACvC,UAAI,iBAAiB,UAAU,OAAO;AACpC,eAAOD,MAAU;AAAA,MAClB;AACD,aAAOA,MAAU,IAAI,OAAO,UAAQ,KAAK,WAAW,SAAS,iBAAiB,KAAK,CAAC;AAAA,IACtF,CAAC;AAEkB,aAAS,MAAM;AAChC,eAAS,QAAQ,kBAAkB,OAAO;AACxC,YAAI,KAAK,UAAU,KAAK,OAAO,SAAS,GAAG;AACzC,gBAAM,aAAa,KAAK,OAAO,KAAK,WAAS,MAAM,KAAK,SAAS,aAAa;AAC9E,cAAI,WAAY,QAAO,WAAW;AAAA,QACnC;AAAA,MACF;AACD,aAAO;AAAA,IACT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs
CHANGED
@@ -9,8 +9,8 @@ const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
9
9
|
;/* empty css */
|
10
10
|
const BlockTags = require("../../../../components/FieldTags/BlockTags.vue.cjs");
|
11
11
|
const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
|
12
|
-
const Field = require("../../../../components/Field/Field.
|
13
|
-
const Button = require("../../../../components/Button/Button.
|
12
|
+
const Field = require("../../../../components/Field/Field.vue2.cjs");
|
13
|
+
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
14
14
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
15
15
|
const Card = require("../../../globals/views/components/blocks/Card.vue.cjs");
|
16
16
|
const vueRouter = require("vue-router");
|
package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js
CHANGED
@@ -7,8 +7,8 @@ import _sfc_main$2 from "../../../../components/Popup/Popup.vue.js";
|
|
7
7
|
/* empty css */
|
8
8
|
import _sfc_main$3 from "../../../../components/FieldTags/BlockTags.vue.js";
|
9
9
|
import _sfc_main$6 from "../../../../components/Checkbox/Checkbox.vue.js";
|
10
|
-
import Field from "../../../../components/Field/Field.
|
11
|
-
import _sfc_main$7 from "../../../../components/Button/Button.
|
10
|
+
import Field from "../../../../components/Field/Field.vue2.js";
|
11
|
+
import _sfc_main$7 from "../../../../components/Button/Button.vue2.js";
|
12
12
|
import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
|
13
13
|
import _sfc_main$4 from "../../../globals/views/components/blocks/Card.vue.js";
|
14
14
|
import { useRoute, useRouter } from "vue-router";
|
package/dist/prometheus-framework/src/modules/community/components/sections/Comments.vue.cjs
CHANGED
@@ -137,7 +137,7 @@ const _sfc_main = {
|
|
137
137
|
__props.owner ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
|
138
138
|
vue.createElementVNode("form", {
|
139
139
|
onSubmit: vue.withModifiers(submitComment, ["prevent"]),
|
140
|
-
class: "bg-
|
140
|
+
class: "bg-light radius-medium pd-small"
|
141
141
|
}, [
|
142
142
|
vue.withDirectives(vue.createElementVNode("textarea", {
|
143
143
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => commentContent.value = $event),
|
@@ -162,7 +162,7 @@ const _sfc_main = {
|
|
162
162
|
owner: __props.owner,
|
163
163
|
onReply: handleReply,
|
164
164
|
onLoadMore: loadMoreChildren,
|
165
|
-
class: "comment mn-b-small radius-
|
165
|
+
class: "comment mn-b-small radius-medium"
|
166
166
|
}, null, 8, ["comment", "target", "type", "owner"]);
|
167
167
|
}), 128))
|
168
168
|
]);
|
package/dist/prometheus-framework/src/modules/community/components/sections/Comments.vue.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Comments.vue.cjs","sources":["../../../../../../../src/modules/community/components/sections/Comments.vue"],"sourcesContent":["<template>\n <div id=\"comments\">\n <div class=\"mn-b-medium\">\n <h3 class=\"mn-b-small\">{{ comments.length }} comments</h3>\n\n <div @click=\"$router.push({name: 'Sign In'})\" class=\"pd-big cursor-pointer mn-b-small bg-black t-white flex-center flex radius-big\" v-if=\"!owner\">\n <p class=\"t-semi uppercase\">Please log in to leave a comment.</p>\n </div>\n\n <div class=\"mn-b-small\" v-if=\"owner\">\n <form @submit.prevent=\"submitComment\" class=\"bg-
|
1
|
+
{"version":3,"file":"Comments.vue.cjs","sources":["../../../../../../../src/modules/community/components/sections/Comments.vue"],"sourcesContent":["<template>\n <div id=\"comments\">\n <div class=\"mn-b-medium\">\n <h3 class=\"mn-b-small\">{{ comments.length }} comments</h3>\n\n <div @click=\"$router.push({name: 'Sign In'})\" class=\"pd-big cursor-pointer mn-b-small bg-black t-white flex-center flex radius-big\" v-if=\"!owner\">\n <p class=\"t-semi uppercase\">Please log in to leave a comment.</p>\n </div>\n\n <div class=\"mn-b-small\" v-if=\"owner\">\n <form @submit.prevent=\"submitComment\" class=\"bg-light radius-medium pd-small\">\n <textarea v-model=\"commentContent\" placeholder=\"Enter your comment\" class=\"p-big w-100 radius-small mn-r-small\"></textarea>\n <button type=\"submit\" class=\"mn-l-auto bg-main button\">Send</button>\n </form>\n </div>\n </div>\n\n <Comment\n v-for=\"comment in comments\"\n :key=\"comment._id\"\n :comment=\"comment\"\n :target=\"target\"\n :type=\"type\"\n :owner=\"owner\"\n @reply=\"handleReply\"\n @load-more=\"loadMoreChildren\"\n class=\"comment mn-b-small radius-medium\"\n />\n </div>\n</template>\n\n<script setup=\"props\">\nimport { ref } from 'vue';\nimport axios from 'axios';\n\nimport Comment from './Comment.vue';\n\nconst props = defineProps([\n 'target', \n 'owner', \n 'type'\n])\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n target: props.target,\n type: props.type,\n user: props.owner,\n maxDepth: 2\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nconst handleReply = async (parentId, content) => {\n try {\n const response = await $axios.post('/comments/create', {\n content,\n target: props.target,\n type: props.type,\n user: props.owner,\n parent: parentId,\n creator: {\n target: props.owner,\n type: 'User',\n hidden: false\n },\n owner: {\n target: props.owner,\n type: 'User'\n }\n });\n\n const newComment = response.data;\n\n // Обновляем дерево комментариев\n updateCommentTree(comments.value, parentId, newComment);\n } catch (error) {\n console.error('Error posting reply:', error);\n }\n};\n\nconst loadMoreChildren = async (commentId, depth) => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n target: props.target,\n type: props.type,\n user: props.owner,\n parentId: commentId,\n depth: depth,\n maxDepth: 10\n }\n });\n\n // Обновляем дерево комментариев\n updateCommentTree(comments.value, commentId, response.data, response.data.hasMore, true);\n } catch (error) {\n console.error('Error loading more comments:', error);\n }\n};\n\nconst updateCommentTree = (comments, parentId, newData, hasMore, isLoadMore = false) => {\n for (let i = 0; i < comments.length; i++) {\n if (comments[i]._id === parentId) {\n if (isLoadMore) {\n // Для загрузки дополнительных комментариев, добавляем их к существующим\n comments[i].children = [...comments[i].children, ...newData];\n comments[i].hasMore = hasMore;\n } else {\n // Для нового комментария, добавляем его в начало списка дочерних\n comments[i].children.push(newData);\n }\n return true;\n }\n if (comments[i].children && updateCommentTree(comments[i].children, parentId, newData, hasMore, isLoadMore)) {\n return true;\n }\n }\n return false;\n};\n\n\nconst submitComment = async () => {\n if (!commentContent.value) {\n return;\n }\n try {\n const response = await $axios.post('/comments/create', {\n target: props.target,\n user: props.owner,\n type: props.type,\n content: commentContent.value,\n creator: {\n target: props.owner,\n type: 'User',\n hidden: false\n },\n owner: {\n target: props.owner,\n type: 'User'\n }\n });\n\n response.data.owner = props.owner;\n comments.value.push(response.data);\n\n commentContent.value = '';\n } catch (error) {\n console.error(error);\n }\n};\n\nfetchComments();\n</script>\n"],"names":["ref","comments"],"mappings":"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"}
|
@@ -135,7 +135,7 @@ const _sfc_main = {
|
|
135
135
|
__props.owner ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
136
136
|
createElementVNode("form", {
|
137
137
|
onSubmit: withModifiers(submitComment, ["prevent"]),
|
138
|
-
class: "bg-
|
138
|
+
class: "bg-light radius-medium pd-small"
|
139
139
|
}, [
|
140
140
|
withDirectives(createElementVNode("textarea", {
|
141
141
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => commentContent.value = $event),
|
@@ -160,7 +160,7 @@ const _sfc_main = {
|
|
160
160
|
owner: __props.owner,
|
161
161
|
onReply: handleReply,
|
162
162
|
onLoadMore: loadMoreChildren,
|
163
|
-
class: "comment mn-b-small radius-
|
163
|
+
class: "comment mn-b-small radius-medium"
|
164
164
|
}, null, 8, ["comment", "target", "type", "owner"]);
|
165
165
|
}), 128))
|
166
166
|
]);
|
package/dist/prometheus-framework/src/modules/community/components/sections/Comments.vue.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Comments.vue.js","sources":["../../../../../../../src/modules/community/components/sections/Comments.vue"],"sourcesContent":["<template>\n <div id=\"comments\">\n <div class=\"mn-b-medium\">\n <h3 class=\"mn-b-small\">{{ comments.length }} comments</h3>\n\n <div @click=\"$router.push({name: 'Sign In'})\" class=\"pd-big cursor-pointer mn-b-small bg-black t-white flex-center flex radius-big\" v-if=\"!owner\">\n <p class=\"t-semi uppercase\">Please log in to leave a comment.</p>\n </div>\n\n <div class=\"mn-b-small\" v-if=\"owner\">\n <form @submit.prevent=\"submitComment\" class=\"bg-
|
1
|
+
{"version":3,"file":"Comments.vue.js","sources":["../../../../../../../src/modules/community/components/sections/Comments.vue"],"sourcesContent":["<template>\n <div id=\"comments\">\n <div class=\"mn-b-medium\">\n <h3 class=\"mn-b-small\">{{ comments.length }} comments</h3>\n\n <div @click=\"$router.push({name: 'Sign In'})\" class=\"pd-big cursor-pointer mn-b-small bg-black t-white flex-center flex radius-big\" v-if=\"!owner\">\n <p class=\"t-semi uppercase\">Please log in to leave a comment.</p>\n </div>\n\n <div class=\"mn-b-small\" v-if=\"owner\">\n <form @submit.prevent=\"submitComment\" class=\"bg-light radius-medium pd-small\">\n <textarea v-model=\"commentContent\" placeholder=\"Enter your comment\" class=\"p-big w-100 radius-small mn-r-small\"></textarea>\n <button type=\"submit\" class=\"mn-l-auto bg-main button\">Send</button>\n </form>\n </div>\n </div>\n\n <Comment\n v-for=\"comment in comments\"\n :key=\"comment._id\"\n :comment=\"comment\"\n :target=\"target\"\n :type=\"type\"\n :owner=\"owner\"\n @reply=\"handleReply\"\n @load-more=\"loadMoreChildren\"\n class=\"comment mn-b-small radius-medium\"\n />\n </div>\n</template>\n\n<script setup=\"props\">\nimport { ref } from 'vue';\nimport axios from 'axios';\n\nimport Comment from './Comment.vue';\n\nconst props = defineProps([\n 'target', \n 'owner', \n 'type'\n])\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n target: props.target,\n type: props.type,\n user: props.owner,\n maxDepth: 2\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nconst handleReply = async (parentId, content) => {\n try {\n const response = await $axios.post('/comments/create', {\n content,\n target: props.target,\n type: props.type,\n user: props.owner,\n parent: parentId,\n creator: {\n target: props.owner,\n type: 'User',\n hidden: false\n },\n owner: {\n target: props.owner,\n type: 'User'\n }\n });\n\n const newComment = response.data;\n\n // Обновляем дерево комментариев\n updateCommentTree(comments.value, parentId, newComment);\n } catch (error) {\n console.error('Error posting reply:', error);\n }\n};\n\nconst loadMoreChildren = async (commentId, depth) => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n target: props.target,\n type: props.type,\n user: props.owner,\n parentId: commentId,\n depth: depth,\n maxDepth: 10\n }\n });\n\n // Обновляем дерево комментариев\n updateCommentTree(comments.value, commentId, response.data, response.data.hasMore, true);\n } catch (error) {\n console.error('Error loading more comments:', error);\n }\n};\n\nconst updateCommentTree = (comments, parentId, newData, hasMore, isLoadMore = false) => {\n for (let i = 0; i < comments.length; i++) {\n if (comments[i]._id === parentId) {\n if (isLoadMore) {\n // Для загрузки дополнительных комментариев, добавляем их к существующим\n comments[i].children = [...comments[i].children, ...newData];\n comments[i].hasMore = hasMore;\n } else {\n // Для нового комментария, добавляем его в начало списка дочерних\n comments[i].children.push(newData);\n }\n return true;\n }\n if (comments[i].children && updateCommentTree(comments[i].children, parentId, newData, hasMore, isLoadMore)) {\n return true;\n }\n }\n return false;\n};\n\n\nconst submitComment = async () => {\n if (!commentContent.value) {\n return;\n }\n try {\n const response = await $axios.post('/comments/create', {\n target: props.target,\n user: props.owner,\n type: props.type,\n content: commentContent.value,\n creator: {\n target: props.owner,\n type: 'User',\n hidden: false\n },\n owner: {\n target: props.owner,\n type: 'User'\n }\n });\n\n response.data.owner = props.owner;\n comments.value.push(response.data);\n\n commentContent.value = '';\n } catch (error) {\n console.error(error);\n }\n};\n\nfetchComments();\n</script>\n"],"names":["comments"],"mappings":"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"}
|
@@ -2,7 +2,7 @@ import { resolveComponent, openBlock, createElementBlock, createElementVNode, cr
|
|
2
2
|
/* empty css */
|
3
3
|
/* empty css */
|
4
4
|
/* empty css */
|
5
|
-
/* empty css
|
5
|
+
/* empty css */
|
6
6
|
/* empty css */
|
7
7
|
/* empty css */
|
8
8
|
import _sfc_main$1 from "../../../../components/Slider/Slider.vue.js";
|