[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / prive / formulaires / selecteur / jquery.picker.js
1 /**
2 item_picked et picker doivent seulement etre voisins
3
4 <ul class='item_picked'>..</ul>
5 ...
6 ...
7 <xx class='item_picker'>
8 <div class='picker_bouton'>..</div>
9 </xx>
10 ...
11 **/
12 ;if (window.jQuery)
13 (function($) {
14
15 jQuery(document).ready(function(){
16 var picked = jQuery('ul.item_picked');
17 if (picked.length) {
18 picked.find('>li').removeClass('last').find('li:last').addClass('last');
19 }
20 });
21
22 jQuery.fn.picker_toggle = function(){
23 var browser = jQuery(this).parents('.item_picker').find('.browser');
24 if (browser.is(':visible')){
25 if (jQuery.browser.msie)
26 browser.hide();
27 else
28 browser.slideUp();
29 jQuery('a.close',this).hide();
30 jQuery('a.edit',this).show();
31 }
32 else {
33 browser.show();
34 jQuery('a.close',this).show();
35 jQuery('a.edit',this).hide();
36 }
37 }
38
39 // stop animation du bloc cible pour faire patienter
40 jQuery.fn.stopAnimeajax = function(end) {
41 this.children().css('opacity', 1.0);
42 this.find('.image_loading').html('');
43 return this; // don't break the chain
44 }
45
46 jQuery.fn.item_pick = function(id_item,name,title,type){
47 var label_supprimer = (typeof selecteur_label_supprimer != 'undefined') ? selecteur_label_supprimer : 'del';
48 var picker = this.parents('.item_picker');
49 var picked = picker.siblings('ul.item_picked');
50 if (!picked.length) {
51 picker.before("<ul class='item_picked'></ul>");
52 picked = picker.siblings('ul.item_picked');
53 }
54 var select = picked.is('.select');
55 var obligatoire = picked.is('.obligatoire');
56 if (select)
57 picked.html('');
58 else
59 jQuery('li.on',picked).removeClass('on');
60 var sel=jQuery('input[value="'+id_item+'"]',picked);
61 if (sel.length==0){
62 picked.addClass('changing').animeajax();
63 // simulons de la latence pour l'oeil de l'utilisateur
64 setTimeout(function(){
65 jQuery('li:last',picked).removeClass('last');
66 picked.append('<li class="last on '+type+'">'
67 +'<input type="hidden" name="'+name+'[]" value="'+id_item+'"/>'
68 + title
69 +((select&&obligatoire)?"":" <a title='"+label_supprimer+"' href='#' onclick='jQuery(this).item_unpick();return false;'>"
70 +"<img alt='"+label_supprimer+"' src='"+img_unpick+"' /></a>"
71 )
72 +'<span class="sep">, </span></li>').removeClass('changing').stopAnimeajax();
73 // masquer le selecteur apres un pick
74 picker.find('.picker_bouton').picker_toggle();
75 },300);
76 }
77 else
78 sel.parent().addClass('on');
79 return this; // don't break the chain
80 }
81 jQuery.fn.item_unpick = function(){
82 var picked = this.parents('ul.item_picked');
83 var me = this.parent();
84 jQuery(me).fadeOut('fast');
85 setTimeout(function(){
86 me.remove();
87 picked.find('>li').removeClass('last').find('li:last').addClass('last');
88 },400);
89 }
90
91 })(jQuery);