@paris-ias/list 1.0.190 → 1.0.192
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/View.vue +4 -2
- package/dist/runtime/components/fellowships/Badges.vue +4 -1
- package/dist/runtime/components/fellowships/DenseItem.vue +46 -9
- package/dist/runtime/components/fellowships/RegisterModal.vue +2 -2
- package/dist/runtime/components/list/molecules/GlobalSearchInput.vue +22 -8
- package/dist/runtime/components/list/organisms/Results.vue +1 -0
- package/dist/runtime/components/misc/atoms/Socials.vue +42 -38
- package/dist/runtime/components/news/View.vue +1 -1
- package/dist/runtime/components/people/View.vue +2 -0
- package/dist/runtime/components/projects/View.vue +1 -1
- package/dist/runtime/components/publications/View.vue +2 -2
- package/package.json +2 -2
package/dist/module.json
CHANGED
|
@@ -34,7 +34,9 @@
|
|
|
34
34
|
|
|
35
35
|
<template v-else>
|
|
36
36
|
<div class="d-flex align-center flex-column">
|
|
37
|
-
<div
|
|
37
|
+
<div
|
|
38
|
+
class="d-flex text-center text-wrap text-h4 text-md-h3 text-black"
|
|
39
|
+
>
|
|
38
40
|
{{ item.name }}
|
|
39
41
|
</div>
|
|
40
42
|
|
|
@@ -165,7 +167,7 @@
|
|
|
165
167
|
</v-row>
|
|
166
168
|
</v-col>
|
|
167
169
|
|
|
168
|
-
<v-col v-if="xs"
|
|
170
|
+
<v-col v-if="xs" cols="12">
|
|
169
171
|
<MiscAtomsImageContainer
|
|
170
172
|
cover
|
|
171
173
|
:src="item.image.url ? item.image : '/default.png'"
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
class="mr-2"
|
|
14
14
|
/>
|
|
15
15
|
|
|
16
|
-
<div
|
|
16
|
+
<div
|
|
17
|
+
v-else-if="registrationStatus === 2"
|
|
18
|
+
class="my-2 text-caption text-md-overline"
|
|
19
|
+
>
|
|
17
20
|
<v-icon class="text-grey" size="x-large"> mdi-circle-medium </v-icon>
|
|
18
21
|
{{
|
|
19
22
|
$t("applications-closed-since-0", [
|
|
@@ -2,12 +2,26 @@
|
|
|
2
2
|
<v-row
|
|
3
3
|
v-ripple
|
|
4
4
|
no-gutters
|
|
5
|
-
class="cursor-pointer highlight-on-hover pt-2 pl-2"
|
|
5
|
+
class="cursor-pointer highlight-on-hover pt-2 pl-md-2"
|
|
6
6
|
>
|
|
7
7
|
<v-col
|
|
8
|
-
|
|
9
|
-
cols="
|
|
10
|
-
class="
|
|
8
|
+
v-if="mdAndUp"
|
|
9
|
+
cols="1"
|
|
10
|
+
class="align-center"
|
|
11
|
+
:offset="name.startsWith('search') ? 1 : 0"
|
|
12
|
+
>
|
|
13
|
+
<MiscAtomsImageContainer
|
|
14
|
+
cover
|
|
15
|
+
:loading="loading"
|
|
16
|
+
:src="item?.image?.url || '/default.png'"
|
|
17
|
+
:ratio="1 / 1"
|
|
18
|
+
:width="100"
|
|
19
|
+
/>
|
|
20
|
+
</v-col>
|
|
21
|
+
|
|
22
|
+
<v-col
|
|
23
|
+
:cols="mdAndUp ? 8 : undefined"
|
|
24
|
+
class="text-h5 dense d-flex flex-column ml-md-2"
|
|
11
25
|
:offset="name.startsWith('search') ? 1 : 0"
|
|
12
26
|
>
|
|
13
27
|
<v-skeleton-loader
|
|
@@ -25,16 +39,35 @@
|
|
|
25
39
|
"
|
|
26
40
|
/>
|
|
27
41
|
<FellowshipsBadges :item="item" :loading="loading" />
|
|
42
|
+
|
|
43
|
+
<template v-if="mdAndDown">
|
|
44
|
+
<v-skeleton-loader
|
|
45
|
+
v-if="loading"
|
|
46
|
+
type="chip"
|
|
47
|
+
width="260"
|
|
48
|
+
class="mt-2"
|
|
49
|
+
/>
|
|
50
|
+
<MiscMoleculesChipContainer
|
|
51
|
+
v-else
|
|
52
|
+
:items="[
|
|
53
|
+
$t(
|
|
54
|
+
'list.filters.fellowships.fellowshipType.' + item.fellowshipType,
|
|
55
|
+
),
|
|
56
|
+
...(props.item?.disciplines?.map((discipline) => discipline.name) ??
|
|
57
|
+
[]),
|
|
58
|
+
]"
|
|
59
|
+
/>
|
|
60
|
+
</template>
|
|
28
61
|
</v-col>
|
|
29
|
-
|
|
62
|
+
|
|
63
|
+
<v-col v-if="mdAndUp" class="d-flex flex-column">
|
|
30
64
|
<v-skeleton-loader v-if="loading" type="chip" width="260" class="mt-2" />
|
|
31
65
|
<MiscMoleculesChipContainer
|
|
32
66
|
v-else
|
|
33
67
|
:items="[
|
|
34
68
|
$t('list.filters.fellowships.fellowshipType.' + item.fellowshipType),
|
|
35
|
-
...(props.item
|
|
36
|
-
|
|
37
|
-
: []),
|
|
69
|
+
...(props.item?.disciplines?.map((discipline) => discipline.name) ??
|
|
70
|
+
[]),
|
|
38
71
|
]"
|
|
39
72
|
class="mt-2"
|
|
40
73
|
/>
|
|
@@ -43,12 +76,16 @@
|
|
|
43
76
|
</template>
|
|
44
77
|
|
|
45
78
|
<script setup>
|
|
79
|
+
import { useDisplay } from "vuetify"
|
|
46
80
|
import { useNuxtApp, useRoute, computed } from "#imports"
|
|
47
81
|
import { highlightAndTruncate } from "../../composables/useUtils"
|
|
48
82
|
const { $rootStore, $stores } = useNuxtApp()
|
|
49
83
|
const { name } = useRoute()
|
|
84
|
+
const { mdAndUp, mdAndDown } = useDisplay()
|
|
50
85
|
const searchQuery = computed(() =>
|
|
51
|
-
name.startsWith(
|
|
86
|
+
name.startsWith("search")
|
|
87
|
+
? $rootStore.search
|
|
88
|
+
: $stores["fellowships"].search || "",
|
|
52
89
|
)
|
|
53
90
|
const props = defineProps({
|
|
54
91
|
item: {
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
</template>
|
|
34
34
|
|
|
35
35
|
<script setup>
|
|
36
|
-
import { getLocalizedDate } from "../../composables/useUtils"
|
|
36
|
+
import { getLocalizedDate } from "../../composables/useUtils"
|
|
37
37
|
|
|
38
38
|
const props = defineProps({
|
|
39
39
|
item: { type: Object, required: true },
|
|
40
40
|
view: { type: Boolean, required: false, default: false },
|
|
41
|
-
})
|
|
41
|
+
})
|
|
42
42
|
</script>
|
|
@@ -136,20 +136,34 @@ const props = defineProps({
|
|
|
136
136
|
type: Boolean,
|
|
137
137
|
default: false,
|
|
138
138
|
},
|
|
139
|
+
filterOrder: {
|
|
140
|
+
type: Array,
|
|
141
|
+
default: () => [],
|
|
142
|
+
},
|
|
139
143
|
})
|
|
140
144
|
|
|
141
145
|
// Filter dropdown state
|
|
142
146
|
const filterMenuOpen = ref(false)
|
|
143
147
|
|
|
144
148
|
// Filter options
|
|
145
|
-
const
|
|
146
|
-
{ value: "people", label: capitalize(t("items.people", 2)) },
|
|
147
|
-
{ value: "events", label: capitalize(t("items.events", 2)) },
|
|
148
|
-
{ value: "news", label: capitalize(t("items.news", 2)) },
|
|
149
|
-
{ value: "publications", label: capitalize(t("items.publications", 2)) },
|
|
150
|
-
{ value: "fellowships", label: capitalize(t("items.fellowships", 2)) },
|
|
151
|
-
{ value: "projects", label: capitalize(t("items.projects", 2)) },
|
|
152
|
-
|
|
149
|
+
const allFilterOptions = computed(() => ({
|
|
150
|
+
people: { value: "people", label: capitalize(t("items.people", 2)) },
|
|
151
|
+
events: { value: "events", label: capitalize(t("items.events", 2)) },
|
|
152
|
+
news: { value: "news", label: capitalize(t("items.news", 2)) },
|
|
153
|
+
publications: { value: "publications", label: capitalize(t("items.publications", 2)) },
|
|
154
|
+
fellowships: { value: "fellowships", label: capitalize(t("items.fellowships", 2)) },
|
|
155
|
+
projects: { value: "projects", label: capitalize(t("items.projects", 2)) },
|
|
156
|
+
}))
|
|
157
|
+
|
|
158
|
+
const filterOptions = computed(() => {
|
|
159
|
+
const map = allFilterOptions.value
|
|
160
|
+
if (props.filterOrder.length > 0) {
|
|
161
|
+
const ordered = props.filterOrder.filter((k) => map[k]).map((k) => map[k])
|
|
162
|
+
const rest = Object.values(map).filter((o) => !props.filterOrder.includes(o.value))
|
|
163
|
+
return [...ordered, ...rest]
|
|
164
|
+
}
|
|
165
|
+
return Object.values(map)
|
|
166
|
+
})
|
|
153
167
|
|
|
154
168
|
// Toggle filter selection
|
|
155
169
|
const toggleFilter = (option) => {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<v-row no-gutters>
|
|
3
3
|
<v-col>
|
|
4
4
|
<template v-for="(value, key, index) in socials" :key="key + value">
|
|
5
|
-
<v-tooltip v-if="value" :location="location">
|
|
5
|
+
<v-tooltip v-if="value && key !== '__typename'" :location="location">
|
|
6
6
|
<template #activator="{ props }">
|
|
7
7
|
<v-btn
|
|
8
8
|
tile
|
|
@@ -11,11 +11,15 @@
|
|
|
11
11
|
:href="getSocialId(key, value)"
|
|
12
12
|
:color="dark ? 'transparent' : 'white'"
|
|
13
13
|
flat
|
|
14
|
+
class="pl-0"
|
|
14
15
|
>
|
|
15
16
|
<v-icon :color="dark ? 'white' : 'black'">
|
|
16
17
|
{{ getProfileIcon(key) }}</v-icon
|
|
17
18
|
>
|
|
18
|
-
<div
|
|
19
|
+
<div
|
|
20
|
+
v-if="labelled"
|
|
21
|
+
class="text-uppercase text-caption text-md-button ml-3"
|
|
22
|
+
>
|
|
19
23
|
{{ key }}
|
|
20
24
|
</div>
|
|
21
25
|
</v-btn>
|
|
@@ -29,11 +33,11 @@
|
|
|
29
33
|
</template>
|
|
30
34
|
|
|
31
35
|
<script setup>
|
|
32
|
-
import { useAttrs, mergeProps } from "vue"
|
|
33
|
-
import { useDisplay } from "vuetify"
|
|
36
|
+
import { useAttrs, mergeProps } from "vue"
|
|
37
|
+
import { useDisplay } from "vuetify"
|
|
34
38
|
|
|
35
|
-
const attrs = useAttrs()
|
|
36
|
-
const { name } = useDisplay()
|
|
39
|
+
const attrs = useAttrs()
|
|
40
|
+
const { name } = useDisplay()
|
|
37
41
|
|
|
38
42
|
const props = defineProps({
|
|
39
43
|
socials: {
|
|
@@ -52,75 +56,75 @@ const props = defineProps({
|
|
|
52
56
|
type: Boolean,
|
|
53
57
|
default: false,
|
|
54
58
|
},
|
|
55
|
-
})
|
|
59
|
+
})
|
|
56
60
|
|
|
57
61
|
const getSocialId = (name, id) => {
|
|
58
62
|
switch (name) {
|
|
59
63
|
case "idRef":
|
|
60
|
-
return `https://www.idref.fr/${id}
|
|
64
|
+
return `https://www.idref.fr/${id}`
|
|
61
65
|
case "mendeley":
|
|
62
|
-
return `https://www.mendeley.com/${id}
|
|
66
|
+
return `https://www.mendeley.com/${id}`
|
|
63
67
|
case "linkedin":
|
|
64
|
-
return `https://www.linkedin.com/company/${id}
|
|
68
|
+
return `https://www.linkedin.com/company/${id}`
|
|
65
69
|
case "twitter":
|
|
66
|
-
return `https://x.com/${id}
|
|
70
|
+
return `https://x.com/${id}`
|
|
67
71
|
case "orcid":
|
|
68
|
-
return `https://orcid.org/${id}
|
|
72
|
+
return `https://orcid.org/${id}`
|
|
69
73
|
case "scholar":
|
|
70
|
-
return `https://scholar.google.com/${id}
|
|
74
|
+
return `https://scholar.google.com/${id}`
|
|
71
75
|
case "wikipedia":
|
|
72
|
-
return `https://fr.wikipedia.org/${id}
|
|
76
|
+
return `https://fr.wikipedia.org/${id}`
|
|
73
77
|
case "researchgate":
|
|
74
|
-
return `https://www.researchgate.net/${id}
|
|
78
|
+
return `https://www.researchgate.net/${id}`
|
|
75
79
|
case "youtube":
|
|
76
|
-
return `https://www.youtube.com/${id}
|
|
80
|
+
return `https://www.youtube.com/${id}`
|
|
77
81
|
case "facebook":
|
|
78
|
-
return `https://www.facebook.com/pages/${id}
|
|
82
|
+
return `https://www.facebook.com/pages/${id}`
|
|
79
83
|
case "instagram":
|
|
80
|
-
return `https://www.instagram.com/${id}
|
|
84
|
+
return `https://www.instagram.com/${id}`
|
|
81
85
|
case "github":
|
|
82
|
-
return `https://gitbub.com/${id}
|
|
86
|
+
return `https://gitbub.com/${id}`
|
|
83
87
|
case "rss":
|
|
84
|
-
return ""
|
|
88
|
+
return ""
|
|
85
89
|
case "website":
|
|
86
|
-
return ""
|
|
90
|
+
return ""
|
|
87
91
|
}
|
|
88
|
-
}
|
|
92
|
+
}
|
|
89
93
|
|
|
90
94
|
const getProfileIcon = (name) => {
|
|
91
95
|
switch (name) {
|
|
92
96
|
case "idRef":
|
|
93
|
-
return "mdi-account-plus-outline"
|
|
97
|
+
return "mdi-account-plus-outline"
|
|
94
98
|
case "mendeley":
|
|
95
|
-
return "mdi-book"
|
|
99
|
+
return "mdi-book"
|
|
96
100
|
case "bluesky":
|
|
97
|
-
return "mdi-cloud"
|
|
101
|
+
return "mdi-cloud"
|
|
98
102
|
case "linkedin":
|
|
99
|
-
return "mdi-linkedin"
|
|
103
|
+
return "mdi-linkedin"
|
|
100
104
|
case "twitter":
|
|
101
|
-
return "mdi-twitter"
|
|
105
|
+
return "mdi-twitter"
|
|
102
106
|
case "orcid":
|
|
103
|
-
return "mdi-account"
|
|
107
|
+
return "mdi-account"
|
|
104
108
|
case "scholar":
|
|
105
|
-
return "mdi-google"
|
|
109
|
+
return "mdi-google"
|
|
106
110
|
case "wikipedia":
|
|
107
|
-
return "mdi-wikipedia"
|
|
111
|
+
return "mdi-wikipedia"
|
|
108
112
|
case "researchgate":
|
|
109
|
-
return "mdi-account"
|
|
113
|
+
return "mdi-account"
|
|
110
114
|
case "youtube":
|
|
111
|
-
return "mdi-youtube"
|
|
115
|
+
return "mdi-youtube"
|
|
112
116
|
case "facebook":
|
|
113
|
-
return "mdi-facebook"
|
|
117
|
+
return "mdi-facebook"
|
|
114
118
|
case "instagram":
|
|
115
|
-
return "mdi-instagram"
|
|
119
|
+
return "mdi-instagram"
|
|
116
120
|
case "github":
|
|
117
|
-
return "mdi-github"
|
|
121
|
+
return "mdi-github"
|
|
118
122
|
case "rss":
|
|
119
|
-
return "mdi-rss"
|
|
123
|
+
return "mdi-rss"
|
|
120
124
|
case "website":
|
|
121
|
-
return "mdi-web"
|
|
125
|
+
return "mdi-web"
|
|
122
126
|
}
|
|
123
|
-
}
|
|
127
|
+
}
|
|
124
128
|
</script>
|
|
125
129
|
|
|
126
130
|
<style lang="scss"></style>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<div v-else class="d-flex align-center flex-column mt-12">
|
|
34
34
|
<div
|
|
35
35
|
v-if="item && item.name"
|
|
36
|
-
class="d-flex text-center text-wrap text-h3 text-black"
|
|
36
|
+
class="d-flex text-center text-wrap text-h4 text-md-h3 text-black"
|
|
37
37
|
>
|
|
38
38
|
{{ item.name }}
|
|
39
39
|
</div>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
/>
|
|
33
33
|
|
|
34
34
|
<div v-else class="d-flex align-center flex-column mt-12">
|
|
35
|
-
<div class="d-flex text-center text-wrap text-h3 text-black">
|
|
35
|
+
<div class="d-flex text-center text-wrap text-h4 text-md-h3 text-black">
|
|
36
36
|
{{ item.name }}
|
|
37
37
|
</div>
|
|
38
38
|
<v-divider width="154px" class="mb-1 mt-6" />
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
]
|
|
76
76
|
"
|
|
77
77
|
/>
|
|
78
|
-
<div v-if="item.description" class="mt-md-n2
|
|
78
|
+
<div v-if="item.description" class="mt-md-n2">
|
|
79
79
|
<MDC :value="item.description" />
|
|
80
80
|
</div>
|
|
81
81
|
</v-col>
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"license": "AGPL-3.0-only",
|
|
3
3
|
"main": "./dist/module.mjs",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.192",
|
|
5
5
|
"name": "@paris-ias/list",
|
|
6
6
|
"repository": {
|
|
7
7
|
"url": "git+https://github.com/IEA-Paris/list.git",
|
|
8
8
|
"type": "git"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@paris-ias/trees": "^2.0.
|
|
11
|
+
"@paris-ias/trees": "^2.0.48"
|
|
12
12
|
},
|
|
13
13
|
"description": "Paris IAS List Module",
|
|
14
14
|
"peerDependencies": {
|