|
14 | 14 |
|
15 | 15 | // Name attribute |
16 | 16 | var name = this.name; |
17 | | - if ( name && ! $field.closest( '.rwmb-group-clone' ).length ) { |
| 17 | + if ( name && !$field.closest( '.rwmb-group-clone' ).length ) { |
18 | 18 | $field.attr( 'name', cloneIndex.replace( index, name, '[', ']', false ) ); |
19 | 19 | } |
20 | 20 |
|
|
60 | 60 | var regex = new RegExp( cloneIndex.escapeRegex( before ) + '(\\d+)' + cloneIndex.escapeRegex( after ) + end ), |
61 | 61 | newValue = before + index + after; |
62 | 62 |
|
63 | | - return regex.test( value ) ? value.replace( regex, newValue ) : (alternative ? value + newValue : value ); |
| 63 | + return regex.test( value ) ? value.replace( regex, newValue ) : ( alternative ? value + newValue : value ); |
64 | 64 | }, |
65 | 65 |
|
66 | 66 | /** |
|
94 | 94 |
|
95 | 95 | // Object holds all method related to fields' value when clone. |
96 | 96 | var cloneValue = { |
97 | | - setDefault: function() { |
| 97 | + setDefault: function () { |
98 | 98 | var $field = $( this ); |
99 | 99 |
|
100 | 100 | if ( true !== $field.data( 'clone-default' ) ) { |
|
107 | 107 | if ( 'radio' === type ) { |
108 | 108 | $field.prop( 'checked', $field.val() === defaultValue ); |
109 | 109 | } else if ( $field.hasClass( 'rwmb-checkbox' ) || $field.hasClass( 'rwmb-switch' ) ) { |
110 | | - $field.prop( 'checked', !! defaultValue ); |
| 110 | + $field.prop( 'checked', !!defaultValue ); |
111 | 111 | } else if ( $field.hasClass( 'rwmb-checkbox_list' ) ) { |
112 | 112 | var value = $field.val(); |
113 | 113 | $field.prop( 'checked', Array.isArray( defaultValue ) ? -1 !== defaultValue.indexOf( value ) : value == defaultValue ); |
114 | 114 | } else if ( $field.is( 'select' ) ) { |
115 | 115 | $field.find( 'option[value="' + defaultValue + '"]' ).prop( 'selected', true ); |
116 | | - } else if ( ! $field.hasClass( 'rwmb-hidden' ) ) { |
| 116 | + } else if ( !$field.hasClass( 'rwmb-hidden' ) ) { |
117 | 117 | $field.val( defaultValue ); |
118 | 118 | } |
119 | 119 | }, |
120 | | - clear: function() { |
| 120 | + clear: function () { |
121 | 121 | const $field = $( this ), |
122 | 122 | type = $field.attr( 'type' ); |
123 | 123 |
|
124 | 124 | if ( 'radio' === type || 'checkbox' === type ) { |
125 | 125 | $field.prop( 'checked', false ); |
126 | 126 | } else if ( $field.is( 'select' ) ) { |
127 | | - $field.prop( 'selectedIndex', 0 ); |
128 | | - } else if ( ! $field.hasClass( 'rwmb-hidden' ) ) { |
| 127 | + if ( $field.attr( 'multiple' ) ) { |
| 128 | + $field.find( 'option' ).prop( 'selected', false ); |
| 129 | + $field.val( null ).trigger( 'change' ); |
| 130 | + } else { |
| 131 | + $field.prop( 'selectedIndex', 0 ); |
| 132 | + } |
| 133 | + } else if ( !$field.hasClass( 'rwmb-hidden' ) ) { |
129 | 134 | $field.val( '' ); |
130 | 135 | } |
131 | 136 | } |
|
146 | 151 | $template.find( rwmb.inputSelectors ).each( function () { |
147 | 152 | this.id = this.id.includes( '_rwmb_template' ) ? this.id : this.id + '_rwmb_template'; |
148 | 153 | } ); |
149 | | - |
| 154 | + |
150 | 155 | // Clear fields' values. |
151 | | - var $inputs = $clone.find( rwmb.inputSelectors ); |
| 156 | + var $inputs = $clone.find( rwmb.inputSelectors ); |
152 | 157 | let count = $container.children( '.rwmb-clone' ).length; |
153 | | - |
| 158 | + |
154 | 159 | // The first clone should keep the default values. |
155 | 160 | if ( count > 1 ) { |
156 | 161 | $inputs.each( cloneValue.clear ); |
157 | 162 | } |
158 | | - |
| 163 | + |
159 | 164 | $clone = $clone.removeClass( 'rwmb-clone-template' ); |
160 | 165 | // Remove validation errors. |
161 | 166 | $clone.find( 'p.rwmb-error' ).remove(); |
162 | | - |
| 167 | + |
163 | 168 | // Insert clone. |
164 | 169 | $clone.insertAfter( $last ); |
165 | 170 | count++; |
|
195 | 200 | let offset = 1; |
196 | 201 |
|
197 | 202 | // Add the first clone if data-clone-empty-start = false |
198 | | - const cloneEmptyStart = $container[0].dataset.cloneEmptyStart ?? 0; |
| 203 | + const cloneEmptyStart = $container[ 0 ].dataset.cloneEmptyStart ?? 0; |
199 | 204 |
|
200 | 205 | // If clone-empty-start is true, we need at least 1 item. |
201 | 206 | if ( cloneEmptyStart == 1 ) { |
|
235 | 240 |
|
236 | 241 | toggleRemoveButtons( $container ); |
237 | 242 | toggleAddButton( $container ); |
238 | | - sortClones.apply( $container[0] ); |
| 243 | + sortClones.apply( $container[ 0 ] ); |
239 | 244 | } |
240 | 245 |
|
241 | 246 | function removeClone( e ) { |
|
279 | 284 | // Make the placeholder has the same height as dragged item |
280 | 285 | ui.placeholder.height( ui.item.outerHeight() ); |
281 | 286 | }, |
282 | | - stop: function( event, ui ) { |
| 287 | + stop: function ( event, ui ) { |
283 | 288 | ui.item.trigger( 'mb_init_editors' ); |
284 | 289 | ui.item.find( rwmb.inputSelectors ).first().trigger( 'mb_change' ); |
285 | 290 | } |
|
310 | 315 | rwmb.sortClones = sortClones; |
311 | 316 | rwmb.toggleRemoveButtons = toggleRemoveButtons; |
312 | 317 | rwmb.toggleAddButton = toggleAddButton; |
313 | | -} )( jQuery, rwmb ); |
| 318 | +}( jQuery, rwmb ) ); |
0 commit comments