@griddo/ax 1.69.8 → 1.72.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.
Files changed (160) hide show
  1. package/config/jest/componentsMock.js +0 -26
  2. package/package.json +4 -3
  3. package/src/Style/index.tsx +1 -1
  4. package/src/__tests__/components/ElementsTooltip/ElementsTooltip.test.tsx +97 -0
  5. package/src/__tests__/components/EmptyState/EmptyState.test.tsx +78 -0
  6. package/src/__tests__/components/FieldContainer/FieldContainer.test.tsx +82 -0
  7. package/src/__tests__/components/Fields/AnalyticsField/AnalyticsField.test.tsx +1 -1
  8. package/src/__tests__/components/Fields/AnalyticsField/PageAnalytics/PageAnalytics.test.tsx +1 -15
  9. package/src/__tests__/components/Fields/AnalyticsField/StructuredDataAnalytics/StructuredDataAnalytics.test.tsx +1 -16
  10. package/src/__tests__/components/Fields/ArrayFieldGroup/ArrayFieldGroup.test.tsx +8 -17
  11. package/src/__tests__/components/Fields/AsyncCheckGroup/AsyncCheckGroup.test.tsx +4 -16
  12. package/src/__tests__/components/Fields/AsyncSelect/AsyncSelect.test.tsx +2 -20
  13. package/src/__tests__/components/Fields/CheckField/CheckField.test.tsx +6 -6
  14. package/src/__tests__/components/Fields/CheckGroup/CheckGroup.test.tsx +15 -15
  15. package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +7 -16
  16. package/src/__tests__/components/Fields/ComponentArray/ComponentArray.test.tsx +2 -23
  17. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/MixableComponentArray.test.tsx +11 -31
  18. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/PasteModuleButton/PasteModuleButton.test.tsx +15 -21
  19. package/src/__tests__/components/Fields/ComponentArray/SameComponentArray/SameComponentArray.test.tsx +6 -25
  20. package/src/__tests__/components/Fields/ComponentContainer/ComponentContainer.test.tsx +559 -0
  21. package/src/__tests__/components/Fields/ConditionalField/ConditionalField.test.tsx +1 -1
  22. package/src/__tests__/components/Fields/DateField/DateField.test.tsx +1 -1
  23. package/src/__tests__/components/Fields/FieldGroup/FieldGroup.test.tsx +1 -1
  24. package/src/__tests__/components/Fields/FieldsDivider/FieldsDivider.test.tsx +1 -1
  25. package/src/__tests__/components/Fields/FileField/FileField.test.tsx +3 -3
  26. package/src/__tests__/components/Fields/HeadingField/HeadingField.test.tsx +6 -6
  27. package/src/__tests__/components/Fields/HiddenField/HiddenField.test.tsx +2 -8
  28. package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +471 -0
  29. package/src/__tests__/components/Fields/MultiCheckSelect/MultiCheckSelect.test.tsx +2 -16
  30. package/src/__tests__/components/Fields/MultiCheckSelectGroup/MultiCheckSelectGroup.test.tsx +2 -2
  31. package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +2 -7
  32. package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +2 -15
  33. package/src/__tests__/components/Fields/RadioField/RadioField.test.tsx +2 -12
  34. package/src/__tests__/components/Fields/ReferenceField/ReferenceField.test.tsx +171 -19
  35. package/src/__tests__/components/Fields/RichText/RichText.test.tsx +2 -13
  36. package/src/__tests__/components/Fields/Select/Select.test.tsx +3 -23
  37. package/src/__tests__/components/Fields/SliderField/SliderField.test.tsx +2 -15
  38. package/src/__tests__/components/Fields/TagField/TagField.test.tsx +4 -4
  39. package/src/__tests__/components/Fields/TextArea/TextArea.test.tsx +1 -1
  40. package/src/__tests__/components/Fields/TextField/TextField.test.tsx +6 -6
  41. package/src/__tests__/components/Fields/TimeField/HourInput/HourInput.test.tsx +142 -0
  42. package/src/__tests__/components/Fields/TimeField/TimeField.test.tsx +100 -0
  43. package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +2 -10
  44. package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +152 -0
  45. package/src/__tests__/components/Fields/UniqueCheck/UniqueCheck.test.tsx +3 -3
  46. package/src/__tests__/components/Fields/UrlField/UrlField.test.tsx +4 -4
  47. package/src/__tests__/components/Fields/VisualUniqueSelection/ImageSelection/ImageSelection.test.tsx +2 -14
  48. package/src/__tests__/components/Fields/VisualUniqueSelection/ScrollableSelection/ScrollableSelection.test.tsx +6 -20
  49. package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +3 -29
  50. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.test.tsx +1 -1
  51. package/src/__tests__/components/FieldsBehavior/FieldsBehavior.test.tsx +149 -0
  52. package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +241 -0
  53. package/src/__tests__/components/TableFilters/CustomizeFilters/CustomizeFilters.test.tsx +131 -0
  54. package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +148 -0
  55. package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +265 -0
  56. package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +197 -0
  57. package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +317 -0
  58. package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +197 -0
  59. package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +157 -0
  60. package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +164 -0
  61. package/src/__tests__/components/TableList/TableList.test.tsx +119 -0
  62. package/src/__tests__/components/Tabs/Tabs.test.tsx +205 -0
  63. package/src/__tests__/components/Tag/Tag.test.tsx +140 -0
  64. package/src/__tests__/components/Toast/Toast.test.tsx +102 -0
  65. package/src/api/navigation.tsx +1 -1
  66. package/src/components/Browser/index.tsx +1 -1
  67. package/src/components/Button/index.tsx +3 -3
  68. package/src/components/ConfigPanel/NavigationForm/Field/index.tsx +14 -3
  69. package/src/components/ElementsTooltip/index.tsx +10 -9
  70. package/src/components/EmptyState/index.tsx +2 -2
  71. package/src/components/FieldContainer/index.tsx +3 -3
  72. package/src/components/Fields/ArrayFieldGroup/index.tsx +1 -1
  73. package/src/components/Fields/AsyncCheckGroup/index.tsx +1 -1
  74. package/src/components/Fields/AsyncSelect/index.tsx +1 -1
  75. package/src/components/Fields/CheckField/index.tsx +3 -3
  76. package/src/components/Fields/CheckGroup/index.tsx +2 -2
  77. package/src/components/Fields/ComponentContainer/index.tsx +7 -6
  78. package/src/components/Fields/ComponentContainer/style.tsx +2 -2
  79. package/src/components/Fields/HeadingField/index.tsx +1 -1
  80. package/src/components/Fields/HiddenField/index.tsx +1 -1
  81. package/src/components/Fields/ImageField/index.tsx +10 -5
  82. package/src/components/Fields/MultiCheckSelect/index.tsx +3 -3
  83. package/src/components/Fields/NumberField/index.tsx +2 -1
  84. package/src/components/Fields/ReferenceField/ItemList/Item/index.tsx +5 -7
  85. package/src/components/Fields/ReferenceField/ItemList/Item/style.tsx +2 -2
  86. package/src/components/Fields/ReferenceField/ItemList/index.tsx +1 -1
  87. package/src/components/Fields/RichText/index.tsx +10 -6
  88. package/src/components/Fields/Select/index.tsx +2 -2
  89. package/src/components/Fields/SliderField/index.tsx +1 -1
  90. package/src/components/Fields/TextField/index.tsx +2 -7
  91. package/src/components/Fields/TimeField/HourInput/index.tsx +103 -0
  92. package/src/components/Fields/TimeField/HourInput/style.tsx +19 -0
  93. package/src/components/Fields/TimeField/HourInput/utils.tsx +35 -0
  94. package/src/components/Fields/TimeField/index.tsx +57 -0
  95. package/src/components/Fields/TimeField/style.tsx +37 -0
  96. package/src/components/Fields/index.tsx +2 -0
  97. package/src/components/FieldsBehavior/index.tsx +1 -1
  98. package/src/components/FloatingMenu/index.tsx +2 -2
  99. package/src/components/Gallery/GalleryFilters/Type/index.tsx +50 -0
  100. package/src/components/Gallery/GalleryFilters/Type/style.tsx +39 -0
  101. package/src/components/Gallery/GalleryPanel/DetailPanel/index.tsx +2 -1
  102. package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/style.tsx +3 -3
  103. package/src/components/Gallery/hooks.tsx +10 -4
  104. package/src/components/Gallery/index.tsx +2 -0
  105. package/src/components/Icon/index.tsx +1 -1
  106. package/src/components/IconAction/index.tsx +1 -1
  107. package/src/components/Lists/index.tsx +1 -1
  108. package/src/components/Loading/index.tsx +1 -1
  109. package/src/components/Pagination/index.tsx +1 -1
  110. package/src/components/SideModal/SideModalOption/index.tsx +4 -2
  111. package/src/components/SideModal/index.tsx +1 -1
  112. package/src/components/TableFilters/CategoryFilter/index.tsx +2 -2
  113. package/src/components/TableFilters/CategoryFilter/style.tsx +1 -10
  114. package/src/components/TableFilters/CustomizeFilters/index.tsx +2 -3
  115. package/src/components/TableFilters/DateFilter/index.tsx +4 -4
  116. package/src/components/TableFilters/LiveFilter/index.tsx +1 -1
  117. package/src/components/TableFilters/LiveFilter/style.tsx +2 -10
  118. package/src/components/TableFilters/NameFilter/index.tsx +4 -4
  119. package/src/components/TableFilters/SiteFilter/index.tsx +16 -13
  120. package/src/components/TableFilters/SiteFilter/style.tsx +1 -10
  121. package/src/components/TableFilters/StatusFilter/index.tsx +3 -3
  122. package/src/components/TableFilters/TranslationsFilter/index.tsx +4 -7
  123. package/src/components/TableFilters/TranslationsFilter/style.tsx +1 -10
  124. package/src/components/TableFilters/TypeFilter/index.tsx +2 -2
  125. package/src/components/TableFilters/TypeFilter/style.tsx +1 -10
  126. package/src/components/TableList/index.tsx +6 -6
  127. package/src/components/TableList/style.tsx +1 -1
  128. package/src/components/Tabs/index.tsx +19 -7
  129. package/src/components/Tag/index.tsx +6 -6
  130. package/src/components/Toast/index.tsx +4 -4
  131. package/src/components/Tooltip/index.tsx +5 -3
  132. package/src/components/index.tsx +2 -0
  133. package/src/containers/Navigation/Defaults/actions.tsx +10 -5
  134. package/src/containers/Navigation/Defaults/utils.tsx +13 -4
  135. package/src/containers/Sites/actions.tsx +7 -0
  136. package/src/containers/Sites/constants.tsx +1 -0
  137. package/src/containers/Sites/interfaces.tsx +6 -0
  138. package/src/containers/Sites/reducer.tsx +4 -0
  139. package/src/containers/StructuredData/actions.tsx +21 -8
  140. package/src/containers/StructuredData/constants.tsx +2 -0
  141. package/src/containers/StructuredData/interfaces.tsx +7 -1
  142. package/src/containers/StructuredData/reducer.tsx +5 -1
  143. package/src/helpers/fields.tsx +2 -2
  144. package/src/helpers/index.tsx +3 -0
  145. package/src/helpers/parseTheme.js +456 -0
  146. package/src/helpers/schemas.tsx +2 -2
  147. package/src/hooks/forms.tsx +2 -1
  148. package/src/modules/App/Routing/NavMenu/index.tsx +9 -1
  149. package/src/modules/Content/BulkHeader/TableHeader/index.tsx +1 -1
  150. package/src/modules/Content/hooks.tsx +19 -12
  151. package/src/modules/Content/index.tsx +23 -14
  152. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/DefaultsBrowser/index.tsx +3 -0
  153. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/index.tsx +3 -1
  154. package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +16 -18
  155. package/src/modules/Navigation/Defaults/DefaultsEditor/utils.tsx +37 -0
  156. package/src/modules/StructuredData/Form/ConnectedField/index.tsx +3 -2
  157. package/src/modules/StructuredData/Form/index.tsx +22 -17
  158. package/src/modules/StructuredData/StructuredDataList/hooks.tsx +30 -20
  159. package/src/modules/StructuredData/StructuredDataList/index.tsx +24 -14
  160. package/src/types/index.tsx +8 -7
