From 883c0556dde9c763cefa4d472a649cdbb5c99a20 Mon Sep 17 00:00:00 2001 From: bonamin Date: Mon, 21 Sep 2026 18:20:26 +0300 Subject: [PATCH] feat(ui): add pending/update toast state and shared floating-menu positioning Toast gains a pending/update lifecycle so async actions can show a single toast that transitions from in-progress to success/error, instead of firing a new one. Select's floating-menu placement logic is extracted into a shared helper so other dropdown-style components (MultiSelect) can reuse it. Co-Authored-By: Claude Sonnet 5 --- frontend/src/components/ui/Select.jsx | 8 ++--- frontend/src/components/ui/Toast.jsx | 44 +++++++++++++++++------- frontend/src/lib/floatingMenuPosition.js | 32 +++++++++++++++++ 3 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 frontend/src/lib/floatingMenuPosition.js diff --git a/frontend/src/components/ui/Select.jsx b/frontend/src/components/ui/Select.jsx index b1f1789..c60bc6e 100644 --- a/frontend/src/components/ui/Select.jsx +++ b/frontend/src/components/ui/Select.jsx @@ -16,6 +16,7 @@ import { useState, useRef, useEffect, Children, isValidElement } from 'react' import { createPortal } from 'react-dom' +import { computeFloatingMenuPosition } from '@/lib/floatingMenuPosition' // Parse React