UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

59 lines (55 loc) 1.93 kB
import React, { useCallback, useEffect, useMemo, useRef } from 'react'; import isString from 'lodash/isString'; import { getTooltipTheme } from '../../../es/_util/TooltipUtils'; import { Tooltip as LabelTooltip } from '../core/enum'; import isOverflow from '../overflow-tip/util'; import { hide, show } from '../tooltip/singleton'; var FormItemLabel = function FormItemLabel(props) { var className = props.className, rowSpan = props.rowSpan, paddingLeft = props.paddingLeft, tooltip = props.tooltip, children = props.children; var tooltipRef = useRef(false); var style = useMemo(function () { return paddingLeft ? { paddingLeft: paddingLeft } : undefined; }, [paddingLeft]); var handleMouseEnter = useCallback(function (e) { var currentTarget = e.currentTarget; if (tooltip === LabelTooltip.always || tooltip === LabelTooltip.overflow && isOverflow(currentTarget)) { show(currentTarget, { title: children, theme: getTooltipTheme('label') }); tooltipRef.current = true; } }, [tooltip, children, tooltipRef]); var handleMouseLeave = useCallback(function () { if (tooltipRef.current) { hide(); tooltipRef.current = false; } }, [tooltipRef]); useEffect(function () { return function () { if (tooltipRef.current) { hide(); tooltipRef.current = false; } }; }, [tooltipRef]); return React.createElement("td", { className: className, rowSpan: rowSpan, style: style, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }, React.createElement("label", { title: isString(children) && ![LabelTooltip.always, LabelTooltip.overflow].includes(tooltip) ? children : undefined }, React.createElement("span", null, children))); }; FormItemLabel.displayName = 'FormItemLabel'; export default FormItemLabel; //# sourceMappingURL=FormItemLabel.js.map