@@ -0,0 +1,559 @@
1
+ import * as React from "react";
2
+
3
+ import { DraggableProvided, Draggable } from "react-beautiful-dnd";
4
+ import { ThemeProvider } from "styled-components";
5
+ import { mock } from "jest-mock-extended";
6
+
7
+ import { render, screen, cleanup, fireEvent } from "@testing-library/react";
8
+ import { parseTheme } from "@ax/helpers";
9
+
10
+ import globalTheme from "@ax/themes/theme.json";
11
+ import ComponentContainer, { IComponentContainerProps } from "@ax/components/Fields/ComponentContainer";
12
+
13
+ afterEach(cleanup);
14
+ const defaultProps = mock<IComponentContainerProps>();
15
+
16
+ jest.mock("react-beautiful-dnd", () => ({
17
+ Draggable: ({ children, draggableId, index }: any) =>
18
+ children(
19
+ {
20
+ innerRef: jest.fn(),
21
+ },
22
+ {}
23
+ ),
24
+ }));
25
+
26
+ describe("ComponentContainer component rendering", () => {
27
+ afterEach(() => {
28
+ jest.resetAllMocks();
29
+ });
30
+ test("should render the ComponentContainer", () => {
31
+ defaultProps.text = "texto";
32
+ defaultProps.editorID = 1;
33
+ defaultProps.whiteList = ["BasicContent", "CardCollection"];
34
+ defaultProps.goTo = "/home";
35
+ defaultProps.arrayLength = 10;
36
+ defaultProps.theme = "default";
37
+ defaultProps.isArray = true;
38
+ defaultProps.disabled = false;
39
+ render(
40
+ <ThemeProvider theme={parseTheme(globalTheme)}>
41
+ <Draggable draggableId="1" index={1} key={1}>
42
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
43
+ </Draggable>
44
+ </ThemeProvider>
45
+ );
46
+
47
+ expect(screen.getAllByTestId("component-container")).toBeTruthy();
48
+ });
49
+ test("should render the EmptyContainer with whitelist value", () => {
50
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
51
+ // @ts-ignore
52
+ defaultProps.text = undefined;
53
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
54
+ // @ts-ignore
55
+ defaultProps.editorID = undefined;
56
+ defaultProps.whiteList = ["BasicContent", "CardCollection"];
57
+ defaultProps.goTo = "/home";
58
+ defaultProps.isArray = false;
59
+ defaultProps.arrayLength = 10;
60
+ defaultProps.theme = "default";
61
+ defaultProps.value = {};
62
+ defaultProps.actionReplace = jest.fn();
63
+ defaultProps.actions = {
64
+ deleteModuleAction: jest.fn(),
65
+ moveModuleAction: jest.fn(),
66
+ duplicateModuleAction: jest.fn,
67
+ copyModuleAction: jest.fn(),
68
+ };
69
+ defaultProps.canDuplicate = true;
70
+ defaultProps.canReplace = true;
71
+ defaultProps.objKey = "component";
72
+ defaultProps.selectedContent = {
73
+ component: "Section",
74
+ name: "Main Content",
75
+ modules: [
76
+ {
77
+ component: "BasicContent",
78
+ title: {
79
+ content: "Title",
80
+ tag: "h1",
81
+ },
82
+ anchorID: null,
83
+ verticalSpacing: "medium",
84
+ layout: "L001",
85
+ theme: "default",
86
+ moduleOrder: null,
87
+ subtitle:
88
+ "Lorem ipsum dolor sit amet, consectetur adipiscsdcdscing elit. Morbi dignissim ut nibh eget porttitor. Nunc eleifend mollis arcu.sdcsdc",
89
+ content:
90
+ "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dignissim ut nibh eget porttitor. Nunc eleifend mollis arcu. Lorem ipsum d</p>",
91
+ primaryLink: {
92
+ component: "Link",
93
+ text: "Link 1",
94
+ style: "primary",
95
+ url: {
96
+ url: "",
97
+ linkTo: null,
98
+ newTab: false,
99
+ noFollow: false,
100
+ size: null,
101
+ icon: null,
102
+ linkContainer: null,
103
+ },
104
+ editorID: 5,
105
+ parentEditorID: 4,
106
+ },
107
+ secondaryLink: {
108
+ component: "Link",
109
+ editorID: 6,
110
+ parentEditorID: 4,
111
+ },
112
+ additionalContent: {
113
+ image: {
114
+ component: "LinkableImage",
115
+ editorID: 7,
116
+ parentEditorID: 4,
117
+ },
118
+ video: {
119
+ component: "Video",
120
+ editorID: 8,
121
+ parentEditorID: 4,
122
+ },
123
+ },
124
+ editorID: 4,
125
+ parentEditorID: 3,
126
+ },
127
+ ],
128
+ sectionPosition: 2,
129
+ editorID: 3,
130
+ parentEditorID: 1,
131
+ key: "mainContent",
132
+ };
133
+ render(
134
+ <ThemeProvider theme={parseTheme(globalTheme)}>
135
+ <ComponentContainer {...defaultProps} />
136
+ </ThemeProvider>
137
+ );
138
+ expect(screen.getAllByTestId("field-multiple-options")).toBeTruthy();
139
+ });
140
+ test("should render the EmptyContainer with title", () => {
141
+ defaultProps.title = "a title";
142
+ defaultProps.whiteList = ["BasicContent", "CardCollection"];
143
+ defaultProps.goTo = "/home";
144
+ defaultProps.isArray = false;
145
+ defaultProps.arrayLength = 10;
146
+ defaultProps.theme = "default";
147
+ defaultProps.value = {};
148
+ defaultProps.actionReplace = jest.fn();
149
+ defaultProps.actions = {
150
+ deleteModuleAction: jest.fn(),
151
+ moveModuleAction: jest.fn(),
152
+ duplicateModuleAction: jest.fn,
153
+ copyModuleAction: jest.fn(),
154
+ };
155
+ defaultProps.canDuplicate = true;
156
+ defaultProps.canReplace = true;
157
+ defaultProps.objKey = "component";
158
+ render(
159
+ <ThemeProvider theme={parseTheme(globalTheme)}>
160
+ <Draggable draggableId="1" index={1} key={1}>
161
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
162
+ </Draggable>
163
+ </ThemeProvider>
164
+ );
165
+ expect(screen.getAllByTestId("field-multiple-options")).toBeTruthy();
166
+ });
167
+ test("should render the icon with the container text", () => {
168
+ defaultProps.text = "texto a mostrar";
169
+ defaultProps.editorID = 1;
170
+ defaultProps.whiteList = ["BasicContent", "CardCollection"];
171
+ defaultProps.goTo = "/home";
172
+ defaultProps.isArray = false;
173
+ defaultProps.disabled = false;
174
+ defaultProps.arrayLength = 10;
175
+ defaultProps.theme = "default";
176
+ defaultProps.value = {
177
+ component: "Link",
178
+ text: "Link 1",
179
+ style: "primary",
180
+ url: {
181
+ url: "",
182
+ linkTo: null,
183
+ newTab: false,
184
+ noFollow: false,
185
+ size: null,
186
+ icon: null,
187
+ linkContainer: null,
188
+ },
189
+ editorID: 5,
190
+ parentEditorID: 4,
191
+ };
192
+ defaultProps.actions = {
193
+ deleteModuleAction: jest.fn(),
194
+ };
195
+ defaultProps.parentKey = "title";
196
+ defaultProps.objKey = "content";
197
+ defaultProps.selectedContent = {
198
+ component: "BasicContent",
199
+ title: {
200
+ content: "Title",
201
+ tag: "h1",
202
+ },
203
+ anchorID: null,
204
+ verticalSpacing: "medium",
205
+ layout: "L001",
206
+ theme: "default",
207
+ moduleOrder: null,
208
+ subtitle:
209
+ "Lorem ipsum dolor sit amet, consectetur adipiscsdcdscing elit. Morbi dignissim ut nibh eget porttitor. Nunc eleifend mollis arcu.sdcsdc",
210
+ content:
211
+ "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dignissim ut nibh eget porttitor. Nunc eleifend mollis arcu. Lorem ipsum d</p>",
212
+ primaryLink: {
213
+ component: "Link",
214
+ text: "Link 1",
215
+ style: "primary",
216
+ url: {
217
+ url: "",
218
+ linkTo: null,
219
+ newTab: false,
220
+ noFollow: false,
221
+ size: null,
222
+ icon: null,
223
+ linkContainer: null,
224
+ },
225
+ editorID: 5,
226
+ parentEditorID: 4,
227
+ },
228
+ secondaryLink: {
229
+ component: "Link",
230
+ editorID: 6,
231
+ parentEditorID: 4,
232
+ },
233
+ additionalContent: {
234
+ image: {
235
+ component: "LinkableImage",
236
+ editorID: 7,
237
+ parentEditorID: 4,
238
+ },
239
+ video: {
240
+ component: "Video",
241
+ editorID: 8,
242
+ parentEditorID: 4,
243
+ },
244
+ },
245
+ editorID: 4,
246
+ parentEditorID: 3,
247
+ };
248
+ render(
249
+ <ThemeProvider theme={parseTheme(globalTheme)}>
250
+ <Draggable draggableId="1" index={1} key={1}>
251
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
252
+ </Draggable>
253
+ </ThemeProvider>
254
+ );
255
+ expect(screen.getByTestId("icon-wrapper")).toBeTruthy();
256
+ expect(screen.findByText("texto a mostrar")).toBeTruthy();
257
+ });
258
+
259
+ test("should render the title", () => {
260
+ defaultProps.text = "texto a mostrar";
261
+ defaultProps.moduleTitle = "module title";
262
+ defaultProps.editorID = 1;
263
+ defaultProps.whiteList = [];
264
+ defaultProps.goTo = "/home";
265
+ defaultProps.isArray = false;
266
+ defaultProps.disabled = false;
267
+ defaultProps.arrayLength = 10;
268
+ defaultProps.theme = "default";
269
+ defaultProps.value = {
270
+ component: "Link",
271
+ text: "Link 1",
272
+ style: "primary",
273
+ url: {
274
+ url: "",
275
+ linkTo: null,
276
+ newTab: false,
277
+ noFollow: false,
278
+ size: null,
279
+ icon: null,
280
+ linkContainer: null,
281
+ },
282
+ editorID: 5,
283
+ parentEditorID: 4,
284
+ };
285
+
286
+ render(
287
+ <ThemeProvider theme={parseTheme(globalTheme)}>
288
+ <Draggable draggableId="1" index={1} key={1}>
289
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
290
+ </Draggable>
291
+ </ThemeProvider>
292
+ );
293
+ expect(screen.findByText("module title")).toBeTruthy();
294
+ });
295
+
296
+ test("should render the SideModal when click EmptyContainer", () => {
297
+ defaultProps.title = "a title";
298
+ defaultProps.whiteList = ["LinkImage", "Video"];
299
+ defaultProps.goTo = "/home";
300
+ defaultProps.isArray = false;
301
+ defaultProps.arrayLength = 2;
302
+ defaultProps.theme = "griddo-alt-theme";
303
+ defaultProps.editorID = 1;
304
+ defaultProps.value = {
305
+ image: { component: "LinkableImage", editorID: 2, parentEditorID: 1 },
306
+ video: { component: "Video", editorID: 3, parentEditorID: 1 },
307
+ };
308
+ defaultProps.actionReplace = jest.fn();
309
+ defaultProps.actions = {
310
+ deleteModuleAction: jest.fn(),
311
+ moveModuleAction: jest.fn(),
312
+ duplicateModuleAction: jest.fn,
313
+ copyModuleAction: jest.fn(),
314
+ };
315
+ defaultProps.canDuplicate = true;
316
+ defaultProps.canReplace = true;
317
+ defaultProps.objKey = "component";
318
+
319
+ render(
320
+ <ThemeProvider theme={parseTheme(globalTheme)}>
321
+ <Draggable draggableId="1" index={1} key={1}>
322
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
323
+ </Draggable>
324
+ </ThemeProvider>
325
+ );
326
+
327
+ const multipleOptionsField = screen.getByTestId("field-multiple-options");
328
+ expect(multipleOptionsField).toBeTruthy();
329
+ fireEvent.click(multipleOptionsField);
330
+ const sideModal = screen.getByTestId("side-modal");
331
+ expect(sideModal).toBeTruthy();
332
+ });
333
+
334
+ test("should render component options on SideModal", () => {
335
+ defaultProps.title = "a title";
336
+ defaultProps.whiteList = ["LinkImage", "Video"];
337
+ defaultProps.goTo = "/home";
338
+ defaultProps.isArray = false;
339
+ defaultProps.arrayLength = 2;
340
+ defaultProps.theme = "griddo-alt-theme";
341
+ defaultProps.editorID = 1;
342
+ defaultProps.value = {
343
+ image: { component: "LinkableImage", editorID: 2, parentEditorID: 1 },
344
+ video: { component: "Video", editorID: 3, parentEditorID: 1 },
345
+ };
346
+ defaultProps.actionReplace = jest.fn();
347
+ defaultProps.actions = {
348
+ deleteModuleAction: jest.fn(),
349
+ moveModuleAction: jest.fn(),
350
+ duplicateModuleAction: jest.fn,
351
+ copyModuleAction: jest.fn(),
352
+ };
353
+ defaultProps.canDuplicate = true;
354
+ defaultProps.canReplace = true;
355
+ defaultProps.objKey = "component";
356
+
357
+ render(
358
+ <ThemeProvider theme={parseTheme(globalTheme)}>
359
+ <Draggable draggableId="1" index={1} key={1}>
360
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
361
+ </Draggable>
362
+ </ThemeProvider>
363
+ );
364
+
365
+ const multipleOptionsField = screen.getByTestId("field-multiple-options");
366
+ expect(multipleOptionsField).toBeTruthy();
367
+ fireEvent.click(multipleOptionsField);
368
+ const sideModal = screen.getByTestId("side-modal");
369
+ expect(sideModal).toBeTruthy();
370
+ const options = screen.getAllByTestId("side-modal-option");
371
+ expect(options.length).toEqual(2);
372
+ });
373
+ });
374
+
375
+ test("should render the FloatingMenu with options when click Component Container", async () => {
376
+ defaultProps.title = "a title";
377
+ defaultProps.whiteList = ["LinkImage", "Video"];
378
+ defaultProps.goTo = "/home";
379
+ defaultProps.isArray = false;
380
+ defaultProps.arrayLength = 2;
381
+ defaultProps.theme = "griddo-alt-theme";
382
+ defaultProps.editorID = 1;
383
+ defaultProps.value = {
384
+ image: { component: "LinkableImage", editorID: 2, parentEditorID: 1 },
385
+ video: {
386
+ component: "Video",
387
+ editorID: 3,
388
+ parentEditorID: 1,
389
+ thumbnail: { component: "Image", editorID: 4, parentEditorID: 3 },
390
+ url: "",
391
+ },
392
+ };
393
+ defaultProps.actionReplace = jest.fn();
394
+ defaultProps.actions = {
395
+ deleteModuleAction: jest.fn(),
396
+ moveModuleAction: jest.fn(),
397
+ duplicateModuleAction: jest.fn,
398
+ copyModuleAction: jest.fn(),
399
+ };
400
+ defaultProps.canDuplicate = true;
401
+ defaultProps.canReplace = true;
402
+ defaultProps.objKey = "component";
403
+
404
+ render(
405
+ <ThemeProvider theme={parseTheme(globalTheme)}>
406
+ <Draggable draggableId="1" index={1} key={1}>
407
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
408
+ </Draggable>
409
+ </ThemeProvider>
410
+ );
411
+
412
+ const component = screen.getByTestId("component-container");
413
+ fireEvent.mouseOver(component);
414
+ const floatingMenu = screen.getByTestId("floating-menu-button");
415
+ expect(floatingMenu).toBeTruthy();
416
+ fireEvent.click(floatingMenu);
417
+ const actionMenu = screen.getByTestId("action-menu-item");
418
+ expect(actionMenu).toBeTruthy();
419
+ const actionMenuItems = screen.getAllByTestId("action-menu-item");
420
+ expect(actionMenuItems.length).toEqual(1);
421
+ });
422
+
423
+ test("should render the SideModal with options when click the replace action", async () => {
424
+ defaultProps.title = "a title";
425
+ defaultProps.whiteList = ["LinkImage", "Video"];
426
+ defaultProps.goTo = "/home";
427
+ defaultProps.isArray = false;
428
+ defaultProps.arrayLength = 2;
429
+ defaultProps.theme = "griddo-alt-theme";
430
+ defaultProps.editorID = 1;
431
+ defaultProps.value = {
432
+ image: { component: "LinkableImage", editorID: 2, parentEditorID: 1 },
433
+ video: {
434
+ component: "Video",
435
+ editorID: 3,
436
+ parentEditorID: 1,
437
+ thumbnail: { component: "Image", editorID: 4, parentEditorID: 3 },
438
+ url: "",
439
+ },
440
+ };
441
+ defaultProps.actionReplace = jest.fn();
442
+ defaultProps.actions = {
443
+ deleteModuleAction: jest.fn(),
444
+ moveModuleAction: jest.fn(),
445
+ duplicateModuleAction: jest.fn,
446
+ copyModuleAction: jest.fn(),
447
+ };
448
+ defaultProps.canDuplicate = true;
449
+ defaultProps.canReplace = true;
450
+ defaultProps.objKey = "component";
451
+
452
+ render(
453
+ <ThemeProvider theme={parseTheme(globalTheme)}>
454
+ <Draggable draggableId="1" index={1} key={1}>
455
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
456
+ </Draggable>
457
+ </ThemeProvider>
458
+ );
459
+
460
+ const component = screen.getByTestId("component-container");
461
+ fireEvent.mouseOver(component);
462
+
463
+ const floatingMenu = screen.getByTestId("floating-menu-button");
464
+ expect(floatingMenu).toBeTruthy();
465
+
466
+ fireEvent.click(floatingMenu);
467
+ const actionMenu = screen.getByTestId("action-menu-item");
468
+ expect(actionMenu).toBeTruthy();
469
+
470
+ const actionMenuItem = screen.getByTestId("action-menu-item");
471
+ fireEvent.click(actionMenuItem);
472
+ const sideModal = screen.getByTestId("side-modal");
473
+ expect(sideModal).toBeTruthy();
474
+
475
+ const options = screen.getAllByTestId("side-modal-option");
476
+ expect(options.length).toEqual(2);
477
+ });
478
+
479
+ test("should not render the drag handle if arrays length is lower than two", async () => {
480
+ defaultProps.title = "a title";
481
+ defaultProps.whiteList = ["LinkImage", "Video"];
482
+ defaultProps.goTo = "/home";
483
+ defaultProps.isArray = false;
484
+ defaultProps.arrayLength = 1;
485
+ defaultProps.theme = "griddo-alt-theme";
486
+ defaultProps.editorID = 1;
487
+ defaultProps.value = {
488
+ image: { component: "LinkableImage", editorID: 2, parentEditorID: 1 },
489
+ video: {
490
+ component: "Video",
491
+ editorID: 3,
492
+ parentEditorID: 1,
493
+ thumbnail: { component: "Image", editorID: 4, parentEditorID: 3 },
494
+ url: "",
495
+ },
496
+ };
497
+ defaultProps.actionReplace = jest.fn();
498
+ defaultProps.actions = {
499
+ deleteModuleAction: jest.fn(),
500
+ moveModuleAction: jest.fn(),
501
+ duplicateModuleAction: jest.fn,
502
+ copyModuleAction: jest.fn(),
503
+ };
504
+ defaultProps.canDuplicate = true;
505
+ defaultProps.canReplace = true;
506
+ defaultProps.objKey = "component";
507
+
508
+ render(
509
+ <ThemeProvider theme={parseTheme(globalTheme)}>
510
+ <Draggable draggableId="1" index={1} key={1}>
511
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
512
+ </Draggable>
513
+ </ThemeProvider>
514
+ );
515
+
516
+ const handleWrapper = screen.queryByTestId("handle-wrapper");
517
+ expect(handleWrapper).toBeFalsy();
518
+ });
519
+
520
+ test("should render the drag handle if arrays length is greater than two", async () => {
521
+ defaultProps.title = "a title";
522
+ defaultProps.whiteList = ["LinkImage", "Video"];
523
+ defaultProps.goTo = "/home";
524
+ defaultProps.isArray = true;
525
+ defaultProps.arrayLength = 3;
526
+ defaultProps.theme = "griddo-alt-theme";
527
+ defaultProps.editorID = 1;
528
+ defaultProps.value = {
529
+ image: { component: "LinkableImage", editorID: 2, parentEditorID: 1 },
530
+ video: {
531
+ component: "Video",
532
+ editorID: 3,
533
+ parentEditorID: 1,
534
+ thumbnail: { component: "Image", editorID: 4, parentEditorID: 3 },
535
+ url: "",
536
+ },
537
+ };
538
+ defaultProps.actionReplace = jest.fn();
539
+ defaultProps.actions = {
540
+ deleteModuleAction: jest.fn(),
541
+ moveModuleAction: jest.fn(),
542
+ duplicateModuleAction: jest.fn,
543
+ copyModuleAction: jest.fn(),
544
+ };
545
+ defaultProps.canDuplicate = true;
546
+ defaultProps.canReplace = true;
547
+ defaultProps.objKey = "component";
548
+
549
+ render(
550
+ <ThemeProvider theme={parseTheme(globalTheme)}>
551
+ <Draggable draggableId="1" index={1} key={1}>
552
+ {(provided: DraggableProvided) => <ComponentContainer {...defaultProps} provided={provided} />}
553
+ </Draggable>
554
+ </ThemeProvider>
555
+ );
556
+
557
+ const handleWrapper = screen.getByTestId("handle-wrapper");
558
+ expect(handleWrapper).toBeTruthy();
559
+ });
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import ConditionalField from "@ax/components/Fields/ConditionalField";
3
3
  import { ThemeProvider } from "styled-components";
