eco-vue-js 0.26.3 → 0.26.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,6 +20,7 @@ declare const __VLS_export: <Model extends number | string, Data extends Default
20
20
  onRefetch?: (() => any) | undefined;
21
21
  "onUpdate:count"?: ((value: number) => any) | undefined;
22
22
  "onUpdate:pages-count"?: ((value: number) => any) | undefined;
23
+ "onUpdate:page-size"?: ((value: number) => any) | undefined;
23
24
  "onUpdate:next-page"?: ((value: number | null) => any) | undefined;
24
25
  "onUpdate:previous-page"?: ((value: number | null) => any) | undefined;
25
26
  "onRemove:page"?: ((value: number) => any) | undefined;
@@ -62,6 +63,7 @@ declare const __VLS_export: <Model extends number | string, Data extends Default
62
63
  emit: {
63
64
  (e: "update:count", value: number): void;
64
65
  (e: "update:pages-count", value: number): void;
66
+ (e: "update:page-size", value: number): void;
65
67
  (e: "update:next-page", value: number | null): void;
66
68
  (e: "update:previous-page", value: number | null): void;
67
69
  (e: "remove:page", value: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"InfiniteListPage.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/InfiniteList/components/InfiniteListPage.vue"],"names":[],"mappings":"AAiEA;AA8VA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EAAC,KAAK,GAAG,EAA4G,MAAM,KAAK,CAAA;AAIvI,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAA;AAKpC,QAAA,MAAM,YAAY,GAAK,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,SAAS,WAAW,EAAE,WAAW,EAC1F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAoaO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;qBAlavC,WAAW;oBACZ,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;wBACjD,MAAM;mBACX,OAAO;kBACR,OAAO;qBACJ,OAAO;oBACR,OAAO;oBACP,MAAM;oBACN,MAAM;0BACA,MAAM,GAAG,KAAK;uBACjB,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;kBACjD,OAAO;qBAEJ,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK;;;;;;;;;;;;;;KAqZqD,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,OAAO,KAAK,EAAE,gBAAgB;0BA/K/B,WAAW,GAAG,IAAI;;;;2BArEV,MAAM,aAAY,cAAc;;;MAoPa,KAAK,IAAI;WACxE,GAAG;;kBArKC,CAAC,KAAK,EAAE;YAChB,IAAI,EAAE,IAAI,CAAA;YACV,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;YAC5C,QAAQ,EAAE,OAAO,CAAA;YACjB,OAAO,EAAE,MAAM,IAAI,CAAA;YACnB,QAAQ,CAAC,EAAE,IAAI,CAAA;YACf,IAAI,CAAC,EAAE,IAAI,CAAA;YACX,KAAK,EAAE,OAAO,CAAA;YACd,IAAI,EAAE,OAAO,CAAA;YACb,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;YAC3B,YAAY,EAAE,OAAO,CAAA;SACtB,KAAK,IAAI;gBACF,MAAM,IAAI;;;YA/Od,cAAc,SAAS,MAAM,GAAG,IAAI;YACpC,oBAAoB,SAAS,MAAM,GAAG,IAAI;YAC1C,kBAAkB,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI;YAC/C,sBAAsB,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI;YACnD,aAAa,SAAS,MAAM,GAAG,IAAI;YACnC,SAAS,GAAG,IAAI;YAChB,iBAAiB,UAAU,KAAK,EAAE,GAAG,IAAI;YACzC,SAAS,GAAG,IAAI;YAChB,cAAc,SAAS,QAAQ,GAAG,IAAI;;EAkYxC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAI,CAAC;wBACpE,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"InfiniteListPage.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/InfiniteList/components/InfiniteListPage.vue"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ var InfiniteListPage_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
35
35
  emits: [
36
36
  "update:count",
37
37
  "update:pages-count",
38
+ "update:page-size",
38
39
  "update:next-page",
39
40
  "update:previous-page",
40
41
  "remove:page",
@@ -162,6 +163,7 @@ var InfiniteListPage_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
162
163
  if (props.firstPage && value?.previous !== void 0) emit("update:previous-page", value.previous);
163
164
  if (props.lastPage && value?.next !== void 0) emit("update:next-page", value.next);
164
165
  if (value?.pages_count !== void 0) emit("update:pages-count", value.pages_count);
166
+ if (value?.next && value.results.length !== 0) emit("update:page-size", value.results.length);
165
167
  if (value?.count !== void 0) emit("update:count", value.count);
166
168
  }, { immediate: true });
167
169
  const errorStatusList = [404, 400];
