@griddo/ax 1.69.9 → 1.72.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 (165) 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/SubNav/SubNav.test.tsx +37 -0
  53. package/src/__tests__/components/TableCounter/TableCounter.test.tsx +51 -0
  54. package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +241 -0
  55. package/src/__tests__/components/TableFilters/CustomizeFilters/CustomizeFilters.test.tsx +131 -0
  56. package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +148 -0
  57. package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +266 -0
  58. package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +196 -0
  59. package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +318 -0
  60. package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +195 -0
  61. package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +157 -0
  62. package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +165 -0
  63. package/src/__tests__/components/TableList/TableList.test.tsx +119 -0
  64. package/src/__tests__/components/Tabs/Tabs.test.tsx +205 -0
  65. package/src/__tests__/components/Tag/Tag.test.tsx +140 -0
  66. package/src/__tests__/components/Toast/Toast.test.tsx +102 -0
  67. package/src/api/navigation.tsx +1 -1
  68. package/src/components/Browser/index.tsx +1 -1
  69. package/src/components/Button/index.tsx +3 -3
  70. package/src/components/ConfigPanel/NavigationForm/Field/index.tsx +14 -3
  71. package/src/components/ElementsTooltip/index.tsx +10 -9
  72. package/src/components/EmptyState/index.tsx +2 -2
  73. package/src/components/FieldContainer/index.tsx +3 -3
  74. package/src/components/Fields/ArrayFieldGroup/index.tsx +1 -1
  75. package/src/components/Fields/AsyncCheckGroup/index.tsx +1 -1
  76. package/src/components/Fields/AsyncSelect/index.tsx +1 -1
  77. package/src/components/Fields/CheckField/index.tsx +3 -3
  78. package/src/components/Fields/CheckGroup/index.tsx +2 -2
  79. package/src/components/Fields/ComponentContainer/index.tsx +7 -6
  80. package/src/components/Fields/ComponentContainer/style.tsx +2 -2
  81. package/src/components/Fields/HeadingField/index.tsx +1 -1
  82. package/src/components/Fields/HiddenField/index.tsx +1 -1
  83. package/src/components/Fields/ImageField/index.tsx +10 -5
  84. package/src/components/Fields/MultiCheckSelect/index.tsx +3 -3
  85. package/src/components/Fields/NumberField/index.tsx +2 -1
  86. package/src/components/Fields/ReferenceField/ItemList/Item/index.tsx +5 -7
  87. package/src/components/Fields/ReferenceField/ItemList/Item/style.tsx +2 -2
  88. package/src/components/Fields/ReferenceField/ItemList/index.tsx +1 -1
  89. package/src/components/Fields/RichText/index.tsx +10 -6
  90. package/src/components/Fields/Select/index.tsx +2 -2
  91. package/src/components/Fields/SliderField/index.tsx +1 -1
  92. package/src/components/Fields/TextField/index.tsx +2 -7
  93. package/src/components/Fields/TimeField/HourInput/index.tsx +103 -0
  94. package/src/components/Fields/TimeField/HourInput/style.tsx +19 -0
  95. package/src/components/Fields/TimeField/HourInput/utils.tsx +35 -0
  96. package/src/components/Fields/TimeField/index.tsx +57 -0
  97. package/src/components/Fields/TimeField/style.tsx +37 -0
  98. package/src/components/Fields/index.tsx +2 -0
  99. package/src/components/FieldsBehavior/index.tsx +1 -1
  100. package/src/components/FloatingMenu/index.tsx +2 -2
  101. package/src/components/Gallery/GalleryFilters/Type/index.tsx +50 -0
  102. package/src/components/Gallery/GalleryFilters/Type/style.tsx +39 -0
  103. package/src/components/Gallery/GalleryPanel/DetailPanel/index.tsx +2 -1
  104. package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/style.tsx +3 -3
  105. package/src/components/Gallery/hooks.tsx +10 -4
  106. package/src/components/Gallery/index.tsx +2 -0
  107. package/src/components/Icon/index.tsx +1 -1
  108. package/src/components/IconAction/index.tsx +1 -1
  109. package/src/components/Lists/index.tsx +1 -1
  110. package/src/components/Loading/index.tsx +1 -1
  111. package/src/components/Pagination/index.tsx +1 -1
  112. package/src/components/SideModal/SideModalOption/index.tsx +4 -2
  113. package/src/components/SideModal/index.tsx +1 -1
  114. package/src/components/SubNav/index.tsx +3 -3
  115. package/src/components/SubNav/style.tsx +1 -3
  116. package/src/components/TableCounter/index.tsx +7 -2
  117. package/src/components/TableFilters/CategoryFilter/index.tsx +2 -2
  118. package/src/components/TableFilters/CategoryFilter/style.tsx +1 -10
  119. package/src/components/TableFilters/CustomizeFilters/index.tsx +2 -3
  120. package/src/components/TableFilters/DateFilter/index.tsx +4 -4
  121. package/src/components/TableFilters/LiveFilter/index.tsx +1 -1
  122. package/src/components/TableFilters/LiveFilter/style.tsx +2 -10
  123. package/src/components/TableFilters/NameFilter/index.tsx +4 -4
  124. package/src/components/TableFilters/SiteFilter/index.tsx +16 -13
  125. package/src/components/TableFilters/SiteFilter/style.tsx +1 -10
  126. package/src/components/TableFilters/StatusFilter/index.tsx +3 -3
  127. package/src/components/TableFilters/TranslationsFilter/index.tsx +4 -7
  128. package/src/components/TableFilters/TranslationsFilter/style.tsx +1 -10
  129. package/src/components/TableFilters/TypeFilter/index.tsx +2 -2
  130. package/src/components/TableFilters/TypeFilter/style.tsx +1 -10
  131. package/src/components/TableList/index.tsx +6 -6
  132. package/src/components/TableList/style.tsx +1 -1
  133. package/src/components/Tabs/index.tsx +19 -7
  134. package/src/components/Tag/index.tsx +6 -6
  135. package/src/components/Toast/index.tsx +4 -4
  136. package/src/components/Tooltip/index.tsx +5 -3
  137. package/src/components/index.tsx +2 -0
  138. package/src/containers/Navigation/Defaults/actions.tsx +10 -5
  139. package/src/containers/Navigation/Defaults/utils.tsx +13 -4
  140. package/src/containers/Sites/actions.tsx +7 -0
  141. package/src/containers/Sites/constants.tsx +1 -0
  142. package/src/containers/Sites/interfaces.tsx +6 -0
  143. package/src/containers/Sites/reducer.tsx +4 -0
  144. package/src/containers/StructuredData/actions.tsx +21 -8
  145. package/src/containers/StructuredData/constants.tsx +2 -0
  146. package/src/containers/StructuredData/interfaces.tsx +7 -1
  147. package/src/containers/StructuredData/reducer.tsx +5 -1
  148. package/src/helpers/fields.tsx +2 -2
  149. package/src/helpers/index.tsx +3 -0
  150. package/src/helpers/parseTheme.js +456 -0
  151. package/src/helpers/schemas.tsx +2 -2
  152. package/src/hooks/forms.tsx +2 -1
  153. package/src/modules/App/Routing/NavMenu/index.tsx +9 -1
  154. package/src/modules/Content/BulkHeader/TableHeader/index.tsx +1 -1
  155. package/src/modules/Content/hooks.tsx +19 -12
  156. package/src/modules/Content/index.tsx +23 -14
  157. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/DefaultsBrowser/index.tsx +3 -0
  158. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/index.tsx +3 -1
  159. package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +16 -18
  160. package/src/modules/Navigation/Defaults/DefaultsEditor/utils.tsx +37 -0
  161. package/src/modules/StructuredData/Form/ConnectedField/index.tsx +3 -2
  162. package/src/modules/StructuredData/Form/index.tsx +22 -17
  163. package/src/modules/StructuredData/StructuredDataList/hooks.tsx +30 -20
  164. package/src/modules/StructuredData/StructuredDataList/index.tsx +24 -14
  165. package/src/types/index.tsx +8 -7
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import axios from "axios";
3
3
  import "@testing-library/jest-dom";
