diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..99e242bb --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["bradlc.vscode-tailwindcss"] +} diff --git a/src/components/PageComponents/Config/Network.tsx b/src/components/PageComponents/Config/Network.tsx index ab41a82b..be9297bc 100644 --- a/src/components/PageComponents/Config/Network.tsx +++ b/src/components/PageComponents/Config/Network.tsx @@ -6,7 +6,6 @@ import { toast } from "react-hot-toast"; import { FormSection } from "@app/components/form/FormSection.js"; import { Input } from "@app/components/form/Input.js"; -import { IPAddress } from "@app/components/form/IPAddress.js"; import { Select } from "@app/components/form/Select.js"; import { Toggle } from "@app/components/form/Toggle.js"; import { renderOptions } from "@app/core/utils/selectEnumOptions.js"; @@ -42,6 +41,12 @@ export const Network = (): JSX.Element => { defaultValue: false }); + const ethMode = useWatch({ + control, + name: "ethMode", + defaultValue: Protobuf.Config_NetworkConfig_EthMode.DHCP + }); + useEffect(() => { reset(config.network); }, [reset, config.network]); @@ -50,17 +55,13 @@ export const Network = (): JSX.Element => { console.log(data); if (connection) { - const tmp = Protobuf.Config_NetworkConfig.create({ - ethEnabled: true, - ethMode: Protobuf.Config_NetworkConfig_EthMode.DHCP - }); void toast.promise( connection .setConfig({ config: { payloadVariant: { oneofKind: "network", - network: tmp + network: Protobuf.Config_NetworkConfig.create(data) } }, callback: async () => { @@ -105,7 +106,7 @@ export const Network = (): JSX.Element => { control={control} render={({ field: { value, ...rest } }) => ( { control={control} render={({ field: { value, ...rest } }) => ( { > {renderOptions(Protobuf.Config_NetworkConfig_EthMode)} - - - - - - - + {ethMode === Protobuf.Config_NetworkConfig_EthMode.STATIC && ( + <> + + + + + + )} { - label: string; - description?: string; - prefix?: string; - suffix?: string; - action?: { - icon: JSX.Element; - action: () => void; - }; - error?: string; -} - -export const IPAddress = ({ - label, - description, - action, - error, - disabled, - ...rest -}: IPAddressProps): JSX.Element => { - const [value, setValue] = useState<[number, number, number, number]>([ - 0, 0, 0, 0 - ]); - - // const getRange = (el) => { - // var cuRange, tbRange, headRange, range, dupRange, ret = {}; - // if (el.setSelectionRange) { - // // standard - // ret.begin = el.selectionStart; - // ret.end = el.selectionEnd; - // ret.result = el.value.substring(ret.begin, ret.end); - // } else if (document.selection) { - // // ie - // if (el.tagName.toLowerCase() === 'input') { - // cuRange = document.selection.createRange(); - // tbRange = el.createTextRange(); - // tbRange.collapse(true); - // tbRange.select(); - // headRange = document.selection.createRange(); - // headRange.setEndPoint('EndToEnd', cuRange); - // ret.begin = headRange.text.length - cuRange.text.length; - // ret.end = headRange.text.length; - // ret.result = cuRange.text; - // cuRange.select(); - // } else if (el.tagName.toLowerCase() === 'textarea') { - // range = document.selection.createRange(); - // dupRange = range.duplicate(); - // dupRange.moveToElementText(el); - // dupRange.setEndPoint('EndToEnd', range); - // ret.begin = dupRange.text.length - range.text.length; - // ret.end = dupRange.text.length; - // ret.result = range.text; - // } - // } - // el.focus(); - // return ret; - // } - - // const isValidIPItemValue = (val) => { - // val = parseInt(val); - // return !isNaN(val) && val >= 0 && val <= 255; - // } - - // const handleKeyDown = (event: React.KeyboardEvent, index: number) => { - // /* 37 = ←, 39 = →, 8 = backspace, 110 or 190 = . */ - // let domId = index; - // if ((event.keyCode === 37 || event.keyCode === 8) && getRange(event.target).end === 0 && index > 0) { domId = index - 1; } - // if (event.keyCode === 39 && getRange(event.target).end === event.target.value.length && index < 3) { domId = index + 1; } - // if (event.keyCode === 110 || event.keyCode === 190) { - // event.preventDefault(); - // if(i < 3) { - // domId = i + 1; - // } - // } - // this[`_input-${domId}`].focus(); - // } - - // useEffect(() => { - - // }, []) - - // const ip = value.map(val => isNaN(val) ? '' : val).join('.'); - - return ( -
- {/* Label */} - - {/* */} -
- {value.map((octet, index) => ( - <> - - {index !== 3 && .} - - ))} - {action && ( - - )} - {error && ( -
- -
- )} -
- {description && ( -

{description}

- )} - {error &&

{error}

} -
- ); -};