Merge "refactor: refactor NameInput component"
This commit is contained in:
commit
01c0dd08fd
@ -47,30 +47,19 @@ const {
|
|||||||
export default class index extends Component {
|
export default class index extends Component {
|
||||||
static isFormItem = true;
|
static isFormItem = true;
|
||||||
|
|
||||||
getRules({
|
getRuleValidator(props) {
|
||||||
names,
|
const {
|
||||||
rules,
|
withoutChinese,
|
||||||
withoutChinese,
|
isFile,
|
||||||
isFile,
|
isKeypair,
|
||||||
isKeypair,
|
isStack,
|
||||||
isStack,
|
isCrontab,
|
||||||
isCrontab,
|
isImage,
|
||||||
isImage,
|
isInstance,
|
||||||
isInstance,
|
isSwiftFile,
|
||||||
isSwiftFile,
|
isDatabaseName,
|
||||||
isDatabaseName,
|
isDatabaseUserName,
|
||||||
isDatabaseUserName,
|
} = props;
|
||||||
}) {
|
|
||||||
const uniqueNameValidate = (rule, value) => {
|
|
||||||
if (names && names.length && names.includes(value)) {
|
|
||||||
const message = t('Name can not be duplicated');
|
|
||||||
return Promise.reject(new Error(`${t('Invalid: ')}${message}`));
|
|
||||||
}
|
|
||||||
return Promise.resolve(true);
|
|
||||||
};
|
|
||||||
const uniqueRule = {
|
|
||||||
validator: uniqueNameValidate,
|
|
||||||
};
|
|
||||||
let validator = nameValidate;
|
let validator = nameValidate;
|
||||||
if (isFile) {
|
if (isFile) {
|
||||||
validator = fileNameValidate;
|
validator = fileNameValidate;
|
||||||
@ -93,8 +82,24 @@ export default class index extends Component {
|
|||||||
} else if (isDatabaseUserName) {
|
} else if (isDatabaseUserName) {
|
||||||
validator = databaseUserNameValidate;
|
validator = databaseUserNameValidate;
|
||||||
}
|
}
|
||||||
|
return validator;
|
||||||
|
}
|
||||||
|
|
||||||
|
getRules(ruleProps) {
|
||||||
|
const { names, rules, ...rest } = ruleProps;
|
||||||
|
const uniqueNameValidate = (rule, value) => {
|
||||||
|
if (names && names.length && names.includes(value)) {
|
||||||
|
const message = t('Name can not be duplicated');
|
||||||
|
return Promise.reject(new Error(`${t('Invalid: ')}${message}`));
|
||||||
|
}
|
||||||
|
return Promise.resolve(true);
|
||||||
|
};
|
||||||
|
const uniqueRule = {
|
||||||
|
validator: uniqueNameValidate,
|
||||||
|
};
|
||||||
|
|
||||||
const newRules = {
|
const newRules = {
|
||||||
validator,
|
validator: this.getRuleValidator(rest),
|
||||||
};
|
};
|
||||||
if (rules && rules.length > 0) {
|
if (rules && rules.length > 0) {
|
||||||
return [...rules, newRules, uniqueRule];
|
return [...rules, newRules, uniqueRule];
|
||||||
@ -147,8 +152,8 @@ export default class index extends Component {
|
|||||||
return nameMessage;
|
return nameMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
getPropsFromComponentProps() {
|
||||||
const { componentProps, formItemProps } = this.props;
|
const { componentProps } = this.props;
|
||||||
const {
|
const {
|
||||||
withoutChinese = false,
|
withoutChinese = false,
|
||||||
isFile = false,
|
isFile = false,
|
||||||
@ -163,48 +168,82 @@ export default class index extends Component {
|
|||||||
names,
|
names,
|
||||||
...componentRest
|
...componentRest
|
||||||
} = componentProps;
|
} = componentProps;
|
||||||
|
return {
|
||||||
|
ruleProps: {
|
||||||
|
names,
|
||||||
|
withoutChinese,
|
||||||
|
isFile,
|
||||||
|
isKeypair,
|
||||||
|
isStack,
|
||||||
|
isCrontab,
|
||||||
|
isImage,
|
||||||
|
isInstance,
|
||||||
|
isSwiftFile,
|
||||||
|
isDatabaseName,
|
||||||
|
isDatabaseUserName,
|
||||||
|
},
|
||||||
|
messageProps: {
|
||||||
|
withoutChinese,
|
||||||
|
isFile,
|
||||||
|
isKeypair,
|
||||||
|
isStack,
|
||||||
|
isCrontab,
|
||||||
|
isImage,
|
||||||
|
isInstance,
|
||||||
|
isSwiftFile,
|
||||||
|
isDatabaseName,
|
||||||
|
isDatabaseUserName,
|
||||||
|
},
|
||||||
|
restProps: componentRest,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
get ruleProps() {
|
||||||
|
const { formItemProps } = this.props;
|
||||||
|
const { rules } = formItemProps;
|
||||||
|
const { ruleProps } = this.getPropsFromComponentProps();
|
||||||
|
return {
|
||||||
|
...ruleProps,
|
||||||
|
rules,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
get messageProps() {
|
||||||
|
const { messageProps } = this.getPropsFromComponentProps();
|
||||||
|
return messageProps;
|
||||||
|
}
|
||||||
|
|
||||||
|
get formItemProps() {
|
||||||
|
const { formItemProps } = this.props;
|
||||||
|
const { rules, ...rest } = formItemProps;
|
||||||
|
const newRules = this.getRules(this.ruleProps);
|
||||||
|
const message = this.getMessage(this.messageProps);
|
||||||
|
return {
|
||||||
|
...rest,
|
||||||
|
rules: newRules,
|
||||||
|
extra: message,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
get inputProps() {
|
||||||
|
const { isFile } = this.ruleProps;
|
||||||
|
const { restProps } = this.getPropsFromComponentProps();
|
||||||
const placeholder = isFile
|
const placeholder = isFile
|
||||||
? t('Please input file name')
|
? t('Please input file name')
|
||||||
: t('Please input name');
|
: t('Please input name');
|
||||||
const props = {
|
const props = {
|
||||||
placeholder,
|
placeholder,
|
||||||
...componentRest,
|
...restProps,
|
||||||
};
|
|
||||||
const { rules, ...rest } = formItemProps;
|
|
||||||
const newRules = this.getRules({
|
|
||||||
names,
|
|
||||||
rules,
|
|
||||||
withoutChinese,
|
|
||||||
isFile,
|
|
||||||
isKeypair,
|
|
||||||
isStack,
|
|
||||||
isCrontab,
|
|
||||||
isImage,
|
|
||||||
isInstance,
|
|
||||||
isSwiftFile,
|
|
||||||
isDatabaseName,
|
|
||||||
isDatabaseUserName,
|
|
||||||
});
|
|
||||||
const message = this.getMessage({
|
|
||||||
withoutChinese,
|
|
||||||
isFile,
|
|
||||||
isKeypair,
|
|
||||||
isStack,
|
|
||||||
isCrontab,
|
|
||||||
isImage,
|
|
||||||
isInstance,
|
|
||||||
isSwiftFile,
|
|
||||||
isDatabaseName,
|
|
||||||
isDatabaseUserName,
|
|
||||||
});
|
|
||||||
const newFormItemProps = {
|
|
||||||
...rest,
|
|
||||||
rules: newRules,
|
|
||||||
extra: message,
|
|
||||||
};
|
};
|
||||||
|
return props;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const newFormItemProps = this.formItemProps;
|
||||||
|
const { inputProps } = this;
|
||||||
return (
|
return (
|
||||||
<Form.Item {...newFormItemProps}>
|
<Form.Item {...newFormItemProps}>
|
||||||
<Input {...props} />
|
<Input {...inputProps} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user