balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

autocomplete.js (1660B)


      1 ( function ( $, rwmb, i18n ) {
      2 	'use strict';
      3 
      4 	/**
      5 	 * Transform an input into an autocomplete.
      6 	 */
      7 	function transform( e ) {
      8 		var $this = $( this ),
      9 			$search = $this.siblings( '.rwmb-autocomplete-search' ),
     10 			$result = $this.siblings( '.rwmb-autocomplete-results' ),
     11 			name = $this.attr( 'name' );
     12 
     13 		// If the function is called on cloning, then change the field name and clear all results
     14 		if ( e.hasOwnProperty( 'type' ) && 'clone' == e.type ) {
     15 			$result.html( '' );
     16 		}
     17 
     18 		$search.removeClass( 'ui-autocomplete-input' ).autocomplete( {
     19 			minLength: 0,
     20 			source: $this.data( 'options' ),
     21 			select: function ( event, ui ) {
     22 				$result.append(
     23 					'<div class="rwmb-autocomplete-result">' +
     24 					'<div class="label">' + ( typeof ui.item.excerpt !== 'undefined' ? ui.item.excerpt : ui.item.label ) + '</div>' +
     25 					'<div class="actions">' + i18n.delete + '</div>' +
     26 					'<input type="hidden" class="rwmb-autocomplete-value" name="' + name + '" value="' + ui.item.value + '">' +
     27 					'</div>'
     28 				);
     29 
     30 				// Reinitialize value.
     31 				$search.val( '' ).trigger( 'change' );
     32 
     33 				return false;
     34 			}
     35 		} );
     36 	}
     37 
     38 	function deleteSelection( e ) {
     39 		e.preventDefault();
     40 		var $item = $( this ).parent(),
     41 			$search = $item.parent().siblings( '.rwmb-autocomplete-search' );
     42 
     43 		$item.remove();
     44 		$search.trigger( 'change' );
     45 	}
     46 
     47 	function init( e ) {
     48 		$( e.target ).find( '.rwmb-autocomplete-wrapper input[type="hidden"]' ).each( transform );
     49 	}
     50 
     51 	rwmb.$document
     52 		.on( 'mb_ready', init )
     53 		.on( 'clone', '.rwmb-autocomplete', transform )
     54 		.on( 'click', '.rwmb-autocomplete-result .actions', deleteSelection );
     55 } )( jQuery, rwmb, RWMB_Autocomplete );