Skip to content

Commit 14f8d98

Browse files
sunshineLixunsendya
authored andcommitted
refactor: Select Text Password
1 parent 7d4a556 commit 14f8d98

File tree

10 files changed

+954
-532
lines changed

10 files changed

+954
-532
lines changed

Diff for: .npmrc

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
shamefully-hoist=true
2-
strict-peer-dependencies=false
2+
strict-peer-dependencies=false
3+
shared-workspace-lockfile=true

Diff for: packages/pro-field/package.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,26 @@
2929
"dependencies": {
3030
"@ant-design/icons-vue": "^6.1.0",
3131
"@types/lodash-es": "^4.17.6",
32-
"ant-design-vue": "^3.2.11",
32+
"ant-design-vue": "^3.2.12",
3333
"dayjs": "^1.11.5",
34-
"vue": "^3.2.38",
34+
"vue": "^3.2.39",
3535
"vue-router": "^4.1.5"
3636
},
3737
"devDependencies": {
3838
"@ant-design-vue/pro-utils": "workspace:^0.0.0",
3939
"@shared/vite-plugin-less-copy": "workspace:^0.0.0",
40-
"@rollup/plugin-typescript": "^8.4.0",
41-
"@rushstack/eslint-patch": "^1.1.4",
40+
"@rollup/plugin-typescript": "^8.5.0",
41+
"@rushstack/eslint-patch": "^1.2.0",
4242
"@types/jsdom": "^16.2.15",
43-
"@types/node": "^16.11.56",
43+
"@types/node": "^16.11.59",
4444
"@vitejs/plugin-vue": "^2.3.4",
4545
"@vitejs/plugin-vue-jsx": "^1.3.10",
4646
"@vue/eslint-config-prettier": "^7.0.0",
4747
"@vue/eslint-config-typescript": "^10.0.0",
4848
"@vue/test-utils": "^2.0.2",
4949
"@vue/tsconfig": "^0.1.3",
5050
"consola": "^2.15.3",
51-
"eslint": "^8.23.0",
51+
"eslint": "^8.23.1",
5252
"eslint-plugin-prettier": "^4.2.1",
5353
"eslint-plugin-vue": "^8.7.1",
5454
"jsdom": "^19.0.0",

Diff for: packages/pro-form/package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,29 +28,29 @@
2828
},
2929
"dependencies": {
3030
"@ant-design/icons-vue": "^6.1.0",
31-
"@types/lodash": "^4.14.184",
31+
"@types/lodash": "^4.14.185",
3232
"ant-design-vue": "^3.2.12",
3333
"dayjs": "^1.11.5",
34-
"vue": "^3.2.38",
34+
"vue": "^3.2.39",
3535
"vue-router": "^4.1.5"
3636
},
3737
"devDependencies": {
3838
"@ant-design-vue/pro-field": "workspace:^0.0.0",
3939
"@ant-design-vue/pro-layout": "workspace:^3.2.3",
4040
"@ant-design-vue/pro-utils": "workspace:^0.0.0",
4141
"@rollup/plugin-typescript": "^8.5.0",
42-
"@rushstack/eslint-patch": "^1.1.4",
42+
"@rushstack/eslint-patch": "^1.2.0",
4343
"@shared/vite-plugin-less-copy": "workspace:^0.0.0",
4444
"@types/jsdom": "^16.2.15",
45-
"@types/node": "^16.11.57",
45+
"@types/node": "^16.11.59",
4646
"@vitejs/plugin-vue": "^2.3.4",
4747
"@vitejs/plugin-vue-jsx": "^1.3.10",
4848
"@vue/eslint-config-prettier": "^7.0.0",
4949
"@vue/eslint-config-typescript": "^10.0.0",
5050
"@vue/test-utils": "^2.0.2",
5151
"@vue/tsconfig": "^0.1.3",
5252
"consola": "^2.15.3",
53-
"eslint": "^8.23.0",
53+
"eslint": "^8.23.1",
5454
"eslint-plugin-prettier": "^4.2.1",
5555
"eslint-plugin-vue": "^8.7.1",
5656
"jsdom": "^19.0.0",

Diff for: packages/pro-form/src/components/Field/index.tsx

+21-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,32 @@
1-
import { unref, defineComponent, FunctionalComponent } from 'vue';
2-
import ProField, { type ProFieldPropsType } from '@ant-design-vue/pro-field';
1+
import { unref, defineComponent, FunctionalComponent, type PropType, ExtractPropTypes } from 'vue';
2+
import ProField from '@ant-design-vue/pro-field';
33
import ProFormItem from '../FormItem';
4-
import type { ProFormFieldItemProps } from '../../typings';
54
import { useGridHelpers } from '../../helpers';
65
import { useFormInstance } from '../../BaseForm/hooks/useFormInstance';
6+
import { pick } from 'lodash-es';
7+
import { proFieldProps } from '@ant-design-vue/pro-field';
8+
import { proFormGridConfig, extendsProps, type FieldProps } from '../../typings';
9+
import { proFormItemProps } from '../FormItem';
710

811
type NameType = string | number;
912

10-
export type ProFormFieldProps<FiledProps = Record<string, any>> = ProFormFieldItemProps<FiledProps> &
11-
Pick<ProFieldPropsType, 'valueType'>;
13+
export const proFormFieldProps = {
14+
...proFieldProps,
15+
...pick(proFormGridConfig, 'colProps'),
16+
...proFormItemProps,
17+
...extendsProps,
18+
fieldProps: {
19+
type: Object as PropType<FieldProps & Record<string, any>>,
20+
},
21+
};
22+
23+
export type ProFormFieldProps = Partial<ExtractPropTypes<typeof proFormFieldProps>>;
1224

13-
const ProFormField = defineComponent<ProFormFieldProps>({
25+
const ProFormField = defineComponent({
1426
name: 'BaseProFormField',
1527
inheritAttrs: false,
16-
props: ['valueType', 'fieldProps', 'filedConfig', 'formItemProps', 'colProps'] as any,
17-
setup(props, { attrs }) {
28+
props: proFormFieldProps,
29+
setup(props) {
1830
const formContext = useFormInstance();
1931
return () => {
2032
const valueType = props.valueType || 'text';
@@ -25,7 +37,6 @@ const ProFormField = defineComponent<ProFormFieldProps>({
2537
default: () => (
2638
<ProField
2739
{...props}
28-
{...attrs}
2940
valueType={valueType}
3041
mode={formContext.getFormProps.value.readonly ? 'read' : 'edit'}
3142
fieldProps={{
@@ -42,7 +53,7 @@ const ProFormField = defineComponent<ProFormFieldProps>({
4253
/>
4354
),
4455
}}
45-
{...attrs}
56+
{...props.formItemProps}
4657
/>
4758
);
4859
};

Diff for: packages/pro-form/src/components/Password/index.tsx

+17-9
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
1-
import { defineComponent, type App, DefineComponent, Plugin } from 'vue';
1+
import { defineComponent, type App, DefineComponent, Plugin, PropType, ExtractPropTypes } from 'vue';
2+
import { pick } from 'lodash-es';
23
import type { InputProps } from 'ant-design-vue/es/input/inputProps';
3-
import ProFormField from '../Field';
4-
import type { ProFormFieldItemProps } from '../../typings';
4+
import ProFormField, { proFormFieldProps } from '../Field';
5+
import { proFormItemProps } from '../FormItem';
56

6-
export type ProFieldPasswordPropsType = ProFormFieldItemProps<Omit<InputProps, 'value'>>;
7+
export const proFormPasswordProps = {
8+
...proFormFieldProps,
9+
fieldProps: {
10+
type: Object as PropType<Omit<InputProps, 'value'>>,
11+
},
12+
};
13+
14+
export type ProFieldPasswordPropsType = Partial<ExtractPropTypes<typeof proFormPasswordProps>>;
715

8-
const ProFormPassword = defineComponent<ProFieldPasswordPropsType>({
16+
const ProFormPassword = defineComponent({
917
name: 'ProFormPassword',
1018
inheritAttrs: false,
11-
props: ['fieldProps', 'colProps', 'name'] as any,
12-
setup(props, { attrs }) {
19+
props: proFormPasswordProps,
20+
setup(props) {
1321
const formItemProps = {
14-
...attrs,
15-
name: props.name,
22+
...props.formItemProps,
23+
...pick(props, Object.keys(proFormItemProps)),
1624
};
1725
return () => {
1826
return (

Diff for: packages/pro-form/src/components/Select/index.tsx

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
import { defineComponent, type App, DefineComponent, Plugin, PropType, ExtractPropTypes } from 'vue';
22
import type { VueNode } from '@ant-design-vue/pro-utils';
3-
import { omit, pick } from 'lodash-es';
4-
import { proFieldProps } from '@ant-design-vue/pro-field';
3+
import { pick } from 'lodash-es';
54
import type { SelectProps, DefaultOptionType } from 'ant-design-vue/es/select';
6-
import ProFormField from '../Field';
7-
import { proFormGridConfig, extendsProps } from '../../typings';
5+
import ProFormField, { proFormFieldProps } from '../Field';
86
import { proFormItemProps } from '../FormItem';
97

108
const props = {
11-
...omit(proFieldProps, 'valueType'),
12-
...pick(proFormGridConfig, 'colProps'),
13-
...proFormItemProps,
14-
...extendsProps,
9+
...proFormFieldProps,
1510
fieldProps: {
1611
type: Object as PropType<Omit<SelectProps, 'value' | 'options'>>,
1712
},

Diff for: packages/pro-form/src/components/Text/index.tsx

+16-9
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
1-
import { defineComponent, type App, DefineComponent, Plugin } from 'vue';
1+
import { defineComponent, type App, DefineComponent, Plugin, PropType, ExtractPropTypes } from 'vue';
2+
import { pick } from 'lodash-es';
23
import type { InputProps } from 'ant-design-vue/es/input/inputProps';
3-
import ProFormField from '../Field';
4-
import type { ProFormFieldItemProps } from '../../typings';
4+
import ProFormField, { proFormFieldProps } from '../Field';
5+
import { proFormItemProps } from '../FormItem';
56

6-
export type ProFieldPropsType = ProFormFieldItemProps<Omit<InputProps, 'value'>>;
7+
export const proFormTextProps = {
8+
...proFormFieldProps,
9+
fieldProps: {
10+
type: Object as PropType<Omit<InputProps, 'value'>>,
11+
},
12+
};
13+
export type ProFieldPropsType = Partial<ExtractPropTypes<typeof proFormTextProps>>;
714

8-
const ProFormText = defineComponent<ProFieldPropsType>({
15+
const ProFormText = defineComponent({
916
name: 'ProFormText',
1017
inheritAttrs: false,
11-
props: ['fieldProps', 'colProps', 'name'] as any,
12-
setup(props, { attrs }) {
18+
props: proFormTextProps,
19+
setup(props) {
1320
const formItemProps = {
14-
...attrs,
15-
name: props.name,
21+
...props.formItemProps,
22+
...pick(props, Object.keys(proFormItemProps)),
1623
};
1724
return () => {
1825
return (

Diff for: packages/pro-form/src/typings.ts

+9-3
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,17 @@ export interface ProFieldProps {
107107
readonly?: boolean;
108108
}
109109

110-
export type FieldProps = {
111-
style?: CSSProperties;
112-
width?: string;
110+
export const fieldProps = {
111+
style: {
112+
type: Object as PropType<CSSProperties>,
113+
},
114+
width: {
115+
type: String,
116+
},
113117
};
114118

119+
export type FieldProps = Partial<ExtractPropTypes<typeof fieldProps>>;
120+
115121
export type ProFormItemCreateConfig = {
116122
valueType?: ProFieldValueType;
117123
} & ProFormItemProps;

Diff for: packages/pro-form/tsconfig.vitest.json

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"extends": "./tsconfig.app.json",
33
"exclude": [],
44
"compilerOptions": {
5+
"jsx": "react",
56
"composite": true,
67
"lib": [],
78
"types": ["node", "jsdom"]

0 commit comments

Comments
 (0)