2 * HTMLForm enhancements:
3 * Add/remove cloner clones without having to resubmit the form.
10 * Appends a new row with fields to the cloner.
13 * @param {jQuery} $createButton
15 function appendToCloner( $createButton
) {
17 $ul
= $createButton
.prev( 'ul.mw-htmlform-cloner-ul' ),
18 html
= $ul
.data( 'template' ).replace(
19 new RegExp( mw
.RegExp
.escape( $ul
.data( 'uniqueId' ) ), 'g' ),
20 'clone' + ( ++cloneCounter
)
24 .addClass( 'mw-htmlform-cloner-li' )
28 mw
.hook( 'htmlform.enhance' ).fire( $li
);
31 mw
.hook( 'htmlform.enhance' ).add( function ( $root
) {
32 var $deleteElement
= $root
.find( '.mw-htmlform-cloner-delete-button' ),
33 $createElement
= $root
.find( '.mw-htmlform-cloner-create-button' ),
36 $deleteElement
.each( function () {
37 var $element
= $( this ),
40 if ( $element
.hasClass( 'oo-ui-widget' ) ) {
41 deleteButton
= OO
.ui
.infuse( $element
);
42 deleteButton
.on( 'click', function () {
43 deleteButton
.$element
.closest( 'li.mw-htmlform-cloner-li' ).remove();
46 $element
.filter( ':input' ).click( function ( ev
) {
48 $( this ).closest( 'li.mw-htmlform-cloner-li' ).remove();
53 if ( $createElement
.hasClass( 'oo-ui-widget' ) ) {
54 createButton
= OO
.ui
.infuse( $createElement
);
55 createButton
.on( 'click', function () {
56 appendToCloner( createButton
.$element
);
59 $createElement
.filter( ':input' ).click( function ( ev
) {
62 appendToCloner( $( this ) );