diff --git a/packages/demo/package.json b/packages/demo/package.json index 27c8194ed..3aa9df46a 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -39,6 +39,7 @@ "@alife/theme-lowcode-light": "^0.1.0", "compare-versions": "^3.0.1", "react": "^16.8.1", + "monaco-editor": "0.21.0", "react-dom": "^16.8.1", "streamsaver": "^2.0.4", "web-streams-polyfill": "^2.1.1" @@ -52,7 +53,7 @@ "build-plugin-fusion": "^0.1.0", "build-plugin-moment-locales": "^0.1.0", "build-plugin-react-app": "^1.1.2", - "monaco-editor-webpack-plugin": "^1.9.0", + "monaco-editor-webpack-plugin": "2.0.0", "tsconfig-paths-webpack-plugin": "^3.2.0" } } diff --git a/packages/editor-setters/package.json b/packages/editor-setters/package.json index e5ed46f68..c35b52f22 100644 --- a/packages/editor-setters/package.json +++ b/packages/editor-setters/package.json @@ -1,6 +1,6 @@ { "name": "@ali/lowcode-editor-setters", - "version": "1.0.8-0", + "version": "1.0.8-beta-3", "description": "Builtin setters for Ali lowCode engine", "files": [ "es", @@ -17,7 +17,6 @@ "@ali/iceluna-comp-expression": "^1.0.6", "@ali/iceluna-comp-form": "^1.0.20", "@ali/iceluna-comp-list": "^1.0.26", - "@ali/iceluna-comp-monaco-editor": "^1.0.31", "@ali/iceluna-comp-object-button": "^1.0.23", "@ali/iceluna-comp-react-node": "^1.0.5", "@ali/iceluna-sdk": "^1.0.5-beta.24", @@ -27,11 +26,10 @@ "acorn": "^6.4.1", "classnames": "^2.2.6", "intl-messageformat": "^9.3.1", - "monaco-editor": "^0.20.0", "qs": "^6.9.1", "react": "^16", "react-dom": "^16.7.0", - "react-monaco-editor": "^0.34.0" + "react-monaco-editor": "0.40.0" }, "devDependencies": { "@alib/build-scripts": "^0.1.18", diff --git a/packages/editor-setters/src/classname-setter/index.tsx b/packages/editor-setters/src/classname-setter/index.tsx new file mode 100644 index 000000000..76f649059 --- /dev/null +++ b/packages/editor-setters/src/classname-setter/index.tsx @@ -0,0 +1,90 @@ +import React, { PureComponent } from 'react'; +import PropTypes from 'prop-types'; +import { Select } from '@alife/next'; + +interface Color { + rgb: any; + onChange: () => void; +} + +export interface PluginProps { + value: string; + onChange: any; +} + +export default class ClassNameView extends PureComponent { + static display = 'ClassName'; + + static propTypes = { + onChange: PropTypes.func, + value: PropTypes.string, + }; + + static defaultProps = { + onChange: () => {}, + value: '', + }; + + getClassNameList = () => { + const { editor } = this.props.field; + const schema = editor.get('designer').project.getSchema(); + const css = schema.componentsTree[0].css; + const classNameList = []; + const re = /\.?\w+[^{]+\{[^}]*\}/g; + const list = css.match(re); + list.map((item) => { + if (item[0] === '.') { + const className = item.substring(1, item.indexOf('{')); + classNameList.push(className); + } + + return item; + }); + + return classNameList; + }; + + + handleChange = (value) => { + const { onChange } = this.props; + onChange(value.join(' ')); + this.setState({ + selectValue: value, + }); + }; + + // eslint-disable-next-line react/no-deprecated + componentWillMount() { + const { value } = this.props; + const classnameList = this.getClassNameList(); + const dataSource = []; + classnameList.map((item) => { + dataSource.push({ + value: item, + label: item, + }); + + return item; + }); + + + let selectValue = []; + if (value && value !== '') { + selectValue = value.split(' '); + } + + + this.setState({ + dataSource, + selectValue, + }); + } + + + render() { + const { dataSource, selectValue } = this.state; + return ( +