fix: [ui] date-picker, date-range-picker, searchable-select, multi-select-combobox, time-picker 개선

This commit is contained in:
유병철
2026-03-16 17:45:23 +09:00
parent e346aa0a02
commit 9b6c84c4c8
5 changed files with 44 additions and 6 deletions

View File

@@ -163,6 +163,16 @@ function DatePicker({
align={align}
side={side}
sideOffset={sideOffset}
onPointerDownOutside={(e) => {
// Dialog cascade 방지 (Portal 렌더링으로 인한 모달 닫힘 방지)
// 단, Popover는 수동으로 닫기
e.preventDefault();
setOpen(false);
}}
onInteractOutside={(e) => {
e.preventDefault();
setOpen(false);
}}
>
<div className="p-3">
{showMonthPicker ? (

View File

@@ -199,8 +199,14 @@ function DateRangePicker({
<PopoverContent
className="w-auto p-0"
align={align}
onPointerDownOutside={(e) => e.preventDefault()}
onInteractOutside={(e) => e.preventDefault()}
onPointerDownOutside={(e) => {
e.preventDefault();
setOpen(false);
}}
onInteractOutside={(e) => {
e.preventDefault();
setOpen(false);
}}
>
<div className="p-3">
{showMonthPicker ? (

View File

@@ -88,8 +88,14 @@ export function MultiSelectCombobox({
<PopoverContent
className="w-[200px] p-0"
align="start"
onPointerDownOutside={(e) => e.preventDefault()}
onInteractOutside={(e) => e.preventDefault()}
onPointerDownOutside={(e) => {
e.preventDefault();
setOpen(false);
}}
onInteractOutside={(e) => {
e.preventDefault();
setOpen(false);
}}
>
<Command>
<CommandInput placeholder={searchPlaceholder} />

View File

@@ -191,6 +191,16 @@ export function SearchableSelect({
<PopoverContent
className="w-[--radix-popover-trigger-width] p-0"
align="start"
onPointerDownOutside={(e) => {
// Dialog cascade 방지 (Portal 렌더링으로 인한 모달 닫힘 방지)
// 단, Popover는 수동으로 닫기
e.preventDefault();
handleOpenChange(false);
}}
onInteractOutside={(e) => {
e.preventDefault();
handleOpenChange(false);
}}
>
<Command shouldFilter={!isServerSearch}>
<CommandInput

View File

@@ -138,8 +138,14 @@ function TimePicker({
<PopoverContent
className="w-auto p-0"
align="start"
onPointerDownOutside={(e) => e.preventDefault()}
onInteractOutside={(e) => e.preventDefault()}
onPointerDownOutside={(e) => {
e.preventDefault();
setOpen(false);
}}
onInteractOutside={(e) => {
e.preventDefault();
setOpen(false);
}}
>
<div className="p-3">
{/* 헤더 */}