UNPKG

linkmore-design

Version:

🌈 πŸš€lmη»„δ»ΆεΊ“γ€‚πŸš€

144 lines (143 loc) β€’ 4.58 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.Option = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classnames = _interopRequireDefault(require("classnames")); var _rcMentions = _interopRequireDefault(require("rc-mentions")); var _ref = require("rc-util/lib/ref"); var React = _interopRequireWildcard(require("react")); var _configProvider = require("../config-provider"); var _defaultRenderEmpty = _interopRequireDefault(require("../config-provider/defaultRenderEmpty")); var _context = require("../form/context"); var _spin = _interopRequireDefault(require("../spin")); var _statusUtils = require("../_util/statusUtils"); const { Option } = _rcMentions.default; exports.Option = Option; function loadingFilterOption() { return true; } const InternalMentions = ({ prefixCls: customizePrefixCls, className, disabled, loading, filterOption, children, notFoundContent, status: customStatus, ...restProps }, ref) => { const [focused, setFocused] = React.useState(false); const innerRef = React.useRef(); const mergedRef = (0, _ref.composeRef)(ref, innerRef); const { getPrefixCls, renderEmpty, direction } = React.useContext(_configProvider.ConfigContext); const { status: contextStatus, hasFeedback, feedbackIcon } = React.useContext(_context.FormItemInputContext); const mergedStatus = (0, _statusUtils.getMergedStatus)(contextStatus, customStatus); const onFocus = (...args) => { if (restProps.onFocus) { restProps.onFocus(...args); } setFocused(true); }; const onBlur = (...args) => { if (restProps.onBlur) { restProps.onBlur(...args); } setFocused(false); }; const getNotFoundContent = () => { if (notFoundContent !== undefined) { return notFoundContent; } return (renderEmpty || _defaultRenderEmpty.default)('Select'); }; const getOptions = () => { if (loading) { return /*#__PURE__*/React.createElement(Option, { value: "ANTD_SEARCHING", disabled: true }, /*#__PURE__*/React.createElement(_spin.default, { size: "small" })); } return children; }; const getFilterOption = () => { if (loading) { return loadingFilterOption; } return filterOption; }; const prefixCls = getPrefixCls('mentions', customizePrefixCls); const mergedClassName = (0, _classnames.default)({ [`${prefixCls}-disabled`]: disabled, [`${prefixCls}-focused`]: focused, [`${prefixCls}-rtl`]: direction === 'rtl' }, (0, _statusUtils.getStatusClassNames)(prefixCls, mergedStatus), !hasFeedback && className); const mentions = /*#__PURE__*/React.createElement(_rcMentions.default, (0, _extends2.default)({ prefixCls: prefixCls, notFoundContent: getNotFoundContent(), className: mergedClassName, disabled: disabled, direction: direction }, restProps, { filterOption: getFilterOption(), onFocus: onFocus, onBlur: onBlur, ref: mergedRef }), getOptions()); if (hasFeedback) { return /*#__PURE__*/React.createElement("div", { className: (0, _classnames.default)(`${prefixCls}-affix-wrapper`, (0, _statusUtils.getStatusClassNames)(`${prefixCls}-affix-wrapper`, mergedStatus, hasFeedback), className) }, mentions, /*#__PURE__*/React.createElement("span", { className: `${prefixCls}-suffix` }, feedbackIcon)); } return mentions; }; const Mentions = /*#__PURE__*/React.forwardRef(InternalMentions); if (process.env.NODE_ENV !== 'production') { Mentions.displayName = 'Mentions'; } Mentions.Option = Option; Mentions.getMentions = (value = '', config = {}) => { const { prefix = '@', split = ' ' } = config; const prefixList = Array.isArray(prefix) ? prefix : [prefix]; return value.split(split).map((str = '') => { let hitPrefix = null; prefixList.some(prefixStr => { const startStr = str.slice(0, prefixStr.length); if (startStr === prefixStr) { hitPrefix = prefixStr; return true; } return false; }); if (hitPrefix !== null) { return { prefix: hitPrefix, value: str.slice(hitPrefix.length) }; } return null; }).filter(entity => !!entity && !!entity.value); }; var _default = Mentions; exports.default = _default;