4
- import { parseTheme } from "@griddo/core";
4
+ import { parseTheme } from "@ax/helpers";
5
5
  import globalTheme from "@ax/themes/theme.json";
6
6
  import { mock } from "jest-mock-extended";
7
7
  import { render, screen, cleanup } from "@testing-library/react";
@@ -5,7 +5,7 @@ import { mock } from "jest-mock-extended";
5
5
  import { render, screen, cleanup } from "@testing-library/react";
6
6
 
7
7
  import DateField, { IDateFieldProps } from "@ax/components/Fields/DateField";
8
- import { parseTheme } from "@griddo/core";
8
+ import { parseTheme } from "@ax/helpers";
9
9
  import globalTheme from "@ax/themes/theme.json";
10
10
 
11
11
  afterEach(cleanup);
@@ -3,7 +3,7 @@ import "@testing-library/jest-dom";
3
3
  import { ThemeProvider } from "styled-components";
4
4
  import { render, screen, cleanup, fireEvent } from "@testing-library/react";
5
5
 
6
- import { parseTheme } from "@griddo/core";
6
+ import { parseTheme } from "@ax/helpers";
7
7
  import globalTheme from "@ax/themes/theme.json";
8
8
 
9
9
  import FieldGroup from "@ax/components/Fields/FieldGroup";
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import FieldsDivider from "@ax/components/Fields/FieldsDivider";
3
3
  import { ThemeProvider } from "styled-components";
