@flozy/editor 1.1.1 → 1.1.4
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/dist/Editor/CollaborativeEditor.js +7 -2
- package/dist/Editor/CommonEditor.js +59 -37
- package/dist/Editor/Editor.css +209 -12
- package/dist/Editor/Elements/Accordion/Accordion.js +100 -0
- package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +20 -0
- package/dist/Editor/Elements/Accordion/AccordionButton.js +22 -0
- package/dist/Editor/Elements/Accordion/AccordionDetails.js +18 -0
- package/dist/Editor/Elements/Accordion/AccordionSummary.js +69 -0
- package/dist/Editor/Elements/Accordion/AccordionTitlePopup.js +20 -0
- package/dist/Editor/Elements/Button/ButtonPopup.js +20 -0
- package/dist/Editor/Elements/Button/ButtonToolIcon.js +19 -0
- package/dist/Editor/Elements/Button/EditorButton.js +124 -0
- package/dist/Editor/Elements/Carousel/Arrows.js +39 -0
- package/dist/Editor/Elements/Carousel/Carousel.js +82 -0
- package/dist/Editor/Elements/Carousel/CarouselButton.js +19 -0
- package/dist/Editor/Elements/Carousel/CarouselItem.js +13 -0
- package/dist/Editor/Elements/Carousel/slick-theme.min.css +143 -0
- package/dist/Editor/Elements/Carousel/slick.min.css +83 -0
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +1 -1
- package/dist/Editor/Elements/Embed/Embed.css +22 -2
- package/dist/Editor/Elements/Embed/Embed.js +89 -74
- package/dist/Editor/Elements/Embed/EmbedPopup.js +23 -0
- package/dist/Editor/Elements/Embed/Image.js +92 -10
- package/dist/Editor/Elements/Embed/Video.js +31 -5
- package/dist/Editor/Elements/Equation/EquationButton.js +12 -12
- package/dist/Editor/Elements/Grid/Grid.js +64 -8
- package/dist/Editor/Elements/Grid/GridButton.js +2 -4
- package/dist/Editor/Elements/Grid/GridItem.js +59 -5
- package/dist/Editor/Elements/Grid/GridItemPopup.js +20 -0
- package/dist/Editor/Elements/Grid/GridPopup.js +22 -0
- package/dist/Editor/Elements/ID/Id.js +1 -1
- package/dist/Editor/Elements/ImageText/ImageText.js +14 -0
- package/dist/Editor/Elements/ImageText/ImageTextWrapper.js +14 -0
- package/dist/Editor/Elements/Link/LinkButton.js +1 -1
- package/dist/Editor/Elements/NewLine/NewLineButton.js +2 -1
- package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +88 -0
- package/dist/Editor/Elements/PageSettings/PageSettingsPopup.js +22 -0
- package/dist/Editor/Elements/Signature/Signature.js +50 -0
- package/dist/Editor/Elements/Signature/SignatureButton.js +19 -0
- package/dist/Editor/Elements/Signature/SignatureOptions/DrawSignature.js +39 -0
- package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +84 -0
- package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +50 -0
- package/dist/Editor/Elements/Signature/SignatureOptions/index.js +5 -0
- package/dist/Editor/Elements/Signature/SignaturePopup.js +243 -0
- package/dist/Editor/Elements/Signature/Signed.js +80 -0
- package/dist/Editor/Elements/Table/DeleteCellIcon.js +24 -0
- package/dist/Editor/Elements/Table/DeleteRowIcon.js +24 -0
- package/dist/Editor/Elements/Table/Table.js +9 -1
- package/dist/Editor/Elements/Table/TableCell.js +181 -0
- package/dist/Editor/Elements/Table/TablePopup.js +22 -0
- package/dist/Editor/Elements/Table/TableRow.js +31 -0
- package/dist/Editor/Elements/Table/TableSelector.js +62 -68
- package/dist/Editor/Toolbar/Toolbar.js +47 -10
- package/dist/Editor/Toolbar/styles.css +20 -11
- package/dist/Editor/Toolbar/toolbarGroups.js +17 -19
- package/dist/Editor/common/Button.js +4 -8
- package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +23 -0
- package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +35 -0
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +47 -0
- package/dist/Editor/common/StyleBuilder/embedImageStyle.js +63 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +88 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +87 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +136 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +126 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +89 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/elementSize.js +110 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/gridSize.js +42 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/imageTexts.js +75 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +21 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +46 -0
- package/dist/Editor/common/StyleBuilder/gridItemStyle.js +51 -0
- package/dist/Editor/common/StyleBuilder/gridStyle.js +51 -0
- package/dist/Editor/common/StyleBuilder/index.js +114 -0
- package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +10 -0
- package/dist/Editor/common/StyleBuilder/tableStyle.js +38 -0
- package/dist/Editor/common/Uploader.js +87 -0
- package/dist/Editor/plugins/withEmbeds.js +12 -5
- package/dist/Editor/plugins/withTable.js +5 -4
- package/dist/Editor/service/fileupload.js +17 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +72 -23
- package/dist/Editor/utils/accordion.js +25 -0
- package/dist/Editor/utils/button.js +11 -0
- package/dist/Editor/utils/carousel.js +13 -0
- package/dist/Editor/utils/carouselItem.js +19 -0
- package/dist/Editor/utils/customHooks/useContextMenu.js +8 -8
- package/dist/Editor/utils/customHooks/useResize.js +1 -1
- package/dist/Editor/utils/font.js +59 -0
- package/dist/Editor/utils/helper.js +32 -0
- package/dist/Editor/utils/imageText.js +19 -0
- package/dist/Editor/utils/signature.js +23 -0
- package/dist/Editor/utils/table.js +172 -0
- package/package.json +11 -3
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { useState } from "react";
|
|
2
2
|
import { Transforms, Element } from "slate";
|
|
3
|
-
import { useSelected, useSlateStatic } from "slate-react";
|
|
3
|
+
import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
|
|
4
|
+
import GridItemPopup from "./GridItemPopup";
|
|
4
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
6
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
7
|
const GridItem = props => {
|
|
@@ -9,12 +10,27 @@ const GridItem = props => {
|
|
|
9
10
|
children,
|
|
10
11
|
element
|
|
11
12
|
} = props;
|
|
13
|
+
const [openSetttings, setOpenSettings] = useState(false);
|
|
12
14
|
const {
|
|
13
|
-
grid
|
|
15
|
+
grid,
|
|
16
|
+
bannerSpacing,
|
|
17
|
+
bgColor,
|
|
18
|
+
alignment
|
|
14
19
|
} = element;
|
|
20
|
+
const {
|
|
21
|
+
left,
|
|
22
|
+
top,
|
|
23
|
+
right,
|
|
24
|
+
bottom
|
|
25
|
+
} = bannerSpacing || {};
|
|
26
|
+
const {
|
|
27
|
+
vertical,
|
|
28
|
+
horizantal
|
|
29
|
+
} = alignment || {};
|
|
15
30
|
const editor = useSlateStatic();
|
|
16
31
|
const selected = useSelected();
|
|
17
32
|
const itemWidth = (grid || 6) / 12 * 100;
|
|
33
|
+
const path = ReactEditor.findPath(editor, element);
|
|
18
34
|
const onItemSizeDecrease = () => {
|
|
19
35
|
Transforms.setNodes(editor, {
|
|
20
36
|
grid: grid <= 1 ? 1 : grid - 1
|
|
@@ -37,7 +53,13 @@ const GridItem = props => {
|
|
|
37
53
|
return selected ? /*#__PURE__*/_jsxs("div", {
|
|
38
54
|
contentEditable: false,
|
|
39
55
|
className: "grid-item-toolbar",
|
|
56
|
+
style: {
|
|
57
|
+
top: "0px"
|
|
58
|
+
},
|
|
40
59
|
children: [/*#__PURE__*/_jsx("button", {
|
|
60
|
+
onClick: onSettings,
|
|
61
|
+
children: "Settings"
|
|
62
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
41
63
|
onClick: onItemSizeDecrease,
|
|
42
64
|
children: "-"
|
|
43
65
|
}), /*#__PURE__*/_jsx("button", {
|
|
@@ -46,13 +68,45 @@ const GridItem = props => {
|
|
|
46
68
|
})]
|
|
47
69
|
}) : null;
|
|
48
70
|
};
|
|
71
|
+
const onSettings = () => {
|
|
72
|
+
setOpenSettings(true);
|
|
73
|
+
};
|
|
74
|
+
const onSave = data => {
|
|
75
|
+
const updateData = {
|
|
76
|
+
...data
|
|
77
|
+
};
|
|
78
|
+
delete updateData.children;
|
|
79
|
+
Transforms.setNodes(editor, {
|
|
80
|
+
...updateData
|
|
81
|
+
}, {
|
|
82
|
+
at: path
|
|
83
|
+
});
|
|
84
|
+
onClose();
|
|
85
|
+
};
|
|
86
|
+
const onClose = () => {
|
|
87
|
+
setOpenSettings(false);
|
|
88
|
+
};
|
|
49
89
|
return /*#__PURE__*/_jsxs("div", {
|
|
50
90
|
className: `grid-item xs-${grid}`,
|
|
51
91
|
...attributes,
|
|
52
92
|
style: {
|
|
53
|
-
|
|
93
|
+
display: "flex",
|
|
94
|
+
flexDirection: "column",
|
|
95
|
+
paddingLeft: `${left}px`,
|
|
96
|
+
paddingRight: `${right}px`,
|
|
97
|
+
paddingTop: `${top}px`,
|
|
98
|
+
paddingBottom: `${bottom}px`,
|
|
99
|
+
backgroundColor: bgColor,
|
|
100
|
+
alignItems: horizantal,
|
|
101
|
+
alignContent: vertical,
|
|
102
|
+
width: `${itemWidth}%`,
|
|
103
|
+
margin: "0px"
|
|
54
104
|
},
|
|
55
|
-
children: [children, /*#__PURE__*/_jsx(GridItemToolbar, {})
|
|
105
|
+
children: [children, /*#__PURE__*/_jsx(GridItemToolbar, {}), openSetttings ? /*#__PURE__*/_jsx(GridItemPopup, {
|
|
106
|
+
element: element,
|
|
107
|
+
onSave: onSave,
|
|
108
|
+
onClose: onClose
|
|
109
|
+
}) : null]
|
|
56
110
|
});
|
|
57
111
|
};
|
|
58
112
|
export default GridItem;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import StyleBuilder from "../../common/StyleBuilder";
|
|
3
|
+
import gridItemStyle from "../../common/StyleBuilder/gridItemStyle";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
const GridItemPopup = props => {
|
|
6
|
+
const {
|
|
7
|
+
element,
|
|
8
|
+
onSave,
|
|
9
|
+
onClose
|
|
10
|
+
} = props;
|
|
11
|
+
return /*#__PURE__*/_jsx(StyleBuilder, {
|
|
12
|
+
title: "Grid Item",
|
|
13
|
+
type: "gridItemStyle",
|
|
14
|
+
element: element,
|
|
15
|
+
onSave: onSave,
|
|
16
|
+
onClose: onClose,
|
|
17
|
+
renderTabs: gridItemStyle
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
export default GridItemPopup;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import StyleBuilder from "../../common/StyleBuilder";
|
|
3
|
+
import gridStyle from "../../common/StyleBuilder/gridStyle";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
const GridPopup = props => {
|
|
6
|
+
const {
|
|
7
|
+
element,
|
|
8
|
+
onSave,
|
|
9
|
+
onClose,
|
|
10
|
+
customProps
|
|
11
|
+
} = props;
|
|
12
|
+
return /*#__PURE__*/_jsx(StyleBuilder, {
|
|
13
|
+
title: "Grid",
|
|
14
|
+
type: "gridStyle",
|
|
15
|
+
element: element,
|
|
16
|
+
onSave: onSave,
|
|
17
|
+
onClose: onClose,
|
|
18
|
+
renderTabs: gridStyle,
|
|
19
|
+
customProps: customProps
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export default GridPopup;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
const ImageText = props => {
|
|
4
|
+
const {
|
|
5
|
+
attributes,
|
|
6
|
+
children
|
|
7
|
+
} = props;
|
|
8
|
+
return /*#__PURE__*/_jsx("div", {
|
|
9
|
+
className: "image-text",
|
|
10
|
+
...attributes,
|
|
11
|
+
children: children
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
export default ImageText;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
const ImageTextWrapper = props => {
|
|
4
|
+
const {
|
|
5
|
+
attributes,
|
|
6
|
+
children
|
|
7
|
+
} = props;
|
|
8
|
+
return /*#__PURE__*/_jsx("div", {
|
|
9
|
+
...attributes,
|
|
10
|
+
className: "image-text-wrapper",
|
|
11
|
+
children: children
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
export default ImageTextWrapper;
|
|
@@ -41,7 +41,7 @@ const LinkButton = props => {
|
|
|
41
41
|
};
|
|
42
42
|
return /*#__PURE__*/_jsxs("div", {
|
|
43
43
|
ref: linkInputRef,
|
|
44
|
-
className: "popup-
|
|
44
|
+
className: "popup-wrapper1",
|
|
45
45
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
46
46
|
className: showInput ? "clicked" : "",
|
|
47
47
|
active: isBlockActive(editor, "link"),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { IconButton } from "@mui/material";
|
|
2
3
|
import KeyboardReturnIcon from "@mui/icons-material/KeyboardReturn";
|
|
3
4
|
import { Transforms } from "slate";
|
|
4
5
|
import { useSlateStatic } from "slate-react";
|
|
@@ -15,7 +16,7 @@ const NewLineButton = props => {
|
|
|
15
16
|
at: [editor.children.length]
|
|
16
17
|
});
|
|
17
18
|
};
|
|
18
|
-
return /*#__PURE__*/_jsx(
|
|
19
|
+
return /*#__PURE__*/_jsx(IconButton, {
|
|
19
20
|
title: "New Line",
|
|
20
21
|
onClick: onAddNewLine,
|
|
21
22
|
children: /*#__PURE__*/_jsx(KeyboardReturnIcon, {})
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Transforms, Editor, Element } from "slate";
|
|
3
|
+
import { IconButton } from "@mui/material";
|
|
4
|
+
import ArticleIcon from "@mui/icons-material/Article";
|
|
5
|
+
import { useSlateStatic, ReactEditor } from "slate-react";
|
|
6
|
+
import PageSettingsPopup from "./PageSettingsPopup";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const PageSettingsButton = props => {
|
|
10
|
+
const {
|
|
11
|
+
customProps
|
|
12
|
+
} = props;
|
|
13
|
+
const [openSetttings, setOpenSettings] = useState(false);
|
|
14
|
+
const [pageProps, setPageProps] = useState({});
|
|
15
|
+
const editor = useSlateStatic();
|
|
16
|
+
const onSettings = () => {
|
|
17
|
+
const {
|
|
18
|
+
element
|
|
19
|
+
} = getPageSettingsPath();
|
|
20
|
+
if (element) {
|
|
21
|
+
setPageProps(element?.pageProps || {});
|
|
22
|
+
setOpenSettings(true);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const getPageSettingsPath = () => {
|
|
26
|
+
try {
|
|
27
|
+
const [pageSettingsNode] = Editor.nodes(editor, {
|
|
28
|
+
at: [],
|
|
29
|
+
match: n => {
|
|
30
|
+
return !Editor.isEditor(n) && Element.isElement(n) && n.type === "page-settings";
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const path = ReactEditor.findPath(editor, pageSettingsNode[0]);
|
|
34
|
+
return {
|
|
35
|
+
path,
|
|
36
|
+
element: pageSettingsNode[0]
|
|
37
|
+
};
|
|
38
|
+
} catch (err) {
|
|
39
|
+
console.log(err);
|
|
40
|
+
return {
|
|
41
|
+
path: null
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const onSave = data => {
|
|
46
|
+
const {
|
|
47
|
+
path
|
|
48
|
+
} = getPageSettingsPath();
|
|
49
|
+
const updateData = {
|
|
50
|
+
...data
|
|
51
|
+
};
|
|
52
|
+
delete updateData.children;
|
|
53
|
+
if (path) {
|
|
54
|
+
Transforms.setNodes(editor, {
|
|
55
|
+
pageProps: {
|
|
56
|
+
...updateData
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
at: path
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
Transforms.insertNodes(editor, [{
|
|
63
|
+
type: "page-settings",
|
|
64
|
+
pageProps: {
|
|
65
|
+
...updateData
|
|
66
|
+
},
|
|
67
|
+
children: [{
|
|
68
|
+
text: ""
|
|
69
|
+
}]
|
|
70
|
+
}]);
|
|
71
|
+
}
|
|
72
|
+
onClose();
|
|
73
|
+
};
|
|
74
|
+
const onClose = () => {
|
|
75
|
+
setOpenSettings(false);
|
|
76
|
+
};
|
|
77
|
+
return /*#__PURE__*/_jsxs(IconButton, {
|
|
78
|
+
title: "Page Settings",
|
|
79
|
+
onClick: onSettings,
|
|
80
|
+
children: [/*#__PURE__*/_jsx(ArticleIcon, {}), openSetttings ? /*#__PURE__*/_jsx(PageSettingsPopup, {
|
|
81
|
+
element: pageProps,
|
|
82
|
+
onSave: onSave,
|
|
83
|
+
onClose: onClose,
|
|
84
|
+
customProps: customProps
|
|
85
|
+
}) : null]
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
export default PageSettingsButton;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import StyleBuilder from "../../common/StyleBuilder";
|
|
3
|
+
import pageSettingsStyle from "../../common/StyleBuilder/pageSettingsStyle";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
const PageSettingsPopup = props => {
|
|
6
|
+
const {
|
|
7
|
+
element,
|
|
8
|
+
onSave,
|
|
9
|
+
onClose,
|
|
10
|
+
customProps
|
|
11
|
+
} = props;
|
|
12
|
+
return /*#__PURE__*/_jsx(StyleBuilder, {
|
|
13
|
+
title: "Grid",
|
|
14
|
+
type: "pageSettingsStyle",
|
|
15
|
+
element: element,
|
|
16
|
+
onSave: onSave,
|
|
17
|
+
onClose: onClose,
|
|
18
|
+
renderTabs: pageSettingsStyle,
|
|
19
|
+
customProps: customProps
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export default PageSettingsPopup;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Transforms } from "slate";
|
|
3
|
+
import { useSlateStatic, ReactEditor } from "slate-react";
|
|
4
|
+
import SignaturePopup from "./SignaturePopup";
|
|
5
|
+
import { formatDate } from "../../utils/helper";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
const Signature = props => {
|
|
9
|
+
const {
|
|
10
|
+
attributes,
|
|
11
|
+
children,
|
|
12
|
+
element,
|
|
13
|
+
customProps
|
|
14
|
+
} = props;
|
|
15
|
+
const editor = useSlateStatic();
|
|
16
|
+
const isSigned = element?.children[0]?.type === "sign";
|
|
17
|
+
const path = ReactEditor.findPath(editor, element);
|
|
18
|
+
const onSave = (data = {}) => {
|
|
19
|
+
onClear();
|
|
20
|
+
Transforms.insertNodes(editor, [{
|
|
21
|
+
type: "sign",
|
|
22
|
+
signature: null,
|
|
23
|
+
fontFamily: "",
|
|
24
|
+
signedBy: "",
|
|
25
|
+
signedOn: formatDate(new Date(), "MM/DD/YYYY"),
|
|
26
|
+
signedText: "",
|
|
27
|
+
children: [{
|
|
28
|
+
text: ""
|
|
29
|
+
}],
|
|
30
|
+
...data
|
|
31
|
+
}], {
|
|
32
|
+
at: [...path, 0]
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const onClear = () => {
|
|
36
|
+
Transforms.removeNodes(editor, {
|
|
37
|
+
at: [...path, 0]
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
41
|
+
className: `signature-container`,
|
|
42
|
+
...attributes,
|
|
43
|
+
children: [!isSigned ? /*#__PURE__*/_jsx(SignaturePopup, {
|
|
44
|
+
customProps: customProps,
|
|
45
|
+
onSave: onSave,
|
|
46
|
+
onClear: onClear
|
|
47
|
+
}) : null, children]
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
export default Signature;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IconButton } from "@mui/material";
|
|
3
|
+
import DrawIcon from "@mui/icons-material/Draw";
|
|
4
|
+
import { insertSignature } from "../../utils/signature";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
const SignatureButton = props => {
|
|
7
|
+
const {
|
|
8
|
+
editor
|
|
9
|
+
} = props;
|
|
10
|
+
const handleInsertSignature = () => {
|
|
11
|
+
insertSignature(editor);
|
|
12
|
+
};
|
|
13
|
+
return /*#__PURE__*/_jsx(IconButton, {
|
|
14
|
+
onClick: handleInsertSignature,
|
|
15
|
+
title: "Signature",
|
|
16
|
+
children: /*#__PURE__*/_jsx(DrawIcon, {})
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
export default SignatureButton;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React, { useRef } from "react";
|
|
2
|
+
import SignatureCanvas from "react-signature-canvas";
|
|
3
|
+
import { Grid } from "@mui/material";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
const DrawSignature = props => {
|
|
6
|
+
let canvasRef = useRef();
|
|
7
|
+
const {
|
|
8
|
+
onDataChange,
|
|
9
|
+
customProps: {
|
|
10
|
+
brush
|
|
11
|
+
}
|
|
12
|
+
} = props;
|
|
13
|
+
const onSigned = () => {
|
|
14
|
+
onDataChange({
|
|
15
|
+
signature: canvasRef.toDataURL()
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
return /*#__PURE__*/_jsx(Grid, {
|
|
19
|
+
container: true,
|
|
20
|
+
children: /*#__PURE__*/_jsx(Grid, {
|
|
21
|
+
item: true,
|
|
22
|
+
xs: 12,
|
|
23
|
+
style: {
|
|
24
|
+
width: "100%",
|
|
25
|
+
height: "209px"
|
|
26
|
+
},
|
|
27
|
+
children: /*#__PURE__*/_jsx(SignatureCanvas, {
|
|
28
|
+
canvasProps: {
|
|
29
|
+
className: "signature-canvas"
|
|
30
|
+
},
|
|
31
|
+
onEnd: onSigned,
|
|
32
|
+
ref: ref => canvasRef = ref,
|
|
33
|
+
maxWidth: brush.size || 2,
|
|
34
|
+
penColor: brush?.color || "#000"
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
export default DrawSignature;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { signedTextFonts } from "../../../utils/font";
|
|
3
|
+
import { Grid, Button, TextField, InputAdornment, IconButton } from "@mui/material";
|
|
4
|
+
import ClearIcon from "@mui/icons-material/Clear";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const TypeSignature = props => {
|
|
8
|
+
const {
|
|
9
|
+
onDataChange
|
|
10
|
+
} = props;
|
|
11
|
+
const [name, setName] = useState("");
|
|
12
|
+
const [fontFamily, setFontFamily] = useState("");
|
|
13
|
+
const onChange = e => {
|
|
14
|
+
setName(e.target.value);
|
|
15
|
+
onDataChange({
|
|
16
|
+
signedText: e.target.value,
|
|
17
|
+
signature: ""
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
const onFontFamilyChange = val => () => {
|
|
21
|
+
setFontFamily(val);
|
|
22
|
+
onDataChange({
|
|
23
|
+
fontFamily: val
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const renderFontFamily = () => {
|
|
27
|
+
return signedTextFonts.map((m, i) => {
|
|
28
|
+
return /*#__PURE__*/_jsx(Grid, {
|
|
29
|
+
item: true,
|
|
30
|
+
padding: 1,
|
|
31
|
+
xs: 4,
|
|
32
|
+
style: {
|
|
33
|
+
textAlign: "center"
|
|
34
|
+
},
|
|
35
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
36
|
+
style: {
|
|
37
|
+
fontFamily: m.text
|
|
38
|
+
},
|
|
39
|
+
fullWidth: true,
|
|
40
|
+
onClick: onFontFamilyChange(m.value),
|
|
41
|
+
className: m.value === fontFamily ? "active" : "",
|
|
42
|
+
children: name || "Signature"
|
|
43
|
+
})
|
|
44
|
+
}, `typesign-ff-${m.value}`);
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
48
|
+
className: "signature-tab-1-wrapper",
|
|
49
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
50
|
+
className: "typesignature-input-wrapper",
|
|
51
|
+
children: /*#__PURE__*/_jsx(Grid, {
|
|
52
|
+
container: true,
|
|
53
|
+
children: /*#__PURE__*/_jsx(Grid, {
|
|
54
|
+
item: true,
|
|
55
|
+
padding: 1,
|
|
56
|
+
xs: 12,
|
|
57
|
+
style: {
|
|
58
|
+
textAlign: "center"
|
|
59
|
+
},
|
|
60
|
+
children: /*#__PURE__*/_jsx(TextField, {
|
|
61
|
+
value: name,
|
|
62
|
+
onChange: onChange,
|
|
63
|
+
size: "small",
|
|
64
|
+
fullWidth: true,
|
|
65
|
+
InputProps: {
|
|
66
|
+
endAdornment: /*#__PURE__*/_jsx(InputAdornment, {
|
|
67
|
+
position: "end",
|
|
68
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
|
69
|
+
onClick: () => setName(""),
|
|
70
|
+
children: /*#__PURE__*/_jsx(ClearIcon, {})
|
|
71
|
+
})
|
|
72
|
+
})
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
|
78
|
+
container: true,
|
|
79
|
+
className: "typesignature-fontfamily",
|
|
80
|
+
children: renderFontFamily()
|
|
81
|
+
})]
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
export default TypeSignature;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { convertBase64 } from "../../../utils/helper";
|
|
3
|
+
import { uploadFile } from "../../../service/fileupload";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
const UploadSignature = props => {
|
|
7
|
+
const {
|
|
8
|
+
customProps,
|
|
9
|
+
onUploadDone
|
|
10
|
+
} = props;
|
|
11
|
+
const [base64, setBase64] = useState(null);
|
|
12
|
+
const [uploading, setUploading] = useState(false);
|
|
13
|
+
console.log(customProps);
|
|
14
|
+
const onChange = async e => {
|
|
15
|
+
const file = e.target.files[0];
|
|
16
|
+
const strImage = await convertBase64(file);
|
|
17
|
+
setBase64(strImage);
|
|
18
|
+
doUpload(strImage);
|
|
19
|
+
};
|
|
20
|
+
const doUpload = async strImage => {
|
|
21
|
+
setUploading(true);
|
|
22
|
+
const result = await uploadFile({
|
|
23
|
+
image: strImage
|
|
24
|
+
}, customProps);
|
|
25
|
+
setUploading(false);
|
|
26
|
+
if (result && result?.imageURL) {
|
|
27
|
+
onUploadDone({
|
|
28
|
+
signature: result?.imageURL
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
33
|
+
className: "signature-tab",
|
|
34
|
+
children: [uploading ? "Uploading..." : "", base64 ? /*#__PURE__*/_jsx("div", {
|
|
35
|
+
className: "upload-sign-img-wrapper",
|
|
36
|
+
children: /*#__PURE__*/_jsx("img", {
|
|
37
|
+
className: "upload-sign-img",
|
|
38
|
+
src: base64,
|
|
39
|
+
alt: "Signature"
|
|
40
|
+
})
|
|
41
|
+
}) : /*#__PURE__*/_jsx("div", {
|
|
42
|
+
className: "upload-input-wrapper",
|
|
43
|
+
children: /*#__PURE__*/_jsx("input", {
|
|
44
|
+
type: "file",
|
|
45
|
+
onChange: onChange
|
|
46
|
+
})
|
|
47
|
+
})]
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
export default UploadSignature;
|