@@ -314,6 +314,7 @@ define([
314
314
} ) ;
315
315
// Toggle operation (minimize)
316
316
$ ( this . wrapSelector ( '.vp-popup-toggle' ) ) . on ( 'click' , function ( evt ) {
317
+ evt . stopPropagation ( ) ;
317
318
$ ( that . eventTarget ) . trigger ( {
318
319
type : 'close_option_page' ,
319
320
component : that
@@ -711,7 +712,37 @@ define([
711
712
}
712
713
713
714
loadState ( ) {
714
- /** Implementation needed */
715
+ vpLog . display ( VP_LOG_TYPE . DEVELOP , this . state ) ;
716
+
717
+ let that = this ;
718
+ Object . keys ( this . state ) . forEach ( key => {
719
+ if ( key && key !== '' && key !== 'config' ) {
720
+ let tag = $ ( that . wrapSelector ( '#' + key ) + ', ' + that . wrapSelector ( 'input[name="' + key + '"]' ) ) ;
721
+ let tagName = $ ( tag ) . prop ( 'tagName' ) ;
722
+ let savedValue = that . state [ key ] ;
723
+ switch ( tagName ) {
724
+ case 'INPUT' :
725
+ let inputType = $ ( tag ) . prop ( 'type' ) ;
726
+ if ( inputType === 'text' || inputType === 'number' || inputType === 'hidden' ) {
727
+ $ ( tag ) . val ( savedValue ) ;
728
+ break ;
729
+ }
730
+ if ( inputType === 'checkbox' ) {
731
+ $ ( tag ) . prop ( 'checked' , savedValue ) ;
732
+ break ;
733
+ }
734
+ if ( inputType === 'radio' ) {
735
+ $ ( tag ) . filter ( `[value="${ savedValue } "]` ) . prop ( 'checked' , true ) ;
736
+ }
737
+ break ;
738
+ case 'TEXTAREA' :
739
+ case 'SELECT' :
740
+ default :
741
+ $ ( tag ) . val ( savedValue ) ;
742
+ break ;
743
+ }
744
+ }
745
+ } ) ;
715
746
}
716
747
717
748
saveState ( ) {
@@ -733,6 +764,15 @@ define([
733
764
let inputType = $ ( tag ) . prop ( 'type' ) ;
734
765
if ( inputType == 'checkbox' ) {
735
766
newValue = $ ( tag ) . prop ( 'checked' ) ;
767
+ } else if ( inputType == 'radio' ) {
768
+ let radioGroup = $ ( tag ) . prop ( 'name' ) ;
769
+ let checked = $ ( tag ) . prop ( 'checked' ) ;
770
+ if ( checked === true ) {
771
+ id = radioGroup ;
772
+ newValue = $ ( tag ) . val ( ) ;
773
+ } else {
774
+ return ;
775
+ }
736
776
} else {
737
777
// inputType == 'text' || inputType == 'number' || inputType == 'hidden' || inputType == 'color' || inputType == 'range'
738
778
newValue = $ ( tag ) . val ( ) ;
@@ -787,7 +827,7 @@ define([
787
827
*/
788
828
checkRequiredOption ( ) {
789
829
let requiredFilled = true ;
790
- let requiredTags = $ ( this . wrapSelector ( 'input[required=true]' ) + ',' + this . wrapSelector ( 'input[required=required]' ) ) ;
830
+ let requiredTags = $ ( this . wrapSelector ( 'input[required=true]:visible ' ) + ',' + this . wrapSelector ( 'input[required=required]:visible ' ) ) ;
791
831
792
832
vpLog . display ( VP_LOG_TYPE . DEVELOP , 'checkRequiredOption' , this , requiredTags ) ;
793
833
@@ -819,9 +859,9 @@ define([
819
859
let checkedList = JSON . parse ( result ) ;
820
860
let executeList = [ ] ;
821
861
checkedList && checkedList . forEach ( ( mod , idx ) => {
822
- if ( mod == false ) {
862
+ if ( mod === false ) {
823
863
let modInfo = vpConfig . getModuleCode ( checkModules [ idx ] ) ;
824
- if ( modInfo ) {
864
+ if ( modInfo && modInfo ?. code !== '' ) {
825
865
executeList . push ( modInfo . code ) ;
826
866
}
827
867
}
@@ -915,7 +955,7 @@ define([
915
955
save ( ) {
916
956
if ( this . prop . finish && typeof this . prop . finish == 'function' ) {
917
957
var code = this . generateCode ( ) ;
918
- this . prop . finish ( code ) ;
958
+ this . prop . finish ( code , this . state ) ;
919
959
}
920
960
$ ( this . eventTarget ) . trigger ( {
921
961
type : 'apply_option_page' ,
0 commit comments