@explorer-1/vue 0.2.23 → 0.2.25
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/components.d.ts +2 -0
- package/dist/explorer-1-vue.js +4001 -3944
- package/dist/explorer-1-vue.umd.cjs +13 -13
- package/dist/src/components/BlockLinkCardList/BlockLinkCardList.stories.d.ts +142 -0
- package/dist/src/components/BlockLinkCardList/BlockLinkCardList.vue.d.ts +30 -0
- package/dist/src/components/MetadataEduResource/MetadataEduResource.stories.d.ts +4 -0
- package/dist/src/components/NavSecondary/NavSecondaryDropdown.vue.d.ts +6 -6
- package/dist/src/interfaces.d.ts +2 -0
- package/dist/src/templates/edu/PageEduTeachableMoment/PageEduTeachableMoment.stories.d.ts +330 -0
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/src/components/BlockLinkCardList/BlockLinkCardList.stories.js +110 -0
- package/src/components/BlockLinkCardList/BlockLinkCardList.vue +34 -0
- package/src/components/BlockStreamfield/BlockStreamfield.vue +26 -6
- package/src/components/MetadataEduResource/MetadataEduResource.stories.js +4 -1
- package/src/components/MetadataEduResource/MetadataEduResource.vue +14 -1
- package/src/components/SearchSelectMenu/SearchSelectMenu.vue +1 -1
- package/src/constants.ts +7 -1
- package/src/docs/foundation/typography.stories.js +2 -0
- package/src/interfaces.ts +3 -0
- package/src/templates/edu/PageEduLesson/PageEduLesson.stories.js +1 -0
- package/src/templates/edu/PageEduLesson/PageEduLesson.vue +15 -11
- package/src/templates/edu/PageEduNewsDetail/PageEduNewsDetail.vue +1 -0
- package/src/templates/edu/PageEduTeachableMoment/PageEduTeachableMoment.stories.js +142 -0
- package/src/templates/edu/PageEduTeachableMoment/PageEduTeachableMoment.vue +217 -0
- package/src/utils/rangeifyGrades.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@explorer-1/vue",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.25",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"vue-bind-once": "^0.2.1",
|
|
31
31
|
"vue-observe-visibility": "^1.0.0",
|
|
32
32
|
"vue3-compare-image": "^1.2.5",
|
|
33
|
-
"@explorer-1/common": "1.1.
|
|
33
|
+
"@explorer-1/common": "1.1.7"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@vitejs/plugin-vue": "^5.0.4",
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import BlockLinkCardList from './BlockLinkCardList.vue'
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Components/Blocks/BlockLinkCardList',
|
|
5
|
+
component: BlockLinkCardList,
|
|
6
|
+
tags: ['!autodocs'],
|
|
7
|
+
excludeStories: /.*Data$/
|
|
8
|
+
}
|
|
9
|
+
export const BlockLinkCardData = {
|
|
10
|
+
data: {
|
|
11
|
+
url: '/news/placeholder-slug-1',
|
|
12
|
+
title: 'How engineers at NASA-JPL persevered to develop a ventilator',
|
|
13
|
+
slug: 'placeholder-slug-1',
|
|
14
|
+
label: 'Solar System',
|
|
15
|
+
thumbnailImage: {
|
|
16
|
+
src: {
|
|
17
|
+
url: 'https://picsum.photos/512/288',
|
|
18
|
+
width: 512,
|
|
19
|
+
height: 288
|
|
20
|
+
},
|
|
21
|
+
alt: 'Alt text'
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
headingLevel: 'h2',
|
|
25
|
+
startDate: undefined,
|
|
26
|
+
endDate: undefined
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const BlockLinkCardCarouselData = [
|
|
30
|
+
{
|
|
31
|
+
page: {
|
|
32
|
+
...BlockLinkCardData.data,
|
|
33
|
+
__typename: 'EDUEventPage',
|
|
34
|
+
startDate: '2021-11-11',
|
|
35
|
+
startDatetime: '2021-11-11T00:00:00-08:00',
|
|
36
|
+
endDatetime: '2021-11-11T23:59:59.999999-08:00',
|
|
37
|
+
endDate: '2021-11-11',
|
|
38
|
+
ongoing: false,
|
|
39
|
+
eventType: 'Workshop'
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
page: {
|
|
44
|
+
summary:
|
|
45
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse at tortor placerat, varius ante in, imperdiet dolor. Morbi vel arcu eu purus efficitur consequat sit amet vel nisi. Duis convallis volutpat scelerisque.',
|
|
46
|
+
|
|
47
|
+
...BlockLinkCardData.data,
|
|
48
|
+
__typename: 'EDULessonPage',
|
|
49
|
+
primarySubject: {
|
|
50
|
+
subject: 'Math'
|
|
51
|
+
},
|
|
52
|
+
gradeLevels: [
|
|
53
|
+
{ gradeLevel: 'K' },
|
|
54
|
+
{ gradeLevel: '1' },
|
|
55
|
+
{ gradeLevel: '2' },
|
|
56
|
+
{ gradeLevel: '8' }
|
|
57
|
+
],
|
|
58
|
+
time: {
|
|
59
|
+
time: '1-2 hrs'
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
page: {
|
|
65
|
+
...BlockLinkCardData.data,
|
|
66
|
+
__typename: 'EDUExplainerArticlePage',
|
|
67
|
+
summary:
|
|
68
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse at tortor placerat, varius ante in, imperdiet dolor. Morbi vel arcu eu purus efficitur consequat sit amet vel nisi. Duis convallis volutpat scelerisque.',
|
|
69
|
+
primarySubject: {
|
|
70
|
+
subject: 'Engineering'
|
|
71
|
+
},
|
|
72
|
+
gradeLevels: [
|
|
73
|
+
{ gradeLevel: 'All Ages' },
|
|
74
|
+
{ gradeLevel: 'K' },
|
|
75
|
+
{ gradeLevel: '1' },
|
|
76
|
+
{ gradeLevel: '2' },
|
|
77
|
+
{ gradeLevel: '5' },
|
|
78
|
+
{ gradeLevel: '6' },
|
|
79
|
+
{ gradeLevel: '7' },
|
|
80
|
+
{ gradeLevel: '8' }
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
url: '/news/placeholder-slug-4',
|
|
86
|
+
title: 'How engineers at NASA-JPL persevered to develop a ventilator',
|
|
87
|
+
slug: 'placeholder-slug-4',
|
|
88
|
+
summary:
|
|
89
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse at tortor placerat, varius ante in, imperdiet dolor. Morbi vel arcu eu purus efficitur consequat sit amet vel nisi. Duis convallis volutpat scelerisque.',
|
|
90
|
+
label: 'Technology',
|
|
91
|
+
thumbnailImage: {
|
|
92
|
+
src: {
|
|
93
|
+
url: 'https://picsum.photos/512/288',
|
|
94
|
+
width: 512,
|
|
95
|
+
height: 288
|
|
96
|
+
},
|
|
97
|
+
alt: 'Alt text'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
|
|
102
|
+
// stories
|
|
103
|
+
export const BaseStory = {
|
|
104
|
+
name: 'BlockLinkCardList',
|
|
105
|
+
args: {
|
|
106
|
+
itemType: 'cards',
|
|
107
|
+
heading: 'Related Pages',
|
|
108
|
+
items: BlockLinkCardCarouselData
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { Card } from './../../interfaces'
|
|
3
|
+
import BlockLinkCard from './../BlockLinkCard/BlockLinkCard.vue'
|
|
4
|
+
|
|
5
|
+
export interface BlockLinkCardListProps {
|
|
6
|
+
items: Card[]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const props = withDefaults(defineProps<BlockLinkCardListProps>(), {
|
|
10
|
+
items: undefined
|
|
11
|
+
})
|
|
12
|
+
</script>
|
|
13
|
+
<template>
|
|
14
|
+
<div class="BlockLinkCardList">
|
|
15
|
+
<!-- Slides -->
|
|
16
|
+
<BlockLinkCard
|
|
17
|
+
v-for="(item, index) in props.items"
|
|
18
|
+
:key="index"
|
|
19
|
+
class="border-b border-gray-light-mid mb-5"
|
|
20
|
+
:class="{ 'pt-3': index !== 0 }"
|
|
21
|
+
:data="item"
|
|
22
|
+
size="lg"
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
<style lang="scss">
|
|
27
|
+
.BlockLinkCardList {
|
|
28
|
+
.BlockLinkCard {
|
|
29
|
+
div.bg-gray-dark.relative.mb-6 {
|
|
30
|
+
@apply mb-3 #{!important};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
</style>
|
|
@@ -207,6 +207,23 @@
|
|
|
207
207
|
<BlockCardGrid :cards="block.items" />
|
|
208
208
|
</div>
|
|
209
209
|
|
|
210
|
+
<div
|
|
211
|
+
v-else-if="block.blockType === 'LinkCarouselBlock' && block.blocks?.length"
|
|
212
|
+
:key="`linkCarouselBlock${index}`"
|
|
213
|
+
class="lg:mb-18 mb-10"
|
|
214
|
+
>
|
|
215
|
+
<BlockLinkCarousel :items="block.blocks" />
|
|
216
|
+
</div>
|
|
217
|
+
|
|
218
|
+
<LayoutHelper
|
|
219
|
+
v-else-if="block.blockType === 'LinkCardListBlock' && block.blocks?.length"
|
|
220
|
+
:key="`linkCardListBlock${index}`"
|
|
221
|
+
indent="col-3"
|
|
222
|
+
class="lg:mb-18 mb-10"
|
|
223
|
+
>
|
|
224
|
+
<BlockLinkCardList :items="block.blocks" />
|
|
225
|
+
</LayoutHelper>
|
|
226
|
+
|
|
210
227
|
<LayoutHelper
|
|
211
228
|
v-else-if="block.blockType == 'AccordionBlock'"
|
|
212
229
|
:key="`accordionBlock${index}`"
|
|
@@ -231,6 +248,8 @@ import { defineComponent } from 'vue'
|
|
|
231
248
|
import type { PropType } from 'vue'
|
|
232
249
|
import type { StreamfieldBlockData } from '../../interfaces'
|
|
233
250
|
import LayoutHelper from './../LayoutHelper/LayoutHelper.vue'
|
|
251
|
+
import BlockAnchor from './../BlockAnchor/BlockAnchor.vue'
|
|
252
|
+
import BlockAccordion, { type AccordionBlockObject } from './../BlockAccordion/BlockAccordion.vue'
|
|
234
253
|
import BlockCardGrid from './../BlockCardGrid/BlockCardGrid.vue'
|
|
235
254
|
import BlockCta from './../BlockCta/BlockCta.vue'
|
|
236
255
|
import BlockHeading, { BlockHeadingObject } from './../BlockHeading/BlockHeading.vue'
|
|
@@ -240,6 +259,8 @@ import BlockImageComparison from './../BlockImageComparison/BlockImageComparison
|
|
|
240
259
|
import BlockImageGallery from './../BlockImageGallery/BlockImageGallery.vue'
|
|
241
260
|
import BlockInlineImage from './../BlockInlineImage/BlockInlineImage.vue'
|
|
242
261
|
import BlockKeyPoints from './../BlockKeyPoints/BlockKeyPoints.vue'
|
|
262
|
+
import BlockLinkCardList from './../BlockLinkCardList/BlockLinkCardList.vue'
|
|
263
|
+
import BlockLinkCarousel from './../BlockLinkCarousel/BlockLinkCarousel.vue'
|
|
243
264
|
import BlockListCards from './../BlockListCards/BlockListCards.vue'
|
|
244
265
|
import BlockQuote, { type BlockQuoteAttributes } from './../BlockQuote/BlockQuote.vue'
|
|
245
266
|
import BlockRelatedLinks, {
|
|
@@ -255,9 +276,6 @@ import BlockVideo from './../BlockVideo/BlockVideo.vue'
|
|
|
255
276
|
import BlockVideoEmbed, {
|
|
256
277
|
type BlockData as VideoBlockEmbedData
|
|
257
278
|
} from './../BlockVideoEmbed/BlockVideoEmbed.vue'
|
|
258
|
-
import BlockAnchor from './../BlockAnchor/BlockAnchor.vue'
|
|
259
|
-
import BlockAccordion from './../BlockAccordion/BlockAccordion.vue'
|
|
260
|
-
import { type AccordionBlockObject } from './../BlockAccordion/BlockAccordion.vue'
|
|
261
279
|
|
|
262
280
|
interface Variants {
|
|
263
281
|
[key: string]: string
|
|
@@ -272,6 +290,8 @@ export default defineComponent({
|
|
|
272
290
|
name: 'BlockStreamfield',
|
|
273
291
|
components: {
|
|
274
292
|
LayoutHelper,
|
|
293
|
+
BlockAnchor,
|
|
294
|
+
BlockAccordion,
|
|
275
295
|
BlockCardGrid,
|
|
276
296
|
BlockCta,
|
|
277
297
|
BlockHeading,
|
|
@@ -281,6 +301,8 @@ export default defineComponent({
|
|
|
281
301
|
BlockImageGallery,
|
|
282
302
|
BlockInlineImage,
|
|
283
303
|
BlockKeyPoints,
|
|
304
|
+
BlockLinkCardList,
|
|
305
|
+
BlockLinkCarousel,
|
|
284
306
|
BlockListCards,
|
|
285
307
|
BlockQuote,
|
|
286
308
|
BlockRelatedLinks,
|
|
@@ -291,9 +313,7 @@ export default defineComponent({
|
|
|
291
313
|
BlockIframeEmbed,
|
|
292
314
|
BlockGist,
|
|
293
315
|
BlockVideo,
|
|
294
|
-
BlockVideoEmbed
|
|
295
|
-
BlockAnchor,
|
|
296
|
-
BlockAccordion
|
|
316
|
+
BlockVideoEmbed
|
|
297
317
|
},
|
|
298
318
|
props: {
|
|
299
319
|
variant: {
|
|
@@ -3,7 +3,7 @@ import { computed } from 'vue'
|
|
|
3
3
|
import type { EduResourceCardObject } from './../../interfaces.ts'
|
|
4
4
|
import IconSubject from './../Icons/IconSubject.vue'
|
|
5
5
|
import IconProfile from './../Icons/IconProfile.vue'
|
|
6
|
-
|
|
6
|
+
import IconTime from './../Icons/IconTime.vue'
|
|
7
7
|
import {} from './../../utils/mixins'
|
|
8
8
|
import { rangeifyGrades } from './../../utils/rangeifyGrades'
|
|
9
9
|
|
|
@@ -29,6 +29,9 @@ const primarySubject = computed(() => {
|
|
|
29
29
|
const audience = computed(() => {
|
|
30
30
|
return rangeifyGrades(props.resource?.gradeLevels)
|
|
31
31
|
})
|
|
32
|
+
const time = computed(() => {
|
|
33
|
+
return props.resource?.time?.time
|
|
34
|
+
})
|
|
32
35
|
</script>
|
|
33
36
|
<template>
|
|
34
37
|
<div
|
|
@@ -57,6 +60,16 @@ const audience = computed(() => {
|
|
|
57
60
|
/>
|
|
58
61
|
<span>{{ audience }}</span>
|
|
59
62
|
</div>
|
|
63
|
+
<div
|
|
64
|
+
v-if="time"
|
|
65
|
+
class="MetadataEduResourceItem"
|
|
66
|
+
>
|
|
67
|
+
<IconTime
|
|
68
|
+
class="MetadataEduResourceIcon text-[1.15em]"
|
|
69
|
+
:class="iconClass"
|
|
70
|
+
/>
|
|
71
|
+
<span>{{ time }}</span>
|
|
72
|
+
</div>
|
|
60
73
|
</div>
|
|
61
74
|
</template>
|
|
62
75
|
<style lang="scss">
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<select
|
|
9
9
|
:id="generateId()"
|
|
10
10
|
v-model="selectValueHandler"
|
|
11
|
-
class="border-0 text-
|
|
11
|
+
class="border-0 text-action can-hover:hover:text-action-dark font-secondary font-semibold tracking-wider uppercase align-middle"
|
|
12
12
|
>
|
|
13
13
|
<option
|
|
14
14
|
disabled
|
package/src/constants.ts
CHANGED
|
@@ -11,6 +11,11 @@ export const eduMetadataDictionary: PillDictionaryInterface = {
|
|
|
11
11
|
variant: 'primary',
|
|
12
12
|
type: 'resource'
|
|
13
13
|
},
|
|
14
|
+
EDUTeachableMomentPage: {
|
|
15
|
+
label: 'Teachable Moment',
|
|
16
|
+
variant: 'primary',
|
|
17
|
+
type: 'resource'
|
|
18
|
+
},
|
|
14
19
|
EDUEventPage: {
|
|
15
20
|
variant: 'primary',
|
|
16
21
|
type: 'event'
|
|
@@ -24,5 +29,6 @@ export const searchContentTypeToPageType: DictionaryInterface = {
|
|
|
24
29
|
missions_mission: 'Mission',
|
|
25
30
|
eduevents_edueventpage: 'EDUEventPage',
|
|
26
31
|
eduresources_eduexplainerarticlepage: 'EDUExplainerArticlePage',
|
|
27
|
-
eduresources_edulessonpage: 'EDULessonPage'
|
|
32
|
+
eduresources_edulessonpage: 'EDULessonPage',
|
|
33
|
+
eduresources_eduteachablemomentpage: 'EDUTeachableMomentPage'
|
|
28
34
|
}
|
|
@@ -78,6 +78,8 @@ export const TextStyles = {
|
|
|
78
78
|
<code>.text-body-xs</code>
|
|
79
79
|
<p class="mt-8"><mark>Highlighted text</mark></p>
|
|
80
80
|
<code>mark</code>
|
|
81
|
+
<p class="mt-8"><span class="math-text">This is math text. a<sup>2</sup> + a<sub>b</sub> = c</span></p>
|
|
82
|
+
<code>.math-text</code>
|
|
81
83
|
</div>`
|
|
82
84
|
})
|
|
83
85
|
}
|
package/src/interfaces.ts
CHANGED
|
@@ -140,6 +140,7 @@ export interface GradeLevelsObject {
|
|
|
140
140
|
export interface EduResourceCardObject extends Card {
|
|
141
141
|
primarySubject: PrimarySubjectObject
|
|
142
142
|
gradeLevels: GradeLevelsObject[]
|
|
143
|
+
time: EduResourcesTime
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
export interface LinkObject {
|
|
@@ -213,11 +214,13 @@ export type MetaPanelTheme = 'primary' | 'secondary' | 'stars'
|
|
|
213
214
|
export interface PageObject {
|
|
214
215
|
__typename: string
|
|
215
216
|
contentType: string
|
|
217
|
+
lastPublishedAt?: string
|
|
216
218
|
breadcrumb?: string
|
|
217
219
|
slug: string
|
|
218
220
|
url: string
|
|
219
221
|
title: string
|
|
220
222
|
getTopicsForDisplay?: Topic[]
|
|
223
|
+
showJumpMenu?: boolean
|
|
221
224
|
label?: string
|
|
222
225
|
summary?: string
|
|
223
226
|
topper?: string
|
|
@@ -44,6 +44,7 @@ export const BaseStory = {
|
|
|
44
44
|
seoTitle: 'Test Lesson',
|
|
45
45
|
slug: 'test-lesson',
|
|
46
46
|
publicationDate: '2024-08-16',
|
|
47
|
+
lastPublishedAt: '2024-08-22T02:33:13.507206+00:00',
|
|
47
48
|
thumbnailImage: {
|
|
48
49
|
__typename: 'CustomImage',
|
|
49
50
|
original: 'http://127.0.0.1:9000/media/original_images/imagessirtfsirtf-090303-16.jpg',
|
|
@@ -114,15 +114,6 @@ const heroInline = computed((): boolean => {
|
|
|
114
114
|
return false
|
|
115
115
|
})
|
|
116
116
|
|
|
117
|
-
const computedClass = computed((): string => {
|
|
118
|
-
if (heroInline.value || heroEmpty) {
|
|
119
|
-
return 'pt-5 lg:pt-12'
|
|
120
|
-
} else if (!heroInline.value) {
|
|
121
|
-
return '-nav-offset'
|
|
122
|
-
}
|
|
123
|
-
return ''
|
|
124
|
-
})
|
|
125
|
-
|
|
126
117
|
const sectionOrder = [
|
|
127
118
|
'top',
|
|
128
119
|
'overview',
|
|
@@ -262,8 +253,7 @@ const consolidatedSections = computed((): EduLessonSectionObject[] => {
|
|
|
262
253
|
<template>
|
|
263
254
|
<div
|
|
264
255
|
v-if="data"
|
|
265
|
-
class="ThemeVariantLight"
|
|
266
|
-
:class="computedClass"
|
|
256
|
+
class="ThemeVariantLight pt-5 lg:pt-12"
|
|
267
257
|
>
|
|
268
258
|
<LayoutHelper
|
|
269
259
|
indent="col-2"
|
|
@@ -409,5 +399,19 @@ const consolidatedSections = computed((): EduLessonSectionObject[] => {
|
|
|
409
399
|
:heading="data.relatedContentHeading"
|
|
410
400
|
:items="data.relatedContent"
|
|
411
401
|
/>
|
|
402
|
+
|
|
403
|
+
<LayoutHelper
|
|
404
|
+
v-if="data.lastPublishedAt"
|
|
405
|
+
indent="col-3"
|
|
406
|
+
class="lg:my-18 my-10"
|
|
407
|
+
>
|
|
408
|
+
<p class="border-t border-gray-light-mid pt-8">
|
|
409
|
+
<strong>Lesson Last Updated:</strong>
|
|
410
|
+
{{
|
|
411
|
+
// @ts-ignore
|
|
412
|
+
$filters.displayDate(data.lastPublishedAt)
|
|
413
|
+
}}
|
|
414
|
+
</p>
|
|
415
|
+
</LayoutHelper>
|
|
412
416
|
</div>
|
|
413
417
|
</template>
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { HeroMediaData } from './../../../components/HeroMedia/HeroMedia.stories'
|
|
2
|
+
import { BlockIframeEmbedData } from './../../../components/BlockIframeEmbed/BlockIframeEmbed.stories.js'
|
|
3
|
+
import { BlockImageCarouselData } from './../../../components/BlockImageCarousel/BlockImageCarousel.stories'
|
|
4
|
+
import { BlockImageData } from './../../../components/BlockImage/BlockImage.stories'
|
|
5
|
+
import { BlockHeadingData } from './../../../components/BlockHeading/BlockHeading.stories'
|
|
6
|
+
import { BlockImageComparisonData } from './../../../components/BlockImageComparison/BlockImageComparison.stories'
|
|
7
|
+
import { BaseVideoData } from './../../../components/BaseVideo/BaseVideo.stories'
|
|
8
|
+
import { BlockVideoEmbedData } from './../../../components/BlockVideoEmbed/BlockVideoEmbed.stories'
|
|
9
|
+
import { BlockRelatedLinksData } from './../../../components/BlockRelatedLinks/BlockRelatedLinks.stories.js'
|
|
10
|
+
import { BlockLinkCardCarouselData } from './../../../components/BlockLinkCarousel/BlockLinkCarousel.stories.js'
|
|
11
|
+
import {
|
|
12
|
+
BlockStreamfieldTruncatedData,
|
|
13
|
+
BlockStreamfieldMinimalData
|
|
14
|
+
} from './../../../components/BlockStreamfield/BlockStreamfield.stories'
|
|
15
|
+
import PageEduTeachableMoment from './PageEduTeachableMoment.vue'
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
title: 'Templates/EDU/PageEduTeachableMoment',
|
|
19
|
+
component: PageEduTeachableMoment,
|
|
20
|
+
tags: ['!autodocs'],
|
|
21
|
+
decorators: [
|
|
22
|
+
() => ({
|
|
23
|
+
template: `<div id="storyDecorator" class="disable-nav-offset"><story/></div>`
|
|
24
|
+
})
|
|
25
|
+
],
|
|
26
|
+
parameters: {
|
|
27
|
+
layout: 'fullscreen',
|
|
28
|
+
html: {
|
|
29
|
+
root: '#storyDecorator'
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
excludeStories: /.*Data$/
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const BaseStory = {
|
|
36
|
+
args: {
|
|
37
|
+
data: {
|
|
38
|
+
__typename: 'EDUTeachableMomentPage',
|
|
39
|
+
title: 'A Teachable Moment',
|
|
40
|
+
lastPublishedAt: '2024-08-22T02:33:13.507206+00:00',
|
|
41
|
+
url: 'http://localhost:3000/edu/resources/teachable-moment',
|
|
42
|
+
pageType: 'EDUTeachableMomentPage',
|
|
43
|
+
contentType: 'edu_resources.EDUTeachableMomentPage',
|
|
44
|
+
showJumpMenu: true,
|
|
45
|
+
thumbnailImage: {
|
|
46
|
+
__typename: 'CustomImage',
|
|
47
|
+
original: 'http://127.0.0.1:9000/media/original_images/imagessirtfsirtf-090303-16.jpg',
|
|
48
|
+
alt: ''
|
|
49
|
+
},
|
|
50
|
+
hero: [
|
|
51
|
+
{
|
|
52
|
+
...HeroMediaData,
|
|
53
|
+
blockType: 'HeroImageBlock'
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
heroConstrain: true,
|
|
57
|
+
|
|
58
|
+
body: BlockStreamfieldTruncatedData.body,
|
|
59
|
+
|
|
60
|
+
relatedLinks: BlockRelatedLinksData.data,
|
|
61
|
+
relatedContentHeading: 'Related Content',
|
|
62
|
+
relatedContent: BlockLinkCardCarouselData
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const HeroCarousel = {
|
|
68
|
+
args: {
|
|
69
|
+
data: {
|
|
70
|
+
...BaseStory.args.data,
|
|
71
|
+
hero: [{ blockType: 'CarouselBlock', blocks: BlockImageCarouselData }]
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export const HeroImageComparison = {
|
|
77
|
+
args: {
|
|
78
|
+
data: {
|
|
79
|
+
...BaseStory.args.data,
|
|
80
|
+
hero: [
|
|
81
|
+
{
|
|
82
|
+
...BlockImageComparisonData
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export const HeroVideo = {
|
|
90
|
+
args: {
|
|
91
|
+
data: {
|
|
92
|
+
...BaseStory.args.data,
|
|
93
|
+
hero: [
|
|
94
|
+
{
|
|
95
|
+
blockType: 'VideoBlock',
|
|
96
|
+
video: BaseVideoData,
|
|
97
|
+
caption: 'Lorem ipsum dolor sit amet',
|
|
98
|
+
credit: 'NASA/JPL'
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const HeroVideoEmbed = {
|
|
106
|
+
args: {
|
|
107
|
+
data: {
|
|
108
|
+
...BaseStory.args.data,
|
|
109
|
+
hero: [
|
|
110
|
+
{
|
|
111
|
+
...BlockVideoEmbedData.data,
|
|
112
|
+
embed: {
|
|
113
|
+
embed: `<iframe title="Meet NASA's Diana Trujillo - Embedded Hero" width="480" height="270" src="https://www.youtube.com/embed/vUuUyYqI83Q?feature=oembed" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>`
|
|
114
|
+
},
|
|
115
|
+
blockType: 'VideoEmbedBlock'
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export const HeroIframeEmbed = {
|
|
123
|
+
args: {
|
|
124
|
+
data: {
|
|
125
|
+
...BaseStory.args.data,
|
|
126
|
+
hero: [
|
|
127
|
+
{
|
|
128
|
+
...BlockIframeEmbedData
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export const NoHero = {
|
|
136
|
+
args: {
|
|
137
|
+
data: {
|
|
138
|
+
...BaseStory.args.data,
|
|
139
|
+
hero: []
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|