From ff564704fec2ecaa7d4fa7e5cb867f6b5d349e02 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Thu, 20 Jul 2023 17:11:03 +0300 Subject: [PATCH] Prepare RSForm edit UI --- rsconcept/frontend/src/App.tsx | 1 + .../frontend/src/components/Common/Button.tsx | 28 +- .../src/components/Common/Checkbox.tsx | 10 +- .../src/components/Common/ConceptTab.tsx | 2 +- .../src/components/Common/DataTableThemed.tsx | 13 +- .../src/components/Common/Divider.tsx | 15 +- .../src/components/Common/Dropdown.tsx | 17 + .../src/components/Common/TextArea.tsx | 13 +- .../src/components/Common/TextInput.tsx | 7 +- rsconcept/frontend/src/components/Footer.tsx | 12 +- rsconcept/frontend/src/components/Icons.tsx | 171 +++++--- .../src/components/Navigation/Logo.tsx | 2 +- .../Navigation/NavigationButton.tsx | 2 +- .../components/Navigation/UserDropdown.tsx | 27 +- .../src/components/Navigation/UserMenu.tsx | 20 +- .../frontend/src/context/AuthContext.tsx | 4 +- .../frontend/src/context/RSFormContext.tsx | 41 +- .../frontend/src/context/ThemeContext.tsx | 1 + .../frontend/src/context/UsersContext.tsx | 4 +- .../frontend/src/hooks/useCheckExpression.ts | 32 ++ .../frontend/src/hooks/useClickedOutside.ts | 8 +- rsconcept/frontend/src/hooks/useDropdown.ts | 19 + rsconcept/frontend/src/hooks/useNewRSForm.ts | 2 +- .../frontend/src/hooks/useRSFormDetails.ts | 4 +- rsconcept/frontend/src/hooks/useRSForms.ts | 4 +- .../frontend/src/hooks/useUserProfile.ts | 4 +- rsconcept/frontend/src/index.css | 20 + rsconcept/frontend/src/models.ts | 265 ------------ rsconcept/frontend/src/pages/LoginPage.tsx | 2 +- rsconcept/frontend/src/pages/ManualsPage.tsx | 2 +- .../frontend/src/pages/RSFormCreatePage.tsx | 2 +- .../pages/RSFormPage/ConstituentEditor.tsx | 32 +- .../pages/RSFormPage/ConstituentsSideList.tsx | 116 ++++++ .../pages/RSFormPage/ConstituentsTable.tsx | 161 +++++--- .../src/pages/RSFormPage/ExpressionEditor.tsx | 130 +++++- .../src/pages/RSFormPage/ParsingResult.tsx | 21 + .../src/pages/RSFormPage/RSEditButton.tsx | 28 ++ .../src/pages/RSFormPage/RSFormCard.tsx | 6 +- .../src/pages/RSFormPage/RSFormStats.tsx | 2 +- .../src/pages/RSFormPage/RSFormTabs.tsx | 53 +-- .../src/pages/RSFormPage/StatusBar.tsx | 32 ++ .../src/pages/RSFormPage/TablistTools.tsx | 61 +++ .../src/pages/RSFormsPage/RSFormsTable.tsx | 2 +- .../frontend/src/pages/RSFormsPage/index.tsx | 2 +- rsconcept/frontend/src/pages/RegisterPage.tsx | 4 +- .../src/pages/UserProfilePage/UserProfile.tsx | 2 +- .../src/pages/UserProfilePage/index.tsx | 2 +- .../frontend/src/{ => utils}/backendAPI.ts | 13 +- .../frontend/src/{ => utils}/constants.ts | 0 rsconcept/frontend/src/utils/models.ts | 381 ++++++++++++++++++ rsconcept/frontend/src/utils/staticUI.ts | 253 ++++++++++++ rsconcept/frontend/src/{ => utils}/utils.tsx | 0 52 files changed, 1562 insertions(+), 493 deletions(-) create mode 100644 rsconcept/frontend/src/components/Common/Dropdown.tsx create mode 100644 rsconcept/frontend/src/hooks/useCheckExpression.ts create mode 100644 rsconcept/frontend/src/hooks/useDropdown.ts delete mode 100644 rsconcept/frontend/src/models.ts create mode 100644 rsconcept/frontend/src/pages/RSFormPage/ConstituentsSideList.tsx create mode 100644 rsconcept/frontend/src/pages/RSFormPage/ParsingResult.tsx create mode 100644 rsconcept/frontend/src/pages/RSFormPage/RSEditButton.tsx create mode 100644 rsconcept/frontend/src/pages/RSFormPage/StatusBar.tsx create mode 100644 rsconcept/frontend/src/pages/RSFormPage/TablistTools.tsx rename rsconcept/frontend/src/{ => utils}/backendAPI.ts (94%) rename rsconcept/frontend/src/{ => utils}/constants.ts (100%) create mode 100644 rsconcept/frontend/src/utils/models.ts create mode 100644 rsconcept/frontend/src/utils/staticUI.ts rename rsconcept/frontend/src/{ => utils}/utils.tsx (100%) diff --git a/rsconcept/frontend/src/App.tsx b/rsconcept/frontend/src/App.tsx index cab942af..facc4913 100644 --- a/rsconcept/frontend/src/App.tsx +++ b/rsconcept/frontend/src/App.tsx @@ -22,6 +22,7 @@ function App() { className='mt-[4rem] text-sm' autoClose={3000} draggable={false} + pauseOnFocusLoss={false} limit={5} />
diff --git a/rsconcept/frontend/src/components/Common/Button.tsx b/rsconcept/frontend/src/components/Common/Button.tsx index 8a64e29d..d018df66 100644 --- a/rsconcept/frontend/src/components/Common/Button.tsx +++ b/rsconcept/frontend/src/components/Common/Button.tsx @@ -1,4 +1,7 @@ +import { MouseEventHandler } from 'react' + interface ButtonProps { + id?: string text?: string icon?: React.ReactNode tooltip?: string @@ -6,26 +9,31 @@ interface ButtonProps { dense?: boolean loading?: boolean colorClass?: string - onClick?: () => void + borderClass?: string + onClick?: MouseEventHandler | undefined } -function Button({text, icon, dense=false, disabled=false, tooltip, colorClass, loading, onClick}: ButtonProps) { - const padding = dense ? 'px-1 py-1' : 'px-3 py-2 ' +function Button({id, text, icon, tooltip, + dense, disabled, + colorClass, borderClass='border rounded', + loading, onClick +}: ButtonProps) { + const padding = dense ? 'px-1' : 'px-3 py-2' const cursor = 'disabled:cursor-not-allowed ' + (loading ? 'cursor-progress ': 'cursor-pointer ') - const baseColor = 'dark:disabled:text-gray-800 disabled:text-gray-400 bg-gray-200 hover:bg-gray-300 dark:bg-gray-500 dark:hover:bg-gray-400' - const color = baseColor + ' ' + (colorClass || 'text-gray-600 dark:text-zinc-50') + const baseColor = 'dark:disabled:text-zinc-400 disabled:text-gray-400 bg-gray-100 hover:bg-gray-300 dark:bg-gray-600 dark:hover:bg-gray-400' + const color = baseColor + ' ' + (colorClass || 'text-gray-500 dark:text-zinc-200') return ( - ) } diff --git a/rsconcept/frontend/src/components/Common/Checkbox.tsx b/rsconcept/frontend/src/components/Common/Checkbox.tsx index c08a753c..8e928d60 100644 --- a/rsconcept/frontend/src/components/Common/Checkbox.tsx +++ b/rsconcept/frontend/src/components/Common/Checkbox.tsx @@ -1,8 +1,8 @@ import Label from './Label'; -interface CheckboxProps { - id: string - label: string +export interface CheckboxProps { + id?: string + label?: string required?: boolean disabled?: boolean widthClass?: string @@ -20,11 +20,11 @@ function Checkbox({id, required, disabled, label, widthClass='w-full', value, on checked={value} onChange={onChange} /> -