UNPKG

3.75 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = void 0;
11
12var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
14var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
16var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
18var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
20var React = _interopRequireWildcard(require("react"));
21
22var _OptionList = _interopRequireDefault(require("./OptionList"));
23
24var _Option = _interopRequireDefault(require("./Option"));
25
26var _OptGroup = _interopRequireDefault(require("./OptGroup"));
27
28var _legacyUtil = require("./utils/legacyUtil");
29
30var _valueUtil = require("./utils/valueUtil");
31
32var _generate = _interopRequireDefault(require("./generate"));
33
34var _warningPropsUtil = _interopRequireDefault(require("./utils/warningPropsUtil"));
35
36/**
37 * To match accessibility requirement, we always provide an input in the component.
38 * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.
39 * For focused select, we set `aria-live="polite"` to update the accessibility content.
40 *
41 * ref:
42 * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions
43 *
44 * New api:
45 * - listHeight
46 * - listItemHeight
47 * - component
48 *
49 * Remove deprecated api:
50 * - multiple
51 * - tags
52 * - combobox
53 * - firstActiveValue
54 * - dropdownMenuStyle
55 * - openClassName (Not list in api)
56 *
57 * Update:
58 * - `backfill` only support `combobox` mode
59 * - `combobox` mode not support `labelInValue` since it's meaningless
60 * - `getInputElement` only support `combobox` mode
61 * - `onChange` return OptionData instead of ReactNode
62 * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode
63 * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option
64 * - `combobox` mode not support `optionLabelProp`
65 */
66var RefSelect = (0, _generate.default)({
67 prefixCls: 'rc-select',
68 components: {
69 optionList: _OptionList.default
70 },
71 convertChildrenToData: _legacyUtil.convertChildrenToData,
72 flattenOptions: _valueUtil.flattenOptions,
73 getLabeledValue: _valueUtil.getLabeledValue,
74 filterOptions: _valueUtil.filterOptions,
75 isValueDisabled: _valueUtil.isValueDisabled,
76 findValueOption: _valueUtil.findValueOption,
77 warningProps: _warningPropsUtil.default,
78 fillOptionsWithMissingValue: _valueUtil.fillOptionsWithMissingValue
79});
80/**
81 * Typescript not support generic with function component,
82 * we have to wrap an class component to handle this.
83 */
84
85var Select = /*#__PURE__*/function (_React$Component) {
86 (0, _inherits2.default)(Select, _React$Component);
87
88 var _super = (0, _createSuper2.default)(Select);
89
90 function Select() {
91 var _this;
92
93 (0, _classCallCheck2.default)(this, Select);
94 _this = _super.apply(this, arguments);
95 _this.selectRef = React.createRef();
96
97 _this.focus = function () {
98 _this.selectRef.current.focus();
99 };
100
101 _this.blur = function () {
102 _this.selectRef.current.blur();
103 };
104
105 return _this;
106 }
107
108 (0, _createClass2.default)(Select, [{
109 key: "render",
110 value: function render() {
111 return React.createElement(RefSelect, Object.assign({
112 ref: this.selectRef
113 }, this.props));
114 }
115 }]);
116 return Select;
117}(React.Component);
118
119Select.Option = _Option.default;
120Select.OptGroup = _OptGroup.default;
121var _default = Select;
122exports.default = _default;
\No newline at end of file