@flozy/editor 1.4.2 → 1.4.4
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +3 -0
- package/dist/Editor/CommonEditor.js +124 -34
- package/dist/Editor/Editor.css +23 -0
- package/dist/Editor/Elements/AppHeader/AppHeader.js +146 -99
- package/dist/Editor/Elements/AppHeader/useEleveateScroll.js +53 -0
- package/dist/Editor/Elements/Embed/Image.js +14 -13
- package/dist/Editor/Elements/Grid/Grid.js +136 -12
- package/dist/Editor/Elements/Grid/GridItem.js +1 -5
- package/dist/Editor/Elements/Signature/SignatureOptions/DrawSignature.js +16 -7
- package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +5 -8
- package/dist/Editor/Elements/Signature/SignaturePopup.js +28 -18
- package/dist/Editor/Toolbar/FormatTools/Autocomplete.js +4 -4
- package/dist/Editor/Toolbar/Toolbar.js +2 -1
- package/dist/Editor/common/DroppableOverlay.js +33 -0
- package/dist/Editor/common/EditorIcons.js +27 -0
- package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +5 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +12 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +8 -4
- package/dist/Editor/common/StyleBuilder/gridItemStyle.js +0 -5
- package/dist/Editor/common/StyleBuilder/gridStyle.js +10 -0
- package/dist/Editor/common/useDragAndDrop.js +83 -0
- package/dist/Editor/helper/index.js +15 -1
- package/dist/Editor/hooks/useWindowResize.js +21 -0
- package/dist/Editor/utils/customHooks/useResize.js +6 -4
- package/dist/Editor/utils/grid.js +3 -3
- package/dist/Editor/utils/insertAppHeader.js +1 -1
- package/package.json +3 -1
@@ -1,11 +1,16 @@
|
|
1
|
-
import React, { useState } from "react";
|
2
|
-
import { Transforms, Path } from "slate";
|
1
|
+
import React, { useState, useEffect } from "react";
|
2
|
+
import { Transforms, Path, Node } from "slate";
|
3
3
|
import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
|
4
4
|
import { gridItem } from "../../utils/gridItem";
|
5
5
|
import GridPopup from "./GridPopup";
|
6
6
|
import { IconButton, Tooltip } from "@mui/material";
|
7
7
|
import SettingsIcon from "@mui/icons-material/Settings";
|
8
8
|
import AddIcon from "@mui/icons-material/Add";
|
9
|
+
import NoteAddIcon from "@mui/icons-material/NoteAdd";
|
10
|
+
import CompressIcon from "@mui/icons-material/Compress";
|
11
|
+
import { insertGrid } from "../../utils/grid";
|
12
|
+
import useDragAndDrop from "../../common/useDragAndDrop";
|
13
|
+
import useResize from "../../utils/customHooks/useResize";
|
9
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
10
15
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
11
16
|
const Grid = props => {
|
@@ -26,7 +31,9 @@ const Grid = props => {
|
|
26
31
|
bgColor,
|
27
32
|
alignment,
|
28
33
|
backgroundImage,
|
29
|
-
borderColor
|
34
|
+
borderColor,
|
35
|
+
size: elSize,
|
36
|
+
fgColor
|
30
37
|
} = element;
|
31
38
|
const {
|
32
39
|
left,
|
@@ -39,9 +46,45 @@ const Grid = props => {
|
|
39
46
|
horizantal,
|
40
47
|
flexDirection
|
41
48
|
} = alignment || {};
|
49
|
+
const {
|
50
|
+
height: elHeight
|
51
|
+
} = elSize || {};
|
42
52
|
const editor = useSlateStatic();
|
43
53
|
const selected = useSelected();
|
44
54
|
const path = ReactEditor.findPath(editor, element);
|
55
|
+
const [parentDOM, setParentDOM] = useState(null);
|
56
|
+
|
57
|
+
// resize
|
58
|
+
const [size, onMouseDown, resizing, onLoad] = useResize({
|
59
|
+
parentDOM,
|
60
|
+
size: element?.size,
|
61
|
+
isGrid: true
|
62
|
+
});
|
63
|
+
const arr = Array.from(Node.elements(editor));
|
64
|
+
const ele = arr.find(([elem]) => element === elem);
|
65
|
+
useEffect(() => {
|
66
|
+
if (editor && ele[1] !== undefined) {
|
67
|
+
const dom = ReactEditor.toDOMNode(editor, Node.get(editor, ele[1]));
|
68
|
+
const {
|
69
|
+
height
|
70
|
+
} = dom?.getBoundingClientRect();
|
71
|
+
setParentDOM(dom);
|
72
|
+
onLoad(element?.size || {
|
73
|
+
height: height
|
74
|
+
});
|
75
|
+
}
|
76
|
+
}, []);
|
77
|
+
|
78
|
+
// upadate resize data once resize done
|
79
|
+
useEffect(() => {
|
80
|
+
if (!resizing) {
|
81
|
+
Transforms.setNodes(editor, {
|
82
|
+
size: size
|
83
|
+
}, {
|
84
|
+
at: path
|
85
|
+
});
|
86
|
+
}
|
87
|
+
}, [resizing]);
|
45
88
|
const onAddGridItem = () => {
|
46
89
|
const currentPath = editor.selection?.anchor?.path;
|
47
90
|
const ancestorsPath = Path.ancestors(currentPath, {
|
@@ -85,12 +128,56 @@ const Grid = props => {
|
|
85
128
|
setOpenSettings(false);
|
86
129
|
};
|
87
130
|
const onDelete = () => {
|
88
|
-
|
89
|
-
|
90
|
-
|
131
|
+
try {
|
132
|
+
if (path) {
|
133
|
+
Transforms.removeNodes(editor, {
|
134
|
+
at: path
|
135
|
+
});
|
136
|
+
}
|
137
|
+
} catch (err) {
|
138
|
+
console.log(err);
|
139
|
+
}
|
140
|
+
};
|
141
|
+
const onAddSection = (defaultGrid = null, next = true) => () => {
|
142
|
+
try {
|
143
|
+
const insertPath = next ? Path.next(path) : path;
|
144
|
+
insertGrid(editor, defaultGrid, insertPath);
|
145
|
+
} catch (err) {
|
146
|
+
console.log(err);
|
147
|
+
}
|
148
|
+
};
|
149
|
+
const onDrop = dropElement => {
|
150
|
+
try {
|
151
|
+
Transforms.insertNodes(editor, JSON.parse(dropElement), {
|
152
|
+
at: path,
|
153
|
+
select: true
|
91
154
|
});
|
155
|
+
} catch (err) {
|
156
|
+
console.log(err);
|
92
157
|
}
|
93
158
|
};
|
159
|
+
const onDragEnd = () => {
|
160
|
+
try {
|
161
|
+
const currentDelpath = ReactEditor.findPath(editor, element);
|
162
|
+
if (currentDelpath) {
|
163
|
+
Transforms.removeNodes(editor, {
|
164
|
+
at: currentDelpath
|
165
|
+
});
|
166
|
+
}
|
167
|
+
} catch (err) {
|
168
|
+
console.log(err);
|
169
|
+
}
|
170
|
+
};
|
171
|
+
const grid_drag_id = `grid_drag_${path.join("_")}`;
|
172
|
+
const [dndElements, isDragging, isActiveDrag] = useDragAndDrop({
|
173
|
+
editor,
|
174
|
+
id: grid_drag_id,
|
175
|
+
selected,
|
176
|
+
path,
|
177
|
+
element,
|
178
|
+
onDragEnd,
|
179
|
+
onDrop
|
180
|
+
});
|
94
181
|
const GridToolBar = () => {
|
95
182
|
return selected ? /*#__PURE__*/_jsxs("div", {
|
96
183
|
className: "grid-container-toolbar",
|
@@ -109,6 +196,13 @@ const Grid = props => {
|
|
109
196
|
onClick: onAddGridItem,
|
110
197
|
children: /*#__PURE__*/_jsx(AddIcon, {})
|
111
198
|
})
|
199
|
+
}), /*#__PURE__*/_jsx(Tooltip, {
|
200
|
+
title: "Add Section",
|
201
|
+
arrow: true,
|
202
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
203
|
+
onClick: onAddSection(null, true),
|
204
|
+
children: /*#__PURE__*/_jsx(NoteAddIcon, {})
|
205
|
+
})
|
112
206
|
})]
|
113
207
|
}) : null;
|
114
208
|
};
|
@@ -116,7 +210,7 @@ const Grid = props => {
|
|
116
210
|
id
|
117
211
|
} : {};
|
118
212
|
return /*#__PURE__*/_jsxs("div", {
|
119
|
-
className: `grid-container ${grid} element-root`,
|
213
|
+
className: `grid-container ${grid} has-hover element-root ${isDragging ? "dragging" : ""} ${isActiveDrag ? "active_drag" : ""}`,
|
120
214
|
...attributes,
|
121
215
|
...sectionId,
|
122
216
|
style: {
|
@@ -125,7 +219,17 @@ const Grid = props => {
|
|
125
219
|
backgroundImage: backgroundImage && backgroundImage !== "none" ? `url(${backgroundImage})` : "none",
|
126
220
|
border: `1px solid ${borderColor}`
|
127
221
|
},
|
128
|
-
children: [
|
222
|
+
children: [fgColor && /*#__PURE__*/_jsx("div", {
|
223
|
+
style: {
|
224
|
+
position: "absolute",
|
225
|
+
pointerEvents: "none",
|
226
|
+
width: "100%",
|
227
|
+
height: "100%",
|
228
|
+
background: fgColor,
|
229
|
+
backgroundRepeat: "no-repeat",
|
230
|
+
backgroundSize: "cover"
|
231
|
+
}
|
232
|
+
}), dndElements, !readOnly && /*#__PURE__*/_jsx("div", {
|
129
233
|
className: `element-selector ${selected ? "selected" : ""}`,
|
130
234
|
contentEditable: false,
|
131
235
|
children: /*#__PURE__*/_jsx(GridToolBar, {})
|
@@ -136,18 +240,38 @@ const Grid = props => {
|
|
136
240
|
onDelete: onDelete,
|
137
241
|
customProps: customProps
|
138
242
|
}) : null, /*#__PURE__*/_jsx("div", {
|
243
|
+
className: "grid-c-wrpr",
|
139
244
|
style: {
|
140
245
|
display: "flex",
|
141
246
|
paddingLeft: `${left}px`,
|
142
247
|
paddingRight: `${right}px`,
|
143
248
|
paddingTop: `${top}px`,
|
144
249
|
paddingBottom: `${bottom}px`,
|
145
|
-
alignItems:
|
146
|
-
justifyContent: horizantal,
|
147
|
-
flexDirection: flexDirection,
|
148
|
-
width: "100%"
|
250
|
+
alignItems: vertical || "start",
|
251
|
+
justifyContent: horizantal || "start",
|
252
|
+
flexDirection: flexDirection || "row",
|
253
|
+
width: "100%",
|
254
|
+
height: resizing ? `${size?.height}px` : elHeight ? `${elHeight}px` : "fit-content"
|
149
255
|
},
|
150
256
|
children: children
|
257
|
+
}), selected && !readOnly && /*#__PURE__*/_jsx(IconButton, {
|
258
|
+
onPointerDown: onMouseDown,
|
259
|
+
style: {
|
260
|
+
opacity: 1,
|
261
|
+
background: "#FFF",
|
262
|
+
position: "absolute",
|
263
|
+
left: 0,
|
264
|
+
right: 0,
|
265
|
+
bottom: "-28px",
|
266
|
+
margin: "auto",
|
267
|
+
color: "#FFF",
|
268
|
+
backgroundColor: "#2684ff",
|
269
|
+
width: "42px",
|
270
|
+
height: "42px",
|
271
|
+
zIndex: 1000
|
272
|
+
},
|
273
|
+
className: "",
|
274
|
+
children: /*#__PURE__*/_jsx(CompressIcon, {})
|
151
275
|
})]
|
152
276
|
});
|
153
277
|
};
|
@@ -28,7 +28,6 @@ const GridItem = props => {
|
|
28
28
|
borderWidth,
|
29
29
|
borderColor,
|
30
30
|
margin,
|
31
|
-
textColorHover,
|
32
31
|
bgColorHover,
|
33
32
|
borderColorHover,
|
34
33
|
textColor
|
@@ -108,10 +107,7 @@ const GridItem = props => {
|
|
108
107
|
marginTop: `${margin?.top || 0}px`,
|
109
108
|
marginBottom: `${margin?.bottom || 0}px`,
|
110
109
|
"&:hover": {
|
111
|
-
background: `${bgColorHover || bgColor || "transparent"}
|
112
|
-
"& *": {
|
113
|
-
color: textColorHover || textColor || "#000"
|
114
|
-
}
|
110
|
+
background: `${bgColorHover || bgColor || "transparent"}`
|
115
111
|
}
|
116
112
|
},
|
117
113
|
children: [!readOnly && /*#__PURE__*/_jsx("div", {
|
@@ -1,23 +1,32 @@
|
|
1
|
-
import React, { useRef } from "react";
|
1
|
+
import React, { useRef, useState } from "react";
|
2
2
|
import SignatureCanvas from "react-signature-canvas";
|
3
3
|
import { Grid } from "@mui/material";
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
5
6
|
const DrawSignature = props => {
|
6
7
|
let canvasRef = useRef();
|
7
8
|
const {
|
8
9
|
onDataChange,
|
9
10
|
customProps: {
|
10
|
-
brush
|
11
|
+
brush,
|
12
|
+
services
|
11
13
|
}
|
12
14
|
} = props;
|
13
|
-
const
|
15
|
+
const [uploading, setUploading] = useState(false);
|
16
|
+
const onSigned = async () => {
|
17
|
+
setUploading(true);
|
18
|
+
const strImage = canvasRef.toDataURL();
|
19
|
+
const result = await services("uploadFile", {
|
20
|
+
image: strImage
|
21
|
+
});
|
22
|
+
setUploading(false);
|
14
23
|
onDataChange({
|
15
|
-
signature:
|
24
|
+
signature: result?.imageURL || strImage
|
16
25
|
});
|
17
26
|
};
|
18
|
-
return /*#__PURE__*/
|
27
|
+
return /*#__PURE__*/_jsxs(Grid, {
|
19
28
|
container: true,
|
20
|
-
children: /*#__PURE__*/_jsx(Grid, {
|
29
|
+
children: [uploading ? "Uploading..." : "", /*#__PURE__*/_jsx(Grid, {
|
21
30
|
item: true,
|
22
31
|
xs: 12,
|
23
32
|
style: {
|
@@ -33,7 +42,7 @@ const DrawSignature = props => {
|
|
33
42
|
maxWidth: brush.size || 2,
|
34
43
|
penColor: brush?.color || "#000"
|
35
44
|
})
|
36
|
-
})
|
45
|
+
})]
|
37
46
|
});
|
38
47
|
};
|
39
48
|
export default DrawSignature;
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import React, { useState } from "react";
|
2
2
|
import { convertBase64 } from "../../../utils/helper";
|
3
|
-
import { uploadFile } from "../../../service/fileupload";
|
4
3
|
import { Grid, Typography } from "@mui/material";
|
5
4
|
import { CloudUpload } from "../../../common/EditorIcons";
|
6
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
@@ -20,15 +19,13 @@ const UploadSignature = props => {
|
|
20
19
|
};
|
21
20
|
const doUpload = async strImage => {
|
22
21
|
setUploading(true);
|
23
|
-
const result = await uploadFile
|
22
|
+
const result = await customProps?.services("uploadFile", {
|
24
23
|
image: strImage
|
25
|
-
}
|
24
|
+
});
|
26
25
|
setUploading(false);
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
});
|
31
|
-
}
|
26
|
+
onUploadDone({
|
27
|
+
signature: result?.imageURL || strImage
|
28
|
+
});
|
32
29
|
};
|
33
30
|
return /*#__PURE__*/_jsxs("div", {
|
34
31
|
className: "signature-tab",
|
@@ -97,24 +97,34 @@ const SignaturePopup = props => {
|
|
97
97
|
p: 0,
|
98
98
|
pb: 2
|
99
99
|
},
|
100
|
-
children: /*#__PURE__*/_jsxs(
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
100
|
+
children: /*#__PURE__*/_jsxs(Grid, {
|
101
|
+
container: true,
|
102
|
+
justifyContent: "space-between",
|
103
|
+
children: [/*#__PURE__*/_jsx(Grid, {
|
104
|
+
item: true,
|
105
|
+
children: /*#__PURE__*/_jsx(Typography, {
|
106
|
+
variant: "h6",
|
107
|
+
className: "popupTitle",
|
108
|
+
color: "primary",
|
109
|
+
children: "SIGNATURE"
|
110
|
+
})
|
111
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
112
|
+
item: true,
|
113
|
+
children: /*#__PURE__*/_jsxs(Grid, {
|
114
|
+
container: true,
|
115
|
+
children: [customProps?.customComponents?.signature?.header?.map((elem, index) => /*#__PURE__*/_jsx(Grid, {
|
116
|
+
sx: {
|
117
|
+
pr: 1
|
118
|
+
},
|
119
|
+
children: elem
|
120
|
+
}, index)), /*#__PURE__*/_jsx(Grid, {
|
121
|
+
item: true,
|
122
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
123
|
+
onClick: handleClose,
|
124
|
+
className: "close-popupbtn",
|
125
|
+
children: /*#__PURE__*/_jsx(CloseIcon, {})
|
126
|
+
})
|
127
|
+
})]
|
118
128
|
})
|
119
129
|
})]
|
120
130
|
})
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import React from "react";
|
2
|
-
import { Autocomplete, TextField } from "@mui/material";
|
2
|
+
import { Autocomplete as SelectFreeSolo, TextField } from "@mui/material";
|
3
3
|
import { activeMark } from "../../utils/SlateUtilityFunctions.js";
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
-
const
|
5
|
+
const Autocomplete = ({
|
6
6
|
editor,
|
7
7
|
format,
|
8
8
|
options
|
@@ -16,7 +16,7 @@ const SelectFreeSolo = ({
|
|
16
16
|
// addMarkData(editor, { format, value });
|
17
17
|
};
|
18
18
|
|
19
|
-
return /*#__PURE__*/_jsx(
|
19
|
+
return /*#__PURE__*/_jsx(SelectFreeSolo, {
|
20
20
|
size: "small",
|
21
21
|
style: {},
|
22
22
|
value: value?.value,
|
@@ -30,4 +30,4 @@ const SelectFreeSolo = ({
|
|
30
30
|
})
|
31
31
|
});
|
32
32
|
};
|
33
|
-
export default
|
33
|
+
export default Autocomplete;
|
@@ -132,7 +132,8 @@ const Toolbar = props => {
|
|
132
132
|
}, element.id);
|
133
133
|
case "page-settings":
|
134
134
|
return /*#__PURE__*/_jsx(PageSettingsButton, {
|
135
|
-
editor: editor
|
135
|
+
editor: editor,
|
136
|
+
customProps: customProps
|
136
137
|
}, element.id);
|
137
138
|
case "carousel":
|
138
139
|
return /*#__PURE__*/_jsx(CarouselButton, {
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { ReactEditor } from "slate-react";
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
4
|
+
const DroppableOverlay = ({
|
5
|
+
editor,
|
6
|
+
dragData
|
7
|
+
}) => {
|
8
|
+
const {
|
9
|
+
data: {
|
10
|
+
current: {
|
11
|
+
element
|
12
|
+
}
|
13
|
+
}
|
14
|
+
} = dragData || {
|
15
|
+
data: {
|
16
|
+
current: {
|
17
|
+
element: null
|
18
|
+
}
|
19
|
+
}
|
20
|
+
};
|
21
|
+
const dragEle = element ? ReactEditor.toDOMNode(editor, element) : null;
|
22
|
+
const {
|
23
|
+
width,
|
24
|
+
height
|
25
|
+
} = dragEle?.getBoundingClientRect() || {};
|
26
|
+
return dragEle ? /*#__PURE__*/_jsx("div", {
|
27
|
+
style: {
|
28
|
+
width: width,
|
29
|
+
height: height
|
30
|
+
}
|
31
|
+
}) : null;
|
32
|
+
};
|
33
|
+
export default DroppableOverlay;
|
@@ -78,4 +78,31 @@ export const CloudUpload = props => /*#__PURE__*/_jsx("svg", {
|
|
78
78
|
fill: "#2563EB",
|
79
79
|
stroke: "#2563EB"
|
80
80
|
})
|
81
|
+
});
|
82
|
+
export const WorkFlow = () => /*#__PURE__*/_jsxs("svg", {
|
83
|
+
width: "20",
|
84
|
+
height: "21",
|
85
|
+
viewBox: "0 0 20 21",
|
86
|
+
fill: "none",
|
87
|
+
xmlns: "http://www.w3.org/2000/svg",
|
88
|
+
children: [/*#__PURE__*/_jsx("path", {
|
89
|
+
d: "M0 20.4H20V0.4H0V20.4Z",
|
90
|
+
fill: "url(#pattern0)"
|
91
|
+
}), /*#__PURE__*/_jsxs("defs", {
|
92
|
+
children: [/*#__PURE__*/_jsx("pattern", {
|
93
|
+
id: "pattern0",
|
94
|
+
patternContentUnits: "objectBoundingBox",
|
95
|
+
width: "1",
|
96
|
+
height: "1",
|
97
|
+
children: /*#__PURE__*/_jsx("use", {
|
98
|
+
href: "#image0_1919_14564",
|
99
|
+
transform: "scale(0.00625)"
|
100
|
+
})
|
101
|
+
}), /*#__PURE__*/_jsx("image", {
|
102
|
+
id: "image0_1919_14564",
|
103
|
+
width: "160",
|
104
|
+
height: "160",
|
105
|
+
href: "data:image/png;base64,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"
|
106
|
+
})]
|
107
|
+
})]
|
81
108
|
});
|
@@ -19,6 +19,7 @@ const Alignment = props => {
|
|
19
19
|
}
|
20
20
|
});
|
21
21
|
};
|
22
|
+
const flexDirection = value?.flexDirection || "row";
|
22
23
|
return /*#__PURE__*/_jsxs(Grid, {
|
23
24
|
container: true,
|
24
25
|
style: {
|
@@ -34,7 +35,7 @@ const Alignment = props => {
|
|
34
35
|
children: /*#__PURE__*/_jsx(Typography, {
|
35
36
|
variant: "body1",
|
36
37
|
color: "primary",
|
37
|
-
children: "
|
38
|
+
children: "Align Items"
|
38
39
|
})
|
39
40
|
}), /*#__PURE__*/_jsxs(RadioGroup, {
|
40
41
|
row: true,
|
@@ -45,7 +46,7 @@ const Alignment = props => {
|
|
45
46
|
children: [/*#__PURE__*/_jsx(FormControlLabel, {
|
46
47
|
value: "start",
|
47
48
|
control: /*#__PURE__*/_jsx(Radio, {}),
|
48
|
-
label: "
|
49
|
+
label: "Start"
|
49
50
|
}), /*#__PURE__*/_jsx(FormControlLabel, {
|
50
51
|
value: "center",
|
51
52
|
control: /*#__PURE__*/_jsx(Radio, {}),
|
@@ -53,7 +54,7 @@ const Alignment = props => {
|
|
53
54
|
}), /*#__PURE__*/_jsx(FormControlLabel, {
|
54
55
|
value: "end",
|
55
56
|
control: /*#__PURE__*/_jsx(Radio, {}),
|
56
|
-
label: "
|
57
|
+
label: "End"
|
57
58
|
})]
|
58
59
|
})]
|
59
60
|
})
|
@@ -66,7 +67,7 @@ const Alignment = props => {
|
|
66
67
|
children: /*#__PURE__*/_jsx(Typography, {
|
67
68
|
variant: "body1",
|
68
69
|
color: "primary",
|
69
|
-
children: "
|
70
|
+
children: "Justify Content"
|
70
71
|
})
|
71
72
|
}), /*#__PURE__*/_jsxs(RadioGroup, {
|
72
73
|
row: true,
|
@@ -77,7 +78,7 @@ const Alignment = props => {
|
|
77
78
|
children: [/*#__PURE__*/_jsx(FormControlLabel, {
|
78
79
|
value: "start",
|
79
80
|
control: /*#__PURE__*/_jsx(Radio, {}),
|
80
|
-
label: "
|
81
|
+
label: "Start"
|
81
82
|
}), /*#__PURE__*/_jsx(FormControlLabel, {
|
82
83
|
value: "center",
|
83
84
|
control: /*#__PURE__*/_jsx(Radio, {}),
|
@@ -85,7 +86,7 @@ const Alignment = props => {
|
|
85
86
|
}), /*#__PURE__*/_jsx(FormControlLabel, {
|
86
87
|
value: "end",
|
87
88
|
control: /*#__PURE__*/_jsx(Radio, {}),
|
88
|
-
label: "
|
89
|
+
label: "End"
|
89
90
|
})]
|
90
91
|
})]
|
91
92
|
})
|
@@ -104,7 +105,7 @@ const Alignment = props => {
|
|
104
105
|
row: true,
|
105
106
|
"aria-labelledby": "demo-row-radio-buttons-group-label",
|
106
107
|
name: "flexDirection",
|
107
|
-
value:
|
108
|
+
value: flexDirection,
|
108
109
|
onChange: handleChange,
|
109
110
|
children: [/*#__PURE__*/_jsx(FormControlLabel, {
|
110
111
|
value: "row",
|
@@ -114,6 +115,10 @@ const Alignment = props => {
|
|
114
115
|
value: "column",
|
115
116
|
control: /*#__PURE__*/_jsx(Radio, {}),
|
116
117
|
label: "Column"
|
118
|
+
}), /*#__PURE__*/_jsx(FormControlLabel, {
|
119
|
+
value: "row-reverse",
|
120
|
+
control: /*#__PURE__*/_jsx(Radio, {}),
|
121
|
+
label: "Row reverse"
|
117
122
|
})]
|
118
123
|
})]
|
119
124
|
})
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import React from "react";
|
2
|
-
import { Grid, Checkbox, FormControlLabel } from "@mui/material";
|
2
|
+
import { Grid, Checkbox, FormControlLabel, FormHelperText } from "@mui/material";
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
4
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
4
5
|
const SelectBox = props => {
|
5
6
|
const {
|
6
7
|
value,
|
@@ -19,16 +20,19 @@ const SelectBox = props => {
|
|
19
20
|
return /*#__PURE__*/_jsx(Grid, {
|
20
21
|
container: true,
|
21
22
|
padding: 1,
|
22
|
-
children: /*#__PURE__*/
|
23
|
+
children: /*#__PURE__*/_jsxs(Grid, {
|
23
24
|
item: true,
|
24
25
|
xs: 12,
|
25
|
-
children: /*#__PURE__*/_jsx(FormControlLabel, {
|
26
|
+
children: [/*#__PURE__*/_jsx(FormControlLabel, {
|
26
27
|
control: /*#__PURE__*/_jsx(Checkbox, {
|
27
28
|
value: value,
|
29
|
+
checked: value,
|
28
30
|
onChange: handleChange
|
29
31
|
}),
|
30
32
|
label: placeholder
|
31
|
-
})
|
33
|
+
}), /*#__PURE__*/_jsx(FormHelperText, {
|
34
|
+
children: data?.helperText
|
35
|
+
})]
|
32
36
|
})
|
33
37
|
});
|
34
38
|
};
|
@@ -7,6 +7,12 @@ const gridStyle = [{
|
|
7
7
|
key: "id",
|
8
8
|
type: "text",
|
9
9
|
placeholder: "Id should be unique for the page..."
|
10
|
+
}, {
|
11
|
+
label: "Copy Grid",
|
12
|
+
key: "copyGrid",
|
13
|
+
type: "selectBox",
|
14
|
+
placeholder: "Copy Grid",
|
15
|
+
helperText: "This Grid will get copied when creating a new page from this page."
|
10
16
|
}]
|
11
17
|
}, {
|
12
18
|
tab: "Padding",
|
@@ -63,6 +69,10 @@ const gridStyle = [{
|
|
63
69
|
label: "Background",
|
64
70
|
key: "bgColor",
|
65
71
|
type: "color"
|
72
|
+
}, {
|
73
|
+
label: "Foreground Color",
|
74
|
+
key: "fgColor",
|
75
|
+
type: "color"
|
66
76
|
}, {
|
67
77
|
label: "Border",
|
68
78
|
key: "borderColor",
|