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