@flozy/editor 5.5.9 → 5.6.1

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.
Files changed (212) hide show
  1. package/dist/Editor/ChatEditor.js +25 -34
  2. package/dist/Editor/CommonEditor.js +33 -16
  3. package/dist/Editor/Editor.css +105 -20
  4. package/dist/Editor/Elements/AI/AIInput.js +0 -1
  5. package/dist/Editor/Elements/AI/CustomSelect.js +17 -10
  6. package/dist/Editor/Elements/AI/PopoverAIInput.js +59 -53
  7. package/dist/Editor/Elements/AI/Styles.js +24 -6
  8. package/dist/Editor/Elements/Accordion/Accordion.js +8 -1
  9. package/dist/Editor/Elements/AppHeader/AppHeader.js +6 -6
  10. package/dist/Editor/Elements/Button/EditorButton.js +9 -2
  11. package/dist/Editor/Elements/Carousel/CarouselItem.js +11 -3
  12. package/dist/Editor/Elements/Color Picker/ColorButtons.js +7 -5
  13. package/dist/Editor/Elements/Color Picker/Styles.js +8 -3
  14. package/dist/Editor/Elements/Color Picker/defaultColors.js +2 -2
  15. package/dist/Editor/Elements/DataView/DataView.js +124 -0
  16. package/dist/Editor/Elements/DataView/DataViewButton.js +23 -0
  17. package/dist/Editor/Elements/DataView/Layouts/ColumnView.js +83 -0
  18. package/dist/Editor/Elements/DataView/Layouts/DataTypes/CheckType.js +33 -0
  19. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/Select.js +180 -0
  20. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/SimpleSelect.js +62 -0
  21. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/styles.js +68 -0
  22. package/dist/Editor/Elements/DataView/Layouts/DataTypes/DateType.js +35 -0
  23. package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +39 -0
  24. package/dist/Editor/Elements/DataView/Layouts/DataTypes/NumberType.js +30 -0
  25. package/dist/Editor/Elements/DataView/Layouts/DataTypes/PersonType.js +30 -0
  26. package/dist/Editor/Elements/DataView/Layouts/DataTypes/SelectType.js +35 -0
  27. package/dist/Editor/Elements/DataView/Layouts/DataTypes/TextType.js +36 -0
  28. package/dist/Editor/Elements/DataView/Layouts/DataTypes/index.js +17 -0
  29. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseField.js +29 -0
  30. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseSort.js +38 -0
  31. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/index.js +86 -0
  32. package/dist/Editor/Elements/DataView/Layouts/FilterSort/index.js +71 -0
  33. package/dist/Editor/Elements/DataView/Layouts/FilterSort/styles.js +138 -0
  34. package/dist/Editor/Elements/DataView/Layouts/FilterView.js +213 -0
  35. package/dist/Editor/Elements/DataView/Layouts/Formula.js +29 -0
  36. package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +113 -0
  37. package/dist/Editor/Elements/DataView/Layouts/Options/AddProperty.js +44 -0
  38. package/dist/Editor/Elements/DataView/Layouts/Options/AllProperties.js +146 -0
  39. package/dist/Editor/Elements/DataView/Layouts/Options/ChangeProperty.js +79 -0
  40. package/dist/Editor/Elements/DataView/Layouts/Options/ColumnsList.js +57 -0
  41. package/dist/Editor/Elements/DataView/Layouts/Options/Constants.js +101 -0
  42. package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +174 -0
  43. package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +241 -0
  44. package/dist/Editor/Elements/DataView/Layouts/Options/FilterProperty.js +45 -0
  45. package/dist/Editor/Elements/DataView/Layouts/Options/PropertyList.js +32 -0
  46. package/dist/Editor/Elements/DataView/Layouts/Options/index.js +110 -0
  47. package/dist/Editor/Elements/DataView/Layouts/Options/styles.js +217 -0
  48. package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +131 -0
  49. package/dist/Editor/Elements/DataView/Layouts/TableView.js +253 -0
  50. package/dist/Editor/Elements/DataView/Layouts/ViewData.js +85 -0
  51. package/dist/Editor/Elements/DataView/Layouts/colStyles.js +10 -0
  52. package/dist/Editor/Elements/DataView/Layouts/index.js +25 -0
  53. package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +277 -0
  54. package/dist/Editor/Elements/DataView/Utils/globalSearch.js +15 -0
  55. package/dist/Editor/Elements/DataView/Utils/multiSortRows.js +88 -0
  56. package/dist/Editor/Elements/DataView/styles.js +169 -0
  57. package/dist/Editor/Elements/Divider/Divider.js +36 -20
  58. package/dist/Editor/Elements/Embed/Image.js +51 -16
  59. package/dist/Editor/Elements/Embed/Video.js +26 -3
  60. package/dist/Editor/Elements/Form/Form.js +39 -2
  61. package/dist/Editor/Elements/Form/FormElements/FormCheckbox.js +7 -1
  62. package/dist/Editor/Elements/Form/FormElements/FormDate.js +7 -1
  63. package/dist/Editor/Elements/Form/FormElements/FormEmail.js +7 -1
  64. package/dist/Editor/Elements/Form/FormElements/FormNumbers.js +7 -1
  65. package/dist/Editor/Elements/Form/FormElements/FormRadioButton.js +7 -1
  66. package/dist/Editor/Elements/Form/FormElements/FormText.js +7 -1
  67. package/dist/Editor/Elements/Form/FormElements/FormTextArea.js +6 -1
  68. package/dist/Editor/Elements/Form/FormPopup.js +12 -9
  69. package/dist/Editor/Elements/Form/Workflow/Styles.js +2 -0
  70. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +1 -1
  71. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +4 -2
  72. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +20 -1
  73. package/dist/Editor/Elements/FreeGrid/breakpointConstants.js +4 -4
  74. package/dist/Editor/Elements/FreeGrid/styles.js +2 -1
  75. package/dist/Editor/Elements/Grid/GridButton.js +2 -2
  76. package/dist/Editor/Elements/Grid/GridItem.js +47 -36
  77. package/dist/Editor/Elements/Grid/Styles.js +50 -0
  78. package/dist/Editor/Elements/Link/LinkButton.js +1 -1
  79. package/dist/Editor/Elements/List/CheckList.js +2 -1
  80. package/dist/Editor/Elements/Search/SearchAttachment.js +1 -0
  81. package/dist/Editor/Elements/Search/SearchButton.js +1 -0
  82. package/dist/Editor/Elements/Signature/Signature.css +1 -1
  83. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -2
  84. package/dist/Editor/Elements/Signature/SignaturePopup.js +17 -52
  85. package/dist/Editor/Elements/SimpleText/index.js +11 -3
  86. package/dist/Editor/Elements/SimpleText/style.js +20 -1
  87. package/dist/Editor/Elements/Table/AddRowCol.js +77 -0
  88. package/dist/Editor/Elements/Table/DragButton.js +142 -0
  89. package/dist/Editor/Elements/Table/DragStyles.js +70 -0
  90. package/dist/Editor/Elements/Table/Draggable.js +25 -0
  91. package/dist/Editor/Elements/Table/Droppable.js +53 -0
  92. package/dist/Editor/Elements/Table/Styles.js +88 -78
  93. package/dist/Editor/Elements/Table/Table.js +263 -140
  94. package/dist/Editor/Elements/Table/TableCell.js +365 -111
  95. package/dist/Editor/Elements/Table/TablePopup.js +9 -3
  96. package/dist/Editor/Elements/Table/TableRow.js +10 -2
  97. package/dist/Editor/Elements/Table/TableTool.js +101 -0
  98. package/dist/Editor/Elements/Table/tableHelper.js +71 -0
  99. package/dist/Editor/Elements/TopBanner/TopBanner.js +2 -1
  100. package/dist/Editor/MiniEditor.js +21 -2
  101. package/dist/Editor/Styles/EditorStyles.js +13 -4
  102. package/dist/Editor/Toolbar/FormatTools/BlockButton.js +10 -0
  103. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +7 -12
  104. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +26 -4
  105. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +3 -0
  106. package/dist/Editor/Toolbar/FormatTools/TextSize.js +5 -5
  107. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +8 -8
  108. package/dist/Editor/Toolbar/Mini/Styles.js +9 -1
  109. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +13 -3
  110. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/InfinityAITool.js +7 -3
  111. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +6 -4
  112. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +19 -15
  113. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +557 -58
  114. package/dist/Editor/Toolbar/PopupTool/TemplateCard.js +1 -1
  115. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +73 -16
  116. package/dist/Editor/Toolbar/PopupTool/index.js +3 -5
  117. package/dist/Editor/Toolbar/Toolbar.js +6 -0
  118. package/dist/Editor/Toolbar/toolbarGroups.js +4 -0
  119. package/dist/Editor/assets/svg/ArrowDownIcon.js +25 -0
  120. package/dist/Editor/assets/svg/ArrowUpIcon.js +25 -0
  121. package/dist/Editor/assets/svg/BrainIcon.js +2 -2
  122. package/dist/Editor/assets/svg/CalenderIconTick.js +64 -0
  123. package/dist/Editor/assets/svg/ChervDown.js +18 -0
  124. package/dist/Editor/assets/svg/ChervUp.js +18 -0
  125. package/dist/Editor/assets/svg/DataTableIcon.js +50 -0
  126. package/dist/Editor/assets/svg/DuplicateIcon.js +23 -0
  127. package/dist/Editor/assets/svg/EyeIcon.js +23 -0
  128. package/dist/Editor/assets/svg/EyeSlash.js +43 -0
  129. package/dist/Editor/assets/svg/HashtagIcon.js +33 -0
  130. package/dist/Editor/assets/svg/PlusIcon.js +23 -0
  131. package/dist/Editor/assets/svg/SelectRoundedIcon.js +24 -0
  132. package/dist/Editor/assets/svg/SettingsIcon.js +4 -4
  133. package/dist/Editor/assets/svg/SortByIcon.js +33 -0
  134. package/dist/Editor/assets/svg/TableIcons.js +220 -0
  135. package/dist/Editor/assets/svg/TickOutlined.js +23 -0
  136. package/dist/Editor/assets/svg/TrashCanIcon.js +38 -0
  137. package/dist/Editor/common/ColorPickerButton.js +85 -45
  138. package/dist/Editor/common/DnD/Draggable.js +2 -1
  139. package/dist/Editor/common/FontLoader/FontLoader.js +6 -6
  140. package/dist/Editor/common/Icon.js +54 -21
  141. package/dist/Editor/common/ImageSelector/Options/Upload.js +2 -1
  142. package/dist/Editor/common/ImageSelector/Styles.js +47 -6
  143. package/dist/Editor/common/ImageSelector/UploadStyles.js +18 -6
  144. package/dist/Editor/common/LinkSettings/NavComponents.js +2 -1
  145. package/dist/Editor/common/LinkSettings/index.js +2 -1
  146. package/dist/Editor/common/MentionsPopup/Styles.js +143 -8
  147. package/dist/Editor/common/MentionsPopup/index.js +1 -1
  148. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +108 -12
  149. package/dist/Editor/common/RnD/GuideLines/styles.js +3 -3
  150. package/dist/Editor/common/RnD/ShadowElement.js +1 -1
  151. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +14 -2
  152. package/dist/Editor/common/RnD/Utils/gridDropItem.js +26 -7
  153. package/dist/Editor/common/RnD/VirtualElement/index.js +5 -1
  154. package/dist/Editor/common/RnD/index.js +4 -3
  155. package/dist/Editor/common/Section/index.js +3 -3
  156. package/dist/Editor/common/Section/styles.js +5 -1
  157. package/dist/Editor/common/Select/index.js +20 -0
  158. package/dist/Editor/common/Select/styles.js +17 -0
  159. package/dist/Editor/common/Shorthands/elements.js +13 -1
  160. package/dist/Editor/common/StyleBuilder/fieldStyle.js +2 -1
  161. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +9 -3
  162. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +35 -7
  163. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -2
  164. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +10 -2
  165. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +2 -1
  166. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +1 -1
  167. package/dist/Editor/common/StyleBuilder/fieldTypes/icons.js +2 -0
  168. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  169. package/dist/Editor/common/StyleBuilder/fieldTypes/lineSpacing.js +79 -0
  170. package/dist/Editor/common/StyleBuilder/fieldTypes/radiusStyle.js +11 -11
  171. package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +22 -6
  172. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +21 -2
  173. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +20 -4
  174. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +12 -2
  175. package/dist/Editor/common/StyleBuilder/formStyle.js +268 -149
  176. package/dist/Editor/common/StyleBuilder/index.js +101 -20
  177. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +4 -0
  178. package/dist/Editor/common/StyleBuilder/tableStyle.js +69 -25
  179. package/dist/Editor/common/SwipeableDrawer/style.js +15 -4
  180. package/dist/Editor/common/ToolbarIcon.js +1 -1
  181. package/dist/Editor/common/Uploader.js +46 -36
  182. package/dist/Editor/common/iconListV2.js +598 -74
  183. package/dist/Editor/common/iconslist.js +25 -19
  184. package/dist/Editor/commonStyle.js +421 -15
  185. package/dist/Editor/helper/deserialize/index.js +31 -2
  186. package/dist/Editor/helper/enforceDateFormat.js +41 -0
  187. package/dist/Editor/helper/index.js +17 -4
  188. package/dist/Editor/helper/theme.js +39 -2
  189. package/dist/Editor/hooks/useBreakpoints.js +1 -1
  190. package/dist/Editor/hooks/useMouseMove.js +5 -2
  191. package/dist/Editor/hooks/useTable.js +210 -0
  192. package/dist/Editor/plugins/withCustomDeleteBackward.js +34 -3
  193. package/dist/Editor/plugins/withEmbeds.js +30 -26
  194. package/dist/Editor/plugins/withHTML.js +100 -12
  195. package/dist/Editor/plugins/withLayout.js +1 -0
  196. package/dist/Editor/utils/SlateUtilityFunctions.js +39 -12
  197. package/dist/Editor/utils/brains.js +1 -1
  198. package/dist/Editor/utils/button.js +4 -4
  199. package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +75 -6
  200. package/dist/Editor/utils/customHooks/useResize.js +7 -4
  201. package/dist/Editor/utils/customHooks/useTableResize.js +6 -2
  202. package/dist/Editor/utils/dataView.js +43 -0
  203. package/dist/Editor/utils/embed.js +2 -1
  204. package/dist/Editor/utils/events.js +0 -1
  205. package/dist/Editor/utils/font.js +11 -4
  206. package/dist/Editor/utils/formfield.js +8 -4
  207. package/dist/Editor/utils/helper.js +103 -2
  208. package/dist/Editor/utils/insertNewLine.js +19 -1
  209. package/dist/Editor/utils/pageSettings.js +14 -2
  210. package/dist/Editor/utils/serializeToText.js +2 -0
  211. package/dist/Editor/utils/table.js +228 -24
  212. package/package.json +2 -2
