Skip to content

Commit 6d65a6c

Browse files
committed
fix(shell): adds loading indicator delay to shell skeleton
1 parent 2431d67 commit 6d65a6c

File tree

9 files changed

+47
-7
lines changed

9 files changed

+47
-7
lines changed

env.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ interface ImportMeta {
33
env: {
44
PKG_VERSION: string;
55
PKG_NAME: string;
6+
67
VITE_BASE?: string;
78
VITE_WEB?: boolean;
89
VITE_SOURCEMAP?: boolean;

src/components/AppComponent.vue

+10
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,16 @@ const onBack = () => {
216216
&-content {
217217
margin-top: -1.125rem;
218218
padding: 0 3rem 1.25rem;
219+
220+
:deep(.n-skeleton) {
221+
opacity: 1;
222+
transition: opacity 0.1s ease-in 0.1s;
223+
224+
/* Adds 0.2s delay and 1s transition to loading indicator to prevent flashing */
225+
@starting-style {
226+
opacity: 0;
227+
}
228+
}
219229
}
220230
}
221231
}

src/components/common/loading/PageLoading.vue

+7
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,12 @@ import IconLoadingMatrix from '~/components/icons/IconLoadingMatrix.vue';
2020
width: 100%;
2121
height: 100%;
2222
padding-bottom: layout.$header-navbar-height;
23+
opacity: 1;
24+
transition: opacity 1s ease-in 0.2s;
25+
26+
/* Adds 0.2s delay and 1s transition to loading indicator to prevent flashing */
27+
@starting-style {
28+
opacity: 0;
29+
}
2330
}
2431
</style>

src/index.html

+9-4
Original file line numberDiff line numberDiff line change
@@ -271,13 +271,11 @@
271271
</html>
272272

273273
<style>
274-
html {
275-
overscroll-behavior: none;
276-
}
277-
274+
html,
278275
body {
279276
overscroll-behavior: none;
280277
display: flex;
278+
flex-direction: column;
281279
margin: 0;
282280
color: rgb(235 235 235 / 64%);
283281
font-size: 1rem;
@@ -306,6 +304,13 @@
306304
--skeleton-navbar-height: 44px;
307305

308306
height: 100%;
307+
opacity: 1;
308+
transition: opacity 1s ease-in 0.2s;
309+
310+
/* Adds 0.2s delay and 1s transition to loading indicator to prevent flashing */
311+
@starting-style {
312+
opacity: 0;
313+
}
309314
}
310315

311316
#app-skeleton-navbar {

src/views/options/index.html

+9
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,11 @@
257257
</html>
258258

259259
<style>
260+
html,
260261
body {
261262
overscroll-behavior: none;
262263
display: flex;
264+
flex-direction: column;
263265
margin: 0;
264266
color: rgb(235 235 235 / 64%);
265267
font-size: 1rem;
@@ -284,6 +286,13 @@
284286
--skeleton-navbar-height: 44px;
285287

286288
height: 100%;
289+
opacity: 1;
290+
transition: opacity 1s ease-in 0.2s;
291+
292+
/* Adds 0.2s delay and 1s transition to loading indicator to prevent flashing */
293+
@starting-style {
294+
opacity: 0;
295+
}
287296
}
288297

289298
#app-skeleton-navbar {

src/views/options/main.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import defineComponent from '~/web/define-component';
22

3-
defineComponent({ baseUrl: import.meta.env.VITE_BASE, view: { option: true } })
3+
defineComponent({ baseUrl: import.meta.env.VITE_BASE, view: { option: true, web: import.meta.env.VITE_WEB } })
44
.then(() => console.info('Web Component defined', import.meta.env))
55
.catch(err => console.error('Failed to define component', err));

src/views/popup/index.html

+7
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,13 @@
301301
--skeleton-navbar-height: 44px;
302302

303303
height: 100%;
304+
opacity: 1;
305+
transition: opacity 1s ease-in 0.2s;
306+
307+
/* Adds 0.2s delay and 1s transition to loading indicator to prevent flashing */
308+
@starting-style {
309+
opacity: 0;
310+
}
304311
}
305312

306313
#app-skeleton-navbar {

src/views/popup/main.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const resizeContainer = () => {
88
root.style.height = `${window.innerHeight}px`;
99
};
1010

11-
defineComponent({ baseUrl: import.meta.env.VITE_BASE, view: { popup: true } })
11+
defineComponent({ baseUrl: import.meta.env.VITE_BASE, view: { popup: true, web: import.meta.env.VITE_WEB } })
1212
.then(() => {
1313
resizeContainer();
1414
console.info('Web Component defined');

src/web/define-component.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export enum WebComponents {
33
}
44

55
export type DefineOption = { baseName?: string; baseUrl?: string; view?: { option?: boolean; popup?: boolean; web?: boolean } };
6-
export type DefineComponent = (options?: DefineOption, component?: WebComponents) => void;
6+
export type DefineComponent = (options?: DefineOption, component?: WebComponents) => Promise<CustomElementConstructor>;
77

88
export const defineComponent = async (options: DefineOption = {}, component: WebComponents = WebComponents.TraktExtension) => {
99
if (customElements.get(component)) {
@@ -14,6 +14,7 @@ export const defineComponent = async (options: DefineOption = {}, component: Web
1414
const TraktExtensionWc = createElementInstance(ContainerComponent, { name: component, ...options });
1515
customElements.define(component, TraktExtensionWc);
1616
}
17+
return customElements.whenDefined(component);
1718
};
1819

1920
export default defineComponent;

0 commit comments

Comments
 (0)