Skip to content

Commit dedc595

Browse files
committed
Error message if modal content doesn't exist or is empty
1 parent 14763c0 commit dedc595

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

src/main.js

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import
1414
NIcon,
1515
NScrollbar,
1616
NTooltip,
17-
NSkeleton
17+
NSkeleton,
18+
NEmpty
1819
} from "naive-ui";
1920
import { useStore } from "vuex";
2021
import { computedVar } from "./utils";
@@ -47,7 +48,8 @@ export default class MCT {
4748
ModalWithTabs,
4849
NScrollbar,
4950
NTooltip,
50-
NSkeleton
51+
NSkeleton,
52+
NEmpty
5153
},
5254
setup() {
5355
const store = useStore();
@@ -68,16 +70,23 @@ export default class MCT {
6870
})
6971
);
7072
const genericModalTitle = ref(null);
73+
const genericModalLoading = ref(true);
7174

7275
// external callbacks
7376
self.genericModal = async (title, slug) => {
77+
genericModalLoading.value = true;
7478
genericModal.value = null;
7579
genericModalShow.value = !genericModalShow.value;
7680
genericModalTitle.value = title;
77-
await store.dispatch(
78-
"content/requestPage",
79-
["UPDATE_GENERIC_MODAL", slug]
80-
);
81+
try {
82+
await store.dispatch(
83+
"content/requestPage",
84+
["UPDATE_GENERIC_MODAL", slug]
85+
);
86+
} catch {
87+
// Do Nothing
88+
}
89+
genericModalLoading.value = false;
8190
}
8291

8392
// Define apiUrl in store state
@@ -128,6 +137,7 @@ export default class MCT {
128137
tabBy,
129138
api: self.api,
130139
genericModalShow,
140+
genericModalLoading,
131141
genericModalTitle,
132142
logo,
133143
disableMap,
@@ -147,7 +157,7 @@ export default class MCT {
147157
<section class="main">
148158
<n-message-provider>
149159
<section class="main-header">
150-
<div class="main-header-container mct-scrollbar">
160+
<div class="main-header-container">
151161
<div class="main-header-form">
152162
<label class="main-header__label">Pesquisar por:</label>
153163
<n-tabs type="segment" v-model:value="tabBy">
@@ -189,10 +199,7 @@ export default class MCT {
189199
v-model:show="genericModalShow"
190200
:title="genericModalTitle"
191201
>
192-
<template v-if="modalContent">
193-
<div v-html="modalContent"></div>
194-
</template>
195-
<template v-else>
202+
<template v-if="genericModalLoading">
196203
<n-skeleton
197204
:height="48"
198205
:sharp="false"
@@ -206,6 +213,21 @@ export default class MCT {
206213
<n-skeleton text :repeat="8" style="margin-bottom: 8px;" />
207214
<n-skeleton text style=" width: 60%; margin-bottom: 24px;" />
208215
</template>
216+
<template v-else-if="modalContent">
217+
<div v-html="modalContent"></div>
218+
</template>
219+
<template v-else>
220+
<n-empty
221+
description="Nada para ser exibido."
222+
style="min-height: 70vh; display: flex; justify-content: center;"
223+
>
224+
<template #extra>
225+
<span
226+
style="color: #c5c5c5; font-size: .95rem; font-weight: 500"
227+
>Página não existe ou não tem conteúdo para ser exibido.</span>
228+
</template>
229+
</n-empty>
230+
</template>
209231
</modal>
210232
</n-message-provider>
211233
</section>

0 commit comments

Comments
 (0)