You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by hn...@apache.org on 2021/01/22 12:19:37 UTC

[myfaces-tobago] branch master updated (6667e8b -> 795b4c5)

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

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


    from 6667e8b  TOBAGO-1932: Refactor Bootstrap Theme Building
     new 08b8dc3  fix: SelectOneChoice inside input group
     new 795b4c5  rebuild themes

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 tobago-core/npm/scss/_tobago.scss                  |  21 ++++
 .../renderer/LabelLayoutRendererBase.java          |  10 +-
 .../renderer/SelectOneChoiceRenderer.java          |  22 ++--
 .../renderer/in/input-group-choice-after.html      |  14 ++-
 .../010-input/50-input-group/Group.test.js         | 134 +++++++++------------
 .../npm/dist/css/tobago.css                        |  14 +++
 .../npm/dist/css/tobago.css.map                    |   2 +-
 .../npm/dist/css/tobago.min.css                    |   2 +-
 .../npm/dist/css/tobago.min.css.map                |   2 +-
 .../npm/dist/css/tobago.css                        |  14 +++
 .../npm/dist/css/tobago.css.map                    |   2 +-
 .../npm/dist/css/tobago.min.css                    |   2 +-
 .../npm/dist/css/tobago.min.css.map                |   2 +-
 .../npm/dist/css/tobago.css                        |  14 +++
 .../npm/dist/css/tobago.css.map                    |   2 +-
 .../npm/dist/css/tobago.min.css                    |   2 +-
 .../npm/dist/css/tobago.min.css.map                |   2 +-
 .../tobago-theme-speyside/npm/dist/css/tobago.css  |  14 +++
 .../npm/dist/css/tobago.css.map                    |   2 +-
 .../npm/dist/css/tobago.min.css                    |   2 +-
 .../npm/dist/css/tobago.min.css.map                |   2 +-
 .../tobago-theme-standard/npm/dist/css/tobago.css  |  14 +++
 .../npm/dist/css/tobago.css.map                    |   2 +-
 .../npm/dist/css/tobago.min.css                    |   2 +-
 .../npm/dist/css/tobago.min.css.map                |   2 +-
 25 files changed, 188 insertions(+), 113 deletions(-)


[myfaces-tobago] 02/02: rebuild themes

Posted by hn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 795b4c5b4096a1e77f2764a812fa23dba5674bfc
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Mon Jan 18 16:44:59 2021 +0100

    rebuild themes
    
    contains changes for:
    * fix: SelectOneChoice inside input group
---
 .../tobago-theme-charlotteville/npm/dist/css/tobago.css    | 14 ++++++++++++++
 .../npm/dist/css/tobago.css.map                            |  2 +-
 .../npm/dist/css/tobago.min.css                            |  2 +-
 .../npm/dist/css/tobago.min.css.map                        |  2 +-
 .../tobago-theme-roxborough/npm/dist/css/tobago.css        | 14 ++++++++++++++
 .../tobago-theme-roxborough/npm/dist/css/tobago.css.map    |  2 +-
 .../tobago-theme-roxborough/npm/dist/css/tobago.min.css    |  2 +-
 .../npm/dist/css/tobago.min.css.map                        |  2 +-
 .../tobago-theme-scarborough/npm/dist/css/tobago.css       | 14 ++++++++++++++
 .../tobago-theme-scarborough/npm/dist/css/tobago.css.map   |  2 +-
 .../tobago-theme-scarborough/npm/dist/css/tobago.min.css   |  2 +-
 .../npm/dist/css/tobago.min.css.map                        |  2 +-
 tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css | 14 ++++++++++++++
 .../tobago-theme-speyside/npm/dist/css/tobago.css.map      |  2 +-
 .../tobago-theme-speyside/npm/dist/css/tobago.min.css      |  2 +-
 .../tobago-theme-speyside/npm/dist/css/tobago.min.css.map  |  2 +-
 tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css | 14 ++++++++++++++
 .../tobago-theme-standard/npm/dist/css/tobago.css.map      |  2 +-
 .../tobago-theme-standard/npm/dist/css/tobago.min.css      |  2 +-
 .../tobago-theme-standard/npm/dist/css/tobago.min.css.map  |  2 +-
 20 files changed, 85 insertions(+), 15 deletions(-)

