u
This commit is contained in:
@@ -23,6 +23,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
super(props);
|
||||
const current = companyAutomat.state.current;
|
||||
this.state = {
|
||||
isAdmin: current?.role === 'admin',
|
||||
status: current ? 'ready' : 'loading',
|
||||
busy: false,
|
||||
error: null,
|
||||
@@ -42,6 +43,9 @@ export default class CompanySettingsPanel extends Component {
|
||||
if (state.current && this.state.status === 'loading') {
|
||||
this.syncFormFromCompany(state.current);
|
||||
}
|
||||
return {
|
||||
isAdmin: state.current?.role === 'admin',
|
||||
};
|
||||
});
|
||||
if (companyAutomat.state.current) {
|
||||
this.syncFormFromCompany(companyAutomat.state.current);
|
||||
@@ -86,6 +90,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
|
||||
async handleSubmit(event) {
|
||||
event?.preventDefault?.();
|
||||
if (!this.state.isAdmin) return;
|
||||
const { name, iso639, taxrate, reducedtaxrate } = this.state;
|
||||
const parsedTaxrate = parseTaxRate(taxrate);
|
||||
const parsedReducedtaxrate = parseTaxRate(reducedtaxrate);
|
||||
@@ -123,7 +128,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const { status, busy, error, name, iso639, taxrate, reducedtaxrate } = this.state;
|
||||
const { isAdmin, status, busy, error, name, iso639, taxrate, reducedtaxrate } = this.state;
|
||||
|
||||
if (status === 'loading' && !name) {
|
||||
return (
|
||||
@@ -146,6 +151,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
taxrate.trim() !== this._initial.taxrate.trim() ||
|
||||
reducedtaxrate.trim() !== this._initial.reducedtaxrate.trim());
|
||||
const canSave =
|
||||
isAdmin &&
|
||||
isDirty &&
|
||||
name.trim() !== '' &&
|
||||
ISO639_OPTIONS.includes(iso639) &&
|
||||
@@ -175,7 +181,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
size="small"
|
||||
label="Name"
|
||||
value={name}
|
||||
disabled={busy}
|
||||
disabled={!isAdmin || busy}
|
||||
onChange={(nextName) => this.setState({ name: nextName })}
|
||||
autoComplete="off"
|
||||
autoFocus
|
||||
@@ -188,7 +194,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
required
|
||||
size="small"
|
||||
value={iso639}
|
||||
disabled={busy}
|
||||
disabled={!isAdmin || busy}
|
||||
onChange={(_event, value) => {
|
||||
if (value) this.setState({ iso639: value });
|
||||
}}
|
||||
@@ -206,7 +212,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
type="number"
|
||||
label="Normalsatz"
|
||||
value={taxrate}
|
||||
disabled={busy}
|
||||
disabled={!isAdmin || busy}
|
||||
onChange={(e) => this.setState({ taxrate: e.target.value })}
|
||||
error={taxrate !== '' && parsedTaxrate == null}
|
||||
slotProps={{
|
||||
@@ -223,7 +229,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
type="number"
|
||||
label="Ermäßigter Satz"
|
||||
value={reducedtaxrate}
|
||||
disabled={busy}
|
||||
disabled={!isAdmin || busy}
|
||||
onChange={(e) => this.setState({ reducedtaxrate: e.target.value })}
|
||||
error={reducedtaxrate !== '' && parsedReducedtaxrate == null}
|
||||
slotProps={{
|
||||
@@ -240,7 +246,7 @@ export default class CompanySettingsPanel extends Component {
|
||||
type="submit"
|
||||
variant="contained"
|
||||
color={canSave ? 'success' : 'inherit'}
|
||||
disabled={busy || !canSave}
|
||||
disabled={!isAdmin || busy || !canSave}
|
||||
startIcon={busy ? <CircularProgress size={16} color="inherit" /> : null}
|
||||
sx={
|
||||
canSave
|
||||
|
||||
Reference in New Issue
Block a user