import React, { memo, useState } from 'react'; import { useContext } from 'react'; import { DataContext } from '../context/Context'; import { ButtonIcon } from '../common/ButtonIcon'; import { useJsonForms } from '@jsonforms/react'; import { IconButton, Tooltip } from '@mui/material'; import ComponentWrapper from '../common/ComponentWrapper'; import { getFieldName } from '../permissions/getFieldName'; import { inputProps } from '../interface/inputfieldProps'; import LoaderInfo from '../common/LoaderInfo'; import { getComponentProps } from '../common/getComponentProps'; import _ from 'lodash'; const IconsButton = memo(function ({ uischema, path, schema, rootSchema, data, }: inputProps) { const [loading, setLoading] = useState(false); const { serviceProvider, pageName, permissions, theme, additionalIcons } = useContext(DataContext); const uischemaData = uischema?.config?.main; const ctx = useJsonForms(); const dynamicStyle = React.useMemo(() => { return serviceProvider( ctx, { onClick: uischema.config?.main?.styleFunction || 'getStyle', }, { event: { _reactName: 'onClick' }, path, }, ); }, [data, path]); const componentStyle = { ...uischema.config?.style, ...dynamicStyle }; const myIconComponent = ButtonIcon( data || uischemaData?.icon, uischema?.config, additionalIcons, ); const myStyle = uischemaData?.styleDefault ? theme.IconStyle : {}; const fieldName = getFieldName(path); const callServiceProvider = (event: any) => { serviceProvider(ctx, uischemaData, { event, path, ...uischemaData.additionalData, setLoading, }); }; return ( <> callServiceProvider(e)} onClick={(e) => callServiceProvider(e)} onPointerEnter={(event) => callServiceProvider(event)} onPointerLeave={(event) => callServiceProvider(event)} onFocus={(event) => callServiceProvider(event)} onBlur={(event) => callServiceProvider(event)} onMouseEnter={(event) => callServiceProvider(event)} > {myIconComponent} ); }); export default IconsButton;