@@ -1 +1 @@
1
- {"version":3,"file":"InfiniteListPages.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/InfiniteList/components/InfiniteListPages.vue"],"names":[],"mappings":"AAsEA;AAonBA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAA;AAYhE,QAAA,MAAM,YAAY,GAAK,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,SAAS,WAAW,EAAE,WAAW,EAC1F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAswBO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;oBApwBxC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;qBACpD,WAAW;yBACP,MAAM;qBACV,OAAO;qBACP,MAAM;uBACJ,MAAM;oBACT,OAAO;wBACH,OAAO;wBACP,CAAC,MAAM,WAAW,CAAC,EAAE;oBACzB,MAAM;oBACN,MAAM;mBACP,MAAM;0BACC,MAAM,GAAG,KAAK;uBACjB,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;qBAE9C,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK;;;;;;;;KAqvBqD,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,OAAO,KAAK,EAAE,gBAAgB;;0CAldP,MAAM;;;;MAkduB,KAAK,IAAI;WACxE,GAAG;;kBA1PC,CAAC,KAAK,EAAE;YAChB,IAAI,EAAE,IAAI,CAAA;YACV,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;YAC5C,QAAQ,EAAE,OAAO,CAAA;YACjB,OAAO,EAAE,MAAM,IAAI,CAAA;YACnB,QAAQ,CAAC,EAAE,IAAI,CAAA;YACf,IAAI,CAAC,EAAE,IAAI,CAAA;YACX,KAAK,EAAE,OAAO,CAAA;YACd,IAAI,EAAE,OAAO,CAAA;YACb,SAAS,EAAE,OAAO,CAAA;YAClB,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,KAAK,CAAA;YACZ,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;YAC3B,YAAY,EAAE,OAAO,CAAA;SACtB,KAAK,IAAI;gBACF,MAAM,IAAI;;;YA3fd,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI;YAC/C,cAAc,SAAS,MAAM,GAAG,IAAI;YACpC,cAAc,SAAS,QAAQ,GAAG,IAAI;;EAuuBxC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAI,CAAC;wBACpE,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"InfiniteListPages.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/InfiniteList/components/InfiniteListPages.vue"],"names":[],"mappings":"AAuEA;AAipBA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAA;AAYhE,QAAA,MAAM,YAAY,GAAK,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,SAAS,WAAW,EAAE,WAAW,EAC1F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WA6yBO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;oBA3yBxC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;qBACpD,WAAW;yBACP,MAAM;qBACV,OAAO;qBACP,MAAM;uBACJ,MAAM;oBACT,OAAO;wBACH,OAAO;wBACP,CAAC,MAAM,WAAW,CAAC,EAAE;oBACzB,MAAM;oBACN,MAAM;mBACP,MAAM;0BACC,MAAM,GAAG,KAAK;uBACjB,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;qBAE9C,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK;;;;;;;;KA4xBqD,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,OAAO,KAAK,EAAE,gBAAgB;;0CAheP,MAAM;;;;MAgeuB,KAAK,IAAI;WACxE,GAAG;;kBArQC,CAAC,KAAK,EAAE;YAChB,IAAI,EAAE,IAAI,CAAA;YACV,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;YAC5C,QAAQ,EAAE,OAAO,CAAA;YACjB,OAAO,EAAE,MAAM,IAAI,CAAA;YACnB,QAAQ,CAAC,EAAE,IAAI,CAAA;YACf,IAAI,CAAC,EAAE,IAAI,CAAA;YACX,KAAK,EAAE,OAAO,CAAA;YACd,IAAI,EAAE,OAAO,CAAA;YACb,SAAS,EAAE,OAAO,CAAA;YAClB,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,KAAK,CAAA;YACZ,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;YAC3B,YAAY,EAAE,OAAO,CAAA;SACtB,KAAK,IAAI;gBACF,MAAM,IAAI;;;YAvhBd,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,IAAI;YAC/C,cAAc,SAAS,MAAM,GAAG,IAAI;YACpC,cAAc,SAAS,QAAQ,GAAG,IAAI;;EA8wBxC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAI,CAAC;wBACpE,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
@@ -45,6 +45,8 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
45
45
  const slotIds = ref([slotIdCounter]);
46
46
  const pagesCount = ref(1);
47
47
  const count = ref(0);
