mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-12 04:13:13 +08:00
Improve Tooltip type definitions
This commit is contained in:
parent
54b1715d2a
commit
ac7212eba8
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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],
|
||||||
|
Loading…
Reference in New Issue
Block a user