4
4
  import { ThemeProvider } from "styled-components";
5
- import { parseTheme } from "@griddo/core";
5
+ import { parseTheme } from "@ax/helpers";
6
6
  import { mock } from "jest-mock-extended";
7
7
  import configureStore from "redux-mock-store";
8
8
 
@@ -216,7 +216,7 @@ describe("onChange events", () => {
216
216
 
217
217
  const { rerender } = render(Component, { store });
218
218
 
219
- let iconActionComponents = screen.getAllByTestId("iconActionComponent");
219
+ let iconActionComponents = screen.getAllByTestId("icon-action-component");
220
220
 
221
221
  await act(async () => {
222
222
  fireEvent.click(iconActionComponents[0]);
@@ -226,7 +226,7 @@ describe("onChange events", () => {
226
226
  rerender(Component);
227
227
  });
228
228
 
229
- iconActionComponents = screen.getAllByTestId("iconActionComponent");
229
+ iconActionComponents = screen.getAllByTestId("icon-action-component");
230
230
 
231
231
  await act(async () => {
232
232
  fireEvent.click(iconActionComponents[2]);
@@ -249,7 +249,7 @@ describe("onChange events", () => {
249
249
  await act(async () => {
250
250
  fireEvent.click(radioFieldInputs[5]);
251
251
 
252
- const buttonDefault = screen.getByTestId("buttonDefault");
252
+ const buttonDefault = screen.getByTestId("button-default");
253
253
  fireEvent.click(buttonDefault);
254
254
  });
255
255
 
@@ -282,7 +282,7 @@ describe("onChange events", () => {
282
282
  let referenceFieldItems = screen.getAllByTestId("reference-field-item");
283
283
  expect(referenceFieldItems.length).toBe(2);
284
284
 
285
- const iconActionComponents = screen.getAllByTestId("iconActionComponent");
285
+ const iconActionComponents = screen.getAllByTestId("icon-action-component");
286
286
 
287
287
  await act(async () => {
288
288
  fireEvent.click(iconActionComponents[0]);
@@ -297,7 +297,7 @@ describe("onChange events", () => {
297
297
 
298
298
  await act(async () => {
299
299
  fireEvent.click(manualPanelItem[4]);
300
- fireEvent.click(screen.getByTestId("buttonDefault"));
300
+ fireEvent.click(screen.getByTestId("button-default"));
301
301
  });
302
302
 
303
303
  await act(async () => {
@@ -335,7 +335,7 @@ describe("onChange events", () => {
335
335
  let referenceFieldItems = screen.getAllByTestId("reference-field-item");
336
336
  expect(referenceFieldItems.length).toBe(2);
337
337
 
338
- const iconActionComponents = screen.getAllByTestId("iconActionComponent");
338
+ const iconActionComponents = screen.getAllByTestId("icon-action-component");
339
339
 
340
340
  await act(async () => {
341
341
  fireEvent.click(iconActionComponents[0]);
@@ -351,7 +351,7 @@ describe("onChange events", () => {
351
351
  await act(async () => {
352
352
  fireEvent.click(manualPanelItem[0]);
353
353
  fireEvent.click(manualPanelItem[6]);
354
- fireEvent.click(screen.getByTestId("buttonDefault"));
354
+ fireEvent.click(screen.getByTestId("button-default"));
355
355
  });
356
356
 
357
357
  await act(async () => {
@@ -403,7 +403,7 @@ describe("onChange events", () => {
403
403
 
404
404
  const { rerender } = render(Component, { store });
405
405
 
406
- const iconActionComponents = screen.getAllByTestId("iconActionComponent");
406
+ const iconActionComponents = screen.getAllByTestId("icon-action-component");
407
407
 
408
408
  await act(async () => {
409
409
  fireEvent.click(iconActionComponents[0]);
@@ -413,7 +413,7 @@ describe("onChange events", () => {
413
413
  rerender(Component);
414
414
  });
415
415
 
416
- let tagComponent = screen.getAllByTestId("tagComponent");
416
+ let tagComponent = screen.getAllByTestId("delete-icon-wrapper");
417
417
 
418
418
  expect(tagComponent.length).toBe(2);
419
419
 
@@ -425,7 +425,7 @@ describe("onChange events", () => {
425
425
  rerender(Component);
426
426
  });
427
427
 
428
- tagComponent = screen.getAllByTestId("tagComponent");
428
+ tagComponent = screen.getAllByTestId("delete-icon-wrapper");
429
429
 
430
430
  expect(tagComponent.length).toBe(1);
431
431
  });
@@ -453,38 +453,188 @@ describe("onChange events", () => {
453
453
  rerender(Component);
454
454
  });
455
455
 
456
- let iconActionComponents = screen.getAllByTestId("iconActionComponent");
456
+ const referenceFieldItems = screen.getAllByTestId("reference-field-item");
457
+ expect(referenceFieldItems[0]).toHaveTextContent("Article 02");
458
+
459
+ const droppable = screen.getByTestId("droppable");
460
+ expect(droppable).toBeTruthy();
461
+
462
+ fireEvent.dragStart(referenceFieldItems[0]);
463
+ fireEvent.dragEnter(droppable);
464
+ fireEvent.dragOver(droppable);
465
+ fireEvent.drop(droppable);
466
+ });
467
+
468
+ test("should render the drag handle if list length is greater than two", async () => {
469
+ defaultProps.source = ["ARTICLES"];
470
+ defaultProps.value = {
471
+ mode: "manual",
472
+ fixed: [4492, 4493],
473
+ };
474
+ const initialState = { ...initialStore, ...defaultProps };
475
+ const onChange = jest.fn();
476
+
477
+ mockApiCalls();
478
+
479
+ const Component = (
480
+ <ThemeProvider theme={parseTheme(globalTheme)}>
481
+ <ReferenceField {...initialState} onChange={onChange} />
482
+ </ThemeProvider>
483
+ );
484
+
485
+ const { rerender } = render(Component, { store });
457
486
 
458
487
  await act(async () => {
459
- fireEvent.click(iconActionComponents[1]);
488
+ rerender(Component);
460
489
  });
461
490
 
491
+ const referenceFieldItems = screen.getAllByTestId("reference-field-item");
492
+ expect(referenceFieldItems.length).toBe(2);
493
+ const handleWrappers = screen.getAllByTestId("handle-wrapper");
494
+ expect(handleWrappers.length).toEqual(2);
495
+ });
496
+
497
+ test("should delete items", async () => {
498
+ defaultProps.source = ["ARTICLES"];
499
+ defaultProps.value = {
500
+ mode: "manual",
501
+ fixed: [4492, 4493],
502
+ };
503
+ const initialState = { ...initialStore, ...defaultProps };
504
+ const onChange = jest.fn();
505
+
506
+ mockApiCalls();
507
+
508
+ const Component = (
509
+ <ThemeProvider theme={parseTheme(globalTheme)}>
510
+ <ReferenceField {...initialState} onChange={onChange} />
511
+ </ThemeProvider>
512
+ );
513
+
514
+ const { rerender } = render(Component, { store });
515
+
462
516
  await act(async () => {
463
517
  rerender(Component);
464
518
  });
519
+ let referenceFieldItems = screen.getAllByTestId("reference-field-item");
520
+ expect(referenceFieldItems.length).toBe(2);
521
+
522
+ const iconActionComponents = screen.getAllByTestId("icon-action-component");
465
523
 
524
+ await act(async () => {
525
+ fireEvent.click(iconActionComponents[2]);
526
+ });
527
+
528
+ await act(async () => {
529
+ rerender(Component);
530
+ });
531
+
532
+ const actionMenuItem = screen.getByTestId("action-menu-item");
533
+ await act(async () => {
534
+ fireEvent.click(actionMenuItem);
535
+ });
536
+
537
+ // await act(async () => {
538
+ // rerender(Component);
539
+ // });
540
+
541
+ referenceFieldItems = screen.getAllByTestId("reference-field-item");
542
+ =======
543
+ const referenceFieldItems = screen.getAllByTestId("reference-field-item");
544
+ >>>>>>> release/1.72
545
+ expect(referenceFieldItems[0]).toHaveTextContent("Article 02");
546
+
547
+ const droppable = screen.getByTestId("droppable");
548
+ expect(droppable).toBeTruthy();
549
+
550
+ fireEvent.dragStart(referenceFieldItems[0]);
551
+ fireEvent.dragEnter(droppable);
552
+ fireEvent.dragOver(droppable);
553
+ fireEvent.drop(droppable);
554
+ });
555
+
556
+ test("should render the drag handle if list length is greater than two", async () => {
557
+ defaultProps.source = ["ARTICLES"];
558
+ defaultProps.value = {
559
+ mode: "manual",
560
+ fixed: [4492, 4493],
561
+ };
562
+ const initialState = { ...initialStore, ...defaultProps };
563
+ const onChange = jest.fn();
564
+
565
+ mockApiCalls();
566
+
567
+ const Component = (
568
+ <ThemeProvider theme={parseTheme(globalTheme)}>
569
+ <ReferenceField {...initialState} onChange={onChange} />
570
+ </ThemeProvider>
571
+ );
572
+
573
+ const { rerender } = render(Component, { store });
574
+
575
+ await act(async () => {
576
+ rerender(Component);
577
+ });
578
+
579
+ const referenceFieldItems = screen.getAllByTestId("reference-field-item");
580
+ expect(referenceFieldItems.length).toBe(2);
581
+ const handleWrappers = screen.getAllByTestId("handle-wrapper");
582
+ expect(handleWrappers.length).toEqual(2);
583
+ });
584
+
585
+ test("should hide the drag handle if list length is lower than two", async () => {
586
+ defaultProps.source = ["ARTICLES"];
587
+ defaultProps.value = {
588
+ mode: "manual",
589
+ fixed: [],
590
+ };
591
+ const initialState = { ...initialStore, ...defaultProps };
592
+ const onChange = jest.fn();
593
+
594
+ mockApiCalls();
595
+
596
+ const Component = (
597
+ <ThemeProvider theme={parseTheme(globalTheme)}>
598
+ <ReferenceField {...initialState} onChange={onChange} />
599
+ </ThemeProvider>
600
+ );
601
+
602
+ const { rerender } = render(Component, { store });
603
+
604
+ await act(async () => {
605
+ rerender(Component);
606
+ });
466
607
  let referenceFieldItems = screen.getAllByTestId("reference-field-item");
467
- expect(referenceFieldItems[0]).toHaveTextContent("Article 03");
608
+ expect(referenceFieldItems.length).toBe(2);
468
609
 
469
- iconActionComponents = screen.getAllByTestId("iconActionComponent");
610
+ const iconActionComponents = screen.getAllByTestId("icon-action-component");
470
611
 
471
612
  await act(async () => {
472
- fireEvent.click(iconActionComponents[3]);
613
+ fireEvent.click(iconActionComponents[2]);
473
614
  });
474
615
 
475
616
  await act(async () => {
476
617
  rerender(Component);
477
618
  });
478
619
 
620
+ const actionMenuItem = screen.getByTestId("action-menu-item");
621
+ await act(async () => {
622
+ fireEvent.click(actionMenuItem);
623
+ });
624
+
625
+ // await act(async () => {
626
+ // rerender(Component);
627
+ // });
628
+
479
629
  referenceFieldItems = screen.getAllByTestId("reference-field-item");
480
630
  expect(referenceFieldItems[0]).toHaveTextContent("Article 02");
481
631
  });*/
482
632
 
483
- test("should delete items", async () => {
633
+ test("should hide the drag handle if list length is lower than two", async () => {
484
634
  defaultProps.source = ["ARTICLES"];
485
635
  defaultProps.value = {
486
636
  mode: "manual",
487
- fixed: [4492, 4493],
637
+ fixed: [],
488
638
  };
489
639
  const initialState = { ...initialStore, ...defaultProps };
490
640
  const onChange = jest.fn();
@@ -506,7 +656,7 @@ describe("onChange events", () => {
506
656
  let referenceFieldItems = screen.getAllByTestId("reference-field-item");
507
657
  expect(referenceFieldItems.length).toBe(2);
508
658
 
509
- const iconActionComponents = screen.getAllByTestId("iconActionComponent");
659
+ const iconActionComponents = screen.getAllByTestId("icon-action-component");
510
660
 
511
661
  await act(async () => {
512
662
  fireEvent.click(iconActionComponents[2]);
@@ -528,5 +678,7 @@ describe("onChange events", () => {
528
678
 
529
679
  referenceFieldItems = screen.getAllByTestId("reference-field-item");
530
680
  expect(referenceFieldItems.length).toBe(1);
681
+ const handleWrappers = screen.getAllByTestId("handle-wrapper");
682
+ expect(handleWrappers[0].hidden).toBe(true);
531
683
  });
532
684
  });
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import RichText from "@ax/components/Fields/RichText";
2
+ import RichText, { IRichTextProps } from "@ax/components/Fields/RichText";
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";
@@ -39,14 +39,3 @@ describe("RichText component rendering", () => {
39
39
  expect(richTextContent).toBeTruthy();
40
40
  });
41
41
  });
42
-
43
- interface IRichTextProps {
44
- editorID: number;
45
- value: string;
46
- error?: boolean;
47
- placeholder?: string;
48
- disabled?: boolean;
49
- onChange: (value: string) => void;
50
- handleValidation?: (value: string) => void;
51
- html: boolean;
52
- }
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
- import Select from "@ax/components/Fields/Select";
2
+ import Select, { ISelectProps } from "@ax/components/Fields/Select";
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
  import { mock } from "jest-mock-extended";
@@ -24,7 +24,7 @@ describe("Select component rendering", () => {
24
24
  <Select {...defaultProps} />
25
25
  </ThemeProvider>
26
26
  );
27
- expect(screen.getByTestId("selectComponent")).toBeTruthy();
27
+ expect(screen.getByTestId("select-component")).toBeTruthy();
28
28
  });
29
29
 
30
30
  test("should render the component with value selected", () => {
@@ -53,23 +53,3 @@ describe("Select component rendering", () => {
53
53
  expect(errors.length).toBe(1);
54
54
  });
55
55
  });
56
-
57
- interface ISelectProps {
58
- name: string;
59
- value: string;
60
- options: IOptionProps[];
61
- error?: boolean;
62
- disabled?: boolean;
63
- defaultValue?: IOptionProps;
64
- placeholder?: string;
65
- isMulti?: boolean;
66
- type?: string;
67
- mandatory?: boolean;
68
- alignRight?: boolean;
69
- onChange: (value: string) => void;
70
- }
71
-
72
- interface IOptionProps {
73
- value: string;
74
- label: string;
75
- }
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
- import SliderField from "@ax/components/Fields/SliderField";
2
+ import SliderField, { ITextFieldProps } from "@ax/components/Fields/SliderField";
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, fireEvent } from "@testing-library/react";
7
7
  import { mock } from "jest-mock-extended";
@@ -67,16 +67,3 @@ describe("Select component events trigger", () => {
67
67
  expect(onChangeMock).toBeCalledWith(20);
68
68
  });
69
69
  });
70
-
71
- interface ITextFieldProps {
72
- title: string;
73
- value: number;
74
- defaultValue?: number;
75
- min: number;
76
- max: number;
77
- step: number;
78
- prefix?: string;
79
- suffix?: string;
80
- helptext?: string;
81
- onChange: (value: number) => void;
82
- }
@@ -1,7 +1,7 @@
1
- import * as React from "react";
1
+ import React from "react";
2
2
  import TagField from "@ax/components/Fields/TagField";
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, within, cleanup, fireEvent } from "@testing-library/react";
7
7
 
@@ -47,7 +47,7 @@ describe("TagField component", () => {
47
47
  const tagFieldInput = screen.getByTestId("tagFieldInput");
48
48
  expect(tagFieldInput).toBeTruthy();
49
49
 
50
- const tagRendered = within(tagFieldWrapper).getAllByTestId("tagComponent");
50
+ const tagRendered = within(tagFieldWrapper).getAllByTestId("delete-icon-wrapper");
51
51
  expect(tagRendered).toHaveLength(2);
52
52
 
53
53
  const tagComponent = screen.getByTestId("tagFieldWrapper");
@@ -116,7 +116,7 @@ describe("TagField events", () => {
116
116
  );
117
117
 
118
118
  const tagFieldWrapper = screen.getByTestId("tagFieldWrapper");
119
- const tagRendered = within(tagFieldWrapper).getAllByTestId("tagComponent");
119
+ const tagRendered = within(tagFieldWrapper).getAllByTestId("delete-icon-wrapper");
120
120
  expect(tagRendered).toHaveLength(2);
121
121
  fireEvent.click(tagRendered[0], 0);
122
122
  expect(onChange).toBeCalledTimes(1);
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import TextArea from "@ax/components/Fields/TextArea";
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, fireEvent } from "@testing-library/react";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import TextField from "@ax/components/Fields/TextField";
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, within, cleanup, fireEvent } from "@testing-library/react";
7
7
 
@@ -20,7 +20,7 @@ describe("TextField component rendering", () => {
20
20
  </ThemeProvider>
21
21
  );
22
22
 
23
- const textFieldContainer = screen.getByTestId("textFieldContainer");
23
+ const textFieldContainer = screen.getByTestId("text-field-container");
24
24
  const inputComponent = screen.getByTestId("inputComponent");
25
25
 
26
26
  expect(textFieldContainer).toBeTruthy();
@@ -40,7 +40,7 @@ describe("TextField component rendering", () => {
40
40
  </ThemeProvider>
41
41
  );
42
42
 
43
- const textFieldContainer = screen.getByTestId("textFieldContainer");
43
+ const textFieldContainer = screen.getByTestId("text-field-container");
44
44
  const inputComponent = screen.getByTestId("inputComponent");
45
45
  const prefix = screen.getByTestId("prefix");
46
46
  expect(textFieldContainer).toBeTruthy();
@@ -61,7 +61,7 @@ describe("TextField component rendering", () => {
61
61
  </ThemeProvider>
62
62
  );
63
63
 
64
- const textFieldContainer = screen.getByTestId("textFieldContainer");
64
+ const textFieldContainer = screen.getByTestId("text-field-container");
65
65
  const inputComponent = screen.getByTestId("inputComponent");
66
66
  const backgroundIconComponent = screen.getByTestId("backgroundIconComponent");
67
67
 
@@ -83,7 +83,7 @@ describe("TextField component rendering", () => {
83
83
  </ThemeProvider>
84
84
  );
85
85
 
86
- const textFieldContainer = screen.getByTestId("textFieldContainer");
86
+ const textFieldContainer = screen.getByTestId("text-field-container");
87
87
  const inputComponent = screen.getByTestId("inputComponent");
88
88
  const iconWrapperComponent = screen.getByTestId("iconWrapperComponent");
89
89
 
@@ -135,7 +135,7 @@ describe("onClick from buttons", () => {
135
135
 
136
136
  const iconWrapperComponent = screen.getByTestId("iconWrapperComponent");
137
137
  expect(iconWrapperComponent).toBeTruthy();
138
- const iconActionComponent = within(iconWrapperComponent).getByTestId("iconActionComponent");
138
+ const iconActionComponent = within(iconWrapperComponent).getByTestId("icon-action-component");
139
139
  expect(iconActionComponent).toBeTruthy();
140
140
  fireEvent.click(iconActionComponent);
141
141
  expect(onClickIconMock).toBeCalledTimes(1);
@@ -0,0 +1,142 @@
1
+ import * as React from "react";
2
+ import { render, screen, cleanup, fireEvent } from "@testing-library/react";
3
+ import { mock } from "jest-mock-extended";
4
+ import { ThemeProvider } from "styled-components";
5
+ import { parseTheme } from "@ax/helpers";
6
+ import globalTheme from "@ax/themes/theme.json";
7
+ import HourInput from "@ax/components/Fields/TimeField/HourInput";
8
+ import { act, Simulate } from "react-dom/test-utils";
9
+
10
+ afterEach(cleanup);
11
+
12
+ const defaultProps = mock<IHourInputProps>();
13
+
14
+ describe("HourInput component rendering", () => {
15
+ it("should render the component", () => {
16
+ render(
17
+ <ThemeProvider theme={parseTheme(globalTheme)}>
18
+ <HourInput {...defaultProps} />
19
+ </ThemeProvider>
20
+ );
21
+
22
+ const hourInputField = screen.getByTestId("time-field-input");
23
+ expect(hourInputField).toBeTruthy();
24
+ });
25
+
26
+ it("should render component as disabled", () => {
27
+ defaultProps.disabled = true;
28
+
29
+ render(
30
+ <ThemeProvider theme={parseTheme(globalTheme)}>
31
+ <HourInput {...defaultProps} />
32
+ </ThemeProvider>
33
+ );
34
+
35
+ const hourInputField = screen.getByTestId<HTMLInputElement>("time-field-input");
36
+ expect(hourInputField.disabled).toEqual(true);
37
+ });
38
+ });
39
+
40
+ describe("onChange events", () => {
41
+ it("should call onChange on change with valid time", () => {
42
+ const onChangeMock = defaultProps.onChange as jest.MockedFunction<(value: string) => void>;
43
+ defaultProps.value = "12:30";
44
+ defaultProps.disabled = false;
45
+
46
+ render(
47
+ <ThemeProvider theme={parseTheme(globalTheme)}>
48
+ <HourInput {...defaultProps} />
49
+ </ThemeProvider>
50
+ );
51
+
52
+ const input = screen.getByTestId("time-field-input");
53
+ act(() => {
54
+ fireEvent.change(input, { target: { value: "12:30" } });
55
+ Simulate.change(input);
56
+ });
57
+
58
+ expect(onChangeMock).toHaveBeenCalledWith("12:30");
59
+ });
60
+
61
+ it("should call onChange on change with 24 hours time", () => {
62
+ const onChangeMock = defaultProps.onChange as jest.MockedFunction<(value: string) => void>;
63
+ defaultProps.value = "12:00";
64
+
65
+ render(
66
+ <ThemeProvider theme={parseTheme(globalTheme)}>
67
+ <HourInput {...defaultProps} />
68
+ </ThemeProvider>
69
+ );
70
+
71
+ const input = screen.getByTestId("time-field-input");
72
+ act(() => {
73
+ fireEvent.change(input, { target: { value: "23:30" } });
74
+ Simulate.change(input);
75
+ });
76
+
77
+ expect(onChangeMock).toHaveBeenCalledWith("12:30");
78
+ });
79
+
80
+ it("should call onChange on change with 24 hours time", () => {
81
+ const onChangeMock = defaultProps.onChange as jest.MockedFunction<(value: string) => void>;
82
+ defaultProps.value = "12:00";
83
+
84
+ render(
85
+ <ThemeProvider theme={parseTheme(globalTheme)}>
86
+ <HourInput {...defaultProps} />
87
+ </ThemeProvider>
88
+ );
89
+
90
+ const input = screen.getByTestId("time-field-input");
91
+ act(() => {
92
+ fireEvent.change(input, { target: { value: "23:30" } });
93
+ Simulate.change(input);
94
+ });
95
+
96
+ expect(onChangeMock).toHaveBeenCalledWith("12:30");
97
+ });
98
+
99
+ it("should call onChange on change with more than 12 hours", () => {
100
+ const onChangeMock = defaultProps.onChange as jest.MockedFunction<(value: string) => void>;
101
+ defaultProps.value = "12:00";
102
+
103
+ render(
104
+ <ThemeProvider theme={parseTheme(globalTheme)}>
105
+ <HourInput {...defaultProps} />
106
+ </ThemeProvider>
107
+ );
108
+
109
+ const input = screen.getByTestId("time-field-input");
110
+ act(() => {
111
+ fireEvent.change(input, { target: { value: "13:30" } });
112
+ Simulate.change(input);
113
+ });
114
+
115
+ expect(onChangeMock).toHaveBeenCalledWith("12:30");
116
+ });
117
+
118
+ it("should call onChange on change with more than 59 minutes", () => {
119
+ const onChangeMock = defaultProps.onChange as jest.MockedFunction<(value: string) => void>;
120
+ defaultProps.value = "12:30";
121
+
122
+ render(
123
+ <ThemeProvider theme={parseTheme(globalTheme)}>
124
+ <HourInput {...defaultProps} />
125
+ </ThemeProvider>
126
+ );
127
+
128
+ const input = screen.getByTestId("time-field-input");
129
+ act(() => {
130
+ fireEvent.change(input, { target: { value: "10:72" } });
131
+ Simulate.change(input);
132
+ });
133
+
134
+ expect(onChangeMock).toHaveBeenCalledWith("10:30");
135
+ });
136
+ });
137
+
138
+ interface IHourInputProps {
139
+ value: string;
140
+ onChange: (value: string) => void;
141
+ disabled?: boolean;
142
+ }