1 | "use strict";
|
2 |
|
3 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.default = Menu;
|
9 |
|
10 | var React = _interopRequireWildcard(require("react"));
|
11 |
|
12 | var _index = require("../locale/index.js");
|
13 |
|
14 | var _styledComponents = require("./styled-components.js");
|
15 |
|
16 | var _optionList = _interopRequireDefault(require("./option-list.js"));
|
17 |
|
18 | var _overrides = require("../helpers/overrides.js");
|
19 |
|
20 | var _focusVisible = require("../utils/focusVisible.js");
|
21 |
|
22 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23 |
|
24 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
25 |
|
26 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
27 |
|
28 | function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
29 |
|
30 | function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
31 |
|
32 | function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
33 |
|
34 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
35 |
|
36 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
37 |
|
38 | function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
39 |
|
40 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
41 |
|
42 | function Menu(props) {
|
43 | var _props$overrides = props.overrides,
|
44 | overrides = _props$overrides === void 0 ? {} : _props$overrides,
|
45 | _props$rootRef = props.rootRef,
|
46 | rootRef = _props$rootRef === void 0 ? React.createRef() : _props$rootRef,
|
47 | _props$focusMenu = props.focusMenu,
|
48 | focusMenu = _props$focusMenu === void 0 ? function () {} : _props$focusMenu,
|
49 | _props$unfocusMenu = props.unfocusMenu,
|
50 | unfocusMenu = _props$unfocusMenu === void 0 ? function () {} : _props$unfocusMenu,
|
51 | _props$handleMouseLea = props.handleMouseLeave,
|
52 | handleMouseLeave = _props$handleMouseLea === void 0 ? function () {} : _props$handleMouseLea,
|
53 | _props$handleKeyDown = props.handleKeyDown,
|
54 | handleKeyDown = _props$handleKeyDown === void 0 ? function (event) {} : _props$handleKeyDown,
|
55 | _props$renderAll = props.renderAll,
|
56 | renderAll = _props$renderAll === void 0 ? false : _props$renderAll;
|
57 |
|
58 | var _React$useState = React.useState(false),
|
59 | _React$useState2 = _slicedToArray(_React$useState, 2),
|
60 | focusVisible = _React$useState2[0],
|
61 | setFocusVisible = _React$useState2[1];
|
62 |
|
63 | var handleFocus = function handleFocus(event) {
|
64 | if ((0, _focusVisible.isFocusVisible)(event)) {
|
65 | setFocusVisible(true);
|
66 | }
|
67 | };
|
68 |
|
69 | var handleBlur = function handleBlur(event) {
|
70 | if (focusVisible !== false) {
|
71 | setFocusVisible(false);
|
72 | }
|
73 | };
|
74 |
|
75 | var _getOverrides = (0, _overrides.getOverrides)(overrides.List, _styledComponents.StyledList),
|
76 | _getOverrides2 = _slicedToArray(_getOverrides, 2),
|
77 | List = _getOverrides2[0],
|
78 | listProps = _getOverrides2[1];
|
79 |
|
80 | var _getOverrides3 = (0, _overrides.getOverrides)(overrides.Option, _optionList.default),
|
81 | _getOverrides4 = _slicedToArray(_getOverrides3, 2),
|
82 | Option = _getOverrides4[0],
|
83 | optionProps = _getOverrides4[1];
|
84 |
|
85 | var _getOverrides5 = (0, _overrides.getOverrides)(overrides.EmptyState, _styledComponents.StyledEmptyState),
|
86 | _getOverrides6 = _slicedToArray(_getOverrides5, 2),
|
87 | EmptyState = _getOverrides6[0],
|
88 | emptyStateProps = _getOverrides6[1];
|
89 |
|
90 | var _getOverrides7 = (0, _overrides.getOverrides)(overrides.OptgroupHeader, _styledComponents.StyledOptgroupHeader),
|
91 | _getOverrides8 = _slicedToArray(_getOverrides7, 2),
|
92 | OptgroupHeader = _getOverrides8[0],
|
93 | optgroupHeaderProps = _getOverrides8[1];
|
94 |
|
95 | var groupedItems = Array.isArray(props.items) ? {
|
96 | __ungrouped: props.items
|
97 | } : props.items;
|
98 | var optgroups = Object.keys(groupedItems);
|
99 |
|
100 | var _optgroups$reduce = optgroups.reduce(function (_ref, optgroup) {
|
101 | var _ref2 = _slicedToArray(_ref, 2),
|
102 | els = _ref2[0],
|
103 | itemIndex = _ref2[1];
|
104 |
|
105 | if (optgroup !== '__ungrouped') {
|
106 | els.push(React.createElement(OptgroupHeader, _extends({
|
107 | key: optgroup
|
108 | }, optgroupHeaderProps), optgroup));
|
109 | }
|
110 |
|
111 | var groupItems = groupedItems[optgroup].map(function (item, index) {
|
112 | itemIndex = itemIndex + 1;
|
113 | var _props$getRequiredIte = props.getRequiredItemProps,
|
114 | getRequiredItemProps = _props$getRequiredIte === void 0 ? function (item, index) {
|
115 | return {};
|
116 | } : _props$getRequiredIte;
|
117 |
|
118 | var _getRequiredItemProps = getRequiredItemProps(item, itemIndex),
|
119 | disabled = _getRequiredItemProps.disabled,
|
120 | isFocused = _getRequiredItemProps.isFocused,
|
121 | isHighlighted = _getRequiredItemProps.isHighlighted,
|
122 | _getRequiredItemProps2 = _getRequiredItemProps.resetMenu,
|
123 | resetMenu = _getRequiredItemProps2 === void 0 ? function () {} : _getRequiredItemProps2,
|
124 | restProps = _objectWithoutProperties(_getRequiredItemProps, ["disabled", "isFocused", "isHighlighted", "resetMenu"]);
|
125 |
|
126 | return React.createElement(Option, _extends({
|
127 | renderAll: renderAll,
|
128 | key: itemIndex,
|
129 | item: item,
|
130 | overrides: props.overrides,
|
131 | resetMenu: resetMenu,
|
132 | role: "option",
|
133 | $disabled: disabled,
|
134 | $isFocused: isFocused,
|
135 | $isHighlighted: isHighlighted,
|
136 | "aria-disabled": disabled,
|
137 | "aria-selected": isHighlighted && isFocused
|
138 | }, restProps, optionProps));
|
139 | });
|
140 | return [els.concat(groupItems), itemIndex];
|
141 | }, [[], -1]),
|
142 | _optgroups$reduce2 = _slicedToArray(_optgroups$reduce, 1),
|
143 | elements = _optgroups$reduce2[0];
|
144 |
|
145 | var isEmpty = optgroups.every(function (optgroup) {
|
146 | return !groupedItems[optgroup].length;
|
147 | });
|
148 | return React.createElement(_index.LocaleContext.Consumer, null, function (locale) {
|
149 | return React.createElement(List, _extends({
|
150 | "aria-activedescendant": props.activedescendantId || null,
|
151 | role: "listbox",
|
152 | ref: rootRef,
|
153 | onMouseEnter: focusMenu,
|
154 | onMouseLeave: handleMouseLeave,
|
155 | onMouseOver: focusMenu,
|
156 | onFocus: (0, _focusVisible.forkFocus)({
|
157 | onFocus: focusMenu
|
158 | }, handleFocus),
|
159 | onBlur: (0, _focusVisible.forkBlur)({
|
160 | onBlur: unfocusMenu
|
161 | }, handleBlur),
|
162 | onKeyDown: function onKeyDown(event) {
|
163 | if (props.isFocused) {
|
164 | handleKeyDown(event);
|
165 | }
|
166 | },
|
167 | tabIndex: 0,
|
168 | "data-baseweb": "menu",
|
169 | $isFocusVisible: focusVisible
|
170 | }, listProps), isEmpty ? React.createElement(EmptyState, _extends({
|
171 | "aria-live": "polite",
|
172 | "aria-atomic": true
|
173 | }, emptyStateProps), props.noResultsMsg || locale.menu.noResultsMsg) : elements);
|
174 | });
|
175 | } |
\ | No newline at end of file |