feat: update type

pull/7839/head 4.2.4
tangjinzhou 2024-09-13 19:33:38 +08:00
parent 339fb4a230
commit 49d4b3166e
11 changed files with 30 additions and 23 deletions

View File

@ -13,10 +13,10 @@ export type ImageProps = Partial<
ExtractPropTypes<ReturnType<typeof imageProps>> & ExtractPropTypes<ReturnType<typeof imageProps>> &
Omit<ImgHTMLAttributes, 'placeholder' | 'onClick'> Omit<ImgHTMLAttributes, 'placeholder' | 'onClick'>
>; >;
const Image = defineComponent<ImageProps>({ const Image = defineComponent({
name: 'AImage', name: 'AImage',
inheritAttrs: false, inheritAttrs: false,
props: imageProps() as any, props: imageProps(),
setup(props, { slots, attrs }) { setup(props, { slots, attrs }) {
const { prefixCls, rootPrefixCls, configProvider } = useConfigInject('image', props); const { prefixCls, rootPrefixCls, configProvider } = useConfigInject('image', props);
// Style // Style

View File

@ -47,7 +47,9 @@ const Holder = defineComponent({
'rtl', 'rtl',
'transitionName', 'transitionName',
'onAllRemoved', 'onAllRemoved',
] as any, 'animation',
'staticGetContainer',
],
setup(props, { expose }) { setup(props, { expose }) {
const { getPrefixCls, getPopupContainer } = useConfigInject('message', props); const { getPrefixCls, getPopupContainer } = useConfigInject('message', props);

View File

@ -32,6 +32,8 @@ export const imageProps = () => ({
rootClassName: String, rootClassName: String,
prefixCls: String, prefixCls: String,
previewPrefixCls: String, previewPrefixCls: String,
width: [Number, String],
height: [Number, String],
previewMask: { previewMask: {
type: [Boolean, Function] as PropType<false | (() => any)>, type: [Boolean, Function] as PropType<false | (() => any)>,
default: undefined, default: undefined,

View File

@ -2,6 +2,7 @@ import { getTransitionGroupProps } from '../_util/transition';
import type { Key, VueNode } from '../_util/type'; import type { Key, VueNode } from '../_util/type';
import type { CSSProperties } from 'vue'; import type { CSSProperties } from 'vue';
import { import {
toRaw,
shallowRef, shallowRef,
createVNode, createVNode,
computed, computed,
@ -72,10 +73,10 @@ type NotificationState = {
holderCallback?: HolderReadyCallback; holderCallback?: HolderReadyCallback;
}[]; }[];
const Notification = defineComponent<NotificationProps>({ const Notification = defineComponent({
name: 'Notification', name: 'Notification',
inheritAttrs: false, inheritAttrs: false,
props: ['prefixCls', 'transitionName', 'animation', 'maxCount', 'closeIcon', 'hashId'] as any, props: ['prefixCls', 'transitionName', 'animation', 'maxCount', 'closeIcon', 'hashId'],
setup(props, { attrs, expose, slots }) { setup(props, { attrs, expose, slots }) {
const hookRefs = new Map<Key, HTMLDivElement>(); const hookRefs = new Map<Key, HTMLDivElement>();
const notices = ref<NotificationState>([]); const notices = ref<NotificationState>([]);
@ -125,7 +126,7 @@ const Notification = defineComponent<NotificationProps>({
}; };
const remove = (removeKey: Key) => { const remove = (removeKey: Key) => {
notices.value = notices.value.filter(({ notice: { key, userPassKey } }) => { notices.value = toRaw(notices.value as any).filter(({ notice: { key, userPassKey } }) => {
const mergedKey = userPassKey || key; const mergedKey = userPassKey || key;
return mergedKey !== removeKey; return mergedKey !== removeKey;
}); });

View File

@ -39,14 +39,15 @@ const overflowProps = () => {
/** When set to `full`, ssr will render full items by default and remove at client side */ /** When set to `full`, ssr will render full items by default and remove at client side */
ssr: String as PropType<'full'>, ssr: String as PropType<'full'>,
onMousedown: Function as PropType<MouseEventHandler>, onMousedown: Function as PropType<MouseEventHandler>,
role: String,
}; };
}; };
type InterOverflowProps = Partial<ExtractPropTypes<ReturnType<typeof overflowProps>>>; type InterOverflowProps = Partial<ExtractPropTypes<ReturnType<typeof overflowProps>>>;
export type OverflowProps = HTMLAttributes & InterOverflowProps; export type OverflowProps = HTMLAttributes & InterOverflowProps;
const Overflow = defineComponent<OverflowProps>({ const Overflow = defineComponent({
name: 'Overflow', name: 'Overflow',
inheritAttrs: false, inheritAttrs: false,
props: overflowProps() as any, props: overflowProps(),
emits: ['visibleChange'], emits: ['visibleChange'],
setup(props, { attrs, emit, slots }) { setup(props, { attrs, emit, slots }) {
const fullySSR = computed(() => props.ssr === 'full'); const fullySSR = computed(() => props.ssr === 'full');
@ -331,6 +332,7 @@ const Overflow = defineComponent<OverflowProps>({
class={classNames(!invalidate.value && prefixCls, className)} class={classNames(!invalidate.value && prefixCls, className)}
style={style} style={style}
onMousedown={onMousedown} onMousedown={onMousedown}
role={props.role}
{...restAttrs} {...restAttrs}
> >
{mergedData.value.map(internalRenderItemNode)} {mergedData.value.map(internalRenderItemNode)}

View File

@ -18,9 +18,9 @@ export type TimeUnitColumnProps = {
onSelect?: (value: number) => void; onSelect?: (value: number) => void;
}; };
export default defineComponent<TimeUnitColumnProps>({ export default defineComponent({
name: 'TimeUnitColumn', name: 'TimeUnitColumn',
props: ['prefixCls', 'units', 'onSelect', 'value', 'active', 'hideDisabledOptions'] as any, props: ['prefixCls', 'units', 'onSelect', 'value', 'active', 'hideDisabledOptions'],
setup(props) { setup(props) {
const { open } = useInjectPanel(); const { open } = useInjectPanel();

View File

@ -77,7 +77,7 @@ export interface CellProps<RecordType = DefaultRecordType> {
transformCellText?: TransformCellText<RecordType>; transformCellText?: TransformCellText<RecordType>;
} }
export default defineComponent<CellProps>({ export default defineComponent({
name: 'Cell', name: 'Cell',
props: [ props: [
'prefixCls', 'prefixCls',
@ -104,7 +104,7 @@ export default defineComponent<CellProps>({
'column', 'column',
'cellType', 'cellType',
'transformCellText', 'transformCellText',
] as any, ],
setup(props, { slots }) { setup(props, { slots }) {
const contextSlots = useInjectSlots(); const contextSlots = useInjectSlots();
const { onHover, startRow, endRow } = useInjectHover(); const { onHover, startRow, endRow } = useInjectHover();
@ -318,7 +318,7 @@ export default defineComponent<CellProps>({
// ====================== Render ====================== // ====================== Render ======================
let title: string; let title: string;
const ellipsisConfig: CellEllipsisType = ellipsis === true ? { showTitle: true } : ellipsis; const ellipsisConfig = ellipsis === true ? { showTitle: true } : ellipsis;
if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) { if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {
if (typeof childNode === 'string' || typeof childNode === 'number') { if (typeof childNode === 'string' || typeof childNode === 'number') {
title = childNode.toString(); title = childNode.toString();

View File

@ -12,9 +12,9 @@ export interface SummaryCellProps {
align?: AlignType; align?: AlignType;
} }
export default defineComponent<SummaryCellProps>({ export default defineComponent({
name: 'ATableSummaryCell', name: 'ATableSummaryCell',
props: ['index', 'colSpan', 'rowSpan', 'align'] as any, props: ['index', 'colSpan', 'rowSpan', 'align'],
setup(props, { attrs, slots }) { setup(props, { attrs, slots }) {
const tableContext = useInjectTable(); const tableContext = useInjectTable();
const summaryContext = useInjectSummary(); const summaryContext = useInjectSummary();

View File

@ -149,7 +149,7 @@ export interface TableProps<RecordType = DefaultRecordType> {
transformCellText?: TransformCellText<RecordType>; transformCellText?: TransformCellText<RecordType>;
} }
export default defineComponent<TableProps<DefaultRecordType>>({ export default defineComponent({
name: 'VcTable', name: 'VcTable',
inheritAttrs: false, inheritAttrs: false,
props: [ props: [
@ -191,7 +191,7 @@ export default defineComponent<TableProps<DefaultRecordType>>({
'canExpandable', 'canExpandable',
'onUpdateInternalRefs', 'onUpdateInternalRefs',
'transformCellText', 'transformCellText',
] as any, ],
emits: ['expand', 'expandedRowsChange', 'updateInternalRefs', 'update:expandedRowKeys'], emits: ['expand', 'expandedRowsChange', 'updateInternalRefs', 'update:expandedRowKeys'],
setup(props, { attrs, slots, emit }) { setup(props, { attrs, slots, emit }) {
const mergedData = computed(() => props.data || EMPTY_DATA); const mergedData = computed(() => props.data || EMPTY_DATA);
@ -271,7 +271,7 @@ export default defineComponent<TableProps<DefaultRecordType>>({
// defalutXxxx // defalutXxxx
stop(); stop();
const mergedExpandedKeys = computed( const mergedExpandedKeys = computed<Set<Key>>(
() => new Set(props.expandedRowKeys || innerExpandedKeys.value || []), () => new Set(props.expandedRowKeys || innerExpandedKeys.value || []),
); );
@ -282,9 +282,9 @@ export default defineComponent<TableProps<DefaultRecordType>>({
const hasKey = mergedExpandedKeys.value.has(key); const hasKey = mergedExpandedKeys.value.has(key);
if (hasKey) { if (hasKey) {
mergedExpandedKeys.value.delete(key); mergedExpandedKeys.value.delete(key);
newExpandedKeys = [...mergedExpandedKeys.value]; newExpandedKeys = [...(mergedExpandedKeys.value as any)];
} else { } else {
newExpandedKeys = [...mergedExpandedKeys.value, key]; newExpandedKeys = [...(mergedExpandedKeys.value as any), key];
} }
innerExpandedKeys.value = newExpandedKeys; innerExpandedKeys.value = newExpandedKeys;

View File

@ -108,7 +108,7 @@ function useColumns<RecordType>(
prefixCls?: Ref<string>; prefixCls?: Ref<string>;
columns?: Ref<ColumnsType<RecordType>>; columns?: Ref<ColumnsType<RecordType>>;
expandable: Ref<boolean>; expandable: Ref<boolean>;
expandedKeys: Ref<Set<Key>>; expandedKeys: ComputedRef<Set<Key>>;
getRowKey: Ref<GetRowKey<RecordType>>; getRowKey: Ref<GetRowKey<RecordType>>;
onTriggerExpand: TriggerEventHandler<RecordType>; onTriggerExpand: TriggerEventHandler<RecordType>;
expandIcon?: Ref<RenderExpandIcon<RecordType>>; expandIcon?: Ref<RenderExpandIcon<RecordType>>;

View File

@ -204,11 +204,11 @@ export default defineComponent({
class={mergedClassName} class={mergedClassName}
onMouseenter={onMouseenter} onMouseenter={onMouseenter}
onMouseleave={onMouseleave} onMouseleave={onMouseleave}
onMousedown={withModifiers(onMousedown, ['capture'])} onMousedown={withModifiers(onMousedown, ['capture'] as any)}
{...{ {...{
[supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: withModifiers( [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: withModifiers(
onTouchstart, onTouchstart,
['capture'], ['capture'] as any,
), ),
}} }}
style={mergedStyle} style={mergedStyle}