diff --git a/client/VERSION b/client/VERSION
index c043eea77..38f8e886e 100644
--- a/client/VERSION
+++ b/client/VERSION
@@ -1 +1 @@
-2.2.1
+dev
diff --git a/client/packages/lowcoder-core/lib/index.js b/client/packages/lowcoder-core/lib/index.js
index 714d11ff7..89a3c783b 100644
--- a/client/packages/lowcoder-core/lib/index.js
+++ b/client/packages/lowcoder-core/lib/index.js
@@ -1,118 +1,118 @@
import _ from 'lodash';
import { serialize, compile, middleware, prefixer, stringify } from 'stylis';
-/******************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global Reflect, Promise, SuppressedError, Symbol */
-
-var extendStatics = function(d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
-};
-
-function __extends(d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-}
-
-var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
-};
-
-function __rest(s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
-}
-
-function __decorate(decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
-}
-
-function __awaiter(thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-}
-
-function __generator(thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-}
-
-function __spreadArray(to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
-}
-
-typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
- var e = new Error(message);
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global Reflect, Promise, SuppressedError, Symbol */
+
+var extendStatics = function(d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+};
+
+function __extends(d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+}
+
+var __assign = function() {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+};
+
+function __rest(s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+}
+
+function __decorate(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+
+function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+function __generator(thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+}
+
+function __spreadArray(to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+}
+
+typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
+ var e = new Error(message);
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
function isEqualArgs(args, cacheArgs, equals) {
@@ -11400,7 +11400,7 @@ var IntlMessageFormat$1 = /** @class */ (function () {
this.ast = message;
}
if (!Array.isArray(this.ast)) {
- throw new TypeError('A message must be provided as a String or AST.');
+ throw new TypeError('A message must be provided as a String or AST. ' + this.ast);
}
// Creates a new object with the specified `formats` merged with the default
// formats.
diff --git a/client/packages/lowcoder-design/src/components/CustomModal.tsx b/client/packages/lowcoder-design/src/components/CustomModal.tsx
index ef9d97000..9b13d8b43 100644
--- a/client/packages/lowcoder-design/src/components/CustomModal.tsx
+++ b/client/packages/lowcoder-design/src/components/CustomModal.tsx
@@ -227,7 +227,7 @@ function CustomModalRender(props: CustomModalProps & ModalFuncProps) {
/>
-
{props.children}
+ {props.children}
{props.footer === null || props.footer ? (
props.footer
@@ -280,13 +280,15 @@ CustomModal.confirm = (props: {
...DEFAULT_PROPS,
okText: trans("ok"),
cancelText: trans("cancel"),
- bodyStyle: {
- fontSize: "14px",
- color: "#333333",
- lineHeight: "22px",
- minHeight: "72px",
- marginTop: "24px",
- },
+ styles: {
+ body: {
+ fontSize: "14px",
+ color: "#333333",
+ lineHeight: "22px",
+ minHeight: "72px",
+ marginTop: "24px",
+ }
+ }
};
// create model
const model = modalInstance.confirm({
@@ -321,7 +323,12 @@ CustomModal.confirm = (props: {
title={title}
okButtonType={props.confirmBtnType}
okText={props.okText}
- bodyStyle={{ ...defaultConfirmProps.bodyStyle, ...props.bodyStyle }}
+ styles={{
+ body: {
+ ...defaultConfirmProps.styles?.body,
+ ...props.bodyStyle,
+ }
+ }}
footer={props.footer}
width={props.width}
/>
diff --git a/client/packages/lowcoder-design/src/components/Modal/index.tsx b/client/packages/lowcoder-design/src/components/Modal/index.tsx
index 1964f26bc..91f35b88e 100644
--- a/client/packages/lowcoder-design/src/components/Modal/index.tsx
+++ b/client/packages/lowcoder-design/src/components/Modal/index.tsx
@@ -32,7 +32,7 @@ export function Modal(props: ModalProps) {
resizeHandles,
width: modalWidth,
height: modalHeight,
- bodyStyle,
+ styles,
children,
...otherProps
} = props;
@@ -53,7 +53,12 @@ export function Modal(props: ModalProps) {
return (
diff --git a/client/packages/lowcoder-design/src/i18n/design/locales/zh.ts b/client/packages/lowcoder-design/src/i18n/design/locales/zh.ts
index 6e660cda5..3fe60174b 100644
--- a/client/packages/lowcoder-design/src/i18n/design/locales/zh.ts
+++ b/client/packages/lowcoder-design/src/i18n/design/locales/zh.ts
@@ -23,6 +23,8 @@ export const zh = {
validation: "验证",
layout: "布局",
style: "样式",
+ meetings: "会议",
+ data: "数据",
},
passwordInput: {
label: "密码:",
diff --git a/client/packages/lowcoder/package.json b/client/packages/lowcoder/package.json
index cc2a6c8eb..c4936531f 100644
--- a/client/packages/lowcoder/package.json
+++ b/client/packages/lowcoder/package.json
@@ -40,7 +40,7 @@
"agora-rtc-sdk-ng": "^4.19.0",
"agora-rtm-sdk": "^1.5.1",
"ali-oss": "^6.17.1",
- "antd": "5.7.2",
+ "antd": "^5.12.2",
"antd-img-crop": "^4.12.2",
"axios": "^0.21.1",
"buffer": "^6.0.3",
diff --git a/client/packages/lowcoder/src/comps/comps/fileComp/fileComp.tsx b/client/packages/lowcoder/src/comps/comps/fileComp/fileComp.tsx
index b206f2a15..e801a3a29 100644
--- a/client/packages/lowcoder/src/comps/comps/fileComp/fileComp.tsx
+++ b/client/packages/lowcoder/src/comps/comps/fileComp/fileComp.tsx
@@ -210,7 +210,7 @@ export function resolveParsedValue(files: UploadFile[]) {
.then((a) => {
const ext = mime.getExtension(f.originFileObj?.type ?? "");
if (ext === "xlsx" || ext === "csv") {
- const workbook = XLSX.read(a, { raw: true });
+ const workbook = XLSX.read(a, { raw: true, codepage: 65001 });
return XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {
raw: false,
});
diff --git a/client/packages/lowcoder/src/comps/comps/formComp/createForm.tsx b/client/packages/lowcoder/src/comps/comps/formComp/createForm.tsx
index f0223ff12..f8092a6ee 100644
--- a/client/packages/lowcoder/src/comps/comps/formComp/createForm.tsx
+++ b/client/packages/lowcoder/src/comps/comps/formComp/createForm.tsx
@@ -669,7 +669,7 @@ export const CreateForm = (props: { onCreate: CreateHandler }) => {
onCancel={() => setVisible(false)}
width="600px"
children={}
- bodyStyle={{ padding: 0 }}
+ styles={{ body: {padding: 0} }}
/>
>
diff --git a/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx b/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx
index 3419b4f16..80bf6e8c1 100644
--- a/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx
+++ b/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx
@@ -508,9 +508,11 @@ let MTComp = (function () {
: {}
}
contentWrapperStyle={{ maxHeight: "100%", maxWidth: "100%" }}
- bodyStyle={{
- padding: 0,
- backgroundColor: props.style.background,
+ styles={{
+ body: {
+ padding: 0,
+ backgroundColor: props.style.background,
+ }
}}
closable={false}
placement={props.placement}
diff --git a/client/packages/lowcoder/src/comps/controls/labelControl.tsx b/client/packages/lowcoder/src/comps/controls/labelControl.tsx
index ed8394042..db3087e65 100644
--- a/client/packages/lowcoder/src/comps/controls/labelControl.tsx
+++ b/client/packages/lowcoder/src/comps/controls/labelControl.tsx
@@ -178,7 +178,6 @@ export const LabelControl = (function () {
}}
placement="top"
color="#2c2c2c"
- popupVisible={!!props.tooltip}
getPopupContainer={(node: any) => node.closest(".react-grid-item")}
>
diff --git a/client/packages/lowcoder/src/comps/controls/slotControl.tsx b/client/packages/lowcoder/src/comps/controls/slotControl.tsx
index 073281159..8248e98f2 100644
--- a/client/packages/lowcoder/src/comps/controls/slotControl.tsx
+++ b/client/packages/lowcoder/src/comps/controls/slotControl.tsx
@@ -65,7 +65,7 @@ function ModalConfigView(props: {
onCancel={onCancel}
getContainer={() => document.querySelector(`#${CanvasContainerID}`) || document.body}
footer={null}
- bodyStyle={{ padding: "0" }}
+ styles={{ body: {padding: "0"} }}
zIndex={Layers.modal}
modalRender={(node) => (
{}}>
diff --git a/client/packages/lowcoder/src/comps/hooks/drawerComp.tsx b/client/packages/lowcoder/src/comps/hooks/drawerComp.tsx
index 02e8e36b4..134b0e229 100644
--- a/client/packages/lowcoder/src/comps/hooks/drawerComp.tsx
+++ b/client/packages/lowcoder/src/comps/hooks/drawerComp.tsx
@@ -127,7 +127,12 @@ let TmpDrawerComp = (function () {
onResizeStop={onResizeStop}
rootStyle={props.visible.value ? { overflow: "auto", pointerEvents: "auto" } : {}}
contentWrapperStyle={{ maxHeight: "100%", maxWidth: "100%" }}
- bodyStyle={{ padding: 0, backgroundColor: props.style.background }}
+ styles={{
+ body: {
+ padding: 0,
+ backgroundColor: props.style.background
+ }
+ }}
closable={false}
placement={props.placement}
open={props.visible.value}
diff --git a/client/packages/lowcoder/src/comps/hooks/modalComp.tsx b/client/packages/lowcoder/src/comps/hooks/modalComp.tsx
index af90a70c9..92af6fb6d 100644
--- a/client/packages/lowcoder/src/comps/hooks/modalComp.tsx
+++ b/client/packages/lowcoder/src/comps/hooks/modalComp.tsx
@@ -113,7 +113,7 @@ let TmpModalComp = (function () {
focusTriggerAfterClose={false}
getContainer={() => document.querySelector(`#${CanvasContainerID}`) || document.body}
footer={null}
- bodyStyle={bodyStyle}
+ styles={{body: bodyStyle}}
width={width}
onCancel={(e) => {
props.visible.onChange(false);
diff --git a/client/packages/lowcoder/src/i18n/locales/en.ts b/client/packages/lowcoder/src/i18n/locales/en.ts
index fa8b1aa3a..bf261cb95 100644
--- a/client/packages/lowcoder/src/i18n/locales/en.ts
+++ b/client/packages/lowcoder/src/i18n/locales/en.ts
@@ -194,7 +194,7 @@ export const en = {
"fixed": "Fixed"
},
"textOverflowProp": {
- "ellipsis": "Ellipsis",
+ "ellipsis": "Mouseover",
"wrap": "Wrap"
},
"labelProp": {
diff --git a/client/packages/lowcoder/src/i18n/locales/index.ts b/client/packages/lowcoder/src/i18n/locales/index.ts
index 74365e04b..ab08ff79f 100644
--- a/client/packages/lowcoder/src/i18n/locales/index.ts
+++ b/client/packages/lowcoder/src/i18n/locales/index.ts
@@ -1,7 +1,7 @@
// file examples: en, enGB, zh, zhHK
// fallback example: current locale is zh-HK, fallback order is zhHK => zh => en
-export * from "./en";
// export * from "./de"; Not ready yet
+export * from "./en";
export * from "./it";
export * from "@lowcoder-ee/i18n/locales/zh";
diff --git a/client/packages/lowcoder/src/i18n/locales/zh.ts b/client/packages/lowcoder/src/i18n/locales/zh.ts
index 4cfa6474a..778a08885 100644
--- a/client/packages/lowcoder/src/i18n/locales/zh.ts
+++ b/client/packages/lowcoder/src/i18n/locales/zh.ts
@@ -199,6 +199,10 @@ labelProp: {
widthTooltip:
"组件标题的宽度,支持百分比(%)和像素(px)为单位.",
},
+"textOverflowProp": {
+ "ellipsis": "鼠标悬停",
+ "wrap": "包装"
+},
eventHandler: {
eventHandlers: "事件处理器",
emptyEventHandlers: "无事件处理器",
@@ -650,15 +654,16 @@ smtpQuery: {
contentTooltip: "支持输入文本或HTML",
},
uiCompCategory: {
- common: "常用组件",
- dataInputText: "文本组件",
- dataInputNumber: "数字组件",
- dataInputSelect: "选择组件",
- dataInputDate: "日期和时间数字键",
- button: "按钮组件",
- dataDisplay: "数据展示组件",
- container: "容器和表单组件",
- other: "其他组件",
+ "dashboards": "仪表板和报告",
+ "layout": "布局和导航",
+ "forms": "数据收集与表格",
+ "collaboration": "会议与合作",
+ "projectmanagement": "项目管理",
+ "scheduling": "日历和日程安排",
+ "documents": "文件和档案管理",
+ "itemHandling": "项目和签名处理",
+ "multimedia": "多媒体与动画",
+ "integration": "整合与扩展"
},
uiComp: {
inputCompName: "输入框",
@@ -869,6 +874,60 @@ comp: {
upgradeSuccess: "成功升级到最新版本.",
searchProp: "搜索属性",
},
+"meeting": {
+ "logLevel": "Agora SDK 日志级别",
+ "placement": "会议抽屉的摆放",
+ "meeting": "会议设置",
+ "cameraView": "摄像头视图",
+ "cameraViewDesc": "本地用户(主机)的摄像头视图",
+ "screenShared": "屏幕共享",
+ "screenSharedDesc": "本地用户(主机)共享的屏幕",
+ "audioUnmuted": "音频静音",
+ "audioMuted": "音频静音",
+ "videoClicked": "点击视频",
+ "videoOff": "关闭视频",
+ "videoOn": "视频",
+ "size": "尺寸",
+ "top": "返回顶部",
+ "host": "会议室主机。您需要将主机作为自己的应用程序逻辑进行管理",
+ "participants": "会议室与会者",
+ "shareScreen": "本地用户共享的显示屏幕",
+ "appid": "Agora 应用 ID",
+ "meetingName": "会议名称",
+ "localUserID": "主机用户 ID",
+ "userName": "主机用户名",
+ "rtmToken": "Agora RTM 代币",
+ "rtcToken": "Agora RTC 代币",
+ "noVideo": "无视频",
+ "profileImageUrl": "简介图片 URL",
+ "right": "对",
+ "bottom": "底部",
+ "videoId": "视频流 ID",
+ "audioStatus": "音频状态",
+ "left": "左侧",
+ "widthTooltip": "像素或百分比,例如 520、60",
+ "heightTooltip": "像素,例如 378",
+ "openDrawerDesc": "开放式抽屉",
+ "closeDrawerDesc": "关闭抽屉",
+ "width": "抽屉宽度",
+ "height": "抽屉高度",
+ "actionBtnDesc": "操作按钮",
+ "broadCast": "广播信息",
+ "title": "会议名称",
+ "meetingCompName": "Agora 会议控制器",
+ "sharingCompName": "屏幕共享流",
+ "videoCompName": "摄像机流",
+ "videoSharingCompName": "屏幕共享流",
+ "meetingControlCompName": "控制按钮",
+ "meetingCompDesc": "会议组成部分",
+ "meetingCompControls": "会议控制",
+ "meetingCompKeywords": "Agora 会议、网络会议、协作",
+ "iconSize": "图标大小",
+ "userId": "主机用户 ID",
+ "roomId": "房间 ID",
+ "meetingActive": "持续会议",
+ "messages": "广播信息"
+},
jsonSchemaForm: {
retry: "重试",
resetAfterSubmit: "成功提交后重置",
@@ -900,6 +959,7 @@ customComp: {
},
tree: {
selectType: "选择类型",
+ placeholder: "请选择",
noSelect: "无选择",
singleSelect: "单选",
multiSelect: "多选",
@@ -1176,8 +1236,6 @@ table: {
hideHeader: "隐藏表头",
fixedHeader: "固定表头",
fixedHeaderTooltip: "垂直滚动表格的标题将被固定",
- fixedToolbar: "固定工具栏",
- fixedToolbarTooltip: "工具栏将根据所选位置固定为垂直滚动表格",
hideBordered: "隐藏列边框",
deleteColumn: "删除列",
confirmDeleteColumn: "确认删除列:",
@@ -1218,6 +1276,8 @@ table: {
cellColorDesc:
"使用 currentCell 根据单元格值有条件地设置单元格颜色:\n" +
"例如:'{{ currentCell == 3 ? \"green\" : \"red\" }}'",
+ rowHeight : "条件行高度",
+ rowHeightDesc: "根据可选变量有条件地设置行高: CurrentRow、CurrentOriginalIndex、CurrentIndex、ColumnTitle。例如:'{{ currentRow.id > 3 ? \"60px\" : \"40px\" }}'",
saveChangesNotBind:
"未配置保存更改的事件处理程序.请在点击之前绑定至少一个事件处理程序.",
dynamicColumn: "使用动态列设置",
@@ -1927,6 +1987,9 @@ header: {
preview: "预览",
editError: "历史预览模式下,不支持任何操作.",
clone: "克隆",
+ editorMode_layout: "应用程序布局",
+ editorMode_logic: "应用程序逻辑",
+ editorMode_both: "两者",
},
userAuth: {
registerByEmail: "通过电子邮件注册",
@@ -2147,8 +2210,9 @@ datasourceTutorial: {
},
queryTutorial: {
js: "",
- transformer: "https://docs.lowcoder.cloud/build-apps/write-javascript/transformers",
- tempState: "https://docs.lowcoder.cloud/build-apps/write-javascript/temporary-state",
+ transformer: "https://docs.lowcoder.cloud/business-logic-in-apps/write-javascript/transformers",
+ tempState: "https://docs.lowcoder.cloud/business-logic-in-apps/write-javascript/temporary-state",
+ dataResponder: "https://docs.lowcoder.cloud/lowcoder-documentation/business-logic-in-apps/write-javascript/data-responder",
},
customComponent: {
entryUrl: "https://sdk.lowcoder.cloud/custom_component.html",
@@ -2582,5 +2646,4 @@ timeLine: {
navStyle: "菜单风格",
navItemStyle: "菜单项样式",
}
-};
-
+};
\ No newline at end of file
diff --git a/client/packages/lowcoder/src/pages/common/copyModal.tsx b/client/packages/lowcoder/src/pages/common/copyModal.tsx
index 6f83f0d8b..3c23efd3b 100644
--- a/client/packages/lowcoder/src/pages/common/copyModal.tsx
+++ b/client/packages/lowcoder/src/pages/common/copyModal.tsx
@@ -31,10 +31,11 @@ export function CopyModal(props: CopyModalProps) {
)?.folderId || ""
);
const { visible, close, name, type, id } = props;
-
+ const appName = name.length > 25 ? `${name.substring(0, 25)}...` : name;
+
return (
{
return (
showCreateForm(false)}
activeStepKey={"type"}
destroyOnClose={true}
diff --git a/client/packages/lowcoder/src/pages/editor/LeftContent.tsx b/client/packages/lowcoder/src/pages/editor/LeftContent.tsx
index 94ce1a978..179e2b293 100644
--- a/client/packages/lowcoder/src/pages/editor/LeftContent.tsx
+++ b/client/packages/lowcoder/src/pages/editor/LeftContent.tsx
@@ -64,9 +64,10 @@ function toDataView(value: any, name: string, desc?: ReactNode) {
} else if (_.isPlainObject(value)) {
return ;
}
+
return (
-
+
@@ -150,7 +151,6 @@ const CollapseView = React.memo(
props.onClick && props.onClick(props.name)}>
}
- headerStyle={headerWrapperStyle}
- bodyStyle={{
- padding: "0 0 0 8px",
- scrollbarGutter: "stable",
- overflowX: "hidden",
+ styles={{
+ header: headerWrapperStyle,
+ body: {
+ padding: "0 0 0 8px",
+ overflowX: "hidden",
+ scrollbarGutter: "stable",
+ }
}}
placement="bottom"
closable={false}
diff --git a/client/packages/lowcoder/src/pages/setting/permission/styledComponents.tsx b/client/packages/lowcoder/src/pages/setting/permission/styledComponents.tsx
index c57fb238a..7223016be 100644
--- a/client/packages/lowcoder/src/pages/setting/permission/styledComponents.tsx
+++ b/client/packages/lowcoder/src/pages/setting/permission/styledComponents.tsx
@@ -405,7 +405,14 @@ export function UserDetailPopup(props: { userId: string; title: string }) {
setVisible(false)}
title={title}
diff --git a/client/packages/lowcoder/src/pages/setting/theme/createModal.tsx b/client/packages/lowcoder/src/pages/setting/theme/createModal.tsx
index df9dc0da0..d1ca5265b 100644
--- a/client/packages/lowcoder/src/pages/setting/theme/createModal.tsx
+++ b/client/packages/lowcoder/src/pages/setting/theme/createModal.tsx
@@ -121,7 +121,7 @@ function CreateModal(props: CreateModalProp) {
3 ? "363px" : "313px") : "156px",
- marginBottom: (!!themeList?.length && themeList?.length) > 3 ? "4px" : "0",
+ marginBottom: (!!themeList?.length && themeList?.length > 3) ? "4px" : "0",
}}
>
{trans("theme.defaultThemeTip")}
diff --git a/client/packages/lowcoder/src/pages/setting/theme/themeList.tsx b/client/packages/lowcoder/src/pages/setting/theme/themeList.tsx
index dec9464e5..5170a1c07 100644
--- a/client/packages/lowcoder/src/pages/setting/theme/themeList.tsx
+++ b/client/packages/lowcoder/src/pages/setting/theme/themeList.tsx
@@ -39,6 +39,7 @@ function ThemeList(props: ThemeListProp) {
}
return (
e.stopPropagation()}>
tableRef.current!}
+ getPopupContainer={() => document.getElementById("theme-list-table")!}
dropdownRender={() => (