4
- import { parseTheme } from "@griddo/core";
4
+ import { parseTheme } from "@ax/helpers";
5
5
  import globalTheme from "@ax/themes/theme.json";
6
6
  import { render, screen, cleanup } from "@testing-library/react";
7
7
 
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { ThemeProvider } from "styled-components";
3
- import { parseTheme } from "@griddo/core";
3
+ import { parseTheme } from "@ax/helpers";
4
4
  import globalTheme from "@ax/themes/theme.json";
5
5
  import { mock } from "jest-mock-extended";
6
6
  import { render, screen, cleanup } from "@testing-library/react";
@@ -94,7 +94,7 @@ describe("onClick events", () => {
94
94
 
95
95
  const spyWindowOpen = jest.spyOn(window, "open");
96
96
 
97
- const urlButton = screen.getAllByTestId("iconActionComponent");
97
+ const urlButton = screen.getAllByTestId("icon-action-component");
98
98
  act(() => urlButton[0].click());
99
99
 
100
100
  expect(spyWindowOpen).toBeCalled();
@@ -121,7 +121,7 @@ describe("onClick events", () => {
121
121
 
122
122
  const { rerender } = render(Component);
123
123
 
124
- const floatingMenu = screen.getAllByTestId("iconActionComponent");
124
+ const floatingMenu = screen.getAllByTestId("icon-action-component");
125
125
 
126
126
  act(() => floatingMenu[1].click());
127
127
 
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import HeadingField from "@ax/components/Fields/HeadingField";
3
3
  import { ThemeProvider } from "styled-components";
4
- import { parseTheme } from "@griddo/core";
4
+ import { parseTheme } from "@ax/helpers";
5
5
  import globalTheme from "@ax/themes/theme.json";
6
6
  import { render, screen, cleanup } from "@testing-library/react";
7
7
 
@@ -31,7 +31,7 @@ describe("HeadingField component rendering", () => {
31
31
  </ThemeProvider>
32
32
  );
33
33
 
34
- const textFieldContainer = screen.getByTestId("textFieldContainer");
34
+ const textFieldContainer = screen.getByTestId("text-field-container");
35
35
 
36
36
  expect(textFieldContainer).toBeTruthy();
37
37
  });
@@ -58,10 +58,10 @@ describe("HeadingField component rendering", () => {
58
58
  </ThemeProvider>
59
59
  );
60
60
 
61
- const textFieldContainer = screen.getByTestId("textFieldContainer");
62
- const textFieldAdvancedWrapper = screen.getByTestId("textFieldAdvancedWrapper");
63
- const contentWrapper = screen.getByTestId("contentWrapper");
64
- const selectComponent = screen.getByTestId("selectComponent");
61
+ const textFieldContainer = screen.getByTestId("text-field-container");
62
+ const textFieldAdvancedWrapper = screen.getByTestId("text-field-advanced-wrapper");
63
+ const contentWrapper = screen.getByTestId("fields-behavior-wrapper");
64
+ const selectComponent = screen.getByTestId("select-component");
65
65
 
66
66
  expect(textFieldContainer).toBeTruthy();
67
67
  expect(textFieldAdvancedWrapper).toBeTruthy();
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import HiddenField from "@ax/components/Fields/HiddenField";
2
+ import HiddenField, { IHiddenFieldProps } from "@ax/components/Fields/HiddenField";
3
3
  import { ThemeProvider } from "styled-components";
4
- import { parseTheme } from "@griddo/core";
4
+ import { parseTheme } from "@ax/helpers";
5
5
  import globalTheme from "@ax/themes/theme.json";
6
6
  import { mock } from "jest-mock-extended";
7
7
  import { render, screen, cleanup, fireEvent } from "@testing-library/react";
@@ -68,9 +68,3 @@ describe("onClick events", () => {
68
68
  expect(showField).toHaveBeenCalledTimes(1);
69
69
  });
70
70
  });
71
-
72
- interface IHiddenFieldProps {
73
- title: string;
74
- showField: any;
75
- hasMultipleOptions?: boolean;
76
- }