8
8
import * as Accordion from '@radix-ui/react-accordion'
9
9
import { useState } from 'react'
10
10
import { useNavigate } from 'react-router-dom'
11
- import type { SetRequired } from 'type-fest'
12
11
13
12
import {
14
13
useApiMutation ,
@@ -22,14 +21,12 @@ import { AccordionItem } from '~/components/AccordionItem'
22
21
import { DescriptionField } from '~/components/form/fields/DescriptionField'
23
22
import { ListboxField } from '~/components/form/fields/ListboxField'
24
23
import { NameField } from '~/components/form/fields/NameField'
25
- import { TextField } from '~/components/form/fields/TextField'
26
24
import { SideModalForm } from '~/components/form/SideModalForm'
27
25
import { useForm , useProjectSelector } from '~/hooks'
28
26
import { addToast } from '~/stores/toast'
29
27
import { Badge } from '~/ui/lib/Badge'
30
28
import { Message } from '~/ui/lib/Message'
31
29
import { pb } from '~/util/path-builder'
32
- import { validateIp } from '~/util/str'
33
30
34
31
const toListboxItem = ( p : SiloIpPool ) => {
35
32
if ( ! p . isDefault ) {
@@ -50,11 +47,10 @@ const toListboxItem = (p: SiloIpPool) => {
50
47
}
51
48
}
52
49
53
- const defaultValues : SetRequired < FloatingIpCreate , 'ip' > = {
50
+ const defaultValues : Omit < FloatingIpCreate , 'ip' > = {
54
51
name : '' ,
55
52
description : '' ,
56
53
pool : undefined ,
57
- ip : '' ,
58
54
}
59
55
60
56
export function CreateFloatingIpSideModalForm ( ) {
@@ -78,7 +74,6 @@ export function CreateFloatingIpSideModalForm() {
78
74
} )
79
75
80
76
const form = useForm ( { defaultValues } )
81
- const isPoolSelected = ! ! form . watch ( 'pool' )
82
77
83
78
const [ openItems , setOpenItems ] = useState < string [ ] > ( [ ] )
84
79
@@ -88,13 +83,7 @@ export function CreateFloatingIpSideModalForm() {
88
83
formType = "create"
89
84
resourceName = "floating IP"
90
85
onDismiss = { ( ) => navigate ( pb . floatingIps ( projectSelector ) ) }
91
- onSubmit = { ( { ip, ...rest } ) => {
92
- createFloatingIp . mutate ( {
93
- query : projectSelector ,
94
- // if address is '', evaluate as false and send as undefined
95
- body : { ip : ip || undefined , ...rest } ,
96
- } )
97
- } }
86
+ onSubmit = { ( body ) => createFloatingIp . mutate ( { query : projectSelector , body } ) }
98
87
loading = { createFloatingIp . isPending }
99
88
submitError = { createFloatingIp . error }
100
89
>
@@ -124,16 +113,6 @@ export function CreateFloatingIpSideModalForm() {
124
113
control = { form . control }
125
114
placeholder = "Select pool"
126
115
/>
127
- < TextField
128
- name = "ip"
129
- label = "IP address"
130
- control = { form . control }
131
- disabled = { ! isPoolSelected }
132
- transform = { ( v ) => v . replace ( / \s / g, '' ) }
133
- validate = { ( ip ) =>
134
- ip && ! validateIp ( ip ) . valid ? 'Not a valid IP address' : true
135
- }
136
- />
137
116
</ AccordionItem >
138
117
</ Accordion . Root >
139
118
</ SideModalForm >
0 commit comments