Skip to content

Commit ea4d277

Browse files
committed
fix: restore external pagination table head
1 parent fbf177e commit ea4d277

File tree

4 files changed

+32
-24
lines changed

4 files changed

+32
-24
lines changed

packages/components-vue/src/components/loader/ContentFetch.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
const props = defineProps<iLoaderContentFetchProps<T, P>>();
100100
const emit = defineEmits(["refresh", "has-content", "hydrate"]);
101101
102-
const { logger, isBrowser } = useHelpers(useUtils);
102+
const { logger } = useHelpers(useUtils);
103103
const { useFetch } = useFetchUtils();
104104
const { internals } = inject<iVuePluginOptions>("xamu") || {};
105105
const useAsyncData: typeof useAsyncDataFn = internals?.useAsyncData ?? useAsyncDataFn;
@@ -237,7 +237,7 @@
237237
(newContent) => {
238238
const isContent = patchedIsContent(newContent);
239239
240-
if (isBrowser) emit("has-content", isContent, newContent, hydrate);
240+
emit("has-content", isContent, newContent, hydrate);
241241
},
242242
{ immediate: true }
243243
);

packages/components-vue/src/components/pagination/ContentTable.vue

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,22 @@
88
createNodeAndRefresh,
99
}"
1010
></slot>
11+
<!-- Temporary head actions -->
12+
<div
13+
v-if="!emittedHasContent && $slots.headActions"
14+
key="external-head-actions"
15+
class="flx --flxRow --flx-start-center --gap-10 --gap:md"
16+
>
17+
<slot
18+
name="headActions"
19+
v-bind="{
20+
refreshData,
21+
hasContent: emittedHasContent,
22+
hydrateData: emittedHydrateNodes,
23+
createNodeAndRefresh,
24+
}"
25+
></slot>
26+
</div>
1127
<PaginationContent
1228
v-slot="{ content }"
1329
v-bind="{
@@ -25,21 +41,6 @@
2541
@refresh="emittedRefresh = $event"
2642
@has-content="hasContent"
2743
>
28-
<!-- Temporary head actions -->
29-
<div
30-
v-if="!emittedHasContent && $slots.headActions"
31-
class="flx --flxRow --flx-start-center --gap-10 --gap:md"
32-
>
33-
<slot
34-
name="headActions"
35-
v-bind="{
36-
refreshData,
37-
hasContent: emittedHasContent,
38-
hydrateData: emittedHydrateNodes,
39-
createNodeAndRefresh,
40-
}"
41-
></slot>
42-
</div>
4344
<!-- Tabulated data -->
4445
<div class="flx --flxColumn --flx-start-stretch">
4546
<Table
@@ -60,7 +61,10 @@
6061
}"
6162
>
6263
<template v-if="emittedHasContent && $slots.headActions" #headActions>
63-
<div class="flx --flxRow --flx-start-center --gap-10 --gap:md">
64+
<div
65+
key="internal-head-actions"
66+
class="flx --flxRow --flx-start-center --gap-10 --gap:md"
67+
>
6468
<slot
6569
name="headActions"
6670
v-bind="{
@@ -168,7 +172,7 @@
168172
const Swal = useHelpers(useSwal);
169173
170174
const emittedRefresh = ref<() => void>();
171-
const emittedHasContent = ref<boolean>(true);
175+
const emittedHasContent = ref<boolean>();
172176
const emittedContent = ref<T[] | null>();
173177
const emittedHydrateNodes = ref<(newContent: T[] | null, newErrors?: unknown) => void>();
174178
@@ -225,8 +229,8 @@
225229
createdNodes = [created, ...(emittedContent.value || [])];
226230
}
227231
228-
// Prefer hydration over refreshing
229-
if (emittedHydrateNodes.value && createdNodes) {
232+
// If has content, prefer hydration over refreshing
233+
if (emittedHasContent.value && emittedHydrateNodes.value && createdNodes) {
230234
emittedHydrateNodes.value(createdNodes);
231235
} else if (!props.omitRefresh) refreshData();
232236

packages/components-vue/src/components/table/Body.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,8 +374,12 @@
374374
title: t("swal.table_created"),
375375
text: t("swal.table_created_text"),
376376
willOpen() {
377-
// Prefer hydration over refreshing
378-
if (props.hydrateNodes && typeof updatedParent === "object") {
377+
// If has children, prefer hydration over refreshing
378+
if (
379+
props.childrenCount(node) &&
380+
props.hydrateNodes &&
381+
typeof updatedParent === "object"
382+
) {
379383
hydrateNode({ ...node, ...updatedParent });
380384
} else if (!props.omitRefresh) props.refresh?.();
381385

packages/components-vue/src/components/table/Simple.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@
470470
Swal.fireLoader();
471471
472472
let updatedNodes: T[] = [...props.nodes];
473-
// run process
473+
// run process in parallel
474474
const deleted: iNodeFnResponse<T>[] = await Promise.all(
475475
nodes.map(async (node) => {
476476
const response = await useResolveNodeFn(props.deleteNode?.(node));

0 commit comments

Comments
 (0)