import { AutocompleteItem, Select, SelectProps } from "@mantine/core"; import React, { useState } from "react"; import { ipInterfacesQuery } from "../js/utils"; const AutoCompleteItem = React.forwardRef( ({ netint, value, ...props }: ItemProps, ref) =>
( {netint} ) -{">"} {value}
); interface ItemProps extends AutocompleteItem { netint: string; } interface InterfaceInputProps extends Omit{ initialCustomInterfaces?:AutocompleteItem[], includeInterfaceNames?:boolean } export const InterfaceInput = ({ initialCustomInterfaces, includeInterfaceNames, ...props }:InterfaceInputProps) => { const [customIpInterfaces, setCustomIpInterfaces] = useState(initialCustomInterfaces??[]); const interfacesQuery = ipInterfacesQuery() const getInterfaces = () => { if (interfacesQuery.isLoading || !interfacesQuery.data) return [] if(includeInterfaceNames){ const result = interfacesQuery.data.map(item => ({netint:"IP", value:item.addr, label:item.addr})) as AutocompleteItem[] interfacesQuery.data.map(item => item.name).filter((item, index, arr) => arr.indexOf(item) === index).forEach(item => result.push({netint:"INT", value:item, label:item})) return result } return (interfacesQuery.data.map(item => ({netint:item.name, value:item.addr, label:item.addr})) as AutocompleteItem[]) } const interfaces = getInterfaces() return