Web: Files: added an error when creating a room without a title

This commit is contained in:
Nikita Gopienko 2022-12-01 14:15:57 +03:00
parent 2b7ece7553
commit d678891bde
3 changed files with 44 additions and 13 deletions

View File

@ -73,6 +73,7 @@ const CreateRoomDialog = ({
};
const [roomParams, setRoomParams] = useState({ ...startRoomParams });
const [isValidTitle, setIsValidTitle] = useState(true);
const setRoomTags = (newTags) =>
setRoomParams({ ...roomParams, tags: newTags });
@ -87,6 +88,11 @@ const CreateRoomDialog = ({
};
const onCreateRoom = async () => {
if (!roomParams.title.trim()) {
setIsValidTitle(false);
return;
}
await onCreate({ ...roomParams });
if (isMountRef.current) {
setRoomParams(startRoomParams);
@ -142,6 +148,8 @@ const CreateRoomDialog = ({
setRoomType={setRoomType}
setIsScrollLocked={setIsScrollLocked}
isDisabled={isLoading}
isValidTitle={isValidTitle}
setIsValidTitle={setIsValidTitle}
/>
)}
</ModalDialog.Body>

View File

@ -4,10 +4,12 @@ import { StyledParam } from "./StyledParam";
import Label from "@docspace/components/label";
import TextInput from "@docspace/components/text-input";
import FieldContainer from "@docspace/components/field-container";
const StyledInputParam = styled(StyledParam)`
flex-direction: column;
gap: 4px;
max-height: 54px;
.input-label {
cursor: pointer;
@ -24,6 +26,8 @@ const InputParam = ({
onFocus,
onBlur,
isDisabled,
isValidTitle,
errorMessage,
}) => {
return (
<StyledInputParam>
@ -34,19 +38,32 @@ const InputParam = ({
htmlFor={id}
text={title}
/>
<TextInput
id={id}
value={value}
onChange={onChange}
onFocus={onFocus}
onBlur={onBlur}
scale
placeholder={placeholder}
tabIndex={2}
isDisabled={isDisabled}
/>
<FieldContainer
isVertical={true}
labelVisible={false}
hasError={!isValidTitle}
errorMessage={errorMessage}
>
<TextInput
id={id}
value={value}
onChange={onChange}
onFocus={onFocus}
onBlur={onBlur}
scale
placeholder={placeholder}
tabIndex={2}
isDisabled={isDisabled}
hasError={!isValidTitle}
/>
</FieldContainer>
</StyledInputParam>
);
};
InputParam.defaultProps = {
isValidTitle: true,
};
export default InputParam;

View File

@ -19,7 +19,7 @@ const StyledSetRoomParams = styled.div`
display: flex;
flex-direction: column;
width: 100%;
gap: 20px;
gap: 22px;
`;
const SetRoomParams = ({
@ -32,9 +32,13 @@ const SetRoomParams = ({
setIsScrollLocked,
isEdit,
isDisabled,
isValidTitle,
setIsValidTitle,
}) => {
const onChangeName = (e) =>
const onChangeName = (e) => {
setIsValidTitle(true);
setRoomParams({ ...roomParams, title: e.target.value });
};
const onChangeIsPrivate = () =>
setRoomParams({ ...roomParams, isPrivate: !roomParams.isPrivate });
@ -80,6 +84,8 @@ const SetRoomParams = ({
value={roomParams.title}
onChange={onChangeName}
isDisabled={isDisabled}
isValidTitle={isValidTitle}
errorMessage={t("Common:RequiredField")}
/>
<TagInput