@griddo/ax 10.3.23 → 10.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/__tests__/components/Gallery/GalleryFilters/Orientation/Orientation.test.tsx +5 -2
- package/src/__tests__/components/Gallery/GalleryFilters/SortBy/SortBy.test.tsx +5 -4
- package/src/__tests__/components/Gallery/GalleryFilters/Type/Type.test.tsx +5 -2
- package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +12 -11
- package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +17 -16
- package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +14 -13
- package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +21 -20
- package/src/__tests__/components/TableFilters/RoleFilter/RoleFilter.test.tsx +6 -5
- package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +8 -7
- package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +21 -20
- package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +24 -23
- package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +6 -5
- package/src/__tests__/components/TableFilters/UsersFilter/UsersFilter.test.tsx +17 -16
- package/src/api/sites.tsx +5 -9
- package/src/components/Button/index.tsx +3 -1
- package/src/components/Button/style.tsx +6 -0
- package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/TemplateManager/index.tsx +2 -2
- package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/index.tsx +1 -1
- package/src/components/Fields/ArrayFieldGroup/ArrayFieldInline/index.tsx +3 -2
- package/src/components/Fields/ArrayFieldGroup/ArrayFieldItem/index.tsx +3 -1
- package/src/components/Fields/ArrayFieldGroup/index.tsx +5 -2
- package/src/components/Fields/CheckField/style.tsx +2 -2
- package/src/components/Fields/ColorPicker/index.tsx +4 -2
- package/src/components/Fields/ColorPicker/style.tsx +4 -0
- package/src/components/Fields/DateField/DatePickerInput/index.tsx +1 -1
- package/src/components/Fields/FileField/index.tsx +3 -1
- package/src/components/Fields/FileField/style.tsx +9 -4
- package/src/components/Fields/SliderField/index.tsx +4 -2
- package/src/components/Fields/SliderField/style.tsx +53 -4
- package/src/components/Fields/TimeField/style.tsx +6 -5
- package/src/components/FileGallery/index.tsx +26 -16
- package/src/components/FileGallery/style.tsx +12 -1
- package/src/components/FilterTagsBar/index.tsx +61 -0
- package/src/components/FilterTagsBar/style.tsx +30 -0
- package/src/components/FloatingMenu/index.tsx +5 -1
- package/src/components/Gallery/GalleryFilters/Orientation/index.tsx +14 -6
- package/src/components/Gallery/GalleryFilters/SortBy/index.tsx +24 -8
- package/src/components/Gallery/GalleryFilters/Type/index.tsx +22 -9
- package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/style.tsx +2 -1
- package/src/components/Gallery/hooks.tsx +37 -23
- package/src/components/Gallery/index.tsx +38 -20
- package/src/components/Gallery/style.tsx +15 -2
- package/src/components/MainWrapper/AppBar/index.tsx +3 -0
- package/src/components/MainWrapper/index.tsx +1 -0
- package/src/components/SearchTagsBar/index.tsx +43 -0
- package/src/components/SearchTagsBar/style.tsx +30 -0
- package/src/components/TableFilters/CategoryFilter/index.tsx +17 -10
- package/src/components/TableFilters/CheckGroupFilter/index.tsx +12 -9
- package/src/components/TableFilters/DateFilter/index.tsx +3 -2
- package/src/components/TableFilters/LastAccessFilter/index.tsx +4 -4
- package/src/components/TableFilters/LiveFilter/index.tsx +26 -22
- package/src/components/TableFilters/NameFilter/index.tsx +4 -3
- package/src/components/TableFilters/PermissionsFilter/index.tsx +4 -3
- package/src/components/TableFilters/RoleFilter/index.tsx +17 -7
- package/src/components/TableFilters/SiteFilter/index.tsx +23 -8
- package/src/components/TableFilters/StateFilter/index.tsx +15 -6
- package/src/components/TableFilters/StatusFilter/index.tsx +3 -2
- package/src/components/TableFilters/TranslationsFilter/index.tsx +19 -11
- package/src/components/TableFilters/TypeFilter/index.tsx +9 -5
- package/src/components/TableFilters/UsersFilter/index.tsx +4 -3
- package/src/components/Tag/index.tsx +5 -4
- package/src/components/index.tsx +4 -0
- package/src/containers/Navigation/Menu/actions.tsx +1 -13
- package/src/containers/Navigation/Menu/constants.tsx +0 -1
- package/src/containers/Navigation/Menu/interfaces.tsx +1 -7
- package/src/containers/Navigation/Menu/reducer.tsx +0 -4
- package/src/containers/Sites/actions.tsx +2 -1
- package/src/containers/Sites/interfaces.tsx +2 -2
- package/src/containers/Sites/reducer.tsx +2 -2
- package/src/containers/StructuredData/actions.tsx +2 -1
- package/src/forms/editor.tsx +1 -1
- package/src/modules/Categories/CategoriesList/CategoryItem/style.tsx +2 -0
- package/src/modules/Content/BulkHeader/TableHeader/index.tsx +26 -14
- package/src/modules/Content/BulkHeader/index.tsx +3 -3
- package/src/modules/Content/PageItem/index.tsx +21 -23
- package/src/modules/Content/PageItem/style.tsx +2 -0
- package/src/modules/Content/hooks.tsx +23 -13
- package/src/modules/Content/index.tsx +44 -11
- package/src/modules/Content/style.tsx +19 -1
- package/src/modules/FileDrive/Breadcrumb/style.tsx +1 -1
- package/src/modules/FileDrive/FileDragAndDrop/index.tsx +7 -6
- package/src/modules/FileDrive/FileDragAndDrop/style.tsx +2 -0
- package/src/modules/FileDrive/FileFilters/SortBy/index.tsx +24 -8
- package/src/modules/FileDrive/FileFilters/Type/index.tsx +26 -22
- package/src/modules/FileDrive/hooks.tsx +28 -13
- package/src/modules/FileDrive/index.tsx +31 -18
- package/src/modules/FileDrive/style.tsx +20 -1
- package/src/modules/Navigation/Defaults/Item/style.tsx +2 -0
- package/src/modules/Navigation/Menus/List/Nav/index.tsx +10 -12
- package/src/modules/Navigation/Menus/List/Table/SidePanel/index.tsx +0 -2
- package/src/modules/Navigation/Menus/List/index.tsx +8 -5
- package/src/modules/Redirects/BulkHeader/TableHeader/index.tsx +4 -2
- package/src/modules/Redirects/BulkHeader/index.tsx +3 -2
- package/src/modules/Redirects/hooks.tsx +23 -15
- package/src/modules/Redirects/index.tsx +61 -44
- package/src/modules/Redirects/style.tsx +10 -0
- package/src/modules/Settings/Integrations/BulkHeader/TableHeader/index.tsx +7 -11
- package/src/modules/Settings/Integrations/BulkHeader/index.tsx +4 -8
- package/src/modules/Settings/Integrations/hooks.tsx +23 -19
- package/src/modules/Settings/Integrations/index.tsx +22 -26
- package/src/modules/Settings/Integrations/style.tsx +7 -0
- package/src/modules/Sites/SitesList/GridView/GridHeaderFilter/index.tsx +8 -7
- package/src/modules/Sites/SitesList/ListView/BulkHeader/TableHeader/index.tsx +10 -5
- package/src/modules/Sites/SitesList/ListView/BulkHeader/index.tsx +4 -3
- package/src/modules/Sites/SitesList/hooks.tsx +26 -20
- package/src/modules/Sites/SitesList/index.tsx +53 -22
- package/src/modules/Sites/SitesList/style.tsx +16 -0
- package/src/modules/StructuredData/StructuredDataList/BulkHeader/TableHeader/index.tsx +3 -3
- package/src/modules/StructuredData/StructuredDataList/BulkHeader/index.tsx +3 -3
- package/src/modules/StructuredData/StructuredDataList/GlobalPageItem/index.tsx +3 -3
- package/src/modules/StructuredData/StructuredDataList/GlobalPageItem/style.tsx +2 -0
- package/src/modules/StructuredData/StructuredDataList/StructuredDataItem/style.tsx +2 -0
- package/src/modules/StructuredData/StructuredDataList/hooks.tsx +25 -15
- package/src/modules/StructuredData/StructuredDataList/index.tsx +57 -14
- package/src/modules/StructuredData/StructuredDataList/style.tsx +10 -1
- package/src/modules/Users/Roles/BulkHeader/TableHeader/index.tsx +2 -2
- package/src/modules/Users/Roles/BulkHeader/index.tsx +2 -5
- package/src/modules/Users/Roles/hooks.tsx +24 -15
- package/src/modules/Users/Roles/index.tsx +7 -18
- package/src/modules/Users/UserList/BulkHeader/TableHeader/index.tsx +5 -18
- package/src/modules/Users/UserList/BulkHeader/index.tsx +15 -13
- package/src/modules/Users/UserList/hooks.tsx +27 -25
- package/src/modules/Users/UserList/index.tsx +69 -43
- package/src/modules/Users/UserList/style.tsx +10 -1
- package/src/types/index.tsx +19 -13
|
@@ -7,13 +7,14 @@ import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
|
7
7
|
import { parseTheme } from "@ax/helpers";
|
|
8
8
|
import globalTheme from "@ax/themes/theme.json";
|
|
9
9
|
import StatusFilter, { IStatusFilterProps } from "@ax/components/TableFilters/StatusFilter";
|
|
10
|
+
import { IQueryValue } from "@ax/types";
|
|
10
11
|
|
|
11
12
|
afterEach(cleanup);
|
|
12
13
|
const defaultProps = mock<IStatusFilterProps>();
|
|
13
14
|
describe("StatusFilter component rendering", () => {
|
|
14
15
|
it("should render date filter", () => {
|
|
15
|
-
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer:
|
|
16
|
-
((orderPointer:
|
|
16
|
+
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
17
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
17
18
|
defaultProps.sortedState = { isAscending: false, sortedByDate: false, sortedByTitle: false, sortedByURL: false };
|
|
18
19
|
defaultProps.sortItems = onClickMock;
|
|
19
20
|
defaultProps.isStructuredData = false;
|
|
@@ -30,8 +31,8 @@ describe("StatusFilter component rendering", () => {
|
|
|
30
31
|
});
|
|
31
32
|
|
|
32
33
|
it("should render interactive arrow if not filter selected", () => {
|
|
33
|
-
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer:
|
|
34
|
-
((orderPointer:
|
|
34
|
+
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
35
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
35
36
|
defaultProps.sortedState = { isAscending: false, sortedByDate: false, sortedByTitle: false, sortedByURL: false };
|
|
36
37
|
defaultProps.sortItems = onClickMock;
|
|
37
38
|
defaultProps.isStructuredData = false;
|
|
@@ -47,8 +48,8 @@ describe("StatusFilter component rendering", () => {
|
|
|
47
48
|
});
|
|
48
49
|
|
|
49
50
|
it("should render FullArrowDown icon if is filtered by most recent", () => {
|
|
50
|
-
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer:
|
|
51
|
-
((orderPointer:
|
|
51
|
+
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
52
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
52
53
|
defaultProps.sortedState = { isAscending: false, sortedByDate: true, sortedByTitle: false, sortedByURL: false };
|
|
53
54
|
defaultProps.sortItems = onClickMock;
|
|
54
55
|
defaultProps.isStructuredData = false;
|
|
@@ -68,8 +69,8 @@ describe("StatusFilter events", () => {
|
|
|
68
69
|
it("should render check group on click", () => {
|
|
69
70
|
const onClickMock = jest.fn();
|
|
70
71
|
defaultProps.sortedState = { isAscending: false, sortedByDate: false };
|
|
71
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
72
|
-
((orderPointer:
|
|
72
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
73
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
73
74
|
render(
|
|
74
75
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
75
76
|
<StatusFilter {...defaultProps} />
|
|
@@ -88,8 +89,8 @@ describe("StatusFilter events", () => {
|
|
|
88
89
|
it("should call sortItems function with 'modified, true' as param when it's not structured data and is ascending", async () => {
|
|
89
90
|
const onClickMock = jest.fn();
|
|
90
91
|
defaultProps.sortedState = { isAscending: false, sortedByDate: false };
|
|
91
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
92
|
-
((orderPointer:
|
|
92
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
93
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
93
94
|
render(
|
|
94
95
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
95
96
|
<StatusFilter {...defaultProps} />
|
|
@@ -108,14 +109,14 @@ describe("StatusFilter events", () => {
|
|
|
108
109
|
fireEvent.click(listItems[1]);
|
|
109
110
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
110
111
|
const isAscending = true;
|
|
111
|
-
expect(onClickMock).toBeCalledWith("modified", isAscending);
|
|
112
|
+
expect(onClickMock).toBeCalledWith([{ label: "modified", value: "modified" }], isAscending);
|
|
112
113
|
});
|
|
113
114
|
|
|
114
115
|
it("should call sortItems function with 'date, true' as param when it's not structured data and is asceding", async () => {
|
|
115
116
|
const onClickMock = jest.fn();
|
|
116
117
|
defaultProps.sortedState = { isAscending: false, sortedByDate: false };
|
|
117
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
118
|
-
((orderPointer:
|
|
118
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
119
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
119
120
|
defaultProps.isStructuredData = true;
|
|
120
121
|
|
|
121
122
|
render(
|
|
@@ -135,14 +136,14 @@ describe("StatusFilter events", () => {
|
|
|
135
136
|
|
|
136
137
|
fireEvent.click(listItems[1]);
|
|
137
138
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
138
|
-
expect(onClickMock).toBeCalledWith("date", true);
|
|
139
|
+
expect(onClickMock).toBeCalledWith([{ label: "date", value: "date" }], true);
|
|
139
140
|
});
|
|
140
141
|
|
|
141
142
|
it("should call sortItems function with 'modified, false' as param when it's not structured data and is not ascending", async () => {
|
|
142
143
|
const onClickMock = jest.fn();
|
|
143
144
|
defaultProps.sortedState = { isAscending: false, sortedByDate: false };
|
|
144
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
145
|
-
((orderPointer:
|
|
145
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
146
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
146
147
|
defaultProps.isStructuredData = false;
|
|
147
148
|
|
|
148
149
|
render(
|
|
@@ -163,14 +164,14 @@ describe("StatusFilter events", () => {
|
|
|
163
164
|
fireEvent.click(listItems[0]);
|
|
164
165
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
165
166
|
const isAscending = false;
|
|
166
|
-
expect(onClickMock).toBeCalledWith("modified", isAscending);
|
|
167
|
+
expect(onClickMock).toBeCalledWith([{ label: "modified", value: "modified" }], isAscending);
|
|
167
168
|
});
|
|
168
169
|
|
|
169
170
|
it("should call sortItems function with 'date, false' as param when it's not structured data and is not asceding", async () => {
|
|
170
171
|
const onClickMock = jest.fn();
|
|
171
172
|
defaultProps.sortedState = { isAscending: false, sortedByDate: false };
|
|
172
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
173
|
-
((orderPointer:
|
|
173
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
174
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
174
175
|
defaultProps.isStructuredData = true;
|
|
175
176
|
|
|
176
177
|
render(
|
|
@@ -190,6 +191,6 @@ describe("StatusFilter events", () => {
|
|
|
190
191
|
|
|
191
192
|
fireEvent.click(listItems[0]);
|
|
192
193
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
193
|
-
expect(onClickMock).toBeCalledWith("date", false);
|
|
194
|
+
expect(onClickMock).toBeCalledWith([{ label: "date", value: "date" }], false);
|
|
194
195
|
});
|
|
195
196
|
});
|
package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx
CHANGED
|
@@ -9,14 +9,15 @@ import { parseTheme } from "@ax/helpers";
|
|
|
9
9
|
|
|
10
10
|
import globalTheme from "@ax/themes/theme.json";
|
|
11
11
|
import TranslationsFilter, { ITranslationsFilterProps } from "@ax/components/TableFilters/TranslationsFilter";
|
|
12
|
+
import { IQueryValue } from "@ax/types";
|
|
12
13
|
|
|
13
14
|
afterEach(cleanup);
|
|
14
15
|
const defaultProps = mock<ITranslationsFilterProps>();
|
|
15
16
|
describe("TranslationsFilter component rendering", () => {
|
|
16
17
|
it("should render name filter", () => {
|
|
17
|
-
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
18
|
-
((pointer: string, filter:
|
|
19
|
-
defaultProps.value = "all";
|
|
18
|
+
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]> &
|
|
19
|
+
((pointer: string, filter: IQueryValue[]) => void);
|
|
20
|
+
defaultProps.value = [{ value: "all", label: "All" }];
|
|
20
21
|
defaultProps.filterItems = onClickMock;
|
|
21
22
|
|
|
22
23
|
render(
|
|
@@ -31,9 +32,9 @@ describe("TranslationsFilter component rendering", () => {
|
|
|
31
32
|
});
|
|
32
33
|
|
|
33
34
|
it("should render icon's wrapper", () => {
|
|
34
|
-
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
35
|
-
((pointer: string, filter:
|
|
36
|
-
defaultProps.value = "all";
|
|
35
|
+
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]> &
|
|
36
|
+
((pointer: string, filter: IQueryValue[]) => void);
|
|
37
|
+
defaultProps.value = [{ value: "all", label: "All" }];
|
|
37
38
|
defaultProps.filterItems = onClickMock;
|
|
38
39
|
render(
|
|
39
40
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -46,9 +47,9 @@ describe("TranslationsFilter component rendering", () => {
|
|
|
46
47
|
});
|
|
47
48
|
|
|
48
49
|
it("should render options", async () => {
|
|
49
|
-
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
50
|
-
((pointer: string, filter:
|
|
51
|
-
defaultProps.value = "all";
|
|
50
|
+
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]> &
|
|
51
|
+
((pointer: string, filter: IQueryValue[]) => void);
|
|
52
|
+
defaultProps.value = [{ value: "all", label: "All" }];
|
|
52
53
|
defaultProps.filterItems = onClickMock;
|
|
53
54
|
render(
|
|
54
55
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -70,9 +71,9 @@ describe("TranslationsFilter component rendering", () => {
|
|
|
70
71
|
|
|
71
72
|
describe("TranslationsFilter events", () => {
|
|
72
73
|
it("should render check group on click", () => {
|
|
73
|
-
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
74
|
-
((pointer: string, filter:
|
|
75
|
-
defaultProps.value = "all";
|
|
74
|
+
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]> &
|
|
75
|
+
((pointer: string, filter: IQueryValue[]) => void);
|
|
76
|
+
defaultProps.value = [{ value: "all", label: "All" }];
|
|
76
77
|
defaultProps.filterItems = onClickMock;
|
|
77
78
|
render(
|
|
78
79
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -90,9 +91,9 @@ describe("TranslationsFilter events", () => {
|
|
|
90
91
|
});
|
|
91
92
|
|
|
92
93
|
it("should call filterItems with 'all' on click 'All' option", async () => {
|
|
93
|
-
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
94
|
-
((pointer: string, filter:
|
|
95
|
-
defaultProps.value = "all";
|
|
94
|
+
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]> &
|
|
95
|
+
((pointer: string, filter: IQueryValue[]) => void);
|
|
96
|
+
defaultProps.value = [{ value: "all", label: "All" }];
|
|
96
97
|
defaultProps.filterItems = onClickMock;
|
|
97
98
|
render(
|
|
98
99
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -108,13 +109,13 @@ describe("TranslationsFilter events", () => {
|
|
|
108
109
|
|
|
109
110
|
fireEvent.click(checksFieldInputs[0]);
|
|
110
111
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
111
|
-
expect(onClickMock).toBeCalledWith("translated", "all");
|
|
112
|
+
expect(onClickMock).toBeCalledWith("translated", [{ label: "All", value: "all" }]);
|
|
112
113
|
});
|
|
113
114
|
|
|
114
115
|
it("should call filterItems with 'no' on click 'Not translated content' option", async () => {
|
|
115
|
-
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
116
|
-
((pointer: string, filter:
|
|
117
|
-
defaultProps.value = "all";
|
|
116
|
+
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]> &
|
|
117
|
+
((pointer: string, filter: IQueryValue[]) => void);
|
|
118
|
+
defaultProps.value = [{ value: "all", label: "All" }];
|
|
118
119
|
defaultProps.filterItems = onClickMock;
|
|
119
120
|
render(
|
|
120
121
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -130,13 +131,13 @@ describe("TranslationsFilter events", () => {
|
|
|
130
131
|
|
|
131
132
|
fireEvent.click(checksFieldInputs[1]);
|
|
132
133
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
133
|
-
expect(onClickMock).toBeCalledWith("translated", "no");
|
|
134
|
+
expect(onClickMock).toBeCalledWith("translated", [{ label: "Not translated content", value: "no" }]);
|
|
134
135
|
});
|
|
135
136
|
|
|
136
137
|
it("should close floating menu when option is checked", async () => {
|
|
137
|
-
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
138
|
-
((pointer: string, filter:
|
|
139
|
-
defaultProps.value = "all";
|
|
138
|
+
const onClickMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]> &
|
|
139
|
+
((pointer: string, filter: IQueryValue[]) => void);
|
|
140
|
+
defaultProps.value = [{ value: "all", label: "All" }];
|
|
140
141
|
defaultProps.filterItems = onClickMock;
|
|
141
142
|
render(
|
|
142
143
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -7,6 +7,7 @@ import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
|
7
7
|
import TypeFilter, { ITypeFilterProps } from "@ax/components/TableFilters/TypeFilter";
|
|
8
8
|
import globalTheme from "@ax/themes/theme.json";
|
|
9
9
|
import { parseTheme } from "@ax/helpers";
|
|
10
|
+
import { IQueryValue } from "@ax/types";
|
|
10
11
|
|
|
11
12
|
afterEach(cleanup);
|
|
12
13
|
|
|
@@ -31,7 +32,7 @@ describe("TypeFilter component rendering", () => {
|
|
|
31
32
|
},
|
|
32
33
|
];
|
|
33
34
|
defaultProps.pointer = "type";
|
|
34
|
-
defaultProps.filterItems = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
35
|
+
defaultProps.filterItems = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]>;
|
|
35
36
|
|
|
36
37
|
render(
|
|
37
38
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -65,7 +66,7 @@ describe("TypeFilter events", () => {
|
|
|
65
66
|
},
|
|
66
67
|
];
|
|
67
68
|
defaultProps.pointer = "type";
|
|
68
|
-
defaultProps.filterItems = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
69
|
+
defaultProps.filterItems = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]>;
|
|
69
70
|
|
|
70
71
|
render(
|
|
71
72
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -103,7 +104,7 @@ describe("TypeFilter events", () => {
|
|
|
103
104
|
},
|
|
104
105
|
];
|
|
105
106
|
defaultProps.pointer = "type";
|
|
106
|
-
const onChangeMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
107
|
+
const onChangeMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]>;
|
|
107
108
|
defaultProps.filterItems = onChangeMock;
|
|
108
109
|
|
|
109
110
|
render(
|
|
@@ -144,7 +145,7 @@ describe("TypeFilter events", () => {
|
|
|
144
145
|
},
|
|
145
146
|
];
|
|
146
147
|
defaultProps.pointer = "type";
|
|
147
|
-
const onChangeMock = jest.fn() as CalledWithMock<void, [pointer: string, filter:
|
|
148
|
+
const onChangeMock = jest.fn() as CalledWithMock<void, [pointer: string, filter: IQueryValue[]]>;
|
|
148
149
|
defaultProps.filterItems = onChangeMock;
|
|
149
150
|
|
|
150
151
|
render(
|
|
@@ -160,6 +161,6 @@ describe("TypeFilter events", () => {
|
|
|
160
161
|
const checkFieldInputs = screen.queryAllByTestId("check-field-input");
|
|
161
162
|
fireEvent.click(checkFieldInputs[1]);
|
|
162
163
|
expect(onChangeMock).toHaveBeenCalledTimes(1);
|
|
163
|
-
expect(onChangeMock).toBeCalledWith("type", "unique");
|
|
164
|
+
expect(onChangeMock).toBeCalledWith("type", [{ label: "Basic templates", value: "unique" }]);
|
|
164
165
|
});
|
|
165
166
|
});
|
|
@@ -8,13 +8,14 @@ import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
|
8
8
|
import { parseTheme } from "@ax/helpers";
|
|
9
9
|
import globalTheme from "@ax/themes/theme.json";
|
|
10
10
|
import UsersFilter, { IUsersFilterProps } from "@ax/components/TableFilters/UsersFilter";
|
|
11
|
+
import { IQueryValue } from "@ax/types";
|
|
11
12
|
|
|
12
13
|
afterEach(cleanup);
|
|
13
14
|
const defaultProps = mock<IUsersFilterProps>();
|
|
14
15
|
describe("UsersFilter component rendering", () => {
|
|
15
16
|
it("should render users filter", () => {
|
|
16
|
-
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer:
|
|
17
|
-
((orderPointer:
|
|
17
|
+
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
18
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
18
19
|
defaultProps.sortedState = { isAscending: true, sortedByTitle: false, sortedByUsers: true };
|
|
19
20
|
|
|
20
21
|
defaultProps.sortItems = onClickMock;
|
|
@@ -31,8 +32,8 @@ describe("UsersFilter component rendering", () => {
|
|
|
31
32
|
});
|
|
32
33
|
|
|
33
34
|
it("should render interactive arrow if not filter selected", () => {
|
|
34
|
-
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer:
|
|
35
|
-
((orderPointer:
|
|
35
|
+
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
36
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
36
37
|
defaultProps.sortedState = { isAscending: true, sortedByTitle: false, sortedByUsers: false };
|
|
37
38
|
defaultProps.sortItems = onClickMock;
|
|
38
39
|
|
|
@@ -47,8 +48,8 @@ describe("UsersFilter component rendering", () => {
|
|
|
47
48
|
});
|
|
48
49
|
|
|
49
50
|
it("should not render interactive arrow if filter selected", () => {
|
|
50
|
-
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer:
|
|
51
|
-
((orderPointer:
|
|
51
|
+
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
52
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
52
53
|
defaultProps.sortedState = { isAscending: false, sortedByTitle: false, sortedByUsers: true };
|
|
53
54
|
defaultProps.sortItems = onClickMock;
|
|
54
55
|
|
|
@@ -63,8 +64,8 @@ describe("UsersFilter component rendering", () => {
|
|
|
63
64
|
});
|
|
64
65
|
|
|
65
66
|
it("should render FullArrowUp icon if is filtered by ascending users", () => {
|
|
66
|
-
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer:
|
|
67
|
-
((orderPointer:
|
|
67
|
+
const onClickMock = jest.fn() as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
68
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
68
69
|
defaultProps.sortedState = { isAscending: true, sortedByTitle: false, sortedByUsers: true };
|
|
69
70
|
defaultProps.sortItems = onClickMock;
|
|
70
71
|
|
|
@@ -83,8 +84,8 @@ describe("UsersFilter events", () => {
|
|
|
83
84
|
it("should render check group on click", () => {
|
|
84
85
|
const onClickMock = jest.fn();
|
|
85
86
|
defaultProps.sortedState = { isAscending: true, sortedByTitle: false, sortedByUsers: true };
|
|
86
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
87
|
-
((orderPointer:
|
|
87
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
88
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
88
89
|
|
|
89
90
|
render(
|
|
90
91
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -106,8 +107,8 @@ describe("UsersFilter events", () => {
|
|
|
106
107
|
it("should call filterItems with isAscending on click 'Ascendent' option", async () => {
|
|
107
108
|
const onClickMock = jest.fn();
|
|
108
109
|
defaultProps.sortedState = { isAscending: true, sortedByTitle: false, sortedByUsers: true };
|
|
109
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
110
|
-
((orderPointer:
|
|
110
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
111
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
111
112
|
|
|
112
113
|
render(
|
|
113
114
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -124,14 +125,14 @@ describe("UsersFilter events", () => {
|
|
|
124
125
|
fireEvent.click(listItems[0]);
|
|
125
126
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
126
127
|
const isAscending = true;
|
|
127
|
-
expect(onClickMock).toBeCalledWith("users", isAscending);
|
|
128
|
+
expect(onClickMock).toBeCalledWith([{ label: "users", value: "users" }], isAscending);
|
|
128
129
|
});
|
|
129
130
|
|
|
130
131
|
it("should call filterItems with isAscending false on click 'Descendent' option", async () => {
|
|
131
132
|
const onClickMock = jest.fn();
|
|
132
133
|
defaultProps.sortedState = { isAscending: true, sortedByTitle: false, sortedByUsers: true };
|
|
133
|
-
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer:
|
|
134
|
-
((orderPointer:
|
|
134
|
+
defaultProps.sortItems = onClickMock as CalledWithMock<any, [orderPointer: IQueryValue[], isAscendent: boolean]> &
|
|
135
|
+
((orderPointer: IQueryValue[], isAscendent: boolean) => any);
|
|
135
136
|
|
|
136
137
|
render(
|
|
137
138
|
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
@@ -148,6 +149,6 @@ describe("UsersFilter events", () => {
|
|
|
148
149
|
fireEvent.click(listItems[1]);
|
|
149
150
|
expect(onClickMock).toHaveBeenCalledTimes(1);
|
|
150
151
|
const isAscending = false;
|
|
151
|
-
expect(onClickMock).toBeCalledWith("users", isAscending);
|
|
152
|
+
expect(onClickMock).toBeCalledWith([{ label: "users", value: "users" }], isAscending);
|
|
152
153
|
});
|
|
153
154
|
});
|
package/src/api/sites.tsx
CHANGED
|
@@ -132,7 +132,7 @@ const getAllSites = async (params: IGetSitesParams = { recentSitesNumber: 7 }) =
|
|
|
132
132
|
if (searchQuery && searchQuery.trim() !== "") {
|
|
133
133
|
SERVICES.GET_ALL_SITES.dynamicUrl = `${SERVICES.GET_ALL_SITES.dynamicUrl}${searchQuery}`;
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
if (token) {
|
|
137
137
|
return sendInitialRequest(SERVICES.GET_ALL_SITES, token, { recentSitesNumber: 7 });
|
|
138
138
|
} else {
|
|
@@ -147,7 +147,7 @@ const getSiteInfo = async (siteID: number) => {
|
|
|
147
147
|
return sendRequest(SERVICES.GET_SITE_INFO);
|
|
148
148
|
};
|
|
149
149
|
|
|
150
|
-
const getStructuredSitePages = async (params: IGetSitePagesParams, structuredData: string, filterQuery
|
|
150
|
+
const getStructuredSitePages = async (params: IGetSitePagesParams, structuredData: string, filterQuery = "") => {
|
|
151
151
|
const {
|
|
152
152
|
host,
|
|
153
153
|
endpoint: [prefix, suffix],
|
|
@@ -155,9 +155,7 @@ const getStructuredSitePages = async (params: IGetSitePagesParams, structuredDat
|
|
|
155
155
|
|
|
156
156
|
const { siteID, deleted, page, itemsPerPage, query, format } = params;
|
|
157
157
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
SERVICES.GET_SITE_STRUCTURED_PAGES.dynamicUrl = `${host}${prefix}${siteID}${suffix}${structuredData}${filters}deleted=${deleted}&page=${page}&itemsPerPage=${itemsPerPage}`;
|
|
158
|
+
SERVICES.GET_SITE_STRUCTURED_PAGES.dynamicUrl = `${host}${prefix}${siteID}${suffix}${structuredData}?deleted=${deleted}&page=${page}&itemsPerPage=${itemsPerPage}${filterQuery}`;
|
|
161
159
|
|
|
162
160
|
if (query && query.trim() !== "")
|
|
163
161
|
SERVICES.GET_SITE_STRUCTURED_PAGES.dynamicUrl = SERVICES.GET_SITE_STRUCTURED_PAGES.dynamicUrl + `&query=${query}`;
|
|
@@ -167,7 +165,7 @@ const getStructuredSitePages = async (params: IGetSitePagesParams, structuredDat
|
|
|
167
165
|
return sendRequest(SERVICES.GET_SITE_STRUCTURED_PAGES);
|
|
168
166
|
};
|
|
169
167
|
|
|
170
|
-
const getSitePages = async (params: IGetSitePagesParams, filterQuery
|
|
168
|
+
const getSitePages = async (params: IGetSitePagesParams, filterQuery = ""): Promise<AxiosResponse> => {
|
|
171
169
|
const {
|
|
172
170
|
host,
|
|
173
171
|
endpoint: [prefix, suffix],
|
|
@@ -176,9 +174,7 @@ const getSitePages = async (params: IGetSitePagesParams, filterQuery?: string):
|
|
|
176
174
|
const { siteID, deleted, page, itemsPerPage, query, filterStructuredData, lang, format, filterPages, ignoreLang } =
|
|
177
175
|
params;
|
|
178
176
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
SERVICES.GET_SITE_PAGES.dynamicUrl = `${host}${prefix}${siteID}${suffix}${filters}deleted=${deleted}`;
|
|
177
|
+
SERVICES.GET_SITE_PAGES.dynamicUrl = `${host}${prefix}${siteID}${suffix}?deleted=${deleted}${filterQuery}`;
|
|
182
178
|
|
|
183
179
|
if (page && itemsPerPage)
|
|
184
180
|
SERVICES.GET_SITE_PAGES.dynamicUrl =
|
|
@@ -21,7 +21,9 @@ const Button = (props: IButtonProps): JSX.Element => {
|
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
const iconSize = buttonStyle === buttonStyles.MINIMAL ? "16" : "24";
|
|
25
|
+
|
|
26
|
+
let iconWrapper = icon ? <Icon name={icon} size={iconSize} /> : loader ? <Loader name={loader} /> : <></>;
|
|
25
27
|
let iconBackWrapper = backIcon ? <Icon name={backIcon} /> : <></>;
|
|
26
28
|
|
|
27
29
|
const buttonContent = (
|
|
@@ -129,6 +129,12 @@ const MinimalButton = styled.button`
|
|
|
129
129
|
color: ${(p) => p.theme.color.interactive01};
|
|
130
130
|
border: none;
|
|
131
131
|
cursor: pointer;
|
|
132
|
+
span {
|
|
133
|
+
display: flex;
|
|
134
|
+
span {
|
|
135
|
+
padding-left: ${(p) => p.theme.spacing.xxs};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
132
138
|
`;
|
|
133
139
|
|
|
134
140
|
const Label = styled.span<{ icon?: string; backIcon?: string }>`
|
package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/TemplateManager/index.tsx
CHANGED
|
@@ -37,7 +37,7 @@ export const TemplateManager = (props: IProps): JSX.Element => {
|
|
|
37
37
|
const modulesDataPacks = activatedPacks.map((pack: IDataPack) => pack.modules).flat();
|
|
38
38
|
|
|
39
39
|
const getFieldProps = (field: ISchemaField) => {
|
|
40
|
-
const { key, type, whiteList = [], slugTo, readonly } = field;
|
|
40
|
+
const { key, type, whiteList = [], slugTo, readonly, disabled } = field;
|
|
41
41
|
const isArr = type === "ComponentArray";
|
|
42
42
|
const currentContent = isArr ? templateContent[key] : templateContent;
|
|
43
43
|
const fieldObjKey = !isArr ? `${key}` : `modules`;
|
|
@@ -72,7 +72,7 @@ export const TemplateManager = (props: IProps): JSX.Element => {
|
|
|
72
72
|
handleUpdate,
|
|
73
73
|
error,
|
|
74
74
|
readonly,
|
|
75
|
-
disabledField: isComputedField,
|
|
75
|
+
disabledField: isComputedField || disabled,
|
|
76
76
|
};
|
|
77
77
|
};
|
|
78
78
|
|
|
@@ -75,7 +75,7 @@ const PageConnectedField = (props: any) => {
|
|
|
75
75
|
const isDisabled =
|
|
76
76
|
(!isGlobal &&
|
|
77
77
|
(isModuleDisabled(selectedContent.component, componentType, activatedModules) || !isTemplateActivated)) ||
|
|
78
|
-
isFieldReadOnly;
|
|
78
|
+
isFieldReadOnly || field.disabled;
|
|
79
79
|
|
|
80
80
|
const isMetaTitleModified = selectedContent.metaTitle && selectedContent.metaTitle !== selectedContent.title;
|
|
81
81
|
|
|
@@ -6,7 +6,7 @@ import { ISite } from "@ax/types";
|
|
|
6
6
|
import * as S from "./style";
|
|
7
7
|
|
|
8
8
|
const ArrayFieldInline = (props: IProps): JSX.Element => {
|
|
9
|
-
const { fields, item, index, onChange, handleDelete, site } = props;
|
|
9
|
+
const { fields, item, index, onChange, handleDelete, site, disabled } = props;
|
|
10
10
|
|
|
11
11
|
const deleteItem = () => handleDelete(index);
|
|
12
12
|
|
|
@@ -30,7 +30,7 @@ const ArrayFieldInline = (props: IProps): JSX.Element => {
|
|
|
30
30
|
<S.Wrapper data-testid="arrayFieldInline">
|
|
31
31
|
<S.Content>
|
|
32
32
|
<S.IconWrapper>
|
|
33
|
-
<IconAction icon="delete" onClick={deleteItem} size="s" />
|
|
33
|
+
<IconAction icon="delete" onClick={deleteItem} size="s" disabled={disabled} />
|
|
34
34
|
</S.IconWrapper>
|
|
35
35
|
{getFields(fields)}
|
|
36
36
|
</S.Content>
|
|
@@ -45,6 +45,7 @@ interface IProps {
|
|
|
45
45
|
onChange: (value: Record<string, unknown>) => void;
|
|
46
46
|
handleDelete: (index: number) => void;
|
|
47
47
|
site: ISite | null;
|
|
48
|
+
disabled?: boolean;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
export default ArrayFieldInline;
|
|
@@ -4,7 +4,7 @@ import { ISite } from "@ax/types";
|
|
|
4
4
|
import * as S from "./style";
|
|
5
5
|
|
|
6
6
|
const ArrayFieldItem = (props: IProps): JSX.Element => {
|
|
7
|
-
const { fields, item, name, index, onChange, handleDelete, isOpen, setIsOpen, site } = props;
|
|
7
|
+
const { fields, item, name, index, onChange, handleDelete, isOpen, setIsOpen, site, disabled } = props;
|
|
8
8
|
|
|
9
9
|
const handleClick = () => (isOpen === index ? setIsOpen(null) : setIsOpen(index));
|
|
10
10
|
|
|
@@ -15,6 +15,7 @@ const ArrayFieldItem = (props: IProps): JSX.Element => {
|
|
|
15
15
|
label: "Delete",
|
|
16
16
|
icon: "delete",
|
|
17
17
|
action: deleteItem,
|
|
18
|
+
disabled
|
|
18
19
|
},
|
|
19
20
|
];
|
|
20
21
|
|
|
@@ -63,6 +64,7 @@ interface IProps {
|
|
|
63
64
|
isOpen: number | null;
|
|
64
65
|
setIsOpen: (index: number | null) => void;
|
|
65
66
|
site: ISite | null;
|
|
67
|
+
disabled?: boolean;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
export default ArrayFieldItem;
|
|
@@ -9,7 +9,7 @@ import ArrayFieldInline from "./ArrayFieldInline";
|
|
|
9
9
|
import * as S from "./style";
|
|
10
10
|
|
|
11
11
|
const ArrayFieldGroup = (props: IProps): JSX.Element => {
|
|
12
|
-
const { value, name, innerFields, onChange, divider, arrayType, site } = props;
|
|
12
|
+
const { value, name, innerFields, onChange, divider, arrayType, site, disabled } = props;
|
|
13
13
|
|
|
14
14
|
const initialValue = value ? Object.values(value) : [];
|
|
15
15
|
const initialValueMapped = initialValue.map((val: any) => {
|
|
@@ -61,6 +61,7 @@ const ArrayFieldGroup = (props: IProps): JSX.Element => {
|
|
|
61
61
|
onChange={handleFieldChange}
|
|
62
62
|
handleDelete={handleDelete}
|
|
63
63
|
site={site}
|
|
64
|
+
disabled={disabled}
|
|
64
65
|
/>
|
|
65
66
|
) : (
|
|
66
67
|
<ArrayFieldItem
|
|
@@ -74,12 +75,13 @@ const ArrayFieldGroup = (props: IProps): JSX.Element => {
|
|
|
74
75
|
isOpen={isOpen}
|
|
75
76
|
setIsOpen={setIsOpen}
|
|
76
77
|
site={site}
|
|
78
|
+
disabled={disabled}
|
|
77
79
|
/>
|
|
78
80
|
);
|
|
79
81
|
})}
|
|
80
82
|
</div>
|
|
81
83
|
<S.ButtonWrapper>
|
|
82
|
-
<Button type="button" onClick={handleClick} buttonStyle="line">
|
|
84
|
+
<Button type="button" onClick={handleClick} buttonStyle="line" disabled={disabled}>
|
|
83
85
|
{`Add ${name}`}
|
|
84
86
|
</Button>
|
|
85
87
|
</S.ButtonWrapper>
|
|
@@ -95,6 +97,7 @@ export interface IProps {
|
|
|
95
97
|
divider: { title: string; text: string };
|
|
96
98
|
arrayType: string;
|
|
97
99
|
site: ISite | null;
|
|
100
|
+
disabled?: boolean;
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
export default ArrayFieldGroup;
|
|
@@ -51,8 +51,8 @@ const CheckMark = styled.span<{
|
|
|
51
51
|
content: "";
|
|
52
52
|
position: absolute;
|
|
53
53
|
display: ${(p) => (p.checked || p.indeterminate ? `blocked` : `none`)};
|
|
54
|
-
left:
|
|
55
|
-
top:
|
|
54
|
+
left: 4px;
|
|
55
|
+
top: 0;
|
|
56
56
|
width: 4px;
|
|
57
57
|
height: 10px;
|
|
58
58
|
border: solid #ffffff;
|
|
@@ -8,7 +8,7 @@ import Picker from "./Picker";
|
|
|
8
8
|
import * as S from "./style";
|
|
9
9
|
|
|
10
10
|
const ColorPicker = (props: IProps): JSX.Element => {
|
|
11
|
-
const { value, onChange, error, colors = [], handleValidation, theme, isThemePalette } = props;
|
|
11
|
+
const { value, onChange, error, colors = [], handleValidation, theme, isThemePalette, disabled } = props;
|
|
12
12
|
|
|
13
13
|
const getCurrentColors = () => {
|
|
14
14
|
if (isThemePalette) {
|
|
@@ -105,9 +105,10 @@ const ColorPicker = (props: IProps): JSX.Element => {
|
|
|
105
105
|
error={error}
|
|
106
106
|
placeholder="#FFFFFF"
|
|
107
107
|
onBlur={handleOnBlur}
|
|
108
|
+
disabled={disabled}
|
|
108
109
|
/>
|
|
109
110
|
<S.IconWrapper>
|
|
110
|
-
<IconAction icon={icon} size="s" onClick={togglePicker} />
|
|
111
|
+
<IconAction icon={icon} size="s" onClick={togglePicker} disabled={disabled} />
|
|
111
112
|
</S.IconWrapper>
|
|
112
113
|
</S.InputWrapper>
|
|
113
114
|
{isVisible && (
|
|
@@ -129,6 +130,7 @@ export interface IProps {
|
|
|
129
130
|
handleValidation?: (value: string, validators: Record<string, unknown>) => void;
|
|
130
131
|
theme: string;
|
|
131
132
|
isThemePalette?: boolean;
|
|
133
|
+
disabled?: boolean;
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
export default memo(ColorPicker);
|
|
@@ -44,6 +44,10 @@ const Input = styled.input<{error?: boolean}>`
|
|
|
44
44
|
&::placeholder {
|
|
45
45
|
color: ${(p) => p.theme.color.textLowEmphasis};
|
|
46
46
|
}
|
|
47
|
+
&:disabled {
|
|
48
|
+
color: ${(p) => p.theme.color.interactiveDisabled};
|
|
49
|
+
border-color: ${(p) => p.theme.color.interactiveDisabled};
|
|
50
|
+
}
|
|
47
51
|
`;
|
|
48
52
|
|
|
49
53
|
const IconWrapper = styled.div`
|
|
@@ -42,7 +42,7 @@ const DatePickerInput = (props: IDatePickerProps, ref: any): JSX.Element => {
|
|
|
42
42
|
handleValidation && handleValidation(inputValue, validators);
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
const CalendarIcon = <IconAction icon="calendar" onClick={onClick} />;
|
|
45
|
+
const CalendarIcon = <IconAction icon="calendar" onClick={onClick} disabled={disabled} />;
|
|
46
46
|
const CloseIcon = (
|
|
47
47
|
<S.IconWrapper>
|
|
48
48
|
<Icon name="close" size="16" />
|