@@ -161,6 +161,43 @@ function appendInputGroup() {
161161 container . appendChild ( div ) ;
162162 }
163163 }
164+
165+ for ( const key in configMetadata ) {
166+ const metadata = configMetadata [ key ] ;
167+ if ( metadata . require ) {
168+ const dependentGroup = document . querySelector ( `.input-group[data-key="${ key } "]` ) ;
169+ if ( ! dependentGroup ) continue ;
170+ const dependentInput = dependentGroup . querySelector ( 'md-outlined-select, md-outlined-text-field' ) ;
171+ if ( ! dependentInput ) continue ;
172+
173+ const checkAndSetDisabled = ( ) => {
174+ const satisfied = metadata . require . every ( req =>
175+ Object . entries ( req ) . every ( ( [ reqKey , reqValue ] ) => config [ reqKey ] === reqValue )
176+ ) ;
177+
178+ if ( satisfied ) {
179+ dependentInput . removeAttribute ( 'disabled' ) ;
180+ } else {
181+ dependentInput . setAttribute ( 'disabled' , '' ) ;
182+ }
183+ } ;
184+
185+ metadata . require . forEach ( req => {
186+ Object . keys ( req ) . forEach ( reqKey => {
187+ const requirementGroup = document . querySelector ( `.input-group[data-key="${ reqKey } "]` ) ;
188+ if ( requirementGroup ) {
189+ const requirementInput = requirementGroup . querySelector ( 'md-outlined-select, md-outlined-text-field' ) ;
190+ if ( requirementInput ) {
191+ const eventType = requirementInput . tagName . toLowerCase ( ) === 'md-outlined-select' ? 'change' : 'input' ;
192+ requirementInput . addEventListener ( eventType , checkAndSetDisabled ) ;
193+ }
194+ }
195+ } ) ;
196+ } ) ;
197+ checkAndSetDisabled ( ) ;
198+ }
199+ }
200+
164201 setupKeyboard ( ) ;
165202 appendExtras ( ) ;
166203}
0 commit comments