diff --git a/ui/src/components/InlineEntitySelector.tsx b/ui/src/components/InlineEntitySelector.tsx index 6897f881..ca2c5402 100644 --- a/ui/src/components/InlineEntitySelector.tsx +++ b/ui/src/components/InlineEntitySelector.tsx @@ -158,10 +158,7 @@ export const InlineEntitySelector = forwardRef -
+
{filteredOptions.length === 0 ? (

{emptyMessage}

) : ( @@ -173,7 +170,7 @@ export const InlineEntitySelector = forwardRef setHighlightedIndex(index)} diff --git a/ui/src/components/NewIssueDialog.tsx b/ui/src/components/NewIssueDialog.tsx index 6b872c28..7e16559f 100644 --- a/ui/src/components/NewIssueDialog.tsx +++ b/ui/src/components/NewIssueDialog.tsx @@ -522,6 +522,18 @@ export function NewIssueDialog() { : "sm:max-w-lg" )} onKeyDown={handleKeyDown} + onPointerDownOutside={(event) => { + // Radix Dialog's modal DismissableLayer calls preventDefault() on + // pointerdown events that originate outside the Dialog DOM tree. + // Popover portals render at the body level (outside the Dialog), so + // touch events on popover content get their default prevented — which + // kills scroll gesture recognition on mobile. Telling Radix "this + // event is handled" skips that preventDefault, restoring touch scroll. + const target = event.detail.originalEvent.target as HTMLElement | null; + if (target?.closest("[data-radix-popper-content-wrapper]")) { + event.preventDefault(); + } + }} > {/* Header bar */}