@openeventkit/event-site 2.0.89 → 2.0.90
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 -3
- package/src/cms/config/collections/defaultPagesCollection/marketingPage/index.js +38 -27
- package/src/cms/config/collections/defaultPagesCollection/marketingPage/typeDefs.js +17 -12
- package/src/components/MarketingHeroComponent.js +41 -41
- package/src/content/marketing-page/index.json +2 -2
- package/src/pages/index.js +17 -14
- package/src/templates/marketing-page-template.js +35 -27
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openeventkit/event-site",
|
|
3
3
|
"description": "Event Site",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.90",
|
|
5
5
|
"author": "Tipit LLC",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@mui/base": "^5.0.0-alpha.114",
|
|
@@ -43,7 +43,6 @@
|
|
|
43
43
|
"final-form": "4.20.7",
|
|
44
44
|
"font-awesome": "^4.7.0",
|
|
45
45
|
"formik": "^2.2.9",
|
|
46
|
-
"fs-extra": "^9.0.1",
|
|
47
46
|
"full-schedule-widget": "3.0.3",
|
|
48
47
|
"gatsby": "^5.8.1",
|
|
49
48
|
"gatsby-alias-imports": "^1.0.6",
|
|
@@ -78,7 +77,6 @@
|
|
|
78
77
|
"moment-timezone": "^0.5.31",
|
|
79
78
|
"netlify-cms-app": "^2.15.72",
|
|
80
79
|
"netlify-cms-lib-widgets": "^1.8.0",
|
|
81
|
-
"node-sass-utils": "^1.1.3",
|
|
82
80
|
"openstack-uicore-foundation": "4.1.65",
|
|
83
81
|
"path-browserify": "^1.0.1",
|
|
84
82
|
"prop-types": "^15.6.0",
|
|
@@ -116,7 +116,7 @@ const marketingPage = {
|
|
|
116
116
|
name: "countdown",
|
|
117
117
|
fields: [
|
|
118
118
|
booleanField({
|
|
119
|
-
label: "
|
|
119
|
+
label: "Display",
|
|
120
120
|
name: "display",
|
|
121
121
|
required: false
|
|
122
122
|
}),
|
|
@@ -128,7 +128,7 @@ const marketingPage = {
|
|
|
128
128
|
}),
|
|
129
129
|
objectField({
|
|
130
130
|
label: "Widgets",
|
|
131
|
-
name: "
|
|
131
|
+
name: "widgets",
|
|
132
132
|
fields: [
|
|
133
133
|
objectField({
|
|
134
134
|
label: "Text",
|
|
@@ -196,41 +196,52 @@ const marketingPage = {
|
|
|
196
196
|
})
|
|
197
197
|
]
|
|
198
198
|
}),
|
|
199
|
-
|
|
200
|
-
label: "Redirect to Event",
|
|
201
|
-
name: "eventRedirect",
|
|
202
|
-
required: false,
|
|
203
|
-
hint: "User will be redirected to this event after login"
|
|
204
|
-
}),
|
|
205
|
-
listField({
|
|
199
|
+
objectField({
|
|
206
200
|
label: "Masonry",
|
|
207
201
|
name: "masonry",
|
|
208
202
|
fields: [
|
|
209
|
-
|
|
210
|
-
label: "
|
|
211
|
-
name: "
|
|
203
|
+
booleanField({
|
|
204
|
+
label: "Display",
|
|
205
|
+
name: "display",
|
|
212
206
|
required: false
|
|
213
207
|
}),
|
|
214
|
-
|
|
215
|
-
label: "
|
|
216
|
-
name: "
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
label: "
|
|
220
|
-
|
|
208
|
+
listField({
|
|
209
|
+
label: "Items",
|
|
210
|
+
name: "items",
|
|
211
|
+
fields: [
|
|
212
|
+
stringField({
|
|
213
|
+
label: "Placement",
|
|
214
|
+
name: "placement",
|
|
215
|
+
required: false
|
|
216
|
+
}),
|
|
217
|
+
selectField({
|
|
218
|
+
label: "Size",
|
|
219
|
+
name: "size",
|
|
220
|
+
options: [
|
|
221
|
+
selectOption({
|
|
222
|
+
label: "Single",
|
|
223
|
+
value: 1
|
|
224
|
+
}),
|
|
225
|
+
selectOption({
|
|
226
|
+
label: "Double",
|
|
227
|
+
value: 2
|
|
228
|
+
})
|
|
229
|
+
]
|
|
221
230
|
}),
|
|
222
|
-
|
|
223
|
-
label: "
|
|
224
|
-
|
|
231
|
+
linkImagesField({
|
|
232
|
+
label: "Images",
|
|
233
|
+
name: "images",
|
|
234
|
+
imageRequired: true
|
|
225
235
|
})
|
|
226
236
|
]
|
|
227
|
-
}),
|
|
228
|
-
linkImagesField({
|
|
229
|
-
label: "Images",
|
|
230
|
-
name: "images",
|
|
231
|
-
imageRequired: true
|
|
232
237
|
})
|
|
233
238
|
]
|
|
239
|
+
}),
|
|
240
|
+
numberField({
|
|
241
|
+
label: "Redirect to Event",
|
|
242
|
+
name: "eventRedirect",
|
|
243
|
+
required: false,
|
|
244
|
+
hint: "User will be redirected to this event after login"
|
|
234
245
|
})
|
|
235
246
|
]
|
|
236
247
|
};
|
|
@@ -9,29 +9,34 @@ module.exports = `
|
|
|
9
9
|
alt: String
|
|
10
10
|
link: String
|
|
11
11
|
}
|
|
12
|
-
type
|
|
12
|
+
type MarketingPageMasonryItem {
|
|
13
|
+
display: Boolean
|
|
13
14
|
placement: String
|
|
14
15
|
size: Int
|
|
15
16
|
images: [LinkImageWithAlt]
|
|
16
17
|
}
|
|
17
|
-
type
|
|
18
|
+
type MarketingPageMasonry {
|
|
18
19
|
display: Boolean
|
|
19
|
-
|
|
20
|
+
items: [MarketingPageMasonryItem]
|
|
20
21
|
}
|
|
21
|
-
type
|
|
22
|
+
type MarketingPageWidget {
|
|
22
23
|
display: Boolean
|
|
23
24
|
title: String
|
|
24
25
|
}
|
|
25
|
-
type
|
|
26
|
+
type MarketingPageTextWidget {
|
|
27
|
+
display: Boolean
|
|
28
|
+
content: String
|
|
29
|
+
}
|
|
30
|
+
type MarketingPageImageWidget {
|
|
26
31
|
display: Boolean
|
|
27
32
|
title: String
|
|
28
33
|
image: ImageWithAlt
|
|
29
34
|
}
|
|
30
|
-
type
|
|
31
|
-
text:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
type MarketingPageWidgets {
|
|
36
|
+
text: MarketingPageTextWidget
|
|
37
|
+
image: MarketingPageImageWidget
|
|
38
|
+
schedule: MarketingPageWidget
|
|
39
|
+
disqus: MarketingPageWidget
|
|
35
40
|
}
|
|
36
41
|
type MarketingPageCountdown {
|
|
37
42
|
display: Boolean
|
|
@@ -57,9 +62,9 @@ module.exports = `
|
|
|
57
62
|
}
|
|
58
63
|
type MarketingPageJson implements Node {
|
|
59
64
|
hero: MarketingPageHero
|
|
60
|
-
leftColumn: MarketingPageLeftColumn
|
|
61
65
|
countdown: MarketingPageCountdown
|
|
66
|
+
widgets: MarketingPageWidgets
|
|
67
|
+
masonry: MarketingPageMasonry
|
|
62
68
|
eventRedirect: Int
|
|
63
|
-
masonry: [MarketingPageMasonry]
|
|
64
69
|
}
|
|
65
70
|
`;
|
|
@@ -12,7 +12,7 @@ import styles from "../styles/marketing-hero.module.scss";
|
|
|
12
12
|
|
|
13
13
|
const MarketingHeroComponent = ({
|
|
14
14
|
location,
|
|
15
|
-
|
|
15
|
+
data,
|
|
16
16
|
}) => {
|
|
17
17
|
|
|
18
18
|
const sliderRef = useRef(null);
|
|
@@ -32,21 +32,21 @@ const MarketingHeroComponent = ({
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
const getButtons = () => {
|
|
35
|
-
const {
|
|
35
|
+
const {
|
|
36
|
+
registerButton,
|
|
37
|
+
loginButton
|
|
38
|
+
} = data?.buttons || {};
|
|
36
39
|
|
|
37
|
-
return
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
)}
|
|
48
|
-
</>
|
|
49
|
-
);
|
|
40
|
+
return <>
|
|
41
|
+
{registerButton?.display &&
|
|
42
|
+
<span className={styles.link}>
|
|
43
|
+
<RegistrationLiteComponent location={location} />
|
|
44
|
+
</span>
|
|
45
|
+
}
|
|
46
|
+
{loginButton?.display &&
|
|
47
|
+
<AuthComponent location={location} />
|
|
48
|
+
}
|
|
49
|
+
</>;
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
const sliderSettings = {
|
|
@@ -59,8 +59,8 @@ const MarketingHeroComponent = ({
|
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
let heroLeftColumnInlineStyles = {};
|
|
62
|
-
if (
|
|
63
|
-
const imageSrc = getSrc(
|
|
62
|
+
if (data?.background?.src) {
|
|
63
|
+
const imageSrc = getSrc(data.background.src);
|
|
64
64
|
heroLeftColumnInlineStyles.backgroundImage = `url(${imageSrc})`;
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -73,53 +73,53 @@ const MarketingHeroComponent = ({
|
|
|
73
73
|
>
|
|
74
74
|
<div className={`${styles.heroMarketingContainer} hero-body`}>
|
|
75
75
|
<div className="container">
|
|
76
|
-
<h1 className="title">{
|
|
77
|
-
<h2 className="subtitle">{
|
|
76
|
+
<h1 className="title">{data?.title}</h1>
|
|
77
|
+
<h2 className="subtitle">{data?.subTitle}</h2>
|
|
78
78
|
<div
|
|
79
79
|
className={styles.date}
|
|
80
80
|
style={{
|
|
81
|
-
backgroundColor:
|
|
81
|
+
backgroundColor: data?.dateLayout
|
|
82
82
|
? "var(--color_secondary)"
|
|
83
83
|
: "",
|
|
84
|
-
display:
|
|
84
|
+
display: data?.dateLayout
|
|
85
85
|
? ""
|
|
86
86
|
: "inline",
|
|
87
|
-
transform:
|
|
87
|
+
transform: data?.dateLayout
|
|
88
88
|
? "skew(-25deg)"
|
|
89
89
|
: "skew(0deg)",
|
|
90
90
|
}}
|
|
91
91
|
>
|
|
92
|
-
{
|
|
93
|
-
<div style={{transform: "skew(25deg)"}}>{
|
|
92
|
+
{data?.dateLayout ?
|
|
93
|
+
<div style={{transform: "skew(25deg)"}}>{data?.date}</div>
|
|
94
94
|
:
|
|
95
95
|
<div style={{transform: "skew(0deg)"}}>
|
|
96
|
-
<span>{
|
|
96
|
+
<span>{data?.date}</span>
|
|
97
97
|
</div>
|
|
98
98
|
}
|
|
99
99
|
</div>
|
|
100
|
-
<h4>{
|
|
100
|
+
<h4>{data?.time}</h4>
|
|
101
101
|
<div className={styles.heroButtons}>
|
|
102
102
|
{getButtons()}
|
|
103
103
|
</div>
|
|
104
104
|
</div>
|
|
105
105
|
</div>
|
|
106
106
|
</div>
|
|
107
|
-
{
|
|
107
|
+
{data?.images?.length > 0 &&
|
|
108
108
|
<div className={`${styles.rightColumn} column is-6 px-0`} id="marketing-slider" ref={sliderRef}>
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
109
|
+
{data?.images?.length > 1 ?
|
|
110
|
+
<Slider {...sliderSettings}>
|
|
111
|
+
{data.images.map((image, index) => {
|
|
112
|
+
const imageSrc = getSrc(image.src);
|
|
113
|
+
return (
|
|
114
|
+
<div key={index}>
|
|
115
|
+
<div className={styles.imageSlider} aria-label={image.alt} style={{ backgroundImage: `url(${imageSrc})`, height: sliderHeight, marginBottom: -6 }} />
|
|
116
|
+
</div>
|
|
117
|
+
);
|
|
118
|
+
})}
|
|
119
|
+
</Slider>
|
|
120
|
+
:
|
|
121
|
+
<div className={styles.singleImage} aria-label={data.images[0].alt} style={{ backgroundImage: `url(${getSrc(data.images[0].src)})`}} >
|
|
122
|
+
</div>
|
|
123
123
|
}
|
|
124
124
|
</div>
|
|
125
125
|
}
|
package/src/pages/index.js
CHANGED
|
@@ -54,7 +54,7 @@ export const marketingPageQuery = graphql`
|
|
|
54
54
|
display
|
|
55
55
|
text
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
widgets {
|
|
58
58
|
text {
|
|
59
59
|
content
|
|
60
60
|
display
|
|
@@ -84,24 +84,27 @@ export const marketingPageQuery = graphql`
|
|
|
84
84
|
display
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
eventRedirect
|
|
88
87
|
masonry {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
88
|
+
display
|
|
89
|
+
items {
|
|
90
|
+
placement
|
|
91
|
+
size
|
|
92
|
+
images {
|
|
93
|
+
src {
|
|
94
|
+
childImageSharp {
|
|
95
|
+
gatsbyImageData (
|
|
96
|
+
quality: 100
|
|
97
|
+
placeholder: BLURRED
|
|
98
|
+
layout: FULL_WIDTH
|
|
99
|
+
)
|
|
100
|
+
}
|
|
99
101
|
}
|
|
102
|
+
alt
|
|
103
|
+
link
|
|
100
104
|
}
|
|
101
|
-
alt
|
|
102
|
-
link
|
|
103
105
|
}
|
|
104
106
|
}
|
|
107
|
+
eventRedirect
|
|
105
108
|
}
|
|
106
109
|
}
|
|
107
110
|
`;
|
|
@@ -20,6 +20,15 @@ import { PHASES } from "../utils/phasesUtils";
|
|
|
20
20
|
|
|
21
21
|
import styles from "../styles/marketing.module.scss";
|
|
22
22
|
|
|
23
|
+
const sliderSettings = {
|
|
24
|
+
autoplay: true,
|
|
25
|
+
autoplaySpeed: 5000,
|
|
26
|
+
infinite: true,
|
|
27
|
+
dots: false,
|
|
28
|
+
slidesToShow: 1,
|
|
29
|
+
slidesToScroll: 1
|
|
30
|
+
};
|
|
31
|
+
|
|
23
32
|
const MarketingPageTemplate = ({
|
|
24
33
|
location,
|
|
25
34
|
data,
|
|
@@ -30,44 +39,42 @@ const MarketingPageTemplate = ({
|
|
|
30
39
|
}) => {
|
|
31
40
|
|
|
32
41
|
const {
|
|
33
|
-
marketingPageJson
|
|
34
|
-
|
|
42
|
+
marketingPageJson: {
|
|
43
|
+
hero,
|
|
44
|
+
countdown,
|
|
45
|
+
widgets,
|
|
46
|
+
masonry
|
|
47
|
+
} = {}
|
|
48
|
+
} = data || {};
|
|
35
49
|
|
|
36
50
|
let scheduleProps = {};
|
|
37
|
-
if (
|
|
51
|
+
if (widgets?.schedule && isLoggedUser && summitPhase !== PHASES.BEFORE) {
|
|
38
52
|
scheduleProps = {
|
|
39
53
|
...scheduleProps,
|
|
40
54
|
onEventClick: (ev) => navigate(`/a/event/${ev.id}`),
|
|
41
55
|
}
|
|
42
56
|
}
|
|
43
57
|
|
|
44
|
-
const
|
|
45
|
-
autoplay: true,
|
|
46
|
-
autoplaySpeed: 5000,
|
|
47
|
-
infinite: true,
|
|
48
|
-
dots: false,
|
|
49
|
-
slidesToShow: 1,
|
|
50
|
-
slidesToScroll: 1
|
|
51
|
-
};
|
|
58
|
+
const shouldRenderMasonry = masonry?.display;
|
|
52
59
|
|
|
53
60
|
return (
|
|
54
61
|
<Layout marketing={true} location={location}>
|
|
55
62
|
<AttendanceTrackerComponent />
|
|
56
63
|
<MarketingHeroComponent
|
|
57
64
|
location={location}
|
|
58
|
-
|
|
65
|
+
data={hero}
|
|
59
66
|
/>
|
|
60
|
-
{summit &&
|
|
67
|
+
{summit && countdown?.display && <Countdown summit={summit} text={countdown?.text} />}
|
|
61
68
|
<div className="columns">
|
|
62
|
-
<div className={`column
|
|
63
|
-
{
|
|
69
|
+
<div className={`column mt-3 px-6 py-6 ${shouldRenderMasonry ? "is-half" : ""} ${styles.leftColumn ? styles.leftColumn : ""}`} style={{ position: 'relative' }}>
|
|
70
|
+
{widgets?.text?.display && widgets?.text?.content &&
|
|
64
71
|
<Markdown>
|
|
65
|
-
{
|
|
72
|
+
{widgets.text.content}
|
|
66
73
|
</Markdown>
|
|
67
74
|
}
|
|
68
|
-
{
|
|
75
|
+
{widgets?.schedule?.display &&
|
|
69
76
|
<>
|
|
70
|
-
<h2><b>{
|
|
77
|
+
<h2><b>{widgets.schedule.title}</b></h2>
|
|
71
78
|
<LiteScheduleComponent
|
|
72
79
|
{...scheduleProps}
|
|
73
80
|
lastDataSync={lastDataSync}
|
|
@@ -79,28 +86,28 @@ const MarketingPageTemplate = ({
|
|
|
79
86
|
/>
|
|
80
87
|
</>
|
|
81
88
|
}
|
|
82
|
-
{
|
|
89
|
+
{widgets?.disqus?.display &&
|
|
83
90
|
<>
|
|
84
|
-
<h2><b>{
|
|
91
|
+
<h2><b>{widgets.disqus.title}</b></h2>
|
|
85
92
|
<DisqusComponent page="marketing-site"/>
|
|
86
93
|
</>
|
|
87
94
|
}
|
|
88
|
-
{
|
|
89
|
-
|
|
95
|
+
{widgets?.image?.display &&
|
|
96
|
+
widgets?.image?.image.src &&
|
|
90
97
|
<>
|
|
91
|
-
<h2><b>{
|
|
98
|
+
<h2><b>{widgets.image.title}</b></h2>
|
|
92
99
|
<br />
|
|
93
|
-
<GatsbyImage image={getImage(
|
|
100
|
+
<GatsbyImage image={getImage(widgets.image.image.src)} alt={widgets.image.image.alt ?? ""} />
|
|
94
101
|
</>
|
|
95
102
|
}
|
|
96
103
|
</div>
|
|
97
|
-
|
|
104
|
+
{shouldRenderMasonry &&
|
|
105
|
+
<div className={`column is-half px-0 pb-0 ${styles.rightColumn ? styles.rightColumn : ""}`}>
|
|
98
106
|
<Masonry
|
|
99
107
|
breakpointCols={2}
|
|
100
108
|
className="my-masonry-grid"
|
|
101
109
|
columnClassName="my-masonry-grid_column">
|
|
102
|
-
{
|
|
103
|
-
formatMasonry(marketingPageJson.masonry).map((item, index) => {
|
|
110
|
+
{masonry.items && formatMasonry(masonry.items).map((item, index) => {
|
|
104
111
|
if (item.images && item.images.length === 1) {
|
|
105
112
|
const image = getImage(item.images[0].src);
|
|
106
113
|
return (
|
|
@@ -141,6 +148,7 @@ const MarketingPageTemplate = ({
|
|
|
141
148
|
})}
|
|
142
149
|
</Masonry>
|
|
143
150
|
</div>
|
|
151
|
+
}
|
|
144
152
|
</div>
|
|
145
153
|
</Layout>
|
|
146
154
|
)
|