u
This commit is contained in:
@@ -64,6 +64,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
super(props);
|
||||
const terminals = companyAutomat.state.terminals ?? [];
|
||||
this.state = {
|
||||
isAdmin: companyAutomat.state.current?.role === 'admin',
|
||||
status: companyAutomat.state.terminalsStatus === 'succeeded' ? 'ready' : 'loading',
|
||||
error: null,
|
||||
terminals,
|
||||
@@ -93,6 +94,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
|
||||
componentDidMount() {
|
||||
this.unsub = companyAutomat.subscribe(this, (state) => ({
|
||||
isAdmin: state.current?.role === 'admin',
|
||||
terminals: Array.isArray(state.terminals) ? state.terminals : [],
|
||||
status: state.terminalsStatus === 'succeeded' ? 'ready' : state.terminalsStatus === 'failed' ? 'failed' : this.state.status,
|
||||
}));
|
||||
@@ -133,6 +135,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
}
|
||||
|
||||
async handleCreateTerminal() {
|
||||
if (!this.state.isAdmin) return;
|
||||
const { newTerminalName, enableAllForNew, terminals } = this.state;
|
||||
const trimmed = newTerminalName.trim();
|
||||
if (!trimmed) return;
|
||||
@@ -294,6 +297,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
|
||||
render() {
|
||||
const {
|
||||
isAdmin,
|
||||
status,
|
||||
error,
|
||||
terminals,
|
||||
@@ -362,7 +366,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
placeholder="Neues Terminal..."
|
||||
value={newTerminalName}
|
||||
onChange={(e) => this.setState({ newTerminalName: e.target.value })}
|
||||
disabled={creatingTerminal}
|
||||
disabled={!isAdmin || creatingTerminal}
|
||||
autoComplete="off"
|
||||
slotProps={{
|
||||
htmlInput: {
|
||||
@@ -387,7 +391,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
size="small"
|
||||
checked={enableAllForNew}
|
||||
onChange={(e) => this.setState({ enableAllForNew: e.target.checked })}
|
||||
disabled={creatingTerminal}
|
||||
disabled={!isAdmin || creatingTerminal}
|
||||
/>
|
||||
</Box>
|
||||
</Tooltip>
|
||||
@@ -396,7 +400,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
size="small"
|
||||
startIcon={creatingTerminal ? <CircularProgress size={16} color="inherit" /> : <AddIcon />}
|
||||
onClick={this.handleCreateTerminal}
|
||||
disabled={creatingTerminal || !newTerminalName.trim()}
|
||||
disabled={!isAdmin || creatingTerminal || !newTerminalName.trim()}
|
||||
>
|
||||
Hinzufügen
|
||||
</Button>
|
||||
@@ -492,7 +496,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
<Switch
|
||||
size="small"
|
||||
checked={isEnabled}
|
||||
disabled={isPatching || isDeleting}
|
||||
disabled={!isAdmin || isPatching || isDeleting}
|
||||
onChange={(e) => void this.handleToggleEnabled(terminal, e.target.checked)}
|
||||
color="success"
|
||||
/>
|
||||
@@ -516,7 +520,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
size="small"
|
||||
aria-label={`Terminal ${terminal.name} löschen`}
|
||||
onClick={() => void this.handleDeleteTerminal(terminal)}
|
||||
disabled={isDeleting || creatingTerminal || isPatching}
|
||||
disabled={!isAdmin || isDeleting || creatingTerminal || isPatching}
|
||||
color="error"
|
||||
>
|
||||
{isDeleting ? (
|
||||
@@ -546,13 +550,14 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
<Chip
|
||||
icon={<FolderIcon />}
|
||||
label={this.getCategoryLabel(terminal)}
|
||||
onClick={() => this.setState({ pickerTerminal: terminal })}
|
||||
onClick={isAdmin ? () => this.setState({ pickerTerminal: terminal }) : undefined}
|
||||
onDelete={
|
||||
terminal.rootCategoryId != null
|
||||
isAdmin && terminal.rootCategoryId != null
|
||||
? () => void this.handleSetRootCategory(terminal, null)
|
||||
: undefined
|
||||
}
|
||||
clickable
|
||||
clickable={isAdmin}
|
||||
disabled={!isAdmin || isPatching || isDeleting}
|
||||
variant={terminal.rootCategoryId != null ? 'filled' : 'outlined'}
|
||||
color={terminal.rootCategoryId != null ? 'primary' : 'default'}
|
||||
size="small"
|
||||
@@ -560,6 +565,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
<Button
|
||||
size="small"
|
||||
variant="text"
|
||||
disabled={!isAdmin || isPatching || isDeleting}
|
||||
onClick={() => this.setState({ pickerTerminal: terminal })}
|
||||
sx={{ minWidth: 'auto', p: 0.5, fontSize: '0.75rem' }}
|
||||
>
|
||||
@@ -576,7 +582,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
<span>
|
||||
<IconButton
|
||||
size="small"
|
||||
disabled={index === 0 || isPatching || isDeleting}
|
||||
disabled={!isAdmin || index === 0 || isPatching || isDeleting}
|
||||
onClick={() => void this.handleMoveTerminal(terminal, 'up')}
|
||||
sx={{ p: 0.25 }}
|
||||
>
|
||||
@@ -588,7 +594,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
<span>
|
||||
<IconButton
|
||||
size="small"
|
||||
disabled={index === terminals.length - 1 || isPatching || isDeleting}
|
||||
disabled={!isAdmin || index === terminals.length - 1 || isPatching || isDeleting}
|
||||
onClick={() => void this.handleMoveTerminal(terminal, 'down')}
|
||||
sx={{ p: 0.25 }}
|
||||
>
|
||||
@@ -599,7 +605,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
<TextField
|
||||
type="number"
|
||||
size="small"
|
||||
disabled={isPatching || isDeleting}
|
||||
disabled={!isAdmin || isPatching || isDeleting}
|
||||
value={this.state.sortDrafts[terminal.id] ?? terminal.sort ?? 0}
|
||||
onChange={(e) => this.handleSortDraftChange(terminal.id, e.target.value)}
|
||||
onBlur={() => void this.handleSortSubmit(terminal)}
|
||||
@@ -624,7 +630,7 @@ export default class PosTerminalSettingsPanel extends Component {
|
||||
<Switch
|
||||
size="small"
|
||||
checked={Boolean(terminal.syncRootArticles)}
|
||||
disabled={isPatching || isDeleting}
|
||||
disabled={!isAdmin || isPatching || isDeleting}
|
||||
onChange={(e) => void this.handleToggleSyncRootArticles(terminal, e.target.checked)}
|
||||
/>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user