import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import classNames from 'classnames';
/* !- Actions */
import { toggleView, switchView } from './actions';
/* !- Elements */
import IconView from '../icon/mui/av/web';
/* !- Constants */
/* !- Types */
const defaultProps = {
children: ,
className: "pointer inline-block button w-auto shadow",
classNameActive: "bg-blue-dark border border-2 border-white fill-white",
classNameInactive: "outline",
recursive: false,
}
type PropTypes =
{
id: string,
group?: string,
} & typeof defaultProps;
const ViewButtonComponent = ({
id,
group,
children,
className,
classNameActive,
classNameInactive,
recursive,
}: PropTypes) =>
{
const status = useSelector((state) =>
{
const viewGroup = state.view.groups[group || state.view.active] || [];
const view = viewGroup.find(view => view.id === id) || {};
return !!view.status;
});
const dispatch = useDispatch();
const buttonClassName = classNames({
'pointer': true,
[className]: true,
[classNameInactive]: !status,
[classNameActive]: status
});
const onClickHandler = () =>
recursive ?
dispatch(switchView(id, group)) : dispatch(toggleView(id, null, group));
return (
{children}
);
};
ViewButtonComponent.defaultProps = defaultProps;
export default ViewButtonComponent;