@paris-ias/list 1.0.137 → 1.0.138

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.
Files changed (46) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/components/actions/DenseItem.vue +64 -0
  3. package/dist/runtime/components/actions/ExpandedItem.vue +17 -14
  4. package/dist/runtime/components/actions/RowsItem.vue +56 -10
  5. package/dist/runtime/components/actions/View.vue +5 -17
  6. package/dist/runtime/components/affiliation/DenseItem.vue +26 -10
  7. package/dist/runtime/components/affiliation/RowsItem.vue +26 -10
  8. package/dist/runtime/components/apps/DenseItem.vue +26 -10
  9. package/dist/runtime/components/apps/RowsItem.vue +26 -10
  10. package/dist/runtime/components/disciplines/DenseItem.vue +26 -10
  11. package/dist/runtime/components/disciplines/RowsItem.vue +26 -10
  12. package/dist/runtime/components/events/DenseItem.vue +12 -3
  13. package/dist/runtime/components/events/RowsItem.vue +12 -5
  14. package/dist/runtime/components/fellowships/DenseItem.vue +14 -0
  15. package/dist/runtime/components/fellowships/RowsItem.vue +16 -2
  16. package/dist/runtime/components/fellowships/View.vue +2 -2
  17. package/dist/runtime/components/files/DenseItem.vue +25 -10
  18. package/dist/runtime/components/files/RowsItem.vue +26 -10
  19. package/dist/runtime/components/list/atoms/FiltersMenu.vue +9 -0
  20. package/dist/runtime/components/list/atoms/PerPage.vue +3 -2
  21. package/dist/runtime/components/list/atoms/ResetButton.vue +5 -1
  22. package/dist/runtime/components/list/atoms/SearchInput.vue +15 -2
  23. package/dist/runtime/components/list/atoms/SearchString.vue +169 -133
  24. package/dist/runtime/components/list/atoms/SortMenu.vue +22 -18
  25. package/dist/runtime/components/list/atoms/ViewMenu.vue +26 -14
  26. package/dist/runtime/components/list/molecules/Filters.vue +4 -4
  27. package/dist/runtime/components/list/molecules/Header.vue +10 -19
  28. package/dist/runtime/components/list/molecules/Pagination.vue +51 -48
  29. package/dist/runtime/components/list/organisms/List.vue +93 -73
  30. package/dist/runtime/components/mailing/RowsItem.vue +26 -10
  31. package/dist/runtime/components/news/DenseItem.vue +59 -45
  32. package/dist/runtime/components/news/RowsItem.vue +11 -7
  33. package/dist/runtime/components/people/DenseItem.vue +10 -8
  34. package/dist/runtime/components/people/RowsItem.vue +11 -2
  35. package/dist/runtime/components/projects/DenseItem.vue +11 -4
  36. package/dist/runtime/components/projects/RowsItem.vue +10 -3
  37. package/dist/runtime/components/publications/DenseItem.vue +12 -8
  38. package/dist/runtime/components/publications/RowsItem.vue +12 -4
  39. package/dist/runtime/components/tags/RowsItem.vue +23 -10
  40. package/dist/runtime/components/users/DenseItem.vue +24 -10
  41. package/dist/runtime/components/users/RowsItem.vue +24 -10
  42. package/dist/runtime/composables/useUtils.js +1 -1
  43. package/dist/runtime/plugins/pinia.js +5 -2
  44. package/dist/runtime/stores/root.d.ts +10 -9
  45. package/dist/runtime/stores/root.js +82 -117
  46. package/package.json +1 -1
@@ -1,53 +1,60 @@
1
1
  <template>
2
- <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover my-2">
3
- <v-col v-if="mdAndUp" align-self="center" cols="1">
4
- <MiscAtomsImageContainer
5
- cover
6
- :loading="$stores.news.loading"
7
- :src="
8
- item && item.image && item.image.url ? item.image.url : '/default.png'
9
- "
10
- :ratio="1 / 1"
11
- width="80px"
12
- />
13
- </v-col>
14
- <v-col align-self="start" class="text-h5 dense px-2 paragraph">
15
- <v-skeleton-loader v-if="rootStore.loading" type="heading" />
16
- <template v-else>
17
- <v-skeleton-loader
18
- v-if="rootStore.loading"
19
- :type="
20
- ['chip', 'chip@2', 'chip@3', 'chip@4', 'chip@4', 'chip@4'][
21
- ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')
22
- ]
2
+ <NuxtLink
3
+ v-if="pathPrefix"
4
+ :to="pathPrefix"
5
+ class="text-decoration-none text-black"
6
+ >
7
+ <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover my-2">
8
+ <v-col v-if="mdAndUp" align-self="center" cols="1">
9
+ <MiscAtomsImageContainer
10
+ cover
11
+ :loading="isLoading"
12
+ :src="
13
+ item && item.image && item.image.url
14
+ ? item.image.url
15
+ : '/default.png'
23
16
  "
