51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\v\plugins;
 | |
| 
 | |
| use nur\v\BasePlugin;
 | |
| use nur\v\js;
 | |
| 
 | |
| /**
 | |
|  * Class dblclickSelectPlugin: soumet le formulaire avec un bouton en particulier
 | |
|  * si on double-clique sur un élément d'une liste multi-select
 | |
|  */
 | |
| class dblclickSelectPlugin extends BasePlugin {
 | |
|   const HAVE_JQUERY = true;
 | |
| 
 | |
|   function __construct(?string $selector, ?string $submit=null, ?bool $cond=null) {
 | |
|     if ($selector === null) $selector = "select:not(.no-dblclick)";
 | |
|     if ($cond === null) $cond = $selector? true: false;
 | |
|     $this->selector = $selector;
 | |
|     $this->submit = $submit;
 | |
|     $this->cond = $cond;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * @var string sélecteur sur les options des composants concernés. par défaut,
 | |
|    * prendre tous les éléments select qui n'ont pas la classe no-dblclick
 | |
|    */
 | |
|   private $selector;
 | |
| 
 | |
|   /**
 | |
|    * @var string|null sélecteur pour le bouton submit à activer.
 | |
|    * ci cette valeur est nulle, le formulaire est soumis directement
 | |
|    */
 | |
|   private $submit;
 | |
| 
 | |
|   /** @var bool ce plugin est-il activé? */
 | |
|   private $cond;
 | |
| 
 | |
|   function printJquery(): void {
 | |
|     if (!$this->cond) return;
 | |
|     ?>
 | |
| $(<?=js::qv($this->selector)?>).find("option").on("dblclick", function() {
 | |
|   let submit = <?=js::qv($this->submit)?>;
 | |
|   if (submit != "") {
 | |
|     $(submit).click();
 | |
|   } else {
 | |
|     $(this).closest("form").submit();
 | |
|   }
 | |
|   return false;
 | |
| });
 | |
| <?php
 | |
|   }
 | |
| }
 |