@explorer-1/vue 0.2.6 → 0.2.7

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.
Files changed (38) hide show
  1. package/dist/explorer-1-vue.js +2612 -2556
  2. package/dist/explorer-1-vue.umd.cjs +14 -12
  3. package/dist/src/components/CalendarButton/CalendarButton.vue.d.ts +3 -2
  4. package/dist/src/components/EventCard/EventCard.vue.d.ts +9 -4
  5. package/dist/src/components/EventDetailHero/EventDetailHero.vue.d.ts +11 -0
  6. package/dist/src/components/NavDesktopEdu/NavDesktopEdu.stories.d.ts +58 -11
  7. package/dist/src/templates/edu/PageEduEventDetail/PageEduEventDetail.stories.d.ts +57 -29
  8. package/dist/src/utils/mixins.d.ts +2 -0
  9. package/dist/style.css +1 -1
  10. package/package.json +2 -2
  11. package/src/components/BaseButton/BaseButton.vue +1 -1
  12. package/src/components/BaseImage/BaseImage.vue +1 -1
  13. package/src/components/BaseTag/BaseTag.vue +2 -2
  14. package/src/components/BlockIframeEmbed/BlockIframeEmbed.vue +3 -2
  15. package/src/components/BlockImage/BlockImageStandard.vue +1 -1
  16. package/src/components/BlockKeyPoints/BlockKeyPoints.vue +2 -2
  17. package/src/components/BlockLinkCard/BlockLinkCard.vue +1 -0
  18. package/src/components/BlockRelatedLinks/BlockRelatedLinks.vue +29 -27
  19. package/src/components/BlockRelatedLinks/RelatedLink.vue +3 -3
  20. package/src/components/BlockVideo/BlockVideo.vue +1 -1
  21. package/src/components/BlockVideoEmbed/BlockVideoEmbed.vue +1 -1
  22. package/src/components/CalendarButton/CalendarButton.vue +9 -10
  23. package/src/components/EventCard/EventCard.vue +22 -8
  24. package/src/components/EventDetailHero/EventDetailHero.vue +45 -21
  25. package/src/components/HeroMedia/HeroMedia.vue +2 -2
  26. package/src/components/MixinCarousel/MixinCarousel.vue +2 -2
  27. package/src/components/NavDesktopEdu/NavDesktopEdu.vue +11 -1
  28. package/src/components/NavMobile/NavMobile.vue +19 -10
  29. package/src/components/ShareButtons/ShareButtons.vue +1 -1
  30. package/src/components/ShareButtonsEdu/ShareButtonsEdu.vue +1 -1
  31. package/src/components/TheFooter/TheFooter.vue +3 -1
  32. package/src/templates/PageEventDetail/PageEventDetail.vue +2 -1
  33. package/src/templates/PageNewsDetail/PageNewsDetail.vue +3 -1
  34. package/src/templates/edu/PageEduEventDetail/PageEduEventDetail.stories.js +146 -104
  35. package/src/templates/edu/PageEduEventDetail/PageEduEventDetail.vue +101 -50
  36. package/src/templates/edu/PageEduExplainerArticle/PageEduExplainerArticle.vue +1 -1
  37. package/src/utils/mixins.ts +18 -14
  38. package/tsconfig.json +1 -1
@@ -1,6 +1,5 @@
1
1
  import { BlockKeyPointsData } from './../../../components/BlockKeyPoints/BlockKeyPoints.stories'
2
2
  import { BlockLinkCardCarouselData } from './../../../components/BlockLinkCarousel/BlockLinkCarousel.stories.js'
3
- import { EventDetailHeroData } from './../../../components/EventDetailHero/EventDetailHero.stories'
4
3
  import { EventsBlockLinkCarouselData } from './../../../components/BlockLinkCarousel/BlockLinkCarousel.stories'
5
4
  import PageEduEventDetail from './PageEduEventDetail.vue'
6
5
 
@@ -17,114 +16,157 @@ export default {
17
16
  excludeStories: /.*Data$/
18
17
  }
19
18
 
