You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2019/08/07 11:44:22 UTC

[myfaces-tobago] 02/02: Splitting the select-components into 6 files: one per tag

This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit d7767b6339a4943474280bd186327f89281153ab
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Wed Aug 7 13:44:09 2019 +0200

    Splitting the select-components into 6 files: one per tag
    
    issue: TOBAGO-1633: TS refactoring
---
 .../src/main/npm/package.json                      |   2 +-
 .../src/main/npm/ts/tobago-all.ts                  |   7 +-
 ...go-all.ts => tobago-select-boolean-checkbox.ts} |  44 ++---
 ...bago-all.ts => tobago-select-boolean-toggle.ts} |  44 ++---
 ...obago-all.ts => tobago-select-many-checkbox.ts} |  44 ++---
 .../src/main/npm/ts/tobago-select-many-shuttle.ts  |  78 ++++++++
 .../src/main/npm/ts/tobago-select-one-listbox.ts   |  45 +++++
 .../src/main/npm/ts/tobago-select-one-radio.ts     |  64 ++++++
 .../src/main/npm/ts/tobago-select.ts               | 217 ---------------------
 .../src/main/resources/META-INF/tobago-config.xml  |   2 +-
 10 files changed, 255 insertions(+), 292 deletions(-)

diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/package.json b/tobago-theme/tobago-theme-standard/src/main/npm/package.json
index b396faf..fe0d72b 100644
--- a/tobago-theme/tobago-theme-standard/src/main/npm/package.json
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/package.json
@@ -24,7 +24,7 @@
     "css-prefix": "postcss --config postcss.config.js --replace \"css/*.css\" \"!css/*.min.css\"",
     "css-minify": "cleancss --level 1 --source-map --source-map-inline-sources --output css/tobago.min.css css/tobago.css",
     "ts-compile": "tsc",
