import React, {FC, useMemo, useRef, useState} from "react"; import {useOpenPopupsCount} from "./hooks"; import {getPopupStackDimensionCalculators} from "./ulitilies"; import {PopupWindow} from "../PopupWindow"; import {__} from "../globals"; import {SelectMenuPopupWindowState} from "./atoms"; import {MultiSelectList} from "./fields/MultiSelectList"; type SelectMenuPopupWindowProps = { data: SelectMenuPopupWindowState, index: number, } export const SelectMenuPopupWindow: FC = ({data, index}) => { const popupsCount = useOpenPopupsCount() const stackDimensions = getPopupStackDimensionCalculators(popupsCount - index) const [selectedValues, setSelectedValues] = useState(data.context.data.selectedValues) const [isOpen, setIsOpen] = useState(true) const hasClosedRef = useRef(false) const closeWithAnimation = (closeData: Parameters[0], shouldAnimate: boolean = true) => { if (hasClosedRef.current) { return } hasClosedRef.current = true if (shouldAnimate) { setIsOpen(false) data.onClose(closeData, { deferWindowRemoval: true, }) return } data.onClose(closeData) } return [ { id: 1, title: data.context.data.window?.title, description: data.context.data.window?.description, content: ({height}) => { const nonListReservedHeight = 100//0//176 const menuMaxHeight = Math.max(120, height - nonListReservedHeight) return
{ setSelectedValues(prev => [...prev, option.id]) }} onRemovedValue={({id}) => { setSelectedValues(prev => prev.filter(value => value !== id)) }} /> {/* Placeholder for select menu content - to be implemented */}
}, showBottomNavigation: true, primaryBottom: () => { return { label: __('Done'), onClick: () => { closeWithAnimation({ status: 'success', values: selectedValues }) } } } } ], [selectedValues, setSelectedValues, data])} screenId={1} defaultScreenId={1} setCurrentScreenId={() => {}} isOpen={isOpen} onClose={(context) => closeWithAnimation({status: context === 'success' ? 'success' : 'fail'}, false)} customTop={stackDimensions.top} customWidth={stackDimensions.width} /> }