import React from "react"; import { useTranslation } from "react-i18next"; import { ReactSVG } from "react-svg"; import { StyledViewSelector, IconWrapper } from "./ViewSelector.styled"; import { TViewSelectorOption, ViewSelectorProps } from "./ViewSelector.types"; const ViewSelector = ({ isDisabled, isFilter, viewSettings, viewAs, onChangeView, ...rest }: ViewSelectorProps) => { const { t } = useTranslation("Common"); const onChangeViewHandler = (e: React.MouseEvent) => { if (isDisabled) return; const target = e.target as HTMLDivElement; const el = target.closest(".view-selector-icon") as HTMLDivElement; if (!el) return; const view = el.dataset?.view; if (view !== viewAs && view) { const option = viewSettings.find( (setting: TViewSelectorOption) => view === setting.value, ); if (option) option.callback?.(); onChangeView(view); } }; const lastIndx = viewSettings && viewSettings.length - 1; const renderFewIconView = () => { return viewSettings.map((el: TViewSelectorOption, indx: number) => { const { value, icon, id } = el; return ( ); }); }; const renderOneIconView = () => { const element = viewSettings.find( (el: TViewSelectorOption) => el.value !== viewAs, ); if (element) { const { value, icon } = element; return ( ); } return null; }; return ( {viewSettings ? isFilter ? renderOneIconView() : renderFewIconView() : null} ); }; export { ViewSelector };