@explorer-1/vue 0.2.48 → 0.2.50
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/package.json +1 -1
- package/src/components/BlockTeaser/BlockTeaser.vue +1 -1
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue +2 -2
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarouselItem.vue +35 -31
- package/src/templates/PageImageDetail/PageImageDetail.vue +1 -4
- package/src/templates/edu/PageEduGalleryDetail/PageEduGalleryDetail.vue +2 -1
- package/src/templates/www/PageCuratedGallery/PageCuratedGallery.vue +8 -0
- package/src/templates/www/PageHomepage/PageHomepage.vue +60 -57
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
class="bg-star-pattern bg-black"
|
|
5
5
|
>
|
|
6
6
|
<section
|
|
7
|
-
class="HomepageMissionsCarousel ThemeVariantDark max-w-screen-3xl mx-auto overflow-hidden text-white bg-black bg-stars"
|
|
7
|
+
class="HomepageMissionsCarousel ThemeVariantDark max-w-screen-3xl mx-auto overflow-hidden text-white bg-black bg-stars select-none"
|
|
8
8
|
>
|
|
9
9
|
<div class="lg:BaseGrid lg:py-24 pt-14 container flex flex-col pb-5 mx-auto">
|
|
10
10
|
<div class="xl:px-0 lg:col-end-8 xl:col-end-7 order-1 col-start-2 px-4">
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
</div>
|
|
31
31
|
<div class="lg:order-2 xl:px-0 flex justify-end order-3 col-start-10 col-end-13 px-4">
|
|
32
32
|
<BaseLink
|
|
33
|
-
|
|
33
|
+
to="/missions/"
|
|
34
34
|
variant="primary"
|
|
35
35
|
>
|
|
36
36
|
{{ `All Missions` }}
|
|
@@ -1,9 +1,43 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// HomepageMissionsCarouselItem.vue
|
|
3
|
+
/* Slide for the homepage missions carousel.
|
|
4
|
+
Links to the topic page if provided,
|
|
5
|
+
otherwise links to mission target as fallback.
|
|
6
|
+
*/
|
|
7
|
+
import { defineComponent } from 'vue'
|
|
8
|
+
import BaseLink from './../BaseLink/BaseLink.vue'
|
|
9
|
+
import IconCaret from './../Icons/IconCaret.vue'
|
|
10
|
+
|
|
11
|
+
export default defineComponent({
|
|
12
|
+
name: 'HomepageMissionsCarouselItem',
|
|
13
|
+
components: {
|
|
14
|
+
BaseLink,
|
|
15
|
+
IconCaret
|
|
16
|
+
},
|
|
17
|
+
props: {
|
|
18
|
+
data: {
|
|
19
|
+
type: Object,
|
|
20
|
+
required: false,
|
|
21
|
+
default: undefined
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
computed: {
|
|
25
|
+
hasTopic(): boolean {
|
|
26
|
+
if (this.data && this.data.topic && this.data.topic.url) {
|
|
27
|
+
return true
|
|
28
|
+
}
|
|
29
|
+
return false
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
</script>
|
|
34
|
+
|
|
1
35
|
<template>
|
|
2
36
|
<BaseLink
|
|
3
37
|
v-if="data"
|
|
4
38
|
variant="none"
|
|
5
39
|
:aria-label="hasTopic ? 'More about ' + data.topic.title : 'View ' + data.name + ' missions'"
|
|
6
|
-
:to="hasTopic ? data.topic.url :
|
|
40
|
+
:to="hasTopic ? data.topic.url : '/missions/?mission_target=' + data.name"
|
|
7
41
|
class="HomepageMissionsCarouselItem group flex h-full pb-1 text-white"
|
|
8
42
|
link-class="flex flex-col w-full"
|
|
9
43
|
>
|
|
@@ -50,37 +84,7 @@
|
|
|
50
84
|
</div>
|
|
51
85
|
</BaseLink>
|
|
52
86
|
</template>
|
|
53
|
-
<script lang="ts">
|
|
54
|
-
/* Slide for the homepage missions carousel.
|
|
55
|
-
Links to the topic page if provided,
|
|
56
|
-
otherwise links to mission target as fallback.
|
|
57
|
-
*/
|
|
58
|
-
import { defineComponent } from 'vue'
|
|
59
|
-
import BaseLink from './../BaseLink/BaseLink.vue'
|
|
60
|
-
import IconCaret from './../Icons/IconCaret.vue'
|
|
61
87
|
|
|
62
|
-
export default defineComponent({
|
|
63
|
-
name: 'HomepageMissionsCarouselItem',
|
|
64
|
-
components: {
|
|
65
|
-
BaseLink,
|
|
66
|
-
IconCaret
|
|
67
|
-
},
|
|
68
|
-
props: {
|
|
69
|
-
data: {
|
|
70
|
-
type: Object,
|
|
71
|
-
required: false
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
computed: {
|
|
75
|
-
hasTopic(): boolean {
|
|
76
|
-
if (this.data && this.data.topic && this.data.topic.url) {
|
|
77
|
-
return true
|
|
78
|
-
}
|
|
79
|
-
return false
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
})
|
|
83
|
-
</script>
|
|
84
88
|
<style lang="scss">
|
|
85
89
|
.HomepageMissionsCarouselItem {
|
|
86
90
|
.text-wrapper {
|
|
@@ -159,10 +159,7 @@
|
|
|
159
159
|
<BaseLink
|
|
160
160
|
variant="none"
|
|
161
161
|
link-class="font-primary text-jpl-red hover:text-jpl-red-light w-full py-3 text-lg"
|
|
162
|
-
|
|
163
|
-
name: 'missions',
|
|
164
|
-
query: { mission_target: item.target }
|
|
165
|
-
}"
|
|
162
|
+
to="/missions/?mission_target={{ item.target }}"
|
|
166
163
|
>
|
|
167
164
|
{{ item.target }}
|
|
168
165
|
</BaseLink>
|
|
@@ -265,6 +265,14 @@ export default defineComponent({
|
|
|
265
265
|
|
|
266
266
|
<style lang="scss">
|
|
267
267
|
.PageCuratedGallery {
|
|
268
|
+
// sharebuttons fix TODO: make better
|
|
269
|
+
@screen lg {
|
|
270
|
+
.ShareButtons {
|
|
271
|
+
transform: scale(0.75);
|
|
272
|
+
top: -1.8rem;
|
|
273
|
+
z-index: 999;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
268
276
|
.CuratedGallery-thumbnails,
|
|
269
277
|
.CuratedGallery-carousel {
|
|
270
278
|
@apply block;
|
|
@@ -1,3 +1,51 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
import HomepageCarousel from './../../../components/HomepageCarousel/HomepageCarousel.vue'
|
|
4
|
+
import HomepageFeaturedRobot from './../../../components/HomepageFeaturedRobot/HomepageFeaturedRobot.vue'
|
|
5
|
+
import HomepageTeaserBlock from './../../../components/HomepageTeaserBlock/HomepageTeaserBlock.vue'
|
|
6
|
+
import BlockLinkCarousel from './../../../components/BlockLinkCarousel/BlockLinkCarousel.vue'
|
|
7
|
+
import BlockQuote from './../../../components/BlockQuote/BlockQuote.vue'
|
|
8
|
+
import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
|
|
9
|
+
import SwimlaneCTA from './../../../components/SwimlaneCTA/SwimlaneCTA.vue'
|
|
10
|
+
import HomepageMissionsCarousel from './../../../components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue'
|
|
11
|
+
import HomepageStats from './../../../components/HomepageStats/HomepageStats.vue'
|
|
12
|
+
import HomepageEmbedBlock from './../../../components/HomepageEmbedBlock/HomepageEmbedBlock.vue'
|
|
13
|
+
|
|
14
|
+
export default defineComponent({
|
|
15
|
+
name: 'PageHomepage',
|
|
16
|
+
components: {
|
|
17
|
+
HomepageCarousel,
|
|
18
|
+
HomepageFeaturedRobot,
|
|
19
|
+
HomepageTeaserBlock,
|
|
20
|
+
BlockLinkCarousel,
|
|
21
|
+
BlockQuote,
|
|
22
|
+
LayoutHelper,
|
|
23
|
+
SwimlaneCTA,
|
|
24
|
+
HomepageMissionsCarousel,
|
|
25
|
+
HomepageStats,
|
|
26
|
+
HomepageEmbedBlock
|
|
27
|
+
},
|
|
28
|
+
props: {
|
|
29
|
+
data: {
|
|
30
|
+
type: Object,
|
|
31
|
+
required: false,
|
|
32
|
+
default: undefined
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
computed: {
|
|
36
|
+
theNews(): any[] | undefined {
|
|
37
|
+
// check first for featured news
|
|
38
|
+
if (this.data?.featuredNews?.length) {
|
|
39
|
+
return this.data.featuredNews
|
|
40
|
+
} else if (this.data?.latestNews?.length) {
|
|
41
|
+
return this.data.latestNews
|
|
42
|
+
}
|
|
43
|
+
return undefined
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
</script>
|
|
48
|
+
|
|
1
49
|
<template>
|
|
2
50
|
<div
|
|
3
51
|
v-if="data"
|
|
@@ -59,18 +107,20 @@
|
|
|
59
107
|
</template>
|
|
60
108
|
|
|
61
109
|
<!-- mission carousel -->
|
|
62
|
-
<
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
110
|
+
<template v-if="data?.missionsCarousel && data?.missionsCarousel[0]?.targets?.length">
|
|
111
|
+
<HomepageMissionsCarousel
|
|
112
|
+
:data="data.missionsCarousel[0]"
|
|
113
|
+
class="lg:my-18 my-10"
|
|
114
|
+
/>
|
|
115
|
+
</template>
|
|
67
116
|
|
|
68
117
|
<!-- featured robot -->
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
118
|
+
<template v-if="data?.featuredRobots?.length">
|
|
119
|
+
<HomepageFeaturedRobot
|
|
120
|
+
class="lg:my-24 my-12"
|
|
121
|
+
:data="data.featuredRobots[0].page"
|
|
122
|
+
/>
|
|
123
|
+
</template>
|
|
74
124
|
|
|
75
125
|
<!-- engage -->
|
|
76
126
|
<div
|
|
@@ -87,50 +137,3 @@
|
|
|
87
137
|
<SwimlaneCTA />
|
|
88
138
|
</div>
|
|
89
139
|
</template>
|
|
90
|
-
<script lang="ts">
|
|
91
|
-
import { defineComponent } from 'vue'
|
|
92
|
-
import HomepageCarousel from './../../../components/HomepageCarousel/HomepageCarousel.vue'
|
|
93
|
-
import HomepageFeaturedRobot from './../../../components/HomepageFeaturedRobot/HomepageFeaturedRobot.vue'
|
|
94
|
-
import HomepageTeaserBlock from './../../../components/HomepageTeaserBlock/HomepageTeaserBlock.vue'
|
|
95
|
-
import BlockLinkCarousel from './../../../components/BlockLinkCarousel/BlockLinkCarousel.vue'
|
|
96
|
-
import BlockQuote from './../../../components/BlockQuote/BlockQuote.vue'
|
|
97
|
-
import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
|
|
98
|
-
import SwimlaneCTA from './../../../components/SwimlaneCTA/SwimlaneCTA.vue'
|
|
99
|
-
import HomepageMissionsCarousel from './../../../components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue'
|
|
100
|
-
import HomepageStats from './../../../components/HomepageStats/HomepageStats.vue'
|
|
101
|
-
import HomepageEmbedBlock from './../../../components/HomepageEmbedBlock/HomepageEmbedBlock.vue'
|
|
102
|
-
|
|
103
|
-
export default defineComponent({
|
|
104
|
-
name: 'PageHomepage',
|
|
105
|
-
components: {
|
|
106
|
-
HomepageCarousel,
|
|
107
|
-
HomepageFeaturedRobot,
|
|
108
|
-
HomepageTeaserBlock,
|
|
109
|
-
BlockLinkCarousel,
|
|
110
|
-
BlockQuote,
|
|
111
|
-
LayoutHelper,
|
|
112
|
-
SwimlaneCTA,
|
|
113
|
-
HomepageMissionsCarousel,
|
|
114
|
-
HomepageStats,
|
|
115
|
-
HomepageEmbedBlock
|
|
116
|
-
},
|
|
117
|
-
props: {
|
|
118
|
-
data: {
|
|
119
|
-
type: Object,
|
|
120
|
-
required: false,
|
|
121
|
-
default: undefined
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
computed: {
|
|
125
|
-
theNews(): any[] | undefined {
|
|
126
|
-
// check first for featured news
|
|
127
|
-
if (this.data?.featuredNews?.length) {
|
|
128
|
-
return this.data.featuredNews
|
|
129
|
-
} else if (this.data?.latestNews?.length) {
|
|
130
|
-
return this.data.latestNews
|
|
131
|
-
}
|
|
132
|
-
return undefined
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
})
|
|
136
|
-
</script>
|