Improve Tooltip type definitions

This commit is contained in:
Wei Zhu 2017-11-20 18:20:16 +08:00
parent 54b1715d2a
commit ac7212eba8
2 changed files with 12 additions and 11 deletions

View File

@ -3,6 +3,7 @@ import { cloneElement } from 'react';
import RcTooltip from 'rc-tooltip'; import RcTooltip from 'rc-tooltip';
import classNames from 'classnames'; import classNames from 'classnames';
import getPlacements, { AdjustOverflow, PlacementsConfig } from './placements'; import getPlacements, { AdjustOverflow, PlacementsConfig } from './placements';
import Button from '../button/index';
export { AdjustOverflow, PlacementsConfig }; export { AdjustOverflow, PlacementsConfig };
@ -40,9 +41,9 @@ export interface TooltipProps extends AbstractTooltipProps {
overlay?: React.ReactNode | RenderFunction; overlay?: React.ReactNode | RenderFunction;
} }
const splitObject = (obj, keys) => { const splitObject = (obj: any, keys: string[]) => {
const picked = {}; const picked: any = {};
const omited = { ...obj }; const omited: any = { ...obj };
keys.forEach(key => { keys.forEach(key => {
if (obj && key in obj) { if (obj && key in obj) {
picked[key] = obj[key]; picked[key] = obj[key];
@ -63,7 +64,7 @@ export default class Tooltip extends React.Component<TooltipProps, any> {
autoAdjustOverflow: true, autoAdjustOverflow: true,
}; };
private tooltip: any; private tooltip: typeof RcTooltip;
constructor(props: TooltipProps) { constructor(props: TooltipProps) {
super(props); super(props);
@ -79,7 +80,7 @@ export default class Tooltip extends React.Component<TooltipProps, any> {
} }
} }
onVisibleChange = (visible) => { onVisibleChange = (visible: boolean) => {
const { onVisibleChange } = this.props; const { onVisibleChange } = this.props;
if (!('visible' in this.props)) { if (!('visible' in this.props)) {
this.setState({ visible: this.isNoTitle() ? false : visible }); this.setState({ visible: this.isNoTitle() ? false : visible });
@ -116,8 +117,8 @@ export default class Tooltip extends React.Component<TooltipProps, any> {
// Fix Tooltip won't hide at disabled button // Fix Tooltip won't hide at disabled button
// mouse events don't trigger at disabled button in Chrome // mouse events don't trigger at disabled button in Chrome
// https://github.com/react-component/tooltip/issues/18 // https://github.com/react-component/tooltip/issues/18
getDisabledCompatibleChildren(element) { getDisabledCompatibleChildren(element: React.ReactElement<any>) {
if ((element.type.__ANT_BUTTON || element.type === 'button') && if (((element.type as typeof Button).__ANT_BUTTON || element.type === 'button') &&
element.props.disabled && this.isHoverTrigger()) { element.props.disabled && this.isHoverTrigger()) {
// Pick some layout related style properties up to span // Pick some layout related style properties up to span
// Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254 // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254
@ -153,8 +154,8 @@ export default class Tooltip extends React.Component<TooltipProps, any> {
} }
// 动态设置动画点 // 动态设置动画点
onPopupAlign = (domNode, align) => { onPopupAlign = (domNode: HTMLElement, align: any) => {
const placements = this.getPlacements(); const placements: any = this.getPlacements();
// 当前返回的位置 // 当前返回的位置
const placement = Object.keys(placements).filter( const placement = Object.keys(placements).filter(
key => ( key => (
@ -184,7 +185,7 @@ export default class Tooltip extends React.Component<TooltipProps, any> {
domNode.style.transformOrigin = `${transformOrigin.left} ${transformOrigin.top}`; domNode.style.transformOrigin = `${transformOrigin.left} ${transformOrigin.top}`;
} }
saveTooltip = (node) => { saveTooltip = (node: typeof RcTooltip) => {
this.tooltip = node; this.tooltip = node;
} }

View File

@ -37,7 +37,7 @@ export function getOverflowOptions(autoAdjustOverflow: any) {
export default function getPlacements(config: PlacementsConfig = {}) { export default function getPlacements(config: PlacementsConfig = {}) {
const { arrowWidth = 5, horizontalArrowShift = 16, verticalArrowShift = 12, autoAdjustOverflow = true } = config; const { arrowWidth = 5, horizontalArrowShift = 16, verticalArrowShift = 12, autoAdjustOverflow = true } = config;
const placementMap = { const placementMap: any = {
left: { left: {
points: ['cr', 'cl'], points: ['cr', 'cl'],
offset: [-4, 0], offset: [-4, 0],