@griddo/ax 1.67.10 → 1.68.2
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/config/jest/componentsMock.js +1528 -27
- package/package.json +2 -2
- package/src/__mocks__/reducers/app.tsx +10 -0
- package/src/__mocks__/reducers/sites.tsx +10 -0
- package/src/__tests__/{AnalyticsField.test.tsx → components/Fields/AnalyticsField/AnalyticsField.test.tsx} +5 -5
- package/src/__tests__/{PageAnalytics.test.tsx → components/Fields/AnalyticsField/PageAnalytics/PageAnalytics.test.tsx} +2 -2
- package/src/__tests__/{StructuredDataAnalytics.test.tsx → components/Fields/AnalyticsField/StructuredDataAnalytics/StructuredDataAnalytics.test.tsx} +2 -2
- package/src/__tests__/{ArrayFieldGroup.test.tsx → components/Fields/ArrayFieldGroup/ArrayFieldGroup.test.tsx} +2 -2
- package/src/__tests__/{AsyncCheckGroup.test.tsx → components/Fields/AsyncCheckGroup/AsyncCheckGroup.test.tsx} +2 -2
- package/src/__tests__/{AsyncSelect.test.tsx → components/Fields/AsyncSelect/AsyncSelect.test.tsx} +2 -2
- package/src/__tests__/{CheckField.test.tsx → components/Fields/CheckField/CheckField.test.tsx} +2 -2
- package/src/__tests__/{CheckGroup.test.tsx → components/Fields/CheckGroup/CheckGroup.test.tsx} +2 -2
- package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +195 -0
- package/src/__tests__/components/Fields/ComponentArray/ComponentArray.test.tsx +184 -0
- package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/MixableComponentArray.test.tsx +315 -0
- package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/PasteModuleButton/PasteModuleButton.test.tsx +95 -0
- package/src/__tests__/components/Fields/ComponentArray/SameComponentArray/SameComponentArray.test.tsx +225 -0
- package/src/__tests__/{FieldGroup.test.tsx → components/Fields/FieldGroup/FieldGroup.test.tsx} +2 -2
- package/src/__tests__/components/Fields/FieldsDivider/FieldsDivider.test.tsx +24 -0
- package/src/__tests__/components/Fields/FileField/FileField.test.tsx +135 -0
- package/src/__tests__/{HeadingField.test.tsx → components/Fields/HeadingField/HeadingField.test.tsx} +2 -2
- package/src/__tests__/components/Fields/HiddenField/HiddenField.test.tsx +76 -0
- package/src/__tests__/components/Fields/MultiCheckSelect/MultiCheckSelect.test.tsx +70 -0
- package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +67 -0
- package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +109 -0
- package/src/__tests__/components/Fields/RadioField/RadioField.test.tsx +106 -0
- package/src/__tests__/components/Fields/RichText/RichText.test.tsx +52 -0
- package/src/__tests__/components/Fields/Select/Select.test.tsx +75 -0
- package/src/__tests__/components/Fields/SliderField/SliderField.test.tsx +82 -0
- package/src/__tests__/{TagField.test.tsx → components/Fields/TagField/TagField.test.tsx} +2 -2
- package/src/__tests__/{TextArea.test.tsx → components/Fields/TextArea/TextArea.test.tsx} +2 -2
- package/src/__tests__/{TextField.test.tsx → components/Fields/TextField/TextField.test.tsx} +2 -2
- package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +100 -0
- package/src/__tests__/{UniqueCheck.test.tsx → components/Fields/UniqueCheck/UniqueCheck.test.tsx} +2 -2
- package/src/__tests__/components/Fields/UrlField/UrlField.test.tsx +446 -0
- package/src/__tests__/components/Fields/UrlField/mockedAxios.ts +2214 -0
- package/src/__tests__/components/Fields/VisualUniqueSelection/ImageSelection/ImageSelection.test.tsx +99 -0
- package/src/__tests__/components/Fields/VisualUniqueSelection/ScrollableSelection/ScrollableSelection.test.tsx +176 -0
- package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +78 -0
- package/src/components/ActionMenu/index.tsx +1 -0
- package/src/components/Browser/index.tsx +39 -47
- package/src/components/Browser/style.tsx +15 -15
- package/src/components/BrowserContent/index.tsx +78 -0
- package/src/components/ConfigPanel/Form/ConnectedField/NavConnectedField/index.tsx +3 -5
- package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/index.tsx +2 -6
- package/src/components/ConfigPanel/Header/index.tsx +28 -11
- package/src/components/ConfigPanel/index.tsx +2 -2
- package/src/components/ErrorCenter/index.tsx +11 -4
- package/src/components/Fields/ArrayFieldGroup/index.tsx +4 -2
- package/src/components/Fields/ArrayFieldGroup/style.tsx +7 -0
- package/src/components/Fields/AsyncCheckGroup/index.tsx +1 -1
- package/src/components/Fields/CheckField/index.tsx +1 -1
- package/src/components/Fields/ColorPicker/Picker/index.tsx +9 -3
- package/src/components/Fields/ColorPicker/index.tsx +4 -9
- package/src/components/Fields/ComponentArray/MixableComponentArray/PasteModuleButton/index.tsx +2 -1
- package/src/components/Fields/ComponentArray/MixableComponentArray/index.tsx +27 -22
- package/src/components/Fields/ComponentArray/MixableComponentArray/style.tsx +3 -38
- package/src/components/Fields/ComponentArray/SameComponentArray/index.tsx +3 -2
- package/src/components/Fields/ComponentArray/SameComponentArray/style.tsx +1 -28
- package/src/components/Fields/ComponentArray/helpers.tsx +1 -1
- package/src/components/Fields/ComponentContainer/index.tsx +3 -1
- package/src/components/Fields/FileField/FileDragAndDrop/index.tsx +1 -1
- package/src/components/Fields/FileField/FileDragAndDrop/style.tsx +2 -3
- package/src/components/Fields/FileField/index.tsx +6 -6
- package/src/components/Fields/HiddenField/index.tsx +3 -3
- package/src/components/Fields/MultiCheckSelect/index.tsx +8 -27
- package/src/components/Fields/NoteField/index.tsx +3 -3
- package/src/components/Fields/NumberField/index.tsx +6 -3
- package/src/components/Fields/RadioField/index.tsx +10 -2
- package/src/components/Fields/ReferenceField/index.tsx +8 -1
- package/src/components/Fields/ReferenceField/style.tsx +5 -0
- package/src/components/Fields/RichText/index.tsx +1 -1
- package/src/components/Fields/SliderField/index.tsx +11 -7
- package/src/components/Fields/ToggleField/index.tsx +12 -3
- package/src/components/Fields/UrlField/PageFinder/SelectionListItem/index.tsx +1 -1
- package/src/components/Fields/UrlField/index.tsx +6 -4
- package/src/components/Fields/UrlField/style.tsx +4 -2
- package/src/components/Fields/VisualOption/index.tsx +10 -2
- package/src/components/Fields/VisualUniqueSelection/ImageSelection/index.tsx +2 -2
- package/src/components/Fields/VisualUniqueSelection/ScrollableSelection/index.tsx +4 -3
- package/src/components/Fields/VisualUniqueSelection/ScrollableSelection/style.tsx +1 -1
- package/src/components/Fields/VisualUniqueSelection/index.tsx +3 -3
- package/src/components/FieldsBehavior/index.tsx +4 -4
- package/src/components/FieldsBehavior/style.tsx +5 -12
- package/src/components/FloatingMenu/index.tsx +8 -4
- package/src/components/Loader/index.tsx +12 -8
- package/src/components/MainWrapper/AppBar/index.tsx +1 -0
- package/src/components/MainWrapper/index.tsx +1 -0
- package/src/components/Toast/index.tsx +1 -1
- package/src/components/Tooltip/index.tsx +1 -1
- package/src/components/index.tsx +2 -0
- package/src/containers/App/actions.tsx +3 -7
- package/src/containers/PageEditor/actions.tsx +36 -5
- package/src/forms/editor.tsx +35 -1
- package/src/forms/fields.tsx +6 -2
- package/src/forms/index.tsx +2 -0
- package/src/forms/validators.tsx +29 -8
- package/src/guards/error/index.tsx +1 -1
- package/src/helpers/containerEvaluations.tsx +32 -4
- package/src/helpers/index.tsx +2 -0
- package/src/helpers/structuredData.tsx +2 -2
- package/src/hooks/forms.tsx +1 -28
- package/src/hooks/index.tsx +1 -2
- package/src/modules/FramePreview/index.tsx +70 -36
- package/src/modules/FramePreview/style.tsx +3 -0
- package/src/modules/GlobalEditor/PageBrowser/index.tsx +2 -7
- package/src/modules/GlobalEditor/index.tsx +8 -6
- package/src/modules/GlobalEditor/style.tsx +1 -1
- package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/DefaultsBrowser/index.tsx +0 -4
- package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +3 -2
- package/src/modules/PageEditor/PageBrowser/index.tsx +1 -4
- package/src/modules/PageEditor/index.tsx +6 -6
- package/src/modules/PublicPreview/index.tsx +17 -34
- package/src/modules/PublicPreview/style.tsx +0 -2
- package/src/modules/Settings/ContentTypes/DataPacks/Config/Form/TemplateConfig/TemplateEditor/Editor/TemplateBrowser/index.tsx +0 -4
- package/src/modules/Sites/index.tsx +1 -1
- package/src/modules/StructuredData/Form/ConnectedField/index.tsx +1 -1
- package/src/modules/StructuredData/Form/index.tsx +3 -1
- package/src/modules/StructuredData/StructuredDataList/index.tsx +1 -0
- package/src/schemas/pages/GlobalPage.tsx +1 -0
- package/src/types/index.tsx +1 -0
|
@@ -37,7 +37,8 @@ const DefaultsEditor = (props: IProps) => {
|
|
|
37
37
|
const { isOpen, toggleModal } = useModal();
|
|
38
38
|
const { isDirty, setIsDirty, resetDirty } = useIsDirty(editorContent, isNewTranslation);
|
|
39
39
|
const currentDefaultNav = currentDefaultsContent.find((item: any) => item.setAsDefault);
|
|
40
|
-
const isNew = !editorContent?.id
|
|
40
|
+
const isNew = !editorContent?.id;
|
|
41
|
+
|
|
41
42
|
const isSetAsDefault = editorContent && editorContent.setAsDefault;
|
|
42
43
|
|
|
43
44
|
useEffect(() => {
|
|
@@ -85,7 +86,7 @@ const DefaultsEditor = (props: IProps) => {
|
|
|
85
86
|
const saveButtonAction = () => {
|
|
86
87
|
const isCurrentDefault = currentDefaultNav && currentDefaultNav.id === editorContent.id;
|
|
87
88
|
const isNewDefault = isNew || !isCurrentDefault;
|
|
88
|
-
isSetAsDefault && isNewDefault ? toggleModal() : save();
|
|
89
|
+
isSetAsDefault && isNewDefault && !isNewTranslation ? toggleModal() : save();
|
|
89
90
|
};
|
|
90
91
|
|
|
91
92
|
const rightButtonProps = {
|
|
@@ -14,7 +14,6 @@ const PageBrowser = (props: IProps) => {
|
|
|
14
14
|
header,
|
|
15
15
|
footer,
|
|
16
16
|
},
|
|
17
|
-
selectedEditorID,
|
|
18
17
|
setSelectedContent,
|
|
19
18
|
currentSiteInfo: { theme, id: siteID },
|
|
20
19
|
siteLangs,
|
|
@@ -36,7 +35,6 @@ const PageBrowser = (props: IProps) => {
|
|
|
36
35
|
header={header}
|
|
37
36
|
footer={footer}
|
|
38
37
|
socials={socials}
|
|
39
|
-
selectedEditorID={selectedEditorID}
|
|
40
38
|
setSelectedContent={setSelectedContent}
|
|
41
39
|
url={url}
|
|
42
40
|
theme={theme}
|
|
@@ -45,6 +43,7 @@ const PageBrowser = (props: IProps) => {
|
|
|
45
43
|
disabled={disabled}
|
|
46
44
|
siteID={siteID}
|
|
47
45
|
isPreview={isPreview}
|
|
46
|
+
showIframe={true}
|
|
48
47
|
browserRef={browserRef}
|
|
49
48
|
/>
|
|
50
49
|
);
|
|
@@ -53,7 +52,6 @@ const PageBrowser = (props: IProps) => {
|
|
|
53
52
|
interface IEditorStateProps {
|
|
54
53
|
// TODO: Define content Type
|
|
55
54
|
content: any;
|
|
56
|
-
selectedEditorID: number;
|
|
57
55
|
currentSiteInfo: any;
|
|
58
56
|
socials: ISocialState;
|
|
59
57
|
cloudinaryName: string | null;
|
|
@@ -74,7 +72,6 @@ type IProps = IEditorStateProps & IPageBrowserDispatchProps;
|
|
|
74
72
|
|
|
75
73
|
const mapStateToProps = (state: IRootState): IEditorStateProps => ({
|
|
76
74
|
content: { ...state.pageEditor.editorContent },
|
|
77
|
-
selectedEditorID: state.pageEditor.selectedEditorID as number,
|
|
78
75
|
currentSiteInfo: state.sites.currentSiteInfo,
|
|
79
76
|
socials: state.social,
|
|
80
77
|
cloudinaryName: state.app.globalSettings.cloudinaryName,
|
|
@@ -131,7 +131,7 @@ const PageEditor = (props: IProps) => {
|
|
|
131
131
|
const publishPage = async () => {
|
|
132
132
|
const { updatePageStatus, savePage, pageID, validatePage } = props;
|
|
133
133
|
|
|
134
|
-
const validated = await validatePage(true
|
|
134
|
+
const validated = await validatePage(true);
|
|
135
135
|
|
|
136
136
|
if (validated) {
|
|
137
137
|
const publishPage = {
|
|
@@ -151,7 +151,7 @@ const PageEditor = (props: IProps) => {
|
|
|
151
151
|
const publishChanges = async () => {
|
|
152
152
|
const { savePage, validatePage } = props;
|
|
153
153
|
|
|
154
|
-
const validated = await validatePage(true
|
|
154
|
+
const validated = await validatePage(true);
|
|
155
155
|
|
|
156
156
|
if (validated) {
|
|
157
157
|
const publishPage = {
|
|
@@ -180,13 +180,13 @@ const PageEditor = (props: IProps) => {
|
|
|
180
180
|
|
|
181
181
|
const reviewPage = () => {
|
|
182
182
|
const { validatePage } = props;
|
|
183
|
-
validatePage(false
|
|
183
|
+
validatePage(false);
|
|
184
184
|
};
|
|
185
185
|
|
|
186
186
|
const handlePublishDraft = async () => {
|
|
187
187
|
const { savePage, validatePage } = props;
|
|
188
188
|
|
|
189
|
-
const validated = await validatePage(true
|
|
189
|
+
const validated = await validatePage(true);
|
|
190
190
|
|
|
191
191
|
if (validated) {
|
|
192
192
|
const isSaved = await savePage(false, null, true);
|
|
@@ -482,7 +482,7 @@ const PageEditor = (props: IProps) => {
|
|
|
482
482
|
currentPageID={pageID}
|
|
483
483
|
fullWidth={true}
|
|
484
484
|
errors={errors}
|
|
485
|
-
errorActions={{ goToError }}
|
|
485
|
+
errorActions={{ goToError, goToPackage: handleClickNotification }}
|
|
486
486
|
isFromEditor={true}
|
|
487
487
|
tabs={tabsPreview}
|
|
488
488
|
>
|
|
@@ -650,7 +650,7 @@ interface IPageEditorDispatchProps {
|
|
|
650
650
|
getPage(pageID?: number): Promise<void>;
|
|
651
651
|
savePage(createDraft: boolean, publishPage?: any, publishDraft?: boolean): Promise<boolean>;
|
|
652
652
|
deletePage(params?: ISavePageParams): Promise<boolean>;
|
|
653
|
-
validatePage(publish?: boolean
|
|
653
|
+
validatePage(publish?: boolean): Promise<boolean>;
|
|
654
654
|
updatePageStatus(id: number[], status: string): Promise<boolean>;
|
|
655
655
|
setHistoryPush(path: string, isEditor: boolean): void;
|
|
656
656
|
setLanguage?(lang: { locale: string; id: number | null }): void;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import React, { useEffect, useState } from "react";
|
|
2
2
|
import { useParams } from "react-router-dom";
|
|
3
3
|
|
|
4
|
-
import * as components from "components";
|
|
5
|
-
import { SiteProvider } from "components";
|
|
6
|
-
import { Preview } from "@griddo/core";
|
|
7
4
|
import { pages } from "@ax/api";
|
|
8
5
|
import { getDefaultTheme, isReqOk } from "@ax/helpers";
|
|
9
|
-
import { Loading } from "@ax/components";
|
|
6
|
+
import { BrowserContent, Loading } from "@ax/components";
|
|
10
7
|
|
|
11
8
|
import * as S from "./style";
|
|
12
9
|
|
|
@@ -41,43 +38,29 @@ const PublicPreview = () => {
|
|
|
41
38
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
42
39
|
}, []);
|
|
43
40
|
|
|
44
|
-
const API_URL = process.env.REACT_APP_API_ENDPOINT;
|
|
45
|
-
const PUBLIC_API_URL = process.env.REACT_APP_PUBLIC_API_ENDPOINT;
|
|
46
|
-
|
|
47
41
|
const globalTheme = getDefaultTheme();
|
|
48
42
|
const theme = state && state.site ? state.siteInfo.theme : globalTheme;
|
|
49
43
|
const socials = state && state.site ? state.siteInfo.socials : [];
|
|
50
44
|
const langs = state && state.site ? state.siteInfo.siteLanguages : [];
|
|
51
45
|
|
|
52
|
-
if (isLoading) return <Loading />;
|
|
46
|
+
if (isLoading || !state) return <Loading />;
|
|
53
47
|
|
|
54
48
|
return (
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
{state &&
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
apiUrl={API_URL}
|
|
71
|
-
library={components}
|
|
72
|
-
content={state}
|
|
73
|
-
header={state && state.headerContent}
|
|
74
|
-
footer={state && state.footerContent}
|
|
75
|
-
languageId={state && state.language}
|
|
76
|
-
pageLanguages={state && state.pageLanguages}
|
|
77
|
-
/>
|
|
78
|
-
)}
|
|
79
|
-
</S.Wrapper>
|
|
80
|
-
</SiteProvider>
|
|
49
|
+
<S.Wrapper ref={(ref: any) => ((window as any).browserRef = ref)}>
|
|
50
|
+
<BrowserContent
|
|
51
|
+
cloudinaryName={state && state.cloudinaryName}
|
|
52
|
+
theme={theme}
|
|
53
|
+
socials={socials}
|
|
54
|
+
siteLangs={langs}
|
|
55
|
+
siteID={state && state.site}
|
|
56
|
+
isPage={true}
|
|
57
|
+
content={state}
|
|
58
|
+
header={state && state.headerContent}
|
|
59
|
+
footer={state && state.footerContent}
|
|
60
|
+
languageID={state && state.language}
|
|
61
|
+
pageLanguages={state && state.pageLanguages}
|
|
62
|
+
/>
|
|
63
|
+
</S.Wrapper>
|
|
81
64
|
);
|
|
82
65
|
};
|
|
83
66
|
|
|
@@ -9,7 +9,6 @@ const TemplateBrowser = (props: IProps) => {
|
|
|
9
9
|
socials,
|
|
10
10
|
cloudinaryName,
|
|
11
11
|
content: { editorContent, header, footer },
|
|
12
|
-
selectedEditorID,
|
|
13
12
|
currentSiteInfo: { theme, id: siteID },
|
|
14
13
|
siteLangs,
|
|
15
14
|
} = props;
|
|
@@ -21,7 +20,6 @@ const TemplateBrowser = (props: IProps) => {
|
|
|
21
20
|
isPage={true}
|
|
22
21
|
socials={socials}
|
|
23
22
|
content={updatedContent}
|
|
24
|
-
selectedEditorID={selectedEditorID}
|
|
25
23
|
url=""
|
|
26
24
|
theme={theme}
|
|
27
25
|
cloudinaryName={cloudinaryName}
|
|
@@ -35,7 +33,6 @@ const TemplateBrowser = (props: IProps) => {
|
|
|
35
33
|
|
|
36
34
|
interface IProps {
|
|
37
35
|
content: any;
|
|
38
|
-
selectedEditorID: number;
|
|
39
36
|
currentSiteInfo: any;
|
|
40
37
|
socials: ISocialState;
|
|
41
38
|
cloudinaryName: string | null;
|
|
@@ -44,7 +41,6 @@ interface IProps {
|
|
|
44
41
|
|
|
45
42
|
const mapStateToProps = (state: IRootState): IProps => ({
|
|
46
43
|
content: { ...state.pageEditor.editorContent },
|
|
47
|
-
selectedEditorID: state.navigation.selectedEditorID as number,
|
|
48
44
|
currentSiteInfo: state.sites.currentSiteInfo,
|
|
49
45
|
socials: state.social,
|
|
50
46
|
cloudinaryName: state.app.globalSettings.cloudinaryName,
|
|
@@ -49,7 +49,7 @@ const Sites = (props: IProps): JSX.Element => {
|
|
|
49
49
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
50
|
}, [token]);
|
|
51
51
|
|
|
52
|
-
return isLoading ? <Loading /> : <SitesList sites={sites} />;
|
|
52
|
+
return isLoading && sites.length === 0 ? <Loading /> : <SitesList sites={sites} />;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
const mapStateToProps = (state: IRootState) => ({
|
|
@@ -22,7 +22,7 @@ const ConnectedField = (props: IProps) => {
|
|
|
22
22
|
let innerFields: JSX.Element[] = [];
|
|
23
23
|
|
|
24
24
|
if (isConditional || isArrayGroup) {
|
|
25
|
-
innerFields = getStructuredDataInnerFields(field.fields, form.content, updateFormValue, theme);
|
|
25
|
+
innerFields = getStructuredDataInnerFields(field.fields, form.content, updateFormValue, theme, errors);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const fieldProps = {
|
|
@@ -118,10 +118,12 @@ const Form = (props: IProps) => {
|
|
|
118
118
|
return form.draft ? "Save" : "Save & publish";
|
|
119
119
|
};
|
|
120
120
|
|
|
121
|
+
const handleSaveAndPublish = () => (isNewStructuredData || form.draft ? handleSave(false) : handleSave(true));
|
|
122
|
+
|
|
121
123
|
const rightButtonProps = {
|
|
122
124
|
label: isSaving ? "Saving" : getSaveLabel(),
|
|
123
125
|
disabled: isSaving || isDisabled,
|
|
124
|
-
action:
|
|
126
|
+
action: handleSaveAndPublish,
|
|
125
127
|
};
|
|
126
128
|
|
|
127
129
|
const inversed = !currentSite;
|