diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php
index 8777d1e2..dd7dea69 100644
--- a/adminer/include/adminer.inc.php
+++ b/adminer/include/adminer.inc.php
@@ -371,7 +371,10 @@ class Adminer {
. optionlist(array(-1 => "") + array_filter(array(lang('Functions') => $functions, lang('Aggregation') => $grouping)), $val["fun"] ?? null) . ""
. on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'", 1)
. script("qsl('select').onchange = function () { helpClose();" . ($key !== "" ? "" : " qsl('select, input', this.parentNode).onchange();") . " };", "")
- . "($column)" : $column) . "\n";
+ . "($column)" : $column)
+ . ' '
+ . script('qsl("button").onclick = selectRemoveRow;', "")
+ . "\n";
$i++;
}
echo "\n";
@@ -407,6 +410,8 @@ class Adminer {
echo html_select("where[$i][op]", $this->operators, $val["op"], $change_next);
echo "";
echo script("mixin(qsl('input'), {oninput: function () { $change_next }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});", "");
+ echo '';
+ echo script('qsl("button").onclick = selectRemoveRow;', "");
echo "\n";
}
}
@@ -425,12 +430,18 @@ class Adminer {
foreach ((array) $_GET["order"] as $key => $val) {
if ($val != "") {
echo "
" . select_input(" name='order[$i]'", $columns, $val, "selectFieldChange");
- echo checkbox("desc[$i]", 1, isset($_GET["desc"][$key]), lang('descending')) . "
\n";
+ echo checkbox("desc[$i]", 1, isset($_GET["desc"][$key]), lang('descending'));
+ echo ' ';
+ echo script('qsl("button").onclick = selectRemoveRow;', "");
+ echo "\n";
$i++;
}
}
echo "" . select_input(" name='order[$i]'", $columns, "", "selectAddRow");
- echo checkbox("desc[$i]", 1, false, lang('descending')) . "
\n";
+ echo checkbox("desc[$i]", 1, false, lang('descending'));
+ echo ' ';
+ echo script('qsl("button").onclick = selectRemoveRow;', "");
+ echo "\n";
echo "\n";
}
diff --git a/adminer/static/default.css b/adminer/static/default.css
index 5264c999..65e768ef 100644
--- a/adminer/static/default.css
+++ b/adminer/static/default.css
@@ -33,6 +33,7 @@ input[type='submit'] { padding-left: 10px; padding-right: 10px; }
select { border-radius: 5px; padding: 2px; vertical-align: middle;; }
fieldset label input[type='checkbox'] { margin-bottom: 6px; }
fieldset a { line-height: 20px; }
+#fieldset-select div:last-child > button, #fieldset-search div:last-child > button, #fieldset-sort div:last-child > button { display: none; }
span.separator { margin-left: 5px; margin-right: 5px; }
.block { display: block; }
.version { color: #777; font-size: 50%; }
diff --git a/adminer/static/functions.js b/adminer/static/functions.js
index 65ab98b3..274a72b7 100644
--- a/adminer/static/functions.js
+++ b/adminer/static/functions.js
@@ -394,9 +394,28 @@ function selectAddRow() {
inputs[i].value = '';
}
}
+ var buttons = qsa('button', row);
+ for (var i=0; i < buttons.length; i++) {
+ buttons[i].onclick = selectRemoveRow;
+ }
field.parentNode.parentNode.appendChild(row);
}
+/** Remove a row in select fieldset
+* @this HTMLButtonElement
+*/
+function selectRemoveRow() {
+ var button = this;
+ var row = button.parentNode;
+ var nextRow = row;
+ while (nextRow = nextRow.nextSibling) {
+ if (nextRow.tagName === row.tagName) {
+ row.parentNode.removeChild(row);
+ return;
+ }
+ }
+}
+
/** Prevent onsearch handler on Enter
* @param KeyboardEvent
* @this HTMLInputElement
diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php
index fb75e0e6..b35d834e 100644
--- a/editor/include/adminer.inc.php
+++ b/editor/include/adminer.inc.php
@@ -259,15 +259,20 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
if (($val["col"] == "" || $columns[$val["col"]]) && "$val[col]$val[val]" != "") {
echo "";
echo html_select("where[$i][op]", array(-1 => "") + $this->operators, $val["op"]);
- echo "" . script("mixin(qsl('input'), {onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});", "") . "
\n";
+ echo "" . script("mixin(qsl('input'), {onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});", "");
+ echo '' . script('qsl("button").onclick = selectRemoveRow;', "");
+ echo "\n";
$i++;
}
}
echo "";
echo script("qsl('select').onchange = selectAddRow;", "");
echo html_select("where[$i][op]", array(-1 => "") + $this->operators);
- echo "
";
+ echo "";
echo script("mixin(qsl('input'), {onchange: function () { this.parentNode.firstChild.onchange(); }, onsearch: selectSearchSearch});");
+ echo '';
+ echo script('qsl("button").onclick = selectRemoveRow;', "");
+ echo "";
echo "\n";
}