From ea89f90edb6838c0b5d3bb75c5cb16073fc426e9 Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Tue, 28 Jul 2026 00:17:40 -0400 Subject: [PATCH] fix label picker keep open wnhe something chosen --- src/views/components/BaseOptionPicker.jsx | 11 ++++++++++- src/views/components/LabelsPickerField.jsx | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/views/components/BaseOptionPicker.jsx b/src/views/components/BaseOptionPicker.jsx index bac0434..c445fd2 100644 --- a/src/views/components/BaseOptionPicker.jsx +++ b/src/views/components/BaseOptionPicker.jsx @@ -24,8 +24,17 @@ const BaseOptionPicker = ({ getTriggerText, onClear, menuFooter, + open: openProp, + onOpenChange, }) => { - const [isOpen, setIsOpen] = useState(false) + const [internalOpen, setInternalOpen] = useState(false) + const isControlled = openProp !== undefined + const isOpen = isControlled ? openProp : internalOpen + const setIsOpen = value => { + if (!isControlled) setInternalOpen(value) + const nextValue = typeof value === 'function' ? value(isOpen) : value + onOpenChange?.(nextValue) + } const buttonRef = useRef(null) useEffect(() => { diff --git a/src/views/components/LabelsPickerField.jsx b/src/views/components/LabelsPickerField.jsx index ff27a4a..499640c 100644 --- a/src/views/components/LabelsPickerField.jsx +++ b/src/views/components/LabelsPickerField.jsx @@ -12,6 +12,7 @@ const LabelsPickerField = ({ emptyDisplay = 'icon-text', }) => { const [createOpen, setCreateOpen] = useState(false) + const [pickerOpen, setPickerOpen] = useState(false) const options = labels.map(label => ({ id: label.id, @@ -27,6 +28,8 @@ const LabelsPickerField = ({ values={values} onValuesChange={onChange} onClear={onClear} + open={pickerOpen} + onOpenChange={setPickerOpen} emptyDisplay={emptyDisplay} emptyLabel='Labels' getItemValue={item => item.id} @@ -55,6 +58,7 @@ const LabelsPickerField = ({ startDecorator={} onClick={e => { e.stopPropagation() + setPickerOpen(false) setCreateOpen(true) }} sx={{ width: '100%', justifyContent: 'flex-start' }}