mirror of
https://github.com/NetEase/tango.git
synced 2026-09-01 15:03:03 +08:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 979aa34259 | |||
| 76a5a2c659 | |||
| 53ebd89c9a | |||
| 3980810502 | |||
| accd826376 | |||
| 5ca1118f88 | |||
| 14cd4c54a1 |
@@ -45,10 +45,10 @@ gantt
|
||||
%% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".)
|
||||
|
||||
section Builder Release
|
||||
Alpha version :active, des1, 2023-08-10, 2023-08-30
|
||||
Beta version : des2, 2023-09-01, 2023-09-30
|
||||
1.0 RC : des3, after des2, 40d
|
||||
1.0 version : des4, after des3, 21d
|
||||
Alpha version :active, m1, 2023-08-10, 2023-08-30
|
||||
Beta version : m2, 2023-09-01, 2023-09-30
|
||||
1.0 RC : m3, 2023-10-01, 2023-12-15
|
||||
1.0 version : m4, after m3, 10d
|
||||
```
|
||||
|
||||
## 💻 Development
|
||||
|
||||
+4
-4
@@ -45,10 +45,10 @@ gantt
|
||||
%% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".)
|
||||
|
||||
section Builder Release
|
||||
Alpha version :active, des1, 2023-08-10, 2023-08-30
|
||||
Beta version : des2, 2023-09-01, 2023-09-30
|
||||
1.0 RC : des3, after des2, 40d
|
||||
1.0 version : des4, after des3, 21d
|
||||
Alpha version :active, m1, 2023-08-10, 2023-08-30
|
||||
Beta version : m2, 2023-09-01, 2023-09-30
|
||||
1.0 RC : m3, 2023-10-01, 2023-12-15
|
||||
1.0 version : m4, after m3, 10d
|
||||
```
|
||||
|
||||
## 💻 开发
|
||||
|
||||
@@ -75,15 +75,6 @@ const tangoConfigJson = {
|
||||
},
|
||||
};
|
||||
|
||||
const appJson: any = {
|
||||
pages: [
|
||||
{
|
||||
path: '/',
|
||||
name: '首页',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const routesCode = `
|
||||
import Index from "./pages/list";
|
||||
|
||||
@@ -249,7 +240,6 @@ p {
|
||||
|
||||
export const sampleFiles = [
|
||||
{ filename: '/package.json', code: JSON.stringify(packageJson) },
|
||||
{ filename: '/appJson.json', code: JSON.stringify(appJson) },
|
||||
{ filename: '/tango.config.json', code: JSON.stringify(tangoConfigJson) },
|
||||
{ filename: '/README.md', code: '# readme' },
|
||||
{ filename: '/src/index.less', code: lessCode },
|
||||
|
||||
@@ -82,7 +82,6 @@ export default function App() {
|
||||
}
|
||||
>
|
||||
<Sidebar>
|
||||
<Sidebar.Item key="outline" label="结构" icon={<BuildOutlined />} />
|
||||
<Sidebar.Item
|
||||
key="components"
|
||||
label="组件"
|
||||
@@ -92,6 +91,7 @@ export default function App() {
|
||||
loading: menuLoading,
|
||||
}}
|
||||
/>
|
||||
<Sidebar.Item key="outline" label="结构" icon={<BuildOutlined />} />
|
||||
<Sidebar.Item
|
||||
key="variables"
|
||||
label="变量"
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.2.10](https://github.com/netease/tango/compare/@music163/tango-context@0.2.9...@music163/tango-context@0.2.10) (2023-11-30)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-context
|
||||
|
||||
## [0.2.9](https://github.com/netease/tango/compare/@music163/tango-context@0.2.8...@music163/tango-context@0.2.9) (2023-11-29)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-context
|
||||
|
||||
## [0.2.8](https://github.com/netease/tango/compare/@music163/tango-context@0.2.7...@music163/tango-context@0.2.8) (2023-11-27)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-context
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@music163/tango-context",
|
||||
"version": "0.2.8",
|
||||
"version": "0.2.10",
|
||||
"description": "react context for tango-apps",
|
||||
"keywords": [
|
||||
"react",
|
||||
@@ -31,7 +31,7 @@
|
||||
"react": ">= 16.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"@music163/tango-core": "^0.2.7",
|
||||
"@music163/tango-core": "^0.2.9",
|
||||
"@music163/tango-helpers": "^0.1.8",
|
||||
"mobx-react-lite": "4.0.2"
|
||||
},
|
||||
|
||||
@@ -3,6 +3,18 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.2.9](https://github.com/netease/tango/compare/@music163/tango-core@0.2.8...@music163/tango-core@0.2.9) (2023-11-30)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- fix render components tree ([76a5a2c](https://github.com/netease/tango/commit/76a5a2c65920bc42b019cd1f32a3cacd0d888638))
|
||||
|
||||
## [0.2.8](https://github.com/netease/tango/compare/@music163/tango-core@0.2.7...@music163/tango-core@0.2.8) (2023-11-29)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- workspace onFilesChange ([#70](https://github.com/netease/tango/issues/70)) ([accd826](https://github.com/netease/tango/commit/accd8263764c811ea8175a9cd341fc6fa6c75967))
|
||||
|
||||
## [0.2.7](https://github.com/netease/tango/compare/@music163/tango-core@0.2.6...@music163/tango-core@0.2.7) (2023-11-27)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@music163/tango-core",
|
||||
"version": "0.2.7",
|
||||
"version": "0.2.9",
|
||||
"description": "tango core",
|
||||
"author": "wwsun <ww.sun@outlook.com>",
|
||||
"homepage": "",
|
||||
|
||||
@@ -688,7 +688,6 @@ export function addRouteToRouteFile(ast: t.File, routePath: string, importFilePa
|
||||
const newNode = t.objectExpression([
|
||||
t.objectProperty(t.identifier('path'), t.stringLiteral(routePath)),
|
||||
t.objectProperty(t.identifier('component'), t.identifier(component)),
|
||||
// FIXME: tango/issues#144 https://g.hz.netease.com/tango/issues/-/issues/144
|
||||
t.objectProperty(t.identifier('exact'), t.booleanLiteral(true)),
|
||||
]);
|
||||
path.node.elements.push(newNode);
|
||||
|
||||
@@ -56,6 +56,7 @@ export class TangoFile {
|
||||
this._code = code;
|
||||
this._cleanCode = code;
|
||||
}
|
||||
this.workspace.onFilesChange([this.filename]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,6 +135,7 @@ export class TangoJsonFile extends TangoFile {
|
||||
logger.error(err);
|
||||
}
|
||||
}
|
||||
this.workspace.onFilesChange([this.filename]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -149,8 +149,6 @@ export interface IWorkspace {
|
||||
setComponentPrototypes: (prototypes: Record<string, ComponentPrototypeType>) => void;
|
||||
getPrototype: (name: string | ComponentPrototypeType) => ComponentPrototypeType;
|
||||
|
||||
onFilesChange?: (filenames: string[]) => void;
|
||||
|
||||
// ----------------- 文件操作 -----------------
|
||||
addFiles: (files: IFileConfig[]) => void;
|
||||
addFile: (filename: string, code: string, fileType?: FileType) => void;
|
||||
@@ -169,6 +167,12 @@ export interface IWorkspace {
|
||||
listFiles: () => Record<string, string>;
|
||||
getFile: (filename: string) => TangoFile;
|
||||
|
||||
/**
|
||||
* 文件变化回调
|
||||
* @param filenames 文件名列表
|
||||
*/
|
||||
onFilesChange: (filenames: string[]) => void;
|
||||
|
||||
// ----------------- 节点操作 -----------------
|
||||
|
||||
removeSelectedNode: () => void;
|
||||
|
||||
@@ -46,6 +46,8 @@ export class TangoModule extends TangoFile {
|
||||
|
||||
this._analysisAst();
|
||||
|
||||
this.workspace.onFilesChange([this.filename]);
|
||||
|
||||
if (refreshWorkspace) {
|
||||
this.workspace.refresh([this.filename]);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { action, computed, makeObservable, observable } from 'mobx';
|
||||
import { JSXElement } from '@babel/types';
|
||||
import {
|
||||
array2object,
|
||||
ComponentPrototypeType,
|
||||
hasFileExtension,
|
||||
isString,
|
||||
@@ -16,7 +15,6 @@ import {
|
||||
getJSXElementChildrenNames,
|
||||
namesToImportDeclarations,
|
||||
getBlockNameByFilename,
|
||||
getPrivilegeCode,
|
||||
prototype2importDeclarationData,
|
||||
} from '../helpers';
|
||||
import { DropMethod } from './drop-target';
|
||||
@@ -59,7 +57,7 @@ export interface IWorkspaceOptions {
|
||||
/**
|
||||
* 工作区文件变更事件
|
||||
*/
|
||||
onFilesChange?: (filenames: string[]) => void;
|
||||
onFilesChange?: IWorkspace['onFilesChange'];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,17 +122,6 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
*/
|
||||
tangoConfigJson: TangoJsonFile;
|
||||
|
||||
/**
|
||||
* appJson.json 文件
|
||||
* FIXME: 是否保留 ???
|
||||
*/
|
||||
appJson: TangoJsonFile;
|
||||
|
||||
/**
|
||||
* 代码变更回调
|
||||
*/
|
||||
onFilesChange?: (filenames: string[]) => void;
|
||||
|
||||
/**
|
||||
* 绑定事件
|
||||
* TODO: 是否需要自己来管理 listeners,并及时进行 gc
|
||||
@@ -170,15 +157,12 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
* 获取页面列表
|
||||
*/
|
||||
get pages() {
|
||||
const appJsonPages = this.appJson?.getValue('pages');
|
||||
const pagesMap = array2object(appJsonPages || [], (item) => item.path);
|
||||
const ret: IPageConfigData[] = [];
|
||||
this.routeModule?.routes.forEach((item) => {
|
||||
const data = pagesMap[item.path];
|
||||
if (item.path !== '*') {
|
||||
ret.push({
|
||||
...data,
|
||||
path: item.path,
|
||||
name: item.component,
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -230,7 +214,11 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
this.activeViewFile = '';
|
||||
this.files = new Map();
|
||||
this.isReady = false;
|
||||
this.onFilesChange = options?.onFilesChange;
|
||||
|
||||
if (options?.onFilesChange) {
|
||||
// 使用用户提供的 onFilesChange
|
||||
this.onFilesChange = options.onFilesChange;
|
||||
}
|
||||
|
||||
if (options?.files) {
|
||||
this.addFiles(options.files);
|
||||
@@ -390,10 +378,6 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
module = new TangoJsonFile(this, props);
|
||||
this.tangoConfigJson = module;
|
||||
break;
|
||||
case FileType.AppJson:
|
||||
module = new TangoJsonFile(this, props);
|
||||
this.appJson = module;
|
||||
break;
|
||||
case FileType.Json:
|
||||
module = new TangoJsonFile(this, props);
|
||||
break;
|
||||
@@ -517,12 +501,6 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
this.routeModule.removeRoute(routePath).update();
|
||||
this.setActiveRoute(this.routeModule.routes[0]?.path || '/');
|
||||
}
|
||||
// remove appJson page
|
||||
this.appJson
|
||||
?.setValue('pages', (pages) => {
|
||||
return (pages as IPageConfigData[]).filter((page) => page.path !== routePath);
|
||||
})
|
||||
.update();
|
||||
this.removeFile(filename);
|
||||
}
|
||||
|
||||
@@ -552,16 +530,6 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
*/
|
||||
addRoute(routeData: IPageConfigData, importFilePath: string) {
|
||||
this.routeModule?.addRoute(routeData.path, importFilePath).update();
|
||||
this.appJson
|
||||
?.setValue('pages', (pages) => {
|
||||
(pages as IPageConfigData[]).push({
|
||||
name: routeData.name || routeData.path,
|
||||
path: routeData.path,
|
||||
privilegeCode: getPrivilegeCode(this.packageJson?.getValue('name'), routeData.path),
|
||||
});
|
||||
return pages;
|
||||
})
|
||||
.update();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -573,18 +541,6 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
if (sourceRoutePath !== targetPageData.path) {
|
||||
this.routeModule?.updateRoute(sourceRoutePath, targetPageData.path).update();
|
||||
}
|
||||
this.appJson
|
||||
?.setValue('pages', (pages) => {
|
||||
for (const page of pages as IPageConfigData[]) {
|
||||
if (page.path === sourceRoutePath) {
|
||||
page.path = targetPageData.path;
|
||||
page.name = targetPageData.name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return pages;
|
||||
})
|
||||
.update();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1175,6 +1131,10 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
}
|
||||
}
|
||||
|
||||
onFilesChange(filenams: string[]) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新目标文件
|
||||
* @param filenames
|
||||
@@ -1188,7 +1148,6 @@ export class Workspace extends EventTarget implements IWorkspace {
|
||||
},
|
||||
}),
|
||||
);
|
||||
this.onFilesChange?.(filenames);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -100,7 +100,6 @@ export interface IImportSpecifierData {
|
||||
|
||||
/**
|
||||
* 解析的导入语句数据
|
||||
* FIXME: 需要考虑到有两行重复的语句的情况
|
||||
*/
|
||||
export type ImportDeclarationDataType = Record<string, IImportSpecifierData[]>;
|
||||
|
||||
@@ -193,7 +192,7 @@ export interface IPageConfigData {
|
||||
*/
|
||||
name?: string;
|
||||
/**
|
||||
* PMS 权限码
|
||||
* 权限码
|
||||
*/
|
||||
privilegeCode?: string;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.5.12](https://github.com/netease/tango/compare/@music163/tango-designer@0.5.11...@music163/tango-designer@0.5.12) (2023-11-30)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- fix render components tree ([76a5a2c](https://github.com/netease/tango/commit/76a5a2c65920bc42b019cd1f32a3cacd0d888638))
|
||||
|
||||
## [0.5.11](https://github.com/netease/tango/compare/@music163/tango-designer@0.5.10...@music163/tango-designer@0.5.11) (2023-11-29)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-designer
|
||||
|
||||
## [0.5.10](https://github.com/netease/tango/compare/@music163/tango-designer@0.5.9...@music163/tango-designer@0.5.10) (2023-11-28)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- update default theme ([14cd4c5](https://github.com/netease/tango/commit/14cd4c54a1e5eed834d01921e186bdba9bbe7922))
|
||||
|
||||
## [0.5.9](https://github.com/netease/tango/compare/@music163/tango-designer@0.5.8...@music163/tango-designer@0.5.9) (2023-11-28)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@music163/tango-designer",
|
||||
"version": "0.5.9",
|
||||
"version": "0.5.12",
|
||||
"description": "lowcode designer",
|
||||
"keywords": [
|
||||
"react"
|
||||
@@ -33,11 +33,11 @@
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^4.8.0",
|
||||
"@music163/request": "^0.1.2",
|
||||
"@music163/tango-context": "^0.2.8",
|
||||
"@music163/tango-core": "^0.2.7",
|
||||
"@music163/tango-context": "^0.2.10",
|
||||
"@music163/tango-core": "^0.2.9",
|
||||
"@music163/tango-helpers": "^0.1.8",
|
||||
"@music163/tango-sandbox": "^0.1.12",
|
||||
"@music163/tango-setting-form": "^0.2.12",
|
||||
"@music163/tango-sandbox": "^0.1.14",
|
||||
"@music163/tango-setting-form": "^0.2.14",
|
||||
"@music163/tango-ui": "^0.1.12",
|
||||
"antd": "^4.24.2",
|
||||
"cash-dom": "^8.1.2",
|
||||
|
||||
@@ -148,6 +148,12 @@ export const ComponentsTree: React.FC<ComponentsTreeProps> = observer(
|
||||
setSelectedKeys(workspace.selectSource.selected.map((item) => item.id));
|
||||
}, [workspace.selectSource.selected]);
|
||||
|
||||
useEffect(() => {
|
||||
setExpandedKeys(getNodeKeys(nodesTree));
|
||||
// nodeTree 更新后重新计算expandKeys
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [nodesTree?.[0]?.id]);
|
||||
|
||||
if (!nodesTree.length) {
|
||||
return (
|
||||
<Box>
|
||||
@@ -156,12 +162,6 @@ export const ComponentsTree: React.FC<ComponentsTreeProps> = observer(
|
||||
);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
setExpandedKeys(getNodeKeys(nodesTree));
|
||||
// nodeTree 更新后重新计算expandKeys
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [nodesTree?.[0]?.id]);
|
||||
|
||||
return (
|
||||
<Box css={outlineStyle}>
|
||||
<Tree
|
||||
@@ -230,4 +230,4 @@ export const ComponentsTree: React.FC<ComponentsTreeProps> = observer(
|
||||
</Box>
|
||||
);
|
||||
},
|
||||
);
|
||||
);
|
||||
|
||||
@@ -31,11 +31,11 @@ export default extendTheme({
|
||||
toolbarDividerColor: 'gray.60',
|
||||
toolbarButtonBg: 'rgba(223, 223, 223, 0.08)',
|
||||
toolbarButtonBgHover: '#4080ff',
|
||||
toolbarButtonBgDisabled: 'rgb(223,223,223)',
|
||||
toolbarButtonBgDisabled: 'rgba(223,223,223, 0.08)',
|
||||
toolbarButtonBgActive: '#4080ff',
|
||||
toolbarButtonTextColor: '#f5f5f5',
|
||||
toolbarButtonTextColor: '#FFF',
|
||||
toolbarButtonTextColorHover: '#FFF',
|
||||
toolbarButtonTextColorDisabled: 'rgb(201,205,212)',
|
||||
toolbarButtonTextColorDisabled: 'hsla(0,0%,100%,0.3)',
|
||||
toolbarButtonTextColorActive: '#fff',
|
||||
sidebarBg: '#fff',
|
||||
sidebarExpandBg: '#fff',
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.1.14](https://github.com/netease/tango/compare/@music163/tango-sandbox@0.1.13...@music163/tango-sandbox@0.1.14) (2023-11-30)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-sandbox
|
||||
|
||||
## [0.1.13](https://github.com/netease/tango/compare/@music163/tango-sandbox@0.1.12...@music163/tango-sandbox@0.1.13) (2023-11-29)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-sandbox
|
||||
|
||||
## [0.1.12](https://github.com/netease/tango/compare/@music163/tango-sandbox@0.1.11...@music163/tango-sandbox@0.1.12) (2023-11-27)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-sandbox
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@music163/tango-sandbox",
|
||||
"version": "0.1.12",
|
||||
"version": "0.1.14",
|
||||
"description": "sandbox of tango apps",
|
||||
"author": "wwsun <ww.sun@outlook.com>",
|
||||
"homepage": "",
|
||||
@@ -29,7 +29,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^4.8.0",
|
||||
"@music163/tango-core": "^0.2.7",
|
||||
"@music163/tango-core": "^0.2.9",
|
||||
"@music163/tango-helpers": "^0.1.8",
|
||||
"crypto-js": "^4.1.1",
|
||||
"lodash.isequal": "4.5.0",
|
||||
|
||||
@@ -3,6 +3,16 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.2.14](https://github.com/netease/tango/compare/@music163/tango-setting-form@0.2.13...@music163/tango-setting-form@0.2.14) (2023-11-30)
|
||||
|
||||
**Note:** Version bump only for package @music163/tango-setting-form
|
||||
|
||||
## [0.2.13](https://github.com/netease/tango/compare/@music163/tango-setting-form@0.2.12...@music163/tango-setting-form@0.2.13) (2023-11-29)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- workspace onFilesChange ([#70](https://github.com/netease/tango/issues/70)) ([accd826](https://github.com/netease/tango/commit/accd8263764c811ea8175a9cd341fc6fa6c75967))
|
||||
|
||||
## [0.2.12](https://github.com/netease/tango/compare/@music163/tango-setting-form@0.2.11...@music163/tango-setting-form@0.2.12) (2023-11-28)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@music163/tango-setting-form",
|
||||
"version": "0.2.12",
|
||||
"version": "0.2.14",
|
||||
"description": "setting form of tango-apps",
|
||||
"author": "wwsun <ww.sun@outlook.com>",
|
||||
"homepage": "",
|
||||
@@ -28,7 +28,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^4.8.0",
|
||||
"@music163/tango-core": "^0.2.7",
|
||||
"@music163/tango-core": "^0.2.9",
|
||||
"@music163/tango-helpers": "^0.1.8",
|
||||
"@music163/tango-ui": "^0.1.12",
|
||||
"antd": "^4.24.2",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import { FormItemComponentProps } from './form-item';
|
||||
|
||||
// FIXME: 内置 ExpressionSetter,默认全部 fallback 到此 setter
|
||||
// TODO: 内置基本的 ExpressionSetter,默认全部 fallback 到此 setter
|
||||
export function ExpressionSetter(props: FormItemComponentProps<string>) {
|
||||
return <div>exp setter</div>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user