cmspageblocks 1.0.22 → 1.0.26

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmspageblocks",
3
- "version": "1.0.22",
3
+ "version": "1.0.26",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "repository": {
@@ -44,7 +44,8 @@
44
44
  "@rollup/plugin-json": "^4.1.0",
45
45
  "@rollup/plugin-node-resolve": "^13.0.6",
46
46
  "babel-eslint": "^10.1.0",
47
- "eslint": "^8.0.0",
47
+ "bukazu-portal-react": "^2.0.21",
48
+ "eslint": "^8.6.0",
48
49
  "eslint-config-prettier": "^8.3.0",
49
50
  "eslint-plugin-jsx-a11y": "^6.4.1",
50
51
  "eslint-plugin-prettier": "^4.0.0",
@@ -55,6 +56,7 @@
55
56
  "rollup-plugin-import-css": "^3.0.2",
56
57
  "rollup-plugin-node-polyfills": "^0.2.1",
57
58
  "rollup-plugin-replace": "^2.2.0",
59
+ "styled-components": "^5.3.3",
58
60
  "webpack": "^5",
59
61
  "webpack-cli": "^4.6.0",
60
62
  "webpack-dev-server": "^3.0.0"
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
- import {Text, Image, ImageSlider, Button, Map, SearchBar, ImageGallery, Portal, Embed} from './BlockTypes';
4
+ import {Text, Image, ImageSlider, Button, Map, SearchBar, ImageGallery, Portal, Embed, Form} from './BlockTypes';
5
5
  import { BlockSelf } from '../Main.css'
6
6
 
7
7
  function Block({pageBlock}) {
@@ -12,15 +12,16 @@ function Block({pageBlock}) {
12
12
  }
13
13
 
14
14
  switch(options.type) {
15
+ case 'bukazu_portal': return <Wrapper options={options} key={pageBlock.id}><Portal options={options} /></Wrapper>
15
16
  case 'button': return <Wrapper options={options} key={pageBlock.id}><Button options={options} /></Wrapper>
16
- case 'map': return <Wrapper options={options} key={pageBlock.id}><Map options={options} /></Wrapper>
17
- case 'searchbar': return <Wrapper options={options} key={pageBlock.id}><SearchBar options={options} /></Wrapper>
18
- case 'text': return <Wrapper options={options} key={pageBlock.id}><Text options={options} /></Wrapper>
17
+ case 'embed': return <Wrapper options={options} key={pageBlock.id}><Embed options={options} /></Wrapper>
18
+ case 'form': return <Wrapper options={options} key={pageBlock.id}><Form options={options} /></Wrapper>
19
19
  case 'image': return <Wrapper options={options}><Image options={options} /></Wrapper>
20
20
  case 'image_slider': return <Wrapper options={options} key={pageBlock.id}><ImageSlider options={options} /></Wrapper>
21
21
  case 'imageGallery': return <Wrapper options={options} key={pageBlock.id}><ImageGallery options={options} /></Wrapper>
22
- case 'bukazu_portal': return <Wrapper options={options} key={pageBlock.id}><Portal options={options} /></Wrapper>
23
- case 'embed': return <Wrapper options={options} key={pageBlock.id}><Embed options={options} /></Wrapper>
22
+ case 'map': return <Wrapper options={options} key={pageBlock.id}><Map options={options} /></Wrapper>
23
+ case 'searchbar': return <Wrapper options={options} key={pageBlock.id}><SearchBar options={options} /></Wrapper>
24
+ case 'text': return <Wrapper options={options} key={pageBlock.id}><Text options={options} /></Wrapper>
24
25
  default: return <Wrapper options={options} key={pageBlock.id}>{options.type}</Wrapper>
25
26
  }
26
27
 
@@ -1,129 +1,141 @@
1
- // import React from 'react';
2
- // import PropTypes from 'prop-types';
3
- // import { Formik } from 'formik';
4
- // import axios from 'axios';
5
- // import styled from 'styled-components';
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Formik } from 'formik';
4
+ import styled from 'styled-components';
6
5
 
7
- // const Form = ({ form }) => {
8
- // return (
9
- // <Formik
10
- // onSubmit={(values, actions) => {
11
- // setTimeout(() => {
12
- // axios.post(`https://cms.burobork.nl/recieve/form/${form.id}`, {
13
- // form: {
14
- // locale: 'nl',
15
- // content: values,
16
- // },
17
- // });
18
- // alert('Form has been sent!');
19
- // actions.setSubmitting(false);
20
- // }, 1000);
21
- // }}
22
- // render={({ values, errors, handleBlur, handleChange, handleSubmit }) => (
23
- // <FormContainer>
24
- // <form onSubmit={handleSubmit}>
25
- // {form.options.fields.map(field => {
26
- // if (field.type === 'select') {
27
- // return (
28
- // <div key={field.model}>
29
- // <div htmlFor={field.model}>{field.label}</div>
30
- // <select
31
- // id={field.model}
32
- // onChange={handleChange}
33
- // onBlur={handleBlur}
34
- // value={values[field.model]}
35
- // name={field.model}
36
- // >
37
- // {field.values.map(opt => (
38
- // <option key={opt.option_value} value={opt.option_value}>
39
- // {opt.label}
40
- // </option>
41
- // ))}
42
- // </select>
43
- // </div>
44
- // );
45
- // } else if (field.type === 'textarea') {
46
- // return <div key={field.model}>
47
- // <div htmlFor={field.model}>
48
- // {field.label}
49
- // </div>
50
- // <textarea id={field.model} onChange={handleChange} onBlur={handleBlur} value={values[field.model]} name={field.model} rows="5">
6
+ const Form = ({ options }) => {
7
+ const form = options.content
8
+ return (
9
+ <Formik
10
+ initialValues={{}}
11
+ onSubmit={(values, actions) => {
12
+ setTimeout(() => {
13
+ fetch(`https://cms.burobork.nl/recieve/form/${form.id}`, {
14
+ method: 'POST',
15
+ headers: { 'Content-Type': 'application/json' },
16
+ body: JSON.stringify(
17
+ { form: {
18
+ locale: 'nl',
19
+ content: values,
20
+ }},
21
+ )
22
+ }).then((resp) => {
23
+ if (resp.ok === true) {
24
+ alert('Form has been sent!');
25
+ actions.resetForm({ values: {}})
26
+ } else {
27
+ alert('Please try again later.');
28
+ }
29
+ });
30
+ actions.setSubmitting(false);
31
+ }, 1000);
32
+ }}
33
+ render={({ values, errors, handleBlur, handleChange, handleSubmit }) => (
34
+ <FormContainer>
35
+ <form onSubmit={handleSubmit}>
36
+ {form.options.fields.map(field => {
37
+ if (field.type === 'select') {
38
+ return (
39
+ <div key={field.model}>
40
+ <label htmlFor={field.model}>{field.label}</label>
41
+ <select
42
+ id={field.model}
43
+ onChange={handleChange}
44
+ onBlur={handleBlur}
45
+ value={values[field.model]}
46
+ name={field.model}
47
+ >
48
+ {field.values.map(opt => (
49
+ <option key={opt.option_value} value={opt.option_value}>
50
+ {opt.label}
51
+ </option>
52
+ ))}
53
+ </select>
54
+ </div>
55
+ );
56
+ } else if (field.type === 'textarea') {
57
+ return <div key={field.model}>
58
+ <label htmlFor={field.model}>
59
+ {field.label}
60
+ </label>
61
+ <textarea id={field.model} onChange={handleChange} onBlur={handleBlur} value={values[field.model]} name={field.model} rows="5">
51
62
 
52
- // </textarea>
53
- // </div>;
54
- // } else {
55
- // return (
56
- // <div key={field.model}>
57
- // <label htmlFor={field.model}>
58
- // {field.label}
59
- // <input
60
- // id={field.model}
61
- // type="text"
62
- // onChange={handleChange}
63
- // onBlur={handleBlur}
64
- // value={values[field.model]}
65
- // name={field.model}
66
- // required={field.required}
67
- // />
68
- // </label>
69
- // {errors[field.name] && (
70
- // <div id="feedback">{errors[field.name]}</div>
71
- // )}
72
- // </div>
73
- // );
74
- // }
75
- // })}
76
- // <button type="submit">Verzenden</button>
77
- // </form>
78
- // </FormContainer>
79
- // )}
80
- // />
81
- // );
82
- // };
63
+ </textarea>
64
+ </div>;
65
+ } else {
66
+ return (
67
+ <div key={field.model}>
68
+ <label htmlFor={field.model}>
69
+ {field.label}
70
+ <input
71
+ id={field.model}
72
+ type="text"
73
+ onChange={handleChange}
74
+ onBlur={handleBlur}
75
+ value={values[field.model]}
76
+ name={field.model}
77
+ required={field.required}
78
+ />
79
+ </label>
80
+ {errors[field.name] && (
81
+ <div id="feedback">{errors[field.name]}</div>
82
+ )}
83
+ </div>
84
+ );
85
+ }
86
+ })}
87
+ <button type="submit">Verzenden</button>
88
+ </form>
89
+ </FormContainer>
90
+ )}
91
+ />
92
+ );
93
+ };
83
94
 
84
- // Form.propTypes = {
85
- // form: PropTypes.object.isRequired,
86
- // };
95
+ Form.propTypes = {
96
+ options: PropTypes.object.isRequired,
97
+ };
87
98
 
88
- // export default Form;
99
+ export default Form;
89
100
 
90
- // const FormContainer = styled.div`
91
- // width: 100%;
92
- // select {
93
- // appearance: none;
94
- // background: #fff;
95
- // background-image: linear-gradient(45deg, transparent 50%, gray 50%),
96
- // linear-gradient(135deg, gray 50%, transparent 50%),
97
- // linear-gradient(to right, #ccc, #ccc);
98
- // background-position: calc(100% - 20px) calc(1em),
99
- // calc(100% - 15px) calc(1em), calc(100% - 2.5em);
100
- // background-size: 5px 5px, 5px 5px, 1px 1.5em;
101
- // background-repeat: no-repeat;
102
- // }
101
+ const FormContainer = styled.div`
102
+ width: 100%;
103
+ select {
104
+ appearance: none;
105
+ background: #fff;
106
+ background-image: linear-gradient(45deg, transparent 50%, gray 50%),
107
+ linear-gradient(135deg, gray 50%, transparent 50%),
108
+ linear-gradient(to right, #ccc, #ccc);
109
+ background-position: calc(100% - 20px) calc(1em),
110
+ calc(100% - 15px) calc(1em), calc(100% - 2.5em);
111
+ background-size: 5px 5px, 5px 5px, 1px 1.5em;
112
+ background-repeat: no-repeat;
113
+ }
103
114
 
104
- // label {
105
- // display: flex;
106
- // flex-wrap: wrap;
107
- // flex-direction: column;
108
- // width: 100%;
109
- // margin: 8px 0;
110
- // }
111
- // input,
112
- // select,
113
- // textarea {
114
- // display: block;
115
- // box-sizing: border-box;
116
- // margin: 8px 0;
117
- // padding: 8px;
118
- // width: 100%;
119
- // appearance: none;
120
- // border: 1px solid rgba(0, 0, 0, 0.25);
121
- // }
122
- // button {
123
- // border: 0;
124
- // padding: 8px 16px;
125
- // font-size: 1.4rem;
126
- // line-height: 1.4;
127
- // font-weight: bold;
128
- // }
129
- // `;
115
+ label {
116
+ display: flex;
117
+ flex-wrap: wrap;
118
+ flex-direction: column;
119
+ width: 100%;
120
+ margin: 8px 0;
121
+ }
122
+ input,
123
+ select,
124
+ textarea {
125
+ display: block;
126
+ box-sizing: border-box;
127
+ margin: 8px 0;
128
+ padding: 8px;
129
+ width: 100%;
130
+ appearance: none;
131
+ border: 1px solid rgba(0, 0, 0, 0.25);
132
+ }
133
+ button {
134
+ border: 0;
135
+ padding: 8px 16px;
136
+ font-size: 1.4rem;
137
+ line-height: 1.4;
138
+ font-weight: bold;
139
+ background: ${props => props.theme.primaryColor};
140
+ }
141
+ `;
@@ -3,7 +3,6 @@ import { Carousel } from 'react-responsive-carousel'
3
3
  import { SliderContainer } from './ImageSlide.css'
4
4
 
5
5
  export default function ImageSlider({ options }) {
6
- console.debug({ sliderOptions: options })
7
6
  const { content } = options
8
7
  return (
9
8
  <SliderContainer>
@@ -1,6 +1,6 @@
1
1
  import Button from './Button'
2
2
  import Embed from './Embed'
3
- // import Form from './Form'
3
+ import Form from './Form'
4
4
  import Iframe from './Iframe'
5
5
  import Image from './Image'
6
6
  import ImageGallery from './ImageGallery'
@@ -13,6 +13,7 @@ import Text from './Text'
13
13
  export {
14
14
  Button,
15
15
  Embed,
16
+ Form,
16
17
  Image,
17
18
  ImageGallery,
18
19
  ImageSlider,