1 | "use strict";
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.default = useFocusManager;
|
5 |
|
6 | var _react = require("react");
|
7 |
|
8 | var _useFocusManager = _interopRequireDefault(require("@restart/hooks/useFocusManager"));
|
9 |
|
10 | var _useEventCallback = _interopRequireDefault(require("@restart/hooks/useEventCallback"));
|
11 |
|
12 | var _useMounted = _interopRequireDefault(require("@restart/hooks/useMounted"));
|
13 |
|
14 | var _matches = _interopRequireDefault(require("dom-helpers/matches"));
|
15 |
|
16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17 |
|
18 | const isInDisabledFieldset = node => {
|
19 | return !!node && (0, _matches.default)(node, 'fieldset[disabled] *');
|
20 | };
|
21 |
|
22 | function useFocusManager(ref, props = {}, opts = {}) {
|
23 | const isMounted = (0, _useMounted.default)();
|
24 | const [focused, setFocus] = (0, _react.useState)(false);
|
25 | const isDisabled = (0, _useEventCallback.default)(() => props.disabled === true || isInDisabledFieldset(ref.current));
|
26 | const events = (0, _useFocusManager.default)(Object.assign({}, opts, {
|
27 | isDisabled,
|
28 | onChange: focused => {
|
29 | if (isMounted()) setFocus(focused);
|
30 | },
|
31 |
|
32 | didHandle(focused, event) {
|
33 | let handler = props[focused ? 'onFocus' : 'onBlur'];
|
34 | if (handler) handler(event);
|
35 |
|
36 | if (opts.didHandle && !event.isWidgetDefaultPrevented) opts.didHandle(focused, event);
|
37 | }
|
38 |
|
39 | }));
|
40 | return [events, focused, setFocus];
|
41 | } |
\ | No newline at end of file |