From 2bda6327e9761c29331cddf34380ec52565ddf6d Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Wed, 29 Mar 2023 19:37:01 +0300 Subject: [PATCH] Web: Client: CreateEditRoomDialog: Added ref to InputParam --- .../sub-components/Params/InputParam.js | 96 ++++++++++--------- .../sub-components/TagInput/TagDropdown.js | 23 ++--- .../sub-components/TagInput/index.js | 5 +- 3 files changed, 67 insertions(+), 57 deletions(-) diff --git a/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/Params/InputParam.js b/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/Params/InputParam.js index 2af40ee015..ea44706241 100644 --- a/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/Params/InputParam.js +++ b/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/Params/InputParam.js @@ -17,52 +17,58 @@ const StyledInputParam = styled(StyledParam)` } `; -const InputParam = ({ - id, - title, - placeholder, - value, - onChange, - onFocus, - onBlur, - isDisabled, - isValidTitle, - errorMessage, - isAutoFocussed, -}) => { - return ( - - - ); -}; + + + + + + ); + } +); InputParam.defaultProps = { isValidTitle: true, diff --git a/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/TagDropdown.js b/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/TagDropdown.js index 4d1d676fb1..c72a1da75d 100644 --- a/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/TagDropdown.js +++ b/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/TagDropdown.js @@ -13,21 +13,20 @@ const TagDropdown = ({ setTagInputValue, createTagLabel, isDisabled, + inputRef, }) => { const dropdownRef = useRef(null); const [dropdownMaxHeight, setDropdownMaxHeight] = useState(0); - useEffect(() => { - document - .getElementById("shared_tags-input") - .addEventListener("keyup", onKeyPress); - - return () => document.removeEventListener("keyup", onKeyPress); - }); - const onKeyPress = (e) => e.key === "Enter" && addNewTag(); + useEffect(() => { + inputRef?.current?.addEventListener("keyup", onKeyPress); + + return () => inputRef?.current?.removeEventListener("keyup", onKeyPress); + }, [onKeyPress]); + const chosenTags = tagHandler.tags.map((tag) => tag.name); const tagsForDropdown = tagHandler.fetchedTags.filter( @@ -41,12 +40,13 @@ const TagDropdown = ({ }; const onClickOutside = (e) => { - if (!e) return; - if (e.target.id === "shared_tags-input") return; - document.getElementById("shared_tags-input").blur(); + /* if (!e) return; + if (e.target.id === "shared_tags-input") return; */ + inputRef?.current?.blur(); }; const addNewTag = () => { + if (tagInputValue?.trim() === "") return; tagHandler.addNewTag(tagInputValue); setTagInputValue(""); onClickOutside(); @@ -119,6 +119,7 @@ const TagDropdown = ({ hasItems={!!dropdownItems.length} clickOutsideAction={onClickOutside} withBackdrop={false} + enableKeyboardEvents={false} > {dropdownItems} diff --git a/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/index.js b/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/index.js index f7b9e50be6..f5f134fc18 100644 --- a/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/index.js +++ b/packages/client/src/components/dialogs/CreateEditRoomDialog/sub-components/TagInput/index.js @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useState, useRef } from "react"; import styled from "styled-components"; import TagList from "./TagList"; @@ -27,6 +27,7 @@ const StyledTagInput = styled.div` `; const TagInput = ({ t, tagHandler, setIsScrollLocked, isDisabled }) => { + const inputRef = useRef(); const [tagInput, setTagInput] = useState(""); const [isDropdownOpen, setIsDropdownOpen] = useState(false); @@ -49,6 +50,7 @@ const TagInput = ({ t, tagHandler, setIsScrollLocked, isDisabled }) => { hasTags={!!tagHandler.tags.length} > { />