Fixing an issue with option fields not being unselectable.
This commit is contained in:
parent
91878ed2ce
commit
468ee7ac0c
|
@ -15,6 +15,7 @@ const {
|
||||||
} = require("../../utilities/rowProcessor")
|
} = require("../../utilities/rowProcessor")
|
||||||
const { FieldTypes } = require("../../constants")
|
const { FieldTypes } = require("../../constants")
|
||||||
const { isEqual } = require("lodash")
|
const { isEqual } = require("lodash")
|
||||||
|
const { cloneDeep } = require("lodash/fp")
|
||||||
|
|
||||||
const TABLE_VIEW_BEGINS_WITH = `all${SEPARATOR}${DocumentTypes.TABLE}${SEPARATOR}`
|
const TABLE_VIEW_BEGINS_WITH = `all${SEPARATOR}${DocumentTypes.TABLE}${SEPARATOR}`
|
||||||
|
|
||||||
|
@ -351,10 +352,15 @@ async function validate({ appId, tableId, row, table }) {
|
||||||
}
|
}
|
||||||
const errors = {}
|
const errors = {}
|
||||||
for (let fieldName of Object.keys(table.schema)) {
|
for (let fieldName of Object.keys(table.schema)) {
|
||||||
const res = validateJs.single(
|
const constraints = cloneDeep(table.schema[fieldName].constraints)
|
||||||
row[fieldName],
|
// special case for options, need to always allow unselected (null)
|
||||||
table.schema[fieldName].constraints
|
if (
|
||||||
)
|
table.schema[fieldName].type === FieldTypes.OPTIONS &&
|
||||||
|
constraints.inclusion
|
||||||
|
) {
|
||||||
|
constraints.inclusion.push(null)
|
||||||
|
}
|
||||||
|
const res = validateJs.single(row[fieldName], constraints)
|
||||||
if (res) errors[fieldName] = res
|
if (res) errors[fieldName] = res
|
||||||
}
|
}
|
||||||
return { valid: Object.keys(errors).length === 0, errors }
|
return { valid: Object.keys(errors).length === 0, errors }
|
||||||
|
|
|
@ -25,7 +25,7 @@ const TYPE_TRANSFORM_MAP = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
[FieldTypes.OPTIONS]: {
|
[FieldTypes.OPTIONS]: {
|
||||||
"": "",
|
"": null,
|
||||||
[null]: "",
|
[null]: "",
|
||||||
[undefined]: undefined,
|
[undefined]: undefined,
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue