UNPKG

rsuite

Version:

A suite of react components

45 lines 1.56 kB
'use client'; import _extends from "@babel/runtime/helpers/esm/extends"; import React from 'react'; import Input from "../Input/index.js"; import { createChainedFunction } from "../internals/utils/index.js"; export function defaultRenderInput(props, ref) { return /*#__PURE__*/React.createElement(Input, _extends({ ref: ref }, props)); } const pickers = ['DatePicker', 'DateRangePicker', 'TimePicker', 'TimeRangePicker', 'InputPicker', 'TagPicker', 'Cascader', 'MultiCascader', 'SelectPicker', 'CheckPicker', 'CheckTreePicker', 'TreePicker']; function getDisplayName(Component) { if (typeof Component?.type === 'string') { return Component?.type; } return Component?.type?.displayName || ''; } export function renderChildren(children, props, ref) { if (typeof children === 'function') { return children(props, ref); } if (pickers.includes(getDisplayName(children))) { const { onBlur, ...rest } = props; const childElement = children; const { onExit, onClean } = childElement.props; return /*#__PURE__*/React.cloneElement(childElement, { ...rest, // Pass onBlur to the child component to automatically save or cancel after the focus event is processed. // Special handling in the Picker component, call onBlur when onExit and onClean onExit: createChainedFunction(() => onBlur?.(), onExit), onClean: createChainedFunction(() => onBlur?.(), onClean), ref }); } return /*#__PURE__*/React.cloneElement(children, { ...props, ref }); }