diff --git a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css
index 541406c..0925977 100644
--- a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css
+++ b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css
@@ -11330,6 +11330,20 @@ tobago-header.sticky-top {
 tobago-in {
   display: block;
 }
+tobago-in .input-group tobago-select-one-choice {
+  /* fix style for surrounding container (tobago-select-one-choice).
+  According to bootstrap docs, <select class=.form-select> should be rendered directly to .input-group. But tobago
+  renders the tobago-select-one-choice custom tag (which contain the select component) inside an input group. */
+}
+tobago-in .input-group tobago-select-one-choice.tobago-margin-bottom {
+  margin-bottom: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select {
+  padding: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select > .form-select {
+  border: 0;
+}
 
 .tobago-in-markup-fatal.border-danger:focus, .tobago-in-markup-error.border-danger:focus {
   box-shadow: 0 0 0 0.2rem rgba(255, 0, 190, 0.25);
diff --git a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css.map b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css.map
index bed422d..5494389 100644
--- a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../scss/_custom.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/m [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../scss/_custom.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/m [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css
index 329588c..1325be5 100644
--- a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#ff00be;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#ffffff;--bs-gray:#777777;--bs-gray-dark:#323232;--bs-primary:#529696;--bs-secondary:#b2a76d;--bs-success:#abf5ff;--bs-info:#389c30;--bs-warning:#ff00be;--bs-danger:#ff00be;--bs-light:#ffffff;--bs-dark:#529696;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Robo [...]
+@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#ff00be;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#ffffff;--bs-gray:#777777;--bs-gray-dark:#323232;--bs-primary:#529696;--bs-secondary:#b2a76d;--bs-success:#abf5ff;--bs-info:#389c30;--bs-warning:#ff00be;--bs-danger:#ff00be;--bs-light:#ffffff;--bs-dark:#529696;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Robo [...]
 /*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css.map b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css.map
index 9c930c8..16b068a 100644
--- a/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-charlotteville/npm/dist/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstra [...]
\ No newline at end of file
+{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstra [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css
index 3397ba5..eed0d4c 100644
--- a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css
+++ b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css
@@ -11353,6 +11353,20 @@ tobago-header.sticky-top {
 tobago-in {
   display: block;
 }
+tobago-in .input-group tobago-select-one-choice {
+  /* fix style for surrounding container (tobago-select-one-choice).
+  According to bootstrap docs, <select class=.form-select> should be rendered directly to .input-group. But tobago
+  renders the tobago-select-one-choice custom tag (which contain the select component) inside an input group. */
+}
+tobago-in .input-group tobago-select-one-choice.tobago-margin-bottom {
+  margin-bottom: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select {
+  padding: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select > .form-select {
+  border: 0;
+}
 
 .tobago-in-markup-fatal.border-danger:focus, .tobago-in-markup-error.border-danger:focus {
   box-shadow: 0 0 0 0.2rem rgba(255, 178, 67, 0.25);
diff --git a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css.map b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css.map
index e968420..7c74e02 100644
--- a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../scss/_custom.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/m [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../scss/_custom.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/m [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css
index 5ad9502..09b76e3 100644
--- a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";@font-face{font-family:Amaranth;font-style:normal;font-weight:400;src:url(../fonts/Amaranth-Regular.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:normal;font-weight:700;src:url(../fonts/Amaranth-Bold.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;src:url(../fonts/Amaranth-Italic.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;font-weight:700;src:url(../fonts/Amaranth-BoldItalic.otf) format("opentyp [...]
+@charset "UTF-8";@font-face{font-family:Amaranth;font-style:normal;font-weight:400;src:url(../fonts/Amaranth-Regular.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:normal;font-weight:700;src:url(../fonts/Amaranth-Bold.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;src:url(../fonts/Amaranth-Italic.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;font-weight:700;src:url(../fonts/Amaranth-BoldItalic.otf) format("opentyp [...]
 /*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css.map b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css.map
index 7bb5a3f..133238c 100644
--- a/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-roxborough/npm/dist/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/_custom.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss",". [...]
\ No newline at end of file
+{"version":3,"sources":["../../scss/_custom.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss",". [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css
index 469f4e2..fa6d09a 100644
--- a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css
+++ b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css
@@ -11340,6 +11340,20 @@ tobago-header.sticky-top {
 tobago-in {
   display: block;
 }
+tobago-in .input-group tobago-select-one-choice {
+  /* fix style for surrounding container (tobago-select-one-choice).
+  According to bootstrap docs, <select class=.form-select> should be rendered directly to .input-group. But tobago
+  renders the tobago-select-one-choice custom tag (which contain the select component) inside an input group. */
+}
+tobago-in .input-group tobago-select-one-choice.tobago-margin-bottom {
+  margin-bottom: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select {
+  padding: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select > .form-select {
+  border: 0;
+}
 
 .tobago-in-markup-fatal.border-danger:focus, .tobago-in-markup-error.border-danger:focus {
   box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
diff --git a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css.map b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css.map
index 19ffb70..73bae71 100644
--- a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../ [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../ [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css
index 0b325d3..cfca125 100644
--- a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto, [...]
+@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto, [...]
 /*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css.map b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css.map
index b8ed2ea..918c8ce 100644
--- a/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-scarborough/npm/dist/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstra [...]
\ No newline at end of file
+{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstra [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css
index deb9d74..a4cf122 100644
--- a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css
+++ b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css
@@ -11040,6 +11040,20 @@ tobago-header.sticky-top {
 tobago-in {
   display: block;
 }
+tobago-in .input-group tobago-select-one-choice {
+  /* fix style for surrounding container (tobago-select-one-choice).
+  According to bootstrap docs, <select class=.form-select> should be rendered directly to .input-group. But tobago
+  renders the tobago-select-one-choice custom tag (which contain the select component) inside an input group. */
+}
+tobago-in .input-group tobago-select-one-choice.tobago-margin-bottom {
+  margin-bottom: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select {
+  padding: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select > .form-select {
+  border: 0;
+}
 
 .tobago-in-markup-fatal.border-danger:focus, .tobago-in-markup-error.border-danger:focus {
   box-shadow: 0 0 0 0.2rem rgba(211, 0, 64, 0.25);
diff --git a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css.map b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css.map
index 8004d7e..f1f6748 100644
--- a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../scss/_custom.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.s [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../scss/_custom.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.s [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css
index 7befcf6..ac52e9f 100644
--- a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#3a2564;--bs-pink:#d63384;--bs-red:#d30040;--bs-orange:#d90;--bs-yellow:#ffc107;--bs-green:#1da332;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#788c94;--bs-gray-dark:#323232;--bs-primary:#185722;--bs-secondary:#d7d7d7;--bs-success:#1da332;--bs-info:#5bc0de;--bs-warning:#f0ad4e;--bs-danger:#d30040;--bs-light:#f7f7f7;--bs-dark:#323232;--bs-font-sans-serif:verdana,sans-serif;--bs-font-monospace:SFMono [...]
+@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#3a2564;--bs-pink:#d63384;--bs-red:#d30040;--bs-orange:#d90;--bs-yellow:#ffc107;--bs-green:#1da332;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#788c94;--bs-gray-dark:#323232;--bs-primary:#185722;--bs-secondary:#d7d7d7;--bs-success:#1da332;--bs-info:#5bc0de;--bs-warning:#f0ad4e;--bs-danger:#d30040;--bs-light:#f7f7f7;--bs-dark:#323232;--bs-font-sans-serif:verdana,sans-serif;--bs-font-monospace:SFMono [...]
 /*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css.map b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css.map
index e2e74a2..076be8b 100644
--- a/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-speyside/npm/dist/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstrap/scss/_containers.scss","../../node_modules/bootstrap/scss/mix [...]
\ No newline at end of file
+{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstrap/scss/_containers.scss","../../node_modules/bootstrap/scss/mix [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css
index 9291e3f..5237762 100644
--- a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css
+++ b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css
@@ -11310,6 +11310,20 @@ tobago-header.sticky-top {
 tobago-in {
   display: block;
 }
+tobago-in .input-group tobago-select-one-choice {
+  /* fix style for surrounding container (tobago-select-one-choice).
+  According to bootstrap docs, <select class=.form-select> should be rendered directly to .input-group. But tobago
+  renders the tobago-select-one-choice custom tag (which contain the select component) inside an input group. */
+}
+tobago-in .input-group tobago-select-one-choice.tobago-margin-bottom {
+  margin-bottom: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select {
+  padding: 0;
+}
+tobago-in .input-group tobago-select-one-choice.form-select > .form-select {
+  border: 0;
+}
 
 .tobago-in-markup-fatal.border-danger:focus, .tobago-in-markup-error.border-danger:focus {
   box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
diff --git a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css.map b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css.map
index 95f79d6..9ed8b9f 100644
--- a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../ [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../../scss/tobago-theme.scss","../../node_modules/bootstrap/scss/bootstrap.scss","../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","../../node_modules/bootstrap/scss/_variables.scss","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../ [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css
index 3f8e041..40a6d92 100644
--- a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto, [...]
+@charset "UTF-8";:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto, [...]
 /*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css.map b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css.map
index eab46e9..3c0a812 100644
--- a/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-standard/npm/dist/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstra [...]
\ No newline at end of file
+{"version":3,"sources":["../../node_modules/bootstrap/scss/_root.scss","../../node_modules/bootstrap/scss/_reboot.scss","dist/css/tobago.css","../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/_type.scss","../../node_modules/bootstrap/scss/mixins/_lists.scss","../../node_modules/bootstrap/scss/_images.scss","../../node_modules/bootstrap/scss/mixins/_image.scss","../../node_modules/bootstra [...]
\ No newline at end of file


[myfaces-tobago] 01/02: fix: SelectOneChoice inside input group

Posted by hn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 08b8dc3a743b78d07d6d15669b7280d71d1bf3dc
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Mon Jan 18 15:28:30 2021 +0100

    fix: SelectOneChoice inside input group
    
    * add a getComponentCss() method for LabelLayoutRendererBase
    * selectOneChoice is now rendered with surrounding container (tobago-select-one-choice) inside input group
    * fix styling
    * adjust unit test
    * implement jasmine test
---
 tobago-core/npm/scss/_tobago.scss                  |  21 ++++
 .../renderer/LabelLayoutRendererBase.java          |  10 +-
 .../renderer/SelectOneChoiceRenderer.java          |  22 ++--
 .../renderer/in/input-group-choice-after.html      |  14 ++-
 .../010-input/50-input-group/Group.test.js         | 134 +++++++++------------
 5 files changed, 103 insertions(+), 98 deletions(-)

diff --git a/tobago-core/npm/scss/_tobago.scss b/tobago-core/npm/scss/_tobago.scss
index 10ad37d..12e9da7 100644
--- a/tobago-core/npm/scss/_tobago.scss
+++ b/tobago-core/npm/scss/_tobago.scss
@@ -452,6 +452,27 @@ tobago-header {
 /* in ----------------------------------------------------------- */
 tobago-in {
   display: block;
+
+  .input-group {
+
+    tobago-select-one-choice {
+      /* fix style for surrounding container (tobago-select-one-choice).
+      According to bootstrap docs, <select class=.form-select> should be rendered directly to .input-group. But tobago
+      renders the tobago-select-one-choice custom tag (which contain the select component) inside an input group. */
+
+      &.tobago-margin-bottom {
+        margin-bottom: 0;
+      }
+
+      &.form-select {
+        padding: 0;
+
+        > .form-select {
+          border: 0;
+        }
+      }
+    }
+  }
 }
 
 .tobago-in {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java
index 1ce106f..33ed746 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java
@@ -29,6 +29,7 @@ import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
 import org.apache.myfaces.tobago.internal.util.StringUtils;
 import org.apache.myfaces.tobago.renderkit.LabelWithAccessKey;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
+import org.apache.myfaces.tobago.renderkit.css.CssItem;
 import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
@@ -49,6 +50,10 @@ public abstract class LabelLayoutRendererBase<T extends UIComponent & SupportsLa
 
   public abstract HtmlElements getComponentTag();
 
+  protected CssItem[] getComponentCss(final FacesContext facesContext, final T command) {
+    return null;
+  }
+
   @Override
   public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
 
@@ -152,7 +157,8 @@ public abstract class LabelLayoutRendererBase<T extends UIComponent & SupportsLa
       writer.startElement(getComponentTag());
       writer.writeIdAttribute(clientId);
       writer.writeClassAttribute(
-          flex ? TobagoClass.LABEL__CONTAINER :  null,
+          flex ? TobagoClass.LABEL__CONTAINER : null,
+          getComponentCss(facesContext, component),
           TobagoClass.MARGIN__BOTTOM,
           ComponentUtils.getBooleanAttribute(component, Attributes.required) ? TobagoClass.REQUIRED : null,
           markup != null && markup.contains(Markup.SPREAD) ? TobagoClass.SPREAD : null);
@@ -224,7 +230,7 @@ public abstract class LabelLayoutRendererBase<T extends UIComponent & SupportsLa
   }
 
   protected void encodeLabel(final FacesContext facesContext, final T component,
-                             final TobagoResponseWriter writer, final LabelLayout labelLayout)
+      final TobagoResponseWriter writer, final LabelLayout labelLayout)
       throws IOException {
     // TBD: maybe use an interface for getLabel()
     final String label = ComponentUtils.getStringAttribute(component, Attributes.label);
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java
index d839dd8..6804e79 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java
@@ -24,6 +24,7 @@ import org.apache.myfaces.tobago.internal.component.AbstractUISelectOneChoice;
 import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
 import org.apache.myfaces.tobago.internal.util.SelectItemUtils;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
+import org.apache.myfaces.tobago.renderkit.css.CssItem;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
 import org.apache.myfaces.tobago.util.ComponentUtils;
@@ -41,21 +42,18 @@ public class SelectOneChoiceRenderer<T extends AbstractUISelectOneChoice> extend
   }
 
   @Override
+  protected CssItem[] getComponentCss(final FacesContext facesContext, final T command) {
+    return isInside(facesContext, HtmlElements.TOBAGO_IN) ? new CssItem[]{BootstrapClass.FORM_SELECT} : null;
+  }
+
+  @Override
   public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
-    if (isInside(facesContext, HtmlElements.TOBAGO_IN)) {
-      encodeBeginField(facesContext, component);
-    } else {
-      super.encodeBeginInternal(facesContext, component);
-    }
+    super.encodeBeginInternal(facesContext, component);
   }
 
   @Override
   public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
-    if (isInside(facesContext, HtmlElements.TOBAGO_IN)) {
-      encodeEndField(facesContext, component);
-    } else {
-      super.encodeEndInternal(facesContext, component);
-    }
+    super.encodeEndInternal(facesContext, component);
   }
 
   @Override
@@ -105,8 +103,6 @@ public class SelectOneChoiceRenderer<T extends AbstractUISelectOneChoice> extend
 
   @Override
   protected String getFieldId(final FacesContext facesContext, final T component) {
-    return isInside(facesContext, HtmlElements.TOBAGO_IN)
-        ? component.getClientId(facesContext)
-        : component.getFieldId(facesContext);
+    return component.getFieldId(facesContext);
   }
 }
diff --git a/tobago-core/src/test/resources/renderer/in/input-group-choice-after.html b/tobago-core/src/test/resources/renderer/in/input-group-choice-after.html
index ee030ff..d85c6e7 100644
--- a/tobago-core/src/test/resources/renderer/in/input-group-choice-after.html
+++ b/tobago-core/src/test/resources/renderer/in/input-group-choice-after.html
@@ -19,11 +19,13 @@
   <div class='tobago-input-group-outer'>
     <div class='input-group'>
       <input type='text' name='id' id='id::field' class='tobago-in form-control'>
-      <select id='choice' name='choice' class='form-select'>
-        <option value=''>Stratocaster
-        </option>
-        <option value=''>Telecaster
-        </option></select>
+      <tobago-select-one-choice id='choice' class='form-select tobago-margin-bottom'>
+        <select id='choice::field' name='choice' class='form-select'>
+          <option value=''>Stratocaster
+          </option>
+          <option value=''>Telecaster
+          </option></select>
+      </tobago-select-one-choice>
     </div>
   </div>
-</tobago-in>
\ No newline at end of file
+</tobago-in>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/010-input/50-input-group/Group.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/010-input/50-input-group/Group.test.js
index 10e7fad..851b425 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/010-input/50-input-group/Group.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/010-input/50-input-group/Group.test.js
@@ -16,51 +16,34 @@
  */
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
-
-it("not implemented yet", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
-  test.start();
-});
-
-/*
 import {querySelectorAllFn, querySelectorFn} from "/script/tobago-test.js";
-import {TobagoTestTool} from "/tobago/test/tobago-test-tool.js";
 
-QUnit.test("ajax: chat send button", function (assert) {
+it("ajax: chat send button", function (done) {
   let chatlogFn = querySelectorFn("#page\\:mainForm\\:tachatlog\\:\\:field");
   let inputFn = querySelectorFn("#page\\:mainForm\\:inewmessage\\:\\:field");
   let sendButtonFn = querySelectorFn("#page\\:mainForm\\:sendButton");
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    inputFn().value = "delete chat";
-    sendButtonFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(chatlogFn().textContent, "");
-  });
-  TTT.action(function () {
-    inputFn().value = "Hi Peter, how are you?";
-    sendButtonFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(chatlogFn().textContent, "User Two: Hi Peter, how are you?");
-  });
-  TTT.startTest();
+  const test = new JasmineTestTool(done);
+  test.setup(() => chatlogFn().textContent === "",
+      () => inputFn().value = "delete chat",
+      "click", sendButtonFn);
+  test.do(() => expect(chatlogFn().textContent).toBe(""));
+  test.do(() => inputFn().value = "Hi Peter, how are you?");
+  test.event("click", sendButtonFn, () => chatlogFn().textContent === "User Two: Hi Peter, how are you?");
+  test.do(() => expect(chatlogFn().textContent).toBe("User Two: Hi Peter, how are you?"));
+  test.start();
 });
 
-QUnit.test("ajax: dropdown button", function (assert) {
+it("ajax: dropdown button", function (done) {
   let buttonFn = querySelectorFn("#page\\:mainForm\\:lsendtoc\\:\\:command");
   let buttonLabelFn = querySelectorFn("#page\\:mainForm\\:lsendtoc\\:\\:command span");
   let sendToPeterFn = querySelectorFn("#page\\:mainForm\\:sendToPeter");
   let sendToBobFn = querySelectorFn("#page\\:mainForm\\:sendToBob");
   let sendToAllFn = querySelectorFn("#page\\:mainForm\\:sendToAll");
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
+  const test = new JasmineTestTool(done);
+  test.do(() => fail("not implemented yet; fix dropdown first"));
+  /*TTT.action(function () {
     buttonFn().dispatchEvent(new Event("click", {bubbles: true}));
     sendToPeterFn().dispatchEvent(new Event("click", {bubbles: true}));
   });
@@ -83,53 +66,50 @@ QUnit.test("ajax: dropdown button", function (assert) {
   TTT.waitForResponse();
   TTT.asserts(1, function () {
     assert.equal(buttonLabelFn().textContent, "SendTo: All");
-  });
-  TTT.startTest();
+  });*/
+  test.start();
 });
 
-QUnit.test("ajax: currency change event", function (assert) {
-  let currencyInputFn = querySelectorFn("#page\\:mainForm\\:value\\:\\:field");
-  let currencyFn = querySelectorFn("#page\\:mainForm\\:currency");
-  let currencyOptionFn = querySelectorAllFn("#page\\:mainForm\\:currency option");
-  let outputFieldFn = querySelectorFn("#page\\:mainForm\\:valueInEuro .tobago-out");
+it("ajax: currency change event", function (done) {
+  let inputFn = querySelectorFn("#page\\:mainForm\\:value\\:\\:field");
+  let selectFn = querySelectorFn("#page\\:mainForm\\:currency\\:\\:field");
+  let optionsFn = querySelectorAllFn("#page\\:mainForm\\:currency option");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:valueInEuro tobago-out");
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    currencyInputFn().value = "1000";
-    currencyOptionFn().item(1).selected = false;
-    currencyOptionFn().item(2).selected = false;
-    currencyOptionFn().item(3).selected = false;
-    currencyOptionFn().item(0).selected = true; // Yen
-    currencyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFieldFn().textContent, "8,85");
-  });
-  TTT.action(function () {
-    currencyInputFn().value = "2000";
-    currencyOptionFn().item(0).selected = false;
-    currencyOptionFn().item(2).selected = false;
-    currencyOptionFn().item(3).selected = false;
-    currencyOptionFn().item(1).selected = true; // Trinidad-Tobago Dollar
-    currencyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFieldFn().textContent, "267,50");
-  });
-  TTT.action(function () {
-    currencyInputFn().value = "3000";
-    currencyOptionFn().item(0).selected = false;
-    currencyOptionFn().item(1).selected = false;
-    currencyOptionFn().item(3).selected = false;
-    currencyOptionFn().item(2).selected = true; // US Dollar
-    currencyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFieldFn().textContent, "2.688,29");
-  });
-  TTT.startTest();
+  const test = new JasmineTestTool(done);
+  test.setup(() => parseInt(inputFn().value.replaceAll(".", "")) === 1000
+      && outputFn().textContent === "1.000,00",
+      () => {
+        inputFn().value = "1000";
+        optionsFn().item(0).selected = false; // Yen
+        optionsFn().item(1).selected = false; // Trinidad-Tobago Dollar
+        optionsFn().item(2).selected = false; // US Dollar
+        optionsFn().item(3).selected = true; // Euro
+      },
+      "change", selectFn);
+
+  test.do(() => inputFn().value = "1000");
+  test.do(() => optionsFn().item(0).selected = true); // Yen
+  test.do(() => optionsFn().item(1).selected = false); // Trinidad-Tobago Dollar
+  test.do(() => optionsFn().item(2).selected = false); // US Dollar
+  test.do(() => optionsFn().item(3).selected = false); // Euro
+  test.event("change", selectFn, () => outputFn().textContent === "8,85");
+  test.do(() => expect(outputFn().textContent).toBe("8,85"));
+
+  test.do(() => inputFn().value = "2000");
+  test.do(() => optionsFn().item(0).selected = false); // Yen
+  test.do(() => optionsFn().item(1).selected = true); // Trinidad-Tobago Dollar
+  test.do(() => optionsFn().item(2).selected = false); // US Dollar
+  test.do(() => optionsFn().item(3).selected = false); // Euro
+  test.event("change", selectFn, () => outputFn().textContent === "267,50");
+  test.do(() => expect(outputFn().textContent).toBe("267,50"));
+
+  test.do(() => inputFn().value = "3000");
+  test.do(() => optionsFn().item(0).selected = false); // Yen
+  test.do(() => optionsFn().item(1).selected = false); // Trinidad-Tobago Dollar
+  test.do(() => optionsFn().item(2).selected = true); // US Dollar
+  test.do(() => optionsFn().item(3).selected = false); // Euro
+  test.event("change", selectFn, () => outputFn().textContent === "2.688,29");
+  test.do(() => expect(outputFn().textContent).toBe("2.688,29"));
+  test.start();
 });
-*/