@griddo/ax 1.71.0 → 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 (90) hide show
  1. package/package.json +2 -2
  2. package/src/Style/index.tsx +1 -1
  3. package/src/__tests__/components/ElementsTooltip/ElementsTooltip.test.tsx +1 -1
  4. package/src/__tests__/components/EmptyState/EmptyState.test.tsx +1 -1
  5. package/src/__tests__/components/FieldContainer/FieldContainer.test.tsx +82 -0
  6. package/src/__tests__/components/Fields/AnalyticsField/AnalyticsField.test.tsx +1 -1
  7. package/src/__tests__/components/Fields/AnalyticsField/PageAnalytics/PageAnalytics.test.tsx +1 -1
  8. package/src/__tests__/components/Fields/AnalyticsField/StructuredDataAnalytics/StructuredDataAnalytics.test.tsx +1 -1
  9. package/src/__tests__/components/Fields/ArrayFieldGroup/ArrayFieldGroup.test.tsx +2 -2
  10. package/src/__tests__/components/Fields/AsyncCheckGroup/AsyncCheckGroup.test.tsx +3 -3
  11. package/src/__tests__/components/Fields/AsyncSelect/AsyncSelect.test.tsx +1 -1
  12. package/src/__tests__/components/Fields/CheckField/CheckField.test.tsx +6 -6
  13. package/src/__tests__/components/Fields/CheckGroup/CheckGroup.test.tsx +15 -15
  14. package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +6 -6
  15. package/src/__tests__/components/Fields/ComponentArray/ComponentArray.test.tsx +1 -1
  16. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/MixableComponentArray.test.tsx +7 -7
  17. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/PasteModuleButton/PasteModuleButton.test.tsx +9 -9
  18. package/src/__tests__/components/Fields/ComponentArray/SameComponentArray/SameComponentArray.test.tsx +5 -5
  19. package/src/__tests__/components/Fields/ComponentContainer/ComponentContainer.test.tsx +1 -1
  20. package/src/__tests__/components/Fields/ConditionalField/ConditionalField.test.tsx +1 -1
  21. package/src/__tests__/components/Fields/DateField/DateField.test.tsx +1 -1
  22. package/src/__tests__/components/Fields/FieldGroup/FieldGroup.test.tsx +1 -1
  23. package/src/__tests__/components/Fields/FieldsDivider/FieldsDivider.test.tsx +1 -1
  24. package/src/__tests__/components/Fields/FileField/FileField.test.tsx +3 -3
  25. package/src/__tests__/components/Fields/HeadingField/HeadingField.test.tsx +6 -6
  26. package/src/__tests__/components/Fields/HiddenField/HiddenField.test.tsx +1 -1
  27. package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +3 -3
  28. package/src/__tests__/components/Fields/MultiCheckSelect/MultiCheckSelect.test.tsx +1 -1
  29. package/src/__tests__/components/Fields/MultiCheckSelectGroup/MultiCheckSelectGroup.test.tsx +2 -2
  30. package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +1 -1
  31. package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +1 -1
  32. package/src/__tests__/components/Fields/RadioField/RadioField.test.tsx +1 -1
  33. package/src/__tests__/components/Fields/ReferenceField/ReferenceField.test.tsx +96 -8
  34. package/src/__tests__/components/Fields/RichText/RichText.test.tsx +1 -1
  35. package/src/__tests__/components/Fields/Select/Select.test.tsx +2 -2
  36. package/src/__tests__/components/Fields/SliderField/SliderField.test.tsx +1 -1
  37. package/src/__tests__/components/Fields/TagField/TagField.test.tsx +1 -1
  38. package/src/__tests__/components/Fields/TextArea/TextArea.test.tsx +1 -1
  39. package/src/__tests__/components/Fields/TextField/TextField.test.tsx +6 -6
  40. package/src/__tests__/components/Fields/TimeField/HourInput/HourInput.test.tsx +1 -1
  41. package/src/__tests__/components/Fields/TimeField/TimeField.test.tsx +1 -1
  42. package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +1 -1
  43. package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +3 -2
  44. package/src/__tests__/components/Fields/UniqueCheck/UniqueCheck.test.tsx +3 -3
  45. package/src/__tests__/components/Fields/UrlField/UrlField.test.tsx +4 -4
  46. package/src/__tests__/components/Fields/VisualUniqueSelection/ImageSelection/ImageSelection.test.tsx +1 -1
  47. package/src/__tests__/components/Fields/VisualUniqueSelection/ScrollableSelection/ScrollableSelection.test.tsx +3 -3
  48. package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +1 -1
  49. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.test.tsx +1 -1
  50. package/src/__tests__/components/FieldsBehavior/FieldsBehavior.test.tsx +149 -0
  51. package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +241 -0
  52. package/src/__tests__/components/TableFilters/CustomizeFilters/CustomizeFilters.test.tsx +131 -0
  53. package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +148 -0
  54. package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +265 -0
  55. package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +197 -0
  56. package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +317 -0
  57. package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +197 -0
  58. package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +157 -0
  59. package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +164 -0
  60. package/src/__tests__/components/TableList/TableList.test.tsx +2 -2
  61. package/src/__tests__/components/Tabs/Tabs.test.tsx +36 -33
  62. package/src/__tests__/components/Tag/Tag.test.tsx +4 -2
  63. package/src/__tests__/components/Toast/Toast.test.tsx +4 -2
  64. package/src/components/FieldContainer/index.tsx +3 -3
  65. package/src/components/Fields/CheckField/index.tsx +3 -3
  66. package/src/components/Fields/CheckGroup/index.tsx +2 -2
  67. package/src/components/Fields/HeadingField/index.tsx +1 -1
  68. package/src/components/Fields/Select/index.tsx +1 -1
  69. package/src/components/Fields/TextField/index.tsx +2 -7
  70. package/src/components/FieldsBehavior/index.tsx +1 -1
  71. package/src/components/FloatingMenu/index.tsx +1 -1
  72. package/src/components/IconAction/index.tsx +1 -1
  73. package/src/components/Lists/index.tsx +1 -1
  74. package/src/components/TableFilters/CategoryFilter/index.tsx +2 -2
  75. package/src/components/TableFilters/CategoryFilter/style.tsx +1 -10
  76. package/src/components/TableFilters/CustomizeFilters/index.tsx +2 -3
  77. package/src/components/TableFilters/DateFilter/index.tsx +4 -4
  78. package/src/components/TableFilters/LiveFilter/index.tsx +1 -1
  79. package/src/components/TableFilters/LiveFilter/style.tsx +2 -10
  80. package/src/components/TableFilters/NameFilter/index.tsx +4 -4
  81. package/src/components/TableFilters/SiteFilter/index.tsx +16 -13
  82. package/src/components/TableFilters/SiteFilter/style.tsx +1 -10
  83. package/src/components/TableFilters/StatusFilter/index.tsx +3 -3
  84. package/src/components/TableFilters/TranslationsFilter/index.tsx +4 -7
  85. package/src/components/TableFilters/TranslationsFilter/style.tsx +1 -10
  86. package/src/components/TableFilters/TypeFilter/index.tsx +2 -2
  87. package/src/components/TableFilters/TypeFilter/style.tsx +1 -10
  88. package/src/components/Tooltip/index.tsx +1 -1
  89. package/src/helpers/index.tsx +3 -0
  90. package/src/helpers/parseTheme.js +456 -0
