UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

71 lines (63 loc) 2.35 kB
/** * MSKCC 2021, 2024 */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js'); var React = require('react'); var cx = require('classnames'); var Search = require('../Search/Search.js'); require('../Search/Search.Skeleton.js'); var usePrefix = require('../../internal/usePrefix.js'); var events = require('../../tools/events.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx); function ExpandableSearch(_ref) { let { onBlur, onChange, onExpand, onFocus, defaultValue, isExpanded, ...props } = _ref; const [expanded, setExpanded] = React.useState(isExpanded || false); const [hasContent, setHasContent] = React.useState(defaultValue ? true : false); const searchRef = React.useRef(null); const prefix = usePrefix.usePrefix(); function handleFocus() { if (!expanded) { setExpanded(true); } } function handleBlur(evt) { const relatedTargetIsAllowed = evt.relatedTarget && evt.relatedTarget.classList.contains(`${prefix}--search-close`); if (expanded && !relatedTargetIsAllowed && !hasContent) { setExpanded(false); } } function handleChange(evt) { setHasContent(evt.target.value !== ''); } function handleExpand() { searchRef.current?.focus?.(); } const classes = cx__default["default"](`${prefix}--search--expandable`, { [`${prefix}--search--expanded`]: expanded }, props.className); return /*#__PURE__*/React__default["default"].createElement(Search["default"], _rollupPluginBabelHelpers["extends"]({}, props, { defaultValue: defaultValue, isExpanded: expanded, ref: searchRef, className: classes, onFocus: events.composeEventHandlers([onFocus, handleFocus]), onBlur: events.composeEventHandlers([onBlur, handleBlur]), onChange: events.composeEventHandlers([onChange, handleChange]), onExpand: events.composeEventHandlers([onExpand, handleExpand]) })); } ExpandableSearch.propTypes = Search["default"].propTypes; ExpandableSearch.displayName = 'ExpandableSearch'; exports["default"] = ExpandableSearch;