@paris-ias/list 1.0.45 → 1.0.47
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.
- package/dist/module.json +1 -1
- package/dist/runtime/components/events/ListContainer.vue +3 -2
- package/dist/runtime/components/events/RelatedItem.vue +4 -3
- package/dist/runtime/components/events/RowsItem.vue +4 -3
- package/dist/runtime/components/list/atoms/SearchInput.vue +8 -6
- package/dist/runtime/components/list/atoms/SortMenu.vue +4 -2
- package/dist/runtime/components/list/atoms/ViewMenu.vue +4 -2
- package/dist/runtime/components/list/inputs/AutoComplete.vue +4 -2
- package/dist/runtime/components/list/inputs/BooleanSwitch.vue +4 -2
- package/dist/runtime/components/list/inputs/Checkbox.vue +4 -2
- package/dist/runtime/components/list/inputs/Select.vue +4 -2
- package/dist/runtime/components/list/molecules/Filters.vue +4 -2
- package/dist/runtime/components/list/molecules/Header.vue +1 -1
- package/dist/runtime/components/list/molecules/Pagination.vue +3 -2
- package/dist/runtime/components/list/organisms/List.vue +4 -2
- package/dist/runtime/components/misc/molecules/RelatedItems.vue +2 -0
- package/dist/runtime/components/misc/molecules/SearchItem.vue +3 -2
- package/dist/runtime/components/news/DenseItem.vue +5 -3
- package/dist/runtime/components/news/ExpandedItem.vue +3 -2
- package/dist/runtime/components/news/RelatedItem.vue +4 -3
- package/dist/runtime/components/news/RowsItem.vue +5 -3
- package/dist/runtime/components/people/DenseItem.vue +4 -2
- package/dist/runtime/components/people/GroupBadges.vue +3 -2
- package/dist/runtime/components/people/RelatedItem.vue +4 -3
- package/dist/runtime/components/projects/RelatedItem.vue +4 -3
- package/dist/runtime/components/projects/RowsItem.vue +3 -2
- package/dist/runtime/components/publications/RelatedItem.vue +4 -3
- package/dist/runtime/plugins/pinia.js +1 -1
- package/dist/runtime/stores/root.d.ts +1 -1
- package/dist/runtime/stores/root.js +1 -1
- package/dist/runtime/translations/en.json +1 -0
- package/dist/runtime/translations/fr.json +1 -0
- package/package.json +3 -5
package/dist/module.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
>
|
|
10
10
|
<v-col cols="3">
|
|
11
11
|
<MiscAtomsDateStamp
|
|
12
|
-
:loading="
|
|
12
|
+
:loading="rootStore.events.loading"
|
|
13
13
|
:date="[
|
|
14
14
|
new Date(event.start),
|
|
15
15
|
...(event.stop ? [new Date(event.stop)] : []),
|
|
@@ -30,9 +30,10 @@
|
|
|
30
30
|
</template>
|
|
31
31
|
|
|
32
32
|
<script setup>
|
|
33
|
+
import { useRootStore } from "../../stores/root";
|
|
33
34
|
import { useI18n } from "#imports";
|
|
34
|
-
const { $rootStore } = useNuxtApp();
|
|
35
35
|
const { locale } = useI18n();
|
|
36
|
+
const rootStore = useRootStore();
|
|
36
37
|
const props = defineProps({
|
|
37
38
|
events: {
|
|
38
39
|
type: Array,
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
:src="item.image"
|
|
15
15
|
:ratio="1 / 1"
|
|
16
16
|
:link="item.name"
|
|
17
|
-
:loading="
|
|
17
|
+
:loading="rootStore.loading"
|
|
18
18
|
name="activities-events-slug"
|
|
19
19
|
/>
|
|
20
20
|
</v-col>
|
|
21
21
|
<v-col cols="12" lg="9">
|
|
22
|
-
<v-skeleton-loader v-if="
|
|
22
|
+
<v-skeleton-loader v-if="rootStore.loading" type="heading, text@3" />
|
|
23
23
|
<template v-else>
|
|
24
24
|
<div class="text-h6">
|
|
25
25
|
{{ item.name }}
|
|
@@ -35,9 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
<script setup>
|
|
37
37
|
import { useDisplay } from "vuetify";
|
|
38
|
+
import { useRootStore } from "../../stores/root";
|
|
38
39
|
import { useLocalePath } from "#imports";
|
|
39
|
-
const { $rootStore } = useNuxtApp();
|
|
40
40
|
const localePath = useLocalePath();
|
|
41
|
+
const rootStore = useRootStore();
|
|
41
42
|
const { lgAndUp } = useDisplay();
|
|
42
43
|
const props = defineProps({ item: { type: Object, required: true } });
|
|
43
44
|
</script>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<v-row no-gutters>
|
|
15
15
|
<v-col cols="12" class="pr-lg-6">
|
|
16
16
|
<v-skeleton-loader
|
|
17
|
-
v-if="
|
|
17
|
+
v-if="rootStore.loading || $stores['events'].loading"
|
|
18
18
|
:type="
|
|
19
19
|
[
|
|
20
20
|
'heading, subtitle, text@6,subtitle, text, ossein, button, button',
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
>
|
|
70
70
|
<v-col cols="12">
|
|
71
71
|
<v-skeleton-loader
|
|
72
|
-
v-if="
|
|
72
|
+
v-if="rootStore.loading || $stores['events'].loading"
|
|
73
73
|
:type="
|
|
74
74
|
['article, heading, text, heading, text, button, button'][
|
|
75
75
|
['md'].indexOf(name || 'md')
|
|
@@ -103,7 +103,8 @@ import { useNuxtApp, useI18n, useLocalePath } from "#imports";
|
|
|
103
103
|
const { locale } = useI18n();
|
|
104
104
|
const { name, mdAndDown, lgAndUp } = useDisplay();
|
|
105
105
|
const localePath = useLocalePath();
|
|
106
|
-
const
|
|
106
|
+
const rootStore = useRootStore();
|
|
107
|
+
const { $stores } = useNuxtApp();
|
|
107
108
|
const props = defineProps({
|
|
108
109
|
item: {
|
|
109
110
|
type: Object,
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
clearable
|
|
12
12
|
tile
|
|
13
13
|
type="search"
|
|
14
|
-
:loading="
|
|
14
|
+
:loading="rootStore.loading"
|
|
15
15
|
>
|
|
16
16
|
<!-- :loading="$nuxt.loading || $store.state.loading" :class="{ 'mt-3':
|
|
17
17
|
$store.state.scrolled }" -->
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
style="max-height: 300px"
|
|
30
30
|
class="overflow-y-auto"
|
|
31
31
|
>
|
|
32
|
-
<div v-if="
|
|
32
|
+
<div v-if="rootStore.loading" class="d-flex justify-center py-6">
|
|
33
33
|
<v-progress-circular color="black" size="64" indeterminate />
|
|
34
34
|
</div>
|
|
35
35
|
<template v-for="(item, index) in results">
|
|
@@ -66,9 +66,11 @@
|
|
|
66
66
|
|
|
67
67
|
<script setup>
|
|
68
68
|
import { useDebounceFn } from "@vueuse/core";
|
|
69
|
+
import { useRootStore } from "../../../stores/root";
|
|
69
70
|
import { useNuxtApp, useI18n, computed } from "#imports";
|
|
70
71
|
const { locale, t } = useI18n();
|
|
71
|
-
const
|
|
72
|
+
const rootStore = useRootStore();
|
|
73
|
+
const { $stores } = useNuxtApp();
|
|
72
74
|
const props = defineProps({
|
|
73
75
|
type: {
|
|
74
76
|
type: String,
|
|
@@ -80,7 +82,7 @@ const props = defineProps({
|
|
|
80
82
|
}
|
|
81
83
|
});
|
|
82
84
|
const results = computed(() => {
|
|
83
|
-
const storeRst =
|
|
85
|
+
const storeRst = rootStore.results;
|
|
84
86
|
const rst = Object.keys(storeRst).length && Object.keys(storeRst).sort((a, b) => {
|
|
85
87
|
return storeRst[b]?.items?.length - storeRst[a]?.items?.length;
|
|
86
88
|
}).reduce((acc, key, index) => {
|
|
@@ -109,10 +111,10 @@ const results = computed(() => {
|
|
|
109
111
|
});
|
|
110
112
|
const search = computed({
|
|
111
113
|
get() {
|
|
112
|
-
return props.type === "all" ?
|
|
114
|
+
return props.type === "all" ? rootStore.search : $stores[props.type].search;
|
|
113
115
|
},
|
|
114
116
|
set: await useDebounceFn(async function(v) {
|
|
115
|
-
await
|
|
117
|
+
await rootStore.updateSearch({
|
|
116
118
|
type: props.type,
|
|
117
119
|
search: v || "",
|
|
118
120
|
lang: locale.value
|
|
@@ -45,9 +45,11 @@
|
|
|
45
45
|
<script setup>
|
|
46
46
|
import { mergeProps } from "vue";
|
|
47
47
|
import { useDisplay } from "vuetify";
|
|
48
|
+
import { useRootStore } from "../../../stores/root";
|
|
48
49
|
import { useNuxtApp, computed, ref } from "#imports";
|
|
49
|
-
const { $stores
|
|
50
|
+
const { $stores } = useNuxtApp();
|
|
50
51
|
const { xs: isXsDisplay } = useDisplay();
|
|
52
|
+
const rootStore = useRootStore();
|
|
51
53
|
const props = defineProps({
|
|
52
54
|
type: {
|
|
53
55
|
type: String,
|
|
@@ -72,6 +74,6 @@ const current = computed(() => {
|
|
|
72
74
|
}
|
|
73
75
|
});
|
|
74
76
|
const updateSort = async (value) => {
|
|
75
|
-
await
|
|
77
|
+
await rootStore.updateSort({ value, type: props.type });
|
|
76
78
|
};
|
|
77
79
|
</script>
|
|
@@ -42,8 +42,9 @@
|
|
|
42
42
|
<script setup>
|
|
43
43
|
import { mergeProps, ref } from "vue";
|
|
44
44
|
import { useDisplay } from "vuetify";
|
|
45
|
+
import { useRootStore } from "../../../stores/root";
|
|
45
46
|
import { useNuxtApp } from "#imports";
|
|
46
|
-
const { $stores
|
|
47
|
+
const { $stores } = useNuxtApp();
|
|
47
48
|
const props = defineProps({
|
|
48
49
|
type: {
|
|
49
50
|
type: String,
|
|
@@ -52,9 +53,10 @@ const props = defineProps({
|
|
|
52
53
|
}
|
|
53
54
|
});
|
|
54
55
|
const { xs: isXsDisplay } = useDisplay();
|
|
56
|
+
const rootStore = useRootStore();
|
|
55
57
|
const items = ref($stores[props.type].views);
|
|
56
58
|
const current = ref($stores[props.type].view);
|
|
57
59
|
const updateView = async (value) => {
|
|
58
|
-
await
|
|
60
|
+
await rootStore.updateView({ value, type: props.type });
|
|
59
61
|
};
|
|
60
62
|
</script>
|
|
@@ -7,15 +7,17 @@
|
|
|
7
7
|
</template>
|
|
8
8
|
|
|
9
9
|
<script setup>
|
|
10
|
+
import { useRootStore } from "../../../stores/root";
|
|
10
11
|
import { useNuxtApp, computed } from "#imports";
|
|
11
|
-
const
|
|
12
|
+
const rootStore = useRootStore();
|
|
13
|
+
const { $stores } = useNuxtApp();
|
|
12
14
|
const props = defineProps(["type", "items", "name"]);
|
|
13
15
|
const val = computed({
|
|
14
16
|
get() {
|
|
15
17
|
return $stores[props.type].filters[props.name]?.value || [];
|
|
16
18
|
},
|
|
17
19
|
set(value) {
|
|
18
|
-
return
|
|
20
|
+
return rootStore.updateFilter(props.name, value, props.type);
|
|
19
21
|
}
|
|
20
22
|
});
|
|
21
23
|
</script>
|
|
@@ -3,15 +3,17 @@
|
|
|
3
3
|
</template>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
+
import { useRootStore } from "../../../stores/root";
|
|
6
7
|
import { useNuxtApp, computed } from "#imports";
|
|
8
|
+
const rootStore = useRootStore();
|
|
7
9
|
const props = defineProps(["type", "items", "name"]);
|
|
8
|
-
const { $stores
|
|
10
|
+
const { $stores } = useNuxtApp();
|
|
9
11
|
const val = computed({
|
|
10
12
|
get() {
|
|
11
13
|
return $stores[props.type].filters[props.name]?.value;
|
|
12
14
|
},
|
|
13
15
|
set(value) {
|
|
14
|
-
|
|
16
|
+
rootStore.updateFilter(props.name, value, props.type);
|
|
15
17
|
}
|
|
16
18
|
});
|
|
17
19
|
</script>
|
|
@@ -3,15 +3,17 @@
|
|
|
3
3
|
</template>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
+
import { useRootStore } from "../../../stores/root";
|
|
6
7
|
import { useNuxtApp, computed } from "#imports";
|
|
8
|
+
const rootStore = useRootStore();
|
|
7
9
|
const props = defineProps(["type", "items", "name"]);
|
|
8
|
-
const { $stores
|
|
10
|
+
const { $stores } = useNuxtApp();
|
|
9
11
|
const val = computed({
|
|
10
12
|
get() {
|
|
11
13
|
return $stores[props.type].filters[props.name]?.value;
|
|
12
14
|
},
|
|
13
15
|
set(value) {
|
|
14
|
-
|
|
16
|
+
rootStore.updateFilter(props.name, value, props.type);
|
|
15
17
|
}
|
|
16
18
|
});
|
|
17
19
|
</script>
|
|
@@ -7,15 +7,17 @@
|
|
|
7
7
|
</template>
|
|
8
8
|
|
|
9
9
|
<script setup>
|
|
10
|
+
import { useRootStore } from "../../../stores/root";
|
|
10
11
|
import { useNuxtApp, computed } from "#imports";
|
|
11
|
-
const
|
|
12
|
+
const rootStore = useRootStore();
|
|
13
|
+
const { $stores } = useNuxtApp();
|
|
12
14
|
const props = defineProps(["type", "items", "name"]);
|
|
13
15
|
const val = computed({
|
|
14
16
|
get() {
|
|
15
17
|
return $stores[props.type].filters[props.name]?.value || [];
|
|
16
18
|
},
|
|
17
19
|
set(value) {
|
|
18
|
-
|
|
20
|
+
rootStore.updateFilter(props.name, value, props.type);
|
|
19
21
|
}
|
|
20
22
|
});
|
|
21
23
|
</script>
|
|
@@ -35,12 +35,14 @@
|
|
|
35
35
|
|
|
36
36
|
<script setup>
|
|
37
37
|
import { useDisplay } from "vuetify";
|
|
38
|
+
import { useRootStore } from "../../../stores/root";
|
|
38
39
|
import { capitalize } from "../../../composables/useUtils";
|
|
39
40
|
import { useNuxtApp, onMounted, resolveComponent, useI18n } from "#imports";
|
|
40
41
|
const { smAndDown } = useDisplay();
|
|
41
42
|
const i18n = useI18n();
|
|
42
43
|
const { locale, messages } = useI18n();
|
|
43
|
-
const { $stores
|
|
44
|
+
const { $stores } = useNuxtApp();
|
|
45
|
+
const rootStore = useRootStore();
|
|
44
46
|
const props = defineProps(["type", "expanded"]);
|
|
45
47
|
const ComponentName = (name) => {
|
|
46
48
|
return resolveComponent(
|
|
@@ -63,7 +65,7 @@ const getItems = (name) => {
|
|
|
63
65
|
}));
|
|
64
66
|
};
|
|
65
67
|
onMounted(() => {
|
|
66
|
-
|
|
68
|
+
rootStore.loadRouteQuery(props.type);
|
|
67
69
|
});
|
|
68
70
|
const computeVisibility = (filterItem) => {
|
|
69
71
|
return (
|
|
@@ -78,9 +78,10 @@
|
|
|
78
78
|
</template>
|
|
79
79
|
|
|
80
80
|
<script setup>
|
|
81
|
+
import { useRootStore } from "../../../stores/root";
|
|
81
82
|
import { useRoute, computed, watch } from "#imports";
|
|
82
|
-
const { $rootStore } = useNuxtApp();
|
|
83
83
|
const route = useRoute();
|
|
84
|
+
const rootStore = useRootStore();
|
|
84
85
|
const props = defineProps({
|
|
85
86
|
totalPages: {
|
|
86
87
|
type: Number,
|
|
@@ -176,7 +177,7 @@ const createGap = (pageIndex) => {
|
|
|
176
177
|
};
|
|
177
178
|
};
|
|
178
179
|
const updatePage = (page) => {
|
|
179
|
-
|
|
180
|
+
rootStore.updatePage({ page, type: props.type });
|
|
180
181
|
};
|
|
181
182
|
const getGapPage = (index) => {
|
|
182
183
|
return Math.floor(
|
|
@@ -25,10 +25,12 @@
|
|
|
25
25
|
</template>
|
|
26
26
|
|
|
27
27
|
<script setup>
|
|
28
|
+
import { useRootStore } from "../../../stores/root";
|
|
28
29
|
import { capitalize } from "../../../composables/useUtils";
|
|
29
30
|
import { useNuxtApp, useI18n, resolveComponent, computed } from "#imports";
|
|
30
|
-
const { $stores
|
|
31
|
+
const { $stores } = useNuxtApp();
|
|
31
32
|
const { locale } = useI18n();
|
|
33
|
+
const rootStore = useRootStore();
|
|
32
34
|
const props = defineProps({
|
|
33
35
|
addBtn: {
|
|
34
36
|
type: Boolean,
|
|
@@ -76,7 +78,7 @@ const numberOfPages = computed(() => $stores[props.type].numberOfPages);
|
|
|
76
78
|
const page = computed(() => +$stores[props.type].page);
|
|
77
79
|
const items = computed(() => $stores[props.type].items);
|
|
78
80
|
try {
|
|
79
|
-
await
|
|
81
|
+
await rootStore.update(props.type, locale.value);
|
|
80
82
|
} catch (error) {
|
|
81
83
|
console.log("error fetching update list: ", error);
|
|
82
84
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<v-col cols="12" md="2">
|
|
5
5
|
<MiscAtomsImageContainer
|
|
6
6
|
cover
|
|
7
|
-
:loading="
|
|
7
|
+
:loading="rootStore.loading"
|
|
8
8
|
:src="item.image"
|
|
9
9
|
:ratio="1 / 1"
|
|
10
10
|
/>
|
|
@@ -21,5 +21,6 @@
|
|
|
21
21
|
</template>
|
|
22
22
|
|
|
23
23
|
<script setup>
|
|
24
|
-
|
|
24
|
+
import { useRootStore } from "../../../stores/root";
|
|
25
|
+
const rootStore = useRootStore();
|
|
25
26
|
</script>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
>
|
|
7
7
|
<v-col align-self="center" cols="7" class="text-h6 dense">
|
|
8
8
|
<v-skeleton-loader
|
|
9
|
-
v-if="
|
|
9
|
+
v-if="rootStore.loading || $stores[type].loading"
|
|
10
10
|
type="heading"
|
|
11
11
|
/>
|
|
12
12
|
<template v-else>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
<v-col align-self="center" cols="5" class="dense">
|
|
18
18
|
<v-skeleton-loader
|
|
19
|
-
v-if="
|
|
19
|
+
v-if="rootStore.loading || $stores[type].loading"
|
|
20
20
|
:type="
|
|
21
21
|
['chip', 'chip@2', 'chip@3', 'chip@4', 'chip@4', 'chip@4'][
|
|
22
22
|
['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')
|
|
@@ -36,11 +36,13 @@
|
|
|
36
36
|
|
|
37
37
|
<script setup>
|
|
38
38
|
import { useDisplay } from "vuetify";
|
|
39
|
+
import { useRootStore } from "../../stores/root";
|
|
39
40
|
import { computed, useNuxtApp, useI18n, useLocalePath } from "#imports";
|
|
40
|
-
const { $stores
|
|
41
|
+
const { $stores } = useNuxtApp();
|
|
41
42
|
const { name } = useDisplay();
|
|
42
43
|
const localePath = useLocalePath();
|
|
43
44
|
const { locale } = useI18n();
|
|
45
|
+
const rootStore = useRootStore();
|
|
44
46
|
const props = defineProps({
|
|
45
47
|
item: {
|
|
46
48
|
type: Object,
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
>
|
|
23
23
|
<MiscAtomsImageContainer
|
|
24
24
|
cover
|
|
25
|
-
:loading="
|
|
25
|
+
:loading="rootStore.loading"
|
|
26
26
|
:src="item.image"
|
|
27
27
|
:ratio="1 / 1"
|
|
28
28
|
/>
|
|
@@ -84,10 +84,11 @@
|
|
|
84
84
|
|
|
85
85
|
<script setup>
|
|
86
86
|
import { useDisplay } from "vuetify";
|
|
87
|
+
import { useRootStore } from "../../stores/root";
|
|
87
88
|
import { useRouter, useI18n, useLocalePath } from "#imports";
|
|
88
89
|
const localePath = useLocalePath();
|
|
89
|
-
const { $rootStore } = useNuxtApp();
|
|
90
90
|
const router = useRouter();
|
|
91
|
+
const rootStore = useRootStore();
|
|
91
92
|
const expanded = ref(false);
|
|
92
93
|
const { name, lgAndUp } = useDisplay();
|
|
93
94
|
const { locale } = useI18n();
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
<MiscAtomsImageContainer
|
|
13
13
|
cover
|
|
14
14
|
:src="item.image"
|
|
15
|
-
:loading="
|
|
15
|
+
:loading="rootStore.loading"
|
|
16
16
|
:ratio="1 / 1"
|
|
17
17
|
:link="item.name"
|
|
18
18
|
name="news-slug"
|
|
19
19
|
/>
|
|
20
20
|
</v-col>
|
|
21
21
|
<v-col cols="12" lg="9">
|
|
22
|
-
<v-skeleton-loader v-if="
|
|
22
|
+
<v-skeleton-loader v-if="rootStore.loading" type="heading, text@3" />
|
|
23
23
|
<template v-else>
|
|
24
24
|
<div class="text-h6">
|
|
25
25
|
{{ item.name }}
|
|
@@ -35,9 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
<script setup>
|
|
37
37
|
import { useDisplay } from "vuetify";
|
|
38
|
+
import { useRootStore } from "../../stores/root";
|
|
38
39
|
import { useLocalePath } from "#imports";
|
|
39
|
-
const { $rootStore } = useNuxtApp();
|
|
40
40
|
const localePath = useLocalePath();
|
|
41
|
+
const rootStore = useRootStore();
|
|
41
42
|
const { lgAndUp } = useDisplay();
|
|
42
43
|
const props = defineProps({ item: { type: Object, required: true } });
|
|
43
44
|
</script>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
</v-col>
|
|
18
18
|
<v-col cols="12" md="8" lg="4" class="pl-md-6">
|
|
19
19
|
<v-skeleton-loader
|
|
20
|
-
v-if="
|
|
20
|
+
v-if="rootStore.loading || $stores.news.loading"
|
|
21
21
|
:type="
|
|
22
22
|
[
|
|
23
23
|
'heading, subtitle, text@5, ossein, button',
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
|
|
91
91
|
<v-col v-if="lgAndUp" cols="12" lg="5">
|
|
92
92
|
<v-skeleton-loader
|
|
93
|
-
v-if="
|
|
93
|
+
v-if="rootStore.loading || $stores.news.loading"
|
|
94
94
|
type="text@8, ossein, button"
|
|
95
95
|
/>
|
|
96
96
|
|
|
@@ -133,10 +133,12 @@
|
|
|
133
133
|
|
|
134
134
|
<script setup>
|
|
135
135
|
import { useDisplay } from "vuetify";
|
|
136
|
+
import { useRootStore } from "../../stores/root";
|
|
136
137
|
import { useNuxtApp, useI18n, useLocalePath, computed } from "#imports";
|
|
137
|
-
const { $stores
|
|
138
|
+
const { $stores } = useNuxtApp();
|
|
138
139
|
const { locale } = useI18n();
|
|
139
140
|
const localePath = useLocalePath();
|
|
141
|
+
const rootStore = useRootStore();
|
|
140
142
|
const { name, smAndDown, mdAndDown, mdAndUp, lgAndUp } = useDisplay();
|
|
141
143
|
const eventCategory = computed(() => {
|
|
142
144
|
if (props.item.category) {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
>
|
|
8
8
|
<v-col align-self="center" class="text-h6 pl-2">
|
|
9
9
|
<v-skeleton-loader
|
|
10
|
-
v-if="
|
|
10
|
+
v-if="rootStore.loading || $stores[type].loading"
|
|
11
11
|
type="heading"
|
|
12
12
|
/>
|
|
13
13
|
<template v-else>
|
|
@@ -21,9 +21,11 @@
|
|
|
21
21
|
</template>
|
|
22
22
|
|
|
23
23
|
<script setup>
|
|
24
|
+
import { useRootStore } from "../../stores/root";
|
|
24
25
|
import { useNuxtApp, useLocalePath } from "#imports";
|
|
25
|
-
const { $stores
|
|
26
|
+
const { $stores } = useNuxtApp();
|
|
26
27
|
const localePath = useLocalePath();
|
|
28
|
+
const rootStore = useRootStore();
|
|
27
29
|
const props = defineProps({
|
|
28
30
|
item: {
|
|
29
31
|
type: Object,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<v-skeleton-loader
|
|
4
|
-
v-if="
|
|
4
|
+
v-if="rootStore.loading || $stores.people.loading"
|
|
5
5
|
type="chip"
|
|
6
6
|
/>
|
|
7
7
|
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
<script setup>
|
|
45
45
|
import { useRootStore } from "../../stores/root";
|
|
46
46
|
import { useNuxtApp } from "#imports";
|
|
47
|
-
const
|
|
47
|
+
const rootStore = useRootStore();
|
|
48
|
+
const { $stores } = useNuxtApp();
|
|
48
49
|
const props = defineProps({
|
|
49
50
|
item: {
|
|
50
51
|
type: Object,
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<v-col v-if="lgAndUp" cols="3">
|
|
12
12
|
<MiscAtomsImageContainer
|
|
13
13
|
cover
|
|
14
|
-
:loading="
|
|
14
|
+
:loading="rootStore.loading"
|
|
15
15
|
:src="item.image"
|
|
16
16
|
:ratio="1 / 1"
|
|
17
17
|
:link="item.firstname + item.lastname"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
/>
|
|
20
20
|
</v-col>
|
|
21
21
|
<v-col cols="12" lg="9">
|
|
22
|
-
<v-skeleton-loader v-if="
|
|
22
|
+
<v-skeleton-loader v-if="rootStore.loading" type="heading" />
|
|
23
23
|
<template v-else>
|
|
24
24
|
<div class="text-h6">
|
|
25
25
|
{{ item.firstname + " " + item.lastname }}
|
|
@@ -32,9 +32,10 @@
|
|
|
32
32
|
|
|
33
33
|
<script setup>
|
|
34
34
|
import { useDisplay } from "vuetify";
|
|
35
|
+
import { useRootStore } from "../../stores/root";
|
|
35
36
|
import { useLocalePath } from "#imports";
|
|
36
|
-
const { $rootStore } = useNuxtApp();
|
|
37
37
|
const localePath = useLocalePath();
|
|
38
|
+
const rootStore = useRootStore();
|
|
38
39
|
const { lgAndUp } = useDisplay();
|
|
39
40
|
const props = defineProps({ item: { type: Object, required: true } });
|
|
40
41
|
</script>
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
<MiscAtomsImageContainer
|
|
13
13
|
contain
|
|
14
14
|
:src="item.image"
|
|
15
|
-
:loading="
|
|
15
|
+
:loading="rootStore.loading"
|
|
16
16
|
:ratio="1 / 1"
|
|
17
17
|
:link="item.name"
|
|
18
18
|
name="activities-projects-slug"
|
|
19
19
|
/>
|
|
20
20
|
</v-col>
|
|
21
21
|
<v-col cols="12" lg="9">
|
|
22
|
-
<v-skeleton-loader v-if="
|
|
22
|
+
<v-skeleton-loader v-if="rootStore.loading" type="heading, text@3" />
|
|
23
23
|
<template v-else>
|
|
24
24
|
<div class="text-h6">
|
|
25
25
|
{{ item.name }}
|
|
@@ -35,9 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
<script setup>
|
|
37
37
|
import { useDisplay } from "vuetify";
|
|
38
|
+
import { useRootStore } from "../../stores/root";
|
|
38
39
|
import { useLocalePath } from "#imports";
|
|
39
40
|
const localePath = useLocalePath();
|
|
41
|
+
const rootStore = useRootStore();
|
|
40
42
|
const { lgAndUp } = useDisplay();
|
|
41
|
-
const { $rootStore } = useNuxtApp();
|
|
42
43
|
const props = defineProps({ item: { type: Object, required: true } });
|
|
43
44
|
</script>
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"
|
|
25
25
|
>
|
|
26
26
|
<v-skeleton-loader
|
|
27
|
-
v-if="
|
|
27
|
+
v-if="rootStore.loading"
|
|
28
28
|
type="heading,ossein,text@8,ossein,button,button"
|
|
29
29
|
/>
|
|
30
30
|
|
|
@@ -84,10 +84,11 @@
|
|
|
84
84
|
|
|
85
85
|
<script setup>
|
|
86
86
|
import { useDisplay } from "vuetify";
|
|
87
|
+
import { useRootStore } from "../../stores/root";
|
|
87
88
|
import { useRouter, useLocalePath, useI18n } from "#imports";
|
|
88
89
|
const { locale } = useI18n();
|
|
89
|
-
const { $stores } = useNuxtApp();
|
|
90
90
|
const { name } = useDisplay();
|
|
91
|
+
const rootStore = useRootStore();
|
|
91
92
|
const router = useRouter();
|
|
92
93
|
const localePath = useLocalePath();
|
|
93
94
|
const props = defineProps({
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
<MiscAtomsImageContainer
|
|
13
13
|
contain
|
|
14
14
|
:src="item.image"
|
|
15
|
-
:loading="
|
|
15
|
+
:loading="rootStore.loading"
|
|
16
16
|
:ratio="1 / 1"
|
|
17
17
|
:link="item.name"
|
|
18
18
|
name="activities-publicationss-slug"
|
|
19
19
|
/>
|
|
20
20
|
</v-col>
|
|
21
21
|
<v-col cols="12" lg="9">
|
|
22
|
-
<v-skeleton-loader v-if="
|
|
22
|
+
<v-skeleton-loader v-if="rootStore.loading" type="heading, text@3" />
|
|
23
23
|
<template v-else>
|
|
24
24
|
<div class="text-h6">
|
|
25
25
|
{{ item.name }}
|
|
@@ -35,9 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
<script setup>
|
|
37
37
|
import { useDisplay } from "vuetify";
|
|
38
|
+
import { useRootStore } from "../../stores/root";
|
|
38
39
|
import { useLocalePath } from "#imports";
|
|
39
|
-
const { $rootStore } = useNuxtApp();
|
|
40
40
|
const localePath = useLocalePath();
|
|
41
|
+
const rootStore = useRootStore();
|
|
41
42
|
const { lgAndUp } = useDisplay();
|
|
42
43
|
const props = defineProps({ item: { type: Object, required: true } });
|
|
43
44
|
</script>
|
|
@@ -67,7 +67,7 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
67
67
|
})
|
|
68
68
|
);
|
|
69
69
|
const rootStore = useRootStore();
|
|
70
|
-
nuxtApp.provide("
|
|
70
|
+
nuxtApp.provide("rootStore", rootStore);
|
|
71
71
|
nuxtApp.provide("stores", stores);
|
|
72
72
|
nuxtApp.provide("queries", queries);
|
|
73
73
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const useRootStore: import("pinia").StoreDefinition<"
|
|
1
|
+
export declare const useRootStore: import("pinia").StoreDefinition<"rootStore", Record<string, any>, {}, {
|
|
2
2
|
setLoading(value: boolean, type?: string): void;
|
|
3
3
|
setScrolled(): void;
|
|
4
4
|
loadRouteQuery(type: string): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineStore } from "pinia";
|
|
2
2
|
import SEARCH from "../graphql/list/search.gql";
|
|
3
3
|
import { useNuxtApp, useRouter, useAsyncQuery } from "#imports";
|
|
4
|
-
export const useRootStore = defineStore("
|
|
4
|
+
export const useRootStore = defineStore("rootStore", {
|
|
5
5
|
state: () => ({
|
|
6
6
|
scrolled: import.meta.browser ? window.scrollY > 0 : false,
|
|
7
7
|
loading: false,
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"inscription-gratuite-et-obligatoire": " Free and mandatory registration",
|
|
20
20
|
"inscription-ouverte": "Registration Open",
|
|
21
21
|
"items": {
|
|
22
|
+
"all": "all | all | all",
|
|
22
23
|
"events": "event | event | events",
|
|
23
24
|
"fellow": "fellow | fellow | fellows",
|
|
24
25
|
"fellowships": "fellowship | fellowship | fellowships",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"inscription-gratuite-et-obligatoire": "Enregistrement gratuit et obligatoire",
|
|
20
20
|
"inscription-ouverte": "Inscription ouverte",
|
|
21
21
|
"items": {
|
|
22
|
+
"all": "Tout",
|
|
22
23
|
"events": "événement |événement | événements",
|
|
23
24
|
"fellow": "résident | résident | résidents",
|
|
24
25
|
"fellowships": "programme d'accueil | programme d'accueil | programmes d'accueil",
|
package/package.json
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"license": "AGPL-3.0-only",
|
|
3
3
|
"main": "./dist/module.mjs",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.47",
|
|
5
5
|
"name": "@paris-ias/list",
|
|
6
|
-
"repository":
|
|
7
|
-
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/IEA-Paris/list.git"
|
|
9
|
-
},
|
|
6
|
+
"repository": "IEA-Paris/list",
|
|
10
7
|
"dependencies": {
|
|
11
8
|
"@nuxt/kit": "^3.16.2"
|
|
12
9
|
},
|
|
13
10
|
"description": "Paris IAS List Module",
|
|
14
11
|
"devDependencies": {
|
|
15
12
|
"@mdi/font": "^7.4.47",
|
|
13
|
+
"@nuxt/content": "^2.9.0",
|
|
16
14
|
"@nuxt/devtools": "^2.3.2",
|
|
17
15
|
"@nuxt/eslint": "1.3.0",
|
|
18
16
|
"@nuxt/eslint-config": "^1.3.0",
|