@paris-ias/list 1.0.174 → 1.0.176
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 +2 -10
- package/dist/runtime/components/actions/ExpandedItem.vue +1 -7
- package/dist/runtime/components/actions/RowsItem.vue +2 -5
- package/dist/runtime/components/affiliation/DenseItem.vue +1 -7
- package/dist/runtime/components/affiliation/RowsItem.vue +1 -7
- package/dist/runtime/components/affiliations/DenseItem.vue +1 -7
- package/dist/runtime/components/affiliations/RowsItem.vue +1 -7
- package/dist/runtime/components/apps/DenseItem.vue +1 -7
- package/dist/runtime/components/apps/RowsItem.vue +1 -7
- package/dist/runtime/components/disciplines/DenseItem.vue +1 -7
- package/dist/runtime/components/disciplines/RowsItem.vue +1 -3
- package/dist/runtime/components/events/DenseItem.vue +8 -13
- package/dist/runtime/components/events/Location.vue +42 -23
- package/dist/runtime/components/events/RowsItem.vue +4 -6
- package/dist/runtime/components/events/View.vue +1 -1
- package/dist/runtime/components/fellowships/Badges.vue +3 -1
- package/dist/runtime/components/fellowships/DenseItem.vue +3 -13
- package/dist/runtime/components/fellowships/RowsItem.vue +2 -7
- package/dist/runtime/components/fellowships/View.vue +1 -1
- package/dist/runtime/components/files/DenseItem.vue +1 -7
- package/dist/runtime/components/files/RowsItem.vue +1 -7
- package/dist/runtime/components/list/atoms/SortMenu.vue +16 -19
- package/dist/runtime/components/list/atoms/ViewMenu.vue +16 -14
- package/dist/runtime/components/list/organisms/List.vue +5 -6
- package/dist/runtime/components/mailing/RowsItem.vue +1 -7
- package/dist/runtime/components/misc/molecules/Related.vue +2 -4
- package/dist/runtime/components/news/DenseItem.vue +4 -10
- package/dist/runtime/components/news/RowsItem.vue +3 -6
- package/dist/runtime/components/people/DenseItem.vue +4 -6
- package/dist/runtime/components/people/RowsItem.vue +4 -8
- package/dist/runtime/components/projects/DenseItem.vue +5 -17
- package/dist/runtime/components/projects/RowsItem.vue +2 -11
- package/dist/runtime/components/publications/DenseItem.vue +6 -9
- package/dist/runtime/components/publications/RowsItem.vue +3 -8
- package/dist/runtime/components/tags/RowsItem.vue +1 -7
- package/dist/runtime/components/users/DenseItem.vue +1 -4
- package/dist/runtime/components/users/RowsItem.vue +1 -4
- package/package.json +2 -2
package/dist/module.json
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="my-2 highlight-on-hover" no-gutters>
|
|
3
3
|
<v-col v-if="mdAndUp" cols="12" md="2">
|
|
4
|
-
<MiscAtomsImageContainer
|
|
5
|
-
:loading="isLoading"
|
|
6
|
-
:src="imageSrc"
|
|
7
|
-
:ratio="1 / 1"
|
|
8
|
-
cover
|
|
9
|
-
/>
|
|
4
|
+
<MiscAtomsImageContainer :loading :src="imageSrc" :ratio="1 / 1" cover />
|
|
10
5
|
</v-col>
|
|
11
6
|
<v-col cols="12" :md="mdAndUp ? 10 : 12" class="px-4">
|
|
12
7
|
<v-skeleton-loader
|
|
13
|
-
v-if="
|
|
8
|
+
v-if="loading"
|
|
14
9
|
:type="
|
|
15
10
|
[
|
|
16
11
|
'heading, subtitle, text@6',
|
|
@@ -36,17 +31,14 @@
|
|
|
36
31
|
<script setup>
|
|
37
32
|
import { useDisplay } from "vuetify"
|
|
38
33
|
import { computed } from "#imports"
|
|
39
|
-
import { useRootStore } from "../../stores/root"
|
|
40
34
|
|
|
41
35
|
const { name, mdAndUp } = useDisplay()
|
|
42
|
-
const rootStore = useRootStore()
|
|
43
36
|
const props = defineProps({
|
|
44
37
|
item: { type: Object, required: true },
|
|
45
38
|
index: { type: Number, required: false, default: 0 },
|
|
46
39
|
loading: { type: Boolean, required: false, default: false },
|
|
47
40
|
})
|
|
48
41
|
|
|
49
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
50
42
|
const imageSrc = computed(() => {
|
|
51
43
|
const img = props.item && props.item.image
|
|
52
44
|
if (!img) return "/default.png"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-card flat class="pa-4">
|
|
3
|
-
<v-skeleton-loader v-if="
|
|
3
|
+
<v-skeleton-loader v-if="loading" type="heading, text@10" />
|
|
4
4
|
<template v-else>
|
|
5
5
|
<div class="text-h4 mb-2">{{ item.name }}</div>
|
|
6
6
|
<MDC v-if="item.description" :value="item.description" />
|
|
@@ -9,14 +9,8 @@
|
|
|
9
9
|
</template>
|
|
10
10
|
|
|
11
11
|
<script setup>
|
|
12
|
-
import { computed } from "#imports"
|
|
13
|
-
import { useRootStore } from "../../stores/root"
|
|
14
|
-
|
|
15
|
-
const rootStore = useRootStore()
|
|
16
12
|
const props = defineProps({
|
|
17
13
|
item: { type: Object, required: true },
|
|
18
14
|
loading: { type: Boolean, default: false },
|
|
19
15
|
})
|
|
20
|
-
|
|
21
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
22
16
|
</script>
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
cover
|
|
6
6
|
:src="imageSrc"
|
|
7
7
|
:ratio="1 / 1"
|
|
8
|
-
:loading="
|
|
8
|
+
:loading="loading"
|
|
9
9
|
/>
|
|
10
10
|
</v-col>
|
|
11
11
|
<v-col cols="12" :md="mdAndUp ? 9 : 12" class="px-6">
|
|
12
12
|
<v-skeleton-loader
|
|
13
|
-
v-if="
|
|
13
|
+
v-if="loading"
|
|
14
14
|
:type="
|
|
15
15
|
[
|
|
16
16
|
'heading, ossein, text@6, button',
|
|
@@ -36,17 +36,14 @@
|
|
|
36
36
|
<script setup>
|
|
37
37
|
import { useDisplay } from "vuetify"
|
|
38
38
|
import { computed } from "#imports"
|
|
39
|
-
import { useRootStore } from "../../stores/root"
|
|
40
39
|
|
|
41
40
|
const { name, mdAndUp } = useDisplay()
|
|
42
|
-
const rootStore = useRootStore()
|
|
43
41
|
const props = defineProps({
|
|
44
42
|
item: { type: Object, required: true },
|
|
45
43
|
index: { type: Number, required: false, default: 0 },
|
|
46
44
|
loading: { type: Boolean, required: false, default: false },
|
|
47
45
|
})
|
|
48
46
|
|
|
49
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
50
47
|
const imageSrc = computed(() => {
|
|
51
48
|
const img = props.item && props.item.image
|
|
52
49
|
if (!img) return "/default.png"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="my-2 highlight-on-hover" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-4">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="heading, text@6" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h5">{{ item.name }}</div>
|
|
7
7
|
<div v-if="item.summary" class="text-body-1 mt-1">
|
|
@@ -14,16 +14,10 @@
|
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script setup>
|
|
17
|
-
import { computed } from "#imports"
|
|
18
|
-
import { useRootStore } from "../../stores/root"
|
|
19
|
-
|
|
20
|
-
const rootStore = useRootStore()
|
|
21
17
|
const props = defineProps({
|
|
22
18
|
item: { type: Object, required: true },
|
|
23
19
|
loading: { type: Boolean, default: false },
|
|
24
20
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
21
|
</script>
|
|
28
22
|
|
|
29
23
|
<style></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="highlight-on-hover pa-3" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-6">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="heading, text@8, button" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h5">{{ item.name }}</div>
|
|
7
7
|
<div v-if="item.summary" class="mt-2">
|
|
@@ -14,16 +14,10 @@
|
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script setup>
|
|
17
|
-
import { computed } from "#imports"
|
|
18
|
-
import { useRootStore } from "../../stores/root"
|
|
19
|
-
|
|
20
|
-
const rootStore = useRootStore()
|
|
21
17
|
const props = defineProps({
|
|
22
18
|
item: { type: Object, required: true },
|
|
23
19
|
loading: { type: Boolean, default: false },
|
|
24
20
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
21
|
</script>
|
|
28
22
|
|
|
29
23
|
<style></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="my-2 highlight-on-hover" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-4">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="heading, text@6" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h5">{{ item.name }}</div>
|
|
7
7
|
<div v-if="item.summary" class="text-body-1 mt-1">
|
|
@@ -14,16 +14,10 @@
|
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script setup>
|
|
17
|
-
import { computed } from "#imports"
|
|
18
|
-
import { useRootStore } from "../../stores/root"
|
|
19
|
-
|
|
20
|
-
const rootStore = useRootStore()
|
|
21
17
|
const props = defineProps({
|
|
22
18
|
item: { type: Object, required: true },
|
|
23
19
|
loading: { type: Boolean, default: false },
|
|
24
20
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
21
|
</script>
|
|
28
22
|
|
|
29
23
|
<style></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="highlight-on-hover pa-3" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-6">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="heading, text@8, button" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h5">{{ item.name }}</div>
|
|
7
7
|
<div v-if="item.summary" class="mt-2">
|
|
@@ -14,16 +14,10 @@
|
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script setup>
|
|
17
|
-
import { computed } from "#imports"
|
|
18
|
-
import { useRootStore } from "../../stores/root"
|
|
19
|
-
|
|
20
|
-
const rootStore = useRootStore()
|
|
21
17
|
const props = defineProps({
|
|
22
18
|
item: { type: Object, required: true },
|
|
23
19
|
loading: { type: Boolean, default: false },
|
|
24
20
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
21
|
</script>
|
|
28
22
|
|
|
29
23
|
<style></style>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
@click="$router.push(pathPrefix)"
|
|
6
6
|
>
|
|
7
7
|
<v-col cols="12" class="px-4">
|
|
8
|
-
<v-skeleton-loader v-if="
|
|
8
|
+
<v-skeleton-loader v-if="loading" type="heading, text@6" />
|
|
9
9
|
<template v-else>
|
|
10
10
|
<div class="text-h5">{{ item.name }}</div>
|
|
11
11
|
<div v-if="item.summary" class="text-body-1 mt-1">
|
|
@@ -18,17 +18,11 @@
|
|
|
18
18
|
</template>
|
|
19
19
|
|
|
20
20
|
<script setup>
|
|
21
|
-
import { computed } from "#imports"
|
|
22
|
-
import { useRootStore } from "../../stores/root"
|
|
23
|
-
|
|
24
|
-
const rootStore = useRootStore()
|
|
25
21
|
const props = defineProps({
|
|
26
22
|
item: { type: Object, required: true },
|
|
27
23
|
pathPrefix: { type: String, required: true },
|
|
28
24
|
loading: { type: Boolean, default: false },
|
|
29
25
|
})
|
|
30
|
-
|
|
31
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
32
26
|
</script>
|
|
33
27
|
|
|
34
28
|
<style></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="highlight-on-hover pa-3" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-6">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="heading, text@8, button" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h5">{{ item.name }}</div>
|
|
7
7
|
<div v-if="item.summary" class="mt-2">
|
|
@@ -14,16 +14,10 @@
|
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script setup>
|
|
17
|
-
import { computed } from "#imports"
|
|
18
|
-
import { useRootStore } from "../../stores/root"
|
|
19
|
-
|
|
20
|
-
const rootStore = useRootStore()
|
|
21
17
|
const props = defineProps({
|
|
22
18
|
item: { type: Object, required: true },
|
|
23
19
|
loading: { type: Boolean, default: false },
|
|
24
20
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
21
|
</script>
|
|
28
22
|
|
|
29
23
|
<style></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="my-2 highlight-on-hover" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-4">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="heading, text@6" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h5">{{ item.name }}</div>
|
|
7
7
|
<div v-if="item.summary" class="text-body-1 mt-1">
|
|
@@ -14,16 +14,10 @@
|
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script setup>
|
|
17
|
-
import { computed } from "#imports"
|
|
18
|
-
import { useRootStore } from "../../stores/root"
|
|
19
|
-
|
|
20
|
-
const rootStore = useRootStore()
|
|
21
17
|
const props = defineProps({
|
|
22
18
|
item: { type: Object, required: true },
|
|
23
19
|
loading: { type: Boolean, default: false },
|
|
24
20
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
21
|
</script>
|
|
28
22
|
|
|
29
23
|
<style></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="highlight-on-hover pa-3" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-6">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="heading, text@8, button" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h5">{{ item.name }}</div>
|
|
7
7
|
<div v-if="item.summary" class="mt-2">
|
|
@@ -22,8 +22,6 @@ const props = defineProps({
|
|
|
22
22
|
item: { type: Object, required: true },
|
|
23
23
|
loading: { type: Boolean, default: false },
|
|
24
24
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
25
|
</script>
|
|
28
26
|
|
|
29
27
|
<style></style>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<v-col v-if="mdAndUp" cols="1">
|
|
4
4
|
<MiscAtomsDateStamp
|
|
5
5
|
v-if="item.start"
|
|
6
|
-
:loading
|
|
6
|
+
:loading
|
|
7
7
|
:date-start="item.start"
|
|
8
8
|
:date-stop="item.stop"
|
|
9
9
|
class="pr-6 mt-md-2"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<v-col v-if="mdAndUp" cols="1">
|
|
13
13
|
<MiscAtomsImageContainer
|
|
14
14
|
cover
|
|
15
|
-
:loading
|
|
15
|
+
:loading
|
|
16
16
|
:src="
|
|
17
17
|
item && item.image && item.image.url ? item.image.url : '/default.png'
|
|
18
18
|
"
|
|
@@ -22,12 +22,7 @@
|
|
|
22
22
|
</v-col>
|
|
23
23
|
|
|
24
24
|
<v-col align-self="start" class="pl-2">
|
|
25
|
-
<v-skeleton-loader
|
|
26
|
-
v-if="isLoading"
|
|
27
|
-
type="chip"
|
|
28
|
-
class="mr-3"
|
|
29
|
-
width="120"
|
|
30
|
-
/>
|
|
25
|
+
<v-skeleton-loader v-if="loading" type="chip" class="mr-3" width="120" />
|
|
31
26
|
<v-chip
|
|
32
27
|
v-else
|
|
33
28
|
class="mr-3"
|
|
@@ -40,7 +35,7 @@
|
|
|
40
35
|
{{ $t("list.filters.events.category." + item.category) }}
|
|
41
36
|
</v-chip>
|
|
42
37
|
<v-skeleton-loader
|
|
43
|
-
v-if="
|
|
38
|
+
v-if="loading && smAndDown"
|
|
44
39
|
type="text"
|
|
45
40
|
width="90"
|
|
46
41
|
class="d-inline-block"
|
|
@@ -56,7 +51,7 @@
|
|
|
56
51
|
</span>
|
|
57
52
|
|
|
58
53
|
<v-skeleton-loader
|
|
59
|
-
v-if="
|
|
54
|
+
v-if="loading"
|
|
60
55
|
type="heading"
|
|
61
56
|
width="80%"
|
|
62
57
|
class="mt-2"
|
|
@@ -71,7 +66,7 @@
|
|
|
71
66
|
: item.name
|
|
72
67
|
"
|
|
73
68
|
/>
|
|
74
|
-
<v-skeleton-loader v-if="
|
|
69
|
+
<v-skeleton-loader v-if="loading" type="text@3" class="mt-2" />
|
|
75
70
|
<MDC
|
|
76
71
|
v-else
|
|
77
72
|
class="text-body-1 font-weight-light paragraph"
|
|
@@ -84,7 +79,7 @@
|
|
|
84
79
|
</v-col>
|
|
85
80
|
|
|
86
81
|
<v-col align-self="center" cols="auto">
|
|
87
|
-
<v-skeleton-loader v-if="
|
|
82
|
+
<v-skeleton-loader v-if="loading" type="button" />
|
|
88
83
|
<div v-else>
|
|
89
84
|
<EventsBadges :item />
|
|
90
85
|
</div>
|
|
@@ -118,5 +113,5 @@ const props = defineProps({
|
|
|
118
113
|
},
|
|
119
114
|
})
|
|
120
115
|
|
|
121
|
-
const
|
|
116
|
+
// const loading = computed(() => rootStore.loading || props.loading)
|
|
122
117
|
</script>
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
<div class="location-section">
|
|
3
|
+
<div class="text-overline font-weight-bold mt-md-4">
|
|
4
|
+
{{ $t("location") }}
|
|
5
|
+
</div>
|
|
6
|
+
<div>
|
|
7
|
+
<b>{{ getDisplayLocation().name }}</b>
|
|
8
|
+
<div v-if="getDisplayLocation().address" class="text-body-2">
|
|
9
|
+
{{ getDisplayLocation().address }}
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
<div v-if="getDisplayLocation().details" class="text-caption mt-1">
|
|
13
|
+
{{ getDisplayLocation().details }}
|
|
11
14
|
</div>
|
|
12
|
-
</div>
|
|
13
|
-
|
|
14
|
-
<div v-if="item?.location?.details" class="text-caption">
|
|
15
|
-
{{ item.location.details }}
|
|
16
15
|
</div>
|
|
17
16
|
</template>
|
|
18
17
|
|
|
19
18
|
<script setup>
|
|
20
|
-
import {
|
|
19
|
+
import { useI18n, useAppConfig } from "#imports"
|
|
20
|
+
|
|
21
|
+
const { locale } = useI18n()
|
|
22
|
+
const appConfig = useAppConfig()
|
|
21
23
|
|
|
22
24
|
const props = defineProps({
|
|
23
25
|
item: {
|
|
@@ -26,18 +28,35 @@ const props = defineProps({
|
|
|
26
28
|
},
|
|
27
29
|
})
|
|
28
30
|
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
const parts = [loc.street, loc.city].filter(Boolean)
|
|
34
|
-
|
|
35
|
-
const zipCountry = [loc.zip, loc.country].filter(Boolean)
|
|
31
|
+
const formatAddress = (location) => {
|
|
32
|
+
if (!location) return ""
|
|
33
|
+
if (location.address) return location.address
|
|
36
34
|
|
|
35
|
+
const parts = [location.street, location.city].filter(Boolean)
|
|
36
|
+
const zipCountry = [location.zip, location.country].filter(Boolean)
|
|
37
37
|
if (zipCountry.length) {
|
|
38
38
|
parts.push(`(${zipCountry.join(", ")})`)
|
|
39
39
|
}
|
|
40
|
-
|
|
41
40
|
return parts.join(", ")
|
|
42
|
-
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const getDisplayLocation = () => {
|
|
44
|
+
const loc = props.item?.location
|
|
45
|
+
const hasValidLocation = loc && Object.keys(loc).length > 0
|
|
46
|
+
|
|
47
|
+
if (hasValidLocation) {
|
|
48
|
+
return {
|
|
49
|
+
name: loc.name,
|
|
50
|
+
address: formatAddress(loc),
|
|
51
|
+
details: loc.details,
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const isFr = locale.value === "fr"
|
|
56
|
+
return {
|
|
57
|
+
name: isFr ? appConfig.short_name_french : appConfig.short_name_english,
|
|
58
|
+
address: appConfig.address,
|
|
59
|
+
details: appConfig.postcode_country,
|
|
60
|
+
}
|
|
61
|
+
}
|
|
43
62
|
</script>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<v-col cols="12" md="1">
|
|
6
6
|
<MiscAtomsDateStamp
|
|
7
7
|
v-if="item.start"
|
|
8
|
-
:loading="
|
|
8
|
+
:loading="loading"
|
|
9
9
|
:date-start="item.start"
|
|
10
10
|
:date-stop="item.stop"
|
|
11
11
|
class="pr-6 mt-md-2"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<v-row no-gutters>
|
|
16
16
|
<v-col cols="12" class="pr-lg-6">
|
|
17
17
|
<v-skeleton-loader
|
|
18
|
-
v-if="
|
|
18
|
+
v-if="loading"
|
|
19
19
|
:type="
|
|
20
20
|
[
|
|
21
21
|
'heading, subtitle, text@6,subtitle, text, ossein, button, button',
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
>
|
|
62
62
|
<v-col cols="12">
|
|
63
63
|
<v-skeleton-loader
|
|
64
|
-
v-if="
|
|
64
|
+
v-if="loading"
|
|
65
65
|
:type="['button'][['md'].indexOf(name || 'md')]"
|
|
66
66
|
/>
|
|
67
67
|
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
<v-col cols="12" md="4">
|
|
75
75
|
<MiscAtomsImageContainer
|
|
76
76
|
cover
|
|
77
|
-
:loading="
|
|
77
|
+
:loading="loading"
|
|
78
78
|
:src="item.image && item.image.url ? item.image : '/default.png'"
|
|
79
79
|
:ratio="1 / 1"
|
|
80
80
|
/>
|
|
@@ -107,6 +107,4 @@ const props = defineProps({
|
|
|
107
107
|
default: false,
|
|
108
108
|
},
|
|
109
109
|
})
|
|
110
|
-
|
|
111
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
112
110
|
</script>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<v-skeleton-loader v-if="loading" type="button" class="my-2" />
|
|
3
|
+
<div v-else-if="registrationStatus === 0" class="text-overline">
|
|
3
4
|
{{
|
|
4
5
|
$t("opening-applications-on-0", [getLocalizedDate(item.applicationStart)])
|
|
5
6
|
}}
|
|
@@ -29,6 +30,7 @@ import { computed } from "#imports"
|
|
|
29
30
|
const props = defineProps({
|
|
30
31
|
item: { type: Object, required: true },
|
|
31
32
|
view: { type: Boolean, required: false, default: false },
|
|
33
|
+
loading: { type: Boolean, required: false, default: false },
|
|
32
34
|
})
|
|
33
35
|
|
|
34
36
|
const registrationStatus = computed(() => {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover">
|
|
3
3
|
<v-col align-self="center" cols="8" class="text-h5 dense">
|
|
4
4
|
<v-skeleton-loader
|
|
5
|
-
v-if="
|
|
5
|
+
v-if="loading"
|
|
6
6
|
type="heading"
|
|
7
7
|
width="75%"
|
|
8
8
|
class="mb-2"
|
|
@@ -15,15 +15,10 @@
|
|
|
15
15
|
: item.name
|
|
16
16
|
"
|
|
17
17
|
/>
|
|
18
|
-
<FellowshipsBadges :item="item" />
|
|
18
|
+
<FellowshipsBadges :item="item" :loading="loading" />
|
|
19
19
|
</v-col>
|
|
20
20
|
<v-col align-self="center" cols="4">
|
|
21
|
-
<v-skeleton-loader
|
|
22
|
-
v-if="isLoading"
|
|
23
|
-
type="chip"
|
|
24
|
-
width="260"
|
|
25
|
-
class="mt-2"
|
|
26
|
-
/>
|
|
21
|
+
<v-skeleton-loader v-if="loading" type="chip" width="260" class="mt-2" />
|
|
27
22
|
<MiscMoleculesChipContainer
|
|
28
23
|
v-else
|
|
29
24
|
:items="[
|
|
@@ -40,8 +35,6 @@
|
|
|
40
35
|
|
|
41
36
|
<script setup>
|
|
42
37
|
import { useNuxtApp } from "#imports"
|
|
43
|
-
import { useRootStore } from "../../stores/root"
|
|
44
|
-
import { computed } from "#imports"
|
|
45
38
|
const { $rootStore } = useNuxtApp()
|
|
46
39
|
|
|
47
40
|
const props = defineProps({
|
|
@@ -59,7 +52,4 @@ const props = defineProps({
|
|
|
59
52
|
default: false,
|
|
60
53
|
},
|
|
61
54
|
})
|
|
62
|
-
|
|
63
|
-
const rootStore = useRootStore()
|
|
64
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
65
55
|
</script>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover my-2">
|
|
3
3
|
<v-col cols="12" class="w-100">
|
|
4
4
|
<div v-ripple class="border-thin pa-6">
|
|
5
|
-
<template v-if="
|
|
5
|
+
<template v-if="loading">
|
|
6
6
|
<v-skeleton-loader type="chip@2" class="mb-2" />
|
|
7
7
|
<v-skeleton-loader type="heading" width="70%" class="mt-4" />
|
|
8
8
|
<v-skeleton-loader type="text@4" class="mt-2 w-100" />
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</template>
|
|
12
12
|
|
|
13
13
|
<template v-else>
|
|
14
|
-
<FellowshipsBadges :item />
|
|
14
|
+
<FellowshipsBadges :item :loading="loading" />
|
|
15
15
|
|
|
16
16
|
<div class="text-h4 text-black text-wrap mt-4 pb-4">
|
|
17
17
|
{{ item.name }}
|
|
@@ -50,8 +50,6 @@
|
|
|
50
50
|
|
|
51
51
|
<script setup>
|
|
52
52
|
import { useDisplay } from "vuetify"
|
|
53
|
-
import { computed } from "#imports"
|
|
54
|
-
import { useRootStore } from "../../stores/root"
|
|
55
53
|
|
|
56
54
|
const { name } = useDisplay()
|
|
57
55
|
|
|
@@ -71,9 +69,6 @@ const props = defineProps({
|
|
|
71
69
|
default: false,
|
|
72
70
|
},
|
|
73
71
|
})
|
|
74
|
-
|
|
75
|
-
const rootStore = useRootStore()
|
|
76
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
77
72
|
</script>
|
|
78
73
|
|
|
79
74
|
<style lang="scss"></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row class="my-2 highlight-on-hover" no-gutters>
|
|
3
3
|
<v-col cols="12" class="px-4">
|
|
4
|
-
<v-skeleton-loader v-if="
|
|
4
|
+
<v-skeleton-loader v-if="loading" type="avatar, text@6" />
|
|
5
5
|
<template v-else>
|
|
6
6
|
<div class="text-h6">{{ item.name || item.filename }}</div>
|
|
7
7
|
<div v-if="item.description" class="text-body-2 mt-1">
|
|
@@ -14,16 +14,10 @@
|
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script setup>
|
|
17
|
-
import { computed } from "#imports"
|
|
18
|
-
import { useRootStore } from "../../stores/root"
|
|
19
|
-
|
|
20
|
-
const rootStore = useRootStore()
|
|
21
17
|
const props = defineProps({
|
|
22
18
|
item: { type: Object, required: true },
|
|
23
19
|
loading: { type: Boolean, default: false },
|
|
24
20
|
})
|
|
25
|
-
|
|
26
|
-
const isLoading = computed(() => rootStore.loading || props.loading)
|
|
27
21
|
</script>
|
|
28
22
|
|
|
29
23
|
<style></style>
|