48
+ /** Items on a full page as the API returns them, which can differ from the `size` the list asks for. */
49
+ const pageSize = ref(props.pageLength);
48
50
  const nextPage = computed(() => {
49
51
  if (pagesCount.value === 0) return null;
50
52
  const max = Math.max(...pages.value, 0);
@@ -58,10 +60,16 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
58
60
  const isResettingPage = ref(false);
59
61
  const disabledSlots = reactive(/* @__PURE__ */ new Set());
60
62
  let activationGen = 0;
63
+ /** Items on the page by the total count, a full page while the count is not known. */
64
+ const getPageItemCount = (page) => {
65
+ const remaining = count.value - (page - 1) * pageSize.value;
66
+ return remaining > 0 ? Math.min(remaining, pageSize.value) : pageSize.value;
67
+ };
61
68
  const getSkeletonLength = (pagesBefore) => {
62
- if (props.skeletonLength === void 0) return props.pageLength;
63
- const length = Math.min(props.skeletonLength - pagesBefore * props.pageLength, props.pageLength);
64
- return length < 0 ? props.pageLength : length;
69
+ const itemCount = getPageItemCount(pagesBefore + 1);
70
+ if (props.skeletonLength === void 0) return itemCount;
71
+ const length = Math.min(props.skeletonLength - pagesBefore * pageSize.value, itemCount);
72
+ return length < 0 ? itemCount : length;
65
73
  };
66
74
  const pageComponentRef = useTemplateRef("pageComponent");
67
75
  const topSentinelRef = useTemplateRef("topSentinel");
@@ -73,9 +81,12 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
73
81
  const updatePagesCount = (value) => {
74
82
  pagesCount.value = Math.max(value, 1);
75
83
  };
84
+ /** The end a page was last added at, whose sentinel is observed anew once the pages have rendered. */
85
+ let grownTowards = null;
76
86
  const addNextPage = (silent) => {
77
87
  if (!nextPage.value) return;
78
88
  if (pages.value.includes(nextPage.value)) return;
89
+ grownTowards = "bottom";
79
90
  if (pages.value.length >= props.maxPages) {
80
91
  const recycledSlotId = slotIds.value.shift();
81
92
  pages.value.shift();
@@ -90,6 +101,7 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
90
101
  const addPreviousPage = (silent) => {
91
102
  if (!previousPage.value) return;
92
103
  if (pages.value.includes(previousPage.value)) return;
104
+ grownTowards = "top";
93
105
  if (pages.value.length >= props.maxPages) {
94
106
  const recycledSlotId = slotIds.value.pop();
95
107
  pages.value.pop();
@@ -104,25 +116,30 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
104
116
  let resizeObserver = null;
105
117
  const pageHeights = reactive(/* @__PURE__ */ new Map());
106
118
  const observedElements = /* @__PURE__ */ new Map();
107
- const avgPageHeight = computed(() => {
119
+ const avgItemHeight = computed(() => {
108
120
  let sum = 0;
109
- let count = 0;
110
- for (const h of pageHeights.values()) {
111
- if (h <= 0) continue;
121
+ let itemCount = 0;
122
+ for (let i = 0; i < slotIds.value.length; i++) {
123
+ const h = pageHeights.get(slotIds.value[i]);
124
+ const page = pages.value[i];
125
+ if (!h || h <= 0 || page === void 0) continue;
112
126
  sum += h;
113
- count++;
127
+ itemCount += getPageItemCount(page);
114
128
  }
115
- return count === 0 ? 0 : Math.round(sum / count);
129
+ return itemCount === 0 ? 0 : sum / itemCount;
116
130
  });
131
+ const avgPageHeight = computed(() => Math.round(avgItemHeight.value * pageSize.value));
117
132
  const topSpacerHeight = computed(() => {
118
133
  if (!avgPageHeight.value) return 0;
119
134
  const firstRendered = pages.value[0] ?? 1;
120
135
  return Math.max(0, (firstRendered - 1) * avgPageHeight.value);
121
136
  });
122
137
  const bottomSpacerHeight = computed(() => {
123
- if (!avgPageHeight.value) return 0;
138
+ if (!avgItemHeight.value) return 0;
124
139
  const lastRendered = pages.value[pages.value.length - 1] ?? 1;
125
- return Math.max(0, (pagesCount.value - lastRendered) * avgPageHeight.value);
140
+ let itemCount = 0;
141
+ for (let page = lastRendered + 1; page <= pagesCount.value; page++) itemCount += getPageItemCount(page);
142
+ return Math.round(itemCount * avgItemHeight.value);
126
143
  });
127
144
  const getScrollElementTop = (element) => {
128
145
  if (element === document.scrollingElement || element === document.body || element === document.documentElement) return 0;
@@ -210,19 +227,16 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
210
227
  watch(nextPage, (value, oldValue) => {
211
228
  if (oldValue === null && value !== null && bottomSentinelIntersecting.value) addNextPage();
212
229
  });
213
- const isInViewport = (element) => {
214
- if (element.getClientRects().length === 0) return false;
215
- const rect = element.getBoundingClientRect();
216
- const viewport = scrollingElement?.value?.getBoundingClientRect() ?? {
217
- top: 0,
218
- bottom: window.innerHeight
219
- };
220
- return rect.bottom >= viewport.top - SENTINEL_MARGIN && rect.top <= viewport.bottom + SENTINEL_MARGIN;
230
+ const reobserve = (element) => {
231
+ if (!intersectionObserver || !element) return;
232
+ intersectionObserver.unobserve(element);
233
+ intersectionObserver.observe(element);
221
234
  };
222
235
  watch(pages, () => {
223
- if (!intersectionObserver || pages.value.length >= props.maxPages) return;
224
- if (bottomSentinelRef.value && isInViewport(bottomSentinelRef.value)) addNextPage();
225
- else if (topSentinelRef.value && isInViewport(topSentinelRef.value)) addPreviousPage();
236
+ const towards = grownTowards;
237
+ grownTowards = null;
238
+ if (pages.value.length < props.maxPages || towards === "bottom") reobserve(bottomSentinelRef.value);
239
+ if (pages.value.length < props.maxPages || towards === "top") reobserve(topSentinelRef.value);
226
240
  }, {
227
241
  deep: true,
228
242
  flush: "post"
@@ -265,6 +279,7 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
265
279
  const index = pages.value.indexOf(page);
266
280
  const recycledSlotId = index !== -1 ? slotIds.value[index] : void 0;
267
281
  pagesCount.value = 1;
282
+ count.value = 0;
268
283
  pages.value = [page];
269
284
  slotIds.value = [recycledSlotId ?? ++slotIdCounter];
270
285
  };
@@ -336,7 +351,7 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
336
351
  scrollEl,
337
352
  isDocumentScroll,
338
353
  scrollTop,
339
- containerTop: isDocumentScroll ? containerEl.getBoundingClientRect().top + scrollTop : containerEl.offsetTop
354
+ containerTop: containerEl.getBoundingClientRect().top - getScrollElementTop(scrollEl) + scrollTop
340
355
  };
341
356
  };
342
357
  /** Scrolls to `y` px from the top of the list. */
@@ -441,10 +456,11 @@ var InfiniteListPages_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
441
456
  _ctx.$emit("update:count", $event);
442
457
  }),
443
458
  "onUpdate:pagesCount": updatePagesCount,
459
+ "onUpdate:pageSize": _cache[1] || (_cache[1] = ($event) => pageSize.value = $event),
444
460
  "onRemove:page": removePage,
445
461
  onRefetch: ($event) => unref(refetchNextPages)(page),
446
- onFetched: _cache[1] || (_cache[1] = ($event) => isResettingPage.value = false),
447
- "onUpdate:error": _cache[2] || (_cache[2] = ($event) => _ctx.$emit("update:error", $event))
462
+ onFetched: _cache[2] || (_cache[2] = ($event) => isResettingPage.value = false),
463
+ "onUpdate:error": _cache[3] || (_cache[3] = ($event) => _ctx.$emit("update:error", $event))
448
464
  }, createSlots({
449
465
  default: withCtx(({ item, setter, skeleton, refetch, previous, next, first, last, page: itemPage, index: itemIndex, results, intersecting }) => [renderSlot(_ctx.$slots, "default", {
450
466
  item,
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayLayerProvider.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/components/OverlayLayerProvider.vue"],"names":[],"mappings":"AAGA;AA2CA,KAAK,WAAW,GAAG;IACjB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,gIAAgI;IAChI,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,6GAA6G;IAC7G,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAC;AAgCF,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAC/C,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"OverlayLayerProvider.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modal/components/OverlayLayerProvider.vue"],"names":[],"mappings":"AAGA;AA4CA,KAAK,WAAW,GAAG;IACjB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,gIAAgI;IAChI,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,6GAA6G;IAC7G,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAC;AAiCF,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAC/C,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -14,7 +14,7 @@ var OverlayLayerProvider_vue_vue_type_script_setup_true_lang_default = /*@__PURE
14
14
  const props = __props;
15
15
  const instance = getCurrentInstance();
16
16
  if (props.provides) setInstanceProvides(instance, Object.create(props.provides));
17
- provide(wBaseZIndex, BASE_ZINDEX_MODAL);
17
+ provide(wBaseZIndex, Math.max(BASE_ZINDEX_MODAL, props.provides?.[wBaseZIndex] ?? 0));
18
18
  provide(wOverlayLayer, () => props.layer);
19
19
  provide(wOverlayFrame, "modal");
20
20
  provide(wOverlayRegions, null);
@@ -100,7 +100,7 @@ var WNavItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
100
100
  }),
101
101
  !__props.skeleton ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(typeof __props.count === "number" ? `\u00A0(${unref(numberCompactFormatter).format(__props.count)})` : ""), 1)) : (openBlock(), createBlock(WSkeleton_default, {
102
102
  key: 1,
103
- class: "ml-1 inline-flex max-w-10 shrink-0"
103
+ class: "w-skeleton-w-10 ml-1 inline-flex shrink-0"
104
104
  })),
105
105
  !__props.skeleton && __props.counter !== void 0 && __props.counter !== 0 ? (openBlock(), createBlock(WCounter_default, {
106
106
  key: 2,
@@ -1 +1 @@
1
- {"version":3,"file":"WTabs.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/WTabs.vue"],"names":[],"mappings":"AA8KA;AAykBA,OAAO,KAAK,EAAgB,SAAS,EAAC,MAAM,SAAS,CAAA;AAErD,OAAO,EAA0D,KAAK,KAAK,EAAqH,MAAM,KAAK,CAAA;AAmD3M,KAAK,WAAW,GAAG;IACjB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,KAAK,EAAE,CAAA;CACvB,CAAC;AA4xBF,QAAA,MAAM,UAAU;2BA1qBc,MAAM;yBAIR,MAAM;gCAkFG,OAAO,CAAC,IAAI,CAAC;oBAM7B,IAAI;iBAIL,MAAM,UAAU,OAAO;;;;;;;;;;;;;;;;;;;;;kFA8kBzC,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"WTabs.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/WTabs.vue"],"names":[],"mappings":"AA+KA;AA0kBA,OAAO,KAAK,EAAgB,SAAS,EAAC,MAAM,SAAS,CAAA;AAErD,OAAO,EAA0D,KAAK,KAAK,EAAqH,MAAM,KAAK,CAAA;AAmD3M,KAAK,WAAW,GAAG;IACjB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,KAAK,EAAE,CAAA;CACvB,CAAC;AA+xBF,QAAA,MAAM,UAAU;2BA7qBc,MAAM;yBAIR,MAAM;gCAkFG,OAAO,CAAC,IAAI,CAAC;oBAM7B,IAAI;iBAIL,MAAM,UAAU,OAAO;;;;;;;;;;;;;;;;;;;;;kFAilBzC,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -350,7 +350,7 @@ var WTabs_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
350
350
  "sm-not:snap-start grid grid-cols-[1fr_auto]": __props.side,
351
351
  "no-scrollbar mb-4 flex overflow-x-auto overscroll-x-contain": !__props.side,
352
352
  "w-frame-bleed px-(--w-frame-padding)": !__props.side && unref(frame) !== null,
353
- "sm-not:pl---inner-margin": !__props.side && unref(frame) === null,
353
+ "sm-not:w-frame-bleed sm-not:pl-[var(--w-frame-padding,var(--inner-margin))] sm-not:pr-[var(--w-frame-padding,0px)]": !__props.side && unref(frame) === null,
354
354
  "flex-wrap": !__props.side && __props.wrap,
355
355
  "shadow-[inset_0_-1px_var(--color-line-subtle)]": !__props.side && __props.divider,
356
356
  [__props.headerClass ?? ""]: true
package/docs/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # eco-vue-js
2
2
 
3
- > Vue 3 UI kit with Tailwind v4 — components, utilities, icons and recipes. These are the docs of version 0.26.3, the one installed next to them. Start with Getting started and Conventions; each component page lists its props, events and slots with examples.
3
+ > Vue 3 UI kit with Tailwind v4 — components, utilities, icons and recipes. These are the docs of version 0.26.4, the one installed next to them. Start with Getting started and Conventions; each component page lists its props, events and slots with examples.
4
4
 
5
5
  Release notes, for what changed between versions: https://github.com/rsmple/eco-vue-js/releases. The docs site, with live demos: https://rsmple.github.io/eco-vue-js/
6
6
 
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "git",
5
5
  "url": "https://github.com/rsmple/eco-vue-js.git"
6
6
  },
7
- "version": "0.26.3",
7
+ "version": "0.26.4",
8
8
  "homepage": "https://rsmple.github.io/eco-vue-js/",
9
9
  "dependencies": {
10
10
  "@stylistic/eslint-plugin": "5.10.0",