From 4adc6a50137dd5ac5dd2b5bd61e8a139b6d4d063 Mon Sep 17 00:00:00 2001 From: Jeff Sieu Date: Sat, 8 Oct 2022 18:06:33 +0800 Subject: [PATCH] [questions][ui] add similar question card --- .../questions/ContributeQuestionCard.tsx | 19 ++- ...Modal.tsx => ContributeQuestionDialog.tsx} | 47 ++++--- .../questions/ContributeQuestionForm.tsx | 68 ++++++---- ...dDraftModal.tsx => DiscardDraftDialog.tsx} | 26 ++-- .../questions/QuestionOverviewCard.tsx | 72 ----------- .../questions/card/QuestionCard.tsx | 122 ++++++++++++++++++ .../questions/card/QuestionOverviewCard.tsx | 28 ++++ .../questions/card/SimilarQuestionCard.tsx | 33 +++++ apps/portal/src/pages/questions/index.tsx | 2 +- 9 files changed, 278 insertions(+), 139 deletions(-) rename apps/portal/src/components/questions/{ContributeQuestionModal.tsx => ContributeQuestionDialog.tsx} (70%) rename apps/portal/src/components/questions/{DiscardDraftModal.tsx => DiscardDraftDialog.tsx} (87%) delete mode 100644 apps/portal/src/components/questions/QuestionOverviewCard.tsx create mode 100644 apps/portal/src/components/questions/card/QuestionCard.tsx create mode 100644 apps/portal/src/components/questions/card/QuestionOverviewCard.tsx create mode 100644 apps/portal/src/components/questions/card/SimilarQuestionCard.tsx diff --git a/apps/portal/src/components/questions/ContributeQuestionCard.tsx b/apps/portal/src/components/questions/ContributeQuestionCard.tsx index bd6c4d78..951510b8 100644 --- a/apps/portal/src/components/questions/ContributeQuestionCard.tsx +++ b/apps/portal/src/components/questions/ContributeQuestionCard.tsx @@ -10,7 +10,7 @@ import { } from '@heroicons/react/24/outline'; import { Button, TextInput } from '@tih/ui'; -import ContributeQuestionModal from './ContributeQuestionModal'; +import ContributeQuestionDialog from './ContributeQuestionDialog'; export type ContributeQuestionData = { company: string; @@ -48,7 +48,12 @@ export default function ContributeQuestionCard({ onSubmit, }: ContributeQuestionCardProps) { const { register, handleSubmit } = useForm(); - const [isOpen, setOpen] = useState(false); + const [showDraftDialog, setShowDraftDialog] = useState(false); + + const handleDraftDialogCancel = () => { + setShowDraftDialog(false); + }; + return ( <>
setOpen(true)} + onClick={() => setShowDraftDialog(true)} />
- - + ); } diff --git a/apps/portal/src/components/questions/ContributeQuestionModal.tsx b/apps/portal/src/components/questions/ContributeQuestionDialog.tsx similarity index 70% rename from apps/portal/src/components/questions/ContributeQuestionModal.tsx rename to apps/portal/src/components/questions/ContributeQuestionDialog.tsx index 8240fb71..211a78a9 100644 --- a/apps/portal/src/components/questions/ContributeQuestionModal.tsx +++ b/apps/portal/src/components/questions/ContributeQuestionDialog.tsx @@ -1,39 +1,38 @@ -import type { Dispatch, SetStateAction } from 'react'; import { Fragment, useState } from 'react'; import { Dialog, Transition } from '@headlessui/react'; import ContributeQuestionForm from './ContributeQuestionForm'; -import DiscardDraftModal from './DiscardDraftModal'; +import DiscardDraftDialog from './DiscardDraftDialog'; -export type ContributeQuestionModalProps = { - contributeState: boolean; - setContributeState: Dispatch>; +export type ContributeQuestionDialogProps = { + onCancel: () => void; + show: boolean; }; -export default function ContributeQuestionModal({ - contributeState, - setContributeState, -}: ContributeQuestionModalProps) { - const [isDiscardOpen, setIsDiscardOpen] = useState(false); +export default function ContributeQuestionDialog({ + show, + onCancel, +}: ContributeQuestionDialogProps) { + const [showDiscardDialog, setShowDiscardDialog] = useState(false); - const handleDiscardDraft = () => { - // eslint-disable-next-line no-console - console.log('discarded draft'); - setContributeState(false); - setIsDiscardOpen(false); + const handleDraftDiscard = () => { + setShowDiscardDialog(false); + onCancel(); }; - const handleCancelDiscard = () => { - setIsDiscardOpen(false); + const handleDiscardCancel = () => { + setShowDiscardDialog(false); }; return (
- + setContributeState(false)}> + onClose={() => { + // Todo: save state + }}>
setIsDiscardOpen(true)} + onDiscard={() => setShowDiscardDialog(true)} onSubmit={(data) => { // eslint-disable-next-line no-console console.log(data); @@ -81,10 +80,10 @@ export default function ContributeQuestionModal({
- +
); } diff --git a/apps/portal/src/components/questions/ContributeQuestionForm.tsx b/apps/portal/src/components/questions/ContributeQuestionForm.tsx index a35e1335..bb974710 100644 --- a/apps/portal/src/components/questions/ContributeQuestionForm.tsx +++ b/apps/portal/src/components/questions/ContributeQuestionForm.tsx @@ -7,8 +7,15 @@ import { QuestionMarkCircleIcon, UserIcon, } from '@heroicons/react/24/outline'; -import { Button, HorizontalDivider, TextArea, TextInput } from '@tih/ui'; +import { + Button, + Collapsible, + HorizontalDivider, + TextArea, + TextInput, +} from '@tih/ui'; +import SimilarQuestionCard from './card/SimilarQuestionCard'; import Checkbox from './ui-patch/Checkbox'; export type ContributeQuestionData = { @@ -50,7 +57,7 @@ export default function ContributeQuestionForm({ return (