@flozy/editor 11.0.9 → 11.1.0
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/ChatEditor.js +10 -11
- package/dist/Editor/CommonEditor.js +14 -66
- package/dist/Editor/Editor.css +8 -3
- package/dist/Editor/Elements/AI/PopoverAIInput.js +3 -11
- package/dist/Editor/Elements/AI/Styles.js +0 -1
- package/dist/Editor/Elements/Accordion/Accordion.js +22 -28
- package/dist/Editor/Elements/Accordion/AccordionButton.js +3 -12
- package/dist/Editor/Elements/Button/EditorButton.js +0 -1
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +454 -0
- package/dist/Editor/Elements/Embed/Embed.js +2 -1
- package/dist/Editor/Elements/Embed/Image.js +1 -0
- package/dist/Editor/Elements/Form/Form.js +10 -35
- package/dist/Editor/Elements/FreeGrid/FreeGrid.js +4 -2
- package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +3 -3
- package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
- package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -3
- package/dist/Editor/Elements/Signature/SignaturePopup.js +6 -24
- package/dist/Editor/Elements/SimpleText/style.js +2 -2
- package/dist/Editor/Elements/Table/Table.js +3 -3
- package/dist/Editor/Elements/Title/title.js +6 -6
- package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
- package/dist/Editor/MiniEditor.js +1 -2
- package/dist/Editor/Styles/EditorStyles.js +1 -5
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +2 -2
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +7 -25
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +4 -10
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +3 -5
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +2 -7
- package/dist/Editor/Toolbar/PopupTool/index.js +0 -1
- package/dist/Editor/Toolbar/toolbarGroups.js +4 -8
- package/dist/Editor/common/ColorPickerButton.js +0 -3
- package/dist/Editor/common/FontLoader/FontLoader.js +0 -3
- package/dist/Editor/common/LinkSettings/NavComponents.js +2 -6
- package/dist/Editor/common/MentionsPopup/index.js +1 -9
- package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +0 -1
- package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +1 -7
- package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +2 -11
- package/dist/Editor/common/RnD/VirtualElement/helper.js +62 -72
- package/dist/Editor/common/Shorthands/elements.js +4 -8
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +0 -5
- package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +8 -16
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +3 -3
- package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +1 -3
- package/dist/Editor/common/Uploader.js +6 -13
- package/dist/Editor/commonStyle.js +15 -30
- package/dist/Editor/helper/index.js +1 -6
- package/dist/Editor/hooks/useMouseMove.js +4 -1
- package/dist/Editor/plugins/withEmbeds.js +0 -11
- package/dist/Editor/plugins/withHTML.js +0 -2
- package/dist/Editor/utils/SlateUtilityFunctions.js +3 -30
- package/dist/Editor/utils/accordion.js +39 -67
- package/dist/Editor/utils/draftToSlate.js +2 -3
- package/dist/Editor/utils/events.js +89 -94
- package/dist/Editor/utils/helper.js +20 -24
- package/package.json +4 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +0 -115
- package/dist/Editor/helper/textIndeces.js +0 -58
@@ -0,0 +1,454 @@
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
2
|
+
import Autocomplete from "@mui/material/Autocomplete";
|
3
|
+
import Box from "@mui/material/Box";
|
4
|
+
import Chip from "@mui/material/Chip";
|
5
|
+
import Divider from "@mui/material/Divider";
|
6
|
+
import Popover from "@mui/material/Popover";
|
7
|
+
import TextField from "@mui/material/TextField";
|
8
|
+
import Typography from "@mui/material/Typography";
|
9
|
+
import List from "@mui/material/List";
|
10
|
+
import ListItem from "@mui/material/ListItem";
|
11
|
+
import ListItemButton from "@mui/material/ListItemButton";
|
12
|
+
import IconButton from "@mui/material/IconButton";
|
13
|
+
import SwipeableDrawer from "@mui/material/SwipeableDrawer";
|
14
|
+
import Tooltip from "@mui/material/Tooltip";
|
15
|
+
import { CloseIcon } from "../../../../../common/iconslist";
|
16
|
+
import { useEditorContext } from "../../../../../hooks/useMouseMove";
|
17
|
+
import Icon from "../../../../../common/Icon";
|
18
|
+
import { colors } from "../../../../Color Picker/defaultColors";
|
19
|
+
import PropertySettings from "../../Options";
|
20
|
+
import SnackbarAlert from "../../../../../common/SnackBar";
|
21
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
22
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
23
|
+
const EXCLUDED_COLORS = new Set(["#000000", "#0F172A", "#2563EB", "#FFFFFF", "#64748B"]);
|
24
|
+
const DEFAULT_COLORS = colors?.filter(f => !f?.includes("linear") && !EXCLUDED_COLORS?.has(f));
|
25
|
+
const generateRandomColor = () => {
|
26
|
+
const randomIndex = Math.floor(Math.random() * DEFAULT_COLORS?.length);
|
27
|
+
return DEFAULT_COLORS[randomIndex];
|
28
|
+
};
|
29
|
+
const MultiSelectWithPopover = props => {
|
30
|
+
const {
|
31
|
+
options = [],
|
32
|
+
value,
|
33
|
+
onChange,
|
34
|
+
onUpdate,
|
35
|
+
property,
|
36
|
+
wrapColumn = false,
|
37
|
+
translation
|
38
|
+
} = props;
|
39
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
40
|
+
const [anchorElOption, setAnchorElOption] = useState(null);
|
41
|
+
const [currentIndex, setCurrentIndex] = useState(null);
|
42
|
+
const [selectedOptions, setSelectedOptions] = useState(value);
|
43
|
+
const [availableOptions, setAvailableOptions] = useState(options);
|
44
|
+
const [showSnackBar, setShowSnackBar] = useState(false);
|
45
|
+
const [chipColor, setChipColor] = useState(generateRandomColor());
|
46
|
+
const [inputValue, setInputValue] = useState("");
|
47
|
+
const {
|
48
|
+
theme
|
49
|
+
} = useEditorContext();
|
50
|
+
const isMobile = window.matchMedia("(max-width: 899px)")?.matches || false;
|
51
|
+
const PopoverComponent = isMobile ? SwipeableDrawer : Popover;
|
52
|
+
const mode = useMemo(() => ({
|
53
|
+
type: "editOptionMulti",
|
54
|
+
edit: {
|
55
|
+
label: "Multi Select",
|
56
|
+
visible: true,
|
57
|
+
key: property,
|
58
|
+
type: "multi-select",
|
59
|
+
options: options || [],
|
60
|
+
optionIndex: currentIndex,
|
61
|
+
hideBackButton: true
|
62
|
+
}
|
63
|
+
}), [options, property, currentIndex]);
|
64
|
+
const customScrollStyles = {
|
65
|
+
scrollbarWidth: "thin",
|
66
|
+
scrollbarColor: `${theme?.palette?.editor?.brainPopupScroll} transparent`,
|
67
|
+
"&::-webkit-scrollbar": {
|
68
|
+
width: "6px"
|
69
|
+
},
|
70
|
+
"&::-webkit-scrollbar-thumb": {
|
71
|
+
backgroundColor: theme?.palette?.editor?.brainPopupScroll,
|
72
|
+
borderRadius: "3px"
|
73
|
+
},
|
74
|
+
"&::-webkit-scrollbar-track": {
|
75
|
+
display: "none"
|
76
|
+
}
|
77
|
+
};
|
78
|
+
useEffect(() => {
|
79
|
+
if (inputValue?.trim() && !chipColor) {
|
80
|
+
setChipColor(generateRandomColor());
|
81
|
+
}
|
82
|
+
}, [inputValue, chipColor]);
|
83
|
+
useEffect(() => {
|
84
|
+
if (JSON.stringify(options) !== JSON.stringify(availableOptions)) {
|
85
|
+
setAvailableOptions(options);
|
86
|
+
}
|
87
|
+
}, [options, availableOptions]);
|
88
|
+
const handleOpenPopover = useCallback(event => {
|
89
|
+
setAnchorEl(event.currentTarget);
|
90
|
+
}, []);
|
91
|
+
const handleClosePopover = useCallback(e => {
|
92
|
+
e?.stopPropagation();
|
93
|
+
setAnchorEl(null);
|
94
|
+
}, []);
|
95
|
+
const handleAddOption = newValue => {
|
96
|
+
const trimmedValue = newValue?.trim();
|
97
|
+
if (!trimmedValue) return;
|
98
|
+
const newOption = {
|
99
|
+
value: trimmedValue,
|
100
|
+
color: chipColor
|
101
|
+
};
|
102
|
+
if (!availableOptions?.some(opt => opt?.value === trimmedValue)) {
|
103
|
+
setAvailableOptions(prev => [...prev, newOption]);
|
104
|
+
setSelectedOptions(prev => [...prev, newOption]);
|
105
|
+
onUpdate([newOption, ...availableOptions]);
|
106
|
+
}
|
107
|
+
setInputValue("");
|
108
|
+
setChipColor("");
|
109
|
+
};
|
110
|
+
const onClose = () => {
|
111
|
+
setAnchorEl(anchorElOption);
|
112
|
+
setAnchorElOption(null);
|
113
|
+
};
|
114
|
+
const onEditOption = (type, data) => {
|
115
|
+
const updateData = data?.edit ? data?.edit?.options : data?.options;
|
116
|
+
onUpdate(updateData);
|
117
|
+
if (data?.edit?.options) {
|
118
|
+
const updatedSelectedOptions = selectedOptions?.filter(selOption => updateData?.some(availOption => availOption?.value === selOption?.value && availOption?.color === selOption?.color));
|
119
|
+
setSelectedOptions(updatedSelectedOptions);
|
120
|
+
onClose();
|
121
|
+
}
|
122
|
+
};
|
123
|
+
const handleEditOption = (e, index) => {
|
124
|
+
e.stopPropagation();
|
125
|
+
setCurrentIndex(index);
|
126
|
+
setAnchorElOption(anchorEl);
|
127
|
+
setAnchorEl(null);
|
128
|
+
};
|
129
|
+
const handleSelectOption = option => {
|
130
|
+
if (!selectedOptions?.some(opt => opt?.value === option?.value)) {
|
131
|
+
const updatedOptions = [...selectedOptions, option];
|
132
|
+
setSelectedOptions(updatedOptions);
|
133
|
+
onChange(updatedOptions);
|
134
|
+
} else {
|
135
|
+
setShowSnackBar(true);
|
136
|
+
}
|
137
|
+
};
|
138
|
+
const handleClearSelection = () => {
|
139
|
+
setSelectedOptions([]);
|
140
|
+
};
|
141
|
+
const handleDeleteChip = (event, option) => {
|
142
|
+
event.stopPropagation();
|
143
|
+
setSelectedOptions(prev => {
|
144
|
+
const updatedOptions = prev.filter(selected => selected?.value !== option?.value);
|
145
|
+
onChange(updatedOptions);
|
146
|
+
return updatedOptions;
|
147
|
+
});
|
148
|
+
};
|
149
|
+
const filteredOptions = availableOptions?.filter(option => option?.value?.toLowerCase()?.includes(inputValue?.toLowerCase()));
|
150
|
+
const isExactMatch = availableOptions?.some(opt => opt?.value?.toLowerCase() === inputValue?.toLowerCase());
|
151
|
+
const open = Boolean(anchorEl);
|
152
|
+
const openEditOption = Boolean(anchorElOption);
|
153
|
+
const id = open ? "autocomplete-popover" : undefined;
|
154
|
+
return /*#__PURE__*/_jsxs("div", {
|
155
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
156
|
+
sx: {
|
157
|
+
display: "flex",
|
158
|
+
flexWrap: wrapColumn ? "wrap" : "nowrap",
|
159
|
+
overflowX: wrapColumn ? "hidden" : "auto",
|
160
|
+
gap: 0.5,
|
161
|
+
padding: "8px",
|
162
|
+
cursor: "pointer"
|
163
|
+
},
|
164
|
+
onClick: handleOpenPopover,
|
165
|
+
children: selectedOptions?.map((option, index) => /*#__PURE__*/_jsx(Chip, {
|
166
|
+
label: option?.value,
|
167
|
+
onDelete: event => {
|
168
|
+
handleDeleteChip(event, option);
|
169
|
+
},
|
170
|
+
deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
|
171
|
+
variant: "filled",
|
172
|
+
sx: {
|
173
|
+
backgroundColor: option?.color,
|
174
|
+
color: '#0F172A',
|
175
|
+
"& .MuiChip-deleteIcon": {
|
176
|
+
flexShrink: 0,
|
177
|
+
"& path": {
|
178
|
+
stroke: '#0F172A !important'
|
179
|
+
}
|
180
|
+
},
|
181
|
+
"&:hover": {
|
182
|
+
opacity: 0.8
|
183
|
+
}
|
184
|
+
}
|
185
|
+
}, index))
|
186
|
+
}), /*#__PURE__*/_jsx(PopoverComponent, {
|
187
|
+
id: id,
|
188
|
+
open: open,
|
189
|
+
anchorEl: anchorEl,
|
190
|
+
anchor: "bottom",
|
191
|
+
onClose: e => handleClosePopover(e),
|
192
|
+
anchorOrigin: {
|
193
|
+
vertical: "top",
|
194
|
+
horizontal: "left"
|
195
|
+
},
|
196
|
+
transformOrigin: {
|
197
|
+
vertical: "top",
|
198
|
+
horizontal: "left"
|
199
|
+
},
|
200
|
+
sx: {
|
201
|
+
"& .MuiPaper-root": {
|
202
|
+
borderRadius: "20px",
|
203
|
+
background: theme?.palette?.editor?.textFormatBgColor,
|
204
|
+
border: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
|
205
|
+
boxShadow: "0px 4px 10px 0px #00000029"
|
206
|
+
}
|
207
|
+
},
|
208
|
+
disableAutoFocus: true,
|
209
|
+
disableEnforceFocus: true,
|
210
|
+
disableRestoreFocus: true,
|
211
|
+
children: /*#__PURE__*/_jsxs(Box, {
|
212
|
+
sx: {
|
213
|
+
width: isMobile ? "100%" : 300
|
214
|
+
},
|
215
|
+
children: [/*#__PURE__*/_jsx(Autocomplete, {
|
216
|
+
multiple: true,
|
217
|
+
freeSolo: true,
|
218
|
+
disablePortal: true,
|
219
|
+
PopperComponent: () => null,
|
220
|
+
sx: {
|
221
|
+
"& .MuiFormControl-root": {
|
222
|
+
maxHeight: "250px",
|
223
|
+
overflowY: "auto",
|
224
|
+
overflowX: "hidden",
|
225
|
+
pr: '12px',
|
226
|
+
pl: '12px',
|
227
|
+
marginTop: '12px',
|
228
|
+
...customScrollStyles
|
229
|
+
}
|
230
|
+
},
|
231
|
+
disableClearable: true,
|
232
|
+
options: [],
|
233
|
+
getOptionLabel: option => options?.value || "",
|
234
|
+
value: selectedOptions,
|
235
|
+
onChange: (event, newValues) => {
|
236
|
+
const addedOptions = newValues?.filter(value => typeof value === "object" || typeof value === "string" && value?.trim() !== "")?.map(value => typeof value === "string" ? {
|
237
|
+
value,
|
238
|
+
color: chipColor
|
239
|
+
} : value);
|
240
|
+
const isDuplicate = addedOptions?.some(newOpt => (selectedOptions || [])?.some(opt => opt.value === newOpt.value));
|
241
|
+
if (!isDuplicate) {
|
242
|
+
setSelectedOptions([...selectedOptions, ...addedOptions]);
|
243
|
+
}
|
244
|
+
},
|
245
|
+
inputValue: inputValue,
|
246
|
+
onInputChange: (event, newInputValue) => setInputValue(newInputValue),
|
247
|
+
onKeyDown: event => {
|
248
|
+
if (event.key === "Enter" && inputValue.trim()) {
|
249
|
+
event.preventDefault();
|
250
|
+
handleAddOption(inputValue);
|
251
|
+
}
|
252
|
+
},
|
253
|
+
filterOptions: (options, params) => options?.filter(option => option?.value?.toLowerCase()?.includes(params?.inputValue?.toLowerCase())),
|
254
|
+
renderInput: params => /*#__PURE__*/_jsx(TextField, {
|
255
|
+
...params,
|
256
|
+
variant: "standard",
|
257
|
+
InputProps: {
|
258
|
+
...params.InputProps,
|
259
|
+
disableUnderline: true,
|
260
|
+
sx: {
|
261
|
+
display: "flex",
|
262
|
+
flexWrap: "wrap",
|
263
|
+
fontFamily: "Inter",
|
264
|
+
fontWeight: 400,
|
265
|
+
fontSize: "12px",
|
266
|
+
color: theme?.palette?.editor?.secondaryTextColor,
|
267
|
+
"&::placeholder": {
|
268
|
+
color: theme?.palette?.editor?.secondaryTextColor
|
269
|
+
},
|
270
|
+
"& .MuiAutocomplete-input": {
|
271
|
+
minWidth: "100px !important"
|
272
|
+
}
|
273
|
+
},
|
274
|
+
endAdornment: /*#__PURE__*/_jsx(Tooltip, {
|
275
|
+
arrow: true,
|
276
|
+
title: "Clear Selected",
|
277
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
278
|
+
onClick: handleClearSelection,
|
279
|
+
sx: {
|
280
|
+
padding: 0,
|
281
|
+
minWidth: "unset",
|
282
|
+
"& .MuiSvgIcon-root": {
|
283
|
+
fontSize: 20
|
284
|
+
},
|
285
|
+
'& rect': {
|
286
|
+
fill: theme?.palette?.editor?.closeButtonSvgStroke
|
287
|
+
},
|
288
|
+
'&:hover': {
|
289
|
+
backgroundColor: 'transparent'
|
290
|
+
}
|
291
|
+
},
|
292
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
293
|
+
icon: "resetIconNew"
|
294
|
+
})
|
295
|
+
})
|
296
|
+
})
|
297
|
+
},
|
298
|
+
sx: {
|
299
|
+
backgroundColor: "transparent",
|
300
|
+
fontFamily: 'Inter',
|
301
|
+
fontWeight: 400,
|
302
|
+
fontSize: '12px'
|
303
|
+
},
|
304
|
+
placeholder: "Create new one..."
|
305
|
+
}),
|
306
|
+
renderTags: (tagValues, getTagProps) => tagValues.map((option, index) => /*#__PURE__*/_jsx(Chip, {
|
307
|
+
variant: "filled",
|
308
|
+
label: option?.value,
|
309
|
+
...getTagProps({
|
310
|
+
index
|
311
|
+
}),
|
312
|
+
onDelete: event => {
|
313
|
+
handleDeleteChip(event, option);
|
314
|
+
},
|
315
|
+
deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
|
316
|
+
sx: {
|
317
|
+
backgroundColor: option?.color,
|
318
|
+
color: '#0F172A',
|
319
|
+
"& .MuiChip-deleteIcon": {
|
320
|
+
flexShrink: 0,
|
321
|
+
"& path": {
|
322
|
+
stroke: '#0F172A !important'
|
323
|
+
}
|
324
|
+
},
|
325
|
+
"&:hover": {
|
326
|
+
opacity: 0.8
|
327
|
+
}
|
328
|
+
}
|
329
|
+
}, index))
|
330
|
+
}), /*#__PURE__*/_jsx(Divider, {
|
331
|
+
sx: {
|
332
|
+
mt: '12px',
|
333
|
+
borderBottom: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
|
334
|
+
boxShadow: theme?.palette?.editor?.dividerDropShadow
|
335
|
+
}
|
336
|
+
}), /*#__PURE__*/_jsx(Box, {
|
337
|
+
sx: {
|
338
|
+
pl: '4px'
|
339
|
+
},
|
340
|
+
children: /*#__PURE__*/_jsxs(List, {
|
341
|
+
sx: {
|
342
|
+
maxHeight: "250px",
|
343
|
+
overflowY: "auto",
|
344
|
+
...customScrollStyles
|
345
|
+
},
|
346
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
347
|
+
sx: {
|
348
|
+
mb: 1,
|
349
|
+
pl: '8px',
|
350
|
+
color: theme?.palette?.editor?.secondaryTextColor,
|
351
|
+
fontFamily: 'Inter',
|
352
|
+
fontWeight: 400,
|
353
|
+
fontSize: '12px'
|
354
|
+
},
|
355
|
+
children: "Choose an option or create one"
|
356
|
+
}), filteredOptions?.map((option, index) => /*#__PURE__*/_jsx(ListItem, {
|
357
|
+
sx: {
|
358
|
+
padding: 0
|
359
|
+
},
|
360
|
+
disablePadding: true,
|
361
|
+
children: /*#__PURE__*/_jsxs(ListItemButton, {
|
362
|
+
onClick: () => handleSelectOption(option),
|
363
|
+
sx: {
|
364
|
+
paddingTop: "4px",
|
365
|
+
paddingBottom: "4px",
|
366
|
+
justifyContent: 'space-between',
|
367
|
+
'&:hover': {
|
368
|
+
'& path': {
|
369
|
+
stroke: theme?.palette?.editor?.activeColor
|
370
|
+
},
|
371
|
+
borderRadius: '12px'
|
372
|
+
}
|
373
|
+
},
|
374
|
+
children: [/*#__PURE__*/_jsx(Chip, {
|
375
|
+
label: option?.value,
|
376
|
+
sx: {
|
377
|
+
backgroundColor: option?.color,
|
378
|
+
color: '#0F172A',
|
379
|
+
fontWeight: 500,
|
380
|
+
fontSize: "12px",
|
381
|
+
fontFamily: "Inter",
|
382
|
+
padding: "4px 12px",
|
383
|
+
borderRadius: "16px",
|
384
|
+
maxWidth: "180px",
|
385
|
+
whiteSpace: "nowrap",
|
386
|
+
overflow: "hidden",
|
387
|
+
textOverflow: "ellipsis"
|
388
|
+
}
|
389
|
+
}), /*#__PURE__*/_jsx(IconButton, {
|
390
|
+
size: "small",
|
391
|
+
sx: {
|
392
|
+
'& path': {
|
393
|
+
stroke: theme?.palette?.editor?.closeButtonSvgStroke
|
394
|
+
},
|
395
|
+
'&:hover': {
|
396
|
+
backgroundColor: 'transparent'
|
397
|
+
}
|
398
|
+
},
|
399
|
+
onClick: e => handleEditOption(e, index),
|
400
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
401
|
+
icon: "rightArrow"
|
402
|
+
})
|
403
|
+
})]
|
404
|
+
})
|
405
|
+
}, index)), inputValue?.trim() && !isExactMatch && /*#__PURE__*/_jsx(ListItem, {
|
406
|
+
disablePadding: true,
|
407
|
+
children: /*#__PURE__*/_jsxs(ListItemButton, {
|
408
|
+
onClick: () => handleAddOption(inputValue),
|
409
|
+
sx: {
|
410
|
+
display: "flex",
|
411
|
+
alignItems: "center"
|
412
|
+
},
|
413
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
414
|
+
sx: {
|
415
|
+
color: theme?.palette?.editor?.secondaryTextColor,
|
416
|
+
marginRight: "6px",
|
417
|
+
fontSize: "14px",
|
418
|
+
fontFamily: "Inter"
|
419
|
+
},
|
420
|
+
children: "Create"
|
421
|
+
}), /*#__PURE__*/_jsx(Chip, {
|
422
|
+
label: `${inputValue}`,
|
423
|
+
sx: {
|
424
|
+
backgroundColor: chipColor,
|
425
|
+
color: '#0F172A',
|
426
|
+
fontWeight: 500,
|
427
|
+
fontSize: "12px",
|
428
|
+
fontFamily: "Inter",
|
429
|
+
borderRadius: "16px",
|
430
|
+
maxWidth: "180px",
|
431
|
+
whiteSpace: "nowrap",
|
432
|
+
overflow: "hidden",
|
433
|
+
textOverflow: "ellipsis"
|
434
|
+
}
|
435
|
+
})]
|
436
|
+
})
|
437
|
+
})]
|
438
|
+
})
|
439
|
+
})]
|
440
|
+
})
|
441
|
+
}), openEditOption ? /*#__PURE__*/_jsx(PropertySettings, {
|
442
|
+
open: openEditOption,
|
443
|
+
anchorEl: anchorElOption,
|
444
|
+
mode: mode,
|
445
|
+
onClose: onClose,
|
446
|
+
onEvent: onEditOption,
|
447
|
+
translation: translation
|
448
|
+
}) : null, showSnackBar ? /*#__PURE__*/_jsx(SnackbarAlert, {
|
449
|
+
message: "Option already selected!",
|
450
|
+
setShowSnackBar: setShowSnackBar
|
451
|
+
}) : null]
|
452
|
+
});
|
453
|
+
};
|
454
|
+
export default MultiSelectWithPopover;
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import React, { useRef, useState } from "react";
|
2
|
+
import { Transforms } from "slate";
|
2
3
|
import { ReactEditor } from "slate-react";
|
3
4
|
import Icon from "../../common/Icon";
|
4
5
|
import { isBlockActive } from "../../utils/SlateUtilityFunctions";
|
5
|
-
import { insertEmbed } from "../../utils/embed";
|
6
|
+
import { insertDefaultEmbed, insertEmbed } from "../../utils/embed";
|
6
7
|
import "./Embed.css";
|
7
8
|
import ToolbarIcon from "../../common/ToolbarIcon";
|
8
9
|
import ImageSelector from "../../common/ImageSelector/ImageSelector";
|
@@ -109,20 +109,7 @@ const Form = props => {
|
|
109
109
|
if ((readOnly || test) && formEle && formEle?.current) {
|
110
110
|
const formData = new FormData(formEle?.current);
|
111
111
|
setLoading(true);
|
112
|
-
|
113
|
-
const formDataEntries = [...formData.entries()];
|
114
|
-
const childFields = element?.children?.filter(el => el?.type === "form-field");
|
115
|
-
response = formDataEntries.map(([key, value], index) => {
|
116
|
-
const fieldData = childFields[index];
|
117
|
-
return {
|
118
|
-
fieldKey: key,
|
119
|
-
[key]: value,
|
120
|
-
placeholder: fieldData?.placeholder || "",
|
121
|
-
form_name: formName,
|
122
|
-
tagName: tagName,
|
123
|
-
uid: fieldData?.uid || formName
|
124
|
-
};
|
125
|
-
});
|
112
|
+
const response = [];
|
126
113
|
let user_email = "";
|
127
114
|
let meta_data = [];
|
128
115
|
const validations = [];
|
@@ -166,28 +153,16 @@ const Form = props => {
|
|
166
153
|
rules: rule?.length > 0 && rule
|
167
154
|
});
|
168
155
|
}
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
// const fieldData = childFields[i];
|
179
|
-
|
180
|
-
// response.push({
|
181
|
-
// fieldKey: key,
|
182
|
-
// [key]: value,
|
183
|
-
// placeholder: fieldData?.placeholder || "",
|
184
|
-
// form_name: formName,
|
185
|
-
// tagName: tagName,
|
186
|
-
// uid: fieldData?.uid || formName,
|
187
|
-
// });
|
188
|
-
// }
|
156
|
+
const placeholder = fieldData?.name === pair[0] ? fieldData?.placeholder : "";
|
157
|
+
response?.push({
|
158
|
+
fieldKey: pair[0],
|
159
|
+
[pair[0]]: pair[1],
|
160
|
+
placeholder: placeholder,
|
161
|
+
form_name: formName,
|
162
|
+
tagName: tagName,
|
163
|
+
uid: fieldData?.uid
|
164
|
+
});
|
189
165
|
}
|
190
|
-
|
191
166
|
let params = {
|
192
167
|
page_id: page_id,
|
193
168
|
agency_id: agency_id,
|
@@ -184,11 +184,11 @@ const FreeGrid = props => {
|
|
184
184
|
const handleAddElementClick = type => () => {
|
185
185
|
const isEmpty = isEmptySection();
|
186
186
|
const insertAt = isEmpty ? [...path, 0] : [...path, childrenCountRef.current];
|
187
|
+
const id = crypto?.randomUUID();
|
187
188
|
const {
|
188
189
|
elValues,
|
189
190
|
sectionVal
|
190
191
|
} = getElementValues(type, element?.children, breakpoint);
|
191
|
-
const id = crypto?.randomUUID();
|
192
192
|
switch (type) {
|
193
193
|
case "addText":
|
194
194
|
Transforms.insertNodes(editor, [{
|
@@ -271,7 +271,9 @@ const FreeGrid = props => {
|
|
271
271
|
...insertFreeGridItem("video", createEmbedNode("video", {
|
272
272
|
url: "",
|
273
273
|
alt: "",
|
274
|
-
images: []
|
274
|
+
images: [],
|
275
|
+
fromFreeGrid: true,
|
276
|
+
uniqueId: id
|
275
277
|
}), {
|
276
278
|
...(elValues || {})
|
277
279
|
})
|
@@ -157,14 +157,14 @@ const FreeGridBox = props => {
|
|
157
157
|
};
|
158
158
|
const repeatTimes = Math.floor(height / ROW_HEIGHT);
|
159
159
|
const sectionTypeOptions = (itemOptions?.box || []).filter(f => (hideTools || []).indexOf(f) === -1);
|
160
|
-
const isBoxHeader = useMemo(() => {
|
161
|
-
return element?.children?.some(c => c.childType === "appHeader" && !c.xs_updatedOn);
|
162
|
-
}, [element]);
|
163
160
|
const boxSp = groupByBreakpoint({
|
164
161
|
borderRadius: {
|
165
162
|
...getBreakPointsValue(sectionBorderRadius || {}, null, "overrideBorderRadius", true)
|
166
163
|
}
|
167
164
|
}, theme);
|
165
|
+
const isBoxHeader = useMemo(() => {
|
166
|
+
return element?.children?.some(c => c.childType === "appHeader" && !c.xs_updatedOn);
|
167
|
+
}, [element]);
|
168
168
|
return /*#__PURE__*/_jsx(RnD, {
|
169
169
|
id: `freegrid_box_item_${path.join("|")}_${updated_at}_${breakpoint}`,
|
170
170
|
className: `freegrid-item path-${path.length} breakpoint-${breakpoint} freegrid-box_${path.join("_")}`,
|
@@ -5,8 +5,8 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
5
|
const More = props => {
|
6
6
|
const {
|
7
7
|
handleClick,
|
8
|
-
|
9
|
-
|
8
|
+
breakpoint,
|
9
|
+
translation
|
10
10
|
} = props;
|
11
11
|
return /*#__PURE__*/_jsx(Box, {
|
12
12
|
children: /*#__PURE__*/_jsxs(List, {
|
@@ -19,15 +19,15 @@ const More = props => {
|
|
19
19
|
className: "item-wrapper",
|
20
20
|
onClick: handleClick("duplicateSection"),
|
21
21
|
children: translation?.translation("Duplicate Section")
|
22
|
+
}), /*#__PURE__*/_jsx(ListItemButton, {
|
23
|
+
className: "item-wrapper",
|
24
|
+
onClick: handleClick("deleteSection"),
|
25
|
+
children: "Delete Section"
|
22
26
|
}), breakpoint === "xs" ? /*#__PURE__*/_jsx(ListItemButton, {
|
23
27
|
className: "item-wrapper",
|
24
28
|
onClick: handleClick("forceAutoAlignment"),
|
25
29
|
children: "Force Auto Alignment"
|
26
|
-
}) : null
|
27
|
-
className: "item-wrapper",
|
28
|
-
onClick: handleClick("deleteSection"),
|
29
|
-
children: "Delete Section"
|
30
|
-
})]
|
30
|
+
}) : null]
|
31
31
|
})
|
32
32
|
});
|
33
33
|
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React, { useState } from "react";
|
2
2
|
import { signedTextFonts } from "../../../utils/font";
|
3
3
|
import { Grid, Button, TextField, InputAdornment, IconButton, Typography } from "@mui/material";
|
4
|
-
import ClearRoundedIcon from
|
4
|
+
import ClearRoundedIcon from '@mui/icons-material/ClearRounded';
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
6
6
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
7
7
|
const TypeSignature = props => {
|
@@ -80,8 +80,7 @@ const TypeSignature = props => {
|
|
80
80
|
children: /*#__PURE__*/_jsx(ClearRoundedIcon, {})
|
81
81
|
})
|
82
82
|
})
|
83
|
-
}
|
84
|
-
autoComplete: "typeName"
|
83
|
+
}
|
85
84
|
})
|
86
85
|
})
|
87
86
|
})
|