diff --git a/components/tooltip/Tooltip.jsx b/components/tooltip/Tooltip.tsx similarity index 95% rename from components/tooltip/Tooltip.jsx rename to components/tooltip/Tooltip.tsx index e5f915109..9e05524fa 100644 --- a/components/tooltip/Tooltip.jsx +++ b/components/tooltip/Tooltip.tsx @@ -1,4 +1,4 @@ -import { inject } from 'vue'; +import { defineComponent, inject } from 'vue'; import VcTooltip from '../vc-tooltip'; import classNames from '../_util/classNames'; import getPlacements from './placements'; @@ -15,7 +15,7 @@ import { cloneElement } from '../_util/vnode'; import { defaultConfigProvider } from '../config-provider'; import abstractTooltipProps from './abstractTooltipProps'; -const splitObject = (obj, keys) => { +const splitObject = (obj: any, keys: string[]) => { const picked = {}; const omitted = { ...obj }; keys.forEach(key => { @@ -27,13 +27,14 @@ const splitObject = (obj, keys) => { return { picked, omitted }; }; const props = abstractTooltipProps(); -export default { +export default defineComponent({ name: 'ATooltip', inheritAttrs: false, props: { ...props, - title: PropTypes.any, + title: PropTypes.VNodeChild, }, + emits: ['update:visible', 'visibleChange'], setup() { return { configProvider: inject('configProvider', defaultConfigProvider), @@ -61,7 +62,7 @@ export default { }, getPopupDomNode() { - return this.$refs.tooltip.getPopupDomNode(); + return (this.$refs.tooltip as any).getPopupDomNode(); }, getPlacements() { @@ -209,4 +210,4 @@ export default { ); }, -}; +}); diff --git a/components/tooltip/abstractTooltipProps.js b/components/tooltip/abstractTooltipProps.ts similarity index 64% rename from components/tooltip/abstractTooltipProps.js rename to components/tooltip/abstractTooltipProps.ts index a4b9b53ea..3889572a7 100644 --- a/components/tooltip/abstractTooltipProps.js +++ b/components/tooltip/abstractTooltipProps.ts @@ -1,27 +1,31 @@ import PropTypes from '../_util/vue-types'; -const triggerType = PropTypes.oneOf(['hover', 'focus', 'click', 'contextmenu']); +import { tuple } from '../_util/type'; +const triggerType = PropTypes.oneOf(tuple('hover', 'focus', 'click', 'contextmenu')); + export default () => ({ trigger: PropTypes.oneOfType([triggerType, PropTypes.arrayOf(triggerType)]).def('hover'), visible: PropTypes.looseBool, defaultVisible: PropTypes.looseBool, - placement: PropTypes.oneOf([ - 'top', - 'left', - 'right', - 'bottom', - 'topLeft', - 'topRight', - 'bottomLeft', - 'bottomRight', - 'leftTop', - 'leftBottom', - 'rightTop', - 'rightBottom', - ]).def('top'), + placement: PropTypes.oneOf( + tuple( + 'top', + 'left', + 'right', + 'bottom', + 'topLeft', + 'topRight', + 'bottomLeft', + 'bottomRight', + 'leftTop', + 'leftBottom', + 'rightTop', + 'rightBottom', + ), + ).def('top'), transitionName: PropTypes.string.def('zoom-big-fast'), - overlayStyle: PropTypes.object.def(() => ({})), overlayClassName: PropTypes.string, + openClassName: PropTypes.string, prefixCls: PropTypes.string, mouseEnterDelay: PropTypes.number.def(0.1), mouseLeaveDelay: PropTypes.number.def(0.1), @@ -31,7 +35,6 @@ export default () => ({ destroyTooltipOnHide: PropTypes.looseBool.def(false), align: PropTypes.object.def(() => ({})), builtinPlacements: PropTypes.object, - children: PropTypes.any, + children: PropTypes.VNodeChild, onVisibleChange: PropTypes.func, - 'onUpdate:visible': PropTypes.func, }); diff --git a/components/tooltip/index.js b/components/tooltip/index.ts similarity index 68% rename from components/tooltip/index.js rename to components/tooltip/index.ts index c1909f7ec..a3b35afd7 100644 --- a/components/tooltip/index.js +++ b/components/tooltip/index.ts @@ -1,7 +1,8 @@ +import { App } from 'vue'; import ToolTip from './Tooltip'; /* istanbul ignore next */ -ToolTip.install = function(app) { +ToolTip.install = function(app: App) { app.component(ToolTip.name, ToolTip); return app; }; diff --git a/components/tooltip/placements.js b/components/tooltip/placements.ts similarity index 100% rename from components/tooltip/placements.js rename to components/tooltip/placements.ts diff --git a/components/tooltip/style/index.js b/components/tooltip/style/index.ts similarity index 100% rename from components/tooltip/style/index.js rename to components/tooltip/style/index.ts