@@ -92,6 +92,8 @@ const Route = ({
92
92
appUrl : string ;
93
93
disabled ?: boolean ;
94
94
} ) => {
95
+ const { t } = useLocale ( ) ;
96
+
95
97
const index = routes . indexOf ( route ) ;
96
98
97
99
const { data : eventTypesByGroup } = trpc . viewer . eventTypes . getByViewer . useQuery ( {
@@ -128,6 +130,16 @@ const Route = ({
128
130
} ) ;
129
131
} ) ;
130
132
133
+ // /team/{TEAM_SLUG}/{EVENT_SLUG} -> /team/{TEAM_SLUG}
134
+ const eventTypePrefix =
135
+ eventOptions . length !== 0
136
+ ? eventOptions [ 0 ] . value . substring ( 0 , eventOptions [ 0 ] . value . lastIndexOf ( "/" ) + 1 )
137
+ : "" ;
138
+
139
+ const [ customEventTypeSlug , setCustomEventTypeSlug ] = useState (
140
+ ! isRouter ( route ) ? route . action . value . split ( "/" ) . pop ( ) : ""
141
+ ) ;
142
+
131
143
const onChange = ( route : Route , immutableTree : ImmutableTree , config : QueryBuilderUpdatedConfig ) => {
132
144
const jsonTree = QbUtils . getTree ( immutableTree ) ;
133
145
setRoute ( route . id , {
@@ -199,7 +211,7 @@ const Route = ({
199
211
< div >
200
212
< div className = "text-emphasis flex w-full items-center text-sm" >
201
213
< div className = "flex flex-grow-0 whitespace-nowrap" >
202
- < span > Send Booker to </ span >
214
+ < span > { t ( "send_booker_to" ) } </ span >
203
215
</ div >
204
216
< Select
205
217
isDisabled = { disabled }
@@ -257,15 +269,50 @@ const Route = ({
257
269
< Select
258
270
required
259
271
isDisabled = { disabled }
260
- options = { eventOptions }
272
+ options = {
273
+ eventOptions . length !== 0
274
+ ? eventOptions . concat ( { label : t ( "Custom" ) , value : "custom" } )
275
+ : [ ]
276
+ }
261
277
onChange = { ( option ) => {
262
278
if ( ! option ) {
263
279
return ;
264
280
}
265
- setRoute ( route . id , { action : { ...route . action , value : option . value } } ) ;
281
+ if ( option . value !== "custom" ) {
282
+ setRoute ( route . id , { action : { ...route . action , value : option . value } } ) ;
283
+ } else {
284
+ setRoute ( route . id , { action : { ...route . action , value : "custom" } } ) ;
285
+ setCustomEventTypeSlug ( "" ) ;
286
+ }
266
287
} }
267
- value = { eventOptions . find ( ( eventOption ) => eventOption . value === route . action . value ) }
288
+ value = {
289
+ eventOptions . length !== 0 && route . action . value !== ""
290
+ ? eventOptions . find ( ( eventOption ) => eventOption . value === route . action . value ) || {
291
+ label : t ( "custom" ) ,
292
+ value : "custom" ,
293
+ }
294
+ : undefined
295
+ }
268
296
/>
297
+ { eventOptions . length !== 0 &&
298
+ route . action . value !== "" &&
299
+ ! eventOptions . find ( ( eventOption ) => eventOption . value === route . action . value ) && (
300
+ < TextField
301
+ disabled = { disabled }
302
+ className = "border-default flex w-full flex-grow text-sm"
303
+ containerClassName = "w-full mt-2"
304
+ addOnLeading = { eventTypePrefix }
305
+ required
306
+ value = { customEventTypeSlug }
307
+ onChange = { ( e ) => {
308
+ setCustomEventTypeSlug ( e . target . value ) ;
309
+ setRoute ( route . id , {
310
+ action : { ...route . action , value : `${ eventTypePrefix } ${ e . target . value } ` } ,
311
+ } ) ;
312
+ } }
313
+ placeholder = "event-url"
314
+ />
315
+ ) }
269
316
</ div >
270
317
)
271
318
) : null }
0 commit comments