@@ -58,12 +58,20 @@ impl Deref for LabelHasAssociatedControl {
5858
5959impl Default for LabelHasAssociatedControlConfig {
6060 fn default ( ) -> Self {
61+ let mut control_builder = GlobSetBuilder :: new ( ) ;
62+ control_builder. add ( Glob :: new ( "input" ) . unwrap ( ) ) ;
63+ control_builder. add ( Glob :: new ( "meter" ) . unwrap ( ) ) ;
64+ control_builder. add ( Glob :: new ( "output" ) . unwrap ( ) ) ;
65+ control_builder. add ( Glob :: new ( "progress" ) . unwrap ( ) ) ;
66+ control_builder. add ( Glob :: new ( "select" ) . unwrap ( ) ) ;
67+ control_builder. add ( Glob :: new ( "textarea" ) . unwrap ( ) ) ;
68+
6169 Self {
6270 depth : 2 ,
6371 assert : Assert :: Either ,
6472 label_components : vec ! [ "label" . into( ) ] ,
6573 label_attributes : vec ! [ "alt" . into( ) , "aria-label" . into( ) , "aria-labelledby" . into( ) ] ,
66- control_components : GlobSet :: empty ( ) ,
74+ control_components : control_builder . build ( ) . unwrap ( ) ,
6775 }
6876 }
6977}
@@ -114,16 +122,7 @@ impl Rule for LabelHasAssociatedControl {
114122 fn from_configuration ( value : serde_json:: Value ) -> Self {
115123 let mut config = LabelHasAssociatedControlConfig :: default ( ) ;
116124
117- let mut control_builder = GlobSetBuilder :: new ( ) ;
118- control_builder. add ( Glob :: new ( "input" ) . unwrap ( ) ) ;
119- control_builder. add ( Glob :: new ( "meter" ) . unwrap ( ) ) ;
120- control_builder. add ( Glob :: new ( "output" ) . unwrap ( ) ) ;
121- control_builder. add ( Glob :: new ( "progress" ) . unwrap ( ) ) ;
122- control_builder. add ( Glob :: new ( "select" ) . unwrap ( ) ) ;
123- control_builder. add ( Glob :: new ( "textarea" ) . unwrap ( ) ) ;
124-
125125 let Some ( options) = value. get ( 0 ) else {
126- config. control_components = control_builder. build ( ) . unwrap ( ) ;
127126 return Self ( Box :: new ( config) ) ;
128127 } ;
129128
@@ -166,6 +165,14 @@ impl Rule for LabelHasAssociatedControl {
166165 }
167166 }
168167
168+ let mut control_builder = GlobSetBuilder :: new ( ) ;
169+ control_builder. add ( Glob :: new ( "input" ) . unwrap ( ) ) ;
170+ control_builder. add ( Glob :: new ( "meter" ) . unwrap ( ) ) ;
171+ control_builder. add ( Glob :: new ( "output" ) . unwrap ( ) ) ;
172+ control_builder. add ( Glob :: new ( "progress" ) . unwrap ( ) ) ;
173+ control_builder. add ( Glob :: new ( "select" ) . unwrap ( ) ) ;
174+ control_builder. add ( Glob :: new ( "textarea" ) . unwrap ( ) ) ;
175+
169176 if let Some ( control_components) =
170177 options. get ( "controlComponents" ) . and_then ( serde_json:: Value :: as_array)
171178 {
@@ -185,13 +192,6 @@ impl Rule for LabelHasAssociatedControl {
185192 config. control_components = if let Ok ( controls) = control_builder. build ( ) {
186193 controls
187194 } else {
188- let mut control_builder = GlobSetBuilder :: new ( ) ;
189- control_builder. add ( Glob :: new ( "input" ) . unwrap ( ) ) ;
190- control_builder. add ( Glob :: new ( "meter" ) . unwrap ( ) ) ;
191- control_builder. add ( Glob :: new ( "output" ) . unwrap ( ) ) ;
192- control_builder. add ( Glob :: new ( "progress" ) . unwrap ( ) ) ;
193- control_builder. add ( Glob :: new ( "select" ) . unwrap ( ) ) ;
194- control_builder. add ( Glob :: new ( "textarea" ) . unwrap ( ) ) ;
195195 control_builder. build ( ) . unwrap ( )
196196 } ;
197197
@@ -918,6 +918,22 @@ fn test() {
918918 ) ,
919919 // Issue: <https://github.com/oxc-project/oxc/issues/7849>
920920 ( "<FilesContext.Provider value={{ addAlert, cwdInfo }} />" , None , None ) ,
921+ // Issue: <https://github.com/oxc-project/oxc/issues/11644>
922+ (
923+ r#"<label>
924+ <span>name</span>
925+ <input
926+ defaultValue={
927+ actionState.payload?.get("name")?.toString() ?? "Pool party"
928+ }
929+ name="name"
930+ placeholder="name"
931+ type="text"
932+ />
933+ </label>"# ,
934+ None ,
935+ None ,
936+ ) ,
921937 ] ;
922938
923939 let fail = vec ! [
0 commit comments