Skip to content

Commit b3308a3

Browse files
authored
Merge branch 'dev' into feature/gid
2 parents 14ec690 + db1a528 commit b3308a3

File tree

8 files changed

+75
-113
lines changed

8 files changed

+75
-113
lines changed

.gitignore

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ client/packages/lowcoder-plugin-demo/.yarn/install-state.gz
1010
client/packages/lowcoder-plugin-demo/yarn.lock
1111
client/packages/lowcoder-plugin-demo/.yarn/cache/@types-node-npm-16.18.68-56f72825c0-094ae9ed80.zip
1212
application-dev.yml
13-
server/api-service/lowcoder-server/src/main/resources/application-lowcoder.yml
14-
server/api-service/lowcoder-server/src/main/resources/application-debug.yaml
13+
application-lowcoder.yml
14+
application-debug.yaml
15+
application-dev-localhost.yaml
1516
.vscode/settings.json
16-
.vscode/launch.json
17-
server/api-service/lowcoder-server/src/main/resources/application-dev-localhost.yaml
17+
.vscode/launch.json

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ const StyledDivider = styled(Divider) <IProps>`
5353
padding: ${(props) => props.$style.padding};
5454
border-radius:${props=>props.$style.radius};
5555
border-top: ${(props) => (props.$style.borderWidth && props.$style.borderWidth != "0px" ? props.$style.borderWidth : "1px")} ${(props) => props.$style.borderStyle} ${(props) => props.$style.border};
56-
""
5756
.ant-divider-inner-text::before, .ant-divider-inner-text::after {
5857
border-block-start: ${(props) => (props.$style.borderWidth && props.$style.borderWidth != "0px" ? props.$style.borderWidth : "1px")} ${(props) => (props.dashed ? "dashed" : "solid")} ${(props) => props.$style.border} !important;
5958
border-block-start-color: inherit;
@@ -65,6 +64,12 @@ const StyledDivider = styled(Divider) <IProps>`
6564
border-top-color: ${(props) => props.$style.color};
6665
color: ${(props) => props.$style.text};
6766
}
67+
&.ant-divider-horizontal.ant-divider-with-text::before,
68+
&.ant-divider-horizontal.ant-divider-with-text::after {
69+
border-top-color: ${(props) => props.$style.color};
70+
border-radius:${props=>props.$style.radius};
71+
border-top: ${(props) => (props.$style.borderWidth && props.$style.borderWidth != "0px" ? props.$style.borderWidth : "1px")} ${(props) => props.$style.borderStyle} ${(props) => props.$style.border};
72+
}
6873
`;
6974

7075
const childrenMap = {

client/packages/lowcoder/src/comps/comps/layout/navLayout.tsx

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { EditorContainer, EmptyContent } from "pages/common/styledComponent";
1717
import { useCallback, useEffect, useMemo, useState } from "react";
1818
import styled from "styled-components";
1919
import { isUserViewMode, useAppPathParam } from "util/hooks";
20-
import { StringControl, jsonControl } from "comps/controls/codeControl";
20+
import { BoolCodeControl, StringControl, jsonControl } from "comps/controls/codeControl";
2121
import { styleControl } from "comps/controls/styleControl";
2222
import {
2323
NavLayoutStyle,
@@ -41,6 +41,8 @@ import {
4141
menuItemStyleOptions
4242
} from "./navLayoutConstants";
4343

44+
const { Header } = Layout;
45+
4446
const DEFAULT_WIDTH = 240;
4547
type MenuItemStyleOptionValue = "normal" | "hover" | "active";
4648

@@ -99,10 +101,12 @@ const StyledMenu = styled(AntdMenu)<{
99101
.ant-menu-submenu {
100102
margin: ${(props) => props.$navItemStyle?.margin};
101103
width: ${(props) => props.$navItemStyle?.width};
104+
padding: 0;
102105
103106
.ant-menu-submenu-title {
104107
width: 100%;
105108
height: auto !important;
109+
max-height: 100%;
106110
background-color: ${(props) => props.$navItemStyle?.background};
107111
color: ${(props) => props.$navItemStyle?.text};
108112
border-radius: ${(props) => props.$navItemStyle?.radius} !important;
@@ -190,7 +194,8 @@ let NavTmpLayout = (function () {
190194
width: withDefault(StringControl, DEFAULT_WIDTH),
191195
backgroundImage: withDefault(StringControl, ""),
192196
mode: dropdownControl(ModeOptions, "inline"),
193-
navStyle: withDefault(styleControl(NavLayoutStyle), defaultStyle),
197+
collapse: BoolCodeControl,
198+
navStyle: withDefault(styleControl(NavLayoutStyle), {...defaultStyle, padding: '1px'}),
194199
navItemStyle: withDefault(styleControl(NavLayoutItemStyle), defaultStyle),
195200
navItemHoverStyle: withDefault(styleControl(NavLayoutItemHoverStyle), {}),
196201
navItemActiveStyle: withDefault(styleControl(NavLayoutItemActiveStyle), {}),
@@ -226,6 +231,9 @@ let NavTmpLayout = (function () {
226231
label: trans("labelProp.position"),
227232
radioButton: true
228233
})}
234+
{ children.collapse.propertyView({
235+
label: trans("labelProp.collapse"),
236+
})}
229237
{children.backgroundImage.propertyView({
230238
label: `Background Image`,
231239
placeholder: 'https://temp.im/350x400',
@@ -266,6 +274,7 @@ NavTmpLayout = withViewFn(NavTmpLayout, (comp) => {
266274
const items = comp.children.items.getView();
267275
const navWidth = comp.children.width.getView();
268276
const navMode = comp.children.mode.getView();
277+
const navCollapse = comp.children.collapse.getView();
269278
const navStyle = comp.children.navStyle.getView();
270279
const navItemStyle = comp.children.navItemStyle.getView();
271280
const navItemHoverStyle = comp.children.navItemHoverStyle.getView();
@@ -547,32 +556,45 @@ NavTmpLayout = withViewFn(NavTmpLayout, (comp) => {
547556
backgroundStyle = `center / cover url('${backgroundImage}') no-repeat, ${backgroundStyle}`;
548557
}
549558

559+
let navMenu = (
560+
<StyledMenu
561+
items={menuItems}
562+
mode={navMode}
563+
style={{
564+
height: `calc(100% - ${getVerticalMargin(navStyle.margin.split(' '))})`,
565+
width: `calc(100% - ${getHorizontalMargin(navStyle.margin.split(' '))})`,
566+
borderRight: navMode !== 'horizontal' ? `1px solid ${navStyle.border}` : 'none',
567+
borderBottom: navMode === 'horizontal' ? `1px solid ${navStyle.border}` : 'none',
568+
borderRadius: navStyle.radius,
569+
color: navStyle.text,
570+
margin: navStyle.margin,
571+
padding: navStyle.padding,
572+
background: backgroundStyle,
573+
flex: 1,
574+
minWidth: 0,
575+
}}
576+
defaultOpenKeys={defaultOpenKeys}
577+
selectedKeys={[selectedKey]}
578+
$navItemStyle={{
579+
width: navMode === 'horizontal' ? 'auto' : `calc(100% - ${getHorizontalMargin(navItemStyle.margin.split(' '))})`,
580+
...navItemStyle,
581+
}}
582+
$navItemHoverStyle={navItemHoverStyle}
583+
$navItemActiveStyle={navItemActiveStyle}
584+
/>
585+
);
586+
550587
let content = (
551588
<Layout>
552-
<StyledSide theme="light" width={navWidth}>
553-
<StyledMenu
554-
items={menuItems}
555-
mode={navMode}
556-
style={{
557-
height: `calc(100% - ${getVerticalMargin(navStyle.margin.split(' '))})`,
558-
width: `calc(100% - ${getHorizontalMargin(navStyle.margin.split(' '))})`,
559-
borderRight: `1px solid ${navStyle.border}`,
560-
borderRadius: navStyle.radius,
561-
color: navStyle.text,
562-
margin: navStyle.margin,
563-
padding: navStyle.padding,
564-
background: backgroundStyle,
565-
}}
566-
defaultOpenKeys={defaultOpenKeys}
567-
selectedKeys={[selectedKey]}
568-
$navItemStyle={{
569-
width: `calc(100% - ${getHorizontalMargin(navItemStyle.margin.split(' '))})`,
570-
...navItemStyle,
571-
}}
572-
$navItemHoverStyle={navItemHoverStyle}
573-
$navItemActiveStyle={navItemActiveStyle}
574-
/>
575-
</StyledSide>
589+
{navMode === 'horizontal' ? (
590+
<Header style={{ display: 'flex', alignItems: 'center', padding: 0 }}>
591+
{ navMenu }
592+
</Header>
593+
) : (
594+
<StyledSide theme="light" width={navWidth} collapsed={navCollapse}>
595+
{navMenu}
596+
</StyledSide>
597+
)}
576598
<MainContent>{pageView}</MainContent>
577599
</Layout>
578600
);

client/packages/lowcoder/src/comps/comps/layout/navLayoutConstants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { trans } from "i18n";
33
export const ModeOptions = [
44
{ label: trans("navLayout.modeInline"), value: "inline" },
55
{ label: trans("navLayout.modeVertical"), value: "vertical" },
6+
{ label: trans("navLayout.modeHorizontal"), value: "horizontal" },
67
] as const;
78

89
export const DataOption = {

client/packages/lowcoder/src/comps/generators/withSelectedMultiContext.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,10 @@ export function withSelectedMultiContext<TCtor extends MultiCompConstructor>(
9696
comp = comp.reduce(wrapChildAction(COMP_KEY, newAction));
9797
} else if (
9898
!action.editDSL
99-
&& isCustomAction<ModuleReadyAction>(action, "moduleReady")
100-
&& action.path[0] === MAP_KEY
99+
&& (
100+
isCustomAction<ModuleReadyAction>(action, "moduleReady")
101+
|| isCustomAction<LazyCompReadyAction>(action, "LazyCompReady")
102+
) && action.path[0] === MAP_KEY
101103
) {
102104
comp = super.reduce(action);
103105
}

client/packages/lowcoder/src/i18n/locales/en.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ export const en = {
229229
"text": "Label",
230230
"tooltip": "Tooltip",
231231
"position": "Position",
232+
"collapse": "Collapse",
232233
"left": "Left",
233234
"right": "Right",
234235
"top": "Top",
@@ -3470,6 +3471,7 @@ export const en = {
34703471
"mode": "Mode",
34713472
"modeInline": "Inline",
34723473
"modeVertical": "Vertical",
3474+
"modeHorizontal": "Horizontal",
34733475
"width": "Width",
34743476
"widthTooltip": "Pixel or Percentage, e.g. 520, 60%",
34753477
"navStyle": "Menu Style",

client/packages/lowcoder/src/pages/ApplicationV2/HomeLayout.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,8 @@ export function HomeLayout(props: HomeLayoutProps) {
359359
const resList: HomeRes[] = displayElements
360360
.filter((e) =>
361361
searchValue
362-
? e.name.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase()) ||
363-
e.createBy.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase())
362+
? e.name?.toLocaleLowerCase().includes(searchValue?.toLocaleLowerCase()) ||
363+
e.createBy?.toLocaleLowerCase().includes(searchValue?.toLocaleLowerCase())
364364
: true
365365
)
366366
.filter((e) => {
Lines changed: 8 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,8 @@
1-
auth:
2-
api-key:
3-
secret: ${LOWCODER_API_KEY_SECRET:5a41b090758b39b226603177ef48d73ae9839dd458ccb7e66f7e7cc028d5a50b}
4-
email:
5-
enable: ${LOWCODER_EMAIL_AUTH_ENABLED:true}
6-
enable-register: ${LOWCODER_EMAIL_SIGNUP_ENABLED:true}
7-
workspace-creation: ${LOWCODER_CREATE_WORKSPACE_ON_SIGNUP:true}
8-
91
spring:
102
data:
113
mongodb:
124
authentication-database: admin
13-
auto-index-creation: false
14-
uri: ${LOWCODER_MONGODB_URL:mongodb://lowcoder:secret123@localhost:27017/lowcoder?retryWrites=true&loadBalanced=false&connectTimeoutMS=10000&authSource=admin&authMechanism=SCRAM-SHA-256}
5+
uri: "mongodb://lowcoder:secret123@127.0.0.1:27017/lowcoder?authSource=admin"
156
redis:
167
url: ${LOWCODER_REDIS_URL:redis://localhost:6379}
178
main:
@@ -38,42 +29,11 @@ spring:
3829
transport:
3930
protocol: smtp
4031
server:
41-
compression:
42-
enabled: true
43-
forward-headers-strategy: NATIVE
44-
http2:
45-
enabled: true
4632
port: 8080
47-
shutdown: graceful
48-
49-
default:
50-
orgs-per-user: ${LOWCODER_MAX_ORGS_PER_USER:100}
51-
org-member-count: ${LOWCODER_MAX_MEMBERS_PER_ORG:1000}
52-
org-group-count: ${LOWCODER_MAX_GROUPS_PER_ORG:100}
53-
org-app-count: ${LOWCODER_MAX_APPS_PER_ORG:1000}
54-
developer-count: ${LOWCODER_MAX_DEVELOPERS:50}
55-
api-rate-limit: ${LOWCODER_API_RATE_LIMIT:50}
56-
5733
common:
58-
cookie-name: LOWCODER_CE_SELFHOST_TOKEN
59-
product: lowcoder
60-
domain:
61-
default-value: lowcoder.org
62-
cloud: false
63-
version: 2.1.4
64-
apiVersion: 1.1
65-
block-hound-enable: false
66-
encrypt:
67-
password: ${LOWCODER_DB_ENCRYPTION_PASSWORD:lowcoder.org}
68-
salt: ${LOWCODER_DB_ENCRYPTION_SALT:lowcoder.org}
69-
security:
70-
corsAllowedDomainString: ${LOWCODER_CORS_DOMAINS:*}
34+
cookie-name: LOWCODER_DEBUG_TOKEN
7135
js-executor:
72-
host: ${LOWCODER_NODE_SERVICE_URL:http://127.0.0.1:6060}
73-
max-query-request-size: ${LOWCODER_MAX_REQUEST_SIZE:20m}
74-
max-query-response-size: ${LOWCODER_MAX_REQUEST_SIZE:20m}
75-
max-upload-size: ${LOWCODER_MAX_REQUEST_SIZE:20m}
76-
max-query-timeout: ${LOWCODER_MAX_QUERY_TIMEOUT:120}
36+
host: "http://127.0.0.1:6060"
7737
workspace:
7838
mode: ${LOWCODER_WORKSPACE_MODE:SAAS}
7939
plugin-dirs:
@@ -86,39 +46,9 @@ common:
8646
lowcoder-public-url: ${LOWCODER_PUBLIC_URL:http://localhost:3000}
8747
notifications-email-sender: ${LOWCODER_EMAIL_NOTIFICATIONS_SENDER:info@localhost}
8848

89-
material:
90-
mongodb-grid-fs:
91-
bucket-name: material
49+
debug: true
9250

93-
springdoc:
94-
api-docs:
95-
path: /api/docs/openapi.json
96-
swagger-ui:
97-
path: /api/docs/swagger-ui
98-
paths-to-exclude: /api/v1/**
99-
100-
management:
101-
endpoints:
102-
enabled-by-default: false
103-
web:
104-
base-path: "/api/status"
105-
exposure:
106-
include: "health,metrics,prometheus"
107-
endpoint:
108-
health:
109-
show-details: never
110-
show-components: always
111-
enabled: true
112-
metrics:
113-
enabled: true
114-
prometheus:
115-
enabled: true
116-
health:
117-
mail:
118-
enabled: false
119-
db:
120-
enabled: true
121-
redis:
122-
enabled: true
123-
diskspace:
124-
enabled: false
51+
logging:
52+
level:
53+
root: debug
54+
org.lowcoder: debug

0 commit comments

Comments
 (0)