diff --git a/templates/Project/components/_mdfComponent/buttonComp.js b/templates/Project/components/_mdfComponent/buttonComp.js deleted file mode 100644 index d9fda26..0000000 --- a/templates/Project/components/_mdfComponent/buttonComp.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; -import compUtils from './common'; -export default (WrapComponent, model) => { - return class ButtonComp extends React.Component { - componentDidMount () { - console.log('%c container didMount', 'color:red'); - compUtils.bind(this); - } - - componentWillUnmount () { - console.log('%c container Unmount', 'color:red'); - compUtils.unbind(this); - } - - afterClick () { - const currentModel = this.props.model; - currentModel?.fireEvent('click'); - } - - render () { - const allProps = { - ...this.props, - ...this.state - } - return - } - } -} diff --git a/templates/Project/components/_mdfComponent/common.js b/templates/Project/components/_mdfComponent/common.js deleted file mode 100644 index 51a6eee..0000000 --- a/templates/Project/components/_mdfComponent/common.js +++ /dev/null @@ -1,38 +0,0 @@ -const type2models = { - simple: 'SimpleModel', - list: 'ListModel', - grid: 'GridModel', - tag: 'TagModel', - tree: 'TreeModel', - refer: 'ReferModel' -} - -const compUtils = { - bind: function (oThis, model) { - const newModelType = type2models[model]; - if (newModelType && typeof cb !== 'undefined') { - const viewModel = oThis.props.viewModel || oThis.props.pageModel - const cItemName = oThis.props.cItemName; - oThis.newModel = new cb.models[newModelType](oThis.modelData || {}); - if (cItemName) { - viewModel.removeProperty(cItemName) - viewModel.addProperty(cItemName, oThis.newModel) - } - } - const currentModel = oThis.newModel || oThis.props.model; - if (currentModel) currentModel.addListener(oThis); - }, - unbind: function (oThis) { - const currentModel = oThis.newModel || oThis.props.model; - if (currentModel) currentModel.removeListener(oThis); - }, - setModelConfig: function (oThis, data) { - // if (!(typeof cb == 'undefined')) { - // const currentModel = oThis.newModel || oThis.props.model; - // cb.models.BaseModel.call(currentModel, data); - // } - oThis.modelData = data; - } -} - -export default compUtils diff --git a/templates/Project/components/_mdfComponent/containerComp.js b/templates/Project/components/_mdfComponent/containerComp.js deleted file mode 100644 index ea425da..0000000 --- a/templates/Project/components/_mdfComponent/containerComp.js +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import compUtils from './common'; -export default (WrapComponent, model) => { - return class ControlComp extends React.Component { - constructor (props) { - super(); - } - - componentDidMount () { - console.log('%c container didMount', 'color:red'); - compUtils.bind(this, model); - const { viewModel, meta } = this.props; - viewModel.on('updateViewMeta', args => { - const { code, visible } = args; - if (code == meta.cGroupCode) { - this.setState({ visible }); - } - }, undefined, true); - } - - componentWillUnmount () { - console.log('%c container Unmount', 'color:red'); - compUtils.unbind(this); - } - - setModelConfig = (data) => { - compUtils.setModelConfig(this, data) - } - - render () { - const allProps = { - ...this.props, - ...this.state, - setModelConfig: this.setModelConfig - } - return - } - } -} diff --git a/templates/Project/components/_mdfComponent/controlComp.js b/templates/Project/components/_mdfComponent/controlComp.js deleted file mode 100644 index bc3cee2..0000000 --- a/templates/Project/components/_mdfComponent/controlComp.js +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; -import compUtils from './common'; -export default (WrapComponent, model) => { - return class ControlComp extends React.Component { - constructor (props) { - super(); - } - - componentDidMount () { - console.log('%c container didMount', 'color:red'); - compUtils.bind(this, model); - } - - componentWillUnmount () { - console.log('%c container Unmount', 'color:red'); - compUtils.unbind(this); - } - - /** - * 输入值改变之后出发事件 - * @param {*} value 当前输入框值 - */ - afterValueChange = (value) => { - const currentModel = this.newModel || this.props.model; - currentModel.setValue(value); - } - - /** - * 模型校验后的回调事件 - * @param {*} val 当前校验信息 - */ - validate (val) { - this.setState({ - err: 'has-feedback has-' + val.type, - msg: val.message - }); - } - - setModelConfig = (data) => { - compUtils.setModelConfig(this, data) - } - - render () { - const allProps = { - ...this.props, - ...this.state, - afterValueChange: this.afterValueChange, - setModelConfig: this.setModelConfig - } - return - } - } -} diff --git a/templates/Project/components/_mdfComponent/demo.jsx b/templates/Project/components/_mdfComponent/demo.jsx deleted file mode 100644 index adcec98..0000000 --- a/templates/Project/components/_mdfComponent/demo.jsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react'; -import { Input } from 'yonui-ys'; - -import MDFComponent from './index'; -import MetaConfig from './metaConfig'; - -// api 说明 -// { -// name: 字段属性名, -// type: 属性类型,[array, bool, func, number, string, element, node ] -// defaultValue: 默认值, -// isMust: 是否必填, -// desc: 属性描述 -// } -const api = [ - { - name: 'value', - defaultValue: 1, - isMust: true, - desc: '代表输入框值' - }, - { - name: 'className', - defaultValue: 'default-class', - isMust: false, - desc: '控件样式名称' - } -] - -@MDFComponent({type: 'control'}) // @mdf 标识,参数改成对象模式,type,绑定模型是什么 -@MetaConfig({name: '控件名字', api: api}) -class Demo extends React.Component { - constructor (props) { - super(props) - this.state = {} - } - - open = () => { - this.setState({ - open:true - }) - this.props.onOpen() - } - - handleChange = (e) => { - const value = e && e.target ? e.target.value : e; - const { afterValueChange } = this.props - if (typeof afterValueChange == 'function') - afterValueChange(value); - } - - render () { - const { value } = this.props; - return
Demo hello!!!
- } -} - -export default Demo diff --git a/templates/Project/components/_mdfComponent/factory.js b/templates/Project/components/_mdfComponent/factory.js deleted file mode 100644 index 323d872..0000000 --- a/templates/Project/components/_mdfComponent/factory.js +++ /dev/null @@ -1,28 +0,0 @@ - -import ControlComp from './controlComp' -import ButtonComp from './buttonComp' -import ContainerComp from './containerComp' - -function createComp (compInfo = {}) { - return function (targetCompent, name, descriptor) { - console.log(targetCompent, name, descriptor) - return getAbstractCompFactory(compInfo, targetCompent) - } -} - -function getAbstractCompFactory (compInfo, targetCompent) { - const { type, model } = compInfo - console.log('type', type); - switch (type) { - case 'control': - return ControlComp(targetCompent, model); - case 'container': - return ContainerComp(targetCompent, model); - case 'button': - return ButtonComp(targetCompent); - default: - console.log('%c 依赖基类不存在', 'color:red'); - } -} - -export default createComp diff --git a/templates/Project/components/_mdfComponent/index.js b/templates/Project/components/_mdfComponent/index.js deleted file mode 100644 index b089416..0000000 --- a/templates/Project/components/_mdfComponent/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import MDFComponent from './factory'; -import MetaConfig from './metaConfig'; -export {MDFComponent, MetaConfig} \ No newline at end of file diff --git a/templates/Project/components/_mdfComponent/metaConfig.js b/templates/Project/components/_mdfComponent/metaConfig.js deleted file mode 100644 index 79d21ae..0000000 --- a/templates/Project/components/_mdfComponent/metaConfig.js +++ /dev/null @@ -1,40 +0,0 @@ -// import React from 'react'; - -export default function MetaConfig (metaInfo = {}) { - const { name, api } = metaInfo - console.log('name', name, 'api', api); - return function (targetComponent, name, descriptor) { - console.log(targetComponent, name, descriptor) - const {defaultProps, propTypes} = aynalyProps(api) - targetComponent.defaultProps = defaultProps; - targetComponent.propTypes = propTypes; - } -} -/** - * 解析api,将默认的属性同步到类上 - * @param {array} api - * api 中每个元素item说明 - * { - * name: 字段属性名, - * type: 属性类型,[array, bool, func, number, string, element, node ] - * defaultValue: 默认值, - * isMust: 是否必填, - * desc: 属性描述 - * } - */ -function aynalyProps (api = []) { - const defaultProps = {}; - const propTypes = {}; - api.forEach(item => { - const name = item?.name - if (name) { - const { type, defaultValue } = item; - if (defaultValue || defaultValue == 0) - defaultProps[name] = defaultValue - if (type) { - propTypes[name] = type - } - } - }) - return {defaultProps, propTypes}; -} diff --git a/templates/Project/package.json b/templates/Project/package.json index f874b3a..445d307 100644 --- a/templates/Project/package.json +++ b/templates/Project/package.json @@ -42,6 +42,7 @@ "bee-tag": "0.0.3", "eslint": "^6.8.0", "eslint-config-standard": "^14.1.0", + "yonui-mdf-comp-factory": "^0.0.1", "eslint-config-standard-with-typescript": "^16.0.0", "eslint-plugin-import": "^2.20.1", "eslint-plugin-node": "^11.0.0",