From 9e19290566d2a976e1b9378d937593f2ded99f23 Mon Sep 17 00:00:00 2001
From: Ivan <8611739+IRBorisov@users.noreply.github.com>
Date: Sun, 13 Apr 2025 22:29:23 +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