From 5a801781ce48ca5d58337a321331974cba06ea69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E7=A6=85?= Date: Mon, 10 Aug 2020 23:26:19 +0800 Subject: [PATCH] =?UTF-8?q?1.=20BoolSetter=20bug=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=9B=202.=20IconSetter=20=E4=BD=93=E9=AA=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96(=E6=96=B0=E5=A2=9E=20defaultValue=20=E5=92=8C=20hasCl?= =?UTF-8?q?ear=20=E7=AD=89=E8=83=BD=E5=8A=9B)=EF=BC=9B=203.=20Button?= =?UTF-8?q?=E3=80=81Icon=20=E7=AD=89=E7=BB=84=E4=BB=B6=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20IconSetter;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/demo/public/assets.json | 26 ++++++-- .../editor-setters/src/icon-setter/index.scss | 26 +++----- .../editor-setters/src/icon-setter/index.tsx | 63 ++++++++++++++----- packages/editor-setters/src/index.tsx | 9 +-- 4 files changed, 79 insertions(+), 45 deletions(-) diff --git a/packages/demo/public/assets.json b/packages/demo/public/assets.json index cd3bcdd20..70ac9ab9a 100644 --- a/packages/demo/public/assets.json +++ b/packages/demo/public/assets.json @@ -1581,12 +1581,12 @@ "override": [ { "name": "icon", - "setter": "StringSetter", + "setter": "IconSetter", "extraProps": { "defaultValue": "success", "onChange": { "type": "JSFunction", - "value": "(val, field, editor) => {\n field.nodes[0].children.import({\"componentName\": \"Icon\", \"props\": {\"type\": val, \"style\": {\"marginRight\": 5}}}, true); //field.top.setPropValue('children', [{\"componentName\": \"Icon\", \"props\": {\"type\": val}}, (field.top.getPropValue('children') || []).slice(-1)]);\n}" + "value": "(val, field, editor) => {\n field.nodes[0].children.import(val && {\"componentName\": \"Icon\", \"props\": {\"type\": val, \"style\": {\"marginRight\": 5}}}, true); //field.top.setPropValue('children', [{\"componentName\": \"Icon\", \"props\": {\"type\": val}}, (field.top.getPropValue('children') || []).slice(-1)]);\n}" } } }, @@ -5716,7 +5716,7 @@ "props": [ { "name": "type", - "propType": "string", + "propType": "icon", "description": "指定显示哪种图标" }, { @@ -5741,7 +5741,7 @@ "number" ] }, - "description": "指定图标大小\n
**可选值**
xxs, xs, small, medium, large, xl, xxl, xxxl, inherit", + "description": "指定图标大小", "defaultValue": "medium" }, { @@ -5752,7 +5752,23 @@ "name": "style", "propType": "object" } - ] + ], + "configure": { + "props": { + "isExtends": true, + "override": [ + { + "name": "type", + "setter": { + "componentName": "IconSetter", + "props": { + "hasClear": false + } + } + } + ] + } + } }, { "componentName": "Input", diff --git a/packages/editor-setters/src/icon-setter/index.scss b/packages/editor-setters/src/icon-setter/index.scss index ad419cff8..3638caf78 100644 --- a/packages/editor-setters/src/icon-setter/index.scss +++ b/packages/editor-setters/src/icon-setter/index.scss @@ -1,24 +1,16 @@ -.lowcode-icon-box { - display: inline-block; - margin-right: -5px; - padding: 3px 0 3px 0; - width: 26px; - height: 26px; - text-align: center; - line-height: 20px; - background: #f2f2f2; - div { - width: 20px; - height: 20px; - border: 1px solid #ddd; - } -} - - .lc-icon-setter{ .next-input{ width: auto !important; } + i { + min-width: 12px; + } + i:hover { + cursor: pointer; + } + input:hover { + cursor: pointer; + } } diff --git a/packages/editor-setters/src/icon-setter/index.tsx b/packages/editor-setters/src/icon-setter/index.tsx index 7bf84b31d..edf3b1855 100644 --- a/packages/editor-setters/src/icon-setter/index.tsx +++ b/packages/editor-setters/src/icon-setter/index.tsx @@ -64,31 +64,68 @@ const icons = [ ]; interface IconSetterProps { value: string; + defaultValue: string; + placeholder: string; + hasClear: boolean; onChange: (icon: string) => undefined; icons: string[]; } export default class IconSetter extends PureComponent { static defaultProps = { - value: '', + value: undefined, + defaultValue: '', + hasClear: true, icons: icons, + placeholder: '请点击选择 Icon', onChange: (icon: string) => undefined, }; - onInputChange() { - console.log(this); - } + state = { + firstLoad: true, + }; - onSelectIcon(icon: string) { + onInputChange = (icon: string) => { const { onChange } = this.props; onChange(icon); - } + }; + + onSelectIcon = (icon: string) => { + const { onChange } = this.props; + onChange(icon); + }; render() { - const { icons, value } = this.props; + const { icons, value, defaultValue, onChange, placeholder, hasClear } = this.props; + const { firstLoad } = this.state; + if (firstLoad && defaultValue && typeof value === 'undefined') onChange(defaultValue); + this.setState({ + firstLoad: false, + }); + const currentIcon = ; + const clearIcon = hasClear && ( + { + e.preventDefault(); + e.stopPropagation(); + this.onSelectIcon(''); + }} + /> + ); const triggerNode = ( -
- +
+
); const InnerBeforeNode = ( @@ -105,17 +142,13 @@ export default class IconSetter extends PureComponent {
    {icons.map((icon) => (
  • this.onSelectIcon(icon)}> - +
  • ))}
); - return ( -
- -
- ); + return
{InnerBeforeNode}
; } } diff --git a/packages/editor-setters/src/index.tsx b/packages/editor-setters/src/index.tsx index 3dc8f157a..5e00f4acf 100644 --- a/packages/editor-setters/src/index.tsx +++ b/packages/editor-setters/src/index.tsx @@ -19,14 +19,7 @@ export const NumberSetter = NumberPicker; export class BoolSetter extends Component { render() { const { onChange, value, defaultValue } = this.props; - return ( - { - onChange(val); - }} - /> - ); + return ; } } export const SelectSetter = Select;