@@ -183,17 +183,37 @@ export function RouteModalContent({
183
183
( cidrError && cidrError . length > 1 ) ||
184
184
( peerTab === "peer-group" && routingPeerGroups . length == 0 ) ||
185
185
( peerTab === "routing-peer" && ! routingPeer ) ||
186
- groups . length == 0
186
+ groups . length == 0 ||
187
+ networkRange == ""
187
188
) ;
188
- } , [ cidrError , peerTab , routingPeerGroups . length , routingPeer , groups ] ) ;
189
+ } , [
190
+ cidrError ,
191
+ peerTab ,
192
+ routingPeerGroups . length ,
193
+ routingPeer ,
194
+ groups ,
195
+ networkRange ,
196
+ ] ) ;
189
197
190
- const isNameEntered = useMemo ( ( ) => {
191
- return ! ( networkIdentifier == "" ) ;
198
+ const networkIdentifierError = useMemo ( ( ) => {
199
+ return ( networkIdentifier ?. length || 0 ) > 40
200
+ ? "Network Identifier must be less than 40 characters"
201
+ : "" ;
192
202
} , [ networkIdentifier ] ) ;
193
203
204
+ const metricError = useMemo ( ( ) => {
205
+ return parseInt ( metric ) < 1 || parseInt ( metric ) > 9999
206
+ ? "Metric must be between 1 and 9999"
207
+ : "" ;
208
+ } , [ metric ] ) ;
209
+
210
+ const isNameEntered = useMemo ( ( ) => {
211
+ return networkIdentifier != "" && networkIdentifierError == "" ;
212
+ } , [ networkIdentifier , networkIdentifierError ] ) ;
213
+
194
214
const canCreateOrSave = useMemo ( ( ) => {
195
- return isNetworkEntered && isNameEntered ;
196
- } , [ isNetworkEntered , isNameEntered ] ) ;
215
+ return isNetworkEntered && isNameEntered && metricError == "" ;
216
+ } , [ isNetworkEntered , isNameEntered , metricError ] ) ;
197
217
198
218
return (
199
219
< ModalContent maxWidthClass = { "max-w-xl" } >
@@ -250,7 +270,10 @@ export function RouteModalContent({
250
270
/>
251
271
Name & Description
252
272
</ TabsTrigger >
253
- < TabsTrigger value = { "settings" } disabled = { ! canCreateOrSave } >
273
+ < TabsTrigger
274
+ value = { "settings" }
275
+ disabled = { ! isNetworkEntered || ! isNameEntered }
276
+ >
254
277
< Settings2
255
278
size = { 16 }
256
279
className = {
@@ -340,6 +363,7 @@ export function RouteModalContent({
340
363
Add a unique network identifier that is assigned to each device.
341
364
</ HelpText >
342
365
< Input
366
+ error = { networkIdentifierError }
343
367
autoFocus = { true }
344
368
tabIndex = { 0 }
345
369
ref = { nameRef }
@@ -406,6 +430,8 @@ export function RouteModalContent({
406
430
max = { 9999 }
407
431
maxWidthClass = { "max-w-[200px]" }
408
432
value = { metric }
433
+ error = { metricError }
434
+ errorTooltip = { true }
409
435
type = { "number" }
410
436
onChange = { ( e ) => setMetric ( e . target . value ) }
411
437
customPrefix = {
@@ -469,7 +495,7 @@ export function RouteModalContent({
469
495
< Button
470
496
variant = { "primary" }
471
497
onClick = { ( ) => setTab ( "settings" ) }
472
- disabled = { ! canCreateOrSave }
498
+ disabled = { ! isNameEntered || ! isNetworkEntered }
473
499
>
474
500
Continue
475
501
</ Button >
0 commit comments