import { makeStyles } from '@material-ui/core/styles' import classnames from 'classnames' import { useFormikContext, Form, Formik, Field as FormikField } from 'formik' import _ from 'lodash' import React, { useState, memo } from 'react' import * as Yup from 'yup' import PromptWhenDirty from 'src/components/PromptWhenDirty' import { Link, IconButton } from 'src/components/buttons' import { RadioGroup } from 'src/components/inputs/formik' import { Table, TableBody, TableRow, TableCell } from 'src/components/table' import { H4 } from 'src/components/typography' import { ReactComponent as EditIconDisabled } from 'src/styling/icons/action/edit/disabled.svg' import { ReactComponent as EditIcon } from 'src/styling/icons/action/edit/enabled.svg' import { ReactComponent as FalseIcon } from 'src/styling/icons/table/false.svg' import { ReactComponent as TrueIcon } from 'src/styling/icons/table/true.svg' import { booleanPropertiesTableStyles } from './BooleanPropertiesTable.styles' const useStyles = makeStyles(booleanPropertiesTableStyles) const BooleanCell = ({ name }) => { const { values } = useFormikContext() return values[name] === 'true' ? : } const BooleanPropertiesTable = memo( ({ title, disabled, data, elements, save, forcedEditing = false }) => { const initialValues = _.fromPairs(elements.map(it => [it.name, ''])) const schemaValidation = _.fromPairs( elements.map(it => [it.name, Yup.boolean().required()]) ) const [editing, setEditing] = useState(forcedEditing) const classes = useStyles() const innerSave = async value => { save(value) setEditing(false) } const innerCancel = () => setEditing(false) const radioButtonOptions = [ { display: 'Yes', code: 'true' }, { display: 'No', code: 'false' } ] return (

{title}

{editing ? (
Save Cancel
) : ( setEditing(true)}> {disabled ? : } )}
{elements.map((it, idx) => ( {it.display} {editing && ( )} {!editing && } ))}
) } ) export default BooleanPropertiesTable