import React, { useRef, useState } from 'react'; import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; import Popover from 'react-bootstrap/Popover'; import { SearchBox } from '@/_components/SearchBox'; // eslint-disable-next-line import/no-unresolved import * as Icons from '@tabler/icons-react'; import { VirtuosoGrid } from 'react-virtuoso'; import { Visibility } from './Visibility'; export const Icon = ({ value, onChange, onVisibilityChange, styleDefinition, component }) => { const [searchText, setSearchText] = useState(''); const [showPopOver, setPopOverVisibility] = useState(false); const iconList = useRef(Object.keys(Icons)); const darkMode = localStorage.getItem('darkMode') === 'true'; const searchIcon = (text) => { if (searchText === text) return; setSearchText(text); }; const filteredIcons = searchText === '' ? iconList.current : iconList.current.filter((icon) => icon?.toLowerCase().includes(searchText ? searchText.toLowerCase() : '')); const onIconSelect = (icon) => { onChange(icon); }; const eventPopover = () => { return (
{ { if (filteredIcons[index] === undefined || filteredIcons[index] === 'createReactComponent') return null; // eslint-disable-next-line import/namespace const IconElement = Icons[filteredIcons[index]]; return (
{ onIconSelect(filteredIcons[index]); setPopOverVisibility(false); }} >
); }} /> }
); }; function RenderIconPicker() { // eslint-disable-next-line import/namespace const IconElement = Icons?.[value] ?? Icons?.['IconHome2']; return ( <>
setPopOverVisibility(showing)} rootClose={true} overlay={eventPopover()} >
{String(value)}
); } return <>{RenderIconPicker()}; };