@@ -1583,20 +1583,23 @@ function renderEggStep() {
15831583 if ( selEgg ) {
15841584 const images = Object . entries ( selEgg . dockerImages || { } ) ;
15851585 if ( images . length > 1 ) {
1586+ const optionsHtml = images . map ( ( [ displayName , image ] ) => {
1587+ const shortName = displayName || image . split ( '/' ) . pop ( ) . split ( ':' ) . pop ( ) || image ;
1588+ return `<div class="custom-select-option" data-value="${ escapeHtml ( image ) } ">${ escapeHtml ( shortName ) } </div>` ;
1589+ } ) . join ( '' ) ;
1590+ const currentLabel = createState . selectedDockerImage
1591+ ? ( images . find ( ( [ , img ] ) => img === createState . selectedDockerImage ) ?. [ 0 ] || createState . selectedDockerImage . split ( '/' ) . pop ( ) . split ( ':' ) . pop ( ) )
1592+ : 'Select an image' ;
15861593 dockerSection = html `
15871594 < div class ="wizard-subsection " style ="margin-top:24px ">
15881595 < div class ="wizard-step-title " style ="font-size:1rem "> Docker Image</ div >
15891596 < p class ="wizard-step-desc "> Choose a Docker image for this egg</ p >
1590- < div class ="docker-grid ">
1591- ${ images . map ( ( [ displayName , image ] ) => {
1592- const shortName = displayName || image . split ( '/' ) . pop ( ) . split ( ':' ) . pop ( ) || image ;
1593- return html `
1594- < div class ="docker-card ${ createState . selectedDockerImage === image ? 'selected' : '' } " data-docker ="${ image } ">
1595- < i data-lucide ="container " style ="width:24px;height:24px "> </ i >
1596- < span > ${ escapeHtml ( shortName ) } </ span >
1597- </ div >
1598- ` ;
1599- } ) . join ( '' ) }
1597+ < div class ="custom-select " id ="docker-select ">
1598+ < div class ="custom-select-trigger " tabindex ="0 ">
1599+ < span class ="custom-select-label "> ${ escapeHtml ( currentLabel ) } </ span >
1600+ < i data-lucide ="chevron-down " class ="custom-select-arrow " style ="width:16px;height:16px "> </ i >
1601+ </ div >
1602+ < div class ="custom-select-dropdown "> ${ optionsHtml } </ div >
16001603 </ div >
16011604 </ div >
16021605 ` ;
@@ -1737,14 +1740,30 @@ function attachWizardListeners(step) {
17371740 } ) ;
17381741 } ) ;
17391742
1740- const dockerCards = document . querySelectorAll ( '.docker-card' ) ;
1741- dockerCards . forEach ( c => {
1742- c . addEventListener ( 'click' , ( ) => {
1743- dockerCards . forEach ( c2 => c2 . classList . remove ( 'selected' ) ) ;
1744- c . classList . add ( 'selected' ) ;
1745- createState . selectedDockerImage = c . dataset . docker ;
1743+ const dockerSelect = document . querySelector ( '#docker-select' ) ;
1744+ if ( dockerSelect ) {
1745+ const trigger = dockerSelect . querySelector ( '.custom-select-trigger' ) ;
1746+ const label = dockerSelect . querySelector ( '.custom-select-label' ) ;
1747+
1748+ trigger . addEventListener ( 'click' , ( e ) => {
1749+ e . stopPropagation ( ) ;
1750+ document . querySelectorAll ( '.custom-select.open' ) . forEach ( s => s . classList . remove ( 'open' ) ) ;
1751+ dockerSelect . classList . add ( 'open' ) ;
17461752 } ) ;
1747- } ) ;
1753+
1754+ dockerSelect . querySelectorAll ( '.custom-select-option' ) . forEach ( opt => {
1755+ opt . addEventListener ( 'click' , ( e ) => {
1756+ e . stopPropagation ( ) ;
1757+ createState . selectedDockerImage = opt . dataset . value ;
1758+ label . textContent = opt . textContent ;
1759+ dockerSelect . classList . remove ( 'open' ) ;
1760+ } ) ;
1761+ } ) ;
1762+
1763+ document . addEventListener ( 'click' , ( ) => {
1764+ dockerSelect . classList . remove ( 'open' ) ;
1765+ } ) ;
1766+ }
17481767
17491768 if ( nextBtn ) {
17501769 nextBtn . addEventListener ( 'click' , ( ) => {
0 commit comments