Skip to content

Commit c56ff7a

Browse files
committed
fix(react): restore useEffect for help/invite modals, combobox index reset
- Help modal: restore useEffect watching `open` for form reset on programmatic open (same Radix onOpenChange pattern as other modals) - Invite modal: restore useEffect watching `open` to clear error on programmatic open - Combobox: restore useEffect to reset highlightedIndex when filtered options shrink (prevents stale index from reappearing when options grow) - Remove no-op handleOpenChange wrappers in rename-document and edit-knowledge-base modals (now pure pass-throughs after useEffect fix)
1 parent 350f113 commit c56ff7a

File tree

5 files changed

+26
-30
lines changed

5 files changed

+26
-30
lines changed

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/rename-document-modal/rename-document-modal.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,6 @@ export function RenameDocumentModal({
4646
}
4747
}, [open, initialName])
4848

49-
/** Resets form state when the modal opens and forwards the open state change */
50-
const handleOpenChange = (newOpen: boolean) => {
51-
onOpenChange(newOpen)
52-
}
53-
5449
const handleSubmit = async (e: React.FormEvent) => {
5550
e.preventDefault()
5651

@@ -81,7 +76,7 @@ export function RenameDocumentModal({
8176
}
8277

8378
return (
84-
<Modal open={open} onOpenChange={handleOpenChange}>
79+
<Modal open={open} onOpenChange={onOpenChange}>
8580
<ModalContent size='sm'>
8681
<ModalHeader>Rename Document</ModalHeader>
8782
<form onSubmit={handleSubmit} className='flex min-h-0 flex-1 flex-col'>

apps/sim/app/workspace/[workspaceId]/knowledge/components/edit-knowledge-base-modal/edit-knowledge-base-modal.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,6 @@ export function EditKnowledgeBaseModal({
8181
}
8282
}, [open, initialName, initialDescription, reset])
8383

84-
/** Forwards the open state change to the parent */
85-
const handleOpenChange = (newOpen: boolean) => {
86-
onOpenChange(newOpen)
87-
}
88-
8984
const onSubmit = async (data: FormValues) => {
9085
setIsSubmitting(true)
9186
setError(null)
@@ -102,7 +97,7 @@ export function EditKnowledgeBaseModal({
10297
}
10398

10499
return (
105-
<Modal open={open} onOpenChange={handleOpenChange}>
100+
<Modal open={open} onOpenChange={onOpenChange}>
106101
<ModalContent size='sm'>
107102
<ModalHeader>Edit Knowledge Base</ModalHeader>
108103

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/help-modal/help-modal.tsx

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,11 @@ export function HelpModal({ open, onOpenChange, workflowId, workspaceId }: HelpM
103103
})
104104
}, [reset])
105105

106-
/**
107-
* Wrap onOpenChange to reset state when the modal opens
108-
*/
109-
const handleOpenChange = useCallback(
110-
(newOpen: boolean) => {
111-
if (newOpen) {
112-
resetModalState()
113-
}
114-
onOpenChange(newOpen)
115-
},
116-
[onOpenChange, resetModalState]
117-
)
106+
useEffect(() => {
107+
if (open) {
108+
resetModalState()
109+
}
110+
}, [open, resetModalState])
118111

119112
/**
120113
* Fix z-index for popover/dropdown when inside modal
@@ -426,11 +419,11 @@ export function HelpModal({ open, onOpenChange, workflowId, workspaceId }: HelpM
426419
* Handle modal close action
427420
*/
428421
const handleClose = useCallback(() => {
429-
handleOpenChange(false)
430-
}, [handleOpenChange])
422+
onOpenChange(false)
423+
}, [onOpenChange])
431424

432425
return (
433-
<Modal open={open} onOpenChange={handleOpenChange}>
426+
<Modal open={open} onOpenChange={onOpenChange}>
434427
<ModalContent size='md'>
435428
<ModalHeader>Help &amp; Support</ModalHeader>
436429

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ export function InviteModal({ open, onOpenChange, workspaceName }: InviteModalPr
8585
const isRemovingMember = removeMember.isPending
8686
const isRemovingInvitation = cancelInvitation.isPending
8787

88+
useEffect(() => {
89+
if (open) {
90+
setErrorMessage(null)
91+
}
92+
}, [open])
93+
8894
useEffect(() => {
8995
const intervalsRef = cooldownIntervalsRef.current
9096
return () => {
@@ -459,9 +465,7 @@ export function InviteModal({ open, onOpenChange, workspaceName }: InviteModalPr
459465
<Modal
460466
open={open}
461467
onOpenChange={(newOpen: boolean) => {
462-
if (newOpen) {
463-
setErrorMessage(null)
464-
} else {
468+
if (!newOpen) {
465469
resetState()
466470
}
467471
onOpenChange(newOpen)

apps/sim/components/emcn/components/combobox/combobox.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,15 @@ const Combobox = memo(
465465
const effectiveHighlightedIndex =
466466
highlightedIndex >= 0 && highlightedIndex < filteredOptions.length ? highlightedIndex : -1
467467

468+
/**
469+
* Reset highlighted index when filtered options shrink below it
470+
*/
471+
useEffect(() => {
472+
if (highlightedIndex >= 0 && highlightedIndex >= filteredOptions.length) {
473+
setHighlightedIndex(-1)
474+
}
475+
}, [filteredOptions.length, highlightedIndex])
476+
468477
/**
469478
* Scroll highlighted option into view
470479
*/

0 commit comments

Comments
 (0)