Skip to content

Commit b8591bd

Browse files
committed
feat: update ts type
1 parent 1646421 commit b8591bd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+467
-349
lines changed

components/_util/transButton.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { defineComponent, ref, onMounted } from 'vue';
55
* This helps accessibility reader to tread as a interactive button to operation.
66
*/
77
import KeyCode from './KeyCode';
8-
import PropTypes from './vue-types';
98

109
const inlineStyle = {
1110
border: 0,

components/components.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,14 @@ export { default as List, ListItem, ListItemMeta } from './list';
105105
export type { MessageArgsProps } from './message';
106106
export { default as message } from './message';
107107

108-
export type { MenuProps, MenuTheme, SubMenuProps, MenuItemProps, MenuMode } from './menu';
108+
export type {
109+
MenuProps,
110+
MenuTheme,
111+
SubMenuProps,
112+
MenuItemProps,
113+
MenuMode,
114+
MenuDividerProps,
115+
} from './menu';
109116
export { default as Menu, MenuDivider, MenuItem, MenuItemGroup, SubMenu } from './menu';
110117

111118
export type { MentionsProps } from './mentions';

components/input/ClearableLabeledInput.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default defineComponent({
2121
defaultValue: PropTypes.any,
2222
allowClear: { type: Boolean, default: undefined },
2323
element: PropTypes.any,
24-
handleReset: Function,
24+
handleReset: Function as PropType<MouseEventHandler>,
2525
disabled: { type: Boolean, default: undefined },
2626
direction: { type: String as PropType<Direction> },
2727
size: { type: String as PropType<SizeType> },

components/menu/index.tsx

+10-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import SubMenu from './src/SubMenu';
77
import type { MenuItemGroupProps } from './src/ItemGroup';
88
import ItemGroup from './src/ItemGroup';
99
import Divider from './src/Divider';
10+
import type { MenuDividerProps } from './src/Divider';
1011
import type { App, Plugin } from 'vue';
1112
import type { MenuTheme, MenuMode } from './src/interface';
1213
/* istanbul ignore next */
@@ -23,7 +24,15 @@ Menu.Item = MenuItem;
2324
Menu.Divider = Divider;
2425
Menu.SubMenu = SubMenu;
2526
Menu.ItemGroup = ItemGroup;
26-
export type { MenuProps, SubMenuProps, MenuItemProps, MenuItemGroupProps, MenuTheme, MenuMode };
27+
export type {
28+
MenuProps,
29+
SubMenuProps,
30+
MenuItemProps,
31+
MenuItemGroupProps,
32+
MenuTheme,
33+
MenuMode,
34+
MenuDividerProps,
35+
};
2736
export {
2837
SubMenu,
2938
MenuItem as Item,

components/menu/src/Divider.tsx

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import useConfigInject from '../../_util/hooks/useConfigInject';
2+
import type { ExtractPropTypes } from 'vue';
23
import { computed, defineComponent } from 'vue';
34

5+
export const menuDividerProps = () => ({
6+
prefixCls: String,
7+
dashed: Boolean,
8+
});
9+
10+
export type MenuDividerProps = Partial<ExtractPropTypes<ReturnType<typeof menuDividerProps>>>;
11+
412
export default defineComponent({
513
name: 'AMenuDivider',
6-
props: {
7-
prefixCls: String,
8-
dashed: Boolean,
9-
},
14+
props: menuDividerProps(),
1015
setup(props) {
1116
const { prefixCls } = useConfigInject('menu', props);
1217
const cls = computed(() => {

components/menu/src/ItemGroup.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ import PropTypes from '../../_util/vue-types';
55
import { useInjectMenu } from './hooks/useMenuContext';
66
import { useMeasure } from './hooks/useKeyPath';
77

8-
export const menuItemGroupProps = {
8+
export const menuItemGroupProps = () => ({
99
title: PropTypes.any,
10-
};
10+
});
1111

12-
export type MenuItemGroupProps = Partial<ExtractPropTypes<typeof menuItemGroupProps>>;
12+
export type MenuItemGroupProps = Partial<ExtractPropTypes<ReturnType<typeof menuItemGroupProps>>>;
1313

1414
export default defineComponent({
1515
name: 'AMenuItemGroup',
1616
inheritAttrs: false,
17-
props: menuItemGroupProps,
17+
props: menuItemGroupProps(),
1818
slots: ['title'],
1919
setup(props, { slots, attrs }) {
2020
const { prefixCls } = useInjectMenu();

components/menu/src/Menu.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ import { OVERFLOW_KEY, PathContext } from './hooks/useKeyPath';
2929
import type { FocusEventHandler, MouseEventHandler } from '../../_util/EventInterface';
3030
import collapseMotion from '../../_util/collapseMotion';
3131

32-
export const menuProps = {
32+
export const menuProps = () => ({
3333
id: String,
3434
prefixCls: String,
3535
disabled: Boolean,
3636
inlineCollapsed: Boolean,
3737
disabledOverflow: Boolean,
3838
forceSubMenuRender: Boolean,
39-
openKeys: Array,
40-
selectedKeys: Array,
39+
openKeys: Array as PropType<Key[]>,
40+
selectedKeys: Array as PropType<Key[]>,
4141
activeKey: String, // 内部组件使用
4242
selectable: { type: Boolean, default: true },
4343
multiple: { type: Boolean, default: false },
@@ -68,15 +68,15 @@ export const menuProps = {
6868
'onUpdate:openKeys': Function as PropType<(keys: Key[]) => void>,
6969
'onUpdate:selectedKeys': Function as PropType<(keys: Key[]) => void>,
7070
'onUpdate:activeKey': Function as PropType<(key: Key) => void>,
71-
};
71+
});
7272

73-
export type MenuProps = Partial<ExtractPropTypes<typeof menuProps>>;
73+
export type MenuProps = Partial<ExtractPropTypes<ReturnType<typeof menuProps>>>;
7474

7575
const EMPTY_LIST: string[] = [];
7676
export default defineComponent({
7777
name: 'AMenu',
7878
inheritAttrs: false,
79-
props: menuProps,
79+
props: menuProps(),
8080
slots: ['expandIcon', 'overflowedIndicator'],
8181
setup(props, { slots, emit, attrs }) {
8282
const { prefixCls, direction, getPrefixCls } = useConfigInject('menu', props);

components/menu/src/MenuItem.tsx

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { flattenChildren, getPropsSlot, isValidElement } from '../../_util/props-util';
22
import PropTypes from '../../_util/vue-types';
3-
import type { ExtractPropTypes } from 'vue';
3+
import type { ExtractPropTypes, PropType } from 'vue';
44
import { computed, defineComponent, getCurrentInstance, onBeforeUnmount, ref, watch } from 'vue';
55
import { useInjectKeyPath, useMeasure } from './hooks/useKeyPath';
66
import { useInjectFirstLevel, useInjectMenu } from './hooks/useMenuContext';
@@ -11,24 +11,30 @@ import KeyCode from '../../_util/KeyCode';
1111
import useDirectionStyle from './hooks/useDirectionStyle';
1212
import Overflow from '../../vc-overflow';
1313
import devWarning from '../../vc-util/devWarning';
14+
import type { MouseEventHandler } from '../../_util/EventInterface';
1415

1516
let indexGuid = 0;
16-
export const menuItemProps = {
17+
export const menuItemProps = () => ({
1718
id: String,
1819
role: String,
1920
disabled: Boolean,
2021
danger: Boolean,
2122
title: { type: [String, Boolean], default: undefined },
2223
icon: PropTypes.any,
23-
};
24+
onMouseenter: Function as PropType<MouseEventHandler>,
25+
onMouseleave: Function as PropType<MouseEventHandler>,
26+
onClick: Function as PropType<MouseEventHandler>,
27+
onKeydown: Function as PropType<MouseEventHandler>,
28+
onFocus: Function as PropType<MouseEventHandler>,
29+
});
2430

25-
export type MenuItemProps = Partial<ExtractPropTypes<typeof menuItemProps>>;
31+
export type MenuItemProps = Partial<ExtractPropTypes<ReturnType<typeof menuItemProps>>>;
2632

2733
export default defineComponent({
2834
name: 'AMenuItem',
2935
inheritAttrs: false,
30-
props: menuItemProps,
31-
emits: ['mouseenter', 'mouseleave', 'click', 'keydown', 'focus'],
36+
props: menuItemProps(),
37+
// emits: ['mouseenter', 'mouseleave', 'click', 'keydown', 'focus'],
3238
slots: ['icon', 'title'],
3339
setup(props, { slots, emit, attrs }) {
3440
const instance = getCurrentInstance();

components/menu/src/SubMenu.tsx

+10-5
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ import { cloneElement } from '../../_util/vnode';
1919
import Overflow from '../../vc-overflow';
2020
import devWarning from '../../vc-util/devWarning';
2121
import isValid from '../../_util/isValid';
22+
import type { MouseEventHandler } from '../../_util/EventInterface';
23+
import type { Key } from 'ant-design-vue/es/_util/type';
2224

2325
let indexGuid = 0;
2426

25-
export const subMenuProps = {
27+
export const subMenuProps = () => ({
2628
icon: PropTypes.any,
2729
title: PropTypes.any,
2830
disabled: Boolean,
@@ -32,16 +34,19 @@ export const subMenuProps = {
3234
internalPopupClose: Boolean,
3335
eventKey: String,
3436
expandIcon: Function as PropType<(p?: { isOpen: boolean; [key: string]: any }) => any>,
35-
};
37+
onMouseenter: Function as PropType<MouseEventHandler>,
38+
onMouseleave: Function as PropType<MouseEventHandler>,
39+
onTitleClick: Function as PropType<(e: MouseEvent, key: Key) => void>,
40+
});
3641

37-
export type SubMenuProps = Partial<ExtractPropTypes<typeof subMenuProps>>;
42+
export type SubMenuProps = Partial<ExtractPropTypes<ReturnType<typeof subMenuProps>>>;
3843

3944
export default defineComponent({
4045
name: 'ASubMenu',
4146
inheritAttrs: false,
42-
props: subMenuProps,
47+
props: subMenuProps(),
4348
slots: ['icon', 'title', 'expandIcon'],
44-
emits: ['titleClick', 'mouseenter', 'mouseleave'],
49+
// emits: ['titleClick', 'mouseenter', 'mouseleave'],
4550
setup(props, { slots, attrs, emit }) {
4651
useProvideFirstLevel(false);
4752
const isMeasure = useMeasure();

components/page-header/index.tsx

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ExtractPropTypes } from 'vue';
1+
import type { ExtractPropTypes, PropType } from 'vue';
22
import { defineComponent, ref, computed } from 'vue';
33
import PropTypes from '../_util/vue-types';
44
import { filterEmpty, flattenChildren, isEmptyContent } from '../_util/props-util';
@@ -13,8 +13,9 @@ import useConfigInject from '../_util/hooks/useConfigInject';
1313
import classNames from '../_util/classNames';
1414
import ResizeObserver from '../vc-resize-observer';
1515
import useDestroyed from '../_util/hooks/useDestroyed';
16+
import type { MouseEventHandler } from '../_util/EventInterface';
1617

17-
export const pageHeaderProps = {
18+
export const pageHeaderProps = () => ({
1819
backIcon: PropTypes.any,
1920
prefixCls: String,
2021
title: PropTypes.any,
@@ -25,15 +26,15 @@ export const pageHeaderProps = {
2526
extra: PropTypes.any,
2627
avatar: PropTypes.object,
2728
ghost: { type: Boolean, default: undefined },
28-
onBack: Function,
29-
};
29+
onBack: Function as PropType<MouseEventHandler>,
30+
});
3031

31-
export type PageHeaderProps = Partial<ExtractPropTypes<typeof pageHeaderProps>>;
32+
export type PageHeaderProps = Partial<ExtractPropTypes<ReturnType<typeof pageHeaderProps>>>;
3233

3334
const PageHeader = defineComponent({
3435
name: 'APageHeader',
35-
props: pageHeaderProps,
36-
emits: ['back'],
36+
props: pageHeaderProps(),
37+
// emits: ['back'],
3738
slots: ['backIcon', 'avatar', 'breadcrumb', 'title', 'subTitle', 'tags', 'extra', 'footer'],
3839
setup(props, { emit, slots }) {
3940
const { prefixCls, direction, pageHeader } = useConfigInject('page-header', props);

components/pagination/Pagination.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export default defineComponent({
7878
name: 'APagination',
7979
inheritAttrs: false,
8080
props: paginationProps(),
81-
emits: ['change', 'showSizeChange', 'update:current', 'update:pageSize'],
81+
// emits: ['change', 'showSizeChange', 'update:current', 'update:pageSize'],
8282
setup(props, { slots, attrs }) {
8383
const { prefixCls, configProvider, direction } = useConfigInject('pagination', props);
8484
const selectPrefixCls = computed(() =>

components/popconfirm/index.tsx

+10-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ExtractPropTypes, PropType } from 'vue';
1+
import type { ExtractPropTypes, HTMLAttributes, PropType } from 'vue';
22
import { computed, onMounted, ref, toRef, defineComponent } from 'vue';
33
import Tooltip from '../tooltip';
44
import abstractTooltipProps from '../tooltip/abstractTooltipProps';
@@ -35,8 +35,14 @@ export const popconfirmProps = () => ({
3535
okText: PropTypes.any,
3636
cancelText: PropTypes.any,
3737
icon: PropTypes.any,
38-
okButtonProps: PropTypes.object,
39-
cancelButtonProps: PropTypes.object,
38+
okButtonProps: {
39+
type: Object as PropType<ButtonProps & HTMLAttributes>,
40+
default: undefined as ButtonProps & HTMLAttributes,
41+
},
42+
cancelButtonProps: {
43+
type: Object as PropType<ButtonProps & HTMLAttributes>,
44+
default: undefined as ButtonProps & HTMLAttributes,
45+
},
4046
showCancel: { type: Boolean, default: true },
4147
onConfirm: Function as PropType<(e: MouseEvent) => void>,
4248
onCancel: Function as PropType<(e: MouseEvent) => void>,
@@ -52,10 +58,9 @@ export interface PopconfirmLocale {
5258
const Popconfirm = defineComponent({
5359
name: 'APopconfirm',
5460
props: initDefaultProps(popconfirmProps(), {
55-
...tooltipDefaultProps,
61+
...tooltipDefaultProps(),
5662
trigger: 'click',
5763
transitionName: 'zoom-big',
58-
align: () => ({}),
5964
placement: 'top',
6065
mouseEnterDelay: 0.1,
6166
mouseLeaveDelay: 0.1,

components/popover/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export type PopoverProps = Partial<ExtractPropTypes<ReturnType<typeof popoverPro
2121
const Popover = defineComponent({
2222
name: 'APopover',
2323
props: initDefaultProps(popoverProps(), {
24-
...tooltipDefaultProps,
24+
...tooltipDefaultProps(),
2525
trigger: 'hover',
2626
transitionName: 'zoom-big',
2727
placement: 'top',

components/progress/Circle.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ function getStrokeColor({
2222
}
2323

2424
export default defineComponent({
25+
name: 'Circle',
2526
inheritAttrs: false,
2627
props: progressProps(),
2728
setup(props, { slots }) {

components/progress/Line.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ import type { StringGradients, ProgressGradient } from './props';
66
import { progressProps } from './props';
77
import { getSuccessPercent, validProgress } from './utils';
88

9-
export const lineProps = {
9+
export const lineProps = () => ({
1010
...progressProps(),
1111
prefixCls: String,
1212
direction: {
1313
type: String as PropType<Direction>,
1414
},
15-
};
15+
});
1616

17-
export type LineProps = Partial<ExtractPropTypes<typeof lineProps>>;
17+
export type LineProps = Partial<ExtractPropTypes<ReturnType<typeof lineProps>>>;
1818

1919
/**
2020
* {
@@ -69,7 +69,7 @@ export const handleGradient = (strokeColor: ProgressGradient, directionConfig: D
6969

7070
export default defineComponent({
7171
name: 'Line',
72-
props: lineProps,
72+
props: lineProps(),
7373
setup(props, { slots }) {
7474
const backgroundProps = computed(() => {
7575
const { strokeColor, direction } = props;

components/progress/Steps.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,21 @@ import type { VueNode } from '../_util/type';
44
import type { ProgressSize } from './props';
55
import { progressProps } from './props';
66

7-
export const stepsProps = {
7+
export const stepsProps = () => ({
88
...progressProps(),
99
steps: Number,
1010
size: {
1111
type: String as PropType<ProgressSize>,
1212
},
1313
strokeColor: String,
1414
trailColor: String,
15-
};
15+
});
1616

1717
export type StepsProps = Partial<ExtractPropTypes<typeof stepsProps>>;
1818

1919
export default defineComponent({
20-
props: stepsProps,
20+
name: 'Steps',
21+
props: stepsProps(),
2122
setup(props, { slots }) {
2223
const current = computed(() => Math.round(props.steps * ((props.percent || 0) / 100)));
2324
const stepWidth = computed(() => (props.size === 'small' ? 2 : 14));

components/progress/props.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ export const progressProps = () => ({
2626
status: PropTypes.oneOf(progressStatuses),
2727
showInfo: { type: Boolean, default: undefined },
2828
strokeWidth: Number,
29-
strokeLinecap: PropTypes.oneOf(tuple('butt', 'round', 'square')),
29+
strokeLinecap: String as PropType<'butt' | 'square' | 'round'>,
3030
strokeColor: {
3131
type: [String, Object] as PropType<string | ProgressGradient>,
32+
default: undefined as string | ProgressGradient,
3233
},
3334
trailColor: String,
3435
width: Number,
@@ -37,7 +38,7 @@ export const progressProps = () => ({
3738
default: (): SuccessProps => ({}),
3839
},
3940
gapDegree: Number,
40-
gapPosition: PropTypes.oneOf(tuple('top', 'bottom', 'left', 'right')),
41+
gapPosition: String as PropType<'top' | 'bottom' | 'left' | 'right'>,
4142
size: PropTypes.oneOf(ProgressSize),
4243
steps: Number,
4344
/** @deprecated Use `success` instead */

0 commit comments

Comments
 (0)