@@ -179,6 +179,7 @@ export default function Page() {
179179 runs = { result . task . runs }
180180 versions = { result . task . latestVersions }
181181 disableVersionSelection = { result . disableVersionSelection }
182+ allowArbitraryQueues = { result . allowArbitraryQueues }
182183 />
183184 ) ;
184185 }
@@ -212,12 +213,14 @@ function StandardTaskForm({
212213 runs,
213214 versions,
214215 disableVersionSelection,
216+ allowArbitraryQueues,
215217} : {
216218 task : TestTask [ "task" ] ;
217219 defaultQueue : TestTask [ "queue" ] ;
218220 runs : StandardRun [ ] ;
219221 versions : string [ ] ;
220222 disableVersionSelection : boolean ;
223+ allowArbitraryQueues : boolean ;
221224} ) {
222225 const environment = useEnvironment ( ) ;
223226 const { value, replace } = useSearchParams ( ) ;
@@ -503,43 +506,52 @@ function StandardTaskForm({
503506 </ InputGroup >
504507 < InputGroup >
505508 < Label htmlFor = { queue . id } > Queue</ Label >
506- < Select
507- name = { queue . name }
508- id = { queue . id }
509- placeholder = "Select queue"
510- variant = "tertiary/small"
511- dropdownIcon
512- items = { queues }
513- filter = { { keys : [ "label" ] } }
514- value = { queueValue }
515- setValue = { setQueueValue }
516- >
517- { ( matches ) =>
518- matches . map ( ( queueItem ) => (
519- < SelectItem
520- key = { queueItem . value }
521- value = { queueItem . value }
522- className = "max-w-[var(--popover-anchor-width)]"
523- icon = {
524- queueItem . type === "task" ? (
525- < TaskIcon className = "size-4 shrink-0 text-blue-500" />
526- ) : (
527- < RectangleStackIcon className = "size-4 shrink-0 text-purple-500" />
528- )
529- }
530- >
531- < div className = "flex w-full min-w-0 items-center justify-between" >
532- < span className = "truncate" > { queueItem . label } </ span >
533- { queueItem . paused && (
534- < Badge variant = "extra-small" className = "ml-1 text-warning" >
535- Paused
536- </ Badge >
537- ) }
538- </ div >
539- </ SelectItem >
540- ) )
541- }
542- </ Select >
509+ { allowArbitraryQueues ? (
510+ < Input
511+ { ...conform . input ( queue , { type : "text" } ) }
512+ variant = "small"
513+ value = { queueValue ?? "" }
514+ onChange = { ( e ) => setQueueValue ( e . target . value ) }
515+ />
516+ ) : (
517+ < Select
518+ name = { queue . name }
519+ id = { queue . id }
520+ placeholder = "Select queue"
521+ variant = "tertiary/small"
522+ dropdownIcon
523+ items = { queues }
524+ filter = { { keys : [ "label" ] } }
525+ value = { queueValue }
526+ setValue = { setQueueValue }
527+ >
528+ { ( matches ) =>
529+ matches . map ( ( queueItem ) => (
530+ < SelectItem
531+ key = { queueItem . value }
532+ value = { queueItem . value }
533+ className = "max-w-[var(--popover-anchor-width)]"
534+ icon = {
535+ queueItem . type === "task" ? (
536+ < TaskIcon className = "size-4 shrink-0 text-blue-500" />
537+ ) : (
538+ < RectangleStackIcon className = "size-4 shrink-0 text-purple-500" />
539+ )
540+ }
541+ >
542+ < div className = "flex w-full min-w-0 items-center justify-between" >
543+ < span className = "truncate" > { queueItem . label } </ span >
544+ { queueItem . paused && (
545+ < Badge variant = "extra-small" className = "ml-1 text-warning" >
546+ Paused
547+ </ Badge >
548+ ) }
549+ </ div >
550+ </ SelectItem >
551+ ) )
552+ }
553+ </ Select >
554+ ) }
543555 < FormError id = { queue . errorId } > { queue . error } </ FormError >
544556 </ InputGroup >
545557 < InputGroup >
0 commit comments