From 594db176439f7f72993db5b0cba697742fbbf4d9 Mon Sep 17 00:00:00 2001 From: zhangke Date: Mon, 12 Dec 2022 13:47:35 +0800 Subject: [PATCH] fix: add disableEditKeys prop in AddSelect component 1. add disableEditKeys prop in AddSelect component to handle if disable the remove button and edit item Change-Id: Icedad9b2e4ff29f38f00235a88b1dbe8e44df888 --- src/components/FormItem/AddSelect/index.jsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/FormItem/AddSelect/index.jsx b/src/components/FormItem/AddSelect/index.jsx index 84fee6ef..36ab5795 100644 --- a/src/components/FormItem/AddSelect/index.jsx +++ b/src/components/FormItem/AddSelect/index.jsx @@ -36,6 +36,7 @@ export default class index extends Component { optionsByIndex: PropTypes.bool, // special: index=0, use [options[0]]; index=1 use [options[1]]; index >= options.length, options initValue: PropTypes.array, readonlyKeys: PropTypes.array, + disableEditKeys: PropTypes.array, }; static defaultProps = { @@ -48,6 +49,7 @@ export default class index extends Component { optionsByIndex: false, initValue: [], readonlyKeys: [], + disableEditKeys: [], }; constructor(props) { @@ -108,9 +110,10 @@ export default class index extends Component { }; // eslint-disable-next-line no-shadow - canRemove = (index) => { + canRemove = (index, item) => { + const isDisabledKey = this.checkDisabledKey(item); const { minCount } = this.props; - return index >= minCount; + return index >= minCount && !isDisabledKey; }; // eslint-disable-next-line no-shadow @@ -152,6 +155,13 @@ export default class index extends Component { return options; }; + checkDisabledKey = (item) => { + const { key = '' } = item.value || {}; + const { disableEditKeys = [] } = this.props; + const isDisabledKey = disableEditKeys.indexOf(key) >= 0; + return isDisabledKey; + }; + renderTip() { const { tips } = this.props; if (tips) { @@ -198,6 +208,7 @@ export default class index extends Component { const ItemComponent = itemComponent; const { key = '' } = item.value || {}; const keyReadonly = readonlyKeys.indexOf(key) >= 0; + const isDisabledKey = this.checkDisabledKey(item); return ( { this.onItemChange(newValue, index); }} @@ -221,7 +233,7 @@ export default class index extends Component { type="link" onClick={() => this.removeItem(index)} className={classnames(styles.float, styles['remove-btn'])} - disabled={!this.canRemove(index)} + disabled={!this.canRemove(index, it)} >