From 7e0c59709dd1c2198f817b7acb4e4462d1f07574 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Sun, 13 Apr 2025 22:28:28 +0300 Subject: [PATCH] M: Minor UI fixes and refactoring --- rsconcept/frontend/src/app/navigation/user-menu.tsx | 2 +- rsconcept/frontend/src/components/control/button.tsx | 2 +- .../frontend/src/components/dropdown/dropdown-button.tsx | 2 +- rsconcept/frontend/src/components/dropdown/use-dropdown.ts | 5 +++-- .../frontend/src/components/{ui => input}/combo-box.tsx | 5 ++--- .../frontend/src/components/{ui => input}/combo-multi.tsx | 5 ++--- rsconcept/frontend/src/components/{ui => input}/select.tsx | 0 .../src/features/help/pages/manuals-page/topics-dropdown.tsx | 1 - .../frontend/src/features/library/components/menu-role.tsx | 2 -- .../src/features/library/components/select-library-item.tsx | 2 +- .../src/features/library/components/select-version.tsx | 2 +- .../src/features/oss/components/select-operation.tsx | 2 +- .../src/features/oss/pages/oss-page/menu-edit-oss.tsx | 1 - .../frontend/src/features/oss/pages/oss-page/menu-main.tsx | 1 - .../src/features/rsform/components/select-constituenta.tsx | 2 +- .../src/features/rsform/components/select-cst-type.tsx | 2 +- .../src/features/rsform/components/select-multi-grammeme.tsx | 2 +- .../rsform/dialogs/dlg-cst-template/tab-template.tsx | 2 +- .../rsform-page/editor-constituenta/form-constituenta.tsx | 2 +- .../pages/rsform-page/editor-term-graph/select-coloring.tsx | 2 +- .../features/rsform/pages/rsform-page/menu-edit-schema.tsx | 2 -- .../src/features/rsform/pages/rsform-page/menu-main.tsx | 1 - .../frontend/src/features/users/components/select-user.tsx | 2 +- 23 files changed, 20 insertions(+), 29 deletions(-) rename rsconcept/frontend/src/components/{ui => input}/combo-box.tsx (96%) rename rsconcept/frontend/src/components/{ui => input}/combo-multi.tsx (97%) rename rsconcept/frontend/src/components/{ui => input}/select.tsx (100%) diff --git a/rsconcept/frontend/src/app/navigation/user-menu.tsx b/rsconcept/frontend/src/app/navigation/user-menu.tsx index 5ff80daa..49db1775 100644 --- a/rsconcept/frontend/src/app/navigation/user-menu.tsx +++ b/rsconcept/frontend/src/app/navigation/user-menu.tsx @@ -13,7 +13,7 @@ export function UserMenu() { const router = useConceptNavigation(); const menu = useDropdown(); return ( -
+
}> router.push({ path: urls.login, force: true })} diff --git a/rsconcept/frontend/src/components/control/button.tsx b/rsconcept/frontend/src/components/control/button.tsx index 7a79e8a9..c130874b 100644 --- a/rsconcept/frontend/src/components/control/button.tsx +++ b/rsconcept/frontend/src/components/control/button.tsx @@ -43,7 +43,7 @@ export function Button({ 'bg-secondary text-secondary-foreground cc-hover cc-animate-color', dense ? 'px-1' : 'px-3 py-1', loading ? 'cursor-progress' : 'cursor-pointer', - noOutline ? 'outline-hidden' : 'focus-outline', + noOutline ? 'outline-hidden focus-visible:bg-selected' : 'focus-outline', !noBorder && 'border rounded-sm', className )} diff --git a/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx b/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx index 244a7b89..54ebc53b 100644 --- a/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx +++ b/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx @@ -37,7 +37,7 @@ export function DropdownButton({ 'px-3 py-1 inline-flex items-center gap-2', 'text-left text-sm text-ellipsis whitespace-nowrap', 'disabled:cc-controls disabled:opacity-75', - 'cc-animate-background', + 'focus-outline cc-animate-background', !!onClick ? 'cc-hover cursor-pointer disabled:cursor-auto' : 'bg-secondary text-secondary-foreground', className )} diff --git a/rsconcept/frontend/src/components/dropdown/use-dropdown.ts b/rsconcept/frontend/src/components/dropdown/use-dropdown.ts index 0364a66c..4a2d8d81 100644 --- a/rsconcept/frontend/src/components/dropdown/use-dropdown.ts +++ b/rsconcept/frontend/src/components/dropdown/use-dropdown.ts @@ -7,9 +7,10 @@ export function useDropdown() { const ref = useRef(null); function handleBlur(event: React.FocusEvent) { - if (!ref.current?.contains(event.relatedTarget as Node)) { - setIsOpen(false); + if (ref.current?.contains(event.relatedTarget as Node)) { + return; } + setIsOpen(false); } return { diff --git a/rsconcept/frontend/src/components/ui/combo-box.tsx b/rsconcept/frontend/src/components/input/combo-box.tsx similarity index 96% rename from rsconcept/frontend/src/components/ui/combo-box.tsx rename to rsconcept/frontend/src/components/input/combo-box.tsx index 45b21b46..d764ddfc 100644 --- a/rsconcept/frontend/src/components/ui/combo-box.tsx +++ b/rsconcept/frontend/src/components/input/combo-box.tsx @@ -5,11 +5,10 @@ import { ChevronDownIcon } from 'lucide-react'; import { IconRemove } from '../icons'; import { type Styling } from '../props'; +import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../ui/command'; +import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover'; import { cn } from '../utils'; -import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from './command'; -import { Popover, PopoverContent, PopoverTrigger } from './popover'; - interface ComboBoxProps