diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index a0f35e0172..1bff7f30f6 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -214,7 +214,7 @@ export default class BrowserCell extends Component { //#endregion render() { - let { type, value, hidden, width, current, onSelect, onEditChange, setCopyableValue, setRelation, onPointerClick, row, col, field, onEditSelectedRow, readonly, isRequired, markRequiredField } = this.props; + let { type, value, hidden, width, current, onSelect, onEditChange, setCopyableValue, setRelation, onPointerClick, row, col, field, onEditSelectedRow, readonly, isRequired, markRequiredFieldRow } = this.props; let content = value; let isNewRow = row < 0; this.copyableValue = content; @@ -333,7 +333,7 @@ export default class BrowserCell extends Component { classes.push(styles.current); } - if (markRequiredField && isRequired && !value) { + if (markRequiredFieldRow === row && isRequired && !value) { classes.push(styles.required); } diff --git a/src/components/BrowserFilter/BrowserFilter.react.js b/src/components/BrowserFilter/BrowserFilter.react.js index 945c0f05c4..c474bc5566 100644 --- a/src/components/BrowserFilter/BrowserFilter.react.js +++ b/src/components/BrowserFilter/BrowserFilter.react.js @@ -144,6 +144,9 @@ export default class BrowserFilter extends React.Component { if (this.props.filters.size) { buttonStyle.push(styles.active); } + if (this.props.disabled) { + buttonStyle.push(styles.disabled); + } return (
diff --git a/src/components/BrowserFilter/BrowserFilter.scss b/src/components/BrowserFilter/BrowserFilter.scss index be017aa56a..55ad5e5fa5 100644 --- a/src/components/BrowserFilter/BrowserFilter.scss +++ b/src/components/BrowserFilter/BrowserFilter.scss @@ -22,6 +22,15 @@ &:hover svg { fill: white; } + + &.disabled { + cursor: not-allowed; + color: #66637A; + + &:hover svg { + fill: #66637A; + } + } } .entry.active { diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index d77d3f223d..367decb2ed 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -19,8 +19,21 @@ export default class BrowserRow extends Component { } render() { - const { className, columns, currentCol, isUnique, obj, onPointerClick, order, readOnlyFields, row, rowWidth, selection, selectRow, setCopyableValue, setCurrent, setEditing, setRelation, onEditSelectedRow, setContextMenu, onFilterChange, markRequiredField, requiredColumnFields } = this.props; + const { className, columns, currentCol, isUnique, obj, onPointerClick, order, readOnlyFields, row, rowWidth, selection, selectRow, setCopyableValue, setCurrent, setEditing, setRelation, onEditSelectedRow, setContextMenu, onFilterChange, markRequiredFieldRow } = this.props; let attributes = obj.attributes; + let requiredCols = []; + Object.entries(columns).reduce((acc, cur) => { + if (cur[1].required) { + acc.push(cur[0]); + } + return acc; + }, requiredCols); + // for dynamically changing required field on _User class + if (obj.className === '_User' && (obj.get('username') !== undefined || obj.get('password') !== undefined)) { + requiredCols = ['username', 'password']; + } else if (obj.className === '_User' && obj.get('authData') !== undefined) { + requiredCols = ['authData']; + } return (
@@ -58,7 +71,7 @@ export default class BrowserRow extends Component { hidden = true; } } - let isRequired = requiredColumnFields && requiredColumnFields.includes(name); + let isRequired = requiredCols.includes(name); return (