From 0eadc7d466984fa74c7e7c745f9a12bda16e0dfc Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 11 Feb 2021 10:30:21 +0200 Subject: [PATCH] Fix circular dependency --- .../Widgets/SignupQuestionsWidget/OptionsWidget.tsx | 12 ++++++------ .../Widgets/SignupQuestionsWidget/QuestionList.tsx | 12 ++++++------ .../SignupQuestionsWidget/SignupQuestionsWidget.tsx | 5 +++-- .../Widgets/SignupQuestionsWidget/TypeWidget.tsx | 4 ++-- .../SignupQuestionsWidget/{index.ts => common.ts} | 4 ---- src/models/SignupForm.ts | 2 +- src/pages/admin/signups/[id].tsx | 2 +- src/views/SignUpPage/FormUtils.tsx | 2 +- 8 files changed, 20 insertions(+), 23 deletions(-) rename src/components/Widgets/SignupQuestionsWidget/{index.ts => common.ts} (83%) diff --git a/src/components/Widgets/SignupQuestionsWidget/OptionsWidget.tsx b/src/components/Widgets/SignupQuestionsWidget/OptionsWidget.tsx index 50fcaee..f01bf59 100644 --- a/src/components/Widgets/SignupQuestionsWidget/OptionsWidget.tsx +++ b/src/components/Widgets/SignupQuestionsWidget/OptionsWidget.tsx @@ -1,8 +1,8 @@ import React from "react"; +import Checkbox from "@components/Widgets/Checkbox/Checkbox"; import { Question, InputProps, optionTypes, SignupQuestionError, -} from "./index"; -import Checkbox from "@components/Widgets/Checkbox/Checkbox"; +} from "./common"; interface OptionsWidgetProps { inputProps: InputProps; @@ -17,7 +17,7 @@ class OptionsWidget extends React.Component { // eslint-disable-next-line no-param-reassign questions[index].options = lst; onChange(questions); - } + }; handleTextOptionsChange = (questions: Question[], index: number) => (event) => { const { onChange } = this.props; @@ -25,7 +25,7 @@ class OptionsWidget extends React.Component { // eslint-disable-next-line no-param-reassign questions[index].options = val; onChange(questions); - } + }; handleIntegerOptionsChange = (questions: Question[], index: number) => (event) => { const { onChange } = this.props; @@ -41,7 +41,7 @@ class OptionsWidget extends React.Component { } onChange(questions); - } + }; handleRequiredChange = (questions: Question[], index: number) => (event) => { const { onChange } = this.props; @@ -50,7 +50,7 @@ class OptionsWidget extends React.Component { // eslint-disable-next-line no-param-reassign questions[index].required = val; onChange(questions); - } + }; requiredField() { const { inputProps } = this.props; diff --git a/src/components/Widgets/SignupQuestionsWidget/QuestionList.tsx b/src/components/Widgets/SignupQuestionsWidget/QuestionList.tsx index 4640116..61e8164 100644 --- a/src/components/Widgets/SignupQuestionsWidget/QuestionList.tsx +++ b/src/components/Widgets/SignupQuestionsWidget/QuestionList.tsx @@ -1,11 +1,11 @@ import React from "react"; import styled from "styled-components"; import { Draggable } from "react-beautiful-dnd"; -import { Question, InputProps } from "./index"; +import { colors } from "@theme/colors"; +import { Question, InputProps } from "./common"; import OptionsWidget from "./OptionsWidget"; import TypeWidget from "./TypeWidget"; import QuestionElement from "./Question"; -import { colors } from "@theme/colors"; const WidgetRow = styled.div` margin-bottom: 1rem; @@ -25,7 +25,7 @@ interface QuestionListProps { class QuestionList extends React.Component { renderTextWidget = ({ questions, value, index }: InputProps) => ( - ) + ); handleNameInputChange = (questions: Question[], index: number) => (event) => { const { onChange } = this.props; @@ -33,17 +33,17 @@ class QuestionList extends React.Component { // eslint-disable-next-line no-param-reassign questions[index].name = val; onChange(questions); - } + }; handleElementRemove = (questions: Question[], index: number) => () => { const { onChange } = this.props; const newQuestions = [...questions]; newQuestions.splice(index, 1); onChange(newQuestions); - } + }; renderQuestions() { - const { questions, onChange, placeholder } = this.props; + const { questions, onChange } = this.props; return questions.map((q, index) => { const nameWidgetProps = { value: q.name, type: "text", questions, index, diff --git a/src/components/Widgets/SignupQuestionsWidget/SignupQuestionsWidget.tsx b/src/components/Widgets/SignupQuestionsWidget/SignupQuestionsWidget.tsx index 05bf10b..63a67e7 100644 --- a/src/components/Widgets/SignupQuestionsWidget/SignupQuestionsWidget.tsx +++ b/src/components/Widgets/SignupQuestionsWidget/SignupQuestionsWidget.tsx @@ -2,10 +2,10 @@ import React from "react"; import styled from "styled-components"; import shortid from "shortid"; import { DragDropContext, Droppable } from "react-beautiful-dnd"; -import { Question } from "."; import colors from "@theme/colors"; -import QuestionList from "./QuestionList"; import AddIcon from "@components/AddIcon"; +import QuestionList from "./QuestionList"; +import { Question } from "./common"; const Widget = styled.div` & > button { @@ -21,6 +21,7 @@ const Widget = styled.div` margin-right: 8px !important; margin-top: -2px !important; } + } `; diff --git a/src/components/Widgets/SignupQuestionsWidget/TypeWidget.tsx b/src/components/Widgets/SignupQuestionsWidget/TypeWidget.tsx index bba9aee..c4d1e53 100644 --- a/src/components/Widgets/SignupQuestionsWidget/TypeWidget.tsx +++ b/src/components/Widgets/SignupQuestionsWidget/TypeWidget.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Question, InputProps, optionTypes } from "./index"; +import { Question, InputProps, optionTypes } from "./common"; interface TypeWidgetProps { inputProps: InputProps; @@ -13,7 +13,7 @@ class TypeWidget extends React.Component { // eslint-disable-next-line no-param-reassign questions[index].type = val; onChange(questions); - } + }; render() { const { inputProps } = this.props; diff --git a/src/components/Widgets/SignupQuestionsWidget/index.ts b/src/components/Widgets/SignupQuestionsWidget/common.ts similarity index 83% rename from src/components/Widgets/SignupQuestionsWidget/index.ts rename to src/components/Widgets/SignupQuestionsWidget/common.ts index 87d807f..4a3f18f 100644 --- a/src/components/Widgets/SignupQuestionsWidget/index.ts +++ b/src/components/Widgets/SignupQuestionsWidget/common.ts @@ -1,5 +1,3 @@ -import SignupQuestionsWidget from "./SignupQuestionsWidget"; - export interface Question { id: string; name: string; @@ -35,5 +33,3 @@ export const optionTypes = [ ]; export class SignupQuestionError extends Error { } - -export default SignupQuestionsWidget; diff --git a/src/models/SignupForm.ts b/src/models/SignupForm.ts index b3f4c07..49fee10 100644 --- a/src/models/SignupForm.ts +++ b/src/models/SignupForm.ts @@ -1,6 +1,6 @@ import axios from "axios"; import { getAuthHeader } from "@utils/auth"; -import { Question } from "@components/Widgets/SignupQuestionsWidget"; +import { Question } from "@components/Widgets/SignupQuestionsWidget/common"; import { Signup } from "./Signup"; const URL = `${process.env.NEXT_PUBLIC_API_URL}/signupForm/`; diff --git a/src/pages/admin/signups/[id].tsx b/src/pages/admin/signups/[id].tsx index f3c154a..507375a 100644 --- a/src/pages/admin/signups/[id].tsx +++ b/src/pages/admin/signups/[id].tsx @@ -7,7 +7,7 @@ import { SignupForm, createForm, getForm, updateForm, } from "@models/SignupForm"; import DatetimeWidget from "@components/Widgets/DatetimeWidget"; -import SignupQuestionsWidget from "@components/Widgets/SignupQuestionsWidget"; +import SignupQuestionsWidget from "@components/Widgets/SignupQuestionsWidget/SignupQuestionsWidget"; import MarkdownEditorWidget from "@components/Widgets/MarkdownEditorWidget"; import { buildValidationSchema } from "@views/SignUpPage/FormUtils"; diff --git a/src/views/SignUpPage/FormUtils.tsx b/src/views/SignUpPage/FormUtils.tsx index 488e0e8..71a1d62 100644 --- a/src/views/SignUpPage/FormUtils.tsx +++ b/src/views/SignUpPage/FormUtils.tsx @@ -1,4 +1,4 @@ -import { Question } from "@components/Widgets/SignupQuestionsWidget"; +import { Question } from "@components/Widgets/SignupQuestionsWidget/common"; import { SignupForm } from "@models/SignupForm"; import { EMAIL_REGEX } from "@utils/regexes"; import escapeRegExp from "lodash/escapeRegExp";