import { useContext } from 'react'
import { Button, Space } from 'antd'
import CheckIcon from '../../Icons/CheckIcon.jsx'
import XMarkIcon from '../../Icons/XMarkIcon.jsx'
import EditIcon from '../../Icons/EditIcon.jsx'
import KeyboardShortcut from './KeyboardShortcut.jsx'
import PropTypes from 'prop-types'
import { AuthContext } from '../context/AuthContext'
import { useActions } from '../context/ActionsContext'
import { getModelByName } from '../../../database/ObjectModels'
import { hasActionPermission } from '../../../database/permissions'
const EditButtons = ({
isEditing,
handleUpdate,
cancelEditing,
startEditing,
formValid,
disabled,
loading,
type,
requirePermission = true
}) => {
const { userProfile } = useContext(AuthContext)
const { currentObjectType } = useActions()
const modelType = type || currentObjectType
const model = modelType ? getModelByName(modelType) : null
const denied =
requirePermission && model
? !hasActionPermission(userProfile, model, 'edit')
: false
const editDisabled = disabled || denied
return isEditing ? (
{
if (!editDisabled && !loading && formValid) {
handleUpdate()
}
}}
>
}
type='primary'
onClick={handleUpdate}
loading={loading}
disabled={loading || !formValid || editDisabled}
/>
{
if (!disabled && !loading) {
cancelEditing()
}
}}
>
}
onClick={cancelEditing}
disabled={loading || disabled}
/>
) : (
{
if (!editDisabled && !loading) {
startEditing()
}
}}
>
}
onClick={startEditing}
loading={loading}
disabled={editDisabled || loading}
/>
)
}
EditButtons.propTypes = {
isEditing: PropTypes.bool.isRequired,
handleUpdate: PropTypes.func.isRequired,
cancelEditing: PropTypes.func.isRequired,
startEditing: PropTypes.func.isRequired,
formValid: PropTypes.bool.isRequired,
disabled: PropTypes.any,
loading: PropTypes.bool.isRequired,
type: PropTypes.string,
requirePermission: PropTypes.bool
}
export default EditButtons