@flozy/editor 5.0.5 → 5.0.6
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/CommonEditor.js +6 -4
- package/dist/Editor/Editor.css +19 -1
- package/dist/Editor/Elements/Button/EditorButton.js +71 -53
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +4 -2
- package/dist/Editor/Elements/DataView/DataView.js +101 -0
- package/dist/Editor/Elements/DataView/DataViewButton.js +23 -0
- package/dist/Editor/Elements/DataView/Layouts/ColumnView.js +59 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/CheckType.js +30 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/Select.js +128 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/SimpleSelect.js +25 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/DateType.js +26 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +38 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/NumberType.js +30 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/PersonType.js +30 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/SelectType.js +35 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/TextType.js +36 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/index.js +17 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseField.js +28 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseSort.js +37 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/index.js +74 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/index.js +59 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/styles.js +66 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterView.js +174 -0
- package/dist/Editor/Elements/DataView/Layouts/Formula.js +29 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +113 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/AddProperty.js +37 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/AllProperties.js +111 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/ChangeProperty.js +62 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/ColumnsList.js +36 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/Constants.js +101 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +158 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +190 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/FilterProperty.js +42 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/PropertyList.js +30 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/index.js +110 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/styles.js +176 -0
- package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +94 -0
- package/dist/Editor/Elements/DataView/Layouts/TableView.js +214 -0
- package/dist/Editor/Elements/DataView/Layouts/ViewData.js +83 -0
- package/dist/Editor/Elements/DataView/Layouts/index.js +25 -0
- package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +288 -0
- package/dist/Editor/Elements/DataView/Utils/globalSearch.js +15 -0
- package/dist/Editor/Elements/DataView/Utils/multiSortRows.js +72 -0
- package/dist/Editor/Elements/DataView/styles.js +133 -0
- package/dist/Editor/Elements/FreeGrid/styles.js +2 -1
- package/dist/Editor/Elements/Signature/Signature.css +1 -1
- package/dist/Editor/Elements/Table/AddRowCol.js +1 -1
- package/dist/Editor/Elements/Table/DragButton.js +71 -68
- package/dist/Editor/Elements/Table/Styles.js +2 -2
- package/dist/Editor/Elements/Table/Table.js +10 -7
- package/dist/Editor/Elements/Table/TableCell.js +21 -21
- package/dist/Editor/Elements/Table/tableHelper.js +4 -16
- package/dist/Editor/Toolbar/PopupTool/index.js +1 -1
- package/dist/Editor/Toolbar/Toolbar.js +6 -0
- package/dist/Editor/Toolbar/toolbarGroups.js +4 -0
- package/dist/Editor/assets/svg/OpenLinkIcon.js +3 -3
- package/dist/Editor/common/Icon.js +7 -1
- package/dist/Editor/common/MentionsPopup/index.js +1 -1
- package/dist/Editor/common/Shorthands/elements.js +13 -1
- package/dist/Editor/common/StyleBuilder/tableStyle.js +1 -1
- package/dist/Editor/common/iconslist.js +6 -3
- package/dist/Editor/hooks/useTable.js +4 -5
- package/dist/Editor/plugins/withHTML.js +18 -2
- package/dist/Editor/utils/SlateUtilityFunctions.js +16 -0
- package/dist/Editor/utils/dataView.js +43 -0
- package/dist/Editor/utils/embed.js +2 -1
- package/dist/Editor/utils/helper.js +19 -1
- package/dist/Editor/utils/insertNewLine.js +19 -1
- package/package.json +1 -1
@@ -298,10 +298,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
298
298
|
hideTools: updatedHideTools || []
|
299
299
|
}) : [];
|
300
300
|
const handleEditorChange = newValue => {
|
301
|
-
if (
|
302
|
-
|
303
|
-
|
304
|
-
|
301
|
+
if (!readOnly) {
|
302
|
+
if (JSON.stringify(newValue) !== JSON.stringify(debouncedValue?.current)) {
|
303
|
+
debounced(newValue);
|
304
|
+
if (!isInteracted) {
|
305
|
+
setIsInteracted(true);
|
306
|
+
}
|
305
307
|
}
|
306
308
|
}
|
307
309
|
};
|
package/dist/Editor/Editor.css
CHANGED
@@ -397,7 +397,7 @@ blockquote {
|
|
397
397
|
.signature-tab2 {
|
398
398
|
/* display: flex; */
|
399
399
|
align-items: center;
|
400
|
-
border-width:
|
400
|
+
border-width: 1px;
|
401
401
|
border-style: solid;
|
402
402
|
border-color: #2563EB66;
|
403
403
|
justify-content: center;
|
@@ -1261,3 +1261,21 @@ blockquote {
|
|
1261
1261
|
.hideScroll::-webkit-scrollbar-thumb:hover {
|
1262
1262
|
background: none !important;
|
1263
1263
|
}
|
1264
|
+
|
1265
|
+
.custom-scroll::-webkit-scrollbar {
|
1266
|
+
height: .6rem;
|
1267
|
+
}
|
1268
|
+
|
1269
|
+
.custom-scroll::-webkit-scrollbar-thumb {
|
1270
|
+
background: #888;
|
1271
|
+
border-radius: 5px;
|
1272
|
+
cursor: pointer;
|
1273
|
+
}
|
1274
|
+
|
1275
|
+
.custom-scroll::-webkit-scrollbar-track {
|
1276
|
+
background: #f1f1f1;
|
1277
|
+
}
|
1278
|
+
|
1279
|
+
.custom-scroll:hover::-webkit-scrollbar-thumb {
|
1280
|
+
background: #A7AEC1;
|
1281
|
+
}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import React, { useState } from "react";
|
1
|
+
import React, { useState, useRef } from "react";
|
2
2
|
import { Transforms } from "slate";
|
3
3
|
import { ReactEditor, useSlateStatic } from "slate-react";
|
4
|
-
import { IconButton, Tooltip, Box, useTheme } from "@mui/material";
|
4
|
+
import { IconButton, Tooltip, Box, useTheme, Popper } from "@mui/material";
|
5
5
|
import MUIIcon from "../../common/StyleBuilder/fieldTypes/loadIcon";
|
6
6
|
import ButtonPopup from "./ButtonPopup";
|
7
7
|
import { actionButtonRedirect } from "../../service/actionTrigger";
|
@@ -12,12 +12,14 @@ import LinkSettings from "../../common/LinkSettings";
|
|
12
12
|
import Icon from "../../common/Icon";
|
13
13
|
import { useEditorContext } from "../../hooks/useMouseMove";
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
15
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
15
16
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
16
17
|
const EditorButton = props => {
|
17
18
|
const theme = useTheme();
|
18
19
|
const {
|
19
20
|
theme: appTheme
|
20
21
|
} = useEditorContext();
|
22
|
+
const buttonRef = useRef(null);
|
21
23
|
const {
|
22
24
|
attributes,
|
23
25
|
element,
|
@@ -111,48 +113,60 @@ const EditorButton = props => {
|
|
111
113
|
const Toolbar = () => {
|
112
114
|
const btnProps = handleLinkType(refURl, linkType, true, openInNewTab, handleTrigger);
|
113
115
|
const hideOpenLink = linkType === "page" || !linkType;
|
114
|
-
return !readOnly ? /*#__PURE__*/
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
cursor: "pointer"
|
116
|
+
return !readOnly && openMoreOptions ? /*#__PURE__*/_jsx(Popper, {
|
117
|
+
anchorEl: buttonRef?.current,
|
118
|
+
placement: "top-end",
|
119
|
+
open: openMoreOptions,
|
120
|
+
sx: {
|
121
|
+
zIndex: 1000
|
121
122
|
},
|
122
|
-
children:
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
123
|
+
children: /*#__PURE__*/_jsxs("div", {
|
124
|
+
className: "element-toolbar hr",
|
125
|
+
style: {
|
126
|
+
width: "max-content",
|
127
|
+
top: "-35px",
|
128
|
+
alignItems: "center",
|
129
|
+
cursor: "pointer",
|
130
|
+
display: "flex",
|
131
|
+
alignContent: "center",
|
132
|
+
justifyContent: "center"
|
133
|
+
},
|
134
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
135
|
+
title: "Settings",
|
136
|
+
arrow: true,
|
137
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
138
|
+
onClick: onMenuClick("edit"),
|
139
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
140
|
+
icon: "pagesSettings"
|
141
|
+
})
|
129
142
|
})
|
130
|
-
})
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
143
|
+
}), /*#__PURE__*/_jsx(Tooltip, {
|
144
|
+
title: "Nav Settings",
|
145
|
+
arrow: true,
|
146
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
147
|
+
onClick: onMenuClick("nav"),
|
148
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
149
|
+
icon: "link"
|
150
|
+
})
|
138
151
|
})
|
139
|
-
})
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
152
|
+
}), hideOpenLink ? null : /*#__PURE__*/_jsx(_Fragment, {
|
153
|
+
children: /*#__PURE__*/_jsx(Tooltip, {
|
154
|
+
title: "Open Link",
|
155
|
+
arrow: true,
|
156
|
+
children: /*#__PURE__*/_jsx(Box, {
|
157
|
+
sx: {
|
158
|
+
display: "inline-flex",
|
159
|
+
color: "rgba(0, 0, 0, 0.54)",
|
160
|
+
marginBottom: "0px !important"
|
161
|
+
},
|
162
|
+
...btnProps,
|
163
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
164
|
+
icon: "openLinkIcon"
|
165
|
+
})
|
166
|
+
})
|
153
167
|
})
|
154
|
-
})
|
155
|
-
})
|
168
|
+
})]
|
169
|
+
})
|
156
170
|
}) : null;
|
157
171
|
};
|
158
172
|
const onSave = data => {
|
@@ -232,6 +246,7 @@ const EditorButton = props => {
|
|
232
246
|
display: "inline-block"
|
233
247
|
},
|
234
248
|
children: [/*#__PURE__*/_jsxs(Box, {
|
249
|
+
ref: buttonRef,
|
235
250
|
className: `btn textAlign-${tAlign}`,
|
236
251
|
sx: {
|
237
252
|
textDecoration: "none",
|
@@ -274,19 +289,22 @@ const EditorButton = props => {
|
|
274
289
|
},
|
275
290
|
props: customProps
|
276
291
|
})]
|
277
|
-
}), !readOnly && /*#__PURE__*/_jsx(
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
"
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
292
|
+
}), !readOnly && buttonRef?.current && /*#__PURE__*/_jsx(Popper, {
|
293
|
+
anchorEl: buttonRef?.current,
|
294
|
+
open: true,
|
295
|
+
placement: "right",
|
296
|
+
container: buttonRef?.current,
|
297
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
298
|
+
className: `moreBtnShow ${isMobile || openMoreOptions ? "activeBtnShow" : ""}`,
|
299
|
+
sx: {
|
300
|
+
"& path": {
|
301
|
+
fill: openMoreOptions ? appTheme.palette.text.blueText : ""
|
302
|
+
}
|
303
|
+
},
|
304
|
+
onClick: handleMoreBtn,
|
305
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
306
|
+
icon: "moreVertical"
|
307
|
+
})
|
290
308
|
})
|
291
309
|
}), !readOnly && isTrigger ? /*#__PURE__*/_jsx(IconButton, {
|
292
310
|
className: "workflow-icon-btn",
|
@@ -109,11 +109,13 @@ const ColorButtons = props => {
|
|
109
109
|
forMiniTool,
|
110
110
|
openColorTool,
|
111
111
|
onClose,
|
112
|
-
onColorPickerClick
|
112
|
+
onColorPickerClick,
|
113
|
+
defaultColors = []
|
113
114
|
} = props;
|
114
115
|
const [row1, ...restRows] = ColorChunks([]);
|
115
116
|
const [anchorEl, setAnchorEl] = useState(null);
|
116
117
|
const open = Boolean(anchorEl);
|
118
|
+
const firstRow = defaultColors || row1;
|
117
119
|
const handleMore = e => {
|
118
120
|
setAnchorEl(e.currentTarget);
|
119
121
|
};
|
@@ -131,7 +133,7 @@ const ColorButtons = props => {
|
|
131
133
|
sx: classes.colorButtons,
|
132
134
|
children: [forMiniTool ? null : /*#__PURE__*/_jsx(Box, {
|
133
135
|
className: "buttonsWrpr first",
|
134
|
-
children: [
|
136
|
+
children: [firstRow].map((m, i) => {
|
135
137
|
return /*#__PURE__*/_jsx(SingleColorButton, {
|
136
138
|
id: `p1_${id}`,
|
137
139
|
crs: m,
|
@@ -0,0 +1,101 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { Node, Path, Transforms } from "slate";
|
3
|
+
import { ReactEditor, useSlateStatic } from "slate-react";
|
4
|
+
import { Box, useTheme } from "@mui/material";
|
5
|
+
import { DataViewProvider } from "./Providers/DataViewProvider";
|
6
|
+
import useDataViewStyles from "./styles";
|
7
|
+
import LayoutView from "./Layouts";
|
8
|
+
import FilterView from "./Layouts/FilterView";
|
9
|
+
import { insertLineBreakAtEndOfPath } from "../../utils/helper";
|
10
|
+
import { useEditorContext } from "../../hooks/useMouseMove";
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
12
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
13
|
+
const DataView = props => {
|
14
|
+
const {
|
15
|
+
theme: appTheme
|
16
|
+
} = useEditorContext();
|
17
|
+
const theme = useTheme();
|
18
|
+
const editor = useSlateStatic();
|
19
|
+
const {
|
20
|
+
attributes,
|
21
|
+
children,
|
22
|
+
element,
|
23
|
+
customProps,
|
24
|
+
title
|
25
|
+
} = props;
|
26
|
+
const {
|
27
|
+
CHARACTERS,
|
28
|
+
readOnly
|
29
|
+
} = customProps || {};
|
30
|
+
const {
|
31
|
+
properties,
|
32
|
+
layouts,
|
33
|
+
rows
|
34
|
+
} = element;
|
35
|
+
const classes = useDataViewStyles(theme, appTheme);
|
36
|
+
const path = ReactEditor.findPath(editor, element);
|
37
|
+
const onDuplicate = () => {
|
38
|
+
try {
|
39
|
+
const newPath = ReactEditor.findPath(editor, element);
|
40
|
+
const dataViewNode = Node.get(editor, newPath);
|
41
|
+
const cloneNode = JSON.parse(JSON.stringify(dataViewNode));
|
42
|
+
const toPath = Path.next(Path.parent(newPath));
|
43
|
+
Transforms.insertNodes(editor, [{
|
44
|
+
type: "paragraph",
|
45
|
+
children: [{
|
46
|
+
...cloneNode
|
47
|
+
}]
|
48
|
+
}], {
|
49
|
+
at: toPath
|
50
|
+
});
|
51
|
+
} catch (err) {
|
52
|
+
console.log(err);
|
53
|
+
}
|
54
|
+
};
|
55
|
+
const onDelete = () => {
|
56
|
+
try {
|
57
|
+
const newPath = ReactEditor.findPath(editor, element);
|
58
|
+
Transforms.removeNodes(editor, {
|
59
|
+
at: newPath
|
60
|
+
});
|
61
|
+
} catch (err) {
|
62
|
+
console.log(err);
|
63
|
+
}
|
64
|
+
};
|
65
|
+
const onEnter = () => {
|
66
|
+
try {
|
67
|
+
const newPath = ReactEditor.findPath(editor, element);
|
68
|
+
const toPath = Path.previous(Path.parent(newPath));
|
69
|
+
insertLineBreakAtEndOfPath(editor, toPath);
|
70
|
+
} catch (err) {
|
71
|
+
console.log(err);
|
72
|
+
}
|
73
|
+
};
|
74
|
+
return /*#__PURE__*/_jsx(Box, {
|
75
|
+
...attributes,
|
76
|
+
className: "fe-dataview",
|
77
|
+
sx: classes.root,
|
78
|
+
children: /*#__PURE__*/_jsxs(DataViewProvider, {
|
79
|
+
initialData: {
|
80
|
+
properties,
|
81
|
+
layouts,
|
82
|
+
rows,
|
83
|
+
users: CHARACTERS,
|
84
|
+
tableTitle: title
|
85
|
+
},
|
86
|
+
path: path,
|
87
|
+
editor: editor,
|
88
|
+
children: [/*#__PURE__*/_jsx(FilterView, {
|
89
|
+
classes: classes,
|
90
|
+
onEnter: onEnter,
|
91
|
+
onDelete: onDelete,
|
92
|
+
onDuplicate: onDuplicate,
|
93
|
+
readOnly: readOnly
|
94
|
+
}), /*#__PURE__*/_jsx(LayoutView, {
|
95
|
+
readOnly: readOnly,
|
96
|
+
children: children
|
97
|
+
})]
|
98
|
+
})
|
99
|
+
});
|
100
|
+
};
|
101
|
+
export default DataView;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import ToolbarIcon from "../../common/ToolbarIcon";
|
3
|
+
import Icon from "../../common/Icon";
|
4
|
+
import { insertDataView } from "../../utils/dataView";
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
6
|
+
const DataViewButton = props => {
|
7
|
+
const {
|
8
|
+
editor,
|
9
|
+
icoBtnType
|
10
|
+
} = props;
|
11
|
+
const onClick = () => {
|
12
|
+
insertDataView(editor);
|
13
|
+
};
|
14
|
+
return /*#__PURE__*/_jsx(ToolbarIcon, {
|
15
|
+
title: "Dynamic Table",
|
16
|
+
onClick: onClick,
|
17
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
18
|
+
icon: "dataView"
|
19
|
+
}),
|
20
|
+
icoBtnType: icoBtnType
|
21
|
+
});
|
22
|
+
};
|
23
|
+
export default DataViewButton;
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
2
|
+
import { Box, Checkbox, Popper } from "@mui/material";
|
3
|
+
import DataTypes from "./DataTypes";
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
6
|
+
const ColumnView = props => {
|
7
|
+
const {
|
8
|
+
needAnchor,
|
9
|
+
rowIndex,
|
10
|
+
row,
|
11
|
+
property,
|
12
|
+
onSelect,
|
13
|
+
selected,
|
14
|
+
readOnly
|
15
|
+
} = props;
|
16
|
+
const DataType = DataTypes[property?.type] || DataTypes["text"];
|
17
|
+
const anchorRef = useRef(null);
|
18
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
19
|
+
const open = Boolean(anchorEl);
|
20
|
+
useEffect(() => {
|
21
|
+
if (anchorRef?.current) {
|
22
|
+
setAnchorEl(anchorRef?.current);
|
23
|
+
}
|
24
|
+
}, [anchorRef?.current]);
|
25
|
+
const handleSelect = id => e => {
|
26
|
+
onSelect(id, e.target.checked);
|
27
|
+
};
|
28
|
+
return /*#__PURE__*/_jsxs(Box, {
|
29
|
+
component: "td",
|
30
|
+
ref: anchorRef,
|
31
|
+
children: [/*#__PURE__*/_jsx(DataType, {
|
32
|
+
options: property?.options,
|
33
|
+
property: property?.key,
|
34
|
+
value: row[property?.key] || "",
|
35
|
+
rowIndex: rowIndex,
|
36
|
+
label: property?.label,
|
37
|
+
readOnly: readOnly
|
38
|
+
}), needAnchor && !readOnly ? /*#__PURE__*/_jsx(Popper, {
|
39
|
+
sx: {
|
40
|
+
zIndex: 1000
|
41
|
+
},
|
42
|
+
open: open,
|
43
|
+
anchorEl: anchorEl,
|
44
|
+
placement: "left",
|
45
|
+
container: anchorRef?.current,
|
46
|
+
className: `tv-tr-pop ${selected ? "active" : ""}`,
|
47
|
+
children: /*#__PURE__*/_jsx(Checkbox, {
|
48
|
+
onClick: handleSelect(row?.id),
|
49
|
+
size: "small",
|
50
|
+
className: "tv-ck-box",
|
51
|
+
sx: {
|
52
|
+
mr: 0
|
53
|
+
},
|
54
|
+
checked: selected
|
55
|
+
})
|
56
|
+
}) : null]
|
57
|
+
});
|
58
|
+
};
|
59
|
+
export default ColumnView;
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { useDataView } from "../../Providers/DataViewProvider";
|
3
|
+
import Checkbox from "@mui/material/Checkbox";
|
4
|
+
import CheckCircleOutlineIcon from "@mui/icons-material/CheckCircleOutline";
|
5
|
+
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
7
|
+
const CheckType = props => {
|
8
|
+
const {
|
9
|
+
rowIndex,
|
10
|
+
property,
|
11
|
+
value,
|
12
|
+
readOnly
|
13
|
+
} = props;
|
14
|
+
const {
|
15
|
+
onChange
|
16
|
+
} = useDataView();
|
17
|
+
const handleChange = e => {
|
18
|
+
onChange(rowIndex, {
|
19
|
+
[property]: e?.target?.checked
|
20
|
+
});
|
21
|
+
};
|
22
|
+
return /*#__PURE__*/_jsx(Checkbox, {
|
23
|
+
checked: value,
|
24
|
+
icon: /*#__PURE__*/_jsx(CheckCircleOutlineIcon, {}),
|
25
|
+
checkedIcon: /*#__PURE__*/_jsx(CheckCircleIcon, {}),
|
26
|
+
onChange: handleChange,
|
27
|
+
disabled: readOnly
|
28
|
+
}, rowIndex);
|
29
|
+
};
|
30
|
+
export default CheckType;
|
@@ -0,0 +1,128 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import TextField from "@mui/material/TextField";
|
3
|
+
import Autocomplete from "@mui/material/Autocomplete";
|
4
|
+
import { Box, Chip } from "@mui/material";
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
6
|
+
const filter = (opt, params, selectedOpt) => {
|
7
|
+
const selectedVals = selectedOpt?.map(m => m?.value);
|
8
|
+
const fv = opt?.filter(f => !selectedVals.includes(f.value));
|
9
|
+
if (params?.inputValue) {
|
10
|
+
fv.filter(f => f?.value?.toLowerCase().indexOf(params?.inputValue?.toLowerCase()) >= 0);
|
11
|
+
}
|
12
|
+
return fv;
|
13
|
+
};
|
14
|
+
export default function Select(props) {
|
15
|
+
const {
|
16
|
+
value,
|
17
|
+
onChange,
|
18
|
+
options,
|
19
|
+
multiple = false,
|
20
|
+
limitTags = 2,
|
21
|
+
placeholder = "",
|
22
|
+
disabled = false
|
23
|
+
} = props;
|
24
|
+
return /*#__PURE__*/_jsx(Autocomplete, {
|
25
|
+
disabled: disabled,
|
26
|
+
className: "tv-ac-field",
|
27
|
+
multiple: true,
|
28
|
+
limitTags: limitTags,
|
29
|
+
placeholder: placeholder,
|
30
|
+
value: value || "",
|
31
|
+
onChange: (event, newValue) => {
|
32
|
+
const fv = [];
|
33
|
+
newValue?.forEach(m => {
|
34
|
+
if (multiple) {
|
35
|
+
fv.push({
|
36
|
+
value: m.inputValue || m.value
|
37
|
+
});
|
38
|
+
} else {
|
39
|
+
fv[0] = {
|
40
|
+
value: m.inputValue || m.value
|
41
|
+
};
|
42
|
+
}
|
43
|
+
});
|
44
|
+
onChange(fv);
|
45
|
+
},
|
46
|
+
filterOptions: (options, params) => {
|
47
|
+
const filtered = filter(options, params, value);
|
48
|
+
|
49
|
+
// const { inputValue } = params;
|
50
|
+
// Suggest the creation of a new value
|
51
|
+
// const isExisting = options.some(
|
52
|
+
// (option) => inputValue?.toLowerCase() === option.value?.toLowerCase()
|
53
|
+
// );
|
54
|
+
// no need of new val now
|
55
|
+
// if (inputValue !== "" && !isExisting) {
|
56
|
+
// filtered.push({
|
57
|
+
// inputValue,
|
58
|
+
// value: `Add "${inputValue}"`,
|
59
|
+
// });
|
60
|
+
// }
|
61
|
+
|
62
|
+
return filtered;
|
63
|
+
},
|
64
|
+
selectOnFocus: true,
|
65
|
+
clearOnBlur: true,
|
66
|
+
handleHomeEndKeys: true,
|
67
|
+
options: options || [],
|
68
|
+
getOptionLabel: option => {
|
69
|
+
// Value selected with enter, right from the input
|
70
|
+
if (typeof option === "string") {
|
71
|
+
return option;
|
72
|
+
}
|
73
|
+
// Add "xxx" option created dynamically
|
74
|
+
if (option.inputValue) {
|
75
|
+
return option.inputValue;
|
76
|
+
}
|
77
|
+
// Regular option
|
78
|
+
return option.value || "";
|
79
|
+
},
|
80
|
+
renderTags: (value, getTagProps) => {
|
81
|
+
return /*#__PURE__*/_jsx(Box, {
|
82
|
+
className: "tv-ms-tag-wrpr",
|
83
|
+
children: value?.map((option, index) => {
|
84
|
+
const {
|
85
|
+
key,
|
86
|
+
...tagProps
|
87
|
+
} = getTagProps({
|
88
|
+
index
|
89
|
+
}) || {};
|
90
|
+
return option?.value ? /*#__PURE__*/_jsx(Chip, {
|
91
|
+
variant: "outlined",
|
92
|
+
label: option?.label || option?.value,
|
93
|
+
...tagProps,
|
94
|
+
sx: {
|
95
|
+
background: option?.color || "#CCC",
|
96
|
+
border: "none"
|
97
|
+
}
|
98
|
+
}, key) : null;
|
99
|
+
})
|
100
|
+
});
|
101
|
+
},
|
102
|
+
renderOption: (props, option) => {
|
103
|
+
const {
|
104
|
+
key,
|
105
|
+
...optionProps
|
106
|
+
} = props;
|
107
|
+
return /*#__PURE__*/_jsx("li", {
|
108
|
+
...optionProps,
|
109
|
+
children: /*#__PURE__*/_jsx(Chip, {
|
110
|
+
label: option.label || option.value || "",
|
111
|
+
sx: {
|
112
|
+
backgroundColor: option.color || "#CCC"
|
113
|
+
}
|
114
|
+
})
|
115
|
+
}, key);
|
116
|
+
},
|
117
|
+
freeSolo: true,
|
118
|
+
size: "small",
|
119
|
+
fullWidth: true,
|
120
|
+
renderInput: params => {
|
121
|
+
return /*#__PURE__*/_jsx(TextField, {
|
122
|
+
size: "small",
|
123
|
+
...params,
|
124
|
+
placeholder: placeholder
|
125
|
+
});
|
126
|
+
}
|
127
|
+
});
|
128
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { MenuItem, Select } from "@mui/material";
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
4
|
+
const SimpleSelect = props => {
|
5
|
+
const {
|
6
|
+
value,
|
7
|
+
options,
|
8
|
+
handleChange,
|
9
|
+
disabled = false
|
10
|
+
} = props;
|
11
|
+
return /*#__PURE__*/_jsx(Select, {
|
12
|
+
disabled: disabled,
|
13
|
+
value: value,
|
14
|
+
onChange: handleChange,
|
15
|
+
fullWidth: true,
|
16
|
+
size: "small",
|
17
|
+
children: options?.map((m, i) => {
|
18
|
+
return /*#__PURE__*/_jsx(MenuItem, {
|
19
|
+
value: m.key,
|
20
|
+
children: m.label
|
21
|
+
}, i);
|
22
|
+
})
|
23
|
+
});
|
24
|
+
};
|
25
|
+
export default SimpleSelect;
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import DatePicker from "react-datepicker";
|
3
|
+
import { useDataView } from "../../Providers/DataViewProvider";
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
+
const DateType = props => {
|
6
|
+
const {
|
7
|
+
rowIndex,
|
8
|
+
property,
|
9
|
+
value,
|
10
|
+
readOnly
|
11
|
+
} = props;
|
12
|
+
const {
|
13
|
+
onChange
|
14
|
+
} = useDataView();
|
15
|
+
const handleChange = date => {
|
16
|
+
onChange(rowIndex, {
|
17
|
+
[property]: date
|
18
|
+
});
|
19
|
+
};
|
20
|
+
return /*#__PURE__*/_jsx(DatePicker, {
|
21
|
+
disabled: readOnly,
|
22
|
+
selected: value ? new Date(value) : "",
|
23
|
+
onChange: handleChange
|
24
|
+
});
|
25
|
+
};
|
26
|
+
export default DateType;
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { useDataView } from "../../Providers/DataViewProvider";
|
3
|
+
import Select from "./Components/Select";
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
+
const MultiSelectType = props => {
|
6
|
+
const {
|
7
|
+
rowIndex,
|
8
|
+
property,
|
9
|
+
value,
|
10
|
+
options,
|
11
|
+
label = "",
|
12
|
+
readOnly
|
13
|
+
} = props;
|
14
|
+
const {
|
15
|
+
onChange
|
16
|
+
} = useDataView();
|
17
|
+
const coloredValues = [...(value || [])]?.map(m => {
|
18
|
+
return {
|
19
|
+
...m,
|
20
|
+
color: options?.find(f => f.value === m.value)?.color || "#FFF"
|
21
|
+
};
|
22
|
+
});
|
23
|
+
const handleChange = data => {
|
24
|
+
onChange(rowIndex, {
|
25
|
+
[property]: data?.filter(f => f?.value)
|
26
|
+
});
|
27
|
+
};
|
28
|
+
return /*#__PURE__*/_jsx(Select, {
|
29
|
+
value: coloredValues,
|
30
|
+
onChange: handleChange,
|
31
|
+
options: options,
|
32
|
+
multiple: true,
|
33
|
+
limitTags: 2,
|
34
|
+
placeholder: label,
|
35
|
+
disabled: readOnly
|
36
|
+
});
|
37
|
+
};
|
38
|
+
export default MultiSelectType;
|