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