@@ -0,0 +1,164 @@
1
+ import * as React from "react";
2
+ import { ThemeProvider } from "styled-components";
3
+ import { CalledWithMock, mock } from "jest-mock-extended";
4
+
5
+ import { render, screen, cleanup, fireEvent } from "@testing-library/react";
6
+ import TypeFilter, { ITypeFilterProps } from "@ax/components/TableFilters/TypeFilter";
7
+ import globalTheme from "@ax/themes/theme.json";
8
+ import { parseTheme } from "@ax/helpers";
9
+
10
+ afterEach(cleanup);
11
+
12
+ const defaultProps = mock<ITypeFilterProps>();
13
+ describe("TypeFilter component rendering", () => {
14
+ it("should render type filter", () => {
15
+ defaultProps.filters = [
16
+ {
17
+ name: "all",
18
+ value: "all",
19
+ title: "All content",
20
+ },
21
+ {
22
+ name: "unique",
23
+ value: "unique",
24
+ title: "Basic templates",
25
+ },
26
+ {
27
+ name: "structuredData",
28
+ value: "structuredData",
29
+ title: "Content types",
30
+ },
31
+ ];
32
+ defaultProps.pointer = "type";
33
+ defaultProps.filterItems = jest.fn() as CalledWithMock<void, [pointer: string, filter: string]>;
34
+
35
+ render(
36
+ <ThemeProvider theme={parseTheme(globalTheme)}>
37
+ <TypeFilter {...defaultProps} />
38
+ </ThemeProvider>
39
+ );
40
+
41
+ const typeFilter = screen.getByTestId("floating-menu");
42
+ expect(typeFilter).toBeTruthy();
43
+ expect(typeFilter.textContent).toEqual("Types");
44
+ });
45
+ });
46
+
47
+ describe("TypeFilter events", () => {
48
+ it("should render check group on click", () => {
49
+ defaultProps.filters = [
50
+ {
51
+ name: "all",
52
+ value: "all",
53
+ title: "All content",
54
+ },
55
+ {
56
+ name: "unique",
57
+ value: "unique",
58
+ title: "Basic templates",
59
+ },
60
+ {
61
+ name: "structuredData",
62
+ value: "structuredData",
63
+ title: "Content types",
64
+ },
65
+ ];
66
+ defaultProps.pointer = "type";
67
+ defaultProps.filterItems = jest.fn() as CalledWithMock<void, [pointer: string, filter: string]>;
68
+
69
+ render(
70
+ <ThemeProvider theme={parseTheme(globalTheme)}>
71
+ <TypeFilter {...defaultProps} />
72
+ </ThemeProvider>
73
+ );
74
+
75
+ const typeFilterButton = screen.getByTestId("floating-menu-button");
76
+ expect(typeFilterButton).toBeTruthy();
77
+ fireEvent.click(typeFilterButton);
78
+ const floatingMenu = screen.getByTestId("floating-menu");
79
+ expect(floatingMenu).toBeTruthy();
80
+ const checkGroupFieldGroup = screen.getByTestId("check-group-field-group");
81
+ expect(checkGroupFieldGroup).toBeTruthy();
82
+ const checkFieldLabels = screen.getAllByTestId("check-field-label");
83
+ expect(checkFieldLabels).toHaveLength(3);
84
+ });
85
+
86
+ it("should check option on click", () => {
87
+ defaultProps.filters = [
88
+ {
89
+ name: "all",
90
+ value: "all",
91
+ title: "All content",
92
+ },
93
+ {
94
+ name: "unique",
95
+ value: "unique",
96
+ title: "Basic templates",
97
+ },
98
+ {
99
+ name: "structuredData",
100
+ value: "structuredData",
101
+ title: "Content types",
102
+ },
103
+ ];
104
+ defaultProps.pointer = "type";
105
+ const onChangeMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: string]>;
106
+ defaultProps.filterItems = onChangeMock;
107
+
108
+ render(
109
+ <ThemeProvider theme={parseTheme(globalTheme)}>
110
+ <TypeFilter {...defaultProps} />
111
+ </ThemeProvider>
112
+ );
113
+
114
+ const typeFilterButton = screen.getByTestId("floating-menu-button");
115
+ expect(typeFilterButton).toBeTruthy();
116
+ fireEvent.click(typeFilterButton);
117
+ const floatingMenu = screen.getByTestId("floating-menu");
118
+ expect(floatingMenu).toBeTruthy();
119
+ const checkGroupFieldGroup = screen.getByTestId("check-group-field-group");
120
+ expect(checkGroupFieldGroup).toBeTruthy();
121
+ const checkFieldInputs = screen.getAllByTestId<HTMLInputElement>("check-field-input");
122
+ expect(checkFieldInputs).toHaveLength(3);
123
+ fireEvent.change(checkFieldInputs[1], { target: { checked: true, value: "unique" } });
124
+ expect(checkFieldInputs[1].checked).toBe(true);
125
+ });
126
+
127
+ it("should call filterItems action on change", async () => {
128
+ defaultProps.filters = [
129
+ {
130
+ name: "all",
131
+ value: "all",
132
+ title: "All content",
133
+ },
134
+ {
135
+ name: "unique",
136
+ value: "unique",
137
+ title: "Basic templates",
138
+ },
139
+ {
140
+ name: "structuredData",
141
+ value: "structuredData",
142
+ title: "Content types",
143
+ },
144
+ ];
145
+ defaultProps.pointer = "type";
146
+ const onChangeMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: string]>;
147
+ defaultProps.filterItems = onChangeMock;
148
+
149
+ render(
150
+ <ThemeProvider theme={parseTheme(globalTheme)}>
151
+ <TypeFilter {...defaultProps} />
152
+ </ThemeProvider>
153
+ );
154
+
155
+ const typeFilterButton = screen.getByTestId("floating-menu-button");
156
+
157
+ expect(typeFilterButton).toBeTruthy();
158
+ fireEvent.click(typeFilterButton);
159
+ const checkFieldInputs = screen.queryAllByTestId("check-field-input");
160
+ fireEvent.click(checkFieldInputs[1]);
161
+ expect(onChangeMock).toHaveBeenCalledTimes(1);
162
+ expect(onChangeMock).toBeCalledWith("type", "unique");
163
+ });
164
+ });
@@ -1,6 +1,6 @@
1
1
  import * as 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 { mock } from "jest-mock-extended";
