@flozy/editor 1.6.9 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/Editor/CommonEditor.js +1 -0
- package/dist/Editor/Editor.css +0 -2
- package/dist/Editor/Elements/Embed/Image.js +1 -0
- package/dist/Editor/Elements/Embed/Video.js +18 -3
- package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +5 -0
- package/dist/Editor/Elements/Form/Workflow/MoreOptions.js +4 -7
- package/dist/Editor/Elements/Form/Workflow/Styles.js +96 -89
- package/dist/Editor/Elements/Form/Workflow/UserInputs.js +10 -15
- package/dist/Editor/Elements/Form/Workflow/index.js +2 -1
- package/dist/Editor/Elements/Grid/Grid.js +59 -17
- package/dist/Editor/Elements/Grid/SectionPopup.js +24 -0
- package/dist/Editor/Elements/Grid/templates/default_grid.js +81 -88
- package/dist/Editor/Elements/Section.js +42 -0
- package/dist/Editor/Styles/EditorStyles.js +6 -1
- package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +40 -0
- package/dist/Editor/common/StyleBuilder/gridStyle.js +8 -0
- package/dist/Editor/common/StyleBuilder/sectionStyle.js +38 -0
- package/dist/Editor/plugins/withTable.js +20 -1
- package/dist/Editor/utils/grid.js +2 -1
- package/dist/Editor/utils/helper.js +11 -0
- package/package.json +1 -1
@@ -26,6 +26,7 @@ import { EditorProvider } from "./hooks/useMouseMove";
|
|
26
26
|
import TopBanner from "./Elements/TopBanner/TopBanner";
|
27
27
|
import editorStyles from "./Styles/EditorStyles";
|
28
28
|
import "animate.css";
|
29
|
+
import Section from "./Elements/Section";
|
29
30
|
import { jsx as _jsx } from "react/jsx-runtime";
|
30
31
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
31
32
|
const PREVIEW_IMAGE_HIDE_CLASS = ["grid-container-toolbar", "grid-item-toolbar", "element-toolbar"];
|
package/dist/Editor/Editor.css
CHANGED
@@ -8,6 +8,7 @@ import { IconButton, Tooltip } from "@mui/material";
|
|
8
8
|
import DeleteIcon from "@mui/icons-material/Delete";
|
9
9
|
import EmbedPopup from "./EmbedPopup";
|
10
10
|
import { GridSettingsIcon } from "../../common/iconslist";
|
11
|
+
import { gradientBorder } from "../../utils/helper";
|
11
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
12
13
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
13
14
|
const Video = ({
|
@@ -20,7 +21,11 @@ const Video = ({
|
|
20
21
|
url,
|
21
22
|
alt,
|
22
23
|
alignment,
|
23
|
-
bannerSpacing
|
24
|
+
bannerSpacing,
|
25
|
+
borderRadius,
|
26
|
+
borderWidth,
|
27
|
+
borderColor,
|
28
|
+
borderStyle
|
24
29
|
} = element;
|
25
30
|
const editor = useSlateStatic();
|
26
31
|
const selected = useSelected();
|
@@ -52,6 +57,12 @@ const Video = ({
|
|
52
57
|
});
|
53
58
|
const arr = Array.from(Node.elements(editor));
|
54
59
|
const ele = arr.find(([elem]) => element === elem);
|
60
|
+
const {
|
61
|
+
topLeft,
|
62
|
+
topRight,
|
63
|
+
bottomLeft,
|
64
|
+
bottomRight
|
65
|
+
} = borderRadius || {};
|
55
66
|
useEffect(() => {
|
56
67
|
if (editor && ele[1] !== undefined) {
|
57
68
|
const dom = ReactEditor.toDOMNode(editor, Node.get(editor, ele[1]));
|
@@ -107,7 +118,7 @@ const Video = ({
|
|
107
118
|
const width = resizing ? `${size.width}px` : `${size.widthInPercent || 100}%`;
|
108
119
|
return /*#__PURE__*/_jsxs("div", {
|
109
120
|
...attributes,
|
110
|
-
className: "embed has-hover",
|
121
|
+
className: "embed has-hover video",
|
111
122
|
style: {
|
112
123
|
display: "flex",
|
113
124
|
width: `calc(100% - ${totalMinus}px)`,
|
@@ -152,7 +163,11 @@ const Video = ({
|
|
152
163
|
position: "absolute",
|
153
164
|
width: "100%",
|
154
165
|
height: "100%",
|
155
|
-
left: "0px"
|
166
|
+
left: "0px",
|
167
|
+
...(gradientBorder(borderColor) || {}),
|
168
|
+
borderWidth: borderWidth || "1px",
|
169
|
+
borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
|
170
|
+
borderStyle: borderStyle || "solid"
|
156
171
|
},
|
157
172
|
src: url,
|
158
173
|
title: alt
|
@@ -3,8 +3,8 @@ import { IconButton, Menu, MenuItem, Tooltip } from "@mui/material";
|
|
3
3
|
import { MoreHorizontal } from "../../../common/iconslist";
|
4
4
|
import Icon from "../../../common/Icon";
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
6
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
7
6
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
8
8
|
function MoreOptions(props) {
|
9
9
|
const {
|
10
10
|
classes,
|
@@ -27,15 +27,12 @@ function MoreOptions(props) {
|
|
27
27
|
children: [/*#__PURE__*/_jsx(Tooltip, {
|
28
28
|
arrow: true,
|
29
29
|
title: "More Options",
|
30
|
-
children: /*#__PURE__*/
|
30
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
31
31
|
sx: classes.moreOption,
|
32
32
|
onClick: handleClick,
|
33
|
-
children:
|
33
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
34
34
|
icon: "moreHorizantal"
|
35
|
-
})
|
36
|
-
width: "24px",
|
37
|
-
height: "24px"
|
38
|
-
})]
|
35
|
+
})
|
39
36
|
})
|
40
37
|
}), /*#__PURE__*/_jsx(Menu, {
|
41
38
|
id: "basic-menu",
|
@@ -1,147 +1,154 @@
|
|
1
1
|
const FormStyles = () => ({
|
2
2
|
addButton: {
|
3
|
-
display:
|
4
|
-
justifyContent:
|
3
|
+
display: "flex",
|
4
|
+
justifyContent: "flex-end"
|
5
5
|
},
|
6
6
|
infoText: {
|
7
|
-
fontSize:
|
8
|
-
fontWeight:
|
9
|
-
color:
|
7
|
+
fontSize: "12px",
|
8
|
+
fontWeight: "400",
|
9
|
+
color: "#94A3B8"
|
10
10
|
},
|
11
11
|
bodyTextArea: {
|
12
|
-
|
13
|
-
border:
|
14
|
-
width:
|
15
|
-
maxWidth:
|
16
|
-
outline:
|
12
|
+
"& textarea": {
|
13
|
+
border: "none",
|
14
|
+
width: "100%",
|
15
|
+
maxWidth: "100%",
|
16
|
+
outline: "none"
|
17
17
|
},
|
18
|
-
|
19
|
-
outline:
|
20
|
-
border:
|
18
|
+
"& textarea:focus-visible": {
|
19
|
+
outline: "none",
|
20
|
+
border: "none"
|
21
21
|
}
|
22
22
|
},
|
23
23
|
formHeadings: {
|
24
|
-
fontSize:
|
24
|
+
fontSize: "14px",
|
25
25
|
fontWeight: 500,
|
26
|
-
paddingBottom:
|
27
|
-
paddingTop:
|
26
|
+
paddingBottom: "10px",
|
27
|
+
paddingTop: "10px"
|
28
28
|
},
|
29
29
|
flowListCard: {
|
30
|
-
border:
|
31
|
-
borderRadius:
|
32
|
-
padding:
|
30
|
+
border: "1px solid #6F6F6F33",
|
31
|
+
borderRadius: "8px",
|
32
|
+
padding: "10px"
|
33
33
|
},
|
34
34
|
listHeading: {
|
35
|
-
fontSize:
|
35
|
+
fontSize: "14px",
|
36
36
|
fontWeight: 700
|
37
37
|
},
|
38
38
|
listSubHeading: {
|
39
|
-
fontSize:
|
39
|
+
fontSize: "12px",
|
40
40
|
fontWeight: 500,
|
41
|
-
color:
|
42
|
-
maxWidth:
|
43
|
-
textTransform:
|
41
|
+
color: "#64748B",
|
42
|
+
maxWidth: "380px",
|
43
|
+
textTransform: "capitalize",
|
44
44
|
whiteSpace: "nowrap",
|
45
|
-
overflow:
|
46
|
-
textOverflow:
|
45
|
+
overflow: "hidden",
|
46
|
+
textOverflow: "ellipsis"
|
47
47
|
},
|
48
48
|
addBtnTypo: {
|
49
|
-
color:
|
49
|
+
color: "#94A3B8",
|
50
50
|
fontWeight: 500,
|
51
|
-
fontSize:
|
51
|
+
fontSize: "12px"
|
52
52
|
},
|
53
53
|
emptyList: {
|
54
|
-
justifyContent:
|
55
|
-
display:
|
56
|
-
border:
|
57
|
-
borderRadius:
|
58
|
-
padding:
|
59
|
-
color:
|
54
|
+
justifyContent: "center",
|
55
|
+
display: "flex",
|
56
|
+
border: "1px solid #6F6F6F33",
|
57
|
+
borderRadius: "8px",
|
58
|
+
padding: "10px",
|
59
|
+
color: "#94A3B8"
|
60
60
|
},
|
61
61
|
popupTitle: {
|
62
62
|
fontWeight: 600,
|
63
|
-
fontSize:
|
64
|
-
display:
|
65
|
-
alignItems:
|
63
|
+
fontSize: "16px",
|
64
|
+
display: "flex",
|
65
|
+
alignItems: "center"
|
66
66
|
},
|
67
67
|
subHeadings: {
|
68
68
|
fontWeight: 500,
|
69
|
-
fontSize:
|
69
|
+
fontSize: "14px"
|
70
70
|
},
|
71
71
|
radioBtn: {
|
72
|
-
|
73
|
-
fontSize:
|
74
|
-
color:
|
72
|
+
"& .MuiFormControlLabel-label": {
|
73
|
+
fontSize: "14px",
|
74
|
+
color: "#64748B"
|
75
75
|
}
|
76
76
|
},
|
77
77
|
dialogTitle: {
|
78
|
-
|
79
|
-
padding:
|
78
|
+
"& MuiDialogTitle-root": {
|
79
|
+
padding: "16px 12px"
|
80
80
|
}
|
81
81
|
},
|
82
82
|
closeBtn: {
|
83
|
-
background:
|
84
|
-
color:
|
85
|
-
fontSize:
|
83
|
+
background: "#F4F6F9",
|
84
|
+
color: "#64748B",
|
85
|
+
fontSize: "14px",
|
86
86
|
fontWeight: 500,
|
87
|
-
padding:
|
88
|
-
textTransform:
|
89
|
-
border:
|
90
|
-
|
91
|
-
border:
|
87
|
+
padding: "4px 22px",
|
88
|
+
textTransform: "none",
|
89
|
+
border: "1px solid #D8DDE1",
|
90
|
+
"&:hover": {
|
91
|
+
border: "1px solid #64748B"
|
92
92
|
}
|
93
93
|
},
|
94
94
|
variableBtn: {
|
95
|
-
background:
|
96
|
-
color:
|
97
|
-
fontSize:
|
95
|
+
background: "#F4F6F9",
|
96
|
+
color: "#64748B",
|
97
|
+
fontSize: "14px",
|
98
98
|
fontWeight: 500,
|
99
|
-
padding:
|
100
|
-
textTransform:
|
101
|
-
border:
|
102
|
-
|
103
|
-
|
104
|
-
stroke:
|
99
|
+
padding: "4px 22px",
|
100
|
+
textTransform: "none",
|
101
|
+
border: "1px solid #D8DDE1",
|
102
|
+
"& svg": {
|
103
|
+
"& path": {
|
104
|
+
stroke: "#64748B"
|
105
105
|
}
|
106
106
|
},
|
107
|
-
|
108
|
-
border:
|
107
|
+
"&:hover": {
|
108
|
+
border: "1px solid #64748B"
|
109
109
|
}
|
110
110
|
},
|
111
111
|
saveBtn: {
|
112
|
-
background:
|
113
|
-
fontSize:
|
112
|
+
background: "#2563EB",
|
113
|
+
fontSize: "14px",
|
114
114
|
fontWeight: 500,
|
115
|
-
padding:
|
116
|
-
textTransform:
|
115
|
+
padding: "4px 24px",
|
116
|
+
textTransform: "none",
|
117
|
+
"& .MuiButton-containedSizeSmall": {
|
118
|
+
borderRadius: "5px"
|
119
|
+
},
|
120
|
+
"& .MuiButton-containedPrimary": {
|
121
|
+
background: "#2563EB",
|
122
|
+
borderRadius: "5px"
|
123
|
+
}
|
117
124
|
},
|
118
125
|
select: {
|
119
|
-
minWidth:
|
120
|
-
|
121
|
-
borderRadius:
|
122
|
-
border:
|
123
|
-
boxShadow:
|
126
|
+
minWidth: "110px",
|
127
|
+
"& .MuiOutlinedInput-notchedOutline": {
|
128
|
+
borderRadius: "8px",
|
129
|
+
border: "1px solid #6F6F6F33",
|
130
|
+
boxShadow: "0px 4px 16px 0px #0000000D"
|
124
131
|
},
|
125
|
-
|
126
|
-
borderRadius:
|
127
|
-
border:
|
128
|
-
boxShadow:
|
132
|
+
"&:hover .MuiOutlinedInput-notchedOutline": {
|
133
|
+
borderRadius: "8px",
|
134
|
+
border: "1px solid #6F6F6F33",
|
135
|
+
boxShadow: "0px 4px 16px 0px #0000000D"
|
129
136
|
},
|
130
|
-
|
131
|
-
color:
|
132
|
-
fontSize:
|
137
|
+
"& .MuiSelect-select": {
|
138
|
+
color: "#94A3B8",
|
139
|
+
fontSize: "14px"
|
133
140
|
}
|
134
141
|
},
|
135
142
|
selectList: {
|
136
|
-
color:
|
137
|
-
fontSize:
|
143
|
+
color: "#94A3B8",
|
144
|
+
fontSize: "14px"
|
138
145
|
},
|
139
146
|
toolbarContainer: {
|
140
|
-
border:
|
141
|
-
borderRadius:
|
147
|
+
border: "1px solid #6F6F6F33",
|
148
|
+
borderRadius: "10px"
|
142
149
|
},
|
143
150
|
toolBar: {
|
144
|
-
padding:
|
151
|
+
padding: "5px"
|
145
152
|
},
|
146
153
|
colorButtons: {
|
147
154
|
"& .buttonsWrpr": {
|
@@ -191,17 +198,17 @@ const FormStyles = () => ({
|
|
191
198
|
}
|
192
199
|
},
|
193
200
|
moreOption: {
|
194
|
-
background:
|
195
|
-
borderRadius:
|
201
|
+
background: "#F4F4F4",
|
202
|
+
borderRadius: "8px"
|
196
203
|
},
|
197
204
|
dialogFooter: {
|
198
|
-
|
199
|
-
padding:
|
205
|
+
"&.MuiDialogActions-root": {
|
206
|
+
padding: "8px 24px"
|
200
207
|
}
|
201
208
|
},
|
202
209
|
toolButtons: {
|
203
|
-
width:
|
204
|
-
height:
|
210
|
+
width: "36px",
|
211
|
+
height: "36px"
|
205
212
|
}
|
206
213
|
});
|
207
214
|
export default FormStyles;
|
@@ -3,7 +3,7 @@ import React, { useState } from "react";
|
|
3
3
|
import FormStyles from "./Styles";
|
4
4
|
import Icon from "../../../common/Icon";
|
5
5
|
import { PlusIcon, RestRight } from "../../../common/iconslist";
|
6
|
-
import KeyboardArrowDownIcon from
|
6
|
+
import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
|
7
7
|
import { AllColors } from "../../Color Picker/ColorButtons";
|
8
8
|
import PopupToolStyle from "../../../Toolbar/PopupTool/PopupToolStyle";
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
@@ -20,7 +20,7 @@ const UserInputs = props => {
|
|
20
20
|
const variables = element?.children;
|
21
21
|
const classes = FormStyles();
|
22
22
|
const popupClasses = PopupToolStyle();
|
23
|
-
const [activeColor, setActiveColor] = useState([
|
23
|
+
const [activeColor, setActiveColor] = useState(["#000000"]);
|
24
24
|
//state
|
25
25
|
const [anchorEl, setAnchorEl] = useState(null);
|
26
26
|
const [colorAnchorEl, setColorAnchorEl] = useState(null);
|
@@ -115,7 +115,7 @@ const UserInputs = props => {
|
|
115
115
|
title: "Current Color",
|
116
116
|
children: /*#__PURE__*/_jsx(IconButton, {
|
117
117
|
style: {
|
118
|
-
borderRadius:
|
118
|
+
borderRadius: "50px",
|
119
119
|
background: activeColor
|
120
120
|
}
|
121
121
|
})
|
@@ -140,6 +140,7 @@ const UserInputs = props => {
|
|
140
140
|
item: true,
|
141
141
|
children: /*#__PURE__*/_jsxs(Grid, {
|
142
142
|
container: true,
|
143
|
+
alignItems: "center",
|
143
144
|
children: [/*#__PURE__*/_jsx(Grid, {
|
144
145
|
item: true,
|
145
146
|
children: /*#__PURE__*/_jsx(Tooltip, {
|
@@ -166,12 +167,12 @@ const UserInputs = props => {
|
|
166
167
|
anchorEl: anchorEl,
|
167
168
|
onClose: handleClose,
|
168
169
|
anchorOrigin: {
|
169
|
-
vertical:
|
170
|
-
horizontal:
|
170
|
+
vertical: "bottom",
|
171
|
+
horizontal: "right"
|
171
172
|
},
|
172
173
|
transformOrigin: {
|
173
|
-
vertical:
|
174
|
-
horizontal:
|
174
|
+
vertical: "top",
|
175
|
+
horizontal: "right"
|
175
176
|
},
|
176
177
|
children: variables?.map((m, i) => /*#__PURE__*/_jsx(MenuItem, {
|
177
178
|
sx: {
|
@@ -188,18 +189,12 @@ const UserInputs = props => {
|
|
188
189
|
}), /*#__PURE__*/_jsx(Grid, {
|
189
190
|
item: true,
|
190
191
|
xs: 12,
|
192
|
+
sx: classes.bodyTextArea,
|
191
193
|
children: type === 2 && /*#__PURE__*/_jsx(TextareaAutosize, {
|
192
194
|
margin: "none",
|
193
195
|
minRows: 6,
|
194
196
|
value: subject,
|
195
|
-
onChange: handleField
|
196
|
-
className: classes.bodyTextArea,
|
197
|
-
style: {
|
198
|
-
border: 'none',
|
199
|
-
width: "96%",
|
200
|
-
padding: '10px',
|
201
|
-
outline: "none"
|
202
|
-
}
|
197
|
+
onChange: handleField
|
203
198
|
})
|
204
199
|
})]
|
205
200
|
});
|
@@ -2,18 +2,24 @@
|
|
2
2
|
import React, { useState, useEffect } from "react";
|
3
3
|
import { Transforms, Path, Node } from "slate";
|
4
4
|
import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
|
5
|
-
import { gridItem } from "../../utils/gridItem";
|
6
|
-
import GridPopup from "./GridPopup";
|
7
5
|
import { IconButton, Tooltip, Grid as GridContainer } from "@mui/material";
|
8
|
-
import { insertGrid } from "../../utils/grid";
|
9
|
-
import { GridAddGridIcon, GridAddSectionIcon, GridSettingsIcon } from "../../common/iconslist";
|
10
6
|
import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward";
|
11
7
|
import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward";
|
12
8
|
import KeyboardReturnIcon from "@mui/icons-material/KeyboardReturn";
|
9
|
+
import TuneIcon from "@mui/icons-material/Tune";
|
10
|
+
import { insertGrid } from "../../utils/grid";
|
11
|
+
import { GridAddGridIcon, GridAddSectionIcon, GridSettingsIcon } from "../../common/iconslist";
|
12
|
+
import GridPopup from "./GridPopup";
|
13
|
+
import SectionPopup from "./SectionPopup";
|
14
|
+
import { gridItem } from "../../utils/gridItem";
|
13
15
|
import { useEditorContext } from "../../hooks/useMouseMove";
|
14
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
15
17
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
16
18
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
19
|
+
const GridSettingsPoupComp = {
|
20
|
+
section: SectionPopup,
|
21
|
+
grid: GridPopup
|
22
|
+
};
|
17
23
|
const Grid = props => {
|
18
24
|
const {
|
19
25
|
attributes,
|
@@ -36,7 +42,12 @@ const Grid = props => {
|
|
36
42
|
borderWidth,
|
37
43
|
borderColor,
|
38
44
|
borderStyle,
|
39
|
-
borderRadius
|
45
|
+
borderRadius,
|
46
|
+
sectionBgColor,
|
47
|
+
sectionBackgroundImage,
|
48
|
+
sectionBannerSpacing,
|
49
|
+
sectionBorderRadius,
|
50
|
+
gridSize
|
40
51
|
} = element;
|
41
52
|
const {
|
42
53
|
left,
|
@@ -44,6 +55,12 @@ const Grid = props => {
|
|
44
55
|
right,
|
45
56
|
bottom
|
46
57
|
} = bannerSpacing || {};
|
58
|
+
const {
|
59
|
+
left: ssleft,
|
60
|
+
top: sstop,
|
61
|
+
right: ssright,
|
62
|
+
bottom: ssbottom
|
63
|
+
} = sectionBannerSpacing || {};
|
47
64
|
const {
|
48
65
|
vertical,
|
49
66
|
horizantal,
|
@@ -55,10 +72,14 @@ const Grid = props => {
|
|
55
72
|
bottomLeft,
|
56
73
|
bottomRight
|
57
74
|
} = borderRadius || {};
|
75
|
+
const {
|
76
|
+
topLeft: ssTopLeft,
|
77
|
+
topRight: ssTopRight,
|
78
|
+
bottomLeft: ssBottomLeft,
|
79
|
+
bottomRight: ssBottomRight
|
80
|
+
} = sectionBorderRadius || {};
|
58
81
|
const editor = useSlateStatic();
|
59
82
|
const path = ReactEditor.findPath(editor, element);
|
60
|
-
const arr = Array.from(Node.elements(editor));
|
61
|
-
const ele = arr.find(([elem]) => element === elem);
|
62
83
|
const {
|
63
84
|
hoverPath
|
64
85
|
} = useEditorContext();
|
@@ -87,8 +108,11 @@ const Grid = props => {
|
|
87
108
|
});
|
88
109
|
}
|
89
110
|
};
|
111
|
+
const onSectionSettings = () => {
|
112
|
+
setOpenSettings("section");
|
113
|
+
};
|
90
114
|
const onSettings = () => {
|
91
|
-
setOpenSettings(
|
115
|
+
setOpenSettings("grid");
|
92
116
|
};
|
93
117
|
const onSave = data => {
|
94
118
|
const updateData = {
|
@@ -173,6 +197,7 @@ const Grid = props => {
|
|
173
197
|
console.log(err);
|
174
198
|
}
|
175
199
|
};
|
200
|
+
const PoupComp = GridSettingsPoupComp[openSetttings];
|
176
201
|
const NewLineButtons = () => {
|
177
202
|
return !readOnly && selected && path.length === 2 ? /*#__PURE__*/_jsxs(_Fragment, {
|
178
203
|
children: [/*#__PURE__*/_jsx("div", {
|
@@ -203,6 +228,13 @@ const Grid = props => {
|
|
203
228
|
className: "grid-container-toolbar",
|
204
229
|
contentEditable: false,
|
205
230
|
children: [/*#__PURE__*/_jsx(Tooltip, {
|
231
|
+
title: "Section Settings",
|
232
|
+
arrow: true,
|
233
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
234
|
+
onClick: onSectionSettings,
|
235
|
+
children: /*#__PURE__*/_jsx(TuneIcon, {})
|
236
|
+
})
|
237
|
+
}), /*#__PURE__*/_jsx(Tooltip, {
|
206
238
|
title: "Grid Settings",
|
207
239
|
arrow: true,
|
208
240
|
children: /*#__PURE__*/_jsx(IconButton, {
|
@@ -248,34 +280,44 @@ const Grid = props => {
|
|
248
280
|
const bgImage = backgroundImage && backgroundImage !== "none" ? {
|
249
281
|
backgroundImage: `url(${backgroundImage})`
|
250
282
|
} : {};
|
283
|
+
const sectionBgImage = sectionBackgroundImage && sectionBackgroundImage !== "none" ? {
|
284
|
+
backgroundImage: `url(${sectionBackgroundImage})`
|
285
|
+
} : {};
|
251
286
|
return /*#__PURE__*/_jsx("section", {
|
252
287
|
className: "section-wrapper-fluid",
|
253
288
|
style: {
|
254
289
|
display: "flex",
|
255
290
|
width: "100%",
|
256
|
-
background:
|
257
|
-
...
|
291
|
+
background: sectionBgColor,
|
292
|
+
...sectionBgImage,
|
258
293
|
backgroundSize: "cover",
|
259
294
|
justifyContent: "center",
|
260
|
-
alignItems: "center"
|
295
|
+
alignItems: "center",
|
296
|
+
paddingLeft: `${ssleft}px`,
|
297
|
+
paddingRight: `${ssright}px`,
|
298
|
+
paddingTop: `${sstop}px`,
|
299
|
+
paddingBottom: `${ssbottom}px`,
|
300
|
+
borderRadius: `${ssTopLeft}px ${ssTopRight}px ${ssBottomLeft}px ${ssBottomRight}px`
|
261
301
|
},
|
302
|
+
"data-path": path.join(","),
|
262
303
|
children: /*#__PURE__*/_jsxs(GridContainer, {
|
263
304
|
container: true,
|
264
305
|
className: `grid-container ${grid} has-hover element-root`,
|
265
306
|
...attributes,
|
266
307
|
...sectionId,
|
267
308
|
style: {
|
268
|
-
|
309
|
+
background: bgColor,
|
269
310
|
alignContent: vertical,
|
270
|
-
|
311
|
+
...bgImage,
|
271
312
|
borderColor: borderColor || "transparent",
|
272
313
|
borderWidth: borderWidth || "1px",
|
273
314
|
borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
|
274
|
-
borderStyle: borderStyle || "solid"
|
275
|
-
maxWidth: "1440px",
|
276
|
-
width: "80%"
|
315
|
+
borderStyle: borderStyle || "solid"
|
277
316
|
},
|
278
317
|
"data-path": path.join(","),
|
318
|
+
sx: {
|
319
|
+
width: `${(gridSize || 8) / 12 * 100}%`
|
320
|
+
},
|
279
321
|
children: [fgColor && /*#__PURE__*/_jsx("div", {
|
280
322
|
style: {
|
281
323
|
position: "absolute",
|
@@ -302,7 +344,7 @@ const Grid = props => {
|
|
302
344
|
className: "element-selector-dots br",
|
303
345
|
children: " "
|
304
346
|
}), /*#__PURE__*/_jsx(GridToolBar, {})]
|
305
|
-
}), openSetttings ? /*#__PURE__*/_jsx(
|
347
|
+
}), openSetttings ? /*#__PURE__*/_jsx(PoupComp, {
|
306
348
|
element: element,
|
307
349
|
onSave: onSave,
|
308
350
|
onClose: onClose,
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import StyleBuilder from "../../common/StyleBuilder";
|
3
|
+
import sectionStyle from "../../common/StyleBuilder/sectionStyle";
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
+
const SectionPopup = props => {
|
6
|
+
const {
|
7
|
+
element,
|
8
|
+
onSave,
|
9
|
+
onClose,
|
10
|
+
onDelete,
|
11
|
+
customProps
|
12
|
+
} = props;
|
13
|
+
return /*#__PURE__*/_jsx(StyleBuilder, {
|
14
|
+
title: "Section",
|
15
|
+
type: "sectionStyle",
|
16
|
+
element: element,
|
17
|
+
onSave: onSave,
|
18
|
+
onClose: onClose,
|
19
|
+
renderTabs: sectionStyle,
|
20
|
+
customProps: customProps,
|
21
|
+
onDelete: onDelete
|
22
|
+
});
|
23
|
+
};
|
24
|
+
export default SectionPopup;
|
@@ -1,11 +1,11 @@
|
|
1
|
-
const default_grid = {
|
1
|
+
const default_grid = [{
|
2
2
|
type: "grid",
|
3
3
|
grid: "container",
|
4
4
|
children: [{
|
5
5
|
type: "grid-item",
|
6
6
|
grid: 12,
|
7
7
|
children: [{
|
8
|
-
type: "
|
8
|
+
type: "alignLeft",
|
9
9
|
children: [{
|
10
10
|
type: "paragraph",
|
11
11
|
children: [{
|
@@ -13,6 +13,59 @@ const default_grid = {
|
|
13
13
|
fontSize: "huge",
|
14
14
|
fontFamily: "PoppinsBold"
|
15
15
|
}]
|
16
|
+
}, {
|
17
|
+
type: "paragraph",
|
18
|
+
children: [{
|
19
|
+
fontSize: "16px",
|
20
|
+
fontFamily: "PoppinsRegular",
|
21
|
+
text: ""
|
22
|
+
}]
|
23
|
+
}, {
|
24
|
+
type: "paragraph",
|
25
|
+
children: [{
|
26
|
+
fontSize: "16px",
|
27
|
+
fontFamily: "PoppinsRegular",
|
28
|
+
text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
|
29
|
+
}]
|
30
|
+
}, {
|
31
|
+
type: "paragraph",
|
32
|
+
children: [{
|
33
|
+
fontSize: "16px",
|
34
|
+
fontFamily: "PoppinsRegular",
|
35
|
+
text: ""
|
36
|
+
}]
|
37
|
+
}, {
|
38
|
+
type: "paragraph",
|
39
|
+
children: [{
|
40
|
+
type: "image",
|
41
|
+
url: "https://developers.elementor.com/docs/assets/img/elementor-placeholder-image.png",
|
42
|
+
images: [],
|
43
|
+
children: [{
|
44
|
+
text: " "
|
45
|
+
}],
|
46
|
+
size: {
|
47
|
+
width: 362.59375,
|
48
|
+
height: 207,
|
49
|
+
widthInPercent: 56.780034254954735
|
50
|
+
},
|
51
|
+
alignment: {
|
52
|
+
horizantal: "center"
|
53
|
+
}
|
54
|
+
}]
|
55
|
+
}, {
|
56
|
+
type: "paragraph",
|
57
|
+
children: [{
|
58
|
+
fontSize: "16px",
|
59
|
+
fontFamily: "PoppinsRegular",
|
60
|
+
text: ""
|
61
|
+
}]
|
62
|
+
}, {
|
63
|
+
type: "paragraph",
|
64
|
+
children: [{
|
65
|
+
fontSize: "16px",
|
66
|
+
fontFamily: "PoppinsRegular",
|
67
|
+
text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
|
68
|
+
}]
|
16
69
|
}]
|
17
70
|
}],
|
18
71
|
bgColor: "rgba(255, 255, 255, 0)",
|
@@ -30,12 +83,35 @@ const default_grid = {
|
|
30
83
|
type: "grid-item",
|
31
84
|
grid: 12,
|
32
85
|
children: [{
|
33
|
-
type: "
|
86
|
+
type: "alignLeft",
|
34
87
|
children: [{
|
35
88
|
type: "paragraph",
|
36
89
|
children: [{
|
37
90
|
text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
|
38
91
|
}]
|
92
|
+
}, {
|
93
|
+
type: "paragraph",
|
94
|
+
children: [{
|
95
|
+
text: ""
|
96
|
+
}]
|
97
|
+
}, {
|
98
|
+
type: "paragraph",
|
99
|
+
children: [{
|
100
|
+
type: "image",
|
101
|
+
url: "https://developers.elementor.com/docs/assets/img/elementor-placeholder-image.png",
|
102
|
+
images: [],
|
103
|
+
children: [{
|
104
|
+
text: " "
|
105
|
+
}],
|
106
|
+
size: {
|
107
|
+
width: 570.1953125,
|
108
|
+
height: 450,
|
109
|
+
widthInPercent: 89.06583684178412
|
110
|
+
},
|
111
|
+
alignment: {
|
112
|
+
horizantal: "center"
|
113
|
+
}
|
114
|
+
}]
|
39
115
|
}]
|
40
116
|
}],
|
41
117
|
bgColor: "rgba(255, 255, 255, 0)",
|
@@ -46,92 +122,9 @@ const default_grid = {
|
|
46
122
|
right: "16",
|
47
123
|
bottom: "16"
|
48
124
|
}
|
49
|
-
}, {
|
50
|
-
type: "grid-item",
|
51
|
-
grid: 12,
|
52
|
-
children: [{
|
53
|
-
type: "paragraph",
|
54
|
-
children: [{
|
55
|
-
text: ""
|
56
|
-
}]
|
57
|
-
}, {
|
58
|
-
type: "paragraph",
|
59
|
-
children: [{
|
60
|
-
text: ""
|
61
|
-
}]
|
62
|
-
}, {
|
63
|
-
type: "button",
|
64
|
-
children: [{
|
65
|
-
text: " "
|
66
|
-
}],
|
67
|
-
buttonLink: {
|
68
|
-
linkType: "webAddress"
|
69
|
-
},
|
70
|
-
label: "Gettings Started",
|
71
|
-
bgColor: "rgba(192,192,192, 1)",
|
72
|
-
textColor: "rgba(0,0,0,1)",
|
73
|
-
lockSpacing: true,
|
74
|
-
bannerSpacing: {
|
75
|
-
top: "16",
|
76
|
-
left: "16",
|
77
|
-
right: "16",
|
78
|
-
bottom: "16"
|
79
|
-
},
|
80
|
-
lockRadius: true,
|
81
|
-
borderRadius: {
|
82
|
-
topLeft: "12",
|
83
|
-
topRight: "12",
|
84
|
-
bottomLeft: "12",
|
85
|
-
bottomRight: "12"
|
86
|
-
},
|
87
|
-
bgColorHover: "rgba(0, 0, 0, 1)",
|
88
|
-
textColorHover: "rgba(255, 255, 255, 1)",
|
89
|
-
borderColor: "rgba(175, 51, 242, 0)"
|
90
|
-
}, {
|
91
|
-
type: "button",
|
92
|
-
children: [{
|
93
|
-
text: ""
|
94
|
-
}],
|
95
|
-
buttonLink: {
|
96
|
-
linkType: "webAddress"
|
97
|
-
},
|
98
|
-
label: "Learn More",
|
99
|
-
bgColor: "rgba(192,192,192, 1)",
|
100
|
-
textColor: "rgba(0,0,0,1)",
|
101
|
-
lockSpacing: false,
|
102
|
-
bannerSpacing: {
|
103
|
-
top: "16",
|
104
|
-
left: "32",
|
105
|
-
right: "32",
|
106
|
-
bottom: "16"
|
107
|
-
},
|
108
|
-
lockRadius: true,
|
109
|
-
borderRadius: {
|
110
|
-
topLeft: "12",
|
111
|
-
topRight: "12",
|
112
|
-
bottomLeft: "12",
|
113
|
-
bottomRight: "12"
|
114
|
-
},
|
115
|
-
borderColor: "rgba(175, 51, 242, 0)",
|
116
|
-
bgColorHover: "rgba(0,0,0,1)",
|
117
|
-
textColorHover: "rgba(255,255,255, 1)"
|
118
|
-
}],
|
119
|
-
bgColor: "rgba(255, 255, 255, 0)",
|
120
|
-
alignment: {
|
121
|
-
flexDirection: "row",
|
122
|
-
vertical: "center",
|
123
|
-
horizantal: "center"
|
124
|
-
},
|
125
|
-
lockSpacing: true,
|
126
|
-
bannerSpacing: {
|
127
|
-
top: "16",
|
128
|
-
left: "16",
|
129
|
-
right: "16",
|
130
|
-
bottom: "16"
|
131
|
-
}
|
132
125
|
}],
|
133
126
|
alignment: {
|
134
|
-
flexDirection: "
|
127
|
+
flexDirection: "row"
|
135
128
|
},
|
136
129
|
lockSpacing: true,
|
137
130
|
bannerSpacing: {
|
@@ -140,5 +133,5 @@ const default_grid = {
|
|
140
133
|
right: "16",
|
141
134
|
bottom: "16"
|
142
135
|
}
|
143
|
-
};
|
136
|
+
}];
|
144
137
|
export default JSON.stringify(default_grid);
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { Box } from "@mui/material";
|
3
|
+
import { ReactEditor, useSlateStatic } from "slate-react";
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
+
const SectionStyle = () => ({
|
6
|
+
root: {
|
7
|
+
position: "relative",
|
8
|
+
padding: "0px",
|
9
|
+
display: "flex",
|
10
|
+
alignItems: "center",
|
11
|
+
justifyContent: "center",
|
12
|
+
width: "100%",
|
13
|
+
"&.root-1": {
|
14
|
+
"& .section-inner-ed.root-1": {
|
15
|
+
width: "80%",
|
16
|
+
maxWidth: "1440px"
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
});
|
21
|
+
const Section = props => {
|
22
|
+
const {
|
23
|
+
element
|
24
|
+
} = props;
|
25
|
+
const editor = useSlateStatic();
|
26
|
+
const path = ReactEditor.findPath(editor, element);
|
27
|
+
console.log(path);
|
28
|
+
const classes = SectionStyle();
|
29
|
+
const {
|
30
|
+
children
|
31
|
+
} = props;
|
32
|
+
return /*#__PURE__*/_jsx(Box, {
|
33
|
+
component: "div",
|
34
|
+
className: `root-${path.length}`,
|
35
|
+
sx: classes.root,
|
36
|
+
children: /*#__PURE__*/_jsx("div", {
|
37
|
+
className: `section-inner-ed root-${path.length}`,
|
38
|
+
children: children
|
39
|
+
})
|
40
|
+
});
|
41
|
+
};
|
42
|
+
export default Section;
|
@@ -33,7 +33,12 @@ const editorStyles = ({
|
|
33
33
|
maxWidth: "100%",
|
34
34
|
height: "100%",
|
35
35
|
backgroundColor: "#FFF",
|
36
|
-
overflow: "visible"
|
36
|
+
overflow: "visible",
|
37
|
+
"& .section-wrapper-fluid": {
|
38
|
+
"& .grid-container": {
|
39
|
+
maxWidth: "1440px"
|
40
|
+
}
|
41
|
+
}
|
37
42
|
},
|
38
43
|
"& .el-toolbar": {
|
39
44
|
position: "absolute",
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
1
2
|
const embedVideoStyle = [{
|
2
3
|
tab: "URL",
|
3
4
|
value: "url",
|
@@ -14,5 +15,44 @@ const embedVideoStyle = [{
|
|
14
15
|
key: "alignment",
|
15
16
|
type: "alignment"
|
16
17
|
}]
|
18
|
+
}, {
|
19
|
+
tab: "Border",
|
20
|
+
value: "border",
|
21
|
+
fields: [{
|
22
|
+
label: "Border Color",
|
23
|
+
key: "borderColor",
|
24
|
+
type: "color"
|
25
|
+
}, {
|
26
|
+
label: "Border",
|
27
|
+
key: "borderRadius",
|
28
|
+
type: "borderRadius"
|
29
|
+
}, {
|
30
|
+
label: "Border Width",
|
31
|
+
key: "borderWidth",
|
32
|
+
type: "text",
|
33
|
+
placeholder: "1px"
|
34
|
+
}, {
|
35
|
+
label: "Border Style",
|
36
|
+
key: "borderStyle",
|
37
|
+
type: "textOptions",
|
38
|
+
options: [{
|
39
|
+
text: "Solid",
|
40
|
+
value: "solid"
|
41
|
+
}, {
|
42
|
+
text: "Dotted",
|
43
|
+
value: "dotted"
|
44
|
+
}, {
|
45
|
+
text: "Dashed",
|
46
|
+
value: "dashed"
|
47
|
+
}],
|
48
|
+
renderOption: option => {
|
49
|
+
return /*#__PURE__*/_jsx("span", {
|
50
|
+
style: {
|
51
|
+
fontFamily: option.value
|
52
|
+
},
|
53
|
+
children: option.text
|
54
|
+
});
|
55
|
+
}
|
56
|
+
}]
|
17
57
|
}];
|
18
58
|
export default embedVideoStyle;
|
@@ -8,6 +8,14 @@ const gridStyle = [{
|
|
8
8
|
type: "text",
|
9
9
|
placeholder: "Id should be unique for the page..."
|
10
10
|
}]
|
11
|
+
}, {
|
12
|
+
tab: "Size",
|
13
|
+
value: "gridSize",
|
14
|
+
fields: [{
|
15
|
+
label: "Grid Size",
|
16
|
+
key: "gridSize",
|
17
|
+
type: "gridSize"
|
18
|
+
}]
|
11
19
|
}, {
|
12
20
|
tab: "Colors",
|
13
21
|
value: "colors",
|
@@ -0,0 +1,38 @@
|
|
1
|
+
const gridStyle = [{
|
2
|
+
tab: "Colors",
|
3
|
+
value: "sectionColors",
|
4
|
+
fields: [{
|
5
|
+
label: "Background Color",
|
6
|
+
key: "sectionBgColor",
|
7
|
+
type: "color"
|
8
|
+
}]
|
9
|
+
}, {
|
10
|
+
tab: "Background",
|
11
|
+
value: "sectionBackgroundImage",
|
12
|
+
fields: [{
|
13
|
+
label: "Background Image URL",
|
14
|
+
key: "sectionBackgroundImage",
|
15
|
+
type: "text"
|
16
|
+
}, {
|
17
|
+
label: "Background Image",
|
18
|
+
key: "sectionBackgroundImage",
|
19
|
+
type: "backgroundImage"
|
20
|
+
}]
|
21
|
+
}, {
|
22
|
+
tab: "Padding",
|
23
|
+
value: "sectionBannerSpacing",
|
24
|
+
fields: [{
|
25
|
+
label: "Padding",
|
26
|
+
key: "sectionBannerSpacing",
|
27
|
+
type: "bannerSpacing"
|
28
|
+
}]
|
29
|
+
}, {
|
30
|
+
tab: "Border",
|
31
|
+
value: "sectionBorderRadius",
|
32
|
+
fields: [{
|
33
|
+
label: "Border",
|
34
|
+
key: "sectionBorderRadius",
|
35
|
+
type: "borderRadius"
|
36
|
+
}]
|
37
|
+
}];
|
38
|
+
export default gridStyle;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Editor, Range, Point, Element, Transforms } from "slate";
|
1
|
+
import { Editor, Range, Point, Element, Transforms, Node } from "slate";
|
2
2
|
const NON_DELETABLE_BLOCKS = ["table-cell", "carousel-item"];
|
3
3
|
const withTable = editor => {
|
4
4
|
const {
|
@@ -38,6 +38,25 @@ const withTable = editor => {
|
|
38
38
|
return;
|
39
39
|
}
|
40
40
|
}
|
41
|
+
if (selection) {
|
42
|
+
try {
|
43
|
+
const [selectedNode] = Editor.nodes(editor, {
|
44
|
+
match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "paragraph"
|
45
|
+
});
|
46
|
+
if (selectedNode && selectedNode[1]) {
|
47
|
+
const [nodeEle, nodePath] = selectedNode;
|
48
|
+
const dataText = Node.string(nodeEle);
|
49
|
+
// remove first node if no text and has other nodes in index 1 or more
|
50
|
+
if (editor.children.length > 1 && nodePath[0] === 0 && nodePath.length === 1 && dataText?.length === 0) {
|
51
|
+
Transforms.removeNodes(editor, {
|
52
|
+
at: nodePath
|
53
|
+
});
|
54
|
+
}
|
55
|
+
}
|
56
|
+
} catch (err) {
|
57
|
+
console.log(err);
|
58
|
+
}
|
59
|
+
}
|
41
60
|
deleteBackward(unit);
|
42
61
|
};
|
43
62
|
editor.deleteForward = unit => {
|
@@ -29,4 +29,15 @@ export const convertBase64 = file => {
|
|
29
29
|
resolve("");
|
30
30
|
}
|
31
31
|
});
|
32
|
+
};
|
33
|
+
export const gradientBorder = color => {
|
34
|
+
if (color?.indexOf("linear") > -1) {
|
35
|
+
return {
|
36
|
+
borderImage: `${color} 30`
|
37
|
+
};
|
38
|
+
} else {
|
39
|
+
return {
|
40
|
+
borderColor: color || "transparent"
|
41
|
+
};
|
42
|
+
}
|
32
43
|
};
|