UNPKG

7.44 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = exports.Option = void 0;
9var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12var _classnames = _interopRequireDefault(require("classnames"));
13var _rcMentions = _interopRequireDefault(require("rc-mentions"));
14var _ref = require("rc-util/lib/ref");
15var React = _interopRequireWildcard(require("react"));
16var _configProvider = require("../config-provider");
17var _defaultRenderEmpty = _interopRequireDefault(require("../config-provider/defaultRenderEmpty"));
18var _context = require("../form/context");
19var _PurePanel = _interopRequireDefault(require("../_util/PurePanel"));
20var _spin = _interopRequireDefault(require("../spin"));
21var _statusUtils = require("../_util/statusUtils");
22var _style = _interopRequireDefault(require("./style"));
23var __rest = void 0 && (void 0).__rest || function (s, e) {
24 var t = {};
25 for (var p in s) {
26 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
27 }
28 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
29 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
30 }
31 return t;
32};
33var Option = _rcMentions["default"].Option;
34exports.Option = Option;
35function loadingFilterOption() {
36 return true;
37}
38var InternalMentions = function InternalMentions(_a, ref) {
39 var _classNames;
40 var customizePrefixCls = _a.prefixCls,
41 className = _a.className,
42 disabled = _a.disabled,
43 loading = _a.loading,
44 filterOption = _a.filterOption,
45 children = _a.children,
46 notFoundContent = _a.notFoundContent,
47 options = _a.options,
48 customStatus = _a.status,
49 popupClassName = _a.popupClassName,
50 restProps = __rest(_a, ["prefixCls", "className", "disabled", "loading", "filterOption", "children", "notFoundContent", "options", "status", "popupClassName"]);
51 var _React$useState = React.useState(false),
52 _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
53 focused = _React$useState2[0],
54 setFocused = _React$useState2[1];
55 var innerRef = React.useRef();
56 var mergedRef = (0, _ref.composeRef)(ref, innerRef);
57 var _React$useContext = React.useContext(_configProvider.ConfigContext),
58 getPrefixCls = _React$useContext.getPrefixCls,
59 renderEmpty = _React$useContext.renderEmpty,
60 direction = _React$useContext.direction;
61 var _React$useContext2 = React.useContext(_context.FormItemInputContext),
62 contextStatus = _React$useContext2.status,
63 hasFeedback = _React$useContext2.hasFeedback,
64 feedbackIcon = _React$useContext2.feedbackIcon;
65 var mergedStatus = (0, _statusUtils.getMergedStatus)(contextStatus, customStatus);
66 var onFocus = function onFocus() {
67 if (restProps.onFocus) {
68 restProps.onFocus.apply(restProps, arguments);
69 }
70 setFocused(true);
71 };
72 var onBlur = function onBlur() {
73 if (restProps.onBlur) {
74 restProps.onBlur.apply(restProps, arguments);
75 }
76 setFocused(false);
77 };
78 var getNotFoundContent = function getNotFoundContent() {
79 if (notFoundContent !== undefined) {
80 return notFoundContent;
81 }
82 return (renderEmpty || _defaultRenderEmpty["default"])('Select');
83 };
84 var getOptions = function getOptions() {
85 if (loading) {
86 return /*#__PURE__*/React.createElement(Option, {
87 value: "ANTD_SEARCHING",
88 disabled: true
89 }, /*#__PURE__*/React.createElement(_spin["default"], {
90 size: "small"
91 }));
92 }
93 return children;
94 };
95 var mergedOptions = loading ? [{
96 value: 'ANTD_SEARCHING',
97 disabled: true,
98 label: /*#__PURE__*/React.createElement(_spin["default"], {
99 size: "small"
100 })
101 }] : options;
102 var getFilterOption = function getFilterOption() {
103 if (loading) {
104 return loadingFilterOption;
105 }
106 return filterOption;
107 };
108 var prefixCls = getPrefixCls('mentions', customizePrefixCls);
109 // Style
110 var _useStyle = (0, _style["default"])(prefixCls),
111 _useStyle2 = (0, _slicedToArray2["default"])(_useStyle, 2),
112 wrapSSR = _useStyle2[0],
113 hashId = _useStyle2[1];
114 var mergedClassName = (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, prefixCls + "-disabled", disabled), (0, _defineProperty2["default"])(_classNames, prefixCls + "-focused", focused), (0, _defineProperty2["default"])(_classNames, prefixCls + "-rtl", direction === 'rtl'), _classNames), (0, _statusUtils.getStatusClassNames)(prefixCls, mergedStatus), !hasFeedback && className, hashId);
115 var mentions = /*#__PURE__*/React.createElement(_rcMentions["default"], (0, _extends2["default"])({
116 prefixCls: prefixCls,
117 notFoundContent: getNotFoundContent(),
118 className: mergedClassName,
119 disabled: disabled,
120 direction: direction
121 }, restProps, {
122 filterOption: getFilterOption(),
123 onFocus: onFocus,
124 onBlur: onBlur,
125 dropdownClassName: (0, _classnames["default"])(popupClassName, hashId),
126 ref: mergedRef,
127 options: mergedOptions
128 }), getOptions());
129 if (hasFeedback) {
130 return /*#__PURE__*/React.createElement("div", {
131 className: (0, _classnames["default"])(prefixCls + "-affix-wrapper", (0, _statusUtils.getStatusClassNames)(prefixCls + "-affix-wrapper", mergedStatus, hasFeedback), className, hashId)
132 }, mentions, /*#__PURE__*/React.createElement("span", {
133 className: prefixCls + "-suffix"
134 }, feedbackIcon));
135 }
136 return wrapSSR(mentions);
137};
138var Mentions = /*#__PURE__*/React.forwardRef(InternalMentions);
139if (process.env.NODE_ENV !== 'production') {
140 Mentions.displayName = 'Mentions';
141}
142Mentions.Option = Option;
143// We don't care debug panel
144/* istanbul ignore next */
145var PurePanel = (0, _PurePanel["default"])(Mentions, 'mentions');
146Mentions._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;
147Mentions.getMentions = function () {
148 var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
149 var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
150 var _config$prefix = config.prefix,
151 prefix = _config$prefix === void 0 ? '@' : _config$prefix,
152 _config$split = config.split,
153 split = _config$split === void 0 ? ' ' : _config$split;
154 var prefixList = Array.isArray(prefix) ? prefix : [prefix];
155 return value.split(split).map(function () {
156 var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
157 var hitPrefix = null;
158 prefixList.some(function (prefixStr) {
159 var startStr = str.slice(0, prefixStr.length);
160 if (startStr === prefixStr) {
161 hitPrefix = prefixStr;
162 return true;
163 }
164 return false;
165 });
166 if (hitPrefix !== null) {
167 return {
168 prefix: hitPrefix,
169 value: str.slice(hitPrefix.length)
170 };
171 }
172 return null;
173 }).filter(function (entity) {
174 return !!entity && !!entity.value;
175 });
176};
177var _default = Mentions;
178exports["default"] = _default;
\No newline at end of file