@@ -5,11 +5,13 @@ import InputText from 'primevue/inputtext'
55import { useRoute , useRouter } from ' vue-router'
66import debounce from ' lodash.debounce'
77import type { DropdownData } from ' ../data-access/models/dropdownData'
8+ import Skeleton from ' primevue/skeleton'
89
910const { name } = defineProps <{
1011 filterInputs? : DropdownData []
1112 filterDropdowns: DropdownData []
1213 name: string
14+ isLoading: boolean
1315}>()
1416
1517const route = useRoute ()
@@ -38,43 +40,60 @@ const routeChange = (value: any, filter: any) => {
3840 </script >
3941
4042<template >
41- <div class = " card surface-card flex flex-row flex-wrap p-4 border-1 surface-border mt-1 " >
43+ <div >
4244 <div
43- v-for =" filter of filterInputs"
44- :key =" filter.param"
45- class =" flex flex-column gap-2 border-round m-1"
45+ v-if =" !isLoading"
46+ class =" card surface-card flex flex-row flex-wrap p-4 border-1 surface-border mt-1"
4647 >
47- <label >{{ filter.label }}</label >
48- <InputText
49- :id =" filter.label"
50- type =" text"
51- :value =" filter.value"
52- @update:model-value =" handleInputChange($event, filter)"
53- />
54- </div >
48+ <div
49+ v-for =" filter of filterInputs"
50+ :key =" filter.param"
51+ class =" flex flex-column gap-2 border-round m-1"
52+ >
53+ <label >{{ filter.label }}</label >
54+ <InputText
55+ :id =" filter.label"
56+ type =" text"
57+ :value =" filter.value"
58+ @update:model-value =" handleInputChange($event, filter)"
59+ />
60+ </div >
5561
56- <div
57- v-for =" filter of filterDropdowns"
58- :key =" filter.param"
59- class =" flex flex-column gap-2 border-round m-1"
60- >
61- <label >{{ filter.label }}</label >
62- <MultiSelect
63- v-if =" filter.multi"
64- :options =" filter.options"
65- v-model =" filter.value"
66- optionLabel =" label"
67- optionValue =" value"
68- @change =" handleDropdownChange($event, filter)"
69- />
70- <Dropdown
71- v-else
72- :options =" filter.options"
73- v-model =" filter.value"
74- optionLabel =" label"
75- optionValue =" value"
76- @change =" handleDropdownChange($event, filter)"
77- />
62+ <div
63+ v-for =" filter of filterDropdowns"
64+ :key =" filter.param"
65+ class =" flex flex-column gap-2 border-round m-1"
66+ >
67+ <label >{{ filter.label }}</label >
68+ <MultiSelect
69+ v-if =" filter.multi"
70+ :options =" filter.options"
71+ v-model =" filter.value"
72+ optionLabel =" label"
73+ optionValue =" value"
74+ @change =" handleDropdownChange($event, filter)"
75+ />
76+ <Dropdown
77+ v-else
78+ :options =" filter.options"
79+ v-model =" filter.value"
80+ optionLabel =" label"
81+ optionValue =" value"
82+ @change =" handleDropdownChange($event, filter)"
83+ />
84+ </div >
85+ </div >
86+ <div v-else >
87+ <div class =" card flex flex-row flex-wrap p-4 border-1 surface-border mt-1" >
88+ <div
89+ v-for =" filter of [0, 1, 2, 3]"
90+ :key =" filter"
91+ class =" flex flex-column gap-2 border-round m-1"
92+ >
93+ <Skeleton width =" 4rem" styleClass =" m-1" ></Skeleton >
94+ <Skeleton width =" 8rem" styleClass =" m-1" ></Skeleton >
95+ </div >
96+ </div >
7897 </div >
7998 </div >
8099</template >
0 commit comments