@flozy/editor 4.9.7 → 4.9.8
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/Editor.css +0 -1
- package/dist/Editor/Elements/Grid/GridItem.js +5 -4
- package/dist/Editor/Elements/Grid/Providers/GridProvider.js +15 -3
- package/dist/Editor/Elements/Search/SearchList.js +1 -20
- package/dist/Editor/Elements/Table/Table.js +12 -3
- package/dist/Editor/common/StyleBuilder/tableStyle.js +52 -99
- package/dist/Editor/hooks/useTable.js +8 -4
- package/dist/Editor/utils/helper.js +5 -1
- package/package.json +1 -1
package/dist/Editor/Editor.css
CHANGED
|
@@ -13,7 +13,7 @@ import { isEmptyNode } from "../../utils/helper";
|
|
|
13
13
|
import { onAddGridItem } from "../../utils/gridItem";
|
|
14
14
|
import useTableResize from "../../utils/customHooks/useTableResize";
|
|
15
15
|
import GridStyles from "./Styles";
|
|
16
|
-
import { useGrid } from "./Providers/GridProvider";
|
|
16
|
+
import { useGrid, getChildCount } from "./Providers/GridProvider";
|
|
17
17
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
18
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
19
19
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -47,7 +47,7 @@ const GridItemToolbar = props => {
|
|
|
47
47
|
className: "grid-item-toolbar",
|
|
48
48
|
style: {
|
|
49
49
|
top: "-34px",
|
|
50
|
-
left: "-
|
|
50
|
+
left: "calc(100% - 68px)",
|
|
51
51
|
display: "flex",
|
|
52
52
|
flexDirection: "row"
|
|
53
53
|
},
|
|
@@ -130,6 +130,7 @@ const GridItem = props => {
|
|
|
130
130
|
const [showTool] = useEditorSelection(editor);
|
|
131
131
|
const [parentDOM, setParentDOM] = useState({});
|
|
132
132
|
const [alert, setAlert] = useState(null);
|
|
133
|
+
const childCount = getChildCount(editor, path);
|
|
133
134
|
const [size, onMouseDown, resizing, onLoad, isDone] = useTableResize({
|
|
134
135
|
...parentDOM
|
|
135
136
|
});
|
|
@@ -146,7 +147,7 @@ const GridItem = props => {
|
|
|
146
147
|
} catch (err) {
|
|
147
148
|
console.log(err);
|
|
148
149
|
}
|
|
149
|
-
}, [columnRef?.current, minWidth]);
|
|
150
|
+
}, [columnRef?.current, minWidth, childCount]);
|
|
150
151
|
useEffect(() => {
|
|
151
152
|
if (isDone || isRightCol) {
|
|
152
153
|
initDoms();
|
|
@@ -164,7 +165,7 @@ const GridItem = props => {
|
|
|
164
165
|
if (resizing) {
|
|
165
166
|
updateColumnWidth({
|
|
166
167
|
left: size?.width / parentDOM?.gridWidth * 100
|
|
167
|
-
});
|
|
168
|
+
}, path);
|
|
168
169
|
}
|
|
169
170
|
}, [resizing, size]);
|
|
170
171
|
const initDoms = () => {
|
|
@@ -24,12 +24,24 @@ const getAdjacentColumnPath = (editor, currentPath, direction = "next") => {
|
|
|
24
24
|
}; // Return the adjacent column's path
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
const isSingleColumn = (editor,
|
|
27
|
+
const isSingleColumn = (editor, currentPath) => {
|
|
28
28
|
try {
|
|
29
|
+
const parentPath = Path.parent(currentPath); // Get the parent grid path
|
|
29
30
|
const gridNode = Node.get(editor, parentPath);
|
|
30
31
|
return gridNode?.children?.length === 1;
|
|
31
32
|
} catch (err) {
|
|
32
33
|
console.log(err);
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
export const getChildCount = (editor, currentPath) => {
|
|
38
|
+
try {
|
|
39
|
+
const parentPath = Path.parent(currentPath); // Get the parent grid path
|
|
40
|
+
const gridNode = Node.get(editor, parentPath);
|
|
41
|
+
return gridNode?.children?.length;
|
|
42
|
+
} catch (err) {
|
|
43
|
+
console.log(err);
|
|
44
|
+
return 0;
|
|
33
45
|
}
|
|
34
46
|
};
|
|
35
47
|
export const GridProvider = ({
|
|
@@ -69,11 +81,11 @@ export const GridProvider = ({
|
|
|
69
81
|
*
|
|
70
82
|
* @param {*} data - contains {left: calculatedWidth}
|
|
71
83
|
*/
|
|
72
|
-
const updateColumnWidth = data => {
|
|
84
|
+
const updateColumnWidth = (data, currentColPath) => {
|
|
73
85
|
// logic to update right column width
|
|
74
86
|
const right = columnWidths?.right - (data?.left - columnWidths?.left);
|
|
75
87
|
const diff = right !== widths?.right;
|
|
76
|
-
if (isSingleColumn(editor,
|
|
88
|
+
if (isSingleColumn(editor, currentColPath) && data?.left <= 100) {
|
|
77
89
|
setWidths({
|
|
78
90
|
...data,
|
|
79
91
|
right: right
|
|
@@ -113,26 +113,7 @@ const SearchAndDocList = ({
|
|
|
113
113
|
overflowY: 'auto',
|
|
114
114
|
overflowX: 'hidden',
|
|
115
115
|
padding: '0px 16px 8px',
|
|
116
|
-
marginBottom: '20px'
|
|
117
|
-
scrollbarWidth: "thin",
|
|
118
|
-
scrollbarColor: `${theme?.palette?.primary?.slashBrainBorder} transparent`,
|
|
119
|
-
"&::-webkit-scrollbar": {
|
|
120
|
-
width: "3px",
|
|
121
|
-
height: "3px !important",
|
|
122
|
-
borderRadius: "10px"
|
|
123
|
-
},
|
|
124
|
-
"&::-webkit-scrollbar-thumb": {
|
|
125
|
-
backgroundColor: theme?.palette?.primary?.slashBrainBorder,
|
|
126
|
-
borderRadius: "10px",
|
|
127
|
-
width: "3px !important"
|
|
128
|
-
},
|
|
129
|
-
"&::-webkit-scrollbar-thumb:hover": {
|
|
130
|
-
backgroundColor: theme?.palette?.primary?.slashBrainBorder
|
|
131
|
-
},
|
|
132
|
-
"&::-webkit-scrollbar-track": {
|
|
133
|
-
background: "transparent",
|
|
134
|
-
borderRadius: "10px"
|
|
135
|
-
}
|
|
116
|
+
marginBottom: '20px'
|
|
136
117
|
},
|
|
137
118
|
children: [mapData?.map((doc, index) => {
|
|
138
119
|
const title = doc?.title?.trim() === "" ? 'Untitled' : doc?.title;
|
|
@@ -78,7 +78,11 @@ const Table = props => {
|
|
|
78
78
|
const {
|
|
79
79
|
bgColor,
|
|
80
80
|
borderColor,
|
|
81
|
-
xsHidden
|
|
81
|
+
xsHidden,
|
|
82
|
+
fontFamily,
|
|
83
|
+
fontWeight,
|
|
84
|
+
textSize,
|
|
85
|
+
textColor
|
|
82
86
|
} = element;
|
|
83
87
|
const editor = useSlateStatic();
|
|
84
88
|
const selected = useSelected();
|
|
@@ -190,7 +194,8 @@ const Table = props => {
|
|
|
190
194
|
editor: editor,
|
|
191
195
|
otherProps: {
|
|
192
196
|
dragRowBtnCls,
|
|
193
|
-
tablePath: path
|
|
197
|
+
tablePath: path,
|
|
198
|
+
openSetttings
|
|
194
199
|
},
|
|
195
200
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
196
201
|
style: {
|
|
@@ -213,7 +218,11 @@ const Table = props => {
|
|
|
213
218
|
style: {
|
|
214
219
|
background: bgColor,
|
|
215
220
|
border: borderColor ? `1px solid ${borderColor}` : "",
|
|
216
|
-
width: "auto"
|
|
221
|
+
width: "auto",
|
|
222
|
+
fontFamily,
|
|
223
|
+
fontWeight,
|
|
224
|
+
fontSize: textSize,
|
|
225
|
+
color: textColor
|
|
217
226
|
},
|
|
218
227
|
ref: tableRef,
|
|
219
228
|
children: /*#__PURE__*/_jsx(TableBody, {
|
|
@@ -1,65 +1,17 @@
|
|
|
1
1
|
import { toolbarGroups } from "../../Toolbar/toolbarGroups";
|
|
2
2
|
import { fontOptions } from "../../utils/font";
|
|
3
|
+
import { capitalizeFirstLetter } from "../../utils/helper";
|
|
3
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
const tableStyle = [{
|
|
5
|
-
tab: "Table",
|
|
6
|
-
value: "tableSettings",
|
|
7
|
-
fields: [{
|
|
8
|
-
label: "Table Background",
|
|
9
|
-
key: "table.bgColor",
|
|
10
|
-
type: "color"
|
|
11
|
-
}, {
|
|
12
|
-
label: "Cell Border",
|
|
13
|
-
key: "table.borderColor",
|
|
14
|
-
type: "color"
|
|
15
|
-
}]
|
|
16
|
-
}, {
|
|
17
|
-
tab: "Row",
|
|
18
|
-
value: "rowSettings",
|
|
19
|
-
fields: [{
|
|
20
|
-
label: "Row Background",
|
|
21
|
-
key: "row.bgColor",
|
|
22
|
-
type: "color"
|
|
23
|
-
}, {
|
|
24
|
-
label: "Row Border",
|
|
25
|
-
key: "row.borderColor",
|
|
26
|
-
type: "color"
|
|
27
|
-
}]
|
|
28
|
-
}, {
|
|
29
|
-
tab: "Column",
|
|
30
|
-
value: "columnSettings",
|
|
31
|
-
fields: [{
|
|
32
|
-
label: "Entire Column Background",
|
|
33
|
-
key: "col.entireBgColor",
|
|
34
|
-
type: "color"
|
|
35
|
-
}, {
|
|
36
|
-
label: "Selected Cell Background",
|
|
37
|
-
key: "col.bgColor",
|
|
38
|
-
type: "color"
|
|
39
|
-
}, {
|
|
40
|
-
label: "Selected Cell Border Color",
|
|
41
|
-
key: "col.borderColor",
|
|
42
|
-
type: "color"
|
|
43
|
-
}]
|
|
44
|
-
}, {
|
|
45
|
-
tab: "Visibility",
|
|
46
|
-
value: "visibility",
|
|
47
|
-
fields: [{
|
|
48
|
-
label: "Hide on Mobile",
|
|
49
|
-
key: "table.xsHidden",
|
|
50
|
-
type: "selectBox",
|
|
51
|
-
placeholder: "Hide on Mobile"
|
|
52
|
-
}]
|
|
53
|
-
}];
|
|
54
|
-
export default tableStyle;
|
|
55
5
|
const allTools = toolbarGroups.flat();
|
|
56
6
|
const fontWeight = allTools.find(f => f.format === "fontWeight");
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
7
|
+
function getKey(prefix, key) {
|
|
8
|
+
const settingKey = prefix === "col" ? capitalizeFirstLetter(key) : key;
|
|
9
|
+
return `${prefix}.${settingKey}`;
|
|
10
|
+
}
|
|
11
|
+
function getCommonSettings(prefix) {
|
|
12
|
+
let settings = [{
|
|
61
13
|
label: "Font Family",
|
|
62
|
-
key: "
|
|
14
|
+
key: "fontFamily",
|
|
63
15
|
type: "textOptions",
|
|
64
16
|
webFont: true,
|
|
65
17
|
options: fontOptions,
|
|
@@ -73,70 +25,71 @@ export const tableRowStyle = [{
|
|
|
73
25
|
}
|
|
74
26
|
}, {
|
|
75
27
|
label: "Font Weight",
|
|
76
|
-
key: "
|
|
28
|
+
key: "fontWeight",
|
|
77
29
|
type: "textOptions",
|
|
78
30
|
options: fontWeight?.options,
|
|
79
31
|
width: 7
|
|
80
32
|
}, {
|
|
81
33
|
label: "Font Size",
|
|
82
|
-
key: "
|
|
34
|
+
key: "textSize",
|
|
83
35
|
type: "fontSize",
|
|
84
36
|
width: 5,
|
|
85
37
|
placeholder: "16px or 1em"
|
|
86
38
|
}, {
|
|
87
39
|
label: "Text Color",
|
|
88
|
-
key: "
|
|
40
|
+
key: "textColor",
|
|
89
41
|
type: "color"
|
|
90
42
|
}, {
|
|
91
43
|
label: "Background",
|
|
92
|
-
key: "
|
|
44
|
+
key: "bgColor",
|
|
93
45
|
type: "color"
|
|
94
46
|
}, {
|
|
95
47
|
label: "Border",
|
|
96
|
-
key: "
|
|
48
|
+
key: "borderColor",
|
|
97
49
|
type: "color"
|
|
98
|
-
}]
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
50
|
+
}];
|
|
51
|
+
|
|
52
|
+
// modify keys based on setting type (prefix)
|
|
53
|
+
settings = settings.map(s => ({
|
|
54
|
+
...s,
|
|
55
|
+
key: getKey(prefix, s.key)
|
|
56
|
+
}));
|
|
57
|
+
return settings;
|
|
58
|
+
}
|
|
59
|
+
const tableStyle = [{
|
|
60
|
+
tab: "Table",
|
|
61
|
+
value: "tableSettings",
|
|
62
|
+
fields: getCommonSettings("table")
|
|
63
|
+
}, {
|
|
64
|
+
tab: "Selected cell",
|
|
102
65
|
value: "columnSettings",
|
|
103
66
|
fields: [{
|
|
104
|
-
label: "
|
|
105
|
-
key: "col.
|
|
106
|
-
type: "textOptions",
|
|
107
|
-
webFont: true,
|
|
108
|
-
options: fontOptions,
|
|
109
|
-
renderOption: option => {
|
|
110
|
-
return /*#__PURE__*/_jsx("span", {
|
|
111
|
-
style: {
|
|
112
|
-
fontFamily: option.value
|
|
113
|
-
},
|
|
114
|
-
children: option.text
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}, {
|
|
118
|
-
label: "Font Weight",
|
|
119
|
-
key: "col.entireFontWeight",
|
|
120
|
-
type: "textOptions",
|
|
121
|
-
options: fontWeight?.options,
|
|
122
|
-
width: 7
|
|
123
|
-
}, {
|
|
124
|
-
label: "Font Size",
|
|
125
|
-
key: "col.entireTextSize",
|
|
126
|
-
type: "fontSize",
|
|
127
|
-
width: 5,
|
|
128
|
-
placeholder: "16px or 1em"
|
|
129
|
-
}, {
|
|
130
|
-
label: "Entire Text Color",
|
|
131
|
-
key: "col.entireTextColor",
|
|
132
|
-
type: "color"
|
|
133
|
-
}, {
|
|
134
|
-
label: "Background",
|
|
135
|
-
key: "col.entireBgColor",
|
|
67
|
+
label: "Selected Cell Background",
|
|
68
|
+
key: "col.bgColor",
|
|
136
69
|
type: "color"
|
|
137
70
|
}, {
|
|
138
|
-
label: "Border",
|
|
139
|
-
key: "col.
|
|
71
|
+
label: "Selected Cell Border Color",
|
|
72
|
+
key: "col.borderColor",
|
|
140
73
|
type: "color"
|
|
141
74
|
}]
|
|
75
|
+
}, {
|
|
76
|
+
tab: "Visibility",
|
|
77
|
+
value: "visibility",
|
|
78
|
+
fields: [{
|
|
79
|
+
label: "Hide on Mobile",
|
|
80
|
+
key: "table.xsHidden",
|
|
81
|
+
type: "selectBox",
|
|
82
|
+
placeholder: "Hide on Mobile"
|
|
83
|
+
}]
|
|
84
|
+
}];
|
|
85
|
+
export default tableStyle;
|
|
86
|
+
export const tableRowStyle = [{
|
|
87
|
+
tab: "Row",
|
|
88
|
+
value: "rowSettings",
|
|
89
|
+
fields: getCommonSettings("row")
|
|
90
|
+
}];
|
|
91
|
+
export const tableColumnStyle = [{
|
|
92
|
+
tab: "Column",
|
|
93
|
+
value: "columnSettings",
|
|
94
|
+
fields: getCommonSettings("col")
|
|
142
95
|
}];
|
|
@@ -61,8 +61,11 @@ export function getDefaultTableSelection() {
|
|
|
61
61
|
export const TableProvider = ({
|
|
62
62
|
editor,
|
|
63
63
|
children,
|
|
64
|
-
otherProps
|
|
64
|
+
otherProps = {}
|
|
65
65
|
}) => {
|
|
66
|
+
const {
|
|
67
|
+
openSetttings
|
|
68
|
+
} = otherProps;
|
|
66
69
|
const [hoverPath, setHoverPath] = useState(null);
|
|
67
70
|
const [tableSelection, setTableSelection] = useState(getDefaultTableSelection());
|
|
68
71
|
const [tableResizing, setTableResizing] = useState(null);
|
|
@@ -148,9 +151,10 @@ export const TableProvider = ({
|
|
|
148
151
|
};
|
|
149
152
|
}, [tableSelection, editor, tableSelection]);
|
|
150
153
|
useEffect(() => {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
if (!openSetttings) {
|
|
155
|
+
resetAll();
|
|
156
|
+
}
|
|
157
|
+
}, [openSetttings]);
|
|
154
158
|
return /*#__PURE__*/_jsx(TableContext.Provider, {
|
|
155
159
|
value: values,
|
|
156
160
|
children: /*#__PURE__*/_jsx(DndContext, {
|
|
@@ -567,4 +567,8 @@ export const isPageSettings = (event, editor) => {
|
|
|
567
567
|
isPageSettingsNode = true;
|
|
568
568
|
return isPageSettingsNode;
|
|
569
569
|
}
|
|
570
|
-
};
|
|
570
|
+
};
|
|
571
|
+
export function capitalizeFirstLetter(str) {
|
|
572
|
+
if (!str) return str;
|
|
573
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
574
|
+
}
|