20
- // stories
21
- export const BaseStory = {
22
- name: 'PageEduEventDetail',
23
- args: {
24
- data: {
25
- id: '285',
26
- title: 'Becoming a NASA engineer',
27
- slug: 'becoming-a-nasa-engineer',
28
- url: '/events/becoming-a-nasa-engineer',
29
- startDate: '2022-01-23',
30
- startDatetime: '2022-01-23T17:00:00-08:00',
31
- startTime: '17:00:00',
32
- endDate: '2022-01-25',
33
- endDatetime: '2022-01-25T23:00:00-08:00',
34
- endTime: '23:00:00',
35
- isAllDay: false,
36
- timezone: 'PST',
37
- eventType: 'Workshop',
38
- summary:
39
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et luctus nisi. Maecenas vel turpis sem. Nullam ultricies nulla quis nisi faucibus eleifend. In turpis ante, blandit nec dapibus tempor, posuere at erat. In justo quam, imperdiet at hendrerit eget, imperdiet ut orci. ',
40
- locationName: 'Webcast',
41
- registerLink: [
42
- {
43
- text: 'Registration Link',
44
- document: '',
45
- page: {
46
- url: '/placeholder'
47
- },
48
- externalLink: ''
49
- }
50
- ],
51
- eventImage: {
52
- __typename: 'CustomImage',
53
- srcSet:
54
- 'https://picsum.photos/720/420 320w, https://picsum.photos/720/420 640w, https://picsum.photos/720/420 720w',
55
- original: 'https://picsum.photos/720/420',
56
- src: {
57
- __typename: 'CustomRendition',
58
- url: 'https://picsum.photos/720/420',
59
- width: '720',
60
- height: '420'
19
+ const PageEduEventDetailData = {
20
+ id: '285',
21
+ title: 'Becoming a NASA engineer',
22
+ slug: 'becoming-a-nasa-engineer',
23
+ url: '/events/becoming-a-nasa-engineer',
24
+ timezone: 'PST',
25
+ startDate: '2024-08-08',
26
+ startDatetime: '2024-08-08T14:00:00-07:00',
27
+ startTime: '15:00:00',
28
+ endDate: '2024-08-08',
29
+ endDatetime: '2024-08-08T22:00:00-07:00',
30
+ endTime: '22:00:00',
31
+ ongoing: false,
32
+ eventType: 'Workshop',
33
+ topper: '<p data-block-key="yecrn">Event topper</p>',
34
+ summary:
35
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et luctus nisi. Maecenas vel turpis sem. Nullam ultricies nulla quis nisi faucibus eleifend. In turpis ante, blandit nec dapibus tempor, posuere at erat. In justo quam, imperdiet at hendrerit eget, imperdiet ut orci. ',
36
+ locationName: 'Webcast',
37
+ registerLink: [
38
+ {
39
+ document: null,
40
+ externalLink: 'https://nasa.gov',
41
+ page: null,
42
+ text: 'Registration Link'
43
+ }
44
+ ],
45
+ eventImage: {
46
+ __typename: 'CustomImage',
47
+ srcSet:
48
+ 'https://picsum.photos/720/420 320w, https://picsum.photos/720/420 640w, https://picsum.photos/720/420 720w',
49
+ original: 'https://picsum.photos/720/420',
50
+ src: {
51
+ __typename: 'CustomRendition',
52
+ url: 'https://picsum.photos/720/420',
53
+ width: '720',
54
+ height: '420'
55
+ },
56
+ title: 'Marine Picks First Public Mars Global Surveyor Image',
57
+ alt: '',
58
+ caption:
59
+ '<p data-block-key="y00sz">A close-up view of part of the area imaged by Mars Global Surveyor for its public request program.</p>',
60
+ credit: 'Credit',
61
+ detailUrl: null
62
+ },
63
+ heroConstrain: false,
64
+ heroPosition: 'inline',
65
+ thumbnailImage: {
66
+ alt: '',
67
+ original: 'https://picsum.photos/512/288'
68
+ },
69
+ targetAudience: 'All ages',
70
+
71
+ body: [
72
+ BlockKeyPointsData,
73
+ {
74
+ blockType: 'RichTextBlock',
75
+ value:
76
+ '<p>Lorem ipsum <a href="/missions/test-mission/">dolor</a> sit amet, consectetur adipiscing elit. Quisque vitae justo quis justo malesuada molestie. Cras sed tincidunt dui.</p><p>Integer imperdiet blandit neque vitae euismod. Nulla aliquet lacus nibh, vel tincidunt urna efficitur non. In et eros vitae ex posuere maximus quis eget urna. Suspendisse fringilla posuere velit sit amet posuere. Morbi malesuada bibendum vehicula. Donec faucibus ut erat ut mattis. Suspendisse ornare, quam at placerat cursus, dolor mi lacinia nunc, eget maximus augue nulla in dolor.</p>\n'
77
+ }
78
+ ],
79
+ relatedEvents: [...EventsBlockLinkCarouselData],
80
+ speakers: [
81
+ {
82
+ speaker: {
83
+ host: 'host',
84
+ id: '1',
85
+ internalLink: null,
86
+ name: 'Varoujan Gorjian',
87
+ title: 'Splitzer Research Scientest, JPL'
88
+ }
89
+ },
90
+ {
91
+ speaker: {
92
+ host: 'co-host',
93
+ id: '2',
94
+ image: {
95
+ alt: '',
96
+ src: {
97
+ height: '450',
98
+ url: 'https://picsum.photos/560/560',
99
+ width: '450'
100
+ }
61
101
  },
62
- title: 'Marine Picks First Public Mars Global Surveyor Image',
63
- alt: '',
64
- caption:
65
- '<p data-block-key="y00sz">A close-up view of part of the area imaged by Mars Global Surveyor for its public request program.</p>',
66
- credit: 'Credit',
67
- detailUrl: null
68
- },
69
- thumbnailImage: {
70
- alt: '',
71
- original: 'https://picsum.photos/512/288'
72
- },
73
- targetAudience: 'All ages',
74
- body: [
75
- BlockKeyPointsData,
76
- {
77
- blockType: 'RichTextBlock',
78
- value:
79
- '<p>Lorem ipsum <a href="/missions/test-mission/">dolor</a> sit amet, consectetur adipiscing elit. Quisque vitae justo quis justo malesuada molestie. Cras sed tincidunt dui.</p><p>Integer imperdiet blandit neque vitae euismod. Nulla aliquet lacus nibh, vel tincidunt urna efficitur non. In et eros vitae ex posuere maximus quis eget urna. Suspendisse fringilla posuere velit sit amet posuere. Morbi malesuada bibendum vehicula. Donec faucibus ut erat ut mattis. Suspendisse ornare, quam at placerat cursus, dolor mi lacinia nunc, eget maximus augue nulla in dolor.</p>\n'
80
- }
81
- ],
82
- relatedEvents: [...EventsBlockLinkCarouselData],
83
- speakers: [
102
+ internalLink: null,
103
+ name: 'Robert Hurt',
104
+ title: 'Splitzer visualisation'
105
+ }
106
+ }
107
+ ],
108
+ relatedLinks: [
109
+ {
110
+ blockType: 'RelatedLinksBlock',
111
+ heading: 'Related Links',
112
+ links: [
84
113
  {
85
- host: 'host',
86
- id: '1',
87
- internalLink: null,
88
- name: 'Varoujan Gorjian',
89
- title: 'Splitzer Research Scientest, JPL'
114
+ document: null,
115
+ externalLink: 'http://www.google.com',
116
+ page: null,
117
+ text: 'Lorem ipsum dolor'
90
118
  },
91
119
  {
92
- host: 'co-host',
93
- id: '2',
94
- image: {
95
- alt: '',
96
- src: {
97
- height: '450',
98
- url: 'https://picsum.photos/560/560',
99
- width: '450'
100
- }
101
- },
102
- internalLink: null,
103
- name: 'Robert Hurt',
104
- title: 'Splitzer visualisation'
120
+ document: null,
121
+ externalLink: 'http://www.google.com',
122
+ page: null,
123
+ text: 'Sit amet consectatur'
105
124
  }
106
- ],
107
- relatedLinks: [
108
- {
109
- blockType: 'RelatedLinksBlock',
110
- heading: 'Related Links',
111
- links: [
112
- {
113
- document: null,
114
- externalLink: 'http://www.google.com',
115
- page: null,
116
- text: 'Lorem ipsum dolor'
117
- },
118
- {
119
- document: null,
120
- externalLink: 'http://www.google.com',
121
- page: null,
122
- text: 'Sit amet consectatur'
123
- }
124
- ]
125
- }
126
- ],
127
- relatedContent: BlockLinkCardCarouselData
125
+ ]
126
+ }
127
+ ],
128
+ relatedContent: BlockLinkCardCarouselData
129
+ }
130
+ // stories
131
+ export const BaseStory = {
132
+ name: 'PageEduEventDetail',
133
+ args: { data: PageEduEventDetailData }
134
+ }
135
+
136
+ export const CustomDate = {
137
+ args: {
138
+ data: {
139
+ ...PageEduEventDetailData,
140
+ startDate: '2024-08-08',
141
+ startDatetime: null,
142
+ startTime: null,
143
+ endDate: '2024-08-08',
144
+ endDatetime: '2024-08-08T22:00:00-07:00',
145
+ endTime: null,
146
+ customDate: 'Custom date information',
147
+ ongoing: false
148
+ }
149
+ }
150
+ }
151
+
152
+ export const MultiDayEvent = {
153
+ args: {
154
+ data: {
155
+ ...PageEduEventDetailData,
156
+ startDate: '2024-08-08',
157
+ endDate: '2024-08-12',
158
+ startDatetime: '2024-08-08T14:00:00-07:00',
159
+ startTime: '15:00:00',
160
+ endDatetime: '2024-08-12T22:00:00-07:00'
161
+ }
162
+ }
163
+ }
164
+
165
+ export const Ongoing = {
166
+ args: {
167
+ data: {
168
+ ...PageEduEventDetailData,
169
+ ongoing: true
128
170
  }
129
171
  }
130
172
  }
@@ -1,7 +1,10 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="data"
4
- class="PageEduEventDetail pt-5 ThemeVariantLight lg:pt-12"
4
+ class="PageEduEventDetail ThemeVariantLight"
5
+ :class="{
6
+ 'pt-5 lg:pt-12': heroIsInline
7
+ }"
5
8
  itemscope
6
9
  itemtype="http://schema.org/Event"
7
10
  >
@@ -25,7 +28,28 @@
25
28
  itemprop="description"
26
29
  :content="data.summary || data.body"
27
30
  />
28
-
31
+ <div
32
+ v-if="!heroIsInline"
33
+ class="relative max-w-screen-3xl mx-auto -mt-1"
34
+ >
35
+ <!-- hero image -->
36
+ <HeroMedia
37
+ class="md:mb-12 lg:mb-18 mb-10"
38
+ :image="data.eventImage"
39
+ :constrain="data.heroConstrain"
40
+ />
41
+ <div
42
+ v-if="formattedSplitEventDates"
43
+ class="ThemeVariantLight absolute top-0 left-0 z-10 px-4 py-4 text-center text-white bg-primary print:hidden"
44
+ >
45
+ <div class="font-extrabold text-6xl leading-tight tracking-wider">
46
+ {{ formattedSplitEventDates.month }}
47
+ </div>
48
+ <div class="text-subtitle">
49
+ {{ formattedSplitEventDates.year }}
50
+ </div>
51
+ </div>
52
+ </div>
29
53
  <LayoutHelper
30
54
  indent="col-2"
31
55
  class="mb-6 lg:mb-12"
@@ -47,6 +71,14 @@
47
71
  >
48
72
  {{ data.title }}
49
73
  </BaseHeading>
74
+ <div
75
+ v-if="data.targetAudience"
76
+ class="text-body-lg mt-3 mb-6"
77
+ >
78
+ <strong>Target Audience:</strong>
79
+
80
+ {{ data.targetAudience }}
81
+ </div>
50
82
  <ShareButtonsEdu
51
83
  class="mt-4"
52
84
  :title="data.title"
@@ -56,8 +88,11 @@
56
88
 
57
89
  <LayoutHelper indent="col-2">
58
90
  <EventDetailHero
91
+ v-if="heroIsInline"
59
92
  :image="data.eventImage"
60
93
  :start-date-split="formattedSplitEventDates"
94
+ :constrain="data.heroConstrain"
95
+ :ongoing="data.ongoing"
61
96
  />
62
97
 
63
98
  <!-- Event details -->
@@ -67,17 +102,18 @@
67
102
  :class="data.registerLink && data.registerLink.length > 0 ? '' : 'lg:mb-10'"
68
103
  >
69
104
  <div
70
- v-if="formattedEventDates || data.customDate"
105
+ v-if="data.ongoing || data.customDate || formattedEventDates"
71
106
  class="PageEduEventDetail__Metadata text-primary"
107
+ :class="{ 'flex-2': data.customDate }"
72
108
  >
73
- <IconCalendar class="relative mr-3 text-[1.2rem]" />
74
- <span>{{ formattedEventDates || data.customDate }}</span>
109
+ <IconCalendar class="relative mr-3 lg:mr-2 xl:mr-3 text-[1.2rem]" />
110
+ <span>{{ data.ongoing ? 'Ongoing' : data.customDate || formattedEventDates }}</span>
75
111
  </div>
76
112
  <div
77
113
  v-show="displayTime"
78
114
  class="PageEduEventDetail__Metadata text-primary"
79
115
  >
80
- <IconTime class="relative mr-3" />
116
+ <IconTime class="relative mr-3 lg:mr-2 xl:mr-3" />
81
117
  <span>{{ displayTime }}</span>
82
118
  </div>
83
119
  <!--Virtual location -->
@@ -96,7 +132,7 @@
96
132
  itemprop="name"
97
133
  :content="data.locationName"
98
134
  />
99
- <IconLocation class="relative mr-3" />
135
+ <IconLocation class="relative mr-3 lg:mr-2 xl:mr-3" />
100
136
  <BaseLink
101
137
  variant="none"
102
138
  class="text-action"
@@ -109,13 +145,14 @@
109
145
  <!-- Normal location -->
110
146
  <div
111
147
  v-else-if="data.locationName"
148
+ min-
112
149
  class="PageEduEventDetail__Metadata text-primary"
113
150
  >
114
151
  <meta
115
152
  itemprop="location"
116
153
  :content="data.locationName"
117
154
  />
118
- <IconLocation class="relative mr-3" />
155
+ <IconLocation class="relative mr-3 lg:mr-2 xl:mr-3" />
119
156
  <BaseLink
120
157
  v-if="data.locationLink"
121
158
  variant="none"
@@ -126,13 +163,6 @@
126
163
  </BaseLink>
127
164
  <span v-else>{{ data.locationName }}</span>
128
165
  </div>
129
- <div
130
- v-if="data.targetAudience"
131
- class="PageEduEventDetail__Metadata text-primary"
132
- >
133
- <IconUser class="relative mr-3 text-[.9rem]" />
134
- <span>{{ data.targetAudience }}</span>
135
- </div>
136
166
 
137
167
  <div class="PageEduEventDetail__Buttons">
138
168
  <BaseButton
@@ -172,6 +202,12 @@
172
202
  class="grid-cols-10 lg:grid -mx-4 lg:mx-0"
173
203
  >
174
204
  <div class="col-span-7">
205
+ <BlockText
206
+ v-if="data.topper && data.topper.length > 2"
207
+ class="lg:mb-8 mb-5 px-4 lg:px-0"
208
+ :text="data.topper"
209
+ />
210
+
175
211
  <p
176
212
  v-if="data.summary"
177
213
  class="BlockText text-body-lg mb-8 px-4 lg:px-0 font-semibold"
@@ -204,7 +240,7 @@
204
240
  >
205
241
  <div class="flex flex-col flex-wrap justify-start md:flex-row md:-mx-4">
206
242
  <div
207
- v-for="(speaker, index) in data.speakers"
243
+ v-for="(item, index) in data.speakers"
208
244
  :key="index"
209
245
  class="flex flex-1 mb-6 md:flex-none md:flex-wrap md:mx-4 md:w-56"
210
246
  >
@@ -215,10 +251,10 @@
215
251
  transparent-mode
216
252
  >
217
253
  <BaseImage
218
- v-if="speaker.image && speaker.image.src"
219
- :src="speaker.image.src.url"
220
- :width="speaker.image.src.width"
221
- :height="speaker.image.src.height"
254
+ v-if="item.speaker.image && item.speaker.image.src"
255
+ :src="item.speaker.image.src.url"
256
+ :width="item.speaker.image.src.width"
257
+ :height="item.speaker.image.src.height"
222
258
  alt=""
223
259
  class="object-cover"
224
260
  loading="lazy"
@@ -232,30 +268,30 @@
232
268
  </div>
233
269
  <div class="flex-1 h-full">
234
270
  <h3
235
- v-if="speaker.name"
271
+ v-if="item.speaker.name"
236
272
  class="my-3 text-lg !font-normal !tracking-normal leading-none"
237
273
  >
238
274
  <BaseLink
239
- v-if="speaker.internalLink || speaker.externalLink"
275
+ v-if="item.speaker.internalLink || item.speaker.externalLink"
240
276
  link-class="no-underline normal-case"
241
- :to="speaker.internalLink ? speaker.internalLink.url : null"
242
- :href="speaker.externalLink ? speaker.externalLink : null"
277
+ :to="item.speaker.internalLink ? item.speaker.internalLink.url : null"
278
+ :href="item.speaker.externalLink ? item.speaker.externalLink : null"
243
279
  external-target-blank
244
280
  >
245
- {{ speaker.name }}
281
+ {{ item.speaker.name }}
246
282
  </BaseLink>
247
283
  <template v-else>
248
- {{ speaker.name }}
284
+ {{ item.speaker.name }}
249
285
  </template>
250
286
  </h3>
251
287
  <p
252
- v-if="speaker.title"
288
+ v-if="item.speaker.title"
253
289
  class="mb-3 text-gray-mid-dark"
254
290
  >
255
- {{ speaker.title }}
291
+ {{ item.speaker.title }}
256
292
  </p>
257
293
  <p class="text-action capitalize">
258
- {{ speaker.host }}
294
+ {{ item.speaker.host }}
259
295
  </p>
260
296
  </div>
261
297
  </div>
@@ -280,7 +316,7 @@
280
316
  <LayoutHelper
281
317
  v-if="data.relatedEvents?.length"
282
318
  indent="col-1"
283
- class="my-12 lg:my-16"
319
+ class="my-12 lg:my-16 px-0"
284
320
  >
285
321
  <BlockLinkCarousel
286
322
  item-type="cards"
@@ -292,7 +328,7 @@
292
328
  <!-- Related Content -->
293
329
  <div
294
330
  v-if="data.relatedContent?.length"
295
- class="bg-stars bg-[#15003B] lg:py-24 lg:mt-24 py-12 mt-12"
331
+ class="bg-stars bg-[#15003B] lg:py-24 lg:mt-24 py-12 mt-12 print:px-4"
296
332
  >
297
333
  <BlockLinkCarousel
298
334
  class="ThemeVariantDark"
@@ -315,10 +351,10 @@ import BaseHeading from './../../../components/BaseHeading/BaseHeading.vue'
315
351
  import BaseTag from './../../../components/BaseTag/BaseTag.vue'
316
352
  import ShareButtonsEdu from './../../../components/ShareButtonsEdu/ShareButtonsEdu.vue'
317
353
  import EventDetailHero from './../../../components/EventDetailHero/EventDetailHero.vue'
354
+ import HeroMedia from './../../../components/HeroMedia/HeroMedia.vue'
318
355
  import IconCalendar from './../../../components/Icons/IconCalendar.vue'
319
356
  import IconLocation from './../../../components/Icons/IconLocation.vue'
320
357
  import IconTime from './../../../components/Icons/IconTime.vue'
321
- import IconUser from './../../../components/Icons/IconUser.vue'
322
358
  import BaseLink from './../../../components/BaseLink/BaseLink.vue'
323
359
  import BaseButton from './../../../components/BaseButton/BaseButton.vue'
324
360
  import CalendarButton from './../../../components/CalendarButton/CalendarButton.vue'
@@ -327,6 +363,8 @@ import BaseImagePlaceholder from './../../../components/BaseImagePlaceholder/Bas
327
363
  import BaseImage from './../../../components/BaseImage/BaseImage.vue'
328
364
  import BlockRelatedLinks from './../../../components/BlockRelatedLinks/BlockRelatedLinks.vue'
329
365
  import BlockLinkCarousel from './../../../components/BlockLinkCarousel/BlockLinkCarousel.vue'
366
+ import BlockText from './../../../components/BlockText/BlockText.vue'
367
+
330
368
  // @ts-ignore
331
369
  import PlaceholderPortrait from '@explorer-1/common/src/images/svg/placeholder-portrait.svg'
332
370
 
@@ -338,10 +376,10 @@ export default defineComponent({
338
376
  BaseTag,
339
377
  ShareButtonsEdu,
340
378
  EventDetailHero,
379
+ HeroMedia,
341
380
  IconCalendar,
342
381
  IconLocation,
343
382
  IconTime,
344
- IconUser,
345
383
  BaseLink,
346
384
  BaseButton,
347
385
  CalendarButton,
@@ -349,7 +387,8 @@ export default defineComponent({
349
387
  BaseImagePlaceholder,
350
388
  BaseImage,
351
389
  BlockRelatedLinks,
352
- BlockLinkCarousel
390
+ BlockLinkCarousel,
391
+ BlockText
353
392
  },
354
393
  props: {
355
394
  data: {
@@ -364,22 +403,35 @@ export default defineComponent({
364
403
  }
365
404
  },
366
405
  computed: {
406
+ startDateTimeForFormatting(): string {
407
+ return this.data?.startDatetime || this.data?.startDate
408
+ },
367
409
  displayTime(): string {
368
- return this.data
369
- ? mixinFormatEventTimeInHoursAndMinutes(
370
- this.data.startDatetime,
371
- this.data.endDatetime,
372
- this.data.endTime
373
- )
374
- : ''
410
+ if (!this.data?.customDate) {
411
+ const time =
412
+ this.data && this.startDateTimeForFormatting
413
+ ? mixinFormatEventTimeInHoursAndMinutes(
414
+ this.startDateTimeForFormatting,
415
+ this.data.endDatetime,
416
+ this.data.endTime
417
+ )
418
+ : undefined
419
+ return time ? time.replaceAll(':00', '') : ''
420
+ }
421
+ return ''
375
422
  },
376
- formattedEventDates(): string {
377
- return this.data ? mixinFormatEventDates(this.data.startDatetime, this.data.endDatetime) : ''
423
+ formattedEventDates(): string | undefined {
424
+ return this.data && this.startDateTimeForFormatting
425
+ ? mixinFormatEventDates(this.startDateTimeForFormatting, this.data.endDatetime)
426
+ : undefined
378
427
  },
379
428
  formattedSplitEventDates() {
380
- return this.data
381
- ? mixinFormatSplitEventDates(this.data.startDatetime, this.data.endDatetime)
429
+ return this.data && this.startDateTimeForFormatting
430
+ ? mixinFormatSplitEventDates(this.startDateTimeForFormatting, this.data.endDatetime)
382
431
  : undefined
432
+ },
433
+ heroIsInline(): boolean {
434
+ return this.data?.heroPosition === 'inline'
383
435
  }
384
436
  }
385
437
  })
@@ -389,12 +441,11 @@ export default defineComponent({
389
441
  .PageEduEventDetail__Metadata {
390
442
  @apply flex;
391
443
  @apply items-baseline;
392
- @apply mr-12 md:mr-8 lg:mr-12;
444
+ @apply mr-4 md:mr-4 xl:mr-12;
393
445
  @apply mb-5 lg:mb-7;
446
+ @apply lg:max-w-[17rem] lg:min-w-[10rem];
394
447
 
395
448
  span {
396
- max-width: 230px;
397
- min-width: 110px;
398
449
  @apply text-gray-dark;
399
450
  }
400
451
 
@@ -409,8 +460,8 @@ export default defineComponent({
409
460
  @apply lg:ml-auto;
410
461
  @apply mt-10;
411
462
  @apply lg:mt-0;
412
-
413
- max-width: 260px;
463
+ @apply text-center;
464
+ @apply max-w-[17rem];
414
465
  }
415
466
  .bg-stars .MixinCarousel__Heading {
416
467
  @apply text-white;
@@ -192,7 +192,7 @@ export default defineComponent({
192
192
  <!-- related content -->
193
193
  <BlockLinkCarousel
194
194
  item-type="cards"
195
- class="lg:my-24 my-12"
195
+ class="lg:my-24 my-12 print:px-4"
196
196
  :heading="data.relatedContentHeading"
197
197
  :items="data.relatedContent"
198
198
  />