UNPKG

@wix/design-system

Version:

@wix/design-system

50 lines (49 loc) 1.78 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.useAutoFocusAndSelect = useAutoFocusAndSelect; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); function useAutoFocusAndSelect(_ref) { var autoFocus = _ref.autoFocus, autoSelect = _ref.autoSelect, onFocus = _ref.onFocus, onBlur = _ref.onBlur, localInputRef = _ref.localInputRef, value = _ref.value; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), isFocused = _useState2[0], setIsFocused = _useState2[1]; var autoFocusTriggered = (0, _react.useRef)(false); var _onFocus = (0, _react.useCallback)(event => { setIsFocused(true); if (autoSelect) { var _localInputRef$curren; (_localInputRef$curren = localInputRef.current) == null || _localInputRef$curren.select(); } onFocus == null || onFocus(event); }, [onFocus, localInputRef, autoSelect]); var _onBlur = (0, _react.useCallback)(event => { setIsFocused(false); onBlur == null || onBlur(event); }, [onBlur]); (0, _react.useEffect)(() => { if (autoFocus && !autoFocusTriggered.current && localInputRef.current) { localInputRef.current.focus(); if (autoSelect) { localInputRef.current.select(); } else if (value !== undefined) { var length = String(value).length; localInputRef.current.setSelectionRange(length, length); } autoFocusTriggered.current = true; } }, [autoFocus, autoSelect, localInputRef, value]); return { isFocused, _onFocus, _onBlur }; } //# sourceMappingURL=useAutoFocusAndSelect.js.map