-    "js-minify": "uglifyjs --compress typeofs=false,drop_console=true --mangle --source-map includeSources --output js/tobago.min.js js/tobago-myfaces.js js/tobago-deltaspike.js js/tobago-polyfill.js js/tobago-listener.js js/tobago-core.js js/tobago-dropdown.js js/tobago-calendar.js js/tobago-command.js js/tobago-file.js js/tobago-focus.js js/tobago-header-footer.js js/tobago-in.js js/tobago-jsf.js js/tobago-overlay.js js/tobago-panel.js js/tobago-popover.js js/tobago-popup.js js/tobago- [...]
+    "js-minify": "uglifyjs --compress typeofs=false,drop_console=true --mangle --source-map includeSources --output js/tobago.min.js js/tobago-myfaces.js js/tobago-deltaspike.js js/tobago-polyfill.js js/tobago-listener.js js/tobago-core.js js/tobago-dropdown.js js/tobago-calendar.js js/tobago-command.js js/tobago-file.js js/tobago-focus.js js/tobago-header-footer.js js/tobago-in.js js/tobago-jsf.js js/tobago-overlay.js js/tobago-panel.js js/tobago-popover.js js/tobago-popup.js js/tobago- [...]
     "test": "jest"
   },
   "devDependencies": {
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
index a3f884a..1813a8f 100644
--- a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
@@ -30,7 +30,12 @@ import "./tobago-panel";
 import "./tobago-popover";
 import "./tobago-popup";
 import "./tobago-reload";
-import "./tobago-select";
+import "./tobago-select-boolean-checkbox";
+import "./tobago-select-boolean-toggle";
+import "./tobago-select-many-checkbox";
+import "./tobago-select-many-shuttle";
+import "./tobago-select-one-listbox";
+import "./tobago-select-one-radio";
 import "./tobago-sheet";
 import "./tobago-split-layout";
 import "./tobago-stars";
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-boolean-checkbox.ts
similarity index 50%
copy from tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
copy to tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-boolean-checkbox.ts
index a3f884a..ae105e9 100644
--- a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-boolean-checkbox.ts
@@ -15,27 +15,23 @@
  * limitations under the License.
  */
 
-import "./tobago-listener";
-import "./tobago-core";
-import "./tobago-dropdown";
-import "./tobago-calendar";
-import "./tobago-command";
-import "./tobago-file";
-import "./tobago-focus";
-import "./tobago-header-footer";
-import "./tobago-in";
-import "./tobago-jsf";
-import "./tobago-overlay";
-import "./tobago-panel";
-import "./tobago-popover";
-import "./tobago-popup";
-import "./tobago-reload";
-import "./tobago-select";
-import "./tobago-sheet";
-import "./tobago-split-layout";
-import "./tobago-stars";
-import "./tobago-suggest";
-import "./tobago-tab";
-import "./tobago-tree";
-import "./tobago-tree-listbox";
-import "./tobago-utils";
+import {Listener, Phase} from "./tobago-listener";
+import {Tobago4Utils} from "./tobago-utils";
+
+class SelectBooleanCheckbox {
+
+  static init = function (elements) {
+    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
+    var checkboxes = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectBooleanCheckbox input[readonly]");
+    checkboxes.each(function () {
+      // Save the initial state to restore it, when the user tries to manipulate it.
+      var initial = jQuery(this).is(":checked");
+      jQuery(this).click(function () {
+        jQuery(this).prop("checked", initial);
+      });
+    });
+  };
+}
+
+Listener.register(SelectBooleanCheckbox.init, Phase.DOCUMENT_READY);
+Listener.register(SelectBooleanCheckbox.init, Phase.AFTER_UPDATE);
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-boolean-toggle.ts
similarity index 51%
copy from tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
copy to tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-boolean-toggle.ts
index a3f884a..2330270 100644
--- a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-boolean-toggle.ts
@@ -15,27 +15,23 @@
  * limitations under the License.
  */
 
-import "./tobago-listener";
-import "./tobago-core";
-import "./tobago-dropdown";
-import "./tobago-calendar";
-import "./tobago-command";
-import "./tobago-file";
-import "./tobago-focus";
-import "./tobago-header-footer";
-import "./tobago-in";
-import "./tobago-jsf";
-import "./tobago-overlay";
-import "./tobago-panel";
-import "./tobago-popover";
-import "./tobago-popup";
-import "./tobago-reload";
-import "./tobago-select";
-import "./tobago-sheet";
-import "./tobago-split-layout";
-import "./tobago-stars";
-import "./tobago-suggest";
-import "./tobago-tab";
-import "./tobago-tree";
-import "./tobago-tree-listbox";
-import "./tobago-utils";
+import {Listener, Phase} from "./tobago-listener";
+import {Tobago4Utils} from "./tobago-utils";
+
+class SelectBooleanToggle {
+
+  static init = function (elements) {
+    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
+    var toggles = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectBooleanToggle input[readonly]");
+    toggles.each(function () {
+      // Save the initial state to restore it, when the user tries to manipulate it.
+      var initial = jQuery(this).is(":checked");
+      jQuery(this).click(function () {
+        jQuery(this).prop("checked", initial);
+      });
+    });
+  };
+}
+
+Listener.register(SelectBooleanToggle.init, Phase.DOCUMENT_READY);
+Listener.register(SelectBooleanToggle.init, Phase.AFTER_UPDATE);
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-many-checkbox.ts
similarity index 51%
copy from tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
copy to tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-many-checkbox.ts
index a3f884a..7a584cc 100644
--- a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-all.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-many-checkbox.ts
@@ -15,27 +15,23 @@
  * limitations under the License.
  */
 
-import "./tobago-listener";
-import "./tobago-core";
-import "./tobago-dropdown";
-import "./tobago-calendar";
-import "./tobago-command";
-import "./tobago-file";
-import "./tobago-focus";
-import "./tobago-header-footer";
-import "./tobago-in";
-import "./tobago-jsf";
-import "./tobago-overlay";
-import "./tobago-panel";
-import "./tobago-popover";
-import "./tobago-popup";
-import "./tobago-reload";
-import "./tobago-select";
-import "./tobago-sheet";
-import "./tobago-split-layout";
-import "./tobago-stars";
-import "./tobago-suggest";
-import "./tobago-tab";
-import "./tobago-tree";
-import "./tobago-tree-listbox";
-import "./tobago-utils";
+import {Listener, Phase} from "./tobago-listener";
+import {Tobago4Utils} from "./tobago-utils";
+
+class SelectManyCheckbox {
+
+  static init = function (elements) {
+    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
+    var checkboxes = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectManyCheckbox input[readonly]");
+    checkboxes.each(function () {
+      // Save the initial state to restore it, when the user tries to manipulate it.
+      var initial = jQuery(this).is(":checked");
+      jQuery(this).click(function () {
+        jQuery(this).prop("checked", initial);
+      });
+    });
+  };
+}
+
+Listener.register(SelectManyCheckbox.init, Phase.DOCUMENT_READY);
+Listener.register(SelectManyCheckbox.init, Phase.AFTER_UPDATE);
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-many-shuttle.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-many-shuttle.ts
new file mode 100644
index 0000000..2ed8781
--- /dev/null
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-many-shuttle.ts
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {Listener, Phase} from "./tobago-listener";
+import {Tobago4Utils} from "./tobago-utils";
+
+class SelectManyShuttle {
+
+  static init = function (elements) {
+    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
+    var shuttles = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectManyShuttle:not(.tobago-selectManyShuttle-disabled)");
+
+    shuttles.find(".tobago-selectManyShuttle-unselected").dblclick(function () {
+      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), true, false);
+    });
+
+    shuttles.find(".tobago-selectManyShuttle-selected").dblclick(function () {
+      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), false, false);
+    });
+
+    shuttles.find(".tobago-selectManyShuttle-addAll").click(function () {
+      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), true, true);
+    });
+
+    shuttles.find(".tobago-selectManyShuttle-add").click(function () {
+      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), true, false);
+    });
+
+    shuttles.find(".tobago-selectManyShuttle-removeAll").click(function () {
+      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), false, true);
+    });
+
+    shuttles.find(".tobago-selectManyShuttle-remove").click(function () {
+      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), false, false);
+    });
+  };
+
+  static moveSelectedItems = function ($shuttle, direction, all) {
+    var $unselected = $shuttle.find(".tobago-selectManyShuttle-unselected");
+    var $selected = $shuttle.find(".tobago-selectManyShuttle-selected");
+    var count = $selected.children().length;
+    var $source = direction ? $unselected : $selected;
+    var $target = direction ? $selected : $unselected;
+    var $shifted = $source.find(all ? "option:not(:disabled)" : "option:selected").remove().appendTo($target);
+
+    // synchronize the hidden select
+    var $hidden = $shuttle.find(".tobago-selectManyShuttle-hidden");
+    var $hiddenOptions = $hidden.find("option");
+    // todo: may be optimized: put values in a hash map?
+    $shifted.each(function () {
+      var $option = jQuery(this);
+      $hiddenOptions.filter("[value='" + $option.val() + "']").prop("selected", direction);
+    });
+
+    if (count !== $selected.children().length) {
+      var e = jQuery.Event("change");
+      // trigger an change event for command facets
+      $hidden.trigger(e);
+    }
+  };
+}
+
+Listener.register(SelectManyShuttle.init, Phase.DOCUMENT_READY);
+Listener.register(SelectManyShuttle.init, Phase.AFTER_UPDATE);
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-one-listbox.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-one-listbox.ts
new file mode 100644
index 0000000..c211860
--- /dev/null
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-one-listbox.ts
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {Listener, Phase} from "./tobago-listener";
+import {Tobago4Utils} from "./tobago-utils";
+
+class SelectOneListbox {
+
+  static init = function (elements) {
+    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
+    var selects = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectOneListbox");
+    var notRequired = selects.not(".tobago-selectOneListbox-markup-required");
+    notRequired
+        .change(function () {
+          var element = jQuery(this);
+          if (element.data("tobago-old-value") == undefined) {
+            element.data("tobago-old-value", -1);
+          }
+        }).click(function () {
+      var element = jQuery(this);
+      if (element.data("tobago-old-value") == undefined
+          || element.data("tobago-old-value") == element.prop("selectedIndex")) {
+        element.prop("selectedIndex", -1);
+      }
+      element.data("tobago-old-value", element.prop("selectedIndex"));
+    });
+  };
+}
+
+Listener.register(SelectOneListbox.init, Phase.DOCUMENT_READY);
+Listener.register(SelectOneListbox.init, Phase.AFTER_UPDATE);
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-one-radio.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-one-radio.ts
new file mode 100644
index 0000000..abd8358
--- /dev/null
+++ b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select-one-radio.ts
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {Listener, Phase} from "./tobago-listener";
+import {Tobago4Utils} from "./tobago-utils";
+
+class SelectOneRadio {
+
+  static init = function (elements) {
+    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
+    var selectOneRadios = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectOneRadio");
+    selectOneRadios.each(function () {
+      var ul = jQuery(this);
+      var id = ul.closest("[id]").attr("id");
+      var radios = jQuery('input[name="' + id.replace(/([:\.])/g, '\\$1') + '"]');
+      radios.each(function () {
+        var selectOneRadio = jQuery(this);
+        selectOneRadio.data("tobago-old-value", selectOneRadio.prop("checked"));
+      });
+      radios.click(function () {
+        var selectOneRadio = jQuery(this);
+        var readonly = selectOneRadio.prop("readonly");
+        var required = selectOneRadio.prop("required");
+        if (!required && !readonly) {
+          if (selectOneRadio.data("tobago-old-value") == selectOneRadio.prop("checked")) {
+            selectOneRadio.prop("checked", false);
+          }
+          selectOneRadio.data("tobago-old-value", selectOneRadio.prop("checked"));
+        }
+        if (readonly) {
+          radios.each(function () {
+            var radio = jQuery(this);
+            radio.prop("checked", radio.data("tobago-old-value"));
+          });
+        } else {
+          radios.each(function () {
+            if (this.id != selectOneRadio.get(0).id) {
+              var radio = jQuery(this);
+              radio.prop("checked", false);
+              radio.data("tobago-old-value", radio.prop("checked"));
+            }
+          });
+        }
+      });
+    });
+  };
+}
+
+Listener.register(SelectOneRadio.init, Phase.DOCUMENT_READY);
+Listener.register(SelectOneRadio.init, Phase.AFTER_UPDATE);
diff --git a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select.ts b/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select.ts
deleted file mode 100644
index 47f48fa..0000000
--- a/tobago-theme/tobago-theme-standard/src/main/npm/ts/tobago-select.ts
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-import {Listener, Phase} from "./tobago-listener";
-import {Tobago4Utils} from "./tobago-utils";
-
-class SelectManyShuttle {
-
-  static init = function (elements) {
-    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
-    var shuttles = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectManyShuttle:not(.tobago-selectManyShuttle-disabled)");
-
-    shuttles.find(".tobago-selectManyShuttle-unselected").dblclick(function () {
-      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), true, false);
-    });
-
-    shuttles.find(".tobago-selectManyShuttle-selected").dblclick(function () {
-      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), false, false);
-    });
-
-    shuttles.find(".tobago-selectManyShuttle-addAll").click(function () {
-      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), true, true);
-    });
-
-    shuttles.find(".tobago-selectManyShuttle-add").click(function () {
-      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), true, false);
-    });
-
-    shuttles.find(".tobago-selectManyShuttle-removeAll").click(function () {
-      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), false, true);
-    });
-
-    shuttles.find(".tobago-selectManyShuttle-remove").click(function () {
-      SelectManyShuttle.moveSelectedItems(jQuery(this).parents(".tobago-selectManyShuttle"), false, false);
-    });
-  };
-
-  static moveSelectedItems = function ($shuttle, direction, all) {
-    var $unselected = $shuttle.find(".tobago-selectManyShuttle-unselected");
-    var $selected = $shuttle.find(".tobago-selectManyShuttle-selected");
-    var count = $selected.children().length;
-    var $source = direction ? $unselected : $selected;
-    var $target = direction ? $selected : $unselected;
-    var $shifted = $source.find(all ? "option:not(:disabled)" : "option:selected").remove().appendTo($target);
-
-    // synchronize the hidden select
-    var $hidden = $shuttle.find(".tobago-selectManyShuttle-hidden");
-    var $hiddenOptions = $hidden.find("option");
-    // todo: may be optimized: put values in a hash map?
-    $shifted.each(function () {
-      var $option = jQuery(this);
-      $hiddenOptions.filter("[value='" + $option.val() + "']").prop("selected", direction);
-    });
-
-    if (count !== $selected.children().length) {
-      var e = jQuery.Event("change");
-      // trigger an change event for command facets
-      $hidden.trigger(e);
-    }
-  };
-}
-
-Listener.register(SelectManyShuttle.init, Phase.DOCUMENT_READY);
-Listener.register(SelectManyShuttle.init, Phase.AFTER_UPDATE);
-
-// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SelectOneRadio {
-
-  static init = function (elements) {
-    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
-    var selectOneRadios = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectOneRadio");
-    selectOneRadios.each(function () {
-      var ul = jQuery(this);
-      var id = ul.closest("[id]").attr("id");
-      var radios = jQuery('input[name="' + id.replace(/([:\.])/g, '\\$1') + '"]');
-      radios.each(function () {
-        var selectOneRadio = jQuery(this);
-        selectOneRadio.data("tobago-old-value", selectOneRadio.prop("checked"));
-      });
-      radios.click(function () {
-        var selectOneRadio = jQuery(this);
-        var readonly = selectOneRadio.prop("readonly");
-        var required = selectOneRadio.prop("required");
-        if (!required && !readonly) {
-          if (selectOneRadio.data("tobago-old-value") == selectOneRadio.prop("checked")) {
-            selectOneRadio.prop("checked", false);
-          }
-          selectOneRadio.data("tobago-old-value", selectOneRadio.prop("checked"));
-        }
-        if (readonly) {
-          radios.each(function () {
-            var radio = jQuery(this);
-            radio.prop("checked", radio.data("tobago-old-value"));
-          });
-        } else {
-          radios.each(function () {
-            if (this.id != selectOneRadio.get(0).id) {
-              var radio = jQuery(this);
-              radio.prop("checked", false);
-              radio.data("tobago-old-value", radio.prop("checked"));
-            }
-          });
-        }
-      });
-    });
-  };
-}
-
-Listener.register(SelectOneRadio.init, Phase.DOCUMENT_READY);
-Listener.register(SelectOneRadio.init, Phase.AFTER_UPDATE);
-
-// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SelectOneListbox {
-
-  static init = function (elements) {
-    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
-    var selects = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectOneListbox");
-    var notRequired = selects.not(".tobago-selectOneListbox-markup-required");
-    notRequired
-        .change(function () {
-          var element = jQuery(this);
-          if (element.data("tobago-old-value") == undefined) {
-            element.data("tobago-old-value", -1);
-          }
-        }).click(function () {
-      var element = jQuery(this);
-      if (element.data("tobago-old-value") == undefined
-          || element.data("tobago-old-value") == element.prop("selectedIndex")) {
-        element.prop("selectedIndex", -1);
-      }
-      element.data("tobago-old-value", element.prop("selectedIndex"));
-    });
-  };
-}
-
-Listener.register(SelectOneListbox.init, Phase.DOCUMENT_READY);
-Listener.register(SelectOneListbox.init, Phase.AFTER_UPDATE);
-
-// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SelectBooleanCheckbox {
-
-  static init = function (elements) {
-    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
-    var checkboxes = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectBooleanCheckbox input[readonly]");
-    checkboxes.each(function () {
-      // Save the initial state to restore it, when the user tries to manipulate it.
-      var initial = jQuery(this).is(":checked");
-      jQuery(this).click(function () {
-        jQuery(this).prop("checked", initial);
-      });
-    });
-  };
-}
-
-Listener.register(SelectBooleanCheckbox.init, Phase.DOCUMENT_READY);
-Listener.register(SelectBooleanCheckbox.init, Phase.AFTER_UPDATE);
-
-// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SelectBooleanToggle {
-
-  static init = function (elements) {
-    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
-    var toggles = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectBooleanToggle input[readonly]");
-    toggles.each(function () {
-      // Save the initial state to restore it, when the user tries to manipulate it.
-      var initial = jQuery(this).is(":checked");
-      jQuery(this).click(function () {
-        jQuery(this).prop("checked", initial);
-      });
-    });
-  };
-}
-
-Listener.register(SelectBooleanToggle.init, Phase.DOCUMENT_READY);
-Listener.register(SelectBooleanToggle.init, Phase.AFTER_UPDATE);
-
-// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SelectManyCheckbox {
-
-  static init = function (elements) {
-    elements = elements.jQuery ? elements : jQuery(elements); // fixme jQuery -> ES5
-    var checkboxes = Tobago4Utils.selectWithJQuery(elements, ".tobago-selectManyCheckbox input[readonly]");
-    checkboxes.each(function () {
-      // Save the initial state to restore it, when the user tries to manipulate it.
-      var initial = jQuery(this).is(":checked");
-      jQuery(this).click(function () {
-        jQuery(this).prop("checked", initial);
-      });
-    });
-  };
-}
-
-Listener.register(SelectManyCheckbox.init, Phase.DOCUMENT_READY);
-Listener.register(SelectManyCheckbox.init, Phase.AFTER_UPDATE);
-
-// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/tobago-config.xml b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/tobago-config.xml
index 5f3f5c1..948a1eb 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/tobago-config.xml
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/tobago-config.xml
@@ -84,7 +84,7 @@
           <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-popover.js"/>
           <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-popup.js"/>
           <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-reload.js"/>
-          <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-select.js"/>
+          <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-select-....js"/>
           <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-sheet.js"/>
           <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-split-layout.js"/>
           <script name="/tobago/standard/tobago-bootstrap/${project.version}/js/tobago-stars.js"/>