17
+ :ratio="1 / 1"
18
+ width="80px"
24
19
  />
25
-
20
+ </v-col>
21
+ <v-col align-self="start" class="text-h5 dense px-2 paragraph">
22
+ <v-skeleton-loader v-if="isLoading" type="heading" />
26
23
  <template v-else>
27
- <v-chip
28
- class="ma-2"
29
- style="background-color: white; color: black"
30
- size="small"
31
- variant="outlined"
32
- >
33
- {{ $t(eventCategory) }}
34
- </v-chip>
35
- <MiscMoleculesChipContainer :items="item.tags" size="small" />
24
+ <v-skeleton-loader
25
+ v-if="isLoading"
26
+ :type="
27
+ ['chip', 'chip@2', 'chip@3', 'chip@4', 'chip@4', 'chip@4'][
28
+ ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')
29
+ ]
30
+ "
31
+ />
32
+
33
+ <template v-else>
34
+ <v-chip
35
+ class="ma-2"
36
+ style="background-color: white; color: black"
37
+ size="small"
38
+ variant="outlined"
39
+ >
40
+ {{ $t(eventCategory) }}
41
+ </v-chip>
42
+ <MiscMoleculesChipContainer :items="item.tags || []" size="small" />
43
+ </template>
44
+ <div
45
+ v-html="
46
+ $rootStore.search.length
47
+ ? highlightAndTruncate(
48
+ 300,
49
+ item.name,
50
+ $rootStore.search.split(' '),
51
+ )
52
+ : item.name
53
+ "
54
+ />
36
55
  </template>
37
- <div
38
- v-html="
39
- $rootStore.search.length
40
- ? highlightAndTruncate(
41
- 300,
42
- item.name,
43
- $rootStore.search.split(' '),
44
- )
45
- : item.name
46
- "
47
- />
48
- </template>
49
- </v-col>
50
- </v-row>
56
+ </v-col> </v-row
57
+ ></NuxtLink>
51
58
  </template>
52
59
 
53
60
  <script setup>
@@ -73,6 +80,11 @@ const props = defineProps({
73
80
  type: String,
74
81
  required: true,
75
82
  },
83
+ loading: {
84
+ type: Boolean,
85
+ required: false,
86
+ default: false,
87
+ },
76
88
  })
