Signed by hanna SSH key fingerprint: SHA256:4g9cWhkAAw8gwqhJUcVbSnGEvdGwklW+1Aa/fMUu59k
assets/base.css +10 −12 assets/fabrica.js +11 −6 crates/web/src/issues.rs +15 −15 assets/base.css +10 −12 Expand 176 hidden lines 177 177 white-space : nowrap ; 178 178 } 179 179 180 - . label-dropdown-wrap { 181 - display : flex ; 182 - align-items : center ; 183 - flex-wrap : wrap ; 184 - gap : 0.4rem ; 185 - margin-bottom : 0.5rem ; 186 - } 187 - . label-dropdown-chips { 188 - display : flex ; 189 - flex-wrap : wrap ; 190 - gap : 0.35rem ; 191 - } 192 180 . label-dropdown { 193 181 display : inline-block ; 194 182 position : relative ; 183 + margin-bottom : 0.5rem ; 195 184 } 196 185 . label-dropdown > summary { 197 186 list-style : none ; 198 187 width : auto ; 199 188 cursor : pointer ; 189 + display : inline-flex ; 190 + align-items : center ; 191 + gap : 0.4rem ; 192 + } 193 + . label-dropdown-label { 194 + display : inline-flex ; 195 + align-items : center ; 196 + flex-wrap : wrap ; 197 + gap : 0.3rem ; 200 198 } 201 199 . label-dropdown > summary :: -webkit-details-marker { 202 200 display : none ;
assets/fabrica.js +11 −6 Expand 64 hidden lines 65 65 } ) ; 66 66 } ) ; 67 67 68 - 68 + 69 69 document . querySelectorAll ( "[data-label-dropdown]" ) . forEach ( function ( dd ) { 70 - var chips = dd . parentNode. querySelector ( "[data-label-chips]" ) ; 71 - if ( ! chips ) return ; 70 + var summaryLabel = dd . querySelector ( "[data-label-summary]" ) ; 71 + if ( ! summaryLabel ) return ; 72 72 function sync ( ) { 73 - chips . textContent = "" ; 74 - dd . querySelectorAll ( 'input[type="checkbox"]:checked' ) . forEach ( function ( cb ) { 73 + var checked = dd . querySelectorAll ( 'input[type="checkbox"]:checked' ) ; 74 + summaryLabel . textContent = "" ; 75 + if ( checked . length === 0) { 76 + summaryLabel . textContent = "Select labels" ; 77 + return ; 78 + } 79 + checked . forEach ( function ( cb ) { 75 80 var chip = document . createElement ( "span" ) ; 76 81 chip . className = "label-chip" ; 77 82 chip . style. setProperty ( "--label-color" , cb . getAttribute ( "data-label-color" ) || "#888" ) ; 78 83 chip . textContent = cb . getAttribute ( "data-label-name" ) || cb . value; 79 - chips . appendChild ( chip ) ; 84 + summaryLabel . appendChild ( chip ) ; 80 85 } ) ; 81 86 } 82 87 dd . addEventListener ( "change" , sync ) ;
crates/web/src/issues.rs +15 −15 Expand 503 hidden lines 504 504 } 505 505 506 506 507 - 508 - 507 + 508 + 509 509 fn label_dropdown ( repo_labels : & [ Label ] ) -> Markup { 510 510 html ! { 511 - div class="label-dropdown-wrap" { 512 - details class="menu label-dropdown" data-menu data-label-dropdown { 513 - summary class="btn" { "Select labels " ( icon ( Icon :: ChevronDown ) ) } 514 - div class="menu-popover label-menu" { 515 - @for l in repo_labels { 516 - label class="checkbox" { 517 - input type ="checkbox" name="label" value=( l. id) 518 - data-label-name=( l. name) 519 - data-label-color=( css_color ( & l. color) ) ; 520 - " " span class="label-swatch" style=( format ! ( "--label-color: {}" , css_color ( & l. color) ) ) { } 521 - " " ( l. name) 522 - } 511 + details class="menu label-dropdown" data-menu data-label-dropdown { 512 + summary class="btn" { 513 + span class="label-dropdown-label" data-label-summary { "Select labels" } 514 + ( icon ( Icon :: ChevronDown ) ) 515 + } 516 + div class="menu-popover label-menu" { 517 + @for l in repo_labels { 518 + label class="checkbox" { 519 + input type ="checkbox" name="label" value=( l. id) 520 + data-label-name=( l. name) 521 + data-label-color=( css_color ( & l. color) ) ; 522 + " " span class="label-swatch" style=( format ! ( "--label-color: {}" , css_color ( & l. color) ) ) { } 523 + " " ( l. name) 523 524 } 524 525 } 525 526 } 526 - span class="label-dropdown-chips" data-label-chips { } 527 527 } 528 528 } 529 529 }