- // This code is also loaded on the "block succeeded" page where there is no form,
- // so username and expiry fields might also be missing.
- var blockTargetWidget = infuseIfExists( $( '#mw-bi-target' ) ),
- anonOnlyField = infuseIfExists( $( '#mw-input-wpHardBlock' ).closest( '.oo-ui-fieldLayout' ) ),
- enableAutoblockField = infuseIfExists( $( '#mw-input-wpAutoBlock' ).closest( '.oo-ui-fieldLayout' ) ),
- hideUserWidget = infuseIfExists( $( '#mw-input-wpHideUser' ) ),
- hideUserField = infuseIfExists( $( '#mw-input-wpHideUser' ).closest( '.oo-ui-fieldLayout' ) ),
- watchUserField = infuseIfExists( $( '#mw-input-wpWatch' ).closest( '.oo-ui-fieldLayout' ) ),
- expiryWidget = infuseIfExists( $( '#mw-input-wpExpiry' ) ),
- editingWidget = infuseIfExists( $( '#mw-input-wpEditing' ) ),
- editingRestrictionWidget = infuseIfExists( $( '#mw-input-wpEditingRestriction' ) ),
- preventTalkPageEdit = infuseIfExists( $( '#mw-input-wpDisableUTEdit' ) ),
- pageRestrictionsWidget = infuseIfExists( $( '#mw-input-wpPageRestrictions' ) ),
- namespaceRestrictionsWidget = infuseIfExists( $( '#mw-input-wpNamespaceRestrictions' ) ),
- createAccountWidget = infuseIfExists( $( '#mw-input-wpCreateAccount' ) ),
- userChangedCreateAccount = mw.config.get( 'wgCreateAccountDirty' ),
- updatingBlockOptions = false;
+ var blockTargetWidget, anonOnlyWidget, enableAutoblockWidget, hideUserWidget, watchUserWidget,
+ expiryWidget, editingWidget, editingRestrictionWidget, preventTalkPageEditWidget,
+ pageRestrictionsWidget, namespaceRestrictionsWidget, createAccountWidget, data,
+ enablePartialBlocks, blockAllowsUTEdit, userChangedCreateAccount, updatingBlockOptions;
+
+ function preserveSelectedStateOnDisable( widget ) {
+ var widgetWasSelected;
+
+ if ( !widget ) {
+ return;
+ }
+
+ // 'disable' event fires if disabled state changes
+ widget.on( 'disable', function ( disabled ) {
+ if ( disabled ) {
+ // Disabling an enabled widget
+ // Save selected and set selected to false
+ widgetWasSelected = widget.isSelected();
+ widget.setSelected( false );
+ } else {
+ // Enabling a disabled widget
+ // Set selected to the saved value
+ if ( widgetWasSelected !== undefined ) {
+ widget.setSelected( widgetWasSelected );
+ }
+ widgetWasSelected = undefined;
+ }
+ } );
+ }