Skip to content

Commit f09c387

Browse files
authored
Merge pull request #791 from raheeliftikhar5/appEditor_issues
App editor issues
2 parents 77a1632 + 9ed747d commit f09c387

File tree

8 files changed

+57
-46
lines changed

8 files changed

+57
-46
lines changed

client/packages/lowcoder/src/appView/AppViewInstance.tsx

+11-9
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { API_STATUS_CODES } from "constants/apiConstants";
1111
import { AUTH_LOGIN_URL } from "constants/routesURL";
1212
import { AuthSearchParams } from "constants/authConstants";
1313
import { saveAuthSearchParams } from "pages/userAuth/authUtils";
14-
import { lazy } from "react";
14+
import { Suspense, lazy } from "react";
1515

1616
const AppView = lazy(
1717
() => import('./AppView')
@@ -144,14 +144,16 @@ export class AppViewInstance<I = any, O = any> {
144144
const data = await this.dataPromise;
145145
this.root.render(
146146
<StyleSheetManager target={this.node as HTMLElement}>
147-
<AppView
148-
appId={this.appId}
149-
dsl={data.appDsl}
150-
moduleDsl={data.moduleDslMap}
151-
moduleInputs={this.options.moduleInputs}
152-
onCompChange={(comp) => this.handleCompChange(comp)}
153-
onModuleEventTriggered={(eventName) => this.emit("moduleEventTriggered", [eventName])}
154-
/>
147+
<Suspense fallback={null}>
148+
<AppView
149+
appId={this.appId}
150+
dsl={data.appDsl}
151+
moduleDsl={data.moduleDslMap}
152+
moduleInputs={this.options.moduleInputs}
153+
onCompChange={(comp) => this.handleCompChange(comp)}
154+
onModuleEventTriggered={(eventName) => this.emit("moduleEventTriggered", [eventName])}
155+
/>
156+
</Suspense>
155157
</StyleSheetManager>
156158
);
157159
}

client/packages/lowcoder/src/comps/comps/containerComp/containerView.tsx

+11-8
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,18 @@ const onDrop = async (
222222
const nameGenerator = editorState.getNameGenerator();
223223
const compInfo = parseCompType(compType);
224224
const compName = nameGenerator.genItemName(compInfo.compName);
225-
const {
226-
defaultDataFnName,
227-
defaultDataFnPath,
228-
} = uiCompRegistry[compType as UICompType];
229-
230225
let defaultDataFn = undefined;
231-
if(defaultDataFnName && defaultDataFnPath) {
232-
const module = await import(`../../${defaultDataFnPath}.tsx`);
233-
defaultDataFn = module[defaultDataFnName];
226+
227+
if (!compInfo.isRemote) {
228+
const {
229+
defaultDataFnName,
230+
defaultDataFnPath,
231+
} = uiCompRegistry[compType as UICompType];
232+
233+
if(defaultDataFnName && defaultDataFnPath) {
234+
const module = await import(`../../${defaultDataFnPath}.tsx`);
235+
defaultDataFn = module[defaultDataFnName];
236+
}
234237
}
235238

236239
const widgetValue: GridItemDataType = {

client/packages/lowcoder/src/comps/comps/pageLayoutComp/pageLayoutComp.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { SimpleContainerComp } from "../containerBase/simpleContainerComp";
2727
import { ContainerBodyChildComp } from "./containerBodyChildComp";
2828
import { trans } from "i18n";
2929
import { ControlNode } from "lowcoder-design";
30-
import { StringControl } from "@lowcoder-ee/index.sdk";
30+
import { StringControl } from "comps/controls/codeControl";
3131

3232
const childrenMap = {
3333
header: SimpleContainerComp,

client/packages/lowcoder/src/comps/comps/rootComp.tsx

+13-12
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { ThemeContext } from "comps/utils/themeContext";
1919
import { ModuleLayoutCompName } from "constants/compConstants";
2020
import { defaultTheme as localDefaultTheme } from "comps/controls/styleControlConstants";
2121
import { ModuleLoading } from "components/ModuleLoading";
22+
import EditorSkeletonView from "pages/editor/editorSkeletonView";
2223
import { getGlobalSettings } from "comps/utils/globalSettings";
2324
import { getCurrentTheme } from "comps/utils/themeUtil";
2425
import { DataChangeResponderListComp } from "./dataChangeResponderComp";
@@ -29,10 +30,7 @@ import {
2930
PropertySectionState,
3031
} from "lowcoder-design";
3132
import RefTreeComp from "./refTreeComp";
32-
33-
const EditorSkeletonView = lazy(
34-
() => import("pages/editor/editorSkeletonView")
35-
);
33+
import { ExternalEditorContext } from "util/context/ExternalEditorContext";
3634

3735
const EditorView = lazy(
3836
() => import("pages/editor/editorView"),
@@ -61,6 +59,7 @@ function RootView(props: RootViewProps) {
6159
const { comp, isModuleRoot, ...divProps } = props;
6260
const [editorState, setEditorState] = useState<EditorState>();
6361
const [propertySectionState, setPropertySectionState] = useState<PropertySectionState>({});
62+
const { readOnly } = useContext(ExternalEditorContext);
6463
const appThemeId = comp.children.settings.getView().themeId;
6564
const { orgCommonSettings } = getGlobalSettings();
6665
const themeList = orgCommonSettings?.themeList || [];
@@ -110,13 +109,15 @@ function RootView(props: RootViewProps) {
110109
};
111110
}, [editorState, propertySectionState]);
112111

113-
// if (!editorState) {
114-
// if (isModuleRoot) {
115-
// return <ModuleLoading />;
116-
// }
117-
// return <EditorSkeletonView />;
118-
// }
119-
if(!editorState) return <ModuleLoading />;
112+
if (!editorState && readOnly) {
113+
return <ModuleLoading />;
114+
}
115+
116+
const SuspenseFallback = isModuleRoot ? <ModuleLoading /> : <EditorSkeletonView />;
117+
118+
if (!editorState) {
119+
return SuspenseFallback;
120+
}
120121

121122
return (
122123
<div {...divProps}>
@@ -126,7 +127,7 @@ function RootView(props: RootViewProps) {
126127
{Object.keys(comp.children.queries.children).map((key) => (
127128
<div key={key}>{comp.children.queries.children[key].getView()}</div>
128129
))}
129-
<Suspense fallback={null}>
130+
<Suspense fallback={!readOnly && SuspenseFallback}>
130131
<EditorView uiComp={comp.children.ui} preloadComp={comp.children.preload} />
131132
</Suspense>
132133
</EditorContext.Provider>

client/packages/lowcoder/src/comps/controls/codeControl.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import {
3030
toHex,
3131
wrapperToControlItem,
3232
} from "lowcoder-design";
33-
import { lazy, ReactNode } from "react";
33+
import { lazy, ReactNode, Suspense } from "react";
3434
import {
3535
showTransform,
3636
toArrayJSONObject,
@@ -192,7 +192,7 @@ export function codeControl<
192192
{(editorState) => (
193193
<CompExposingContext.Consumer>
194194
{(exposingData) => (
195-
<>
195+
<Suspense fallback={null}>
196196
<CodeEditor
197197
{...params}
198198
bordered
@@ -213,7 +213,7 @@ export function codeControl<
213213
boostExposingData={exposingData}
214214
enableClickCompName={editorState?.forceShowGrid}
215215
/>
216-
</>
216+
</Suspense>
217217
)}
218218
</CompExposingContext.Consumer>
219219
)}

client/packages/lowcoder/src/comps/controls/codeTextControl.tsx

+13-11
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { CompExposingContext } from "comps/generators/withContext";
66
import { exposingDataForAutoComplete } from "comps/utils/exposingTypes";
77
import { ControlPropertyViewWrapper } from "lowcoder-design";
88
import { debounce } from "lodash";
9-
import { ReactNode, lazy, useContext, useMemo } from "react";
9+
import { ReactNode, Suspense, lazy, useContext, useMemo } from "react";
1010
import type { CodeEditorProps } from "base/codeEditor/codeEditorTypes";
1111

1212
const CodeEditor = lazy(
@@ -38,16 +38,18 @@ function CodeTextEditor(props: CodeTextEditorProps) {
3838
}, [compExposingData, editorState, enableExposingDataAutoCompletion]);
3939

4040
return (
41-
<CodeEditor
42-
{...params}
43-
bordered
44-
disableCard
45-
value={codeText}
46-
exposingData={expsoingData}
47-
boostExposingData={compExposingData}
48-
onChange={(state) => onChange(state.doc.toString())}
49-
enableClickCompName={editorState.forceShowGrid}
50-
/>
41+
<Suspense fallback={null}>
42+
<CodeEditor
43+
{...params}
44+
bordered
45+
disableCard
46+
value={codeText}
47+
exposingData={expsoingData}
48+
boostExposingData={compExposingData}
49+
onChange={(state) => onChange(state.doc.toString())}
50+
enableClickCompName={editorState.forceShowGrid}
51+
/>
52+
</Suspense>
5153
);
5254
}
5355

client/packages/lowcoder/src/pages/editor/AppEditor.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ export default function AppEditor() {
136136
return (
137137
<ErrorBoundary>
138138
{showAppSnapshot ? (
139-
<Suspense fallback={null}>
139+
<Suspense fallback={<EditorSkeletonView />}>
140140
<AppSnapshot
141141
currentAppInfo={{
142142
...appInfo,
@@ -145,7 +145,7 @@ export default function AppEditor() {
145145
/>
146146
</Suspense>
147147
) : (
148-
<Suspense fallback={null}>
148+
<Suspense fallback={<EditorSkeletonView />}>
149149
<AppEditorInternalView
150150
appInfo={appInfo}
151151
readOnly={readOnly}

client/packages/lowcoder/src/pages/editor/editorView.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
UserGuideLocationState,
2929
} from "pages/tutorials/tutorialsConstant";
3030
import React, {
31+
Suspense,
3132
lazy,
3233
useCallback,
3334
useContext,
@@ -51,6 +52,7 @@ import {
5152
saveEditorModeStatus,
5253
} from "util/localStorageUtil";
5354
import { isAggregationApp } from "util/appUtils";
55+
import EditorSkeletonView from "./editorSkeletonView";
5456

5557
const LeftContent = lazy(
5658
() => import('./LeftContent')
@@ -455,6 +457,7 @@ function EditorView(props: EditorViewProps) {
455457
<script key="clearbit-script" src="https://tag.clearbitscripts.com/v1/pk_931b51e405557300e6a7c470e8247d5f/tags.js" referrerPolicy="strict-origin-when-cross-origin" type="text/javascript"></script>
456458
]}
457459
</Helmet>
460+
458461
{showNewUserGuide && <EditorTutorials />}
459462
<EditorGlobalHotKeys
460463
disabled={readOnly}

0 commit comments

Comments
 (0)