import React, { Fragment } from 'react'; import { TextValidator, ValidatorForm } from 'react-material-ui-form-validator'; import { Checkbox, List, ListItem, ListItemText, ListItemAvatar, ListItemSecondaryAction } from '@material-ui/core'; import Avatar from '@material-ui/core/Avatar'; import IconButton from '@material-ui/core/IconButton'; import LockIcon from '@material-ui/icons/Lock'; import LockOpenIcon from '@material-ui/icons/LockOpen'; import DeleteIcon from '@material-ui/icons/Delete'; import SaveIcon from '@material-ui/icons/Save'; import { RestFormProps, PasswordValidator, BlockFormControlLabel, FormActions, FormButton } from '../components'; import { isIP, isHostname, optional } from '../validators'; import { WiFiConnectionContext } from './WiFiConnectionContext'; import { isNetworkOpen, networkSecurityMode } from './WiFiSecurityModes'; import { WiFiSettings } from './types'; type WiFiStatusFormProps = RestFormProps; class WiFiSettingsForm extends React.Component { static contextType = WiFiConnectionContext; context!: React.ContextType; constructor(props: WiFiStatusFormProps, context: WiFiConnectionContext) { super(props); const { selectedNetwork } = context; if (selectedNetwork) { const wifiSettings: WiFiSettings = { ssid: selectedNetwork.ssid, password: "", hostname: props.data.hostname, static_ip_config: false, } props.setData(wifiSettings); } } componentWillMount() { ValidatorForm.addValidationRule('isIP', isIP); ValidatorForm.addValidationRule('isHostname', isHostname); ValidatorForm.addValidationRule('isOptionalIP', optional(isIP)); } deselectNetworkAndLoadData = () => { this.context.deselectNetwork(); this.props.loadData(); } componentWillUnmount() { this.context.deselectNetwork(); } render() { const { selectedNetwork, deselectNetwork } = this.context; const { data, handleValueChange, saveData } = this.props; return ( { selectedNetwork ? {isNetworkOpen(selectedNetwork) ? : } : } { (!selectedNetwork || !isNetworkOpen(selectedNetwork)) && } } label="Static IP Config?" /> { data.static_ip_config && } } variant="contained" color="primary" type="submit"> Save ); } } export default WiFiSettingsForm;