77
89
  const eventCategory = computed(() => {
78
90
  if (props.item.category) {
@@ -81,4 +93,6 @@ const eventCategory = computed(() => {
81
93
  return "list.filters.news.category.others"
82
94
  }
83
95
  })
96
+
97
+ const isLoading = computed(() => props.loading)
84
98
  </script>
@@ -6,7 +6,7 @@
6
6
  cover
7
7
  :src="item.image.url ? item.image : '/default.png'"
8
8
  :ratio="1 / 1"
9
- :loading="$stores.news.loading"
9
+ :loading="isLoading"
10
10
  >
11
11
  <v-chip class="ma-2" style="background-color: white; color: black">
12
12
  {{ $t(eventCategory) }}
@@ -15,7 +15,7 @@
15
15
  </v-col>
16
16
  <v-col cols="12" md="8" lg="4" class="pl-md-6">
17
17
  <v-skeleton-loader
18
- v-if="rootStore.loading || $stores['news'].loading"
18
+ v-if="isLoading"
19
19
  :type="
20
20
  [
21
21
  'heading, subtitle, text@5, ossein, button',
@@ -44,7 +44,7 @@
44
44
  </div>
45
45
  <MiscMoleculesChipContainer
46
46
  v-if="item.tags && item.tags.length"
47
- :items="item.tags"
47
+ :items="item.tags || []"
48
48
  class="mt-4"
49
49
  />
50
50
  <template v-if="mdAndDown">
@@ -74,10 +74,7 @@
74
74
  </v-col>
75
75
 
76
76
  <v-col v-if="lgAndUp" cols="12" lg="5">
77
- <v-skeleton-loader
78
- v-if="rootStore.loading || $stores.news.loading"
79
- type="text@8, ossein, button"
80
- />
77
+ <v-skeleton-loader v-if="isLoading" type="text@8, ossein, button" />
81
78
 
82
79
  <template v-else>
83
80
  <div
@@ -140,6 +137,11 @@ const props = defineProps({
140
137
  type: String,
141
138
  required: true,
142
139
  },
140
+ loading: {
141
+ type: Boolean,
142
+ required: false,
143
+ default: false,
144
+ },
143
145
  })
144
146
 
145
147
  const processedSummary = computed(() => {
@@ -155,6 +157,8 @@ function replaceMarkdownLinksWithSlug(markdownText, slugPath) {
155
157
  return `[${text}](${slugPath}?redirect=${encodedUrl})`
156
158
  })
157
159
  }
160
+
161
+ const isLoading = computed(() => rootStore.loading || props.loading)
158
162
  </script>
159
163
 
160
164
  <style></style>
@@ -1,14 +1,9 @@
1
1
  <template>
2
- <v-row
3
- v-ripple
4
- no-gutters
5
- class="cursor-pointer highlight-on-hover my-2"
6
- @click="$router.push(pathPrefix)"
7
- >
2
+ <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover my-2">
8
3
  <v-col v-if="mdAndUp" cols="1">
9
4
  <MiscAtomsImageContainer
10
5
  cover
11
- :loading="$stores.people.loading"
6
+ :loading="isLoading"
12
7
  :src="
13
8
  item && item.image && item.image.url ? item.image.url : '/default.png'
14
9
  "
@@ -17,7 +12,7 @@
17
12
  />
18
13
  </v-col>
19
14
  <v-col align-self="start" class="text-h6 dense px-2">
20
- <v-skeleton-loader v-if="rootStore.loading" type="heading" />
15
+ <v-skeleton-loader v-if="isLoading" type="heading" />
21
16
  <div v-else class="d-flex text-h5 align-center">
22
17
  <span
23
18
  v-html="
@@ -72,7 +67,14 @@ const props = defineProps({
72
67
  type: String,
73
68
  required: true,
74
69
  },
70
+ loading: {
71
+ type: Boolean,
72
+ required: false,
73
+ default: false,
74
+ },
75
75
  })
76
+
77
+ const isLoading = computed(() => props.loading)
76
78
  </script>
77
79
  <style>
78
80
  .paragraph{max-width:83ch!important}
@@ -7,7 +7,7 @@
7
7
  <v-col v-if="mdAndUp" cols="12" md="3">
8
8
  <MiscAtomsImageContainer
9
9
  cover
10
- :loading="$stores.people.loading"
10
+ :loading="isLoading"
11
11
  :src="item.image.url ? item.image : '/default.png'"
12
12
  :ratio="1 / 1"
13
13
  />
@@ -15,7 +15,7 @@
15
15
 
16
16
  <v-col cols="12" md="8">
17
17
  <v-skeleton-loader
18
- v-if="$stores.people.loading"
18
+ v-if="isLoading"
19
19
  :type="
20
20
  [
21
21
  'heading, subtitle, text@5',
@@ -53,9 +53,11 @@
53
53
  <script setup>
54
54
  import { useDisplay } from "vuetify"
55
55
  import { useLocalePath, computed } from "#imports"
56
+ import { useRootStore } from "../../stores/root"
56
57
 
57
58
  const { name, mdAndUp } = useDisplay()
58
59
  const localePath = useLocalePath()
60
+ const rootStore = useRootStore()
59
61
  const props = defineProps({
60
62
  item: {
61
63
  type: Object,
@@ -65,6 +67,11 @@ const props = defineProps({
65
67
  type: Number,
66
68
  required: true,
67
69
  },
70
+ loading: {
71
+ type: Boolean,
72
+ required: false,
73
+ default: false,
74
+ },
68
75
  })
69
76
  const lineClamp = computed(() => {
70
77
  let base = [5, 6, 3, 6, 8, 10][
@@ -80,4 +87,6 @@ const lineClamp = computed(() => {
80
87
 
81
88
  return base
82
89
  })
90
+
91
+ const isLoading = computed(() => rootStore.loading || props.loading)
83
92
  </script>
@@ -8,7 +8,7 @@
8
8
  <v-col v-if="mdAndUp" align-self="center" cols="1">
9
9
  <MiscAtomsImageContainer
10
10
  cover
11
- :loading="$stores.projects.loading"
11
+ :loading="isLoading"
12
12
  :src="
13
13
  item && item.image && item.image.url ? item.image.url : '/default.png'
14
14
  "
@@ -17,7 +17,7 @@
17
17
  />
18
18
  </v-col>
19
19
  <v-col align-self="center" class="text-h5 dense pl-2">
20
- <v-skeleton-loader v-if="rootStore.loading" type="heading" />
20
+ <v-skeleton-loader v-if="isLoading" type="heading" />
21
21
  <span
22
22
  v-else
23
23
  v-html="
@@ -27,14 +27,14 @@
27
27
  "
28
28
  />
29
29
  <v-skeleton-loader
30
- v-if="rootStore.loading"
30
+ v-if="isLoading"
31
31
  :type="
32
32
  ['chip', 'chip@2', 'chip@3', 'chip@4', 'chip@4', 'chip@4'][
33
33
  ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')
34
34
  ]
35
35
  "
36
36
  />
37
- <MiscMoleculesChipContainer :items="item.tags" size="small" />
37
+ <MiscMoleculesChipContainer :items="item.tags || []" size="small" />
38
38
 
39
39
  <MDC
40
40
  v-if="item.summary"
@@ -68,6 +68,11 @@ const props = defineProps({
68
68
  type: String,
69
69
  required: true,
70
70
  },
71
+ loading: {
72
+ type: Boolean,
73
+ required: false,
74
+ default: false,
75
+ },
71
76
  })
72
77
  const eventCategory = computed(() => {
73
78
  if (props.item.category) {
@@ -76,4 +81,6 @@ const eventCategory = computed(() => {
76
81
  return "list.filters.news.category.others"
77
82
  }
78
83
  })
84
+
85
+ const isLoading = computed(() => props.loading)
79
86
  </script>
@@ -4,7 +4,7 @@
4
4
  <MiscAtomsImageContainer
5
5
  contain
6
6
  :src="item.image"
7
- :loading="$stores.projects.loading"
7
+ :loading="isLoading"
8
8
  :ratio="1 / 1"
9
9
  />
10
10
  </v-col>
@@ -19,7 +19,7 @@
19
19
  @click="router.push(pathPrefix)"
20
20
  >
21
21
  <v-skeleton-loader
22
- v-if="rootStore.loading"
22
+ v-if="isLoading"
23
23
  type="heading,ossein,text@8,ossein,button,button"
24
24
  />
25
25
 
@@ -75,7 +75,7 @@
75
75
  <script setup>
76
76
  import { useDisplay } from "vuetify"
77
77
  import { useRootStore } from "../../stores/root"
78
- import { useRouter, useI18n } from "#imports"
78
+ import { useRouter, useI18n, computed } from "#imports"
79
79
 
80
80
  const { locale } = useI18n()
81
81
 
@@ -96,7 +96,14 @@ const props = defineProps({
96
96
  type: String,
97
97
  required: true,
98
98
  },
99
+ loading: {
100
+ type: Boolean,
101
+ required: false,
102
+ default: false,
103
+ },
99
104
  })
105
+
106
+ const isLoading = computed(() => rootStore.loading || props.loading)
100
107
  </script>
101
108
 
102
109
  <style lang="scss"></style>
@@ -8,7 +8,7 @@
8
8
  <v-col v-if="mdAndUp" cols="1" class="align-center">
9
9
  <MiscAtomsImageContainer
10
10
  cover
11
- :loading="$stores.people.loading"
11
+ :loading="isLoading"
12
12
  :src="
13
13
  item && item.image && item.image.url ? item.image.url : '/default.png'
14
14
  "
@@ -19,7 +19,7 @@
19
19
  <v-col class="pl-2">
20
20
  <div class="inline-flex flex-row flex-wrap">
21
21
  <v-skeleton-loader
22
- v-if="rootStore.loading"
22
+ v-if="isLoading"
23
23
  :type="
24
24
  ['chip', 'chip@2', 'chip@3', 'chip@4', 'chip@4', 'chip@4'][
25
25
  ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')
@@ -47,11 +47,11 @@
47
47
  </v-chip>
48
48
  <MiscMoleculesChipContainer
49
49
  v-if="item.tags && item.tags.length"
50
- :items="item.tags"
50
+ :items="item.tags || []"
51
51
  size="small"
52
52
  />
53
53
  </template>
54
- <v-skeleton-loader v-if="rootStore.loading" type="heading" />
54
+ <v-skeleton-loader v-if="isLoading" type="heading" />
55
55
  <span
56
56
  v-else
57
57
  class="text-h5 dense paragraph"
@@ -76,10 +76,9 @@
76
76
  <script setup>
77
77
  import { useDisplay } from "vuetify"
78
78
  import { useRootStore } from "../../stores/root"
79
- import { computed, useNuxtApp, useI18n } from "#imports"
79
+ import { computed, useI18n } from "#imports"
80
80
  const rootStore = useRootStore()
81
81
 
82
- const { $stores } = useNuxtApp()
83
82
  const { name, mdAndUp } = useDisplay()
84
83
  const { locale } = useI18n()
85
84
  const props = defineProps({
@@ -95,11 +94,15 @@ const props = defineProps({
95
94
  type: String,
96
95
  required: true,
97
96
  },
97
+ loading: {
98
+ type: Boolean,
99
+ required: false,
100
+ default: false,
101
+ },
98
102
  })
99
103
 
100
104
  const eventCategory = computed(() => {
101
105
  if (props.item.category) {
102
- console.log("props.item.category: ", props.item.category)
103
106
  return "list.filters.publications.category." + props.item.category
104
107
  } else {
105
108
  return false
@@ -107,10 +110,11 @@ const eventCategory = computed(() => {
107
110
  })
108
111
  const eventType = computed(() => {
109
112
  if (props.item.type) {
110
- console.log("props.item.type: ", props.item.type)
111
113
  return "list.filters.publications.type." + props.item.type
112
114
  } else {
113
115
  return false
114
116
  }
115
117
  })
118
+
119
+ const isLoading = computed(() => props.loading)
116
120
  </script>
@@ -3,7 +3,7 @@
3
3
  <MiscAtomsImageContainer
4
4
  contain
5
5
  :src="item.image.url ? item.image : '/default.png'"
6
- :loading="$stores.publications.loading"
6
+ :loading="isLoading"
7
7
  :ratio="1 / 1"
8
8
  />
9
9
  </v-col>
@@ -19,7 +19,7 @@
19
19
  >
20
20
  <div>
21
21
  <v-skeleton-loader
22
- v-if="$stores.publications.loading"
22
+ v-if="isLoading"
23
23
  type="heading,ossein,text@8,ossein,button,button"
24
24
  />
25
25
 
@@ -77,10 +77,11 @@
77
77
 
78
78
  <script setup>
79
79
  import { useDisplay } from "vuetify"
80
- import { useNuxtApp, useI18n, useRouter } from "#imports"
80
+ import { useRouter, computed } from "#imports"
81
+ import { useRootStore } from "../../stores/root"
81
82
 
82
83
  const { name } = useDisplay()
83
- const { $stores } = useNuxtApp()
84
+ const rootStore = useRootStore()
84
85
  const router = useRouter()
85
86
  const props = defineProps({
86
87
  item: {
@@ -94,7 +95,14 @@ const props = defineProps({
94
95
  type: String,
95
96
  required: true,
96
97
  },
98
+ loading: {
99
+ type: Boolean,
100
+ required: false,
101
+ default: false,
102
+ },
97
103
  })
104
+
105
+ const isLoading = computed(() => rootStore.loading || props.loading)
98
106
  </script>
99
107
 
100
108
  <style lang="scss"></style>
@@ -1,18 +1,31 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="highlight-on-hover pa-3"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-6">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@6" />
9
+ <template v-else>
10
+ <div class="text-h6">{{ item.name }}</div>
11
+ </template>
12
+ </v-col>
13
+ </v-row>
14
+ <v-divider />
3
15
  </template>
4
16
 
5
17
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
11
- pathPrefix: {
12
- type: String,
13
- required: true,
14
- },
18
+ import { computed } from "#imports"
19
+ import { useRootStore } from "../../stores/root"
20
+
21
+ const rootStore = useRootStore()
22
+ const props = defineProps({
23
+ item: { type: Object, required: true },
24
+ pathPrefix: { type: String, required: true },
25
+ loading: { type: Boolean, default: false },
15
26
  })
27
+
28
+ const isLoading = computed(() => rootStore.loading || props.loading)
16
29
  </script>
17
30
 
18
31
  <style></style>
@@ -1,18 +1,32 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="my-2 highlight-on-hover"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-4">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@6" />
9
+ <template v-else>
10
+ <div class="text-h6">{{ item.name }}</div>
11
+ <div v-if="item.email" class="text-body-2 mt-1">{{ item.email }}</div>
12
+ </template>
13
+ </v-col>
14
+ </v-row>
15
+ <v-divider />
3
16
  </template>
4
17
 
5
18
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
11
- pathPrefix: {
12
- type: String,
13
- required: true,
14
- },
19
+ import { computed } from "#imports"
20
+ import { useRootStore } from "../../stores/root"
21
+
22
+ const rootStore = useRootStore()
23
+ const props = defineProps({
24
+ item: { type: Object, required: true },
25
+ pathPrefix: { type: String, required: true },
26
+ loading: { type: Boolean, default: false },
15
27
  })
28
+
29
+ const isLoading = computed(() => rootStore.loading || props.loading)
16
30
  </script>
17
31
 
18
32
  <style></style>
@@ -1,18 +1,32 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="highlight-on-hover pa-3"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-6">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@8, button" />
9
+ <template v-else>
10
+ <div class="text-h6">{{ item.name }}</div>
11
+ <div v-if="item.email" class="text-body-2 mt-1">{{ item.email }}</div>
12
+ </template>
13
+ </v-col>
14
+ </v-row>
15
+ <v-divider />
3
16
  </template>
4
17
 
5
18
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
11
- pathPrefix: {
12
- type: String,
13
- required: true,
14
- },
19
+ import { computed } from "#imports"
20
+ import { useRootStore } from "../../stores/root"
21
+
22
+ const rootStore = useRootStore()
23
+ const props = defineProps({
24
+ item: { type: Object, required: true },
25
+ pathPrefix: { type: String, required: true },
26
+ loading: { type: Boolean, default: false },
15
27
  })
28
+
29
+ const isLoading = computed(() => rootStore.loading || props.loading)
16
30
  </script>
17
31
 
18
32
  <style></style>
@@ -49,7 +49,7 @@ export const formatDateValue = (date, locale) => {
49
49
  export const highlightAndTruncate = (stop, text, query) => {
50
50
  try {
51
51
  if (!text) {
52
- return "toto";
52
+ return "";
53
53
  }
54
54
  if (query?.length && query[0]?.length) {
55
55
  if (text.length > stop) {
@@ -1,6 +1,6 @@
1
1
  import { createDynamicStore } from "../stores/factory.js";
2
2
  import { useRootStore } from "../stores/root.js";
3
- import { defineNuxtPlugin, useAppConfig } from "#app";
3
+ import { defineNuxtPlugin, useAppConfig } from "#imports";
4
4
  export default defineNuxtPlugin(async (nuxtApp) => {
5
5
  const appConfig = useAppConfig();
6
6
  const moduleImports = {
@@ -107,6 +107,8 @@ export default defineNuxtPlugin(async (nuxtApp) => {
107
107
  const stores = {};
108
108
  const queries = {};
109
109
  const models = {};
110
+ const rootStore = useRootStore();
111
+ rootStore.setLoading(true);
110
112
  const builtFilters = await import("../public/filters.json");
111
113
  console.log("INITIALIZING STORES");
112
114
  await Promise.all(
@@ -125,7 +127,8 @@ export default defineNuxtPlugin(async (nuxtApp) => {
125
127
  }
126
128
  })
127
129
  );
128
- const rootStore = useRootStore();
130
+ console.log(" STORES LOADED");
131
+ rootStore.setLoading(false);
129
132
  nuxtApp.provide("models", models);
130
133
  nuxtApp.provide("rootStore", rootStore);
131
134
  nuxtApp.provide("stores", stores);