@paris-ias/list 1.0.136 → 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.
- package/dist/module.json +1 -1
- package/dist/runtime/components/actions/DenseItem.vue +64 -0
- package/dist/runtime/components/actions/ExpandedItem.vue +17 -10
- package/dist/runtime/components/actions/RowsItem.vue +57 -7
- package/dist/runtime/components/actions/View.vue +5 -17
- package/dist/runtime/components/affiliation/DenseItem.vue +26 -6
- package/dist/runtime/components/affiliation/ExpandedItem.vue +4 -0
- package/dist/runtime/components/affiliation/RowsItem.vue +27 -7
- package/dist/runtime/components/affiliation/View.vue +4 -4
- package/dist/runtime/components/apps/DenseItem.vue +26 -6
- package/dist/runtime/components/apps/ExpandedItem.vue +5 -1
- package/dist/runtime/components/apps/RowsItem.vue +27 -7
- package/dist/runtime/components/apps/View.vue +4 -4
- package/dist/runtime/components/disciplines/DenseItem.vue +26 -6
- package/dist/runtime/components/disciplines/ExpandedItem.vue +4 -0
- package/dist/runtime/components/disciplines/RowsItem.vue +27 -7
- package/dist/runtime/components/disciplines/View.vue +4 -4
- package/dist/runtime/components/events/Badges.vue +8 -12
- package/dist/runtime/components/events/DenseItem.vue +26 -16
- package/dist/runtime/components/events/ExpandedItem.vue +4 -0
- package/dist/runtime/components/events/RelatedItem.vue +4 -13
- package/dist/runtime/components/events/RowsItem.vue +20 -20
- package/dist/runtime/components/events/SlidingItem.vue +39 -47
- package/dist/runtime/components/events/View.vue +1 -1
- package/dist/runtime/components/fellowships/Badges.vue +15 -11
- package/dist/runtime/components/fellowships/DenseItem.vue +22 -11
- package/dist/runtime/components/fellowships/ExpandedItem.vue +8 -1
- package/dist/runtime/components/fellowships/RowsItem.vue +22 -15
- package/dist/runtime/components/fellowships/View.vue +2 -2
- package/dist/runtime/components/files/DenseItem.vue +26 -6
- package/dist/runtime/components/files/ExpandedItem.vue +4 -0
- package/dist/runtime/components/files/RowsItem.vue +27 -7
- package/dist/runtime/components/files/View.vue +4 -4
- package/dist/runtime/components/list/atoms/FiltersMenu.vue +9 -0
- package/dist/runtime/components/list/atoms/PerPage.vue +3 -2
- package/dist/runtime/components/list/atoms/ResetButton.vue +5 -1
- package/dist/runtime/components/list/atoms/SearchInput.vue +15 -2
- package/dist/runtime/components/list/atoms/SearchString.vue +169 -133
- package/dist/runtime/components/list/atoms/SortMenu.vue +22 -18
- package/dist/runtime/components/list/atoms/ViewMenu.vue +26 -14
- package/dist/runtime/components/list/molecules/Filters.vue +8 -8
- package/dist/runtime/components/list/molecules/Header.vue +10 -19
- package/dist/runtime/components/list/molecules/Pagination.vue +51 -48
- package/dist/runtime/components/list/organisms/List.vue +104 -69
- package/dist/runtime/components/mailing/DenseItem.vue +4 -0
- package/dist/runtime/components/mailing/ExpandedItem.vue +4 -0
- package/dist/runtime/components/mailing/RowsItem.vue +27 -7
- package/dist/runtime/components/mailing/View.vue +4 -4
- package/dist/runtime/components/misc/atoms/ImageContainer.vue +3 -45
- package/dist/runtime/components/misc/molecules/Related.vue +1 -1
- package/dist/runtime/components/news/DenseItem.vue +63 -54
- package/dist/runtime/components/news/ExpandedItem.vue +11 -17
- package/dist/runtime/components/news/RelatedItem.vue +4 -13
- package/dist/runtime/components/news/RowsItem.vue +21 -42
- package/dist/runtime/components/news/View.vue +7 -7
- package/dist/runtime/components/people/DenseItem.vue +16 -20
- package/dist/runtime/components/people/RelatedItem.vue +4 -14
- package/dist/runtime/components/people/RowsItem.vue +14 -23
- package/dist/runtime/components/projects/DenseItem.vue +17 -17
- package/dist/runtime/components/projects/RelatedItem.vue +4 -13
- package/dist/runtime/components/projects/RowsItem.vue +16 -16
- package/dist/runtime/components/projects/View.vue +6 -6
- package/dist/runtime/components/publications/DenseItem.vue +17 -15
- package/dist/runtime/components/publications/RelatedItem.vue +4 -13
- package/dist/runtime/components/publications/RowsItem.vue +18 -18
- package/dist/runtime/components/tags/DenseItem.vue +4 -0
- package/dist/runtime/components/tags/ExpandedItem.vue +4 -0
- package/dist/runtime/components/tags/RowsItem.vue +24 -7
- package/dist/runtime/components/tags/View.vue +4 -4
- package/dist/runtime/components/users/DenseItem.vue +24 -6
- package/dist/runtime/components/users/ExpandedItem.vue +5 -1
- package/dist/runtime/components/users/RowsItem.vue +25 -7
- package/dist/runtime/components/users/View.vue +4 -4
- package/dist/runtime/composables/useUtils.js +1 -1
- package/dist/runtime/plugins/pinia.js +5 -2
- package/dist/runtime/stores/root.d.ts +10 -9
- package/dist/runtime/stores/root.js +83 -119
- package/package.json +3 -4
|
@@ -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(localePath('/activities/events/' + item.slug[locale]))"
|
|
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
|
<MiscAtomsDateStamp
|
|
10
5
|
v-if="item.start"
|
|
11
|
-
:loading="
|
|
6
|
+
:loading="isLoading"
|
|
12
7
|
:date-start="item.start"
|
|
13
8
|
:date-stop="item.stop"
|
|
14
9
|
class="pr-6 mt-md-2"
|
|
@@ -17,14 +12,11 @@
|
|
|
17
12
|
<v-col v-if="mdAndUp" cols="1">
|
|
18
13
|
<MiscAtomsImageContainer
|
|
19
14
|
cover
|
|
20
|
-
:loading="
|
|
15
|
+
:loading="isLoading"
|
|
21
16
|
:src="
|
|
22
17
|
item && item.image && item.image.url ? item.image.url : '/default.png'
|
|
23
18
|
"
|
|
24
19
|
:ratio="1 / 1"
|
|
25
|
-
:name="item.name"
|
|
26
|
-
:slug="item.slug && item.slug[locale]"
|
|
27
|
-
link="events-slug"
|
|
28
20
|
:width="80"
|
|
29
21
|
/>
|
|
30
22
|
</v-col>
|
|
@@ -63,25 +55,26 @@
|
|
|
63
55
|
:value="`${highlightAndTruncate(
|
|
64
56
|
85,
|
|
65
57
|
item.summary,
|
|
66
|
-
$rootStore.search.split(' ')
|
|
58
|
+
$rootStore.search.split(' '),
|
|
67
59
|
)}`"
|
|
68
60
|
/>
|
|
69
61
|
</v-col>
|
|
70
62
|
|
|
71
63
|
<v-col align-self="center" cols="auto">
|
|
72
|
-
<EventsBadges :item />
|
|
64
|
+
<EventsBadges :item :pathPrefix />
|
|
73
65
|
</v-col>
|
|
74
66
|
</v-row>
|
|
75
67
|
</template>
|
|
76
68
|
|
|
77
69
|
<script setup>
|
|
78
|
-
import {
|
|
70
|
+
import { useI18n, useNuxtApp, computed } from "#imports"
|
|
79
71
|
import { useDisplay } from "vuetify"
|
|
72
|
+
import { useRootStore } from "../../stores/root"
|
|
80
73
|
const { $rootStore } = useNuxtApp()
|
|
81
|
-
const { smAndDown, mdAndUp
|
|
74
|
+
const { smAndDown, mdAndUp } = useDisplay()
|
|
82
75
|
|
|
83
76
|
const { locale } = useI18n()
|
|
84
|
-
const
|
|
77
|
+
const rootStore = useRootStore()
|
|
85
78
|
const props = defineProps({
|
|
86
79
|
item: {
|
|
87
80
|
type: Object,
|
|
@@ -91,5 +84,22 @@ const props = defineProps({
|
|
|
91
84
|
type: Number,
|
|
92
85
|
required: true,
|
|
93
86
|
},
|
|
87
|
+
pathPrefix: {
|
|
88
|
+
type: String,
|
|
89
|
+
required: true,
|
|
90
|
+
},
|
|
91
|
+
loading: {
|
|
92
|
+
type: Boolean,
|
|
93
|
+
required: false,
|
|
94
|
+
default: false,
|
|
95
|
+
},
|
|
94
96
|
})
|
|
97
|
+
|
|
98
|
+
const isLoading = computed(() => props.loading)
|
|
95
99
|
</script>
|
|
100
|
+
<!-- <NuxtLink
|
|
101
|
+
v-if="item && item.slug"
|
|
102
|
+
:to="pathPrefix"
|
|
103
|
+
class="text-decoration-none text-black"
|
|
104
|
+
>
|
|
105
|
+
</NuxtLink> -->
|
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-sheet
|
|
3
|
-
:to="
|
|
4
|
-
localePath({
|
|
5
|
-
name: 'activities-events-slug',
|
|
6
|
-
params: { slug: item.name },
|
|
7
|
-
})
|
|
8
|
-
"
|
|
9
|
-
>
|
|
2
|
+
<v-sheet>
|
|
10
3
|
<v-row>
|
|
11
4
|
<v-col v-if="lgAndUp" cols="3">
|
|
12
5
|
<MiscAtomsImageContainer
|
|
13
6
|
cover
|
|
14
7
|
:src="item.image"
|
|
15
8
|
:ratio="1 / 1"
|
|
16
|
-
:link="item.name"
|
|
17
9
|
:loading="rootStore.loading"
|
|
18
|
-
name="activities-events-slug"
|
|
19
10
|
/>
|
|
20
11
|
</v-col>
|
|
21
12
|
<v-col cols="12" lg="9">
|
|
@@ -36,11 +27,11 @@
|
|
|
36
27
|
<script setup>
|
|
37
28
|
import { useDisplay } from "vuetify"
|
|
38
29
|
import { useRootStore } from "../../stores/root"
|
|
39
|
-
import { useLocalePath } from "#imports"
|
|
40
30
|
|
|
41
|
-
const localePath = useLocalePath()
|
|
42
31
|
const rootStore = useRootStore()
|
|
43
32
|
const { lgAndUp } = useDisplay()
|
|
44
33
|
|
|
45
|
-
const props = defineProps({
|
|
34
|
+
const props = defineProps({
|
|
35
|
+
item: { type: Object, required: true },
|
|
36
|
+
})
|
|
46
37
|
</script>
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-divider v-if="index > 0" />
|
|
3
|
+
|
|
3
4
|
<v-row class="py-8 px-6 highlight-on-hover" no-gutters>
|
|
4
5
|
<v-col cols="12" md="1">
|
|
5
6
|
<MiscAtomsDateStamp
|
|
6
7
|
v-if="item.start"
|
|
7
|
-
:loading="
|
|
8
|
+
:loading="isLoading"
|
|
8
9
|
:date-start="item.start"
|
|
9
10
|
:date-stop="item.stop"
|
|
10
11
|
class="pr-6 mt-md-2"
|
|
@@ -14,7 +15,7 @@
|
|
|
14
15
|
<v-row no-gutters>
|
|
15
16
|
<v-col cols="12" class="pr-lg-6">
|
|
16
17
|
<v-skeleton-loader
|
|
17
|
-
v-if="
|
|
18
|
+
v-if="isLoading"
|
|
18
19
|
:type="
|
|
19
20
|
[
|
|
20
21
|
'heading, subtitle, text@6,subtitle, text, ossein, button, button',
|
|
@@ -28,18 +29,9 @@
|
|
|
28
29
|
/>
|
|
29
30
|
|
|
30
31
|
<div v-else>
|
|
31
|
-
<
|
|
32
|
-
v-if="item.name"
|
|
33
|
-
:to="
|
|
34
|
-
localePath({
|
|
35
|
-
name: 'activities-events-slug',
|
|
36
|
-
params: { slug: item.slug[locale] },
|
|
37
|
-
})
|
|
38
|
-
"
|
|
39
|
-
class="text-h4 text-black text-wrap mt-4"
|
|
40
|
-
>
|
|
32
|
+
<div v-if="item.name" class="text-h4 text-black text-wrap mt-4">
|
|
41
33
|
{{ item.name }}
|
|
42
|
-
</
|
|
34
|
+
</div>
|
|
43
35
|
<div class="mt-2 text-h6 text-overline font-weight-black">
|
|
44
36
|
{{ $t("list.filters.events.category." + item.category) }}
|
|
45
37
|
</div>
|
|
@@ -69,7 +61,7 @@
|
|
|
69
61
|
>
|
|
70
62
|
<v-col cols="12">
|
|
71
63
|
<v-skeleton-loader
|
|
72
|
-
v-if="
|
|
64
|
+
v-if="isLoading"
|
|
73
65
|
:type="
|
|
74
66
|
['article, heading, text, heading, text, button, button'][
|
|
75
67
|
['md'].indexOf(name || 'md')
|
|
@@ -86,9 +78,7 @@
|
|
|
86
78
|
<v-col cols="12" md="4">
|
|
87
79
|
<MiscAtomsImageContainer
|
|
88
80
|
cover
|
|
89
|
-
:
|
|
90
|
-
link="activities-events-slug"
|
|
91
|
-
:loading="$stores['events'].loading"
|
|
81
|
+
:loading="isLoading"
|
|
92
82
|
:src="item.image && item.image.url ? item.image : '/default.png'"
|
|
93
83
|
:ratio="1 / 1"
|
|
94
84
|
/>
|
|
@@ -99,11 +89,10 @@
|
|
|
99
89
|
<script setup>
|
|
100
90
|
import { useDisplay } from "vuetify"
|
|
101
91
|
import { useRootStore } from "../../stores/root"
|
|
102
|
-
import { useNuxtApp,
|
|
92
|
+
import { useNuxtApp, computed } from "#imports"
|
|
103
93
|
|
|
104
|
-
const { locale } = useI18n()
|
|
105
94
|
const { name, mdAndDown, lgAndUp } = useDisplay()
|
|
106
|
-
|
|
95
|
+
|
|
107
96
|
const rootStore = useRootStore()
|
|
108
97
|
const { $stores } = useNuxtApp()
|
|
109
98
|
const props = defineProps({
|
|
@@ -115,5 +104,16 @@ const props = defineProps({
|
|
|
115
104
|
type: Number,
|
|
116
105
|
required: true,
|
|
117
106
|
},
|
|
107
|
+
pathPrefix: {
|
|
108
|
+
type: String,
|
|
109
|
+
required: true,
|
|
110
|
+
},
|
|
111
|
+
loading: {
|
|
112
|
+
type: Boolean,
|
|
113
|
+
required: false,
|
|
114
|
+
default: false,
|
|
115
|
+
},
|
|
118
116
|
})
|
|
117
|
+
|
|
118
|
+
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
119
119
|
</script>
|
|
@@ -1,65 +1,57 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class="d-flex flex-column"
|
|
12
|
-
:style="
|
|
13
|
-
'min-width:' +
|
|
14
|
-
[250, 300, 350, 380, 430, 460][
|
|
15
|
-
['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')
|
|
16
|
-
] +
|
|
17
|
-
'px!important;'
|
|
18
|
-
"
|
|
19
|
-
>
|
|
20
|
-
<MiscAtomsImageContainer
|
|
21
|
-
cover
|
|
22
|
-
:ratio="1"
|
|
23
|
-
:src="item.image"
|
|
24
|
-
link="activities-events-slug"
|
|
25
|
-
:slug="item.id"
|
|
2
|
+
<NuxtLink
|
|
3
|
+
v-if="item && item.slug"
|
|
4
|
+
:to="pathPrefix"
|
|
5
|
+
class="text-decoration-none text-black"
|
|
6
|
+
>
|
|
7
|
+
<v-sheet v-motion class="d-flex sliding-item flex-md-row flex-column px-6">
|
|
8
|
+
<MiscAtomsDateStamp
|
|
9
|
+
:date-start="item.start"
|
|
10
|
+
:date-stop="item.stop"
|
|
26
11
|
:loading="loading"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
name: 'activities-events-slug',
|
|
30
|
-
params: { slug: item.slug[locale] },
|
|
31
|
-
})
|
|
32
|
-
"
|
|
33
|
-
style="cursor: pointer"
|
|
12
|
+
class="mr-4 mb-6 mb-md-0"
|
|
13
|
+
style="min-width: 70px"
|
|
34
14
|
/>
|
|
35
|
-
<
|
|
36
|
-
class="
|
|
37
|
-
:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
15
|
+
<div
|
|
16
|
+
class="d-flex flex-column"
|
|
17
|
+
:style="
|
|
18
|
+
'min-width:' +
|
|
19
|
+
[250, 300, 350, 380, 430, 460][
|
|
20
|
+
['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')
|
|
21
|
+
] +
|
|
22
|
+
'px!important;'
|
|
42
23
|
"
|
|
43
24
|
>
|
|
44
|
-
<
|
|
45
|
-
|
|
25
|
+
<MiscAtomsImageContainer
|
|
26
|
+
cover
|
|
27
|
+
:ratio="1"
|
|
28
|
+
:src="item.image"
|
|
29
|
+
:loading="loading"
|
|
30
|
+
/>
|
|
31
|
+
<div
|
|
32
|
+
class="mt-6 pl-0 text-h6 text-md-h5 font-weight-medium sliding-item-title cursor-pointer"
|
|
33
|
+
>
|
|
34
|
+
<div class="text-overline text-uppercase">
|
|
35
|
+
{{ $t(item.category) }}
|
|
36
|
+
</div>
|
|
37
|
+
{{ item.name }}
|
|
46
38
|
</div>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
</v-sheet>
|
|
39
|
+
</div>
|
|
40
|
+
</v-sheet></NuxtLink
|
|
41
|
+
>
|
|
51
42
|
</template>
|
|
52
43
|
<script setup>
|
|
53
44
|
import { useDisplay } from "vuetify"
|
|
54
|
-
import { useLocalePath, useI18n } from "#imports"
|
|
55
|
-
const { locale } = useI18n()
|
|
56
45
|
|
|
57
46
|
const { name } = useDisplay()
|
|
58
|
-
const localePath = useLocalePath()
|
|
59
47
|
|
|
60
48
|
defineProps({
|
|
61
49
|
item: { type: Object, required: true },
|
|
62
50
|
loading: { type: Boolean, required: true, default: false },
|
|
51
|
+
pathPrefix: {
|
|
52
|
+
type: String,
|
|
53
|
+
required: true,
|
|
54
|
+
},
|
|
63
55
|
})
|
|
64
56
|
</script>
|
|
65
57
|
<style lang="scss"></style>
|
|
@@ -330,7 +330,7 @@ const panel = ref(["presentation"])
|
|
|
330
330
|
|
|
331
331
|
function redirectToMap(long, lat) {
|
|
332
332
|
router.push(
|
|
333
|
-
`https://www.openstreetmap.org/?mlat=${lat}&mlon=${long}#map=19/${lat}/${long}
|
|
333
|
+
`https://www.openstreetmap.org/?mlat=${lat}&mlon=${long}#map=19/${lat}/${long}`,
|
|
334
334
|
)
|
|
335
335
|
}
|
|
336
336
|
</script>
|
|
@@ -23,29 +23,33 @@
|
|
|
23
23
|
</template>
|
|
24
24
|
|
|
25
25
|
<script setup>
|
|
26
|
-
import { getLocalizedDate } from "../../composables/useUtils"
|
|
27
|
-
import { computed } from "#imports"
|
|
26
|
+
import { getLocalizedDate } from "../../composables/useUtils"
|
|
27
|
+
import { computed } from "#imports"
|
|
28
28
|
|
|
29
29
|
const props = defineProps({
|
|
30
30
|
item: { type: Object, required: true },
|
|
31
31
|
view: { type: Boolean, required: false, default: false },
|
|
32
|
-
|
|
32
|
+
pathPrefix: {
|
|
33
|
+
type: String,
|
|
34
|
+
required: true,
|
|
35
|
+
},
|
|
36
|
+
})
|
|
33
37
|
|
|
34
38
|
const registrationStatus = computed(() => {
|
|
35
|
-
const currentDate = new Date()
|
|
36
|
-
const startDate = new Date(props.item.applicationStart)
|
|
37
|
-
const endDate = new Date(props.item.applicationStop)
|
|
39
|
+
const currentDate = new Date()
|
|
40
|
+
const startDate = new Date(props.item.applicationStart)
|
|
41
|
+
const endDate = new Date(props.item.applicationStop)
|
|
38
42
|
switch (true) {
|
|
39
43
|
case currentDate < startDate:
|
|
40
|
-
return 0
|
|
44
|
+
return 0
|
|
41
45
|
case currentDate > startDate && currentDate < endDate:
|
|
42
|
-
return 1
|
|
46
|
+
return 1
|
|
43
47
|
case currentDate > startDate && currentDate > endDate:
|
|
44
|
-
return 2
|
|
48
|
+
return 2
|
|
45
49
|
default:
|
|
46
|
-
return false
|
|
50
|
+
return false
|
|
47
51
|
}
|
|
48
|
-
})
|
|
52
|
+
})
|
|
49
53
|
</script>
|
|
50
54
|
|
|
51
55
|
<style lang="scss" scoped></style>
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-row
|
|
3
|
-
v-ripple
|
|
4
|
-
no-gutters
|
|
5
|
-
class="cursor-pointer highlight-on-hover"
|
|
6
|
-
@click="
|
|
7
|
-
$router.push(localePath('/activities/fellowships/' + item.slug[locale]))
|
|
8
|
-
"
|
|
9
|
-
>
|
|
2
|
+
<v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover">
|
|
10
3
|
<v-col align-self="center" cols="8" class="text-h5 dense">
|
|
4
|
+
<v-skeleton-loader v-if="isLoading" type="heading" />
|
|
11
5
|
<div
|
|
6
|
+
v-else
|
|
12
7
|
v-html="
|
|
13
8
|
$rootStore.search.length
|
|
14
9
|
? highlightAndTruncate(300, item.name, $rootStore.search.split(' '))
|
|
@@ -18,7 +13,9 @@
|
|
|
18
13
|
<FellowshipsBadges :item="item" />
|
|
19
14
|
</v-col>
|
|
20
15
|
<v-col align-self="center" cols="4">
|
|
16
|
+
<v-skeleton-loader v-if="isLoading" type="chip@3" class="mt-2" />
|
|
21
17
|
<MiscMoleculesChipContainer
|
|
18
|
+
v-else
|
|
22
19
|
:items="[
|
|
23
20
|
$t('list.filters.fellowships.fellowshipType.' + item.fellowshipType),
|
|
24
21
|
...(props.item && props.item.disciplines
|
|
@@ -32,10 +29,11 @@
|
|
|
32
29
|
</template>
|
|
33
30
|
|
|
34
31
|
<script setup>
|
|
35
|
-
import {
|
|
32
|
+
import { useNuxtApp } from "#imports"
|
|
33
|
+
import { useRootStore } from "../../stores/root"
|
|
34
|
+
import { computed } from "#imports"
|
|
36
35
|
const { $rootStore } = useNuxtApp()
|
|
37
|
-
|
|
38
|
-
const localePath = useLocalePath()
|
|
36
|
+
|
|
39
37
|
const props = defineProps({
|
|
40
38
|
item: {
|
|
41
39
|
type: Object,
|
|
@@ -45,5 +43,18 @@ const props = defineProps({
|
|
|
45
43
|
type: Number,
|
|
46
44
|
required: true,
|
|
47
45
|
},
|
|
46
|
+
|
|
47
|
+
pathPrefix: {
|
|
48
|
+
type: String,
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
loading: {
|
|
52
|
+
type: Boolean,
|
|
53
|
+
required: false,
|
|
54
|
+
default: false,
|
|
55
|
+
},
|
|
48
56
|
})
|
|
57
|
+
|
|
58
|
+
const rootStore = useRootStore()
|
|
59
|
+
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
49
60
|
</script>
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-col cols="12" md="6" class="highlight-on-hover">
|
|
3
3
|
<div v-ripple class="border-thin pa-6">
|
|
4
|
-
<FellowshipsBadges :item
|
|
4
|
+
<FellowshipsBadges :item :pathPrefix />
|
|
5
5
|
<div class="d-flex">
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
localePath({
|
|
9
|
-
name: 'activities-fellowships-slug',
|
|
10
|
-
params: { slug: item.slug[locale] },
|
|
11
|
-
})
|
|
12
|
-
"
|
|
13
|
-
class="text-h4 text-black text-wrap mt-4 pb-4"
|
|
14
|
-
>
|
|
6
|
+
<v-skeleton-loader v-if="isLoading" type="heading" />
|
|
7
|
+
<div v-else class="text-h4 text-black text-wrap mt-4 pb-4">
|
|
15
8
|
{{ item.name }}
|
|
16
|
-
</
|
|
9
|
+
</div>
|
|
17
10
|
</div>
|
|
18
11
|
<div
|
|
19
12
|
class="text-wrap clamped-text d-flex"
|
|
@@ -24,9 +17,12 @@
|
|
|
24
17
|
]
|
|
25
18
|
"
|
|
26
19
|
>
|
|
27
|
-
<
|
|
20
|
+
<v-skeleton-loader v-if="isLoading" type="text@4" />
|
|
21
|
+
<MDC v-else-if="item.description" :value="item.description" />
|
|
28
22
|
</div>
|
|
23
|
+
<v-skeleton-loader v-if="isLoading" type="chip@3" class="mt-2" />
|
|
29
24
|
<MiscMoleculesChipContainer
|
|
25
|
+
v-else
|
|
30
26
|
:items="[
|
|
31
27
|
$t('list.filters.fellowships.fellowshipType.' + item.fellowshipType),
|
|
32
28
|
...(props.item && props.item.disciplines
|
|
@@ -41,11 +37,10 @@
|
|
|
41
37
|
|
|
42
38
|
<script setup>
|
|
43
39
|
import { useDisplay } from "vuetify"
|
|
44
|
-
import {
|
|
40
|
+
import { computed } from "#imports"
|
|
41
|
+
import { useRootStore } from "../../stores/root"
|
|
45
42
|
|
|
46
43
|
const { name } = useDisplay()
|
|
47
|
-
const localePath = useLocalePath()
|
|
48
|
-
const { locale } = useI18n()
|
|
49
44
|
|
|
50
45
|
const props = defineProps({
|
|
51
46
|
item: {
|
|
@@ -56,7 +51,19 @@ const props = defineProps({
|
|
|
56
51
|
type: Number,
|
|
57
52
|
required: true,
|
|
58
53
|
},
|
|
54
|
+
pathPrefix: {
|
|
55
|
+
type: String,
|
|
56
|
+
required: true,
|
|
57
|
+
},
|
|
58
|
+
loading: {
|
|
59
|
+
type: Boolean,
|
|
60
|
+
required: false,
|
|
61
|
+
default: false,
|
|
62
|
+
},
|
|
59
63
|
})
|
|
64
|
+
|
|
65
|
+
const rootStore = useRootStore()
|
|
66
|
+
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
60
67
|
</script>
|
|
61
68
|
|
|
62
69
|
<style lang="scss"></style>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<!-- FELLOWSHIP IMAGE -->
|
|
11
11
|
<MiscAtomsImageContainer
|
|
12
12
|
contain
|
|
13
|
-
:loading
|
|
13
|
+
:loading="loading"
|
|
14
14
|
:src="item.image"
|
|
15
15
|
:ratio="1 / 1"
|
|
16
16
|
/>
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
:items="item.fellows || []"
|
|
132
132
|
type="people"
|
|
133
133
|
lazy
|
|
134
|
-
:loading
|
|
134
|
+
:loading="loading"
|
|
135
135
|
>
|
|
136
136
|
<div :class="mdAndUp ? 'text-h5' : 'text-h6'">
|
|
137
137
|
{{ $t("this-fellowship-alumni") }}
|
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
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="avatar, text@6" />
|
|
9
|
+
<template v-else>
|
|
10
|
+
<div class="text-h6">{{ item.name || item.filename }}</div>
|
|
11
|
+
<div v-if="item.description" class="text-body-2 mt-1">
|
|
12
|
+
<MDC :value="item.description" />
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
</v-col>
|
|
16
|
+
</v-row>
|
|
17
|
+
<v-divider />
|
|
3
18
|
</template>
|
|
4
19
|
|
|
5
20
|
<script setup>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
21
|
+
import { computed } from "#imports"
|
|
22
|
+
import { useRootStore } from "../../stores/root"
|
|
23
|
+
|
|
24
|
+
const rootStore = useRootStore()
|
|
25
|
+
const props = defineProps({
|
|
26
|
+
item: { type: Object, required: true },
|
|
27
|
+
pathPrefix: { type: String, required: true },
|
|
28
|
+
loading: { type: Boolean, default: false },
|
|
11
29
|
})
|
|
30
|
+
|
|
31
|
+
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
12
32
|
</script>
|
|
13
33
|
|
|
14
34
|
<style></style>
|
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
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="avatar, text@8, button" />
|
|
9
|
+
<template v-else>
|
|
10
|
+
<div class="text-h6">{{ item.name || item.filename }}</div>
|
|
11
|
+
<div v-if="item.description" class="mt-2">
|
|
12
|
+
<MDC :value="item.description" />
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
</v-col>
|
|
16
|
+
</v-row>
|
|
17
|
+
<v-divider />
|
|
3
18
|
</template>
|
|
4
19
|
|
|
5
20
|
<script setup>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
21
|
+
import { computed } from "#imports"
|
|
22
|
+
import { useRootStore } from "../../stores/root"
|
|
23
|
+
|
|
24
|
+
const rootStore = useRootStore()
|
|
25
|
+
const props = defineProps({
|
|
26
|
+
item: { type: Object, required: true },
|
|
27
|
+
pathPrefix: { type: String, required: true },
|
|
28
|
+
loading: { type: Boolean, default: false },
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
12
32
|
</script>
|
|
13
33
|
|
|
14
34
|
<style></style>
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
</template>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
-
import { useNuxtApp } from "#imports"
|
|
6
|
+
import { useNuxtApp } from "#imports"
|
|
7
7
|
|
|
8
|
-
const { $stores } = useNuxtApp()
|
|
8
|
+
const { $stores } = useNuxtApp()
|
|
9
9
|
defineProps({
|
|
10
10
|
item: {
|
|
11
11
|
type: Object,
|
|
@@ -16,7 +16,7 @@ defineProps({
|
|
|
16
16
|
required: false,
|
|
17
17
|
default: false,
|
|
18
18
|
},
|
|
19
|
-
})
|
|
19
|
+
})
|
|
20
20
|
|
|
21
|
-
$stores.files.loading = false
|
|
21
|
+
$stores.files.loading = false
|
|
22
22
|
</script>
|