feat: add read only fields to editable card
This commit is contained in:
parent
af6fefa920
commit
a64dac0b40
4 changed files with 71 additions and 26 deletions
|
|
@ -3,7 +3,7 @@ var db = require('./db')
|
||||||
exports.up = function (next) {
|
exports.up = function (next) {
|
||||||
var sql = [
|
var sql = [
|
||||||
`ALTER TABLE customers
|
`ALTER TABLE customers
|
||||||
ADD COLUMN subscriber_info_override VERIFICATION_TYPE,
|
ADD COLUMN subscriber_info_override VERIFICATION_TYPE NOT NULL DEFAULT 'automatic',
|
||||||
ADD COLUMN subscriber_info_override_by UUID,
|
ADD COLUMN subscriber_info_override_by UUID,
|
||||||
ADD COLUMN subscriber_info_override_at TIMESTAMPTZ
|
ADD COLUMN subscriber_info_override_at TIMESTAMPTZ
|
||||||
`,
|
`,
|
||||||
|
|
|
||||||
|
|
@ -353,7 +353,8 @@ const CustomerData = ({
|
||||||
customerDataElements.smsData.push({
|
customerDataElements.smsData.push({
|
||||||
name: it,
|
name: it,
|
||||||
label: onlyFirstToUpper(it),
|
label: onlyFirstToUpper(it),
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
})
|
})
|
||||||
Yup.object()
|
Yup.object()
|
||||||
.shape({
|
.shape({
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,13 @@ const fieldStyles = {
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
readOnlyLabel: {
|
||||||
|
color: comet,
|
||||||
|
margin: [[3, 0, 3, 0]]
|
||||||
|
},
|
||||||
|
readOnlyValue: {
|
||||||
|
margin: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -107,6 +114,23 @@ const EditableField = ({ editing, field, value, size, ...props }) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ReadOnlyField = ({ field, value, ...props }) => {
|
||||||
|
const classes = fieldUseStyles()
|
||||||
|
const classNames = {
|
||||||
|
[classes.field]: true,
|
||||||
|
[classes.notEditing]: true
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className={classnames(classNames)}>
|
||||||
|
<Label1 className={classes.readOnlyLabel}>{field.label}</Label1>
|
||||||
|
<P className={classes.readOnlyValue}>{value}</P>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
const EditableCard = ({
|
const EditableCard = ({
|
||||||
fields,
|
fields,
|
||||||
save,
|
save,
|
||||||
|
|
@ -178,7 +202,7 @@ const EditableCard = ({
|
||||||
setEditing(false)
|
setEditing(false)
|
||||||
setError(false)
|
setError(false)
|
||||||
}}>
|
}}>
|
||||||
{({ values, touched, errors, setFieldValue }) => (
|
{({ setFieldValue }) => (
|
||||||
<Form>
|
<Form>
|
||||||
<PromptWhenDirty />
|
<PromptWhenDirty />
|
||||||
<div className={classes.row}>
|
<div className={classes.row}>
|
||||||
|
|
@ -187,13 +211,19 @@ const EditableCard = ({
|
||||||
{!hasImage &&
|
{!hasImage &&
|
||||||
fields?.map((field, idx) => {
|
fields?.map((field, idx) => {
|
||||||
return idx >= 0 && idx < 4 ? (
|
return idx >= 0 && idx < 4 ? (
|
||||||
<EditableField
|
!field.editable ? (
|
||||||
field={field}
|
<ReadOnlyField
|
||||||
value={initialValues[field.name]}
|
field={field}
|
||||||
disabled={field.disabled ?? false}
|
value={initialValues[field.name]}
|
||||||
editing={editing}
|
/>
|
||||||
size={180}
|
) : (
|
||||||
/>
|
<EditableField
|
||||||
|
field={field}
|
||||||
|
value={initialValues[field.name]}
|
||||||
|
editing={editing}
|
||||||
|
size={180}
|
||||||
|
/>
|
||||||
|
)
|
||||||
) : null
|
) : null
|
||||||
})}
|
})}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
@ -201,13 +231,19 @@ const EditableCard = ({
|
||||||
{!hasImage &&
|
{!hasImage &&
|
||||||
fields?.map((field, idx) => {
|
fields?.map((field, idx) => {
|
||||||
return idx >= 4 ? (
|
return idx >= 4 ? (
|
||||||
<EditableField
|
!field.editable ? (
|
||||||
field={field}
|
<ReadOnlyField
|
||||||
value={initialValues[field.name]}
|
field={field}
|
||||||
disabled={field.disabled ?? false}
|
value={initialValues[field.name]}
|
||||||
editing={editing}
|
/>
|
||||||
size={180}
|
) : (
|
||||||
/>
|
<EditableField
|
||||||
|
field={field}
|
||||||
|
value={initialValues[field.name]}
|
||||||
|
editing={editing}
|
||||||
|
size={180}
|
||||||
|
/>
|
||||||
|
)
|
||||||
) : null
|
) : null
|
||||||
})}
|
})}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
||||||
|
|
@ -355,37 +355,44 @@ const customerDataElements = {
|
||||||
{
|
{
|
||||||
name: 'firstName',
|
name: 'firstName',
|
||||||
label: 'First name',
|
label: 'First name',
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'documentNumber',
|
name: 'documentNumber',
|
||||||
label: 'ID number',
|
label: 'ID number',
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'dateOfBirth',
|
name: 'dateOfBirth',
|
||||||
label: 'Birthdate',
|
label: 'Birthdate',
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'gender',
|
name: 'gender',
|
||||||
label: 'Gender',
|
label: 'Gender',
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'lastName',
|
name: 'lastName',
|
||||||
label: 'Last name',
|
label: 'Last name',
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'expirationDate',
|
name: 'expirationDate',
|
||||||
label: 'Expiration Date',
|
label: 'Expiration Date',
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'country',
|
name: 'country',
|
||||||
label: 'Country',
|
label: 'Country',
|
||||||
component: TextInput
|
component: TextInput,
|
||||||
|
editable: true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
usSsn: [
|
usSsn: [
|
||||||
|
|
@ -393,7 +400,8 @@ const customerDataElements = {
|
||||||
name: 'usSsn',
|
name: 'usSsn',
|
||||||
label: 'US SSN',
|
label: 'US SSN',
|
||||||
component: TextInput,
|
component: TextInput,
|
||||||
size: 190
|
size: 190,
|
||||||
|
editable: true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
idCardPhoto: [{ name: 'idCardPhoto' }],
|
idCardPhoto: [{ name: 'idCardPhoto' }],
|
||||||
|
|
@ -402,7 +410,7 @@ const customerDataElements = {
|
||||||
name: 'phoneNumber',
|
name: 'phoneNumber',
|
||||||
label: 'Phone number',
|
label: 'Phone number',
|
||||||
component: TextInput,
|
component: TextInput,
|
||||||
disabled: true
|
editable: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue