Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: fix form and upload type #1762

Merged
merged 3 commits into from
Nov 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions src/dialog/dialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -405,14 +405,17 @@ export default mixins(ActionMixin, getConfigReceiverMixins<Vue, DialogConfig>('d
<div class={this.positionClass} style={this.positionStyle} onClick={this.overlayAction} ref="dialogPosition">
<div key="dialog" ref="dialog" class={this.dialogClass} style={this.dialogStyle}>
<div class={`${this.componentName}__header`} onmousedown={this.onStopDown}>
{this.getIcon()}
{renderTNodeJSX(this, 'header', defaultHeader)}
<div class={`${this.componentName}__header-content`}>
{this.getIcon()}
{renderTNodeJSX(this, 'header', defaultHeader)}
</div>
{this.closeBtn ? (
<span class={`${this.componentName}__close`} onClick={this.closeBtnAction}>
{renderTNodeJSX(this, 'closeBtn', defaultCloseBtn)}
</span>
) : null}
</div>
{this.closeBtn ? (
<span class={`${this.componentName}__close`} onClick={this.closeBtnAction}>
{renderTNodeJSX(this, 'closeBtn', defaultCloseBtn)}
</span>
) : null}

<div class={this.bodyClass} onmousedown={this.onStopDown}>
{body}
</div>
Expand Down
20 changes: 10 additions & 10 deletions src/form/form-item-props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ export default {
/** 字段标签名称 */
label: {
type: [String, Function] as PropType<TdFormItemProps['label']>,
default: '',
},
/** 表单字段标签对齐方式:左对齐、右对齐、顶部对齐。默认使用 Form 的对齐方式,优先级高于 Form.labelAlign */
labelAlign: {
Expand All @@ -39,25 +38,26 @@ export default {
type: [String, Number] as PropType<TdFormItemProps['name']>,
},
/** 是否显示必填符号(*),优先级高于 Form.requiredMark */
requiredMark: {
type: Boolean,
default: undefined,
},
requiredMark: Boolean,
/** 表单字段校验规则 */
rules: {
type: Array as PropType<TdFormItemProps['rules']>,
default: (): TdFormItemProps['rules'] => [],
},
/** 校验不通过时,是否显示错误提示信息,优先级高于 `Form.showErrorMessage` */
showErrorMessage: {
type: Boolean,
default: undefined,
showErrorMessage: Boolean,
/** 校验状态,可在需要完全自主控制校验状态时使用 */
status: {
type: String,
default: '',
},
/** 校验状态图标,值为 `true` 显示默认图标,默认图标有 成功、失败、警告 等,不同的状态图标不同。`statusIcon` 值为 `false`,不显示图标。`statusIcon` 值类型为渲染函数,则可以自定义右侧状态图标。优先级高级 Form 的 statusIcon */
statusIcon: {
type: [Boolean, Function] as PropType<TdFormItemProps['statusIcon']>,
default: undefined,
},
/** 是否显示校验成功的边框,默认不显示 */
successBorder: Boolean,
/** 自定义提示内容,样式跟随 `status` 变动,可在需要完全自主控制校验规则时使用 */
tips: {
type: [String, Function] as PropType<TdFormItemProps['tips']>,
},
};
12 changes: 2 additions & 10 deletions src/form/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@ export default {
default: () => ({}),
},
/** 是否禁用整个表单 */
disabled: {
type: Boolean,
default: undefined,
},
disabled: Boolean,
/** 表单错误信息配置,示例:`{ idcard: '请输入正确的身份证号码', max: '字符长度不能超过 ${max}' }` */
errorMessage: {
type: Object as PropType<TdFormProps['errorMessage']>,
Expand Down Expand Up @@ -57,10 +54,7 @@ export default {
default: true,
},
/** 是否显示必填符号(*),默认显示 */
requiredMark: {
type: Boolean,
default: undefined,
},
requiredMark: Boolean,
/** 重置表单的方式,值为 empty 表示重置表单为空,值为 initial 表示重置表单数据为初始值 */
resetType: {
type: String as PropType<TdFormProps['resetType']>,
Expand All @@ -77,7 +71,6 @@ export default {
/** 表单校验不通过时,是否自动滚动到第一个校验不通过的字段,平滑滚动或是瞬间直达。值为空则表示不滚动 */
scrollToFirstError: {
type: String as PropType<TdFormProps['scrollToFirstError']>,
default: '' as TdFormProps['scrollToFirstError'],
validator(val: TdFormProps['scrollToFirstError']): boolean {
if (!val) return true;
return ['', 'smooth', 'auto'].includes(val);
Expand All @@ -91,7 +84,6 @@ export default {
/** 校验状态图标,值为 `true` 显示默认图标,默认图标有 成功、失败、警告 等,不同的状态图标不同。`statusIcon` 值为 `false`,不显示图标。`statusIcon` 值类型为渲染函数,则可以自定义右侧状态图标 */
statusIcon: {
type: [Boolean, Function] as PropType<TdFormProps['statusIcon']>,
default: undefined,
},
/** 【讨论中】当校验结果只有告警信息时,是否触发 `submit` 提交事件 */
submitWithWarningMessage: Boolean,
Expand Down
24 changes: 17 additions & 7 deletions src/form/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ export interface TdFormProps<FormData extends Data = Data> {
rules?: { [field in keyof FormData]: Array<FormRule> };
/**
* 表单校验不通过时,是否自动滚动到第一个校验不通过的字段,平滑滚动或是瞬间直达。值为空则表示不滚动
* @default ''
*/
scrollToFirstError?: '' | 'smooth' | 'auto';
/**
Expand Down Expand Up @@ -104,15 +103,15 @@ export interface FormInstanceFunctions<FormData extends Data = Data> {
*/
clearValidate?: (fields?: Array<keyof FormData>) => void;
/**
* 重置表单,表单里面没有重置按钮`<button type="reset" />`时可以使用该方法,默认重置全部字段为空,该方法会触发 `reset` 事件。<br />如果表单属性 `resetType='empty'` 或者 `reset.type='empty'` 会重置为空;<br />如果表单属性 `resetType='initial'` 或者 `reset.type='initial'` 会重置为表单初始值。<br />`reset.fields` 用于设置具体重置哪些字段,示例:`reset({ type: 'initial', fields: ['name', 'age'] })`
* 重置表单,表单里面没有重置按钮`<button type=\"reset\" />`时可以使用该方法,默认重置全部字段为空,该方法会触发 `reset` 事件。<br />如果表单属性 `resetType='empty'` 或者 `reset.type='empty'` 会重置为空;<br />如果表单属性 `resetType='initial'` 或者 `reset.type='initial'` 会重置为表单初始值。<br />`reset.fields` 用于设置具体重置哪些字段,示例:`reset({ type: 'initial', fields: ['name', 'age'] })`
*/
reset?: (params?: FormResetParams<FormData>) => void;
/**
* 设置自定义校验结果,如远程校验信息直接呈现。注意需要在组件挂载结束后使用该方法。`FormData` 指表单数据泛型
*/
setValidateMessage?: (message: FormValidateMessage<FormData>) => void;
/**
* 提交表单,表单里面没有提交按钮`<button type="submit" />`时可以使用该方法。`showErrorMessage` 表示是否在提交校验不通过时显示校验不通过的原因,默认显示。该方法会触发 `submit` 事件
* 提交表单,表单里面没有提交按钮`<button type=\"submit\" />`时可以使用该方法。`showErrorMessage` 表示是否在提交校验不通过时显示校验不通过的原因,默认显示。该方法会触发 `submit` 事件
*/
submit?: (params?: { showErrorMessage?: boolean }) => void;
/**
Expand All @@ -137,7 +136,6 @@ export interface TdFormItemProps {
help?: string | TNode;
/**
* 字段标签名称
* @default ''
*/
label?: string | TNode;
/**
Expand All @@ -158,13 +156,17 @@ export interface TdFormItemProps {
requiredMark?: boolean;
/**
* 表单字段校验规则
* @default []
*/
rules?: Array<FormRule>;
/**
* 校验不通过时,是否显示错误提示信息,优先级高于 `Form.showErrorMessage`
*/
showErrorMessage?: boolean;
/**
* 校验状态,可在需要完全自主控制校验状态时使用
* @default ''
*/
status?: 'error' | 'warning' | 'success' | 'validating';
/**
* 校验状态图标,值为 `true` 显示默认图标,默认图标有 成功、失败、警告 等,不同的状态图标不同。`statusIcon` 值为 `false`,不显示图标。`statusIcon` 值类型为渲染函数,则可以自定义右侧状态图标。优先级高级 Form 的 statusIcon
*/
Expand All @@ -174,6 +176,10 @@ export interface TdFormItemProps {
* @default false
*/
successBorder?: boolean;
/**
* 自定义提示内容,样式跟随 `status` 变动,可在需要完全自主控制校验规则时使用
*/
tips?: string | TNode;
}

export interface FormRule {
Expand All @@ -194,7 +200,7 @@ export interface FormRule {
*/
enum?: Array<string>;
/**
* 内置校验方法,校验值是否为身份证号码,组件校验正则为 `/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/i`,示例:`{ idcard: true, message: '请输入正确的身份证号码' }`
* 内置校验方法,校验值是否为身份证号码,组件校验正则为 `/^(\\d{18,18}|\\d{15,15}|\\d{17,17}x)$/i`,示例:`{ idcard: true, message: '请输入正确的身份证号码' }`
*/
idcard?: boolean;
/**
Expand Down Expand Up @@ -227,7 +233,7 @@ export interface FormRule {
*/
required?: boolean;
/**
* 内置校验方法,校验值是否为手机号码,校验正则为 `/^1[3-9]\d{9}$/`,示例:`{ telnumber: true, message: '请输入正确的手机号码' }`
* 内置校验方法,校验值是否为手机号码,校验正则为 `/^1[3-9]\\d{9}$/`,示例:`{ telnumber: true, message: '请输入正确的手机号码' }`
*/
telnumber?: boolean;
/**
Expand All @@ -248,6 +254,10 @@ export interface FormRule {
* 自定义校验规则,示例:`{ validator: (val) => val.length > 0, message: '请输入内容'}`
*/
validator?: CustomValidator;
/**
* 内置校验方法,校验值是否为空格。示例:`{ whitespace: true, message: '值不能为空' }`
*/
whitespace?: boolean;
}

export interface FormErrorMessage {
Expand Down
2 changes: 2 additions & 0 deletions src/upload/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ export * from './interface';
export const Upload = withInstall(_Upload, VueCompositionAPI);

export default Upload;

export * from './type';