@ozdao/prometheus-framework 0.2.203 → 0.2.204
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs +24 -15
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.js +24 -15
- package/dist/prometheus-framework/src/components/Feed/Feed.vue.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/components/Tab/Tab.vue.cjs +51 -1
- package/dist/prometheus-framework/src/components/Tab/Tab.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/components/Tab/Tab.vue.js +37 -22
- package/dist/prometheus-framework/src/components/Tab/Tab.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.js +3 -3
- 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 +3 -3
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +9 -8
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.js +9 -8
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.cjs +9 -8
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.js +9 -8
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.cjs +7 -6
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.js +7 -6
- package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.js +2 -2
- 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/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/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 -1
- package/dist/prometheus-framework/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/globals.client.js +4 -1
- package/dist/prometheus-framework/src/modules/globals/globals.client.js.map +1 -1
- 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 +27 -27
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js +28 -28
- package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs +109 -102
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js +110 -103
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/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/globals/views/components/partials/Sidebar.vue.cjs +85 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.js +85 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -0
- package/dist/prometheus-framework/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
- 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 +3 -3
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs +5 -6
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js +4 -5
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.cjs +89 -95
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.js +90 -96
- package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.js.map +1 -1
- 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 +3 -3
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
- 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/Leftovers.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Leftovers.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.cjs +73 -26
- package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.js +82 -35
- package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.js.map +1 -1
- 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/FilterProducts.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs +8 -3
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js +8 -3
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/spots/components/blocks/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 +3 -3
- package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.cjs +2 -2
- package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileBlogposts.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEdit.vue.cjs +3 -3
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEdit.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEvents.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEvents.vue.js +1 -1
- 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 +14 -14
- package/dist/prometheus-framework.es.js +2830 -2823
- package/dist/style.css +68 -0
- package/package.json +1 -1
- package/src/components/Feed/Feed.vue +23 -10
- package/src/components/Tab/Tab.vue +10 -7
- package/src/modules/auth/views/components/pages/ResetPassword.vue +5 -4
- package/src/modules/auth/views/components/pages/SignIn.vue +5 -3
- package/src/modules/auth/views/components/pages/SignUp.vue +3 -2
- package/src/modules/globals/globals.client.js +5 -2
- package/src/modules/globals/views/components/layouts/Client.vue +99 -19
- package/src/modules/globals/views/components/partials/Header.vue +18 -29
- package/src/modules/globals/views/components/partials/Sidebar.vue +0 -2
- package/src/modules/marketplace/components/layouts/Marketplace.vue +16 -9
- package/src/modules/orders/components/partials/ShopCart.vue +3 -3
- package/src/modules/organizations/components/pages/Organization.vue +9 -6
- package/src/modules/organizations/components/sections/DetailsTab.vue +132 -133
- package/src/modules/products/components/pages/Products.vue +89 -10
- package/src/modules/products/components/sections/FilterProducts.vue +1 -1
- package/src/modules/products/components/sections/SectionProduct.vue +4 -0
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
3
3
|
const vue = require("vue");
|
4
4
|
const SkeletonEvent = require("../../modules/icons/skeletons/SkeletonEvent.vue.cjs");
|
5
|
-
|
5
|
+
const Loader = require("../Loader/Loader.vue2.cjs");
|
6
6
|
const EmptyState = require("../EmptyState/EmptyState.vue.cjs");
|
7
7
|
const Dropdown = require("../Dropdown/Dropdown.vue.cjs");
|
8
8
|
const Calendar = require("../DatePicker/Calendar.vue2.cjs");
|
@@ -18,6 +18,10 @@ const _hoisted_1 = {
|
|
18
18
|
key: 0,
|
19
19
|
class: "flex-nowrap flex gap-thin"
|
20
20
|
};
|
21
|
+
const _hoisted_2 = {
|
22
|
+
key: 5,
|
23
|
+
class: "col-w-100 w-100 pos-relative"
|
24
|
+
};
|
21
25
|
const _sfc_main = {
|
22
26
|
__name: "Feed",
|
23
27
|
props: /* @__PURE__ */ vue.mergeModels({
|
@@ -86,6 +90,7 @@ const _sfc_main = {
|
|
86
90
|
const itemsList = vue.ref(items.value || []);
|
87
91
|
const hasMoreItems = vue.ref(false);
|
88
92
|
let isLoading = vue.ref(true);
|
93
|
+
let isLoadingExtra = vue.ref(false);
|
89
94
|
let sentinel = vue.ref(null);
|
90
95
|
let currentSkip = vue.ref(props.options.skip ? props.options.skip : 0);
|
91
96
|
let currentLimit = vue.ref(props.options.limit ? props.options.limit : 10);
|
@@ -97,6 +102,7 @@ const _sfc_main = {
|
|
97
102
|
fetchItems();
|
98
103
|
}
|
99
104
|
const loadMoreItems = async () => {
|
105
|
+
isLoadingExtra.value = true;
|
100
106
|
if (hasMoreItems.value) {
|
101
107
|
currentSkip.value += currentLimit.value;
|
102
108
|
const data = await props.store.read({
|
@@ -119,6 +125,7 @@ const _sfc_main = {
|
|
119
125
|
itemsList.value = [...itemsList.value, ...data];
|
120
126
|
if (items.value) items.value = itemsList.value;
|
121
127
|
}
|
128
|
+
isLoadingExtra.value = false;
|
122
129
|
};
|
123
130
|
const fetchItems = async () => {
|
124
131
|
const data = await props.store.read({
|
@@ -187,7 +194,7 @@ const _sfc_main = {
|
|
187
194
|
loadMoreItems();
|
188
195
|
}
|
189
196
|
});
|
190
|
-
observer.observe(sentinel.value);
|
197
|
+
if (sentinel.value) observer.observe(sentinel.value);
|
191
198
|
}
|
192
199
|
});
|
193
200
|
vue.onUnmounted(() => {
|
@@ -317,21 +324,23 @@ const _sfc_main = {
|
|
317
324
|
!vue.unref(isLoading) && itemsList.value.length > 0 ? vue.renderSlot(_ctx.$slots, "default", {
|
318
325
|
key: 0,
|
319
326
|
items: itemsList.value
|
320
|
-
}) : vue.createCommentVNode("", true)
|
321
|
-
__props.showLoadMore && hasMoreItems.value && itemsList.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("button", {
|
322
|
-
key: 1,
|
323
|
-
onClick: loadMoreItems,
|
324
|
-
class: "col-w-100 w-100 bg-main button"
|
325
|
-
}, " Load More ")) : vue.createCommentVNode("", true),
|
326
|
-
vue.createElementVNode("div", {
|
327
|
-
key: "sentinel",
|
328
|
-
ref_key: "sentinel",
|
329
|
-
ref: sentinel,
|
330
|
-
class: "sentinel"
|
331
|
-
}, null, 512)
|
327
|
+
}) : vue.createCommentVNode("", true)
|
332
328
|
]),
|
333
329
|
_: 3
|
334
|
-
}, 8, ["class"])
|
330
|
+
}, 8, ["class"]),
|
331
|
+
__props.showLoadMore && hasMoreItems.value && itemsList.value.length > 0 && !vue.unref(isLoadingExtra) ? (vue.openBlock(), vue.createElementBlock("button", {
|
332
|
+
key: 3,
|
333
|
+
onClick: loadMoreItems,
|
334
|
+
class: "col-w-100 mn-t-thin w-100 bg-main button"
|
335
|
+
}, " Load More ")) : (vue.openBlock(), vue.createElementBlock("div", {
|
336
|
+
key: "sentinel",
|
337
|
+
ref_key: "sentinel",
|
338
|
+
ref: sentinel,
|
339
|
+
class: "sentinel"
|
340
|
+
}, null, 512)),
|
341
|
+
vue.unref(isLoadingExtra) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
|
342
|
+
vue.createVNode(Loader.default)
|
343
|
+
])) : vue.createCommentVNode("", true)
|
335
344
|
], 64);
|
336
345
|
};
|
337
346
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Feed.vue.cjs","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n\n <div v-if=\"search || date || (sort && !sort.hideButton)\" class=\"flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n />\n\n <template\n v-if=\"filter\"\n >\n <div \n :class=\"filter.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-extra aspect-1x1 h-100\"\n >\n <IconFilter @click=\"() => filter.active = !filter.active\" class=\"w-1r h-auto\"/>\n </div>\n\n \n <BottomSheet\n v-if=\"filter.active\"\n :show=\"filter.active\"\n @toggle=\"() => filter.active = false\"\n class=\"z-index-10 pos-fixed pos-t-0 pos-r-0\"\n :class=\"{\n 'pos-t-0': filter.active,\n 'pos-t-100': !filter.active\n }\"\n >\n <BlockFilter\n v-model:filter=\"filter\"\n :options=\"filter.options\"\n class=\"h-100 w-100 pd-small bg-light\"\n />\n </BottomSheet> \n </template>\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-big\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-extra aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-semi t-white bg-black\"\n />\n </Dropdown> \n </div>\n\n <TransitionGroup \n\n v-if=\"isLoading\"\n tag=\"ul\" \n name=\"scaleTransition\" \n >\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in currentLimit\" \n :key=\"'skeleton-' + i\"\n class=\"mn-b-small radius-big o-hidden d-block\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-if=\"!isLoading && itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n v-if=\"!isLoading && itemsList.length > 0\"\n :items=\"itemsList\"\n >\n </slot>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 w-100 bg-main button\"\n >\n Load More\n </button>\n\n <div key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n </TransitionGroup>\n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\n\nimport SkeletonEvent from '@pf/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@pf/src/components/Loader/Loader.vue';\nimport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@pf/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@pf/src/components/DatePicker/Calendar.vue'\nimport BottomSheet from '@pf/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@pf/src/modules/globals/views/components/blocks/BlockSorting.vue'\nimport BlockFilter from '@pf/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\nimport ButtonSort from '@pf/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@pf/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@pf/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@pf/src/modules/icons/entities/IconEvents.vue'\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: String,\n description: String,\n },\n }),\n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 20, \n skip: 0 ,\n owner: null,\n creator: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n});\n \nconst itemsList = ref(items.value || []);\nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\n// let sortParam = ref(sort.value?.param || 'createdAt');\n// let sortOrder = ref(sort.value?.order || 'asc');\n\nlet currentSearch = ref('');\n\nfunction updateSearch(search) {\n currentSearch.value = search\n currentSkip.value = 0\n currentLimit.value = 10\n\n fetchItems();\n}\n\nconst loadMoreItems = async () => {\n\n if (hasMoreItems.value) {\n currentSkip.value += currentLimit.value;\n \n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = [...itemsList.value, ...data];\n \n if (items.value) items.value = itemsList.value;\n }\n};\n\nconst fetchItems = async () => {\n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n search: currentSearch.value,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = data;\n if (items.value) items.value = itemsList.value;\n isLoading.value = false;\n};\n\n\nwatch(() => props.external, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => date.value, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => sort.value?.order, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\nwatch(() => sort.value?.param, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\n\nwatch(() => props.options, (newVal, oldVal) => {\n if (\n newVal.organization !== oldVal.organization ||\n newVal.categories !== oldVal.categories ||\n newVal.prices !== oldVal.prices ||\n newVal.delivery !== oldVal.delivery ||\n newVal.search !== oldVal.search ||\n newVal.status !== oldVal.status ||\n newVal.hidden !== oldVal.hidden ||\n newVal.type !== oldVal.type ||\n newVal.tags !== oldVal.tags || \n newVal.following !== oldVal.following\n ) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n\n<style>\n.feed-move, /* apply transition to moving elements */\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n/* ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","ref","search","watch","onMounted","onUnmounted"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Feed.vue.cjs","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n\n <div v-if=\"search || date || (sort && !sort.hideButton)\" class=\"flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n />\n\n <template\n v-if=\"filter\"\n >\n <div \n :class=\"filter.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-extra aspect-1x1 h-100\"\n >\n <IconFilter @click=\"() => filter.active = !filter.active\" class=\"w-1r h-auto\"/>\n </div>\n\n \n <BottomSheet\n v-if=\"filter.active\"\n :show=\"filter.active\"\n @toggle=\"() => filter.active = false\"\n class=\"z-index-10 pos-fixed pos-t-0 pos-r-0\"\n :class=\"{\n 'pos-t-0': filter.active,\n 'pos-t-100': !filter.active\n }\"\n >\n <BlockFilter\n v-model:filter=\"filter\"\n :options=\"filter.options\"\n class=\"h-100 w-100 pd-small bg-light\"\n />\n </BottomSheet> \n </template>\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-big\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-extra aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-semi t-white bg-black\"\n />\n </Dropdown> \n </div>\n\n <TransitionGroup \n\n v-if=\"isLoading\"\n tag=\"ul\" \n name=\"scaleTransition\" \n >\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in currentLimit\" \n :key=\"'skeleton-' + i\"\n class=\"mn-b-small radius-big o-hidden d-block\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-if=\"!isLoading && itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n v-if=\"!isLoading && itemsList.length > 0\"\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\n\nimport SkeletonEvent from '@pf/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@pf/src/components/Loader/Loader.vue';\nimport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@pf/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@pf/src/components/DatePicker/Calendar.vue'\nimport BottomSheet from '@pf/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@pf/src/modules/globals/views/components/blocks/BlockSorting.vue'\nimport BlockFilter from '@pf/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\nimport ButtonSort from '@pf/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@pf/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@pf/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@pf/src/modules/icons/entities/IconEvents.vue'\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: String,\n description: String,\n },\n }),\n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 20, \n skip: 0 ,\n owner: null,\n creator: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n});\n \nconst itemsList = ref(items.value || []);\nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\n// let sortParam = ref(sort.value?.param || 'createdAt');\n// let sortOrder = ref(sort.value?.order || 'asc');\n\nlet currentSearch = ref('');\n\nfunction updateSearch(search) {\n currentSearch.value = search\n currentSkip.value = 0\n currentLimit.value = 10\n\n fetchItems();\n}\n\nconst loadMoreItems = async () => {\n isLoadingExtra.value = true\n\n if (hasMoreItems.value) {\n currentSkip.value += currentLimit.value;\n \n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = [...itemsList.value, ...data];\n \n if (items.value) items.value = itemsList.value;\n }\n\n isLoadingExtra.value = false\n};\n\nconst fetchItems = async () => {\n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n search: currentSearch.value,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = data;\n if (items.value) items.value = itemsList.value;\n isLoading.value = false;\n};\n\n\nwatch(() => props.external, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => date.value, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => sort.value?.order, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\nwatch(() => sort.value?.param, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\n\nwatch(() => props.options, (newVal, oldVal) => {\n if (\n newVal.organization !== oldVal.organization ||\n newVal.categories !== oldVal.categories ||\n newVal.prices !== oldVal.prices ||\n newVal.delivery !== oldVal.delivery ||\n newVal.search !== oldVal.search ||\n newVal.status !== oldVal.status ||\n newVal.hidden !== oldVal.hidden ||\n newVal.type !== oldVal.type ||\n newVal.tags !== oldVal.tags || \n newVal.following !== oldVal.following\n ) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n\n<style>\n.feed-move, /* apply transition to moving elements */\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n/* ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","ref","search","watch","onMounted","onUnmounted"],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { mergeModels, useModel, ref, watch, onMounted, onUnmounted, openBlock, createElementBlock, Fragment, createBlock, normalizeClass, createCommentVNode, createElementVNode, createVNode, withCtx, unref, TransitionGroup, renderList, renderSlot } from "vue";
|
2
2
|
import SkeletonEvent from "../../modules/icons/skeletons/SkeletonEvent.vue.js";
|
3
|
-
|
3
|
+
import Loader from "../Loader/Loader.vue2.js";
|
4
4
|
import _sfc_main$a from "../EmptyState/EmptyState.vue.js";
|
5
5
|
import _sfc_main$5 from "../Dropdown/Dropdown.vue.js";
|
6
6
|
import _sfc_main$7 from "../DatePicker/Calendar.vue2.js";
|
@@ -16,6 +16,10 @@ const _hoisted_1 = {
|
|
16
16
|
key: 0,
|
17
17
|
class: "flex-nowrap flex gap-thin"
|
18
18
|
};
|
19
|
+
const _hoisted_2 = {
|
20
|
+
key: 5,
|
21
|
+
class: "col-w-100 w-100 pos-relative"
|
22
|
+
};
|
19
23
|
const _sfc_main = {
|
20
24
|
__name: "Feed",
|
21
25
|
props: /* @__PURE__ */ mergeModels({
|
@@ -84,6 +88,7 @@ const _sfc_main = {
|
|
84
88
|
const itemsList = ref(items.value || []);
|
85
89
|
const hasMoreItems = ref(false);
|
86
90
|
let isLoading = ref(true);
|
91
|
+
let isLoadingExtra = ref(false);
|
87
92
|
let sentinel = ref(null);
|
88
93
|
let currentSkip = ref(props.options.skip ? props.options.skip : 0);
|
89
94
|
let currentLimit = ref(props.options.limit ? props.options.limit : 10);
|
@@ -95,6 +100,7 @@ const _sfc_main = {
|
|
95
100
|
fetchItems();
|
96
101
|
}
|
97
102
|
const loadMoreItems = async () => {
|
103
|
+
isLoadingExtra.value = true;
|
98
104
|
if (hasMoreItems.value) {
|
99
105
|
currentSkip.value += currentLimit.value;
|
100
106
|
const data = await props.store.read({
|
@@ -117,6 +123,7 @@ const _sfc_main = {
|
|
117
123
|
itemsList.value = [...itemsList.value, ...data];
|
118
124
|
if (items.value) items.value = itemsList.value;
|
119
125
|
}
|
126
|
+
isLoadingExtra.value = false;
|
120
127
|
};
|
121
128
|
const fetchItems = async () => {
|
122
129
|
const data = await props.store.read({
|
@@ -185,7 +192,7 @@ const _sfc_main = {
|
|
185
192
|
loadMoreItems();
|
186
193
|
}
|
187
194
|
});
|
188
|
-
observer.observe(sentinel.value);
|
195
|
+
if (sentinel.value) observer.observe(sentinel.value);
|
189
196
|
}
|
190
197
|
});
|
191
198
|
onUnmounted(() => {
|
@@ -315,21 +322,23 @@ const _sfc_main = {
|
|
315
322
|
!unref(isLoading) && itemsList.value.length > 0 ? renderSlot(_ctx.$slots, "default", {
|
316
323
|
key: 0,
|
317
324
|
items: itemsList.value
|
318
|
-
}) : createCommentVNode("", true)
|
319
|
-
__props.showLoadMore && hasMoreItems.value && itemsList.value.length > 0 ? (openBlock(), createElementBlock("button", {
|
320
|
-
key: 1,
|
321
|
-
onClick: loadMoreItems,
|
322
|
-
class: "col-w-100 w-100 bg-main button"
|
323
|
-
}, " Load More ")) : createCommentVNode("", true),
|
324
|
-
createElementVNode("div", {
|
325
|
-
key: "sentinel",
|
326
|
-
ref_key: "sentinel",
|
327
|
-
ref: sentinel,
|
328
|
-
class: "sentinel"
|
329
|
-
}, null, 512)
|
325
|
+
}) : createCommentVNode("", true)
|
330
326
|
]),
|
331
327
|
_: 3
|
332
|
-
}, 8, ["class"])
|
328
|
+
}, 8, ["class"]),
|
329
|
+
__props.showLoadMore && hasMoreItems.value && itemsList.value.length > 0 && !unref(isLoadingExtra) ? (openBlock(), createElementBlock("button", {
|
330
|
+
key: 3,
|
331
|
+
onClick: loadMoreItems,
|
332
|
+
class: "col-w-100 mn-t-thin w-100 bg-main button"
|
333
|
+
}, " Load More ")) : (openBlock(), createElementBlock("div", {
|
334
|
+
key: "sentinel",
|
335
|
+
ref_key: "sentinel",
|
336
|
+
ref: sentinel,
|
337
|
+
class: "sentinel"
|
338
|
+
}, null, 512)),
|
339
|
+
unref(isLoadingExtra) ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
340
|
+
createVNode(Loader)
|
341
|
+
])) : createCommentVNode("", true)
|
333
342
|
], 64);
|
334
343
|
};
|
335
344
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Feed.vue.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n\n <div v-if=\"search || date || (sort && !sort.hideButton)\" class=\"flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n />\n\n <template\n v-if=\"filter\"\n >\n <div \n :class=\"filter.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-extra aspect-1x1 h-100\"\n >\n <IconFilter @click=\"() => filter.active = !filter.active\" class=\"w-1r h-auto\"/>\n </div>\n\n \n <BottomSheet\n v-if=\"filter.active\"\n :show=\"filter.active\"\n @toggle=\"() => filter.active = false\"\n class=\"z-index-10 pos-fixed pos-t-0 pos-r-0\"\n :class=\"{\n 'pos-t-0': filter.active,\n 'pos-t-100': !filter.active\n }\"\n >\n <BlockFilter\n v-model:filter=\"filter\"\n :options=\"filter.options\"\n class=\"h-100 w-100 pd-small bg-light\"\n />\n </BottomSheet> \n </template>\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-big\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-extra aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-semi t-white bg-black\"\n />\n </Dropdown> \n </div>\n\n <TransitionGroup \n\n v-if=\"isLoading\"\n tag=\"ul\" \n name=\"scaleTransition\" \n >\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in currentLimit\" \n :key=\"'skeleton-' + i\"\n class=\"mn-b-small radius-big o-hidden d-block\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-if=\"!isLoading && itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n v-if=\"!isLoading && itemsList.length > 0\"\n :items=\"itemsList\"\n >\n </slot>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 w-100 bg-main button\"\n >\n Load More\n </button>\n\n <div key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n </TransitionGroup>\n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\n\nimport SkeletonEvent from '@pf/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@pf/src/components/Loader/Loader.vue';\nimport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@pf/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@pf/src/components/DatePicker/Calendar.vue'\nimport BottomSheet from '@pf/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@pf/src/modules/globals/views/components/blocks/BlockSorting.vue'\nimport BlockFilter from '@pf/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\nimport ButtonSort from '@pf/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@pf/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@pf/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@pf/src/modules/icons/entities/IconEvents.vue'\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: String,\n description: String,\n },\n }),\n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 20, \n skip: 0 ,\n owner: null,\n creator: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n});\n \nconst itemsList = ref(items.value || []);\nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\n// let sortParam = ref(sort.value?.param || 'createdAt');\n// let sortOrder = ref(sort.value?.order || 'asc');\n\nlet currentSearch = ref('');\n\nfunction updateSearch(search) {\n currentSearch.value = search\n currentSkip.value = 0\n currentLimit.value = 10\n\n fetchItems();\n}\n\nconst loadMoreItems = async () => {\n\n if (hasMoreItems.value) {\n currentSkip.value += currentLimit.value;\n \n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = [...itemsList.value, ...data];\n \n if (items.value) items.value = itemsList.value;\n }\n};\n\nconst fetchItems = async () => {\n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n search: currentSearch.value,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = data;\n if (items.value) items.value = itemsList.value;\n isLoading.value = false;\n};\n\n\nwatch(() => props.external, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => date.value, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => sort.value?.order, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\nwatch(() => sort.value?.param, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\n\nwatch(() => props.options, (newVal, oldVal) => {\n if (\n newVal.organization !== oldVal.organization ||\n newVal.categories !== oldVal.categories ||\n newVal.prices !== oldVal.prices ||\n newVal.delivery !== oldVal.delivery ||\n newVal.search !== oldVal.search ||\n newVal.status !== oldVal.status ||\n newVal.hidden !== oldVal.hidden ||\n newVal.type !== oldVal.type ||\n newVal.tags !== oldVal.tags || \n newVal.following !== oldVal.following\n ) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n\n<style>\n.feed-move, /* apply transition to moving elements */\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n/* ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Feed.vue.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n\n <div v-if=\"search || date || (sort && !sort.hideButton)\" class=\"flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n />\n\n <template\n v-if=\"filter\"\n >\n <div \n :class=\"filter.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-extra aspect-1x1 h-100\"\n >\n <IconFilter @click=\"() => filter.active = !filter.active\" class=\"w-1r h-auto\"/>\n </div>\n\n \n <BottomSheet\n v-if=\"filter.active\"\n :show=\"filter.active\"\n @toggle=\"() => filter.active = false\"\n class=\"z-index-10 pos-fixed pos-t-0 pos-r-0\"\n :class=\"{\n 'pos-t-0': filter.active,\n 'pos-t-100': !filter.active\n }\"\n >\n <BlockFilter\n v-model:filter=\"filter\"\n :options=\"filter.options\"\n class=\"h-100 w-100 pd-small bg-light\"\n />\n </BottomSheet> \n </template>\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-big\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-extra aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-semi t-white bg-black\"\n />\n </Dropdown> \n </div>\n\n <TransitionGroup \n\n v-if=\"isLoading\"\n tag=\"ul\" \n name=\"scaleTransition\" \n >\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in currentLimit\" \n :key=\"'skeleton-' + i\"\n class=\"mn-b-small radius-big o-hidden d-block\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-if=\"!isLoading && itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n v-if=\"!isLoading && itemsList.length > 0\"\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\n\nimport SkeletonEvent from '@pf/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@pf/src/components/Loader/Loader.vue';\nimport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@pf/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@pf/src/components/DatePicker/Calendar.vue'\nimport BottomSheet from '@pf/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@pf/src/modules/globals/views/components/blocks/BlockSorting.vue'\nimport BlockFilter from '@pf/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\nimport ButtonSort from '@pf/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@pf/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@pf/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@pf/src/modules/icons/entities/IconEvents.vue'\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: String,\n description: String,\n },\n }),\n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 20, \n skip: 0 ,\n owner: null,\n creator: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n});\n \nconst itemsList = ref(items.value || []);\nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\n// let sortParam = ref(sort.value?.param || 'createdAt');\n// let sortOrder = ref(sort.value?.order || 'asc');\n\nlet currentSearch = ref('');\n\nfunction updateSearch(search) {\n currentSearch.value = search\n currentSkip.value = 0\n currentLimit.value = 10\n\n fetchItems();\n}\n\nconst loadMoreItems = async () => {\n isLoadingExtra.value = true\n\n if (hasMoreItems.value) {\n currentSkip.value += currentLimit.value;\n \n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = [...itemsList.value, ...data];\n \n if (items.value) items.value = itemsList.value;\n }\n\n isLoadingExtra.value = false\n};\n\nconst fetchItems = async () => {\n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n search: currentSearch.value,\n ...props.options\n });\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n itemsList.value = data;\n if (items.value) items.value = itemsList.value;\n isLoading.value = false;\n};\n\n\nwatch(() => props.external, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => date.value, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nwatch(() => sort.value?.order, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\nwatch(() => sort.value?.param, (newVal, oldVal) => {\n\n if (newVal !== oldVal) {\n currentSkip.value = 0\n fetchItems();\n }\n});\n\n\nwatch(() => props.options, (newVal, oldVal) => {\n if (\n newVal.organization !== oldVal.organization ||\n newVal.categories !== oldVal.categories ||\n newVal.prices !== oldVal.prices ||\n newVal.delivery !== oldVal.delivery ||\n newVal.search !== oldVal.search ||\n newVal.status !== oldVal.status ||\n newVal.hidden !== oldVal.hidden ||\n newVal.type !== oldVal.type ||\n newVal.tags !== oldVal.tags || \n newVal.following !== oldVal.following\n ) {\n currentSkip.value = 0\n fetchItems();\n }\n}, { deep: true });\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n\n<style>\n.feed-move, /* apply transition to moving elements */\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n/* ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
3
3
|
const vue = require("vue");
|
4
|
-
const Field = require("../Field/Field.
|
4
|
+
const Field = require("../Field/Field.vue.cjs");
|
5
5
|
const IconArrow = require("../../modules/icons/navigation/IconArrow.vue.cjs");
|
6
6
|
const vueI18n = require("vue-i18n");
|
7
7
|
const _hoisted_1 = { class: "pd-thin radius-extra flex-nowrap flex" };
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { ref, onMounted, watchEffect, openBlock, createElementBlock, createVNode, unref, isRef, createElementVNode, toDisplayString, createCommentVNode } from "vue";
|
2
|
-
import Field from "../Field/Field.
|
2
|
+
import Field from "../Field/Field.vue.js";
|
3
3
|
import _sfc_main$1 from "../../modules/icons/navigation/IconArrow.vue.js";
|
4
4
|
import { useI18n } from "vue-i18n";
|
5
5
|
const _hoisted_1 = { class: "pd-thin radius-extra flex-nowrap flex" };
|
@@ -1 +1,51 @@
|
|
1
|
-
"use strict";
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
3
|
+
const vue = require("vue");
|
4
|
+
;/* empty css */
|
5
|
+
const _hoisted_1 = { class: "flex-nowrap flex-v-center gap-micro pd-micro flex pos-relative" };
|
6
|
+
const _hoisted_2 = ["onClick"];
|
7
|
+
const _hoisted_3 = { class: "" };
|
8
|
+
const _sfc_main = {
|
9
|
+
__name: "Tab",
|
10
|
+
props: {
|
11
|
+
tabs: Array,
|
12
|
+
tabClass: String,
|
13
|
+
selected: String,
|
14
|
+
callback: Function
|
15
|
+
},
|
16
|
+
emits: ["update:selected"],
|
17
|
+
setup(__props, { emit: __emit }) {
|
18
|
+
const emit = __emit;
|
19
|
+
const props = __props;
|
20
|
+
const selectedTab = vue.ref(0);
|
21
|
+
if (props.selected) {
|
22
|
+
const selectedIndex = props.tabs.findIndex((tab) => tab.value === props.selected);
|
23
|
+
if (selectedIndex !== -1) {
|
24
|
+
selectedTab.value = selectedIndex;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
function selectTab(index, tab) {
|
28
|
+
selectedTab.value = index;
|
29
|
+
emit("update:selected", tab.value);
|
30
|
+
if (props.callback) props.callback();
|
31
|
+
}
|
32
|
+
return (_ctx, _cache) => {
|
33
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
34
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.tabs, (tab, index) => {
|
35
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
36
|
+
key: index,
|
37
|
+
onClick: ($event) => selectTab(index, tab),
|
38
|
+
class: vue.normalizeClass(["z-index-1 t-center", [
|
39
|
+
index !== selectedTab.value ? "bg-white" : "bg-main",
|
40
|
+
__props.tabClass ? __props.tabClass : "pd-small pd-r-medium pd-l-medium w-max pd-small radius-small"
|
41
|
+
]])
|
42
|
+
}, [
|
43
|
+
vue.createElementVNode("label", _hoisted_3, vue.toDisplayString(tab.name), 1)
|
44
|
+
], 10, _hoisted_2);
|
45
|
+
}), 128))
|
46
|
+
]);
|
47
|
+
};
|
48
|
+
}
|
49
|
+
};
|
50
|
+
exports.default = _sfc_main;
|
51
|
+
//# sourceMappingURL=Tab.vue.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Tab.vue.cjs","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex-v-center gap-micro pd-micro flex pos-relative\">\n\n\t\t<div \n\t\t\tv-for=\"(tab,index) in tabs\" \n\t\t\t:key=\"index\" \n\t\t\t@click=\"selectTab(index,tab)\" \n\t\t\tclass=\"z-index-1 t-center\"\n\t\t\t:class=\"[\n\t\t\t index !== selectedTab ? 'bg-white' : 'bg-main',\n\t\t\t tabClass ? tabClass : 'pd-small pd-r-medium pd-l-medium w-max pd-small radius-small'\n\t\t\t]\"\n\t\t>\n\t\t\t<label class=\"\">{{tab.name}}</label>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { ref, computed } from 'vue'\n\n\tconst emit = defineEmits(['update:selected']);\n\n\tconst props = defineProps({\n\t\ttabs: Array,\n\t\ttabClass: String,\n\t\tselected: String,\n\t\tcallback: Function\n\t})\n\n\tconst selectedTab = ref(0)\n\n\tif (props.selected) {\n\t\tconst selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n\t\tif (selectedIndex !== -1) {\n\t\t\tselectedTab.value = selectedIndex\n\t\t}\n\t}\n\t\n\tfunction selectTab(index,tab) {\n\t selectedTab.value = index;\n\t emit('update:selected', tab.value);\n\t if (props.callback) props.callback()\n\t}\n</script>\n\n<style lang=\"scss\">\n\t.tab-selector {\n\t\tposition: absolute;\n\t\twidth: 50%;\n\t\theight: 100%;\n\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\tz-index: 0;\n\n\t\ttransition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t}\n</style>\n\n\n"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;AAsBC,UAAM,OAAO;AAEb,UAAM,QAAQ;AAOd,UAAM,cAAcA,IAAG,IAAC,CAAC;AAEzB,QAAI,MAAM,UAAU;AACnB,YAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,UAAI,kBAAkB,IAAI;AACzB,oBAAY,QAAQ;AAAA,MACpB;AAAA,IACD;AAED,aAAS,UAAU,OAAM,KAAK;AAC5B,kBAAY,QAAQ;AACpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,UAAI,MAAM,SAAU,OAAM,SAAU;AAAA,IACrC;;;;;;;;;;;;;;;;;;;;"}
|
@@ -1,36 +1,51 @@
|
|
1
|
-
import { ref
|
1
|
+
import { ref, openBlock, createElementBlock, Fragment, renderList, normalizeClass, createElementVNode, toDisplayString } from "vue";
|
2
2
|
/* empty css */
|
3
|
-
const
|
3
|
+
const _hoisted_1 = { class: "flex-nowrap flex-v-center gap-micro pd-micro flex pos-relative" };
|
4
|
+
const _hoisted_2 = ["onClick"];
|
5
|
+
const _hoisted_3 = { class: "" };
|
6
|
+
const _sfc_main = {
|
4
7
|
__name: "Tab",
|
5
8
|
props: {
|
6
9
|
tabs: Array,
|
10
|
+
tabClass: String,
|
7
11
|
selected: String,
|
8
12
|
callback: Function
|
9
13
|
},
|
10
14
|
emits: ["update:selected"],
|
11
|
-
setup(
|
12
|
-
const
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
setup(__props, { emit: __emit }) {
|
16
|
+
const emit = __emit;
|
17
|
+
const props = __props;
|
18
|
+
const selectedTab = ref(0);
|
19
|
+
if (props.selected) {
|
20
|
+
const selectedIndex = props.tabs.findIndex((tab) => tab.value === props.selected);
|
21
|
+
if (selectedIndex !== -1) {
|
22
|
+
selectedTab.value = selectedIndex;
|
23
|
+
}
|
16
24
|
}
|
17
|
-
function
|
18
|
-
|
25
|
+
function selectTab(index, tab) {
|
26
|
+
selectedTab.value = index;
|
27
|
+
emit("update:selected", tab.value);
|
28
|
+
if (props.callback) props.callback();
|
19
29
|
}
|
20
|
-
return (
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
return (_ctx, _cache) => {
|
31
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
32
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
|
33
|
+
return openBlock(), createElementBlock("div", {
|
34
|
+
key: index,
|
35
|
+
onClick: ($event) => selectTab(index, tab),
|
36
|
+
class: normalizeClass(["z-index-1 t-center", [
|
37
|
+
index !== selectedTab.value ? "bg-white" : "bg-main",
|
38
|
+
__props.tabClass ? __props.tabClass : "pd-small pd-r-medium pd-l-medium w-max pd-small radius-small"
|
39
|
+
]])
|
40
|
+
}, [
|
41
|
+
createElementVNode("label", _hoisted_3, toDisplayString(tab.name), 1)
|
42
|
+
], 10, _hoisted_2);
|
43
|
+
}), 128))
|
44
|
+
]);
|
45
|
+
};
|
32
46
|
}
|
33
47
|
};
|
34
48
|
export {
|
35
|
-
|
49
|
+
_sfc_main as default
|
36
50
|
};
|
51
|
+
//# sourceMappingURL=Tab.vue.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Tab.vue.js","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex-v-center gap-micro pd-micro flex pos-relative\">\n\n\t\t<div \n\t\t\tv-for=\"(tab,index) in tabs\" \n\t\t\t:key=\"index\" \n\t\t\t@click=\"selectTab(index,tab)\" \n\t\t\tclass=\"z-index-1 t-center\"\n\t\t\t:class=\"[\n\t\t\t index !== selectedTab ? 'bg-white' : 'bg-main',\n\t\t\t tabClass ? tabClass : 'pd-small pd-r-medium pd-l-medium w-max pd-small radius-small'\n\t\t\t]\"\n\t\t>\n\t\t\t<label class=\"\">{{tab.name}}</label>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\timport { ref, computed } from 'vue'\n\n\tconst emit = defineEmits(['update:selected']);\n\n\tconst props = defineProps({\n\t\ttabs: Array,\n\t\ttabClass: String,\n\t\tselected: String,\n\t\tcallback: Function\n\t})\n\n\tconst selectedTab = ref(0)\n\n\tif (props.selected) {\n\t\tconst selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n\t\tif (selectedIndex !== -1) {\n\t\t\tselectedTab.value = selectedIndex\n\t\t}\n\t}\n\t\n\tfunction selectTab(index,tab) {\n\t selectedTab.value = index;\n\t emit('update:selected', tab.value);\n\t if (props.callback) props.callback()\n\t}\n</script>\n\n<style lang=\"scss\">\n\t.tab-selector {\n\t\tposition: absolute;\n\t\twidth: 50%;\n\t\theight: 100%;\n\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\tz-index: 0;\n\n\t\ttransition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsBC,UAAM,OAAO;AAEb,UAAM,QAAQ;AAOd,UAAM,cAAc,IAAI,CAAC;AAEzB,QAAI,MAAM,UAAU;AACnB,YAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,UAAI,kBAAkB,IAAI;AACzB,oBAAY,QAAQ;AAAA,MACpB;AAAA,IACD;AAED,aAAS,UAAU,OAAM,KAAK;AAC5B,kBAAY,QAAQ;AACpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,UAAI,MAAM,SAAU,OAAM,SAAU;AAAA,IACrC;;;;;;;;;;;;;;;;;;;"}
|
@@ -1,10 +1,10 @@
|
|
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
|
5
|
-
;/* empty css
|
6
|
-
;/* empty css */
|
4
|
+
;/* empty css */
|
5
|
+
;/* empty css */
|
7
6
|
;/* empty css */
|
7
|
+
;/* empty css */
|
8
8
|
require("vue-i18n");
|
9
9
|
;/* empty css */
|
10
10
|
const vueRouter = require("vue-router");
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { ref, resolveComponent, openBlock, createElementBlock, createVNode, withCtx, Transition, createBlock, resolveDynamicComponent, createElementVNode } from "vue";
|
2
|
-
/* empty css
|
3
|
-
/* empty css
|
4
|
-
/* empty css */
|
2
|
+
/* empty css */
|
3
|
+
/* empty css */
|
5
4
|
/* empty css */
|
5
|
+
/* empty css */
|
6
6
|
import "vue-i18n";
|
7
7
|
/* empty css */
|
8
8
|
import { useRoute, useRouter } from "vue-router";
|
@@ -1,7 +1,7 @@
|
|
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 vueRouter = require("vue-router");
|
6
6
|
const vueI18n = require("vue-i18n");
|
7
7
|
const auth = require("../../store/auth.cjs");
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { reactive, watch, ref, openBlock, createElementBlock, createElementVNode, toDisplayString, unref, withDirectives, vModelText } from "vue";
|
2
|
-
/* empty css
|
2
|
+
/* empty css */
|
3
3
|
import { useRoute, useRouter } from "vue-router";
|
4
4
|
import { useI18n } from "vue-i18n";
|
5
5
|
import { state as state$1 } from "../../store/auth.js";
|
package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.cjs
CHANGED
@@ -1,9 +1,9 @@
|
|
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
|
5
|
-
const Field = require("../../../../../components/Field/Field.
|
6
|
-
const Button = require("../../../../../components/Button/Button.
|
4
|
+
;/* empty css */
|
5
|
+
const Field = require("../../../../../components/Field/Field.vue.cjs");
|
6
|
+
const Button = require("../../../../../components/Button/Button.vue.cjs");
|
7
7
|
const vueRouter = require("vue-router");
|
8
8
|
const vueI18n = require("vue-i18n");
|
9
9
|
const auth = require("../../store/auth.cjs");
|
package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { ref, openBlock, createElementBlock, createElementVNode, toDisplayString, unref, createVNode, createTextVNode, createCommentVNode, withCtx } from "vue";
|
2
|
-
/* empty css
|
3
|
-
import Field from "../../../../../components/Field/Field.
|
4
|
-
import _sfc_main$1 from "../../../../../components/Button/Button.
|
2
|
+
/* empty css */
|
3
|
+
import Field from "../../../../../components/Field/Field.vue.js";
|
4
|
+
import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
|
5
5
|
import { useRoute, useRouter } from "vue-router";
|
6
6
|
import { useI18n } from "vue-i18n";
|
7
7
|
import { state, actions } from "../../store/auth.js";
|
@@ -1,9 +1,9 @@
|
|
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
|
5
|
-
const Field = require("../../../../../components/Field/Field.
|
6
|
-
const Button = require("../../../../../components/Button/Button.
|
4
|
+
;/* empty css */
|
5
|
+
const Field = require("../../../../../components/Field/Field.vue.cjs");
|
6
|
+
const Button = require("../../../../../components/Button/Button.vue.cjs");
|
7
7
|
const vueRouter = require("vue-router");
|
8
8
|
const auth = require("../../store/auth.cjs");
|
9
9
|
const invites = require("../../../../organizations/store/invites.cjs");
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { ref, onMounted, openBlock, createElementBlock, createElementVNode, createVNode, withCtx } from "vue";
|
2
|
-
/* empty css
|
3
|
-
import Field from "../../../../../components/Field/Field.
|
4
|
-
import _sfc_main$1 from "../../../../../components/Button/Button.
|
2
|
+
/* empty css */
|
3
|
+
import Field from "../../../../../components/Field/Field.vue.js";
|
4
|
+
import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
|
5
5
|
import { useRoute, useRouter } from "vue-router";
|
6
6
|
import { state, actions as actions$1 } from "../../store/auth.js";
|
7
7
|
import { actions } from "../../../../organizations/store/invites.js";
|