8
8
faChevronCircleUp ,
9
9
faSpinner ,
10
10
faExclamationTriangle ,
11
+ faTimes ,
11
12
} from '@fortawesome/free-solid-svg-icons' ;
12
13
13
14
import {
@@ -628,8 +629,16 @@ export class BugFilerClass extends React.Component {
628
629
return (
629
630
< div >
630
631
< Modal show = { isOpen } onHide = { toggle } size = "lg" >
631
- < Modal . Header closeButton >
632
+ < Modal . Header >
632
633
< Modal . Title > Intermittent Bug Filer</ Modal . Title >
634
+ < button
635
+ type = "button"
636
+ className = "close"
637
+ aria-label = "Close"
638
+ onClick = { toggle }
639
+ >
640
+ < FontAwesomeIcon icon = { faTimes } />
641
+ </ button >
633
642
</ Modal . Header >
634
643
< Modal . Body >
635
644
< form className = "d-flex flex-column" >
@@ -673,25 +682,21 @@ export class BugFilerClass extends React.Component {
673
682
Searching { productSearch }
674
683
</ div >
675
684
) }
676
- < Form . Group tag = "fieldset" className = "mt-1" >
685
+ < Form . Group tag = "fieldset" className = "mt-1 mb-3 " >
677
686
{ suggestedProducts . map ( ( product ) => (
678
- < div
679
- className = "ml-4"
687
+ < Form . Check
688
+ // className="ml-4"
680
689
key = { `modalProductSuggestion${ product } ` }
681
- >
682
- < Form . Label >
683
- < Form . Control
684
- type = "radio"
685
- value = { product }
686
- checked = { product === selectedProduct }
687
- onChange = { ( evt ) =>
688
- this . setState ( { selectedProduct : evt . target . value } )
689
- }
690
- name = "productGroup"
691
- />
692
- { product }
693
- </ Form . Label >
694
- </ div >
690
+ type = "radio"
691
+ id = { `product-${ product } ` }
692
+ label = { product }
693
+ value = { product }
694
+ checked = { product === selectedProduct }
695
+ onChange = { ( evt ) =>
696
+ this . setState ( { selectedProduct : evt . target . value } )
697
+ }
698
+ name = "productGroup"
699
+ />
695
700
) ) }
696
701
</ Form . Group >
697
702
</ div >
@@ -762,7 +767,7 @@ export class BugFilerClass extends React.Component {
762
767
/>
763
768
< span
764
769
id = "summaryLength"
765
- className = { `ml-1 font-weight-bold lg ${
770
+ className = { `ml-1 font-weight-bold lg align-self-center ${
766
771
summary . length > 255 ? 'text-danger' : 'text-success'
767
772
} `}
768
773
>
@@ -782,58 +787,58 @@ export class BugFilerClass extends React.Component {
782
787
/>
783
788
</ span >
784
789
) }
785
- < div className = "ml-5 mt-2" >
786
- < div >
787
- < Form . Label >
788
- < Form . Control
789
- type = " checkbox"
790
- checked = { checkedLogLinks . has ( 'Parsed log' ) }
791
- onChange = { ( ) =>
792
- this . toggleCheckedLogLink ( 'Parsed log' , parsedLog )
793
- }
794
- />
790
+ < div className = "ml-4 mt-2" >
791
+ < Form . Check
792
+ className = "mb-2"
793
+ type = "checkbox"
794
+ id = "parsed-log- checkbox"
795
+ checked = { checkedLogLinks . has ( 'Parsed log' ) }
796
+ onChange = { ( ) =>
797
+ this . toggleCheckedLogLink ( 'Parsed log' , parsedLog )
798
+ }
799
+ label = {
795
800
< a
796
801
target = "_blank"
797
802
rel = "noopener noreferrer"
798
803
href = { parsedLog }
799
804
>
800
805
Include Parsed Log Link
801
806
</ a >
802
- </ Form . Label >
803
- </ div >
804
- < div >
805
- < Form . Label >
806
- < Form . Control
807
- type = " checkbox"
808
- checked = { checkedLogLinks . has ( 'Full log' ) }
809
- onChange = { ( ) =>
810
- this . toggleCheckedLogLink ( 'Full log' , fullLog )
811
- }
812
- />
807
+ }
808
+ / >
809
+ < Form . Check
810
+ className = "mb-1"
811
+ type = "checkbox"
812
+ id = "full-log- checkbox"
813
+ checked = { checkedLogLinks . has ( 'Full log' ) }
814
+ onChange = { ( ) =>
815
+ this . toggleCheckedLogLink ( 'Full log' , fullLog )
816
+ }
817
+ label = {
813
818
< a target = "_blank" rel = "noopener noreferrer" href = { fullLog } >
814
819
Include Full Log Link
815
820
</ a >
816
- </ Form . Label >
817
- </ div >
821
+ }
822
+ / >
818
823
{ ! ! reftestUrl && (
819
- < div >
820
- < Form . Label >
821
- < Form . Control
822
- type = " checkbox"
823
- checked = { checkedLogLinks . has ( 'Reftest URL' ) }
824
- onChange = { ( ) =>
825
- this . toggleCheckedLogLink ( 'Reftest URL' , reftestUrl )
826
- }
827
- />
824
+ < Form . Check
825
+ className = "mb-1"
826
+ type = "checkbox"
827
+ id = "reftest-url- checkbox"
828
+ checked = { checkedLogLinks . has ( 'Reftest URL' ) }
829
+ onChange = { ( ) =>
830
+ this . toggleCheckedLogLink ( 'Reftest URL' , reftestUrl )
831
+ }
832
+ label = {
828
833
< a
829
834
target = "_blank"
830
835
rel = "noopener noreferrer"
831
836
href = { reftestUrl }
832
837
>
833
838
Include Reftest Viewer Link
834
839
</ a >
835
- </ Form . Label >
836
- </ div >
840
+ }
841
+ / >
837
842
) }
838
843
</ div >
839
844
< div className = "d-flex flex-column" >
@@ -850,102 +855,100 @@ export class BugFilerClass extends React.Component {
850
855
rows = { 5 }
851
856
/>
852
857
</ div >
853
- < div className = "d-inline-flex mt-2 ml-5" >
854
- < div className = "mt-2" >
855
- < Form . Label >
856
- < Form . Control
857
- onChange = { ( ) =>
858
- this . setState ( { isIntermittent : ! isIntermittent } )
859
- }
860
- type = "checkbox"
861
- checked = { isIntermittent }
862
- />
863
- This is an intermittent failure
864
- </ Form . Label >
865
- </ div >
866
- < div className = "d-inline-flex ml-2" >
867
- < Form . Control
868
- id = "regressedBy"
869
- type = "text"
870
- className = "ml-1"
871
- onChange = { ( evt ) =>
872
- this . setState ( { regressedBy : evt . target . value } )
873
- }
874
- placeholder = "Regressed by"
875
- />
876
- < Tooltip
877
- target = "regressedBy"
878
- placement = "bottom"
879
- isOpen = { tooltipOpen . regressedBy }
880
- toggle = { ( ) => this . toggleTooltip ( 'regressedBy' ) }
881
- >
882
- Comma-separated list of bugs
883
- </ Tooltip >
884
- < Form . Control
885
- id = "seeAlso"
886
- className = "ml-1"
887
- type = "text"
888
- onChange = { ( evt ) =>
889
- this . setState ( { seeAlso : evt . target . value } )
890
- }
891
- placeholder = "See also"
892
- />
893
- < Tooltip
894
- target = "seeAlso"
895
- placement = "bottom"
896
- isOpen = { tooltipOpen . seeAlso }
897
- toggle = { ( ) => this . toggleTooltip ( 'seeAlso' ) }
898
- >
899
- Comma-separated list of bugs
900
- </ Tooltip >
901
- </ div >
902
- </ div >
903
- < div className = "d-inline-flex mt-2 ml-5" >
904
- < Form . Label >
905
- < Form . Control
906
- id = "securityIssue"
858
+ < div className = "ml-4" >
859
+ < div className = "d-inline-flex mb-1" >
860
+ < Form . Check
861
+ className = "mt-2"
862
+ type = "checkbox"
863
+ id = "intermittent-checkbox"
864
+ checked = { isIntermittent }
907
865
onChange = { ( ) =>
908
- this . setState ( { isSecurityIssue : ! isSecurityIssue } )
866
+ this . setState ( { isIntermittent : ! isIntermittent } )
909
867
}
910
- type = "checkbox"
911
- checked = { isSecurityIssue }
868
+ label = "This is an intermittent failure"
912
869
/>
913
- Report this as a security issue
914
- </ Form . Label >
915
- </ div >
916
- { [ 'autoland' , 'mozilla-central' , 'try' ] . includes (
917
- currentRepo . name ,
918
- ) && (
919
- < div className = "d-inline-flex mt-2 ml-5" >
920
- < Form . Label >
870
+ < div className = "d-inline-flex ml-2" >
921
871
< Form . Control
872
+ id = "regressedBy"
873
+ type = "text"
874
+ className = "ml-1"
875
+ onChange = { ( evt ) =>
876
+ this . setState ( { regressedBy : evt . target . value } )
877
+ }
878
+ placeholder = "Regressed by"
879
+ />
880
+ < Tooltip
881
+ target = "regressedBy"
882
+ placement = "bottom"
883
+ isOpen = { tooltipOpen . regressedBy }
884
+ toggle = { ( ) => this . toggleTooltip ( 'regressedBy' ) }
885
+ >
886
+ Comma-separated list of bugs
887
+ </ Tooltip >
888
+ < Form . Control
889
+ id = "seeAlso"
890
+ className = "ml-1"
891
+ type = "text"
892
+ onChange = { ( evt ) =>
893
+ this . setState ( { seeAlso : evt . target . value } )
894
+ }
895
+ placeholder = "See also"
896
+ />
897
+ < Tooltip
898
+ target = "seeAlso"
899
+ placement = "bottom"
900
+ isOpen = { tooltipOpen . seeAlso }
901
+ toggle = { ( ) => this . toggleTooltip ( 'seeAlso' ) }
902
+ >
903
+ Comma-separated list of bugs
904
+ </ Tooltip >
905
+ </ div >
906
+ </ div >
907
+ < Form . Check
908
+ className = "mb-2"
909
+ type = "checkbox"
910
+ id = "security-issue-checkbox"
911
+ checked = { isSecurityIssue }
912
+ onChange = { ( ) =>
913
+ this . setState ( { isSecurityIssue : ! isSecurityIssue } )
914
+ }
915
+ label = "Report this as a security issue"
916
+ />
917
+ { [ 'autoland' , 'mozilla-central' , 'try' ] . includes (
918
+ currentRepo . name ,
919
+ ) && (
920
+ < div className = "mb-2" >
921
+ < Form . Check
922
922
type = "checkbox"
923
+ id = "confirm-failure-checkbox"
923
924
checked = { launchConfirmFailure }
924
925
onChange = { ( ) =>
925
926
this . setState ( {
926
927
launchConfirmFailure : ! launchConfirmFailure ,
927
928
} )
928
929
}
930
+ label = "Launch the Confirm Failures task at bug submission"
929
931
/>
930
- Launch the Confirm Failures task at bug submission
931
- </ Form . Label >
932
- </ div >
933
- ) }
934
- { ! ! crashSignatures . length && (
935
- < div >
936
- < Form . Label htmlFor = "signature-input" > Signature:</ Form . Label >
937
- < Form . Control
938
- as = "textarea"
939
- id = "signature-input"
940
- onChange = { ( evt ) =>
941
- this . setState ( { crashSignatures : evt . target . value } )
942
- }
943
- maxLength = "2048"
944
- readOnly
945
- value = { crashSignatures . join ( '\n' ) }
946
- />
947
- </ div >
948
- ) }
932
+ </ div >
933
+ ) }
934
+ { ! ! crashSignatures . length && (
935
+ < div >
936
+ < Form . Label htmlFor = "signature-input" >
937
+ Signature:
938
+ </ Form . Label >
939
+ < Form . Control
940
+ as = "textarea"
941
+ id = "signature-input"
942
+ onChange = { ( evt ) =>
943
+ this . setState ( { crashSignatures : evt . target . value } )
944
+ }
945
+ maxLength = "2048"
946
+ readOnly
947
+ value = { crashSignatures . join ( '\n' ) }
948
+ />
949
+ </ div >
950
+ ) }
951
+ </ div >
949
952
</ form >
950
953
</ Modal . Body >
951
954
< Modal . Footer >
0 commit comments