@@ -0,0 +1,277 @@
1
+ import React, { createContext, useContext, useEffect, useState } from "react";
2
+ import { Editor, Transforms, Node } from "slate";
3
+ import { PROPERTY_DEFAULTS } from "../Layouts/Options/Constants";
4
+ import multiSortRows from "../Utils/multiSortRows";
5
+ import globalSearch from "../Utils/globalSearch";
6
+
7
+ // Data View context
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const DataViewContext = /*#__PURE__*/createContext();
10
+ export const useDataView = () => useContext(DataViewContext);
11
+ const DEFAULT_PROPERTIES = [{
12
+ key: "column1",
13
+ label: "Name",
14
+ dataType: "text"
15
+ }, {
16
+ key: "column2",
17
+ label: "Status",
18
+ dataType: "select",
19
+ options: ["Active", "Inactive"]
20
+ }, {
21
+ key: "column3",
22
+ label: "Agree?",
23
+ dataType: "checkbox"
24
+ }];
25
+
26
+ // Combined provider
27
+ export const DataViewProvider = ({
28
+ children,
29
+ ...props
30
+ }) => {
31
+ const {
32
+ data: initialData,
33
+ path,
34
+ editor,
35
+ users: peoples
36
+ } = props;
37
+ const dataViewNode = Node.get(editor, path);
38
+ const [layouts, setLayouts] = useState(initialData?.layouts || []);
39
+ const [seletectedLayout, setSelectedLayout] = useState({
40
+ ...(layouts[0] || {})
41
+ });
42
+ const [layoutType, setLayoutType] = useState(seletectedLayout?.type || "table");
43
+ const [properties, setProperties] = useState(initialData?.properties || [...DEFAULT_PROPERTIES]);
44
+ const [sort, setSort] = useState(seletectedLayout?.sort || []);
45
+ const [filter, setFilter] = useState(seletectedLayout?.filter || []);
46
+ const [rows, setRows] = useState(initialData?.rows || []);
47
+ const [selectedRows, setSelectedRows] = useState([]);
48
+ const [search, setSearch] = useState("");
49
+ const [users] = useState(peoples);
50
+
51
+ // for undo and redo
52
+ // minimal added for perforamnce issue avoid
53
+ useEffect(() => {
54
+ setRows(dataViewNode?.rows);
55
+ }, [dataViewNode?.rows?.length]);
56
+ useEffect(() => {
57
+ setProperties(dataViewNode?.properties);
58
+ }, [dataViewNode?.properties?.length]);
59
+
60
+ // re-order when sort val changes
61
+ useEffect(() => {
62
+ if ((sort?.length > 0 || search) && rows?.length > 0) {
63
+ const reOrderRows = sort?.length > 0 ? multiSortRows(initialData?.rows, sort, properties) : [...initialData?.rows];
64
+ setRows(globalSearch(reOrderRows, search));
65
+ } else {
66
+ // reset to default order
67
+ setRows(globalSearch(initialData?.rows || [], search));
68
+ }
69
+ }, [sort, search]);
70
+ const onAddProperty = (data, overrides = {}) => {
71
+ try {
72
+ const {
73
+ type
74
+ } = data;
75
+ const key = `col_${new Date().getTime()}`;
76
+ const newProperty = {
77
+ ...(PROPERTY_DEFAULTS[type] || {}),
78
+ ...overrides,
79
+ key: key,
80
+ type
81
+ };
82
+ const updatedProperties = [...properties, {
83
+ ...newProperty
84
+ }];
85
+ Transforms.setNodes(editor, {
86
+ properties: [...updatedProperties]
87
+ }, {
88
+ at: path
89
+ });
90
+ setProperties([...updatedProperties]);
91
+ return newProperty;
92
+ } catch (err) {
93
+ console.log(err);
94
+ }
95
+ };
96
+ const onUpdateProperty = (data, isDelete = false) => {
97
+ try {
98
+ const {
99
+ key
100
+ } = data;
101
+ let up = {
102
+ ...data
103
+ };
104
+ const updatedProperties = properties?.map(m => {
105
+ if (m.key === key) {
106
+ up = {
107
+ ...m,
108
+ ...data
109
+ };
110
+ return up;
111
+ }
112
+ return m;
113
+ });
114
+ if (isDelete) {
115
+ const deleteIndex = updatedProperties.findIndex(f => f.key === key);
116
+ updatedProperties.splice(deleteIndex, 1);
117
+ }
118
+ Transforms.setNodes(editor, {
119
+ properties: [...updatedProperties]
120
+ }, {
121
+ at: path
122
+ });
123
+ setProperties([...updatedProperties]);
124
+ return up;
125
+ } catch (err) {
126
+ console.log(err);
127
+ }
128
+ };
129
+ const onChange = (rowIndex, rowData) => {
130
+ try {
131
+ const updatedRows = rows?.map(m => {
132
+ if (m?.id === rowIndex) {
133
+ m = {
134
+ ...m,
135
+ ...rowData
136
+ };
137
+ }
138
+ return m;
139
+ });
140
+ Transforms.setNodes(editor, {
141
+ rows: [...updatedRows]
142
+ }, {
143
+ at: path
144
+ });
145
+ setRows(updatedRows);
146
+ } catch (err) {
147
+ console.log(err);
148
+ }
149
+ };
150
+ const onAddRow = () => {
151
+ try {
152
+ const newRow = properties?.reduce((a, b) => {
153
+ a[b.key] = "";
154
+ return a;
155
+ }, {
156
+ id: `row_${new Date().getTime()}`
157
+ });
158
+ const updatedRows = [...rows, newRow];
159
+ Transforms.setNodes(editor, {
160
+ rows: [...updatedRows]
161
+ }, {
162
+ at: path
163
+ });
164
+ setRows(updatedRows);
165
+ } catch (err) {
166
+ console.log(err);
167
+ }
168
+ };
169
+ const formatSort = (sorts = [], sortData, isDelete = false) => {
170
+ let upSort = [];
171
+ const isUpdate = sorts?.find(f => f.key === sortData?.key);
172
+ if (isUpdate) {
173
+ // update if any
174
+ upSort = sorts?.map(m => {
175
+ if (m.key === sortData.key) {
176
+ // if update col
177
+ if (sortData["newKey"]) {
178
+ sortData["key"] = sortData["newKey"];
179
+ delete sortData["newKey"];
180
+ }
181
+ return {
182
+ ...sortData
183
+ };
184
+ }
185
+ return m;
186
+ });
187
+ } else {
188
+ upSort = [...sorts, {
189
+ ...sortData
190
+ }];
191
+ }
192
+
193
+ // if no sort
194
+ if (sorts?.length === 0 && !isDelete) {
195
+ upSort = [{
196
+ ...sortData
197
+ }];
198
+ }
199
+
200
+ // if delete
201
+ if (isDelete) {
202
+ const deleteIndex = upSort.findIndex(f => f.key === sortData.key);
203
+ upSort.splice(deleteIndex, 1);
204
+ }
205
+ return upSort;
206
+ };
207
+ const onUpdateSort = (sortData = {}, isDelete = false, deleteAll = false) => {
208
+ try {
209
+ let upSort = {};
210
+ const updatedLayouts = layouts?.map((m, i) => {
211
+ if (seletectedLayout?.key === m.key) {
212
+ upSort = !deleteAll ? formatSort(m?.sort || [], sortData, isDelete) : [];
213
+ return {
214
+ ...m,
215
+ sort: [...upSort]
216
+ };
217
+ }
218
+ return m;
219
+ });
220
+ Transforms.setNodes(editor, {
221
+ layouts: [...updatedLayouts]
222
+ }, {
223
+ at: path
224
+ });
225
+ setLayouts(updatedLayouts);
226
+ setSort(upSort);
227
+ } catch (err) {
228
+ console.log(err);
229
+ }
230
+ };
231
+ const onDeleteRows = () => {
232
+ try {
233
+ const updatedRows = [...rows].filter(f => selectedRows.includes(f.id) === false);
234
+ Transforms.setNodes(editor, {
235
+ rows: [...updatedRows]
236
+ }, {
237
+ at: path
238
+ });
239
+ setRows(updatedRows);
240
+ setSelectedRows([]);
241
+ } catch (err) {
242
+ console.log(err);
243
+ }
244
+ };
245
+ const onSearch = e => {
246
+ setSearch(e?.target?.value);
247
+ };
248
+ const value = {
249
+ layoutType,
250
+ setLayoutType,
251
+ properties,
252
+ setProperties,
253
+ rows,
254
+ setRows,
255
+ onAddProperty,
256
+ layouts,
257
+ setLayouts,
258
+ onUpdateProperty,
259
+ onChange,
260
+ onAddRow,
261
+ users: users,
262
+ onUpdateSort,
263
+ sort,
264
+ filter,
265
+ setSelectedLayout,
266
+ setFilter,
267
+ selectedRows,
268
+ setSelectedRows,
269
+ onDeleteRows,
270
+ search,
271
+ onSearch
272
+ };
273
+ return /*#__PURE__*/_jsx(DataViewContext.Provider, {
274
+ value: value,
275
+ children: children
276
+ });
277
+ };
@@ -0,0 +1,15 @@
1
+ const globalSearch = (array, searchTerm) => {
2
+ if (!searchTerm) {
3
+ return array;
4
+ }
5
+ const lowerCaseSearchTerm = searchTerm.toLowerCase();
6
+ return array.filter(item => Object.values(item).some(value => {
7
+ if (typeof value === "string" && value) {
8
+ return value?.toLowerCase().includes(lowerCaseSearchTerm);
9
+ } else if (Array.isArray(value)) {
10
+ return value?.map(m => m?.value).some(d => d.toLowerCase().includes(lowerCaseSearchTerm));
11
+ }
12
+ return false;
13
+ }));
14
+ };
15
+ export default globalSearch;
@@ -0,0 +1,88 @@
1
+ function sortByDate(a, b) {
2
+ const dateA = new Date(a);
3
+ const dateB = new Date(b);
4
+
5
+ // Check if both dates are valid
6
+ const isValidA = !isNaN(dateA.getTime());
7
+ const isValidB = !isNaN(dateB.getTime());
8
+ if (isValidA && isValidB) {
9
+ // Compare valid dates
10
+ return dateA - dateB;
11
+ } else if (isValidA) {
12
+ // Invalid date in `b` pushes `a` before `b`
13
+ return -1;
14
+ } else if (isValidB) {
15
+ // Invalid date in `a` pushes `b` before `a`
16
+ return 1;
17
+ } else {
18
+ // Both are invalid, maintain their relative order
19
+ return 0;
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Multi-sort rows based on multiple criteria.
25
+ * @param {Array} rows - Array of row objects.
26
+ * @param {Array} criteria - Array of sort criteria [{key, sortBy}].
27
+ * @param {Object} columnConfig - Column configurations with data types.
28
+ */
29
+ const multiSortRows = (rows, criteria, columnConfig) => {
30
+ return rows.slice().sort((a, b) => {
31
+ for (let {
32
+ key,
33
+ operator
34
+ } of criteria) {
35
+ const column = columnConfig?.find(col => col.key === key);
36
+ if (!column) continue;
37
+ const dataType = column.type;
38
+ const valueA = a[key];
39
+ const valueB = b[key];
40
+ let comparison = 0;
41
+ switch (dataType) {
42
+ case "text":
43
+ comparison = valueA?.localeCompare(valueB, undefined, {
44
+ sensitivity: "base"
45
+ });
46
+ break;
47
+ case "number":
48
+ comparison = parseInt(valueA || 0) - parseInt(valueB || 0);
49
+ break;
50
+ case "select":
51
+ case "multi-select":
52
+ case "person":
53
+ if (Array?.isArray(valueA) && Array?.isArray(valueB)) {
54
+ comparison = Array?.isArray(valueA) ? valueA?.map(m => m?.value)?.join(", ")?.localeCompare(valueB?.map(m => m?.value).join(", "), undefined, {
55
+ sensitivity: "base"
56
+ }) : 0;
57
+ }
58
+ break;
59
+ case "date":
60
+ comparison = sortByDate(valueA, valueB);
61
+ break;
62
+ case "check":
63
+ if (operator === "desc") {
64
+ if (valueA) {
65
+ return 1;
66
+ } else {
67
+ return -1;
68
+ }
69
+ } else {
70
+ if (valueA) {
71
+ return -1;
72
+ } else {
73
+ return 1;
74
+ }
75
+ }
76
+ // return valueA && operator === "desc" ? 1 : valueB && operator === "asc" ;
77
+ default:
78
+ break;
79
+ }
80
+ if (comparison !== 0) {
81
+ return operator === "asc" ? comparison : -comparison;
82
+ }
83
+ }
84
+ return 0; // Rows are equal based on all criteria
85
+ });
86
+ };
87
+
88
+ export default multiSortRows;
@@ -0,0 +1,169 @@
1
+ const useDataViewStyles = (theme, appTheme) => ({
2
+ root: {
3
+ width: "100%",
4
+ overflowX: "auto",
5
+ marginTop: "8px",
6
+ "& table": {
7
+ width: "100%",
8
+ "& th.fe-tv-ap-ico": {
9
+ width: "50px"
10
+ }
11
+ },
12
+ "& table th": {
13
+ cursor: "pointer",
14
+ width: "200px"
15
+ },
16
+ "& table, th, td": {
17
+ border: "1px solid black",
18
+ borderCollapse: "collapse"
19
+ },
20
+ "& .react-datepicker-wrapper": {
21
+ width: "100%",
22
+ "& input": {
23
+ padding: "6px 12px"
24
+ }
25
+ },
26
+ "& .MuiInputBase-root": {
27
+ "& fieldset": {
28
+ border: "none"
29
+ }
30
+ },
31
+ // filter view
32
+ "& .fe-tv-fv": {
33
+ marginBottom: "8px",
34
+ "& .mr": {
35
+ marginRight: "4px"
36
+ },
37
+ [theme?.breakpoints?.between("xs", "md")]: {
38
+ display: "flex",
39
+ flexDirection: "column"
40
+ }
41
+ },
42
+ "& .tv-act-row": {
43
+ "& .tv-tr-pop": {
44
+ opacity: 0,
45
+ "&.active": {
46
+ opacity: 1
47
+ },
48
+ "& .tv-ck-box": {
49
+ "& svg": {
50
+ color: appTheme?.palette?.editor?.tv_border,
51
+ '& rect': {
52
+ fill: appTheme?.palette?.editor?.tv_chk_box_fill,
53
+ stroke: appTheme?.palette?.editor?.tv_chk_box_stroke
54
+ }
55
+ },
56
+ "&.Mui-checked": {
57
+ "& svg": {
58
+ color: "rgba(37, 99, 235, 1)",
59
+ '& rect': {
60
+ fill: appTheme?.palette?.editor?.activeColor,
61
+ stroke: 'none'
62
+ }
63
+ }
64
+ }
65
+ }
66
+ },
67
+ "&:hover": {
68
+ "& .tv-tr-pop": {
69
+ opacity: 1
70
+ }
71
+ }
72
+ }
73
+ },
74
+ filterView: {
75
+ display: "flex",
76
+ justifyContent: "space-between",
77
+ alignItems: "center",
78
+ "& .MuiButtonBase-root": {
79
+ padding: "6px",
80
+ marginLeft: "4px",
81
+ width: "29px",
82
+ height: "29px",
83
+ "&.active": {
84
+ color: "rgba(37, 99, 235, 1)"
85
+ }
86
+ },
87
+ "& .tv-sb": {
88
+ display: "flex",
89
+ border: "1px solid transparent",
90
+ width: "24px",
91
+ transition: "width 1s",
92
+ "&.open": {
93
+ width: "fit-content",
94
+ border: `1px solid ${appTheme?.palette?.editor?.tv_border}`,
95
+ boxShadow: "0px 4px 18px 0px #0000000D",
96
+ borderRadius: "8px",
97
+ minWidth: '148px'
98
+ },
99
+ "& input": {
100
+ paddingBottom: "0px",
101
+ fontSize: "14px"
102
+ }
103
+ },
104
+ "& .tv-title-wrpr, .tv-fi-wrpr": {
105
+ display: "flex",
106
+ "& button": {
107
+ color: appTheme?.palette?.editor?.tv_text
108
+ },
109
+ "& input": {
110
+ color: appTheme?.palette?.editor?.tv_text
111
+ }
112
+ },
113
+ "& .tv-title-wrpr": {
114
+ width: "80%",
115
+ marginRight: "8px",
116
+ "& .MuiInputBase-root": {
117
+ width: "100%"
118
+ },
119
+ "& .MuiInputBase-input": {
120
+ paddingBottom: "0px",
121
+ fontWeight: "bold",
122
+ fontSize: "16px",
123
+ color: appTheme?.palette?.editor?.textFormatTextColor
124
+ },
125
+ [theme?.breakpoints?.between("xs", "md")]: {
126
+ width: "100%",
127
+ marginRight: "0px"
128
+ }
129
+ },
130
+ "& .tv-fi-wrpr": {
131
+ [theme?.breakpoints?.between("xs", "md")]: {
132
+ width: "100%",
133
+ justifyContent: "end"
134
+ }
135
+ }
136
+ },
137
+ basicMenu: {
138
+ "& .MuiPaper-root": {
139
+ padding: "0px 6px",
140
+ width: "150px",
141
+ border: `1px solid ${appTheme?.palette?.editor?.tv_border}`,
142
+ borderRadius: "8px",
143
+ fontFamily: 'Inter !important',
144
+ background: appTheme?.palette?.editor?.tv_pop_bg,
145
+ color: appTheme?.palette?.editor?.tv_text_primary,
146
+ "& .MuiButtonBase-root": {
147
+ fontSize: "14px",
148
+ padding: '6px 8px',
149
+ "& svg": {
150
+ width: "16px",
151
+ height: "16px",
152
+ color: `${appTheme?.palette?.editor?.tv_text}`
153
+ },
154
+ "&:hover": {
155
+ background: appTheme?.palette?.editor?.tv_hover_bg,
156
+ borderRadius: "8px",
157
+ color: `${appTheme?.palette?.editor?.tv_hover_text} !important`,
158
+ "& svg": {
159
+ color: `${appTheme?.palette?.editor?.tv_hover_text} !important`,
160
+ '& path': {
161
+ stroke: `${appTheme?.palette?.editor?.tv_hover_text} !important`
162
+ }
163
+ }
164
+ }
165
+ }
166
+ }
167
+ }
168
+ });
169
+ export default useDataViewStyles;
@@ -5,6 +5,7 @@ import { IconButton, Tooltip } from "@mui/material";
5
5
  import { GridSettingsIcon } from "../../common/iconslist";
6
6
  import DividerPopup from "./DividerPopup";
7
7
  import { Transforms } from "slate";
8
+ import useCommonStyle from "../../commonStyle";
8
9
  import { jsx as _jsx } from "react/jsx-runtime";
9
10
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
11
  const Divider = props => {
@@ -17,10 +18,11 @@ const Divider = props => {
17
18
  const {
18
19
  theme
19
20
  } = useEditorContext();
21
+ const classes = useCommonStyle(theme);
20
22
  const {
21
- borderColor = theme?.palette?.primary?.main || '#0F172A',
22
- borderWidth = '1px',
23
- borderStyle = 'solid'
23
+ borderColor = theme?.palette?.primary?.main || "#0F172A",
24
+ borderWidth = "1px",
25
+ borderStyle = "solid"
24
26
  } = element;
25
27
  const {
26
28
  readOnly
@@ -33,7 +35,7 @@ const Divider = props => {
33
35
  } = useEditorContext();
34
36
  const [showTool] = useEditorSelection(editor);
35
37
  const selected = hoverPath === path.join(",");
36
- const width = borderWidth?.includes('px') ? borderWidth : `${borderWidth}px`;
38
+ const width = borderWidth?.includes("px") ? borderWidth : `${borderWidth}px`;
37
39
  const onSettings = () => {
38
40
  setOpenSettings(true);
39
41
  };
@@ -43,16 +45,21 @@ const Divider = props => {
43
45
  showTool,
44
46
  onSettings
45
47
  }) => {
46
- const hoverStyles = readOnly ? {
47
- '&.MuiIconButton-root:hover': {
48
- background: theme?.palette?.type === 'dark' ? `${theme?.palette?.greyshades?.light8} !important` : `${theme?.palette?.containers?.card} !important`
49
- }
50
- } : {};
48
+ // const hoverStyles = readOnly
49
+ // ? {
50
+ // "&.MuiIconButton-root:hover": {
51
+ // background:
52
+ // theme?.palette?.type === "dark"
53
+ // ? `${theme?.palette?.greyshades?.light8} !important`
54
+ // : `${theme?.palette?.containers?.card} !important`,
55
+ // },
56
+ // }
57
+ // : {};
51
58
  return /*#__PURE__*/_jsx("div", {
52
59
  contentEditable: false,
53
60
  className: "divider-settings",
54
61
  style: {
55
- top: "-20px",
62
+ top: "-33px",
56
63
  left: 0
57
64
  },
58
65
  children: /*#__PURE__*/_jsx(Tooltip, {
@@ -61,14 +68,22 @@ const Divider = props => {
61
68
  children: /*#__PURE__*/_jsx(IconButton, {
62
69
  size: "small",
63
70
  sx: {
64
- background: theme?.palette?.type === 'dark' ? theme?.palette?.greyshades?.light8 : theme?.palette?.containers?.card,
65
- border: theme?.palette?.type === 'dark' ? '1px solid #E4E8EB33' : 'none',
66
- boxShadow: '0px 0px 4px 0px #00000040',
67
- borderRadius: '50%',
68
- '& svg': {
69
- stroke: theme?.palette?.text?.secondary3
71
+ // background:
72
+ // theme?.palette?.type === "dark"
73
+ // ? theme?.palette?.greyshades?.light8
74
+ // : theme?.palette?.containers?.card,
75
+ // border:
76
+ // theme?.palette?.type === "dark"
77
+ // ? "1px solid #E4E8EB33"
78
+ // : "none",
79
+ boxShadow: "0px 0px 4px 0px #00000040",
80
+ borderRadius: "50%",
81
+ "& svg": {
82
+ width: '16px',
83
+ height: '16px'
70
84
  },
71
- ...hoverStyles
85
+ // ...hoverStyles,
86
+ ...classes.buttonMoreOption
72
87
  },
73
88
  onClick: onSettings,
74
89
  children: /*#__PURE__*/_jsx(GridSettingsIcon, {})
@@ -103,14 +118,15 @@ const Divider = props => {
103
118
  className: `dividerComponent`,
104
119
  style: {
105
120
  userSelect: "none",
106
- position: 'relative'
121
+ position: "relative"
107
122
  },
108
123
  contentEditable: false,
109
124
  children: [!readOnly && /*#__PURE__*/_jsx("div", {
110
125
  className: `element-root element-selector`,
111
126
  contentEditable: false,
112
127
  style: {
113
- zIndex: 1000
128
+ zIndex: 1000,
129
+ left: "0%"
114
130
  },
115
131
  children: /*#__PURE__*/_jsx(DividerToolbar, {
116
132
  selected: selected,
@@ -126,7 +142,7 @@ const Divider = props => {
126
142
  borderTop: !borderColor?.includes("linear") ? `${width} ${borderStyle} ${borderColor}` : `transparent`,
127
143
  backgroundImage: borderColor?.includes("linear") ? borderColor : "none",
128
144
  height: borderColor?.includes("linear") ? borderWidth : undefined,
129
- marginTop: '15px'
145
+ marginTop: "15px"
130
146
  }
131
147
  }), /*#__PURE__*/_jsx("span", {
132
148
  style: {