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
 | 
						|
  }
 | 
						|
}
 |