@wix/design-system
Version:
@wix/design-system
50 lines (49 loc) • 1.78 kB
JavaScript
;
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