5
5
  import configureStore from "redux-mock-store";
6
6
 
@@ -101,7 +101,7 @@ describe("TableList", () => {
101
101
  });
102
102
 
103
103
  it("should display paginator when totalItems is greater than itemsPerPage", async () => {
104
- defaultProps.pagination = { currPage: 1, itemsPerPage: 50, setPage: setPage, totalItems: 60 }
104
+ defaultProps.pagination = { currPage: 1, itemsPerPage: 50, setPage: setPage, totalItems: 60 };
105
105
  defaultProps.hasFixedHeader = true;
106
106
  const store = mockStore(initialStore);
107
107
  const initialState = { ...initialStore, ...defaultProps };
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import Tabs, { ITabsProps } from "@ax/components/Tabs";
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";
@@ -65,24 +65,6 @@ describe("Tabs component rendering", () => {
65
65
  expect(setSelectedTabAction).toBeCalled();
66
66
  });
67
67
 
68
- it("should set tab as active on click", async () => {
69
- defaultProps.tabs = ["tab1", "tab2"];
70
- defaultProps.active = "tab1";
71
- const setSelectedTabAction = jest.fn();
72
- defaultProps.setSelectedTab = setSelectedTabAction;
73
-
74
- render(
75
- <ThemeProvider theme={parseTheme(globalTheme)}>
76
- <Tabs {...defaultProps} />
77
- </ThemeProvider>
78
- );
79
- const tabs = screen.getAllByTestId("tab");
80
- fireEvent.click(tabs[1]);
81
- expect(setSelectedTabAction).toBeCalled();
82
- expect(tabs[0]).toHaveStyleRule("cursor", "initial");
83
- expect(tabs[1]).toHaveStyleRule("cursor", "pointer");
84
- });
85
-
86
68
  it("should render tabs row with icons if icons available", async () => {
87
69
  defaultProps.tabs = undefined;
88
70
  defaultProps.icons = [
@@ -139,9 +121,9 @@ describe("Tabs component rendering", () => {
139
121
  expect(tooltips[1].textContent).toBe("Preview mode");
140
122
  });
141
123
 
142
- it("should call set selected tab action on click icon tab", async () => {
124
+ it("should not display icon if doesn't exist", async () => {
143
125
  defaultProps.icons = [
144
- { name: "edit", text: "Edit mode" },
126
+ { name: "failed-icon", text: "Edit mode" },
145
127
  { name: "view", text: "Preview mode" },
146
128
  ];
147
129
  defaultProps.active = "edit";
@@ -153,12 +135,35 @@ describe("Tabs component rendering", () => {
153
135
  <Tabs {...defaultProps} />
154
136
  </ThemeProvider>
155
137
  );
156
- const tabs = screen.getAllByTestId("icon-tab");
138
+ const tooltips = screen.getAllByTestId("tooltip-component");
139
+ expect(tooltips[0]).toBeTruthy();
140
+ expect(tooltips[1]).toBeTruthy();
141
+ const tooltipIcons = screen.getAllByTestId("icon-component");
142
+ expect(tooltipIcons.length).toEqual(1);
143
+ });
144
+ });
145
+
146
+ describe("Tabs component events", () => {
147
+ it("should set tab as active on click", async () => {
148
+ defaultProps.tabs = ["tab1", "tab2"];
149
+ defaultProps.active = "tab1";
150
+ const setSelectedTabAction = jest.fn();
151
+ defaultProps.setSelectedTab = setSelectedTabAction;
152
+
153
+ render(
154
+ <ThemeProvider theme={parseTheme(globalTheme)}>
155
+ <Tabs {...defaultProps} />
156
+ </ThemeProvider>
157
+ );
158
+ const tabs = screen.getAllByTestId("tab");
157
159
  fireEvent.click(tabs[1]);
158
160
  expect(setSelectedTabAction).toBeCalled();
161
+ expect(tabs[0]).toHaveStyleRule("cursor", "initial");
162
+ expect(tabs[1]).toHaveStyleRule("cursor", "pointer");
159
163
  });
160
164
 
161
- it("should set icon tab as active on click", async () => {
165
+ it("should call set selected tab action on click icon tab", async () => {
166
+ defaultProps.tabs = undefined;
162
167
  defaultProps.icons = [
163
168
  { name: "edit", text: "Edit mode" },
164
169
  { name: "view", text: "Preview mode" },
@@ -175,13 +180,11 @@ describe("Tabs component rendering", () => {
175
180
  const tabs = screen.getAllByTestId("icon-tab");
176
181
  fireEvent.click(tabs[1]);
177
182
  expect(setSelectedTabAction).toBeCalled();
178
- expect(tabs[0]).toHaveStyleRule("cursor", "initial");
179
- expect(tabs[1]).toHaveStyleRule("cursor", "pointer");
180
183
  });
181
184
 
182
- it("should not display icon if doesn't exist", async () => {
185
+ it("should set icon tab as active on click", async () => {
183
186
  defaultProps.icons = [
184
- { name: "failed-icon", text: "Edit mode" },
187
+ { name: "edit", text: "Edit mode" },
185
188
  { name: "view", text: "Preview mode" },
186
189
  ];
187
190
  defaultProps.active = "edit";
@@ -193,10 +196,10 @@ describe("Tabs component rendering", () => {
193
196
  <Tabs {...defaultProps} />
194
197
  </ThemeProvider>
195
198
  );
196
- const tooltips = screen.getAllByTestId("tooltip-component");
197
- expect(tooltips[0]).toBeTruthy();
198
- expect(tooltips[1]).toBeTruthy();
199
- const tooltipIcons = screen.getAllByTestId("icon-component");
200
- expect(tooltipIcons.length).toEqual(1);
199
+ const tabs = screen.getAllByTestId("icon-tab");
200
+ fireEvent.click(tabs[1]);
201
+ expect(setSelectedTabAction).toBeCalled();
202
+ expect(tabs[0]).toHaveStyleRule("cursor", "initial");
203
+ expect(tabs[1]).toHaveStyleRule("cursor", "pointer");
201
204
  });
202
- });
205
+ });
@@ -4,7 +4,7 @@ import { ThemeProvider } from "styled-components";
4
4
  import { mock } from "jest-mock-extended";
5
5
 
6
6
  import { render, screen, cleanup, fireEvent } from "@testing-library/react";
7
- import { parseTheme } from "@griddo/core";
7
+ import { parseTheme } from "@ax/helpers";
8
8
 
9
9
  import globalTheme from "@ax/themes/theme.json";
10
10
  import Tag, { ITagProps } from "@ax/components/Tag";
@@ -100,7 +100,9 @@ describe("Tag component rendering", () => {
100
100
  const deleteIconWrapper = screen.getByTestId("delete-icon-wrapper");
101
101
  expect(deleteIconWrapper).toBeTruthy();
102
102
  });
103
+ });
103
104
 
105
+ describe("Tag component events", () => {
104
106
  it("should called deleteAction when click delete button", () => {
105
107
  defaultProps.type = "fixed";
106
108
  defaultProps.text = "Modules";
@@ -135,4 +137,4 @@ describe("Tag component rendering", () => {
135
137
  const styles = getComputedStyle(tagFixed);
136
138
  expect(styles.backgroundColor).toEqual("rgba(80, 87, 255, 0.16)");
137
139
  });
138
- });
140
+ });
@@ -3,7 +3,7 @@ import * as React from "react";
3
3
  import { ThemeProvider } from "styled-components";
4
4
  import { mock } from "jest-mock-extended";
5
5
  import { render, screen, cleanup, fireEvent } from "@testing-library/react";
6
- import { parseTheme } from "@griddo/core";
6
+ import { parseTheme } from "@ax/helpers";
7
7
 
8
8
  import Toast, { IToastProps } from "@ax/components/Toast";
9
9
  import globalTheme from "@ax/themes/theme.json";
@@ -54,7 +54,9 @@ describe("Toast component rendering", () => {
54
54
  const button = screen.queryByTestId("button-line-inverse");
55
55
  expect(button).toBeFalsy();
56
56
  });
57
+ });
57
58
 
59
+ describe("Toast component events", () => {
58
60
  it("should render the undo button when action", () => {
59
61
  defaultProps.message = "1 module copied to clipboard";
60
62
  defaultProps.action = jest.fn();
@@ -92,7 +94,7 @@ describe("Toast component rendering", () => {
92
94
  );
93
95
 
94
96
  const toastWrapper = screen.getByTestId("toast-wrapper");
95
- const closeButton = screen.getByTestId("iconActionComponent");
97
+ const closeButton = screen.getByTestId("icon-action-component");
96
98
  expect(closeButton).toBeTruthy();
97
99
  fireEvent.click(closeButton);
98
100
  expect(toastWrapper.classList.contains("close-animation")).toBeTruthy();
@@ -5,7 +5,7 @@ import { getNullValue, getDefaultSchema, getDefaultTemplate } from "@ax/helpers"
5
5
 
6
6
  import { FieldsBehavior, HiddenField } from "@ax/components";
7
7
 
8
- const FieldContainer = (props: IProps) => {
8
+ const FieldContainer = (props: IFieldContainerProps) => {
9
9
  const { selectedContent, updateValue, field, goTo, objKey, lang } = props;
10
10
 
11
11
  const { type, key, title, hideable, slugTo } = field;
@@ -28,9 +28,9 @@ const FieldContainer = (props: IProps) => {
28
28
  };
29
29
 
30
30
  const hasMultipleOptions = field.whiteList && field.whiteList.length > 1;
31
-
32
31
  const nullValue = isContainer ? getNullValue(containerValue, hasMultipleOptions) : null;
33
32
  const hasNullValue = JSON.stringify(containerValue) === JSON.stringify(nullValue);
33
+
34
34
  const getField = () => <FieldsBehavior {...fieldProps} key={key} />;
35
35
 
36
36
  const getDefaultValue = () => {
@@ -56,7 +56,7 @@ const FieldContainer = (props: IProps) => {
56
56
 
57
57
  export default FieldContainer;
58
58
 
59
- interface IProps {
59
+ export interface IFieldContainerProps {
60
60
  key: string;
61
61
  field: any;
62
62
  selectedContent: any;
@@ -24,9 +24,9 @@ const CheckField = ({
24
24
 
25
25
  return (
26
26
  <S.Wrapper>
27
- <S.Label data-testid={"checkFieldLabel"} disabled={disabled}>
27
+ <S.Label data-testid="check-field-label" disabled={disabled}>
28
28
  {icon ? (
29
- <S.IconLabelWrapper data-testid={"checkFieldIconLabel"}>
29
+ <S.IconLabelWrapper data-testid="check-field-icon-label">
30
30
  <S.IconWrapper>
31
31
  <Icon name={icon} />
32
32
  </S.IconWrapper>
@@ -36,7 +36,7 @@ const CheckField = ({
36
36
  title
37
37
  )}
38
38
  <S.Input
39
- data-testid={"checkFieldInput"}
39
+ data-testid="check-field-input"
40
40
  type="checkbox"
41
41
  name={`${name}`}
42
42
  value={value || ""}
@@ -38,7 +38,7 @@ const CheckGroup = (props: ICheckGroupProps): JSX.Element => {
38
38
  const checks = options
39
39
  ? options.map((item: ICheckFieldProps) => (
40
40
  <CheckField
41
- data-testid="CheckGroupCheckfield"
41
+ data-testid="check-group-checkfield"
42
42
  key={item.name}
43
43
  onChange={handleChange}
44
44
  checked={valueArray.includes(item.name)}
@@ -52,7 +52,7 @@ const CheckGroup = (props: ICheckGroupProps): JSX.Element => {
52
52
  ))
53
53
  : "";
54
54
 
55
- return <S.FieldGroup data-testid="CheckGroupFieldgroup">{checks}</S.FieldGroup>;
55
+ return <S.FieldGroup data-testid="check-group-field-group">{checks}</S.FieldGroup>;
56
56
  };
57
57
 
58
58
  interface ICheckGroupProps {
@@ -16,7 +16,7 @@ const HeadingField = (props: IHeadingFieldProps): JSX.Element => {
16
16
  <>
17
17
  <TextField {...props} value={contentValue} onChange={handleChange} />
18
18
  {showAdvanced && (
19
- <S.AdvancedWrapper data-testid="textFieldAdvancedWrapper">
19
+ <S.AdvancedWrapper data-testid="text-field-advanced-wrapper">
20
20
  <FieldsBehavior fieldType="Select" options={options} value={value.tag} onChange={handleSelectChange} />
21
21
  </S.AdvancedWrapper>
22
22
  )}
@@ -47,7 +47,7 @@ const Select = (props: ISelectProps): JSX.Element => {
47
47
  const searchable = type === "inline" ? false : true;
48
48
 
49
49
  return (
50
- <div data-testid="selectComponent">
50
+ <div data-testid="select-component">
51
51
  <S.StyledSelect
52
52
  name={name}
53
53
  value={getObjectValue(value, optionValues)}
@@ -78,7 +78,7 @@ const TextField = (props: ITextFieldProps): JSX.Element => {
78
78
  const inputValue = !autoComplete ? state : value || "";
79
79
 
80
80
  return (
81
- <S.FieldWrapper data-testid="textFieldContainer" error={error} className={className}>
81
+ <S.FieldWrapper data-testid="text-field-container" error={error} className={className}>
82
82
  {prefix && <Prefix />}
83
83
  <S.Input
84
84
  data-testid="inputComponent"
@@ -104,12 +104,7 @@ const TextField = (props: ITextFieldProps): JSX.Element => {
104
104
  )}
105
105
  {hasButton && (
106
106
  <S.IconWrapper data-testid="iconWrapperComponent" readonly={readonly} error={error}>
107
- <IconAction
108
- icon={icon || ""}
109
- onClick={onClickIcon}
110
- disabled={disabled}
111
- size="s"
112
- />
107
+ <IconAction icon={icon || ""} onClick={onClickIcon} disabled={disabled} size="s" />
113
108
  </S.IconWrapper>
114
109
  )}
115
110
  </S.FieldWrapper>
@@ -80,7 +80,7 @@ const FieldsBehavior = (props: any): JSX.Element => {
80
80
 
81
81
  return (
82
82
  <S.Wrapper className={wrapperClass} showTitle={showTitle} id={objKey}>
83
- <S.Content error={errorField} data-testid="contentWrapper">
83
+ <S.Content error={errorField} data-testid="fields-behavior-wrapper">
84
84
  <Field
85
85
  {...props}
86
86
  showAdvanced={showAdvanced}
@@ -68,7 +68,7 @@ const FloatingMenu = (props: IProps) => {
68
68
  <Button />
69
69
  </S.ButtonWrapper>
70
70
  {isOpen && (
71
- <S.MenuWrapper isInAppBar={isInAppBar} ref={menuOptions} position={position} offset={offset}>
71
+ <S.MenuWrapper isInAppBar={isInAppBar} ref={menuOptions} position={position} offset={offset} data-testid="floating-menu-wrapper">
72
72
  <S.Menu>{children}</S.Menu>
73
73
  </S.MenuWrapper>
74
74
  )}
@@ -14,7 +14,7 @@ const IconAction = (props: IIconActionProps): JSX.Element => {
14
14
 
15
15
  return (
16
16
  <S.Button
17
- data-testid="iconActionComponent"
17
+ data-testid="icon-action-component"
18
18
  disabled={disabled}
19
19
  onClick={handleOnClick}
20
20
  size={size}
@@ -7,7 +7,7 @@ const ListItem = (props: ListItemProps): JSX.Element => {
7
7
  const { isSelected, children, onClick } = props;
8
8
 
9
9
  return (
10
- <S.StyledListItem isSelected={isSelected} onClick={onClick}>
10
+ <S.StyledListItem isSelected={isSelected} onClick={onClick} data-testid="list-item">
11
11
  {children}
12
12
  {isSelected && <Icon name="Done" size="16" />}
13
13
  </S.StyledListItem>
@@ -75,7 +75,7 @@ const CategoryFilter = (props: ICategoryFilterProps): JSX.Element => {
75
75
 
76
76
  return (
77
77
  <FloatingMenu Button={Header} position="left" closeOnSelect={false} isCheckGroup={true}>
78
- <ListTitle>Filter by Category</ListTitle>
78
+ <ListTitle data-testid="category-filter-title">Filter by Category</ListTitle>
79
79
  <S.ChecksWrapper>
80
80
  <CheckGroup options={options} value={selectedValue} onChange={setQuery} selectAllOption={selectAllOption} />
81
81
  </S.ChecksWrapper>
@@ -83,7 +83,7 @@ const CategoryFilter = (props: ICategoryFilterProps): JSX.Element => {
83
83
  );
84
84
  };
85
85
 
86
- interface ICategoryFilterProps {
86
+ export interface ICategoryFilterProps {
87
87
  filterItems(pointer: string, filter: string): void;
88
88
  value: string;
89
89
  structuredData: any;
@@ -19,18 +19,9 @@ const IconsWrapper = styled.div`
19
19
  }
20
20
  `;
21
21
 
22
- const InteractiveArrow = styled.div`
23
- display: flex;
24
- svg {
25
- path {
26
- fill: ${(p) => p.theme.color.interactive01};
27
- }
28
- }
29
- `;
30
-
31
22
  const ChecksWrapper = styled.div`
32
23
  padding: ${(p) => p.theme.spacing.xs} ${(p) => p.theme.spacing.s};
33
24
  overflow-y: auto;
34
25
  `;
35
26
 
36
- export { HeaderWrapper, IconsWrapper, InteractiveArrow, ChecksWrapper };
27
+ export { HeaderWrapper, IconsWrapper, ChecksWrapper };
@@ -6,7 +6,6 @@ import * as S from "./style";
6
6
 
7
7
  const CustomizeFilters = (props: ICustomizeFiltersProps): JSX.Element => {
8
8
  const { columns, setColumns, value } = props;
9
-
10
9
  const options = Object.keys(columns).map((col: string) => {
11
10
  const disabled = value.length >= 5 && !value.includes(col);
12
11
  return { name: col, title: columns[col].title, value: col, disabled };
@@ -31,7 +30,7 @@ const CustomizeFilters = (props: ICustomizeFiltersProps): JSX.Element => {
31
30
  );
32
31
 
33
32
  return (
34
- <S.Wrapper>
33
+ <S.Wrapper data-testid="customize-filters-wrapper">
35
34
  <FloatingMenu Button={Button} position="right" closeOnSelect={false}>
36
35
  <ListTitle>Customize filters</ListTitle>
37
36
  <S.Note>You can select up to five options</S.Note>
@@ -43,7 +42,7 @@ const CustomizeFilters = (props: ICustomizeFiltersProps): JSX.Element => {
43
42
  );
44
43
  };
45
44
 
46
- interface ICustomizeFiltersProps {
45
+ export interface ICustomizeFiltersProps {
47
46
  setColumns(newValue: any): void;
48
47
  columns: Record<string, IColumn>;
49
48
  value: string[];
@@ -4,7 +4,7 @@ import { Icon, FloatingMenu, ListTitle, ListItem } from "@ax/components";
4
4
 
5
5
  import * as S from "./style";
6
6
 
7
- const DateFilter = (props: IStatusFilterProps): JSX.Element => {
7
+ const DateFilter = (props: IDateFilterProps): JSX.Element => {
8
8
  const { sortItems, sortedState } = props;
9
9
  const { isAscending, sortedByDate } = sortedState;
10
10
  const sortByModifiedDate = (isAscending: boolean) => sortItems("date", isAscending);
@@ -16,13 +16,13 @@ const DateFilter = (props: IStatusFilterProps): JSX.Element => {
16
16
  isAscending ? <Icon name="FullArrowUp" size="16" /> : <Icon name="FullArrowDown" size="16" />;
17
17
 
18
18
  const Header = () => (
19
- <S.Date isActive={sortedByDate}>
19
+ <S.Date isActive={sortedByDate} data-testid="date-filter">
20
20
  Date
21
21
  <S.IconsWrapper>
22
22
  {sortedByDate ? (
23
23
  <SortedStateArrow />
24
24
  ) : (
25
- <S.InteractiveArrow>
25
+ <S.InteractiveArrow data-testid="date-filter-interactive-arrow">
26
26
  <Icon name="DownArrow" size="16" />
27
27
  </S.InteractiveArrow>
28
28
  )}
@@ -43,7 +43,7 @@ const DateFilter = (props: IStatusFilterProps): JSX.Element => {
43
43
  );
44
44
  };
45
45
 
46
- interface IStatusFilterProps {
46
+ export interface IDateFilterProps {
47
47
  sortedState: any;
48
48
  sortItems(orderPointer: string, isAscendent: boolean): any;
49
49
  }
@@ -104,7 +104,7 @@ const LiveFilter = (props: ILiveFilterProps): JSX.Element => {
104
104
  );
105
105
  };
106
106
 
107
- interface ILiveFilterProps {
107
+ export interface ILiveFilterProps {
108
108
  filterItems(pointer: string, filter: string): void;
109
109
  value: string;
110
110
  isStructuredData?: boolean;
@@ -19,15 +19,6 @@ const IconsWrapper = styled.div`
19
19
  }
20
20
  `;
21
21
 
22
- const InteractiveArrow = styled.div`
23
- display: flex;
24
- svg {
25
- path {
26
- fill: ${(p) => p.theme.color.interactive01};
27
- }
28
- }
29
- `;
30
-
31
22
  const ChecksWrapper = styled.div`
32
23
  padding: ${(p) => p.theme.spacing.xs} ${(p) => p.theme.spacing.s} 0;
33
24
  `;
@@ -35,4 +26,5 @@ const ChecksWrapper = styled.div`
35
26
  const MenuWrapper = styled.div`
36
27
  position: relative;
37
28
  `;
38
- export { LiveOptions, IconsWrapper, InteractiveArrow, ChecksWrapper, MenuWrapper };
29
+
30
+ export { LiveOptions, IconsWrapper, ChecksWrapper, MenuWrapper };