pre-installations and preparations
This commit is contained in:
1 parent
3e5a0329cb
commit
201d621ac3
6977 files changed
+742826
No files matched your search
+49
@@ -0,0 +1,49 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.menuReducer = menuReducer;
|
||||
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
||||
var _useList = require("../useList");
|
||||
function menuReducer(state, action) {
|
||||
if (action.type === _useList.ListActionTypes.itemHover) {
|
||||
return (0, _extends2.default)({}, state, {
|
||||
highlightedValue: action.item
|
||||
});
|
||||
}
|
||||
const newState = (0, _useList.listReducer)(state, action);
|
||||
|
||||
// make sure an item is always highlighted
|
||||
if (newState.highlightedValue === null && action.context.items.length > 0) {
|
||||
return (0, _extends2.default)({}, newState, {
|
||||
highlightedValue: action.context.items[0]
|
||||
});
|
||||
}
|
||||
if (action.type === _useList.ListActionTypes.keyDown) {
|
||||
if (action.event.key === 'Escape') {
|
||||
return (0, _extends2.default)({}, newState, {
|
||||
open: false
|
||||
});
|
||||
}
|
||||
}
|
||||
if (action.type === _useList.ListActionTypes.blur) {
|
||||
var _action$context$listb;
|
||||
if (!((_action$context$listb = action.context.listboxRef.current) != null && _action$context$listb.contains(action.event.relatedTarget))) {
|
||||
var _action$context$listb2, _action$event$related;
|
||||
// To prevent the menu from closing when the focus leaves the menu to the button.
|
||||
// For more details, see https://github.com/mui/material-ui/pull/36917#issuecomment-1566992698
|
||||
const listboxId = (_action$context$listb2 = action.context.listboxRef.current) == null ? void 0 : _action$context$listb2.getAttribute('id');
|
||||
const controlledBy = (_action$event$related = action.event.relatedTarget) == null ? void 0 : _action$event$related.getAttribute('aria-controls');
|
||||
if (listboxId && controlledBy && listboxId === controlledBy) {
|
||||
return newState;
|
||||
}
|
||||
return (0, _extends2.default)({}, newState, {
|
||||
open: false,
|
||||
highlightedValue: action.context.items[0]
|
||||
});
|
||||
}
|
||||
}
|
||||
return newState;
|
||||
}
|
||||
Reference in new issue
Block a user