1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/open-hand-choerodon-ui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
index.tsx 1.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
HughHzWu Отправлено 4 лет назад 95cf6d3
import React, { Children, cloneElement, FunctionComponent, useCallback, useRef } from 'react';
import { findDOMNode } from 'react-dom';
import noop from 'lodash/noop';
import Tooltip, { TooltipProps } from '../tooltip/Tooltip';
import utilIsOverflow from './util';
function renderTitle(props) {
if (props) {
const { trigger } = props;
if (trigger) {
return Children.map(trigger, (item) => cloneElement<any>(item, { ref: null, className: null }));
}
}
}
export interface OverflowTipProps extends TooltipProps {
strict?: boolean;
getOverflowContainer?: () => HTMLElement | null | undefined;
}
const OverflowTip: FunctionComponent<OverflowTipProps> = (props) => {
const ref = useRef<Tooltip | null>(null);
const defaultGetOverflowContainer = useCallback(() => {
const { current } = ref;
if (current) {
return findDOMNode(current) as HTMLElement;
}
}, [ref]);
const { children, strict, getOverflowContainer = defaultGetOverflowContainer, onHiddenBeforeChange = noop, title = renderTitle, ...rest } = props;
const isOverFlow = useCallback((): boolean => {
const element = getOverflowContainer();
if (element) {
return utilIsOverflow(element)
}
return false;
}, [getOverflowContainer]);
const handleHiddenBeforeChange = useCallback((hidden: boolean): boolean => {
if (onHiddenBeforeChange(hidden) === false) {
return false;
}
if (hidden) {
return true;
}
return isOverFlow();
}, [isOverFlow, onHiddenBeforeChange]);
return (
<Tooltip
{...rest}
title={title}
onHiddenBeforeChange={strict ? onHiddenBeforeChange : handleHiddenBeforeChange}
ref={ref}
>
{children}
</Tooltip>
);
};
OverflowTip.displayName = 'OverflowTip';
export default OverflowTip;

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/open-hand-choerodon-ui.git
git@gitlife.ru:oschina-mirror/open-hand-choerodon-ui.git
oschina-mirror
open-hand-choerodon-ui
open-hand-choerodon-ui
master