import { WithStyles } from '@material-ui/core/styles';
import { SelectProps } from '@material-ui/core/Select';
import { SelectItem } from './select-item';
+import { PermissionLevel } from '../../models/permission';
export enum PermissionSelectValue {
READ = 'Read',
MANAGE = 'Manage',
}
-type PermissionSelectClasses = 'value';
+export const parsePermissionLevel = (value: PermissionSelectValue) => {
+ switch (value) {
+ case PermissionSelectValue.READ:
+ return PermissionLevel.CAN_READ;
+ case PermissionSelectValue.WRITE:
+ return PermissionLevel.CAN_WRITE;
+ case PermissionSelectValue.MANAGE:
+ return PermissionLevel.CAN_MANAGE;
+ default:
+ return PermissionLevel.NONE;
+ }
+};
-const PermissionSelectStyles: StyleRulesCallback<PermissionSelectClasses> = theme => ({
- value: {
- marginLeft: theme.spacing.unit,
+export const formatPermissionLevel = (value: PermissionLevel) => {
+ switch (value) {
+ case PermissionLevel.CAN_READ:
+ return PermissionSelectValue.READ;
+ case PermissionLevel.CAN_WRITE:
+ return PermissionSelectValue.WRITE;
+ case PermissionLevel.CAN_MANAGE:
+ return PermissionSelectValue.MANAGE;
+ default:
+ return PermissionSelectValue.READ;
}
-});
-
-export const PermissionSelect = withStyles(PermissionSelectStyles)(
- ({ classes, ...props }: SelectProps & WithStyles<PermissionSelectClasses>) =>
- <Select
- {...props}
- renderValue={renderPermissionItem}
- inputProps={{ classes }}>
- <MenuItem value={PermissionSelectValue.READ}>
- {renderPermissionItem(PermissionSelectValue.READ)}
- </MenuItem>
- <MenuItem value={PermissionSelectValue.WRITE}>
- {renderPermissionItem(PermissionSelectValue.WRITE)}
- </MenuItem>
- <MenuItem value={PermissionSelectValue.MANAGE}>
- {renderPermissionItem(PermissionSelectValue.MANAGE)}
- </MenuItem>
- </Select>);
+};
+
+
+export const PermissionSelect = (props: SelectProps) =>
+ <Select
+ {...props}
+ renderValue={renderPermissionItem}>
+ <MenuItem value={PermissionSelectValue.READ}>
+ {renderPermissionItem(PermissionSelectValue.READ)}
+ </MenuItem>
+ <MenuItem value={PermissionSelectValue.WRITE}>
+ {renderPermissionItem(PermissionSelectValue.WRITE)}
+ </MenuItem>
+ <MenuItem value={PermissionSelectValue.MANAGE}>
+ {renderPermissionItem(PermissionSelectValue.MANAGE)}
+ </MenuItem>
+ </Select>;
const renderPermissionItem = (value: string) =>
<SelectItem {...{ value, icon: getIcon(value) }} />;