import React, { FC, useCallback, useEffect, useRef, useState } from 'react'; import AlphaPicker from '../alphaPicker/alphaPicker'; import { ViewQuerySettings } from '../../types/interface'; interface AlphaPickerContainerProps { viewQuerySettings: ViewQuerySettings; setViewQuerySettings: React.Dispatch>; } const AlphaPickerContainer: FC = ({ viewQuerySettings, setViewQuerySettings }) => { const [ alphaPicker, setAlphaPicker ] = useState(); const element = useRef(null); alphaPicker?.updateControls(viewQuerySettings); const onAlphaPickerChange = useCallback((e) => { const newValue = (e as CustomEvent).detail.value; let updatedValue: React.SetStateAction; if (newValue === '#') { updatedValue = { NameLessThan: 'A', NameStartsWith: undefined }; } else { updatedValue = { NameLessThan: undefined, NameStartsWith: newValue }; } setViewQuerySettings((prevState) => ({ ...prevState, StartIndex: 0, ...updatedValue })); }, [setViewQuerySettings]); useEffect(() => { const alphaPickerElement = element.current; setAlphaPicker(new AlphaPicker({ element: alphaPickerElement, valueChangeEvent: 'click' })); if (alphaPickerElement) { alphaPickerElement.addEventListener('alphavaluechanged', onAlphaPickerChange); } return () => { alphaPickerElement?.removeEventListener('alphavaluechanged', onAlphaPickerChange); }; }, [onAlphaPickerChange]); return (
); }